@deck.gl-community/graph-layers 9.0.2 → 9.1.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/LICENSE +1 -1
  2. package/dist/core/graph-engine.d.ts +16 -7
  3. package/dist/core/graph-engine.d.ts.map +1 -1
  4. package/dist/core/graph-engine.js +13 -4
  5. package/dist/core/graph-layout.d.ts +69 -0
  6. package/dist/core/graph-layout.d.ts.map +1 -0
  7. package/dist/core/{base-layout.js → graph-layout.js} +63 -80
  8. package/dist/core/interaction-manager.d.ts +1 -1
  9. package/dist/core/interaction-manager.d.ts.map +1 -1
  10. package/dist/{core → graph}/edge.d.ts +18 -17
  11. package/dist/graph/edge.d.ts.map +1 -0
  12. package/dist/{core → graph}/edge.js +12 -15
  13. package/dist/{core → graph}/graph.d.ts +34 -31
  14. package/dist/graph/graph.d.ts.map +1 -0
  15. package/dist/{core → graph}/graph.js +43 -36
  16. package/dist/{core → graph}/node.d.ts +20 -20
  17. package/dist/graph/node.d.ts.map +1 -0
  18. package/dist/{core → graph}/node.js +16 -18
  19. package/dist/index.cjs +1181 -434
  20. package/dist/index.cjs.map +4 -4
  21. package/dist/index.d.ts +16 -14
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +19 -18
  24. package/dist/layers/graph-layer.d.ts +45 -5
  25. package/dist/layers/graph-layer.d.ts.map +1 -1
  26. package/dist/layers/graph-layer.js +80 -38
  27. package/dist/layers/node-layers/{path-rounded-rectange-layer.d.ts → path-rounded-rectangle-layer.d.ts} +1 -1
  28. package/dist/layers/node-layers/path-rounded-rectangle-layer.d.ts.map +1 -0
  29. package/dist/layers/node-layers/rounded-rectangle-layer-fragment.d.ts +1 -1
  30. package/dist/layers/node-layers/rounded-rectangle-layer-fragment.d.ts.map +1 -1
  31. package/dist/layers/node-layers/rounded-rectangle-layer-fragment.js +1 -3
  32. package/dist/layers/node-layers/rounded-rectangle-layer.d.ts +12 -3
  33. package/dist/layers/node-layers/rounded-rectangle-layer.d.ts.map +1 -1
  34. package/dist/layers/node-layers/rounded-rectangle-layer.js +25 -11
  35. package/dist/layouts/d3-force/d3-force-layout.d.ts +12 -3
  36. package/dist/layouts/d3-force/d3-force-layout.d.ts.map +1 -1
  37. package/dist/layouts/d3-force/d3-force-layout.js +11 -11
  38. package/dist/layouts/d3-force/worker.d.ts.map +1 -1
  39. package/dist/layouts/experimental/force-multi-graph-layout.d.ts +43 -0
  40. package/dist/layouts/experimental/force-multi-graph-layout.d.ts.map +1 -0
  41. package/dist/layouts/experimental/force-multi-graph-layout.js +226 -0
  42. package/dist/layouts/experimental/hive-plot-layout.d.ts +34 -0
  43. package/dist/layouts/experimental/hive-plot-layout.d.ts.map +1 -0
  44. package/dist/layouts/experimental/hive-plot-layout.js +142 -0
  45. package/dist/layouts/experimental/radial-layout.d.ts +28 -0
  46. package/dist/layouts/experimental/radial-layout.d.ts.map +1 -0
  47. package/dist/layouts/experimental/radial-layout.js +164 -0
  48. package/dist/layouts/gpu-force/gpu-force-layout.d.ts +15 -3
  49. package/dist/layouts/gpu-force/gpu-force-layout.d.ts.map +1 -1
  50. package/dist/layouts/gpu-force/gpu-force-layout.js +20 -18
  51. package/dist/layouts/gpu-force/worker.d.ts.map +1 -1
  52. package/dist/layouts/simple-layout.d.ts +42 -0
  53. package/dist/layouts/simple-layout.d.ts.map +1 -0
  54. package/dist/layouts/{simple-layout/simple-layout.js → simple-layout.js} +8 -7
  55. package/dist/loaders/create-graph.d.ts +13 -0
  56. package/dist/loaders/create-graph.d.ts.map +1 -0
  57. package/dist/{utils → loaders}/create-graph.js +9 -4
  58. package/dist/loaders/edge-parsers.d.ts +2 -6
  59. package/dist/loaders/edge-parsers.d.ts.map +1 -1
  60. package/dist/loaders/json-loader.js +1 -1
  61. package/dist/loaders/node-parsers.d.ts +2 -3
  62. package/dist/loaders/node-parsers.d.ts.map +1 -1
  63. package/dist/loaders/simple-json-graph-loader.d.ts +12 -0
  64. package/dist/loaders/simple-json-graph-loader.d.ts.map +1 -0
  65. package/dist/loaders/simple-json-graph-loader.js +20 -0
  66. package/dist/loaders/table-graph-loader.d.ts +17 -0
  67. package/dist/loaders/table-graph-loader.d.ts.map +1 -0
  68. package/dist/loaders/table-graph-loader.js +91 -0
  69. package/dist/utils/log.d.ts +1 -1
  70. package/dist/utils/log.d.ts.map +1 -1
  71. package/dist/utils/log.js +3 -3
  72. package/dist/widgets/long-press-button.d.ts +13 -0
  73. package/dist/widgets/long-press-button.d.ts.map +1 -0
  74. package/dist/widgets/long-press-button.js +31 -0
  75. package/dist/widgets/view-control-widget.d.ts +78 -0
  76. package/dist/widgets/view-control-widget.d.ts.map +1 -0
  77. package/dist/widgets/view-control-widget.js +194 -0
  78. package/package.json +8 -6
  79. package/src/core/graph-engine.ts +30 -10
  80. package/src/core/graph-layout.ts +146 -0
  81. package/src/core/interaction-manager.ts +2 -2
  82. package/src/{core → graph}/edge.ts +19 -17
  83. package/src/{core → graph}/graph.ts +51 -36
  84. package/src/{core → graph}/node.ts +21 -20
  85. package/src/index.ts +28 -28
  86. package/src/layers/graph-layer.ts +133 -46
  87. package/src/layers/node-layers/rounded-rectangle-layer-fragment.ts +1 -3
  88. package/src/layers/node-layers/rounded-rectangle-layer.ts +34 -10
  89. package/src/layouts/d3-force/d3-force-layout.ts +21 -11
  90. package/src/layouts/experimental/force-multi-graph-layout.ts +268 -0
  91. package/src/layouts/experimental/hive-plot-layout.ts +182 -0
  92. package/src/layouts/experimental/radial-layout.ts +210 -0
  93. package/src/layouts/gpu-force/gpu-force-layout.ts +32 -17
  94. package/src/layouts/{simple-layout/simple-layout.ts → simple-layout.ts} +34 -19
  95. package/src/{utils → loaders}/create-graph.ts +9 -4
  96. package/src/loaders/edge-parsers.ts +2 -1
  97. package/src/loaders/json-loader.ts +1 -1
  98. package/src/loaders/node-parsers.ts +2 -1
  99. package/src/loaders/simple-json-graph-loader.ts +28 -0
  100. package/src/loaders/table-graph-loader.ts +124 -0
  101. package/src/utils/log.ts +3 -3
  102. package/src/widgets/long-press-button.tsx +50 -0
  103. package/src/widgets/view-control-widget.tsx +337 -0
  104. package/dist/core/base-layout.d.ts +0 -72
  105. package/dist/core/base-layout.d.ts.map +0 -1
  106. package/dist/core/edge.d.ts.map +0 -1
  107. package/dist/core/graph.d.ts.map +0 -1
  108. package/dist/core/node.d.ts.map +0 -1
  109. package/dist/layers/node-layers/path-rounded-rectange-layer.d.ts.map +0 -1
  110. package/dist/layouts/simple-layout/simple-layout.d.ts +0 -23
  111. package/dist/layouts/simple-layout/simple-layout.d.ts.map +0 -1
  112. package/dist/utils/create-graph.d.ts +0 -9
  113. package/dist/utils/create-graph.d.ts.map +0 -1
  114. package/src/core/base-layout.ts +0 -154
  115. /package/dist/layers/node-layers/{path-rounded-rectange-layer.js → path-rounded-rectangle-layer.js} +0 -0
  116. /package/src/layers/node-layers/{path-rounded-rectange-layer.ts → path-rounded-rectangle-layer.ts} +0 -0
  117. /package/src/layouts/d3-force/{worker.ts → worker.js} +0 -0
  118. /package/src/layouts/gpu-force/{worker.ts → worker.js} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,20 +1,22 @@
