From c9622f13ec5860d60674ba530efc6b0f46aa40d3 Mon Sep 17 00:00:00 2001 From: Lukas Nasarek Date: Tue, 27 Apr 2021 15:57:32 +0200 Subject: [PATCH 1/5] Add type dependencies. --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index 38a57d16..b34682bc 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,8 @@ "vis-network": "^9.0.0" }, "devDependencies": { + "@types/react": "^17.0.4", + "@types/vis": "^4.21.21", "babel-cli": "^6.22.2", "babel-preset-env": "^1.1.8", "babel-preset-stage-3": "^6.22.0" From cf4412d0a7e805f934ac98885d03c2b97436727e Mon Sep 17 00:00:00 2001 From: Lukas Nasarek Date: Tue, 27 Apr 2021 15:57:58 +0200 Subject: [PATCH 2/5] Add types file from https://gist.github.com/ChadJPetersen/2e2587bbd753c6a384c02519183e2031 --- lib/index.d.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 lib/index.d.ts diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 00000000..b1b4f4c9 --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,38 @@ +declare module "react-graph-vis" { + import { Network, NetworkEvents, Options, Node, Edge, DataSet } from "vis"; + import { Component } from "react"; + + export { Network, NetworkEvents, Options, Node, Edge, DataSet } from "vis"; + + export interface graphEvents { + [event: NetworkEvents]: (params?: any) => void; + } + + //Doesn't appear that this module supports passing in a vis.DataSet directly. Once it does graph can just use the Data object from vis. + export interface graphData { + nodes: Node[]; + edges: Edge[]; + } + + export interface NetworkGraphProps { + graph: graphData; + options?: Options; + events?: graphEvents; + getNetwork?: (network: Network) => void; + identifier?: string; + style?: React.CSSProperties; + getNodes?: (nodes: DataSet) => void; + getEdges?: (edges: DataSet) => void; + } + + export interface NetworkGraphState { + identifier: string; + } + + export default class NetworkGraph extends Component< + NetworkGraphProps, + NetworkGraphState + > { + render(); + } +} From 434037aa8bce2028e1874d4bc19210aea2ac6ce5 Mon Sep 17 00:00:00 2001 From: Lukas Nasarek Date: Tue, 27 Apr 2021 15:58:20 +0200 Subject: [PATCH 3/5] Fix types. --- lib/index.d.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/index.d.ts b/lib/index.d.ts index b1b4f4c9..d99788e1 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -4,9 +4,9 @@ declare module "react-graph-vis" { export { Network, NetworkEvents, Options, Node, Edge, DataSet } from "vis"; - export interface graphEvents { - [event: NetworkEvents]: (params?: any) => void; - } + export type graphEvents = { + [event in NetworkEvents]?: (params?: any) => void; + }; //Doesn't appear that this module supports passing in a vis.DataSet directly. Once it does graph can just use the Data object from vis. export interface graphData { @@ -21,8 +21,8 @@ declare module "react-graph-vis" { getNetwork?: (network: Network) => void; identifier?: string; style?: React.CSSProperties; - getNodes?: (nodes: DataSet) => void; - getEdges?: (edges: DataSet) => void; + getNodes?: (nodes: DataSet) => void; + getEdges?: (edges: DataSet) => void; } export interface NetworkGraphState { From 5bc7e316b2ba3fcd2d5fff1c38c0a958dcb261b4 Mon Sep 17 00:00:00 2001 From: Lukas Nasarek Date: Tue, 27 Apr 2021 16:00:18 +0200 Subject: [PATCH 4/5] Use vis' Data type instead of the custom graphData type. Depends on #112. --- lib/index.d.ts | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/lib/index.d.ts b/lib/index.d.ts index d99788e1..b86f8a1a 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -1,23 +1,17 @@ declare module "react-graph-vis" { - import { Network, NetworkEvents, Options, Node, Edge, DataSet } from "vis"; + import { Network, NetworkEvents, Options, Node, Edge, DataSet, Data } from "vis"; import { Component } from "react"; - export { Network, NetworkEvents, Options, Node, Edge, DataSet } from "vis"; + export { Network, NetworkEvents, Options, Node, Edge, DataSet, Data } from "vis"; - export type graphEvents = { + export type GraphEvents = { [event in NetworkEvents]?: (params?: any) => void; }; - //Doesn't appear that this module supports passing in a vis.DataSet directly. Once it does graph can just use the Data object from vis. - export interface graphData { - nodes: Node[]; - edges: Edge[]; - } - export interface NetworkGraphProps { - graph: graphData; + graph: Data; options?: Options; - events?: graphEvents; + events?: GraphEvents; getNetwork?: (network: Network) => void; identifier?: string; style?: React.CSSProperties; From 8d7ea32aee0f598b04242a4dfe994b786214c375 Mon Sep 17 00:00:00 2001 From: Lukas Nasarek Date: Tue, 27 Apr 2021 16:00:49 +0200 Subject: [PATCH 5/5] Add types to package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index b34682bc..62d8b356 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.0.7", "description": "A react component to render nice graphs using vis.js", "main": "lib/index.js", + "types": "lib/index.d.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "babel -d lib/ src/",