@deck.gl-community/graph-layers 9.2.0-beta.2 → 9.2.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 (232) hide show
  1. package/dist/core/graph-engine.d.ts +63 -21
  2. package/dist/core/graph-engine.d.ts.map +1 -1
  3. package/dist/core/graph-engine.js +155 -75
  4. package/dist/core/graph-engine.js.map +1 -1
  5. package/dist/core/graph-layout.d.ts +22 -18
  6. package/dist/core/graph-layout.d.ts.map +1 -1
  7. package/dist/core/graph-layout.js +33 -18
  8. package/dist/core/graph-layout.js.map +1 -1
  9. package/dist/core/interaction-manager.d.ts +2 -2
  10. package/dist/core/interaction-manager.d.ts.map +1 -1
  11. package/dist/core/interaction-manager.js +7 -5
  12. package/dist/core/interaction-manager.js.map +1 -1
  13. package/dist/graph/arrow-graph.d.ts +69 -0
  14. package/dist/graph/arrow-graph.d.ts.map +1 -0
  15. package/dist/graph/arrow-graph.js +513 -0
  16. package/dist/graph/arrow-graph.js.map +1 -0
  17. package/dist/graph/classic-graph.d.ts +169 -0
  18. package/dist/graph/classic-graph.d.ts.map +1 -0
  19. package/dist/graph/classic-graph.js +390 -0
  20. package/dist/graph/classic-graph.js.map +1 -0
  21. package/dist/graph/edge.d.ts +6 -6
  22. package/dist/graph/edge.d.ts.map +1 -1
  23. package/dist/graph/edge.js.map +1 -1
  24. package/dist/graph/functions/arrow-utils.d.ts +6 -0
  25. package/dist/graph/functions/arrow-utils.d.ts.map +1 -0
  26. package/dist/graph/functions/arrow-utils.js +67 -0
  27. package/dist/graph/functions/arrow-utils.js.map +1 -0
  28. package/dist/graph/functions/create-graph-from-data.d.ts +3 -0
  29. package/dist/graph/functions/create-graph-from-data.d.ts.map +1 -0
  30. package/dist/graph/functions/create-graph-from-data.js +12 -0
  31. package/dist/graph/functions/create-graph-from-data.js.map +1 -0
  32. package/dist/graph/graph-normalization.d.ts +10 -0
  33. package/dist/graph/graph-normalization.d.ts.map +1 -0
  34. package/dist/graph/graph-normalization.js +65 -0
  35. package/dist/graph/graph-normalization.js.map +1 -0
  36. package/dist/graph/graph.d.ts +62 -155
  37. package/dist/graph/graph.d.ts.map +1 -1
  38. package/dist/graph/graph.js +11 -300
  39. package/dist/graph/graph.js.map +1 -1
  40. package/dist/graph/node.d.ts +6 -6
  41. package/dist/graph/node.d.ts.map +1 -1
  42. package/dist/graph/node.js +2 -2
  43. package/dist/graph/node.js.map +1 -1
  44. package/dist/graph-data/arrow-graph-data-builder.d.ts +21 -0
  45. package/dist/graph-data/arrow-graph-data-builder.d.ts.map +1 -0
  46. package/dist/graph-data/arrow-graph-data-builder.js +105 -0
  47. package/dist/graph-data/arrow-graph-data-builder.js.map +1 -0
  48. package/dist/graph-data/graph-data-builder.d.ts +6 -0
  49. package/dist/graph-data/graph-data-builder.d.ts.map +1 -0
  50. package/dist/graph-data/graph-data-builder.js +1 -0
  51. package/dist/graph-data/graph-data-builder.js.map +1 -0
  52. package/dist/graph-data/graph-data.d.ts +40 -0
  53. package/dist/graph-data/graph-data.d.ts.map +1 -0
  54. package/dist/graph-data/graph-data.js +11 -0
  55. package/dist/graph-data/graph-data.js.map +1 -0
  56. package/dist/graph-data/plain-graph-data-builder.d.ts +20 -0
  57. package/dist/graph-data/plain-graph-data-builder.d.ts.map +1 -0
  58. package/dist/graph-data/plain-graph-data-builder.js +105 -0
  59. package/dist/graph-data/plain-graph-data-builder.js.map +1 -0
  60. package/dist/graph-style-schema.cdn.js +1 -1
  61. package/dist/graph-style-schema.json +1 -1
  62. package/dist/index.cjs +6905 -4576
  63. package/dist/index.cjs.map +4 -4
  64. package/dist/index.d.ts +14 -7
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +24 -11
  67. package/dist/index.js.map +1 -1
  68. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.d.ts.map +1 -1
  69. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js +1 -2
  70. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js.map +1 -1
  71. package/dist/layers/common-layers/grid-layer/grid-layer.d.ts +83 -0
  72. package/dist/layers/common-layers/grid-layer/grid-layer.d.ts.map +1 -0
  73. package/dist/layers/common-layers/grid-layer/grid-layer.js +133 -0
  74. package/dist/layers/common-layers/grid-layer/grid-layer.js.map +1 -0
  75. package/dist/layers/edge-attachment-helper.d.ts.map +1 -1
  76. package/dist/layers/edge-attachment-helper.js +1 -2
  77. package/dist/layers/edge-attachment-helper.js.map +1 -1
  78. package/dist/layers/graph-layer.d.ts +68 -11
  79. package/dist/layers/graph-layer.d.ts.map +1 -1
  80. package/dist/layers/graph-layer.js +435 -50
  81. package/dist/layers/graph-layer.js.map +1 -1
  82. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.d.ts +24 -0
  83. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.d.ts.map +1 -0
  84. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.js +251 -0
  85. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.js.map +1 -0
  86. package/dist/layouts/d3-dag/d3-dag-layout.d.ts +46 -61
  87. package/dist/layouts/d3-dag/d3-dag-layout.d.ts.map +1 -1
  88. package/dist/layouts/d3-dag/d3-dag-layout.js +85 -270
  89. package/dist/layouts/d3-dag/d3-dag-layout.js.map +1 -1
  90. package/dist/layouts/d3-force/d3-force-layout.d.ts +20 -8
  91. package/dist/layouts/d3-force/d3-force-layout.d.ts.map +1 -1
  92. package/dist/layouts/d3-force/d3-force-layout.js +39 -20
  93. package/dist/layouts/d3-force/d3-force-layout.js.map +1 -1
  94. package/dist/layouts/experimental/force-multi-graph-layout.d.ts +19 -15
  95. package/dist/layouts/experimental/force-multi-graph-layout.d.ts.map +1 -1
  96. package/dist/layouts/experimental/force-multi-graph-layout.js +47 -38
  97. package/dist/layouts/experimental/force-multi-graph-layout.js.map +1 -1
  98. package/dist/layouts/experimental/hive-plot-layout.d.ts +18 -15
  99. package/dist/layouts/experimental/hive-plot-layout.d.ts.map +1 -1
  100. package/dist/layouts/experimental/hive-plot-layout.js +33 -34
  101. package/dist/layouts/experimental/hive-plot-layout.js.map +1 -1
  102. package/dist/layouts/experimental/radial-layout.d.ts +12 -7
  103. package/dist/layouts/experimental/radial-layout.d.ts.map +1 -1
  104. package/dist/layouts/experimental/radial-layout.js +31 -14
  105. package/dist/layouts/experimental/radial-layout.js.map +1 -1
  106. package/dist/layouts/gpu-force/gpu-force-layout.d.ts +11 -8
  107. package/dist/layouts/gpu-force/gpu-force-layout.d.ts.map +1 -1
  108. package/dist/layouts/gpu-force/gpu-force-layout.js +59 -56
  109. package/dist/layouts/gpu-force/gpu-force-layout.js.map +1 -1
  110. package/dist/layouts/simple-layout.d.ts +8 -25
  111. package/dist/layouts/simple-layout.d.ts.map +1 -1
  112. package/dist/layouts/simple-layout.js +13 -17
  113. package/dist/layouts/simple-layout.js.map +1 -1
  114. package/dist/loaders/dot-graph-loader.d.ts +25 -0
  115. package/dist/loaders/dot-graph-loader.d.ts.map +1 -0
  116. package/dist/loaders/dot-graph-loader.js +668 -0
  117. package/dist/loaders/dot-graph-loader.js.map +1 -0
  118. package/dist/loaders/json-graph-loader.d.ts +6 -0
  119. package/dist/loaders/json-graph-loader.d.ts.map +1 -0
  120. package/dist/loaders/json-graph-loader.js +31 -0
  121. package/dist/loaders/json-graph-loader.js.map +1 -0
  122. package/dist/loaders/{edge-parsers.d.ts → parsers/edge-parsers.d.ts} +1 -1
  123. package/dist/loaders/parsers/edge-parsers.d.ts.map +1 -0
  124. package/dist/loaders/{edge-parsers.js → parsers/edge-parsers.js} +1 -1
  125. package/dist/loaders/parsers/edge-parsers.js.map +1 -0
  126. package/dist/loaders/{node-parsers.d.ts → parsers/node-parsers.d.ts} +1 -1
  127. package/dist/loaders/parsers/node-parsers.d.ts.map +1 -0
  128. package/dist/loaders/{node-parsers.js → parsers/node-parsers.js} +1 -1
  129. package/dist/loaders/parsers/node-parsers.js.map +1 -0
  130. package/dist/loaders/parsers/parse-json-graph.d.ts +29 -0
  131. package/dist/loaders/parsers/parse-json-graph.d.ts.map +1 -0
  132. package/dist/loaders/parsers/parse-json-graph.js +78 -0
  133. package/dist/loaders/parsers/parse-json-graph.js.map +1 -0
  134. package/dist/style/graph-style-engine.d.ts +4 -2
  135. package/dist/style/graph-style-engine.d.ts.map +1 -1
  136. package/dist/style/graph-style-engine.js +3 -2
  137. package/dist/style/graph-style-engine.js.map +1 -1
  138. package/dist/style/{style-engine.d.ts → stylesheet-engine.d.ts} +3 -3
  139. package/dist/style/stylesheet-engine.d.ts.map +1 -0
  140. package/dist/style/{style-engine.js → stylesheet-engine.js} +1 -1
  141. package/dist/style/stylesheet-engine.js.map +1 -0
  142. package/dist/utils/collapsed-chains.d.ts +8 -8
  143. package/dist/utils/collapsed-chains.d.ts.map +1 -1
  144. package/dist/utils/collapsed-chains.js +1 -6
  145. package/dist/utils/collapsed-chains.js.map +1 -1
  146. package/dist/utils/rank-grid.d.ts +30 -0
  147. package/dist/utils/rank-grid.d.ts.map +1 -0
  148. package/dist/utils/rank-grid.js +306 -0
  149. package/dist/utils/rank-grid.js.map +1 -0
  150. package/package.json +4 -8
  151. package/src/_disabled/arrow-graph-data.ts.disabled +18 -0
  152. package/src/_disabled/columnar-graph-data-builder.ts.disabled +250 -0
  153. package/src/_disabled/graph-runtime-layout.ts.disabled +29 -0
  154. package/src/core/graph-engine.ts +201 -84
  155. package/src/core/graph-layout.ts +52 -29
  156. package/src/core/interaction-manager.ts +20 -20
  157. package/src/graph/arrow-graph.ts +648 -0
  158. package/src/graph/classic-graph.ts +447 -0
  159. package/src/graph/edge.ts +7 -7
  160. package/src/graph/functions/arrow-utils.ts +72 -0
  161. package/src/graph/functions/convert-arrow-graph-to-classic-graph.ts.disabled +47 -0
  162. package/src/graph/functions/convert-plain-graph-to-arrow-graph.ts.disabled +119 -0
  163. package/src/graph/functions/create-graph-from-data.ts +16 -0
  164. package/src/graph/functions/create-plain-graph-from-data.ts.disabled +176 -0
  165. package/src/graph/graph-normalization.ts +87 -0
  166. package/src/graph/graph.ts +68 -339
  167. package/src/graph/node.ts +9 -9
  168. package/src/graph/tabular-graph.ts.disabled +761 -0
  169. package/src/graph-data/arrow-graph-data-builder.ts +165 -0
  170. package/src/graph-data/graph-data-builder.ts +7 -0
  171. package/src/graph-data/graph-data.ts +57 -0
  172. package/src/graph-data/plain-graph-data-builder.ts +132 -0
  173. package/src/index.ts +53 -13
  174. package/src/layers/common-layers/flow-path-layer/flow-path-layer.ts +1 -2
  175. package/src/layers/common-layers/grid-layer/grid-layer.ts +237 -0
  176. package/src/layers/edge-attachment-helper.ts +22 -16
  177. package/src/layers/graph-layer.ts +642 -62
  178. package/src/layouts/d3-dag/collapsable-d3-dag-layout.ts +330 -0
  179. package/src/layouts/d3-dag/d3-dag-layout.ts +166 -396
  180. package/src/layouts/d3-force/d3-force-layout.ts +52 -30
  181. package/src/layouts/experimental/force-multi-graph-layout.ts +55 -49
  182. package/src/layouts/experimental/hive-plot-layout.ts +41 -42
  183. package/src/layouts/experimental/radial-layout.ts +39 -20
  184. package/src/layouts/gpu-force/gpu-force-layout.ts +72 -70
  185. package/src/layouts/simple-layout.ts +20 -44
  186. package/src/loaders/{create-graph.ts → deprecated/create-graph.ts.disabled} +6 -6
  187. package/src/loaders/deprecated/json-classic-graph-loader.ts.disabled +33 -0
  188. package/src/loaders/{simple-json-graph-loader.ts → deprecated/simple-json-graph-loader.ts.disabled} +3 -3
  189. package/src/loaders/{table-graph-loader.ts → deprecated/table-graph-loader.ts.disabled} +8 -8
  190. package/src/loaders/dot-graph-loader.ts +860 -0
  191. package/src/loaders/json-graph-loader.ts +48 -0
  192. package/src/loaders/parsers/create-graph-data.ts.disabled +45 -0
  193. package/src/loaders/{edge-parsers.ts → parsers/edge-parsers.ts} +2 -2
  194. package/src/loaders/{node-parsers.ts → parsers/node-parsers.ts} +2 -2
  195. package/src/loaders/parsers/parse-json-graph.ts +134 -0
  196. package/src/style/graph-style-engine.ts +5 -2
  197. package/src/style/{style-engine.ts → stylesheet-engine.ts} +3 -3
  198. package/src/utils/collapsed-chains.ts +11 -17
  199. package/src/utils/rank-grid.ts +426 -0
  200. package/dist/loaders/create-graph.d.ts +0 -12
  201. package/dist/loaders/create-graph.d.ts.map +0 -1
  202. package/dist/loaders/create-graph.js +0 -38
  203. package/dist/loaders/create-graph.js.map +0 -1
  204. package/dist/loaders/edge-parsers.d.ts.map +0 -1
  205. package/dist/loaders/edge-parsers.js.map +0 -1
  206. package/dist/loaders/json-loader.d.ts +0 -7
  207. package/dist/loaders/json-loader.d.ts.map +0 -1
  208. package/dist/loaders/json-loader.js +0 -16
  209. package/dist/loaders/json-loader.js.map +0 -1
  210. package/dist/loaders/node-parsers.d.ts.map +0 -1
  211. package/dist/loaders/node-parsers.js.map +0 -1
  212. package/dist/loaders/simple-json-graph-loader.d.ts +0 -11
  213. package/dist/loaders/simple-json-graph-loader.d.ts.map +0 -1
  214. package/dist/loaders/simple-json-graph-loader.js +0 -20
  215. package/dist/loaders/simple-json-graph-loader.js.map +0 -1
  216. package/dist/loaders/table-graph-loader.d.ts +0 -16
  217. package/dist/loaders/table-graph-loader.d.ts.map +0 -1
  218. package/dist/loaders/table-graph-loader.js +0 -91
  219. package/dist/loaders/table-graph-loader.js.map +0 -1
  220. package/dist/style/style-engine.d.ts.map +0 -1
  221. package/dist/style/style-engine.js.map +0 -1
  222. package/dist/widgets/long-press-button.d.ts +0 -12
  223. package/dist/widgets/long-press-button.d.ts.map +0 -1
  224. package/dist/widgets/long-press-button.js +0 -31
  225. package/dist/widgets/long-press-button.js.map +0 -1
  226. package/dist/widgets/view-control-widget.d.ts +0 -77
  227. package/dist/widgets/view-control-widget.d.ts.map +0 -1
  228. package/dist/widgets/view-control-widget.js +0 -197
  229. package/dist/widgets/view-control-widget.js.map +0 -1
  230. package/src/loaders/json-loader.ts +0 -19
  231. package/src/widgets/long-press-button.tsx +0 -50
  232. package/src/widgets/view-control-widget.tsx +0 -339