1
+ export { Graph } from "./graph/graph.js";
2
+ export { Node } from "./graph/node.js";
3
+ export { Edge } from "./graph/edge.js";
1
4
  export { GraphEngine } from "./core/graph-engine.js";
2
- export { Graph } from "./core/graph.js";
3
- export { Node } from "./core/node.js";
4
- export { Edge } from "./core/edge.js";
5
- export { NODE_STATE, NODE_TYPE, EDGE_TYPE, EDGE_DECORATOR_TYPE, LAYOUT_STATE, MARKER_TYPE } from "./core/constants.js";
6
- export { BaseLayout } from "./core/base-layout.js";
5
+ export type { GraphLayoutState } from "./core/graph-layout.js";
6
+ export { GraphLayout } from "./core/graph-layout.js";
7
+ export { SimpleLayout } from "./layouts//simple-layout.js";
7
8
  export { D3ForceLayout } from "./layouts/d3-force/d3-force-layout.js";
8
9
  export { GPUForceLayout } from "./layouts/gpu-force/gpu-force-layout.js";
9
- export { SimpleLayout } from "./layouts/simple-layout/simple-layout.js";
10
- export { JSONLoader } from "./loaders/json-loader.js";
11
- export { basicNodeParser } from "./loaders/node-parsers.js";
12
- export { basicEdgeParser } from "./loaders/edge-parsers.js";
13
- export { createGraph } from "./utils/create-graph.js";
14
- export * from "./utils/layer-utils.js";
15
- export * from "./utils/log.js";
10
+ export { RadialLayout as _RadialLayout } from "./layouts/experimental/radial-layout.js";
11
+ export { ForceMultiGraphLayout as _MultigraphLayout } from "./layouts/experimental/force-multi-graph-layout.js";
12
+ export { HivePlotLayout as _HivePlotLayout } from "./layouts/experimental/hive-plot-layout.js";
13
+ export { NODE_STATE, NODE_TYPE, EDGE_TYPE, EDGE_DECORATOR_TYPE, MARKER_TYPE } from "./core/constants.js";
16
14
  export { GraphLayer } from "./layers/graph-layer.js";
17
15
  export { EdgeLayer } from "./layers/edge-layer.js";
