From 3dcf34784e1636a30f39f39679b8d942e638e679 Mon Sep 17 00:00:00 2001 From: Andrei Mihailov Date: Wed, 30 Jan 2019 17:39:58 +0100 Subject: [PATCH 1/3] Fix projection related types --- types/react-simple-maps/index.d.ts | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/types/react-simple-maps/index.d.ts b/types/react-simple-maps/index.d.ts index e76c4e3f0d..4c63f28c69 100644 --- a/types/react-simple-maps/index.d.ts +++ b/types/react-simple-maps/index.d.ts @@ -1,10 +1,12 @@ // 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]; @@ -19,17 +21,21 @@ export interface Line { }; } +export type 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 | (() => void); - projectionConfig?: { - scale?: number; - xOffset?: number; - yOffset?: number; - rotation?: number[]; - precision?: number; - }; + projection?: string | ProjectionFunction; + projectionConfig?: Partial; style?: React.CSSProperties; defs?: SVGDefsElement; className?: string; @@ -68,7 +74,7 @@ export interface ZoomableGroupProps { export interface GeographiesProps { disableOptimization?: boolean; geography?: string | { [key: string]: any } | string[]; - children?: (geographies: object[], projection: (point: Point) => void) => void; + children?: (geographies: object[], projection: GeoProjection) => void; } export interface GeographyProps { @@ -76,7 +82,7 @@ export interface GeographyProps { precision?: number; round?: boolean; geography?: object; - projection?: (point: Point) => void; + projection?: GeoProjection; tabable?: boolean; style?: { default?: React.CSSProperties; From 99e1ab424a3528d5531ad40cfa25b422ace5b9d1 Mon Sep 17 00:00:00 2001 From: Andrej Mihajlov Date: Wed, 30 Jan 2019 18:00:33 +0100 Subject: [PATCH 2/3] Use interface instead of type --- types/react-simple-maps/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/react-simple-maps/index.d.ts b/types/react-simple-maps/index.d.ts index 4c63f28c69..955bc48279 100644 --- a/types/react-simple-maps/index.d.ts +++ b/types/react-simple-maps/index.d.ts @@ -21,7 +21,7 @@ export interface Line { }; } -export type ProjectionConfig = { +export interface ProjectionConfig { scale: number; xOffset: number; yOffset: number; From 71065960d5bc549843b9f4514bd48982a0b0c16c Mon Sep 17 00:00:00 2001 From: Andrej Mihajlov Date: Wed, 30 Jan 2019 18:15:24 +0100 Subject: [PATCH 3/3] Remove unnecessary semicolon --- types/react-simple-maps/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/react-simple-maps/index.d.ts b/types/react-simple-maps/index.d.ts index 955bc48279..49e392035d 100644 --- a/types/react-simple-maps/index.d.ts +++ b/types/react-simple-maps/index.d.ts @@ -27,7 +27,7 @@ export interface ProjectionConfig { yOffset: number; rotation: [number, number, number]; precision: number; -}; +} export type ProjectionFunction = (width: number, height: number, config: ProjectionConfig) => GeoProjection;