@@ -0,0 +1,513 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { PlainGraphDataBuilder } from '../graph-data/plain-graph-data-builder';
5
+ import { Graph } from './graph';
6
+ import { ClassicGraph } from './classic-graph';
7
+ import { cloneRecord, normalizeEdgeState, normalizeNodeState } from './graph-normalization';
8
+ import { getVectorLength, getVectorValue, getColumnVector, parseDataRecord, coerceIdentifier } from './functions/arrow-utils';
9
+ export class ArrowGraph extends Graph {
10
+ nodeTable;
11
+ edgeTable;
12
+ nodeVectors;
13
+ edgeVectors;
14
+ nodeOverrides;
15
+ edgeOverrides;
16
+ nodeDataCache;
17
+ edgeDataCache;
18
+ nodeEdgeIndices;
19
+ nodeIndices = new WeakMap();
20
+ edgeIndices = new WeakMap();
21
+ nodes;
22
+ edges;
23
+ nodeMap = new Map();
24
+ _version;
25
+ constructor(props) {
26
+ super(props);
27
+ this._version = props.data.version;
28
+ this.nodeTable = props.data.nodes;
29
+ this.edgeTable = props.data.edges;
30
+ this.nodeVectors = this.extractNodeVectors();
31
+ this.edgeVectors = this.extractEdgeVectors();
32
+ this.assertRequiredColumns();
33
+ const nodeCount = getVectorLength(this.nodeVectors.id);
34
+ const edgeCount = getVectorLength(this.edgeVectors.id);
35
+ this.nodeOverrides = new Array(nodeCount);
36
+ this.edgeOverrides = new Array(edgeCount);
37
+ this.nodeDataCache = new Array(nodeCount).fill(null);
38
+ this.edgeDataCache = new Array(edgeCount).fill(null);
39
+ this.nodeEdgeIndices = Array.from({ length: nodeCount }, () => []);
40
+ this.nodes = this.initializeNodes(nodeCount);
41
+ this.edges = this.initializeEdges(edgeCount);
42
+ this.registerNodes();
43
+ this.registerEdges();
44
+ }
45
+ get version() {
46
+ return this._version;
47
+ }
48
+ getNodes() {
49
+ return this.nodes;
50
+ }
51
+ getEdges() {
52
+ return this.edges;
53
+ }
54
+ findNode(id) {
55
+ return this.nodeMap.get(id) ?? this.nodeMap.get(String(id));
56
+ }
57
+ findNodeById(id) {
58
+ return this.findNode(id);
59
+ }
60
+ destroy() {
61
+ this.nodeMap.clear();
62
+ this.nodeIndices = new WeakMap();
63
+ this.edgeIndices = new WeakMap();
64
+ this.nodeEdgeIndices.length = 0;
65
+ this.nodes.length = 0;
66
+ this.edges.length = 0;
67
+ }
68
+ getNodeIdByIndex(index) {
69
+ const value = getVectorValue(this.nodeVectors.id, index);
70
+ if (typeof value === 'undefined') {
71
+ throw new Error('Arrow graph requires an id column for nodes.');
72
+ }
73
+ return coerceIdentifier(value);
74
+ }
75
+ getNodeStateByIndex(index) {
76
+ const override = this.nodeOverrides[index]?.state;
77
+ if (override) {
78
+ return override;
79
+ }
80
+ const value = getVectorValue(this.nodeVectors.state, index);
81
+ return normalizeNodeState(typeof value === 'string' ? value : undefined);
82
+ }
83
+ setNodeStateByIndex(index, state) {
84
+ const override = (this.nodeOverrides[index] ??= {});
85
+ override.state = state;
86
+ }
87
+ isNodeSelectableByIndex(index) {
88
+ const override = this.nodeOverrides[index]?.selectable;
89
+ if (typeof override === 'boolean') {
90
+ return override;
91
+ }
92
+ const value = getVectorValue(this.nodeVectors.selectable, index);
93
+ return coerceBoolean(value, false);
94
+ }
95
+ shouldHighlightConnectedEdgesByIndex(index) {
96
+ const override = this.nodeOverrides[index]?.highlightConnectedEdges;
97
+ if (typeof override === 'boolean') {
98
+ return override;
99
+ }
100
+ const value = getVectorValue(this.nodeVectors.highlightConnectedEdges, index);
101
+ return coerceBoolean(value, false);
102
+ }
103
+ getNodeDegreeByIndex(index) {
104
+ return this.nodeEdgeIndices[index]?.length ?? 0;
105
+ }
106
+ getNodeInDegreeByIndex(index) {
107
+ const id = this.getNodeIdByIndex(index);
108
+ return (this.nodeEdgeIndices[index] ?? []).reduce((count, edgeIndex) => {
109
+ if (this.getEdgeTargetIdByIndex(edgeIndex) === id && this.isEdgeDirectedByIndex(edgeIndex)) {
110
+ return count + 1;
111
+ }
112
+ return count;
113
+ }, 0);
114
+ }
115
+ getNodeOutDegreeByIndex(index) {
116
+ const id = this.getNodeIdByIndex(index);
117
+ return (this.nodeEdgeIndices[index] ?? []).reduce((count, edgeIndex) => {
118
+ if (this.getEdgeSourceIdByIndex(edgeIndex) === id && this.isEdgeDirectedByIndex(edgeIndex)) {
119
+ return count + 1;
120
+ }
121
+ return count;
122
+ }, 0);
123
+ }
124
+ getNodeSiblingIdsByIndex(index) {
125
+ const id = this.getNodeIdByIndex(index);
126
+ const edges = this.nodeEdgeIndices[index] ?? [];
127
+ const siblings = [];
128
+ for (const edgeIndex of edges) {
129
+ const source = this.getEdgeSourceIdByIndex(edgeIndex);
130
+ const target = this.getEdgeTargetIdByIndex(edgeIndex);
131
+ if (source === id) {
132
+ siblings.push(target);
133
+ }
134
+ else {
135
+ siblings.push(source);
136
+ }
137
+ }
138
+ return siblings;
139
+ }
140
+ getNodeConnectedEdgesByIndex(index) {
141
+ return (this.nodeEdgeIndices[index] ?? [])
142
+ .map((edgeIndex) => this.edges[edgeIndex])
143
+ .filter((edge) => Boolean(edge));
144
+ }
145
+ setNodeDataByIndex(index, data) {
146
+ const override = (this.nodeOverrides[index] ??= {});
147
+ override.data = { ...data };
148
+ this.nodeDataCache[index] = { ...data };
149
+ }
150
+ setNodeDataPropertyByIndex(index, key, value) {
151
+ const data = this.getNodeDataInternal(index);
152
+ data[key] = value;
153
+ const override = (this.nodeOverrides[index] ??= {});
154
+ override.data = { ...data };
155
+ this.nodeDataCache[index] = { ...data };
156
+ }
157
+ getNodeDataByIndex(index) {
158
+ return cloneRecord(this.getNodeDataInternal(index));
159
+ }
160
+ getNodePropertyValueByIndex(index, key) {
161
+ const data = this.getNodeDataInternal(index);
162
+ if (key in data) {
163
+ return data[key];
164
+ }
165
+ const accessors = this.nodeVectors.data;
166
+ if (!accessors) {
167
+ return undefined;
168
+ }
169
+ return undefined;
170
+ }
171
+ registerEdgeForNode(node, edge) {
172
+ const nodeIndex = this.nodeIndices.get(node);
173
+ const edgeIndex = this.edgeIndices.get(edge);
174
+ if (nodeIndex === undefined || edgeIndex === undefined) {
175
+ return;
176
+ }
177
+ const edges = this.nodeEdgeIndices[nodeIndex];
178
+ if (!edges.includes(edgeIndex)) {
179
+ edges.push(edgeIndex);
180
+ }
181
+ }
182
+ unregisterEdgeForNode(node, edge) {
183
+ const nodeIndex = this.nodeIndices.get(node);
184
+ const edgeIndex = this.edgeIndices.get(edge);
185
+ if (nodeIndex === undefined || edgeIndex === undefined) {
186
+ return;
187
+ }
188
+ const edges = this.nodeEdgeIndices[nodeIndex];
189
+ const next = edges.filter((candidate) => candidate !== edgeIndex);
190
+ this.nodeEdgeIndices[nodeIndex] = next;
191
+ }
192
+ getEdgeIdByIndex(index) {
193
+ const value = getVectorValue(this.edgeVectors.id, index);
194
+ if (typeof value === 'undefined') {
195
+ throw new Error('Arrow graph requires an id column for edges.');
196
+ }
197
+ return coerceIdentifier(value);
198
+ }
199
+ getEdgeStateByIndex(index) {
200
+ const override = this.edgeOverrides[index]?.state;
201
+ if (override) {
202
+ return override;
203
+ }
204
+ const value = getVectorValue(this.edgeVectors.state, index);
205
+ return normalizeEdgeState(typeof value === 'string' ? value : undefined);
206
+ }
207
+ setEdgeStateByIndex(index, state) {
208
+ const override = (this.edgeOverrides[index] ??= {});
209
+ override.state = state;
210
+ }
211
+ isEdgeDirectedByIndex(index) {
212
+ const override = this.edgeOverrides[index]?.directed;
213
+ if (typeof override === 'boolean') {
214
+ return override;
215
+ }
216
+ const value = getVectorValue(this.edgeVectors.directed, index);
217
+ return coerceBoolean(value, false);
218
+ }
219
+ getEdgeSourceIdByIndex(index) {
220
+ const value = getVectorValue(this.edgeVectors.sourceId, index);
221
+ if (typeof value === 'undefined') {
222
+ throw new Error('Arrow graph requires a sourceId column.');
223
+ }
224
+ return coerceIdentifier(value);
225
+ }
226
+ getEdgeTargetIdByIndex(index) {
227
+ const value = getVectorValue(this.edgeVectors.targetId, index);
228
+ if (typeof value === 'undefined') {
229
+ throw new Error('Arrow graph requires a targetId column.');
230
+ }
231
+ return coerceIdentifier(value);
232
+ }
233
+ getEdgePropertyValueByIndex(index, key) {
234
+ const data = this.getEdgeDataInternal(index);
235
+ return data[key];
236
+ }
237
+ setEdgeDataByIndex(index, data) {
238
+ const override = (this.edgeOverrides[index] ??= {});
239
+ override.data = { ...data };
240
+ this.edgeDataCache[index] = { ...data };
241
+ }
242
+ setEdgeDataPropertyByIndex(index, key, value) {
243
+ const data = this.getEdgeDataInternal(index);
244
+ data[key] = value;
245
+ const override = (this.edgeOverrides[index] ??= {});
246
+ override.data = { ...data };
247
+ this.edgeDataCache[index] = { ...data };
248
+ }
249
+ getEdgeDataByIndex(index) {
250
+ return cloneRecord(this.getEdgeDataInternal(index));
251
+ }
252
+ getEdgeConnectedNodesByIndex(index) {
253
+ return this.edges[index]?.getConnectedNodes() ?? [];
254
+ }
255
+ toClassicGraph() {
256
+ const builder = new PlainGraphDataBuilder({ version: this._version });
257
+ const nodeCount = getVectorLength(this.nodeVectors.id);
258
+ for (let index = 0; index < nodeCount; index++) {
259
+ builder.addNode({
260
+ id: this.getNodeIdByIndex(index),
261
+ state: this.getNodeStateByIndex(index),
262
+ selectable: this.isNodeSelectableByIndex(index),
263
+ highlightConnectedEdges: this.shouldHighlightConnectedEdgesByIndex(index),
264
+ attributes: this.getNodeDataByIndex(index)
265
+ });
266
+ }
267
+ const edgeCount = getVectorLength(this.edgeVectors.id);
268
+ for (let index = 0; index < edgeCount; index++) {
269
+ builder.addEdge({
270
+ id: this.getEdgeIdByIndex(index),
271
+ sourceId: this.getEdgeSourceIdByIndex(index),
272
+ targetId: this.getEdgeTargetIdByIndex(index),
273
+ directed: this.isEdgeDirectedByIndex(index),
274
+ state: this.getEdgeStateByIndex(index),
275
+ attributes: this.getEdgeDataByIndex(index)
276
+ });
277
+ }
278
+ return new ClassicGraph({ data: builder.build() });
279
+ }
280
+ getNodeDataInternal(index) {
281
+ const override = this.nodeOverrides[index]?.data;
282
+ if (override) {
283
+ return override;
284
+ }
285
+ const cached = this.nodeDataCache[index];
286
+ if (cached) {
287
+ return cached;
288
+ }
289
+ const value = getVectorValue(this.nodeVectors.data, index);
290
+ const data = parseDataRecord(value);
291
+ this.nodeDataCache[index] = data;
292
+ return data;
293
+ }
294
+ getEdgeDataInternal(index) {
295
+ const override = this.edgeOverrides[index]?.data;
296
+ if (override) {
297
+ return override;
298
+ }
299
+ const cached = this.edgeDataCache[index];
300
+ if (cached) {
301
+ return cached;
302
+ }
303
+ const value = getVectorValue(this.edgeVectors.data, index);
304
+ const data = parseDataRecord(value);
305
+ this.edgeDataCache[index] = data;
306
+ return data;
307
+ }
308
+ extractNodeVectors() {
309
+ return {
310
+ id: getColumnVector(this.nodeTable, 'id'),
311
+ state: getColumnVector(this.nodeTable, 'state'),
312
+ selectable: getColumnVector(this.nodeTable, 'selectable'),
313
+ highlightConnectedEdges: getColumnVector(this.nodeTable, 'highlightConnectedEdges'),
314
+ data: getColumnVector(this.nodeTable, 'data')
315
+ };
316
+ }
317
+ extractEdgeVectors() {
318
+ return {
319
+ id: getColumnVector(this.edgeTable, 'id'),
320
+ sourceId: getColumnVector(this.edgeTable, 'sourceId'),
321
+ targetId: getColumnVector(this.edgeTable, 'targetId'),
322
+ directed: getColumnVector(this.edgeTable, 'directed'),
323
+ state: getColumnVector(this.edgeTable, 'state'),
324
+ data: getColumnVector(this.edgeTable, 'data')
325
+ };
326
+ }
327
+ assertRequiredColumns() {
328
+ if (!this.nodeVectors.id) {
329
+ throw new Error('Arrow graph requires an "id" column for nodes.');
330
+ }
331
+ if (!this.edgeVectors.id || !this.edgeVectors.sourceId || !this.edgeVectors.targetId) {
332
+ throw new Error('Arrow graph requires "id", "sourceId", and "targetId" columns for edges.');
333
+ }
334
+ }
335
+ initializeNodes(count) {
336
+ return Array.from({ length: count }, (_, index) => new ArrowGraphNode(this, index));
337
+ }
338
+ initializeEdges(count) {
339
+ return Array.from({ length: count }, (_, index) => new ArrowGraphEdge(this, index));
340
+ }
341
+ registerNodes() {
342
+ for (let index = 0; index < this.nodes.length; index++) {
343
+ const node = this.nodes[index];
344
+ const id = this.getNodeIdByIndex(index);
345
+ registerNodeVariants(this.nodeMap, id, node);
346
+ this.nodeIndices.set(node, index);
347
+ }
348
+ }
349
+ registerEdges() {
350
+ for (let index = 0; index < this.edges.length; index++) {
351
+ const edge = this.edges[index];
352
+ this.edgeIndices.set(edge, index);
353
+ const source = this.findNodeById(this.getEdgeSourceIdByIndex(index));
354
+ if (source) {
355
+ edge.addNode(source);
356
+ }
357
+ const target = this.findNodeById(this.getEdgeTargetIdByIndex(index));
358
+ if (target) {
359
+ edge.addNode(target);
360
+ }
361
+ }
362
+ }
363
+ }
364
+ class ArrowGraphNode {
365
+ graph;
366
+ index;
367
+ isNode = true;
368
+ get id() {
369
+ return this.getId();
370
+ }
371
+ constructor(graph, index) {
372
+ this.graph = graph;
373
+ this.index = index;
374
+ }
375
+ getId() {
376
+ return this.graph.getNodeIdByIndex(this.index);
377
+ }
378
+ getDegree() {
379
+ return this.graph.getNodeDegreeByIndex(this.index);
380
+ }
381
+ getInDegree() {
382
+ return this.graph.getNodeInDegreeByIndex(this.index);
383
+ }
384
+ getOutDegree() {
385
+ return this.graph.getNodeOutDegreeByIndex(this.index);
386
+ }
387
+ getSiblingIds() {
388
+ return this.graph.getNodeSiblingIdsByIndex(this.index);
389
+ }
390
+ getConnectedEdges() {
391
+ return this.graph.getNodeConnectedEdgesByIndex(this.index);
392
+ }
393
+ addConnectedEdges(edge) {
394
+ const edges = Array.isArray(edge) ? edge : [edge];
395
+ for (const candidate of edges) {
396
+ candidate.addNode(this);
397
+ }
398
+ }
399
+ removeConnectedEdges(edge) {
400
+ const edges = Array.isArray(edge) ? edge : [edge];
401
+ for (const candidate of edges) {
402
+ candidate.removeNode(this);
403
+ }
404
+ }
405
+ clearConnectedEdges() {
406
+ const edges = this.getConnectedEdges();
407
+ for (const edge of edges) {
408
+ edge.removeNode(this);
409
+ }
410
+ }
411
+ getPropertyValue(key) {
412
+ return this.graph.getNodePropertyValueByIndex(this.index, key);
413
+ }
414
+ setData(data) {
415
+ this.graph.setNodeDataByIndex(this.index, data);
416
+ }
417
+ setDataProperty(key, value) {
418
+ this.graph.setNodeDataPropertyByIndex(this.index, key, value);
419
+ }
420
+ setState(state) {
421
+ this.graph.setNodeStateByIndex(this.index, state);
422
+ }
423
+ getState() {
424
+ return this.graph.getNodeStateByIndex(this.index);
425
+ }
426
+ isSelectable() {
427
+ return this.graph.isNodeSelectableByIndex(this.index);
428
+ }
429
+ shouldHighlightConnectedEdges() {
430
+ return this.graph.shouldHighlightConnectedEdgesByIndex(this.index);
431
+ }
432
+ }
433
+ class ArrowGraphEdge {
434
+ graph;
435
+ index;
436
+ isEdge = true;
437
+ connectedNodes = new Map();
438
+ get id() {
439
+ return this.getId();
440
+ }
441
+ constructor(graph, index) {
442
+ this.graph = graph;
443
+ this.index = index;
444
+ }
445
+ getId() {
446
+ return this.graph.getEdgeIdByIndex(this.index);
447
+ }
448
+ isDirected() {
449
+ return this.graph.isEdgeDirectedByIndex(this.index);
450
+ }
451
+ getSourceNodeId() {
452
+ return this.graph.getEdgeSourceIdByIndex(this.index);
453
+ }
454
+ getTargetNodeId() {
455
+ return this.graph.getEdgeTargetIdByIndex(this.index);
456
+ }
457
+ getConnectedNodes() {
458
+ return [...this.connectedNodes.values()];
459
+ }
460
+ addNode(node) {
461
+ this.connectedNodes.set(node.getId(), node);
462
+ this.graph.registerEdgeForNode(node, this);
463
+ }
464
+ removeNode(node) {
465
+ this.connectedNodes.delete(node.getId());
466
+ this.graph.unregisterEdgeForNode(node, this);
467
+ }
468
+ getPropertyValue(key) {
469
+ return this.graph.getEdgePropertyValueByIndex(this.index, key);
470
+ }
471
+ setData(data) {
472
+ this.graph.setEdgeDataByIndex(this.index, data);
473
+ }
474
+ setDataProperty(key, value) {
475
+ this.graph.setEdgeDataPropertyByIndex(this.index, key, value);
476
+ }
477
+ setState(state) {
478
+ this.graph.setEdgeStateByIndex(this.index, state);
479
+ }
480
+ getState() {
481
+ return this.graph.getEdgeStateByIndex(this.index);
482
+ }
483
+ }
484
+ function registerNodeVariants(map, id, node) {
485
+ map.set(id, node);
486
+ if (typeof id === 'string') {
487
+ const numeric = Number(id);
488
+ if (!Number.isNaN(numeric) && id.trim() !== '') {
489
+ map.set(numeric, node);
490
+ }
491
+ }
492
+ else {
493
+ map.set(String(id), node);
494
+ }
495
+ }
496
+ function coerceBoolean(value, fallback) {
497
+ if (typeof value === 'boolean') {
498
+ return value;
499
+ }
500
+ if (typeof value === 'number') {
501
+ return value !== 0;
502
+ }
503
+ if (typeof value === 'string') {
504
+ const normalized = value.trim().toLowerCase();
505
+ if (normalized === 'true' || normalized === '1') {
506
+ return true;
507
+ }
508
+ if (normalized === 'false' || normalized === '0' || normalized === '') {
509
+ return false;
510
+ }
511
+ }
512
+ return fallback;
513
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow-graph.js","sourceRoot":"","sources":["../../src/graph/arrow-graph.ts"],"names":[],"mappings":"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"}