// Type definitions for react-simple-maps 0.12 // Project: https://github.com/zcreativelabs/react-simple-maps#readme // Definitions by: Novikov Mihail // Andrej Mihajlov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 import * as React from 'react'; import { GeoProjection } from 'd3-geo'; export type Point = [number, number]; export interface MarkerType { coordinates: Point; } export interface Line { coordinates: { start: Point; end: Point; }; } export interface ProjectionConfig { scale: number; xOffset: number; yOffset: number; rotation: [number, number, number]; precision: number; } export type ProjectionFunction = (width: number, height: number, config: ProjectionConfig) => GeoProjection; export interface ComposableMapProps { width?: number; height?: number; projection?: string | ProjectionFunction; projectionConfig?: Partial; style?: React.CSSProperties; defs?: SVGDefsElement; className?: string; showCenter?: boolean; preserveAspectRatio?: string; viewBox?: string; } export interface ZoomableGlobeProps { center?: Point; zoom?: number; disablePanning?: boolean; style?: React.CSSProperties; width?: number; height?: number; onMoveStart?: (currentCenter: Point) => void; onMoveEnd?: (newCenter: Point) => void; sensitivity?: number; } export interface ZoomableGroupProps { center?: Point; zoom?: number; disablePanning?: boolean; style?: React.CSSProperties; width?: number; height?: number; onMoveStart?: (currentCenter: Point) => void; onMoveEnd?: (newCenter: Point) => void; backdrop?: { x: Point; y: Point; }; } export interface GeographiesProps { disableOptimization?: boolean; geography?: string | { [key: string]: any } | string[]; children?: (geographies: object[], projection: GeoProjection) => void; } export interface GeographyProps { cacheId?: number | string | null; precision?: number; round?: boolean; geography?: object; projection?: GeoProjection; tabable?: boolean; style?: { default?: React.CSSProperties; hover?: React.CSSProperties; pressed?: React.CSSProperties; }; onClick?: (geography: object, evt: React.MouseEvent) => void; onMouseEnter?: (geography: object, evt: React.MouseEvent) => void; onMouseMove?: (geography: object, evt: React.MouseEvent) => void; onMouseLeave?: (geography: object, evt: React.MouseEvent) => void; onMouseDown?: (geography: object, evt: React.MouseEvent) => void; onMouseUp?: (geography: object, evt: React.MouseEvent) => void; onFocus?: (geography: object, evt: React.FocusEvent) => void; onBlur?: (geography: object, evt: React.FocusEvent) => void; } export interface MarkerProps { marker?: MarkerType; tabable?: boolean; style?: { default?: React.CSSProperties; hover?: React.CSSProperties; pressed?: React.CSSProperties; }; preserveMarkerAspect?: boolean; onClick?: (marker: MarkerType, evt: React.MouseEvent) => void; onMouseEnter?: (marker: MarkerType, evt: React.MouseEvent) => void; onMouseMove?: (marker: MarkerType, evt: React.MouseEvent) => void; onMouseLeave?: (marker: MarkerType, evt: React.MouseEvent) => void; onMouseDown?: (marker: MarkerType, evt: React.MouseEvent) => void; onMouseUp?: (marker: MarkerType, evt: React.MouseEvent) => void; onFocus?: (marker: MarkerType, evt: React.FocusEvent) => void; onBlur?: (marker: MarkerType, evt: React.FocusEvent) => void; } export interface AnnotationProps { subject?: Point; dx?: number; dy?: number; zoom?: number; stroke?: string; strokeWidth?: number; style?: React.CSSProperties; markerEnd?: string; curve?: number; } export interface GraticuleProps { step?: Point; round?: boolean; precision?: number; outline?: boolean; stroke?: string; fill?: string; style?: React.CSSProperties; disableOptimization?: boolean; Globe?: boolean; } export interface LineProps { line?: Line; tabable?: boolean; style?: { default?: React.CSSProperties; hover?: React.CSSProperties; pressed?: React.CSSProperties; }; preserveMarkerAspect?: boolean; buildPath?: (start: Point, end: Point, line: Line) => string; onClick?: (line: Line, evt: React.MouseEvent) => void; onMouseEnter?: (line: Line, evt: React.MouseEvent) => void; onMouseMove?: (line: Line, evt: React.MouseEvent) => void; onMouseLeave?: (line: Line, evt: React.MouseEvent) => void; onMouseDown?: (line: Line, evt: React.MouseEvent) => void; onMouseUp?: (line: Line, evt: React.MouseEvent) => void; onFocus?: (line: Line, evt: React.FocusEvent) => void; onBlur?: (line: Line, evt: React.FocusEvent) => void; } export class ComposableMap extends React.Component {} export class ZoomableGroup extends React.Component {} export class ZoomableGlobe extends React.Component {} export class Geographies extends React.Component {} export class Geography extends React.Component {} export class Markers extends React.Component {} export class Marker extends React.Component {} export class Annotations extends React.Component {} export class Annotation extends React.Component {} export class Graticule extends React.Component {} export class Lines extends React.Component {} export class Line extends React.Component {}