18
- /** @deprecated Use EdgeLayer */
19
- export { EdgeLayer as CompositeEdgeLayer } from "./layers/edge-layer.js";
16
+ export { ViewControlWidget } from "./widgets/view-control-widget.js";
17
+ export { loadSimpleJSONGraph } from "./loaders/simple-json-graph-loader.js";
18
+ export { mixedGetPosition } from "./utils/layer-utils.js";
19
+ export { log } from "./utils/log.js";
20
+ export { createGraph } from "./loaders/create-graph.js";
21
+ export { JSONLoader } from "./loaders/simple-json-graph-loader.js";
20
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,WAAW,EAAC,+BAA4B;AAChD,OAAO,EAAC,KAAK,EAAC,wBAAqB;AACnC,OAAO,EAAC,IAAI,EAAC,uBAAoB;AACjC,OAAO,EAAC,IAAI,EAAC,uBAAoB;AACjC,OAAO,EACL,UAAU,EACV,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACZ,4BAAyB;AAG1B,OAAO,EAAC,UAAU,EAAC,8BAA2B;AAC9C,OAAO,EAAC,aAAa,EAAC,8CAA2C;AACjE,OAAO,EAAC,cAAc,EAAC,gDAA6C;AACpE,OAAO,EAAC,YAAY,EAAC,iDAA8C;AAGnE,OAAO,EAAC,UAAU,EAAC,iCAA8B;AACjD,OAAO,EAAC,eAAe,EAAC,kCAA+B;AACvD,OAAO,EAAC,eAAe,EAAC,kCAA+B;AAGvD,OAAO,EAAC,WAAW,EAAC,gCAA6B;AACjD,uCAAoC;AACpC,+BAA4B;AAG5B,OAAO,EAAC,UAAU,EAAC,gCAA6B;AAChD,OAAO,EAAC,SAAS,EAAC,+BAA4B;AAI9C,gCAAgC;AAChC,OAAO,EAAC,SAAS,IAAI,kBAAkB,EAAC,+BAA4B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,KAAK,EAAC,yBAAsB;AACpC,OAAO,EAAC,IAAI,EAAC,wBAAqB;AAClC,OAAO,EAAC,IAAI,EAAC,wBAAqB;AAElC,OAAO,EAAC,WAAW,EAAC,+BAA4B;AAGhD,YAAY,EAAC,gBAAgB,EAAC,+BAA4B;AAC1D,OAAO,EAAC,WAAW,EAAC,+BAA4B;AAEhD,OAAO,EAAC,YAAY,EAAC,oCAAiC;AACtD,OAAO,EAAC,aAAa,EAAC,8CAA2C;AACjE,OAAO,EAAC,cAAc,EAAC,gDAA6C;AACpE,OAAO,EAAC,YAAY,IAAI,aAAa,EAAC,gDAA6C;AACnF,OAAO,EAAC,qBAAqB,IAAI,iBAAiB,EAAC,2DAAwD;AAC3G,OAAO,EAAC,cAAc,IAAI,eAAe,EAAC,mDAAgD;AAE1F,OAAO,EAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAC,4BAAyB;AAGpG,OAAO,EAAC,UAAU,EAAC,gCAA6B;AAChD,OAAO,EAAC,SAAS,EAAC,+BAA4B;AAI9C,OAAO,EAAC,iBAAiB,EAAC,yCAAsC;AAGhE,OAAO,EAAC,mBAAmB,EAAC,8CAA2C;AAGvE,OAAO,EAAC,gBAAgB,EAAC,+BAA4B;AACrD,OAAO,EAAC,GAAG,EAAC,uBAAoB;AAGhC,OAAO,EAAC,WAAW,EAAC,kCAA+B;AACnD,OAAO,EAAC,UAAU,EAAC,8CAA2C"}
package/dist/index.js CHANGED
@@ -1,28 +1,29 @@
1
1
  // deck.gl-community
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- // react-graph-layers core
4
+ // core - Graph representation and layout
5
+ export { Graph } from "./graph/graph.js";
6
+ export { Node } from "./graph/node.js";
7
+ export { Edge } from "./graph/edge.js";
5
8
  export { GraphEngine } from "./core/graph-engine.js";
6
- export { Graph } from "./core/graph.js";
7
- export { Node } from "./core/node.js";
8
- export { Edge } from "./core/edge.js";
9
- export { NODE_STATE, NODE_TYPE, EDGE_TYPE, EDGE_DECORATOR_TYPE, LAYOUT_STATE, MARKER_TYPE } from "./core/constants.js";
10
- // react-graph-layers layouts
11
- export { BaseLayout } from "./core/base-layout.js";
9
+ export { GraphLayout } from "./core/graph-layout.js";
10
+ export { SimpleLayout } from "./layouts//simple-layout.js";
12
11
  export { D3ForceLayout } from "./layouts/d3-force/d3-force-layout.js";
13
12
  export { GPUForceLayout } from "./layouts/gpu-force/gpu-force-layout.js";
14
- export { SimpleLayout } from "./layouts/simple-layout/simple-layout.js";
15
- // react-graph-layers loaders
16
- export { JSONLoader } from "./loaders/json-loader.js";
17
- export { basicNodeParser } from "./loaders/node-parsers.js";
18
- export { basicEdgeParser } from "./loaders/edge-parsers.js";
19
- // react-graph-layers utils
20
- export { createGraph } from "./utils/create-graph.js";
21
- export * from "./utils/layer-utils.js";
22
- export * from "./utils/log.js";
13
+ export { RadialLayout as _RadialLayout } from "./layouts/experimental/radial-layout.js";
14
+ export { ForceMultiGraphLayout as _MultigraphLayout } from "./layouts/experimental/force-multi-graph-layout.js";
15
+ export { HivePlotLayout as _HivePlotLayout } from "./layouts/experimental/hive-plot-layout.js";
16
+ export { NODE_STATE, NODE_TYPE, EDGE_TYPE, EDGE_DECORATOR_TYPE, MARKER_TYPE } from "./core/constants.js";
23
17
  // deck.gl components
24
18
  export { GraphLayer } from "./layers/graph-layer.js";
25
19
  export { EdgeLayer } from "./layers/edge-layer.js";
20
+ // Widgets
21
+ export { ViewControlWidget } from "./widgets/view-control-widget.js";
22
+ // graph format loaders
23
+ export { loadSimpleJSONGraph } from "./loaders/simple-json-graph-loader.js";
24
+ // utils
25
+ export { mixedGetPosition } from "./utils/layer-utils.js";
26
+ export { log } from "./utils/log.js";
26
27
  // DEPRECATED
27
- /** @deprecated Use EdgeLayer */
28
- export { EdgeLayer as CompositeEdgeLayer } from "./layers/edge-layer.js";
28
+ export { createGraph } from "./loaders/create-graph.js";
29
+ export { JSONLoader } from "./loaders/simple-json-graph-loader.js";
@@ -1,4 +1,9 @@
1
+ import type { CompositeLayerProps } from '@deck.gl/core';
1
2
  import { CompositeLayer } from '@deck.gl/core';
