// Type definitions for d3JS cloud layout plugin by Jason Davies // Project: https://github.com/jasondavies/d3-cloud // Definitions by: hans windhoff // Definitions: https://github.com/borisyankov/DefinitelyTyped /// declare module d3 { module layout { export function cloud(): Cloud; export function cloud(): Cloud; module cloud { interface Word { text?: string; font?: string; style?: string; weight?: string | number; rotate?: number; size?: number; padding?: number; x?: number; y?: number; } } interface Cloud { start(): Cloud; stop(): Cloud; timeInterval(): number; timeInterval(interval: number): Cloud; words(): T[]; words(words: T[]): Cloud; size(): [number, number]; size(size: [number, number]): Cloud; font(): (datum: T, index: number) => string; font(font: string): Cloud; font(font: (datum: T, index: number) => string): Cloud; fontStyle(): (datum: T, index: number) => string; fontStyle(style: string): Cloud; fontStyle(style: (datum: T, index: number) => string): Cloud; fontWeight(): (datum: T, index: number) => string | number; fontWeight(weight: string | number): Cloud; fontWeight(weight: (datum: T, index: number) => string | number): Cloud; rotate(): (datum: T, index: number) => number; rotate(rotate: number): Cloud; rotate(rotate: (datum: T, index: number) => number): Cloud; text(): (datum: T, index: number) => string; text(text: string): Cloud; text(text: (datum: T, index: number) => string): Cloud; spiral(): (size: number) => (t: number) => [number, number]; spiral(name: string): Cloud; spiral(spiral: (size: number) => (t: number) => [number, number]): Cloud; fontSize(): (datum: T, index: number) => number; fontSize(size: number): Cloud; fontSize(size: (datum: T, index: number) => number): Cloud; padding(): (datum: T, index: number) => number; padding(padding: number): Cloud; padding(padding: (datum: T, index: number) => number): Cloud; on(type: "word", listener: (word: T) => void): Cloud; on(type: "end", listener: (tags: T[], bounds: { x: number; y: number }[]) => void): Cloud; on(type: string, listener: (...args: any[]) => void): Cloud; on(type: "word"): (word: T) => void; on(type: "end"): (tags: T[], bounds: { x: number; y: number }[]) => void; on(type: string): (...args: any[]) => void; } } }