3
+ import { Graph } from "../graph/graph.js";
4
+ import { GraphLayout } from "../core/graph-layout.js";
5
+ import { GraphEngine } from "../core/graph-engine.js";
6
+ import { InteractionManager } from "../core/interaction-manager.js";
2
7
  import { CircleLayer } from "./node-layers/circle-layer.js";
3
8
  import { ImageLayer } from "./node-layers/image-layer.js";
4
9
  import { LabelLayer } from "./node-layers/label-layer.js";
@@ -7,20 +12,55 @@ import { ZoomableMarkerLayer } from "./node-layers/zoomable-marker-layer.js";
7
12
  import { EdgeLayer } from "./edge-layer.js";
8
13
  import { EdgeLabelLayer } from "./edge-layers/edge-label-layer.js";
9
14
  import { FlowLayer } from "./edge-layers/flow-layer.js";
10
- export declare class GraphLayer extends CompositeLayer {
11
- static defaultProps: {
12
- pickable: boolean;
15
+ export type GraphLayerProps = CompositeLayerProps & _GraphLayerProps;
16
+ export type _GraphLayerProps = {
17
+ graph?: Graph;
18
+ layout?: GraphLayout;
19
+ graphLoader?: (opts: {
20
+ json: any;
21
+ }) => Graph;
22
+ engine?: GraphEngine;
23
+ nodeStyle?: any[];
24
+ edgeStyle?: {
25
+ stroke?: string;
26
+ strokeWidth?: number;
27
+ /** an array of styles for layers */
28
+ decorators?: any[];
29
+ };
30
+ nodeEvents?: {
31
+ onMouseLeave?: () => void;
32
+ onHover?: () => void;
33
+ onMouseEnter?: () => void;
34
+ onClick?: () => void;
35
+ onDrag?: () => void;
36
+ };
37
+ edgeEvents?: {
38
+ onClick: () => void;
39
+ onHover: () => void;
40
+ };
41
+ enableDragging?: boolean;
42
+ };
43
+ export declare class GraphLayer extends CompositeLayer<GraphLayerProps> {
44
+ static layerName: string;
45
+ static defaultProps: Required<_GraphLayerProps>;
46
+ state: CompositeLayer<GraphLayerProps>['state'] & {
47
+ interactionManager: InteractionManager;
48
+ graphEngine?: GraphEngine;
13
49
  };
14
50
  forceUpdate: () => void;
15
- constructor(props: any);
51
+ constructor(props: GraphLayerProps & CompositeLayerProps);
16
52
  initializeState(): void;
17
53
  shouldUpdateState({ changeFlags }: {
18
54
  changeFlags: any;
19
55
  }): any;
20
- updateState({ props }: {
56
+ updateState({ props, oldProps, changeFlags }: {
21
57
  props: any;
58
+ oldProps: any;
59
+ changeFlags: any;
22
60
  }): void;
23
61
  finalize(): void;
62
+ _setGraphEngine(graphEngine: GraphEngine): void;
63
+ _removeGraphEngine(): void;
24
64
  createNodeLayers(): (CircleLayer | ImageLayer | LabelLayer | RectangleLayer | ZoomableMarkerLayer)[];
25
65
  createEdgeLayers(): (EdgeLayer | (EdgeLabelLayer | FlowLayer)[])[];
26
66
  onClick(info: any, event: any): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"graph-layer.d.ts","sourceRoot":"","sources":["../../src/layers/graph-layer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,cAAc,EAAC,MAAM,eAAe,CAAC;AAUhE,OAAO,EAAC,WAAW,EAAC,sCAAmC;AACvD,OAAO,EAAC,UAAU,EAAC,qCAAkC;AACrD,OAAO,EAAC,UAAU,EAAC,qCAAkC;AACrD,OAAO,EAAC,cAAc,EAAC,yCAAsC;AAG7D,OAAO,EAAC,mBAAmB,EAAC,+CAA4C;AAGxE,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,cAAc,EAAC,0CAAuC;AAC9D,OAAO,EAAC,SAAS,EAAC,oCAAiC;AA8CnD,qBAAa,UAAW,SAAQ,cAAc;IAC5C,MAAM,CAAC,YAAY;;MAEjB;IAEF,WAAW,aAKT;gBAEU,KAAK,KAAA;IAOjB,eAAe;IAKf,iBAAiB,CAAC,EAAC,WAAW,EAAC;;KAAA;IAI/B,WAAW,CAAC,EAAC,KAAK,EAAC;;KAAA;IAInB,QAAQ;IAIR,gBAAgB;IAiChB,gBAAgB;IA0DhB,OAAO,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA,GAAG,OAAO;IAI7B,OAAO,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA,GAAG,OAAO;IAI7B,WAAW,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA;IAIvB,MAAM,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA;IAIlB,SAAS,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA;IAIrB,YAAY;CAGb"}
1
+ {"version":3,"file":"graph-layer.d.ts","sourceRoot":"","sources":["../../src/layers/graph-layer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AACvD,OAAO,EAAoB,cAAc,EAAC,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAC,KAAK,EAAC,0BAAuB;AACrC,OAAO,EAAC,WAAW,EAAC,gCAA6B;AACjD,OAAO,EAAC,WAAW,EAAC,gCAA6B;AAIjD,OAAO,EAAC,kBAAkB,EAAC,uCAAoC;AAK/D,OAAO,EAAC,WAAW,EAAC,sCAAmC;AACvD,OAAO,EAAC,UAAU,EAAC,qCAAkC;AACrD,OAAO,EAAC,UAAU,EAAC,qCAAkC;AACrD,OAAO,EAAC,cAAc,EAAC,yCAAsC;AAG7D,OAAO,EAAC,mBAAmB,EAAC,+CAA4C;AAGxE,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,cAAc,EAAC,0CAAuC;AAC9D,OAAO,EAAC,SAAS,EAAC,oCAAiC;AA0BnD,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,GAAG,CAAA;KAAC,KAAK,KAAK,CAAC;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;IAGrB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,oCAAoC;QACpC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;KACpB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC;IACF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,qBAAa,UAAW,SAAQ,cAAc,CAAC,eAAe,CAAC;IAC7D,MAAM,CAAC,SAAS,SAAgB;IAEhC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CA2B7C;IAGF,KAAK,EAAG,cAAc,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG;QACjD,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,CAAC;IAEF,WAAW,aAKT;gBAEU,KAAK,EAAE,eAAe,GAAG,mBAAmB;IAIxD,eAAe;IAQf,iBAAiB,CAAC,EAAC,WAAW,EAAC;;KAAA;IAI/B,WAAW,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAC;;;;KAAA;IAqB1C,QAAQ;IAIR,eAAe,CAAC,WAAW,EAAE,WAAW;IAcxC,kBAAkB;IAQlB,gBAAgB;IAmChB,gBAAgB;IA2DhB,OAAO,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA,GAAG,OAAO;IAI7B,OAAO,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA,GAAG,OAAO;IAI7B,WAAW,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA;IAIvB,MAAM,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA;IAIlB,SAAS,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA;IAIrB,YAAY;CAGb"}
@@ -2,8 +2,9 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { COORDINATE_SYSTEM, CompositeLayer } from '@deck.gl/core';
5
- import { Stylesheet } from "../style/style-sheet.js";
6
5
  import { NODE_TYPE, EDGE_DECORATOR_TYPE } from "../core/constants.js";
6
+ import { GraphEngine } from "../core/graph-engine.js";
7
+ import { Stylesheet } from "../style/style-sheet.js";
7
8
  import { mixedGetPosition } from "../utils/layer-utils.js";
8
9
  import { InteractionManager } from "../core/interaction-manager.js";
9
10
  import { log } from "../utils/log.js";
@@ -13,12 +14,13 @@ import { ImageLayer } from "./node-layers/image-layer.js";
13
14
  import { LabelLayer } from "./node-layers/label-layer.js";
14
15
  import { RectangleLayer } from "./node-layers/rectangle-layer.js";
15
16
  import { RoundedRectangleLayer } from "./node-layers/rounded-rectangle-layer.js";
16
- import { PathBasedRoundedRectangleLayer } from "./node-layers/path-rounded-rectange-layer.js";
17
+ import { PathBasedRoundedRectangleLayer } from "./node-layers/path-rounded-rectangle-layer.js";
17
18
  import { ZoomableMarkerLayer } from "./node-layers/zoomable-marker-layer.js";
18
19
  // edge layers
19
20
  import { EdgeLayer } from "./edge-layer.js";
20
21
  import { EdgeLabelLayer } from "./edge-layers/edge-label-layer.js";
21
22
  import { FlowLayer } from "./edge-layers/flow-layer.js";
23
+ import { JSONLoader } from "../loaders/json-loader.js";
22
24
  const NODE_LAYER_MAP = {
23
25
  [NODE_TYPE.RECTANGLE]: RectangleLayer,
24
26
  [NODE_TYPE.ROUNDED_RECTANGLE]: RoundedRectangleLayer,
@@ -38,32 +40,36 @@ const SHARED_LAYER_PROPS = {
38
40
  depthTest: false
39
41
  }
40
42
  };
41
- const defaultProps = {
42
- // an array of styles for layers
43
- nodeStyle: [],
44
- nodeEvents: {
45
- onMouseLeave: () => { },
46
- onHover: () => { },
47
- onMouseEnter: () => { },
48
- onClick: () => { },
49
- onDrag: () => { }
50
- },
51
- edgeStyle: {
52
- color: 'black',
53
- strokeWidth: 1,
54
- // an array of styles for layers
55
- decorators: []
56
- },
57
- edgeEvents: {
58
- onClick: () => { },
59
- onHover: () => { }
60
- },
61
- enableDragging: false
62
- };
63
43
  export class GraphLayer extends CompositeLayer {
44
+ static layerName = 'GraphLayer';
64
45
  static defaultProps = {
65
- pickable: true
46
+ // Composite layer props
47
+ // @ts-expect-error composite layer props
48
+ pickable: true,
49
+ // Graph props
50
+ graphLoader: JSONLoader,
51
+ nodeStyle: [],
52
+ nodeEvents: {
53
+ onMouseLeave: () => { },
54
+ onHover: () => { },
55
+ onMouseEnter: () => { },
56
+ onClick: () => { },
57
+ onDrag: () => { }
58
+ },
59
+ edgeStyle: {
60
+ stroke: 'black',
61
+ strokeWidth: 1,
62
+ // an array of styles for layers
63
+ decorators: []
64
+ },
65
+ edgeEvents: {
66
+ onClick: () => { },
67
+ onHover: () => { }
68
+ },
69
+ enableDragging: false
66
70
  };
71
+ // @ts-expect-error Some typescript confusion due to override of base class state
72
+ state;
67
73
  forceUpdate = () => {
68
74
  if (this.context && this.context.layerManager) {
69
75
  this.setNeedsUpdate();
@@ -72,25 +78,62 @@ export class GraphLayer extends CompositeLayer {
72
78
  };
73
79
  constructor(props) {
74
80
  super(props);
75
- // added or removed a node, or in general something layout related changed
76
- props.engine.addEventListener('onLayoutChange', this.forceUpdate);
77
81
  }
78
82
  initializeState() {
79
- const interactionManager = new InteractionManager(this.props, () => this.forceUpdate());
80
- this.state = { interactionManager };
83
+ this.state = {
84
+ interactionManager: new InteractionManager(this.props, () => this.forceUpdate())
85
+ };
86
+ const engine = this.props.engine;
87
+ this._setGraphEngine(engine);
81
88
  }
82
89
  shouldUpdateState({ changeFlags }) {
83
90
  return changeFlags.dataChanged || changeFlags.propsChanged;
84
91
  }
85
- updateState({ props }) {
86
- this.state.interactionManager.updateProps(props);
92
+ updateState({ props, oldProps, changeFlags }) {
93
+ if (changeFlags.dataChanged &&
94
+ props.data &&
95
+ !(Array.isArray(props.data) && props.data.length === 0)) {
96
+ // console.log(props.data);
97
+ const graph = this.props.graphLoader({ json: props.data });
98
+ const layout = this.props.layout;
99
+ const graphEngine = new GraphEngine({ graph, layout });
100
+ this._setGraphEngine(graphEngine);
101
+ this.state.interactionManager.updateProps(props);
102
+ this.forceUpdate();
103
+ }
104
+ else if (changeFlags.propsChanged && props.graph !== oldProps.graph) {
105
+ const graphEngine = new GraphEngine({ graph: props.graph, layout: props.layout });
106
+ this._setGraphEngine(graphEngine);
107
+ this.state.interactionManager.updateProps(props);
108
+ this.forceUpdate();
109
+ }
87
110
  }
88
111
  finalize() {
89
- this.props.engine.removeEventListener('onLayoutChange', this.forceUpdate);
112
+ this._removeGraphEngine();
113
+ }
114
+ _setGraphEngine(graphEngine) {
115
+ if (graphEngine === this.state.graphEngine) {
116
+ return;
117
+ }
118
+ this._removeGraphEngine();
119
+ if (graphEngine) {
120
+ this.state.graphEngine = graphEngine;
121
+ this.state.graphEngine.run();
122
+ // added or removed a node, or in general something layout related changed
123
+ this.state.graphEngine.addEventListener('onLayoutChange', this.forceUpdate);
124
+ }
125
+ }
126
+ _removeGraphEngine() {
127
+ if (this.state.graphEngine) {
128
+ this.state.graphEngine.removeEventListener('onLayoutChange', this.forceUpdate);
129
+ this.state.graphEngine.clear();
130
+ this.state.graphEngine = null;
131
+ }
90
132
  }
91
133
  createNodeLayers() {
92
- const { engine, nodeStyle } = this.props;
93
- if (!nodeStyle || !Array.isArray(nodeStyle) || nodeStyle.length === 0) {
134
+ const engine = this.state.graphEngine;
135
+ const { nodeStyle } = this.props;
136
+ if (!engine || !nodeStyle || !Array.isArray(nodeStyle) || nodeStyle.length === 0) {
94
137
  return [];
95
138
  }
96
139
  return nodeStyle.filter(Boolean).map((style, idx) => {
@@ -121,8 +164,9 @@ export class GraphLayer extends CompositeLayer {
121
164
  });
122
165
  }
123
166
  createEdgeLayers() {
124
- const { edgeStyle, engine } = this.props;
125
- if (!edgeStyle) {
167
+ const engine = this.state.graphEngine;
168
+ const { edgeStyle } = this.props;
169
+ if (!engine || !edgeStyle) {
126
170
  return [];
127
171
  }
128
172
  return (Array.isArray(edgeStyle) ? edgeStyle : [edgeStyle])
@@ -189,5 +233,3 @@ export class GraphLayer extends CompositeLayer {
189
233
  return [this.createEdgeLayers(), this.createNodeLayers()];
190
234
  }
191
235
  }
192
- GraphLayer.layerName = 'GraphLayer';
193
- GraphLayer.defaultProps = defaultProps;
@@ -4,4 +4,4 @@ export declare class PathBasedRoundedRectangleLayer extends CompositeLayer {
4
4
  static layerName: string;
5
5
  renderLayers(): PolygonLayer<any, {}>[];
6
6
  }
7
- //# sourceMappingURL=path-rounded-rectange-layer.d.ts.map
7
+ //# sourceMappingURL=path-rounded-rectangle-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-rounded-rectangle-layer.d.ts","sourceRoot":"","sources":["../../../src/layers/node-layers/path-rounded-rectangle-layer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAa7C,qBAAa,8BAA+B,SAAQ,cAAc;IAChE,MAAM,CAAC,SAAS,SAAoC;IAEpD,YAAY;CAkCb"}
@@ -1,2 +1,2 @@
1
- export declare const fs = "#define SHADER_NAME rounded-rectangle-layer-fragment-shader\n\nprecision highp float;\n\nuniform float cornerRadius;\n\nvarying vec4 vFillColor;\nvarying vec2 unitPosition;\n\nvoid main(void) {\n\n float distToCenter = length(unitPosition);\n\n /* Calculate the cutoff radius for the rounded corners */\n float threshold = sqrt(2.0) * (1.0 - cornerRadius) + 1.0 * cornerRadius;\n if (distToCenter <= threshold) {\n gl_FragColor = vFillColor;\n } else {\n discard;\n }\n\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\n\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\n}\n";
1
+ export declare const fs = "#define SHADER_NAME rounded-rectangle-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vFillColor;\nvarying vec2 unitPosition;\n\nvoid main(void) {\n\n float distToCenter = length(unitPosition);\n\n /* Calculate the cutoff radius for the rounded corners */\n float threshold = sqrt(2.0) * (1.0 - roundedRectangle.cornerRadius) + 1.0 * roundedRectangle.cornerRadius;\n if (distToCenter <= threshold) {\n gl_FragColor = vFillColor;\n } else {\n discard;\n }\n\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\n\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\n}\n";
2
2
  //# sourceMappingURL=rounded-rectangle-layer-fragment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rounded-rectangle-layer-fragment.d.ts","sourceRoot":"","sources":["../../../src/layers/node-layers/rounded-rectangle-layer-fragment.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,EAAE,umBA0Bd,CAAC"}
1
+ {"version":3,"file":"rounded-rectangle-layer-fragment.d.ts","sourceRoot":"","sources":["../../../src/layers/node-layers/rounded-rectangle-layer-fragment.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,EAAE,0mBAwBd,CAAC"}
@@ -6,8 +6,6 @@ export const fs = /* glsl */ `\
6
6
 
7
7
  precision highp float;
8
8
 
9
- uniform float cornerRadius;
10
-
11
9
  varying vec4 vFillColor;
12
10
  varying vec2 unitPosition;
13
11
 
@@ -16,7 +14,7 @@ void main(void) {
16
14
  float distToCenter = length(unitPosition);
17
15
 
18
16
  /* Calculate the cutoff radius for the rounded corners */
19
- float threshold = sqrt(2.0) * (1.0 - cornerRadius) + 1.0 * cornerRadius;
17
+ float threshold = sqrt(2.0) * (1.0 - roundedRectangle.cornerRadius) + 1.0 * roundedRectangle.cornerRadius;
20
18
  if (distToCenter <= threshold) {
21
19
  gl_FragColor = vFillColor;
22
20
  } else {
@@ -1,9 +1,18 @@
1
1
  import { RectangleLayer } from "./rectangle-layer.js";
2
+ export type RoundedRectangleProps = {
3
+ cornerRadius: number;
4
+ };
5
+ export declare const roundedRectangleUniforms: {
6
+ readonly name: "roundedRectangle";
7
+ readonly vs: "uniform roundedRectangleUniforms {\n float cornerRadius;\n} roundedRectangle;\n";
8
+ readonly fs: "uniform roundedRectangleUniforms {\n float cornerRadius;\n} roundedRectangle;\n";
9
+ readonly uniformTypes: {
10
+ readonly cornerRadius: "f32";
11
+ };
12
+ };
2
13
  export declare class RoundedRectangleLayer extends RectangleLayer {
3
14
  static layerName: string;
4
- draw({ uniforms }: {
5
- uniforms: any;
6
- }): void;
15
+ draw(props: any): void;
7
16
  getShaders(): any;
8
17
  }
9
18
  //# sourceMappingURL=rounded-rectangle-layer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rounded-rectangle-layer.d.ts","sourceRoot":"","sources":["../../../src/layers/node-layers/rounded-rectangle-layer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,cAAc,EAAC,6BAA0B;AAEjD,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,MAAM,CAAC,SAAS,SAA2B;IAC3C,IAAI,CAAC,EAAC,QAAQ,EAAC;;KAAA;IASf,UAAU;CAMX"}
1
+ {"version":3,"file":"rounded-rectangle-layer.d.ts","sourceRoot":"","sources":["../../../src/layers/node-layers/rounded-rectangle-layer.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,cAAc,EAAC,6BAA0B;AAQjD,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;CAOmB,CAAC;AAEzD,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,MAAM,CAAC,SAAS,SAA2B;IAE3C,IAAI,CAAC,KAAK,KAAA;IAQV,UAAU;CASX"}
@@ -1,24 +1,38 @@
1
1
  // deck.gl-community
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- // import {ScatterplotLayer} from '@deck.gl/layers';
5
4
  import { fs } from "./rounded-rectangle-layer-fragment.js";
6
5
  import { RectangleLayer } from "./rectangle-layer.js";
6
+ const uniformBlock = `\
7
+ uniform roundedRectangleUniforms {
8
+ float cornerRadius;
9
+ } roundedRectangle;
10
+ `;
11
+ export const roundedRectangleUniforms = {
12
+ name: 'roundedRectangle',
13
+ vs: uniformBlock,
14
+ fs: uniformBlock,
15
+ uniformTypes: {
16
+ cornerRadius: 'f32'
17
+ }
18
+ };
7
19
  export class RoundedRectangleLayer extends RectangleLayer {
8
20
  static layerName = 'RoundedRectangleLayer';
9
- draw({ uniforms }) {
10
- super.draw({
11
- uniforms: {
12
- ...uniforms,
13
- cornerRadius: this.props.cornerRadius
14
- }
15
- });
21
+ draw(props) {
22
+ const { cornerRadius } = this.props;
23
+ const roundedRectangleProps = { cornerRadius };
24
+ const model = this.state.model;
25
+ model.shaderInputs.setProps({ roundedRectangle: roundedRectangleProps });
26
+ super.draw(props);
16
27
  }
17
28
  getShaders() {
18
29
  // use object.assign to make sure we don't overwrite existing fields like `vs`, `modules`...
19
- return Object.assign({}, super.getShaders(undefined), {
20
- fs
21
- });
30
+ const shaders = super.getShaders(undefined);
31
+ return {
32
+ ...shaders,
33
+ fs,
34
+ modules: [...shaders.modules, roundedRectangleUniforms]
35
+ };
22
36
  }
23
37
  }
24
38
  RoundedRectangleLayer.defaultProps = {
@@ -1,10 +1,19 @@
1
- import { BaseLayout } from "../../core/base-layout.js";
2
- export declare class D3ForceLayout extends BaseLayout {
1
+ import { GraphLayout, GraphLayoutOptions } from "../../core/graph-layout.js";
2
+ export type D3ForceLayoutOptions = GraphLayoutOptions & {
3
+ alpha?: number;
4
+ resumeAlpha?: number;
5
+ nBodyStrength?: number;
6
+ nBodyDistanceMin?: number;
7
+ nBodyDistanceMax?: number;
8
+ getCollisionRadius?: number;
9
+ };
10
+ export declare class D3ForceLayout extends GraphLayout<D3ForceLayoutOptions> {
11
+ static defaultOptions: Required<D3ForceLayoutOptions>;
3
12
  protected readonly _name = "D3";
4
13
  private _positionsByNodeId;
5
14
  private _graph;
6
15
  private _worker;
7
- constructor(options: any);
16
+ constructor(options?: D3ForceLayoutOptions);
8
17
  initializeGraph(graph: any): void;
9
18
  updateGraph(graph: any): void;
10
19
  start(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"d3-force-layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/d3-force/d3-force-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAC,kCAA+B;AAalD,qBAAa,aAAc,SAAQ,UAAU;IAC3C,SAAS,CAAC,QAAQ,CAAC,KAAK,QAAQ;IAChC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAM;gBACT,OAAO,KAAA;IASnB,eAAe,CAAC,KAAK,KAAA;IAKrB,WAAW,CAAC,KAAK,KAAA;IAQjB,KAAK;IAML,MAAM;IAIN,aAAa;IAuCb,MAAM;IAIN,IAAI;IAIJ,eAAe;;;;;MAab;IAEF,eAAe,qBAOb;IAEF,gBAAgB,sCAYd;IAEF,kBAAkB,sBAIhB;CACH"}
1
+ {"version":3,"file":"d3-force-layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/d3-force/d3-force-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAC,mCAAgC;AAIxE,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,qBAAa,aAAc,SAAQ,WAAW,CAAC,oBAAoB,CAAC;IAClE,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAOnD;IAEF,SAAS,CAAC,QAAQ,CAAC,KAAK,QAAQ;IAChC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAM;gBAET,OAAO,CAAC,EAAE,oBAAoB;IAS1C,eAAe,CAAC,KAAK,KAAA;IAKrB,WAAW,CAAC,KAAK,KAAA;IAQjB,KAAK;IAML,MAAM;IAIN,aAAa;IAuCb,MAAM;IAIN,IAAI;IAIJ,eAAe;;;;;MAab;IAEF,eAAe,qBAOb;IAEF,gBAAgB,sCAYd;IAEF,kBAAkB,sBAIhB;CACH"}
@@ -1,17 +1,17 @@
1
1
  // deck.gl-community
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { BaseLayout } from "../../core/base-layout.js";
4
+ import { GraphLayout } from "../../core/graph-layout.js";
5
5
  import { EDGE_TYPE } from "../../core/constants.js";
6
- const defaultOptions = {
7
- alpha: 0.3,
8
- resumeAlpha: 0.1,
9
- nBodyStrength: -900,
10
- nBodyDistanceMin: 100,
11
- nBodyDistanceMax: 400,
12
- getCollisionRadius: 0
13
- };
14
- export class D3ForceLayout extends BaseLayout {
6
+ export class D3ForceLayout extends GraphLayout {
7
+ static defaultOptions = {
8
+ alpha: 0.3,
9
+ resumeAlpha: 0.1,
10
+ nBodyStrength: -900,
11
+ nBodyDistanceMin: 100,
12
+ nBodyDistanceMax: 400,
13
+ getCollisionRadius: 0
14
+ };
15
15
  _name = 'D3';
16
16
  _positionsByNodeId = new Map();
17
17
  _graph;
@@ -19,7 +19,7 @@ export class D3ForceLayout extends BaseLayout {
19
19
  constructor(options) {
20
20
  super(options);
21
21
  this._options = {
22
- ...defaultOptions,
22
+ ...D3ForceLayout.defaultOptions,
23
23
  ...options
24
24
  };
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/layouts/d3-force/worker.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/layouts/d3-force/worker.js"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ import { GraphLayout, GraphLayoutOptions } from "../../core/graph-layout.js";
2
+ import { Node } from "../../graph/node.js";
3
+ import { Graph } from "../../graph/graph.js";
4
+ export type ForceMultiGraphLayoutOptions = GraphLayoutOptions & {
5
+ alpha?: number;
6
+ nBodyStrength?: number;
7
+ nBodyDistanceMin?: number;
8
+ nBodyDistanceMax?: number;
9
+ };
10
+ export declare class ForceMultiGraphLayout extends GraphLayout<ForceMultiGraphLayoutOptions> {
11
+ static defaultOptions: {
12
+ alpha: number;
13
+ nBodyStrength: number;
14
+ nBodyDistanceMin: number;
15
+ nBodyDistanceMax: number;
16
+ };
17
+ _name: string;
18
+ _graph: Graph;
19
+ _d3Graph: {
20
+ nodes: any[];
21
+ edges: any[];
22
+ };
23
+ _nodeMap: {};
24
+ _edgeMap: {};
25
+ _simulator: any;
26
+ constructor(options?: ForceMultiGraphLayoutOptions);
27
+ initializeGraph(graph: Graph): void;
28
+ _strength: (d3Edge: any) => number;
29
+ _generateSimulator(): void;
30
+ start(): void;
31
+ resume(): void;
32
+ stop(): void;
33
+ updateGraph(graph: any): void;
34
+ getNodePosition: (node: Node) => [number, number];
35
+ getEdgePosition: (edge: any) => {
36
+ type: string;
37
+ sourcePosition: any[];
38
+ targetPosition: any[];
39
+ controlPoints: number[][];
40
+ };
41
+ lockNodePosition: (node: any, x: any, y: any) => void;
42
+ }
43
+ //# sourceMappingURL=force-multi-graph-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"force-multi-graph-layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/experimental/force-multi-graph-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAC,mCAAgC;AACxE,OAAO,EAAC,IAAI,EAAC,4BAAyB;AAEtC,OAAO,EAAC,KAAK,EAAC,6BAA0B;AAGxC,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,GAAG;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,WAAW,CAAC,4BAA4B,CAAC;IAClF,MAAM,CAAC,cAAc;;;;;MAKnB;IAEF,KAAK,SAA2B;IAChC,MAAM,EAAE,KAAK,CAAC;IAId,QAAQ;;;MAA0B;IAClC,QAAQ,KAAM;IACd,QAAQ,KAAM;IACd,UAAU,MAAC;gBAEC,OAAO,GAAE,4BAAiC;IAQtD,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAInC,SAAS,0BAOP;IAEF,kBAAkB;IA+BlB,KAAK;IAKL,MAAM;IAIN,IAAI;IAIJ,WAAW,CAAC,KAAK,KAAA;IAkFjB,eAAe,SAAU,IAAI,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAO9C;IAEF,eAAe;;;;;MA8Cb;IAEF,gBAAgB,sCAMd;CACH"}