@antv/layout 1.0.0-alpha.16 → 1.0.0-alpha.17
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.
- package/dist/6b692814699bee26e220.worker.js +2 -0
- package/dist/6b692814699bee26e220.worker.js.map +1 -0
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/esm/6b692814699bee26e220.worker.js +2 -0
- package/esm/6b692814699bee26e220.worker.js.map +1 -0
- package/esm/index.esm.js +1 -1
- package/esm/index.esm.js.map +1 -1
- package/lib/d3Force/index.d.ts +0 -1
- package/lib/fruchterman.d.ts +0 -1
- package/lib/types.d.ts +11 -15
- package/lib/util/common.d.ts +0 -1
- package/package.json +1 -1
- package/dist/0ee54f2e2414f719b33e.worker.js +0 -2
- package/dist/0ee54f2e2414f719b33e.worker.js.map +0 -1
- package/esm/0ee54f2e2414f719b33e.worker.js +0 -2
- package/esm/0ee54f2e2414f719b33e.worker.js.map +0 -1
package/lib/d3Force/index.d.ts
CHANGED
|
@@ -38,7 +38,6 @@ export declare class D3ForceLayout implements LayoutWithIterations<D3ForceLayout
|
|
|
38
38
|
stop(): void;
|
|
39
39
|
/**
|
|
40
40
|
* Manually steps the simulation by the specified number of iterations.
|
|
41
|
-
* When finished it will trigger `onLayoutEnd` callback.
|
|
42
41
|
* @see https://github.com/d3/d3-force#simulation_tick
|
|
43
42
|
*/
|
|
44
43
|
tick(iterations?: number): {
|
package/lib/fruchterman.d.ts
CHANGED
|
@@ -41,7 +41,6 @@ export declare class FruchtermanLayout implements LayoutWithIterations<Fruchterm
|
|
|
41
41
|
stop(): void;
|
|
42
42
|
/**
|
|
43
43
|
* Manually steps the simulation by the specified number of iterations.
|
|
44
|
-
* When finished it will trigger `onLayoutEnd` callback.
|
|
45
44
|
* @see https://github.com/d3/d3-force#simulation_tick
|
|
46
45
|
*/
|
|
47
46
|
tick(iterations?: number): LayoutMapping;
|
package/lib/types.d.ts
CHANGED
|
@@ -77,10 +77,7 @@ export interface LayoutSupervisor {
|
|
|
77
77
|
kill(): void;
|
|
78
78
|
isRunning(): boolean;
|
|
79
79
|
}
|
|
80
|
-
interface
|
|
81
|
-
onLayoutEnd?: (data: LayoutMapping) => void;
|
|
82
|
-
}
|
|
83
|
-
export interface CircularLayoutOptions extends CommonOptions {
|
|
80
|
+
export interface CircularLayoutOptions {
|
|
84
81
|
center?: PointTuple;
|
|
85
82
|
width?: number;
|
|
86
83
|
height?: number;
|
|
@@ -96,7 +93,7 @@ export interface CircularLayoutOptions extends CommonOptions {
|
|
|
96
93
|
nodeSpacing?: ((node?: Node) => number) | number;
|
|
97
94
|
nodeSize?: number | number[];
|
|
98
95
|
}
|
|
99
|
-
export interface GridLayoutOptions
|
|
96
|
+
export interface GridLayoutOptions {
|
|
100
97
|
width?: number;
|
|
101
98
|
height?: number;
|
|
102
99
|
begin?: PointTuple;
|
|
@@ -113,16 +110,16 @@ export interface GridLayoutOptions extends CommonOptions {
|
|
|
113
110
|
};
|
|
114
111
|
nodeSpacing?: ((node?: Node) => number) | number;
|
|
115
112
|
}
|
|
116
|
-
export interface RandomLayoutOptions
|
|
113
|
+
export interface RandomLayoutOptions {
|
|
117
114
|
center?: PointTuple;
|
|
118
115
|
width?: number;
|
|
119
116
|
height?: number;
|
|
120
117
|
}
|
|
121
|
-
export interface MDSLayoutOptions
|
|
118
|
+
export interface MDSLayoutOptions {
|
|
122
119
|
center?: PointTuple;
|
|
123
120
|
linkDistance?: number;
|
|
124
121
|
}
|
|
125
|
-
export interface ConcentricLayoutOptions
|
|
122
|
+
export interface ConcentricLayoutOptions {
|
|
126
123
|
center?: PointTuple;
|
|
127
124
|
preventOverlap?: boolean;
|
|
128
125
|
nodeSize?: number | PointTuple;
|
|
@@ -136,7 +133,7 @@ export interface ConcentricLayoutOptions extends CommonOptions {
|
|
|
136
133
|
height?: number;
|
|
137
134
|
nodeSpacing?: number | number[] | ((node?: Node) => number);
|
|
138
135
|
}
|
|
139
|
-
export interface RadialLayoutOptions
|
|
136
|
+
export interface RadialLayoutOptions {
|
|
140
137
|
center?: PointTuple;
|
|
141
138
|
width?: number;
|
|
142
139
|
height?: number;
|
|
@@ -152,7 +149,7 @@ export interface RadialLayoutOptions extends CommonOptions {
|
|
|
152
149
|
sortBy?: string;
|
|
153
150
|
sortStrength?: number;
|
|
154
151
|
}
|
|
155
|
-
export interface DagreLayoutOptions
|
|
152
|
+
export interface DagreLayoutOptions {
|
|
156
153
|
rankdir?: "TB" | "BT" | "LR" | "RL";
|
|
157
154
|
align?: "UL" | "UR" | "DL" | "DR";
|
|
158
155
|
begin?: PointTuple;
|
|
@@ -172,7 +169,7 @@ export interface DagreLayoutOptions extends CommonOptions {
|
|
|
172
169
|
nodesepFunc?: (d?: Node) => number;
|
|
173
170
|
ranksepFunc?: (d?: Node) => number;
|
|
174
171
|
}
|
|
175
|
-
export interface D3ForceLayoutOptions
|
|
172
|
+
export interface D3ForceLayoutOptions {
|
|
176
173
|
center?: PointTuple;
|
|
177
174
|
linkDistance?: number | ((edge?: Edge) => number);
|
|
178
175
|
edgeStrength?: number | ((edge?: Edge) => number);
|
|
@@ -207,7 +204,7 @@ export interface CentripetalOptions {
|
|
|
207
204
|
centerStrength?: number;
|
|
208
205
|
};
|
|
209
206
|
}
|
|
210
|
-
export interface ForceLayoutOptions
|
|
207
|
+
export interface ForceLayoutOptions {
|
|
211
208
|
center?: PointTuple;
|
|
212
209
|
width?: number;
|
|
213
210
|
height?: number;
|
|
@@ -242,7 +239,7 @@ export interface ForceLayoutOptions extends CommonOptions {
|
|
|
242
239
|
iterations: number;
|
|
243
240
|
}) => void;
|
|
244
241
|
}
|
|
245
|
-
export interface ForceAtlas2LayoutOptions
|
|
242
|
+
export interface ForceAtlas2LayoutOptions {
|
|
246
243
|
center?: PointTuple;
|
|
247
244
|
width?: number;
|
|
248
245
|
height?: number;
|
|
@@ -260,7 +257,7 @@ export interface ForceAtlas2LayoutOptions extends CommonOptions {
|
|
|
260
257
|
nodeSize?: number | number[] | ((node?: Node) => number);
|
|
261
258
|
onTick?: (data: LayoutMapping) => void;
|
|
262
259
|
}
|
|
263
|
-
export interface FruchtermanLayoutOptions
|
|
260
|
+
export interface FruchtermanLayoutOptions {
|
|
264
261
|
center?: PointTuple;
|
|
265
262
|
maxIteration?: number;
|
|
266
263
|
width?: number;
|
|
@@ -272,4 +269,3 @@ export interface FruchtermanLayoutOptions extends CommonOptions {
|
|
|
272
269
|
nodeClusterBy?: string;
|
|
273
270
|
onTick?: (data: LayoutMapping) => void;
|
|
274
271
|
}
|
|
275
|
-
export {};
|
package/lib/util/common.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import { PointTuple, Graph } from "../types";
|
|
|
4
4
|
* @param graph original graph
|
|
5
5
|
* @param assign whether assign result to original graph
|
|
6
6
|
* @param center the layout center
|
|
7
|
-
* @param onLayoutEnd callback for layout end
|
|
8
7
|
* @returns
|
|
9
8
|
*/
|
|
10
9
|
export declare const handleSingleNodeGraph: (graph: Graph, assign: boolean, center: PointTuple) => {
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{calculateLayout:()=>Be,stopLayout:()=>Ue});var r=function(){return r=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},r.apply(this,arguments)};function n(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(t);o<n.length;o++)e.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(t,n[o])&&(r[n[o]]=t[n[o]])}return r}function o(t,e,r,n){return new(r||(r=Promise))((function(o,i){function s(t){try{h(n.next(t))}catch(t){i(t)}}function a(t){try{h(n.throw(t))}catch(t){i(t)}}function h(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(s,a)}h((n=n.apply(t,e||[])).next())}))}function i(t,e){var r,n,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(h){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){s.label=a[1];break}if(6===a[0]&&s.label<o[1]){s.label=o[1],o=a;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(a);break}o[2]&&s.ops.pop(),s.trys.pop();continue}a=e.call(t,s)}catch(t){a=[6,t],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,h])}}}function s(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,i=r.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return s}function a(t,e,r){if(r||2===arguments.length)for(var n,o=0,i=e.length;o<i;o++)!n&&o in e||(n||(n=Array.prototype.slice.call(e,0,o)),n[o]=e[o]);return t.concat(n||Array.prototype.slice.call(e))}Object.create,Object.create;const h=function(){function t(){this._events={}}return t.prototype.on=function(t,e,r){return this._events[t]||(this._events[t]=[]),this._events[t].push({callback:e,once:!!r}),this},t.prototype.once=function(t,e){return this.on(t,e,!0)},t.prototype.emit=function(t){for(var e=this,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var o=this._events[t]||[],i=this._events["*"]||[],s=function(n){for(var o=n.length,i=0;i<o;i++)if(n[i]){var s=n[i],a=s.callback;s.once&&(n.splice(i,1),0===n.length&&delete e._events[t],o--,i--),a.apply(e,r)}};s(o),s(i)},t.prototype.off=function(t,e){if(t)if(e){for(var r=this._events[t]||[],n=r.length,o=0;o<n;o++)r[o].callback===e&&(r.splice(o,1),n--,o--);0===r.length&&delete this._events[t]}else delete this._events[t];else this._events={};return this},t.prototype.getEvents=function(){return this._events},t}();function u(t,e,r,n){for(;t.length;){const o=t.shift();if(r(o))return!0;e.add(o.id),n(o.id).forEach((r=>{e.has(r.id)||(e.add(r.id),t.push(r))}))}return!1}function c(t,e,r,n){if(r(t))return!0;e.add(t.id);for(const o of n(t.id))if(!e.has(o.id)&&c(o,e,r,n))return!0;return!1}class l extends h{nodeMap=new Map;edgeMap=new Map;inEdgesMap=new Map;outEdgesMap=new Map;bothEdgesMap=new Map;treeIndices=new Map;changes=[];batchCount=0;onChanged=()=>{};constructor(t){super(),t&&(t.nodes&&this.addNodes(t.nodes),t.edges&&this.addEdges(t.edges),t.tree&&this.addTree(t.tree),t.onChanged&&(this.onChanged=t.onChanged))}batch=t=>{this.batchCount+=1,t(),this.batchCount-=1,this.batchCount||this.commit()};commit(){const t=this.changes;this.changes=[];const e={graph:this,changes:t};this.emit("changed",e),this.onChanged(e)}reduceChanges(t){let e=[];return t.forEach((t=>{switch(t.type){case"NodeRemoved":{let r=!1;e=e.filter((e=>{if("NodeAdded"===e.type){const n=e.value.id===t.value.id;return n&&(r=!0),!n}return"NodeDataUpdated"===e.type?e.id!==t.value.id:"TreeStructureChanged"!==e.type||e.nodeId!==t.value.id})),r||e.push(t);break}case"EdgeRemoved":{let r=!1;e=e.filter((e=>{if("EdgeAdded"===e.type){const n=e.value.id===t.value.id;return n&&(r=!0),!n}return"EdgeDataUpdated"!==e.type&&"EdgeUpdated"!==e.type||e.id!==t.value.id})),r||e.push(t);break}case"NodeDataUpdated":case"EdgeDataUpdated":case"EdgeUpdated":{const r=e.find((e=>e.type===t.type&&e.id===t.id&&e.propertyName===t.propertyName));r?r.newValue=t.newValue:e.push(t);break}case"TreeStructureDetached":e=e.filter((e=>"TreeStructureAttached"===e.type?e.treeKey!==t.treeKey:"TreeStructureChanged"!==e.type||e.treeKey!==t.treeKey)),e.push(t);break;case"TreeStructureChanged":{const r=e.find((e=>"TreeStructureChanged"===e.type&&e.treeKey===t.treeKey&&e.nodeId===t.nodeId));r?r.newParentId=t.newParentId:e.push(t);break}default:e.push(t)}})),e}checkNodeExistence(t){this.getNode(t)}hasNode(t){return this.nodeMap.has(t)}areNeighbors(t,e){return this.getNeighbors(e).some((e=>e.id===t))}getNode(t){const e=this.nodeMap.get(t);if(!e)throw new Error("Node not found for id: "+t);return e}getRelatedEdges(t,e){if(this.checkNodeExistence(t),"in"===e){const e=this.inEdgesMap.get(t);return Array.from(e)}if("out"===e){const e=this.outEdgesMap.get(t);return Array.from(e)}{const e=this.bothEdgesMap.get(t);return Array.from(e)}}getDegree(t,e){return this.getRelatedEdges(t,e).length}getSuccessors(t){const e=this.getRelatedEdges(t,"out").map((t=>this.getNode(t.target)));return Array.from(new Set(e))}getPredecessors(t){const e=this.getRelatedEdges(t,"in").map((t=>this.getNode(t.source)));return Array.from(new Set(e))}getNeighbors(t){const e=this.getPredecessors(t),r=this.getSuccessors(t);return Array.from(new Set([...e,...r]))}doAddNode(t){if(this.hasNode(t.id))throw new Error("Node already exists: "+t.id);this.nodeMap.set(t.id,t),this.inEdgesMap.set(t.id,new Set),this.outEdgesMap.set(t.id,new Set),this.bothEdgesMap.set(t.id,new Set),this.treeIndices.forEach((e=>{e.childrenMap.set(t.id,new Set)})),this.changes.push({type:"NodeAdded",value:t})}addNodes(t){this.batch((()=>{for(const e of t)this.doAddNode(e)}))}addNode(t){this.addNodes([t])}doRemoveNode(t){const e=this.getNode(t);this.bothEdgesMap.get(t)?.forEach((t=>this.doRemoveEdge(t.id))),this.nodeMap.delete(t),this.treeIndices.forEach((e=>{e.childrenMap.get(t)?.forEach((t=>{e.parentMap.delete(t.id)})),e.parentMap.delete(t),e.childrenMap.delete(t)})),this.changes.push({type:"NodeRemoved",value:e})}removeNodes(t){this.batch((()=>{t.forEach((t=>this.doRemoveNode(t)))}))}removeNode(t){this.removeNodes([t])}updateNodeDataProperty(t,e,r){const n=this.getNode(t);this.batch((()=>{const o=n.data[e],i=r;n.data[e]=i,this.changes.push({type:"NodeDataUpdated",id:t,propertyName:e,oldValue:o,newValue:i})}))}mergeNodeData(t,e){this.batch((()=>{Object.entries(e).forEach((([e,r])=>{this.updateNodeDataProperty(t,e,r)}))}))}updateNodeData(...t){const e=t[0],r=this.getNode(e);if("string"==typeof t[1])return void this.updateNodeDataProperty(e,t[1],t[2]);let n;if("function"==typeof t[1]){const e=t[1];n=e(r.data)}else"object"==typeof t[1]&&(n=t[1]);this.batch((()=>{const t=r.data,o=n;r.data=n,this.changes.push({type:"NodeDataUpdated",id:e,oldValue:t,newValue:o})}))}checkEdgeExistence(t){if(!this.hasEdge(t))throw new Error("Edge not found for id: "+t)}hasEdge(t){return this.edgeMap.has(t)}getEdge(t){return this.checkEdgeExistence(t),this.edgeMap.get(t)}getEdgeDetail(t){const e=this.getEdge(t);return{edge:e,source:this.getNode(e.source),target:this.getNode(e.target)}}doAddEdge(t){if(this.hasEdge(t.id))throw new Error("Edge already exists: "+t.id);this.checkNodeExistence(t.source),this.checkNodeExistence(t.target),this.edgeMap.set(t.id,t);const e=this.inEdgesMap.get(t.target),r=this.outEdgesMap.get(t.source),n=this.bothEdgesMap.get(t.source),o=this.bothEdgesMap.get(t.target);e.add(t),r.add(t),n.add(t),o.add(t),this.changes.push({type:"EdgeAdded",value:t})}addEdges(t){this.batch((()=>{for(const e of t)this.doAddEdge(e)}))}addEdge(t){this.addEdges([t])}doRemoveEdge(t){const e=this.getEdge(t),r=this.outEdgesMap.get(e.source),n=this.inEdgesMap.get(e.target),o=this.bothEdgesMap.get(e.source),i=this.bothEdgesMap.get(e.target);r.delete(e),n.delete(e),o.delete(e),i.delete(e),this.edgeMap.delete(t),this.changes.push({type:"EdgeRemoved",value:e})}removeEdges(t){this.batch((()=>{t.forEach((t=>this.doRemoveEdge(t)))}))}removeEdge(t){this.removeEdges([t])}updateEdgeSource(t,e){const r=this.getEdge(t);this.checkNodeExistence(e);const n=r.source,o=e;this.outEdgesMap.get(n).delete(r),this.bothEdgesMap.get(n).delete(r),this.outEdgesMap.get(o).add(r),this.bothEdgesMap.get(o).add(r),r.source=e,this.batch((()=>{this.changes.push({type:"EdgeUpdated",id:t,propertyName:"source",oldValue:n,newValue:o})}))}updateEdgeTarget(t,e){const r=this.getEdge(t);this.checkNodeExistence(e);const n=r.target,o=e;this.inEdgesMap.get(n).delete(r),this.bothEdgesMap.get(n).delete(r),this.inEdgesMap.get(o).add(r),this.bothEdgesMap.get(o).add(r),r.target=e,this.batch((()=>{this.changes.push({type:"EdgeUpdated",id:t,propertyName:"target",oldValue:n,newValue:o})}))}updateEdgeDataProperty(t,e,r){const n=this.getEdge(t);this.batch((()=>{const o=n.data[e],i=r;n.data[e]=i,this.changes.push({type:"EdgeDataUpdated",id:t,propertyName:e,oldValue:o,newValue:i})}))}updateEdgeData(...t){const e=t[0],r=this.getEdge(e);if("string"==typeof t[1])return void this.updateEdgeDataProperty(e,t[1],t[2]);let n;if("function"==typeof t[1]){const e=t[1];n=e(r.data)}else"object"==typeof t[1]&&(n=t[1]);this.batch((()=>{const t=r.data,o=n;r.data=n,this.changes.push({type:"EdgeDataUpdated",id:e,oldValue:t,newValue:o})}))}mergeEdgeData(t,e){this.batch((()=>{Object.entries(e).forEach((([e,r])=>{this.updateEdgeDataProperty(t,e,r)}))}))}checkTreeExistence(t){if(!this.hasTreeStructure(t))throw new Error("Tree structure not found for treeKey: "+t)}hasTreeStructure(t){return this.treeIndices.has(t)}attachTreeStructure(t){this.treeIndices.has(t)||(this.treeIndices.set(t,{parentMap:new Map,childrenMap:new Map}),this.batch((()=>{this.changes.push({type:"TreeStructureAttached",treeKey:t})})))}detachTreeStructure(t){this.checkTreeExistence(t),this.treeIndices.delete(t),this.batch((()=>{this.changes.push({type:"TreeStructureDetached",treeKey:t})}))}addTree(t,e){this.batch((()=>{this.attachTreeStructure(e);const r=[],n=Array.isArray(t)?t:[t];for(;n.length;){const t=n.shift();r.push(t),t.children&&n.push(...t.children)}this.addNodes(r),r.forEach((t=>{t.children?.forEach((r=>{this.setParent(r.id,t.id,e)}))}))}))}getRoots(t){return this.checkTreeExistence(t),this.getAllNodes().filter((e=>!this.getParent(e.id,t)))}getChildren(t,e){this.checkNodeExistence(t),this.checkTreeExistence(e);const r=this.treeIndices.get(e).childrenMap.get(t);return Array.from(r||[])}getParent(t,e){return this.checkNodeExistence(t),this.checkTreeExistence(e),this.treeIndices.get(e).parentMap.get(t)||null}getAncestors(t,e){const r=[];let n,o=this.getNode(t);for(;n=this.getParent(o.id,e);)r.push(n),o=n;return r}setParent(t,e,r){this.checkTreeExistence(r);const n=this.treeIndices.get(r),o=this.getNode(t),i=n.parentMap.get(t),s=this.getNode(e);n.parentMap.set(t,s),i&&n.childrenMap.get(i.id)?.delete(o);let a=n.childrenMap.get(s.id);a||(a=new Set,n.childrenMap.set(s.id,a)),a.add(o),this.batch((()=>{this.changes.push({type:"TreeStructureChanged",treeKey:r,nodeId:t,oldParentId:i?.id,newParentId:s.id})}))}dfsTree(t,e,r){return c(this.getNode(t),new Set,e,(t=>this.getChildren(t,r)))}bfsTree(t,e,r){return u([this.getNode(t)],new Set,e,(t=>this.getChildren(t,r)))}getAllNodes(){return Array.from(this.nodeMap.values())}getAllEdges(){return Array.from(this.edgeMap.values())}bfs(t,e,r="out"){const n={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[r];return u([this.getNode(t)],new Set,e,n)}dfs(t,e,r="out"){const n={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[r];return c(this.getNode(t),new Set,e,n)}clone(){const t=this.getAllNodes().map((t=>({...t,data:{...t.data}}))),e=this.getAllEdges().map((t=>({...t,data:{...t.data}}))),r=new l({nodes:t,edges:e});return this.treeIndices.forEach((({parentMap:t,childrenMap:e},n)=>{const o=new Map;t.forEach(((t,e)=>{o.set(e,r.getNode(t.id))}));const i=new Map;e.forEach(((t,e)=>{i.set(e,new Set(Array.from(t).map((t=>r.getNode(t.id)))))})),r.treeIndices.set(n,{parentMap:o,childrenMap:i})})),r}toJSON(){return JSON.stringify({nodes:this.getAllNodes(),edges:this.getAllEdges()})}}var f=/-(\w)/g,d=(function(t){return t.replace(f,(function(t,e){return e?e.toUpperCase():""}))},Object.create(null),Array.isArray),g=function(t){for(var e=[],r=t.length,n=0;n<r;n+=1){e[n]=[];for(var o=0;o<r;o+=1)n===o?e[n][o]=0:0!==t[n][o]&&t[n][o]?e[n][o]=t[n][o]:e[n][o]=1/0}for(var i=0;i<r;i+=1)for(n=0;n<r;n+=1)for(o=0;o<r;o+=1)e[n][o]>e[n][i]+e[i][o]&&(e[n][o]=e[n][i]+e[i][o]);return e},p=function(t,e){var r=t.nodes,n=t.edges,o=[],i={};if(!r)throw new Error("invalid nodes data!");return r&&r.forEach((function(t,e){i[t.id]=e,o.push([])})),null==n||n.forEach((function(t){var r=t.source,n=t.target,s=i[r],a=i[n];void 0!==s&&void 0!==a&&(o[s][a]=1,e||(o[a][s]=1))})),o},y=function(t,e){return Math.sqrt((t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y))},m={}.toString;const w=function(t,e){return m.call(t)==="[object "+e+"]"},v=function(t){return w(t,"Number")};var x=function(t){if(null===t)return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof Array){var e=[];return t.forEach((function(t){e.push(t)})),e.map((function(t){return x(t)}))}if("object"==typeof t){var r={};return Object.keys(t).forEach((function(e){r[e]=x(t[e])})),r}return t},M=function(t,e){var r=x(t);return r.data=r.data||{},e&&(v(r.data.x)||(r.data.x=Math.random()*e[0]),v(r.data.y)||(r.data.y=Math.random()*e[1])),r};const b=function(t){return"function"==typeof t},E=function(t){var e=typeof t;return null!==t&&"object"===e||"function"===e};function N(t,e){return b(e)?e:v(e)?function(){return e}:function(){return t}}function S(t,e,r){return void 0===r&&(r=!0),e||0===e?b(e)?e:v(e)?function(){return e}:d(e)?function(){if(r){var n=Math.max.apply(Math,a([],s(e),!1));return isNaN(n)?t:n}return e}:E(e)?function(){if(r){var n=Math.max(e.width,e.height);return isNaN(n)?t:n}return[e.width,e.height]}:function(){return t}:function(e){var r=(e.data||{}).size;return r?d(r)?r[0]>r[1]?r[0]:r[1]:E(r)?r.width>r.height?r.width:r.height:r:t}}var A=function(t,e,n){var o=t.getAllNodes(),i=t.getAllEdges();return(null==o?void 0:o.length)?1===o.length?(e&&t.mergeNodeData(o[0].id,{x:n[0],y:n[1]}),{nodes:[r(r({},o[0]),{data:r(r({},o[0].data),{x:n[0],y:n[1]})})],edges:i}):void 0:{nodes:[],edges:i}},k={radius:null,startRadius:null,endRadius:null,startAngle:0,endAngle:2*Math.PI,clockwise:!0,divisions:1,ordering:null,angleRatio:1},D=function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="circular",this.options=r(r({},k),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericCircularLayout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return[4,this.genericCircularLayout(!0,t,e)];case 1:return r.sent(),[2]}}))}))},t.prototype.genericCircularLayout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,a,h,u,c,l,f,d,g,p,y,m,w,v,x,b,E,k,D,R,z,T,O,C,P,q,F,L,j,V,W,$,G,U,B;return i(this,(function(i){if(o=r(r({},this.options),n),a=o.width,h=o.height,u=o.center,c=o.divisions,l=o.startAngle,f=void 0===l?0:l,d=o.endAngle,g=void 0===d?2*Math.PI:d,p=o.angleRatio,y=o.ordering,m=o.clockwise,w=o.nodeSpacing,v=o.nodeSize,x=e.getAllNodes(),b=e.getAllEdges(),E=s(_(a,h,u),3),k=E[0],D=E[1],R=E[2],!(z=null==x?void 0:x.length)||1===z)return[2,A(e,t,R)];for(T=(g-f)/z,O=o.radius,C=o.startRadius,P=o.endRadius,w?(q=N(10,w),F=S(10,v),L=-1/0,x.forEach((function(t){var e=F(t);L<e&&(L=e)})),j=0,x.forEach((function(t,e){j+=0===e?L||10:(q(t)||0)+(L||10)})),O=j/(2*Math.PI)):O||C||P?!C&&P?C=P:C&&!P&&(P=C):O=Math.min(D,k)/2,V=T*p,W=[],W="topology"===y?I(e,x):"topology-directed"===y?I(e,x,!0):"degree"===y?function(t,e){var r=[];return e.forEach((function(t,e){r.push(M(t))})),r.sort((function(e,r){return t.getDegree(e.id,"both")-t.getDegree(r.id,"both")})),r}(e,x):x.map((function(t){return M(t)})),$=Math.ceil(z/c),G=0;G<z;++G)(U=O)||null===C||null===P||(U=C+G*(P-C)/(z-1)),U||(U=10+100*G/(z-1)),B=f+G%$*V+2*Math.PI/c*Math.floor(G/$),m||(B=g-G%$*V-2*Math.PI/c*Math.floor(G/$)),W[G].data.x=R[0]+Math.cos(B)*U,W[G].data.y=R[1]+Math.sin(B)*U;return t&&W.forEach((function(t){e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),[2,{nodes:W,edges:b}]}))}))},t}(),I=function(t,e,r){void 0===r&&(r=!1);var n=[M(e[0])],o={},i=e.length;o[e[0].id]=!0;var s=0;return e.forEach((function(a,h){if(0!==h)if(h!==i-1&&t.getDegree(a.id,"both")===t.getDegree(e[h+1].id,"both")&&!t.areNeighbors(n[s].id,a.id)||o[a.id]){for(var u=r?t.getSuccessors(n[s].id):t.getNeighbors(n[s].id),c=!1,l=0;l<u.length;l++){var f=u[l];if(t.getDegree(f.id)===t.getDegree(a.id)&&!o[f.id]){n.push(M(f)),o[f.id]=!0,c=!0;break}}for(var d=0;!c&&(o[e[d].id]||(n.push(M(e[d])),o[e[d].id]=!0,c=!0),++d!==i););}else n.push(M(a)),o[a.id]=!0,s++})),n},_=function(t,e,r){var n=t,o=e,i=r;return n||"undefined"==typeof window||(n=window.innerWidth),o||"undefined"==typeof window||(o=window.innerHeight),i||(i=[n/2,o/2]),[n,o,i]};const R=function(t){return w(t,"String")};var z={nodeSize:30,nodeSpacing:10,preventOverlap:!1,sweep:void 0,equidistant:!1,startAngle:1.5*Math.PI,clockwise:!0,maxLevelDiff:void 0,sortBy:"degree"},T=function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="concentric",this.options=r(r({},z),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericConcentricLayout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return this.genericConcentricLayout(!0,t,e),[2]}))}))},t.prototype.genericConcentricLayout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,s,a,h,u,c,l,f,g,p,y,m,w,x,N,S,k,D,I,_,z,T,O,C,P,q,F,L,j,V,W,$,G,U,B,H,K,J;return i(this,(function(i){if(o=r(r({},this.options),n),s=o.center,a=o.width,h=o.height,u=o.sortBy,c=o.maxLevelDiff,l=o.sweep,f=o.clockwise,g=o.equidistant,p=o.preventOverlap,y=o.startAngle,m=void 0===y?1.5*Math.PI:y,w=o.nodeSize,x=o.nodeSpacing,N=e.getAllNodes(),S=e.getAllEdges(),k=a||"undefined"==typeof window?a:window.innerWidth,D=h||"undefined"==typeof window?h:window.innerHeight,I=s||[k/2,D/2],!(null==N?void 0:N.length)||1===N.length)return[2,A(e,t,I)];if(_=[],T=0,z=d(w)?Math.max(w[0],w[1]):w,d(x)?T=Math.max(x[0],x[1]):v(x)&&(T=x),N.forEach((function(t){var e=M(t);_.push(e);var r=z,n=e.data;d(n.size)?r=Math.max(n.size[0],n.size[1]):v(n.size)?r=n.size:E(n.size)&&(r=Math.max(n.size.width,n.size.height)),z=Math.max(z,r),b(x)&&(T=Math.max(x(t),T))})),O={},_.forEach((function(t,e){O[t.id]=e})),R(C=u)&&void 0!==_[0].data[C]||(C="degree"),"degree"===C?_.sort((function(t,r){return e.getDegree(r.id,"both")-e.getDegree(t.id,"both")})):_.sort((function(t,e){return e.data[C]-t.data[C]})),P=_[0],q=(c||("degree"===C?e.getDegree(P.id,"both"):P.data[C]))/4,L=(F=[{nodes:[]}])[0],_.forEach((function(t){if(L.nodes.length>0){var r="degree"===C?Math.abs(e.getDegree(L.nodes[0].id,"both")-e.getDegree(t.id,"both")):Math.abs(L.nodes[0].data[C]-t.data[C]);q&&r>=q&&(L={nodes:[]},F.push(L))}L.nodes.push(t)})),j=z+T,p||(V=F.length>0&&F[0].nodes.length>1,W=Math.min(k,D)/2-j,$=W/(F.length+(V?1:0)),j=Math.min(j,$)),G=0,F.forEach((function(t){var e=void 0===l?2*Math.PI-2*Math.PI/t.nodes.length:l;if(t.dTheta=e/Math.max(1,t.nodes.length-1),t.nodes.length>1&&p){var r=Math.cos(t.dTheta)-Math.cos(0),n=Math.sin(t.dTheta)-Math.sin(0),o=Math.sqrt(j*j/(r*r+n*n));G=Math.max(o,G)}t.r=G,G+=j})),g){for(U=0,B=0,H=0;H<F.length;H++)K=F[H],J=(K.r||0)-B,U=Math.max(U,J);B=0,F.forEach((function(t,e){0===e&&(B=t.r||0),t.r=B,B+=U}))}return F.forEach((function(t){var e=t.dTheta||0,r=t.r||0;t.nodes.forEach((function(t,n){var o=m+(f?1:-1)*e*n;t.data.x=I[0]+r*Math.cos(o),t.data.y=I[1]+r*Math.sin(o)}))})),t&&_.forEach((function(t){return e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),[2,{nodes:_,edges:S}]}))}))},t}();function O(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var o,i,s,a,h,u,c,l,f,d=t._root,g={data:n},p=t._x0,y=t._y0,m=t._x1,w=t._y1;if(!d)return t._root=g,t;for(;d.length;)if((u=e>=(i=(p+m)/2))?p=i:m=i,(c=r>=(s=(y+w)/2))?y=s:w=s,o=d,!(d=d[l=c<<1|u]))return o[l]=g,t;if(a=+t._x.call(null,d.data),h=+t._y.call(null,d.data),e===a&&r===h)return g.next=d,o?o[l]=g:t._root=g,t;do{o=o?o[l]=new Array(4):t._root=new Array(4),(u=e>=(i=(p+m)/2))?p=i:m=i,(c=r>=(s=(y+w)/2))?y=s:w=s}while((l=c<<1|u)==(f=(h>=s)<<1|a>=i));return o[f]=d,o[l]=g,t}function C(t,e,r,n,o){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=o}function P(t){return t[0]}function q(t){return t[1]}function F(t,e,r){var n=new L(null==e?P:e,null==r?q:r,NaN,NaN,NaN,NaN);return null==t?n:n.addAll(t)}function L(t,e,r,n,o,i){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=o,this._y1=i,this._root=void 0}function j(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var V=F.prototype=L.prototype;function W(t){return function(){return t}}function $(t){return 1e-6*(t()-.5)}V.copy=function(){var t,e,r=new L(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=j(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var o=0;o<4;++o)(e=n.source[o])&&(e.length?t.push({source:e,target:n.target[o]=new Array(4)}):n.target[o]=j(e));return r},V.add=function(t){const e=+this._x.call(null,t),r=+this._y.call(null,t);return O(this.cover(e,r),e,r,t)},V.addAll=function(t){var e,r,n,o,i=t.length,s=new Array(i),a=new Array(i),h=1/0,u=1/0,c=-1/0,l=-1/0;for(r=0;r<i;++r)isNaN(n=+this._x.call(null,e=t[r]))||isNaN(o=+this._y.call(null,e))||(s[r]=n,a[r]=o,n<h&&(h=n),n>c&&(c=n),o<u&&(u=o),o>l&&(l=o));if(h>c||u>l)return this;for(this.cover(h,u).cover(c,l),r=0;r<i;++r)O(this,s[r],a[r],t[r]);return this},V.cover=function(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var r=this._x0,n=this._y0,o=this._x1,i=this._y1;if(isNaN(r))o=(r=Math.floor(t))+1,i=(n=Math.floor(e))+1;else{for(var s,a,h=o-r||1,u=this._root;r>t||t>=o||n>e||e>=i;)switch(a=(e<n)<<1|t<r,(s=new Array(4))[a]=u,u=s,h*=2,a){case 0:o=r+h,i=n+h;break;case 1:r=o-h,i=n+h;break;case 2:o=r+h,n=i-h;break;case 3:r=o-h,n=i-h}this._root&&this._root.length&&(this._root=u)}return this._x0=r,this._y0=n,this._x1=o,this._y1=i,this},V.data=function(){var t=[];return this.visit((function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)})),t},V.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},V.find=function(t,e,r){var n,o,i,s,a,h,u,c=this._x0,l=this._y0,f=this._x1,d=this._y1,g=[],p=this._root;for(p&&g.push(new C(p,c,l,f,d)),null==r?r=1/0:(c=t-r,l=e-r,f=t+r,d=e+r,r*=r);h=g.pop();)if(!(!(p=h.node)||(o=h.x0)>f||(i=h.y0)>d||(s=h.x1)<c||(a=h.y1)<l))if(p.length){var y=(o+s)/2,m=(i+a)/2;g.push(new C(p[3],y,m,s,a),new C(p[2],o,m,y,a),new C(p[1],y,i,s,m),new C(p[0],o,i,y,m)),(u=(e>=m)<<1|t>=y)&&(h=g[g.length-1],g[g.length-1]=g[g.length-1-u],g[g.length-1-u]=h)}else{var w=t-+this._x.call(null,p.data),v=e-+this._y.call(null,p.data),x=w*w+v*v;if(x<r){var M=Math.sqrt(r=x);c=t-M,l=e-M,f=t+M,d=e+M,n=p.data}}return n},V.remove=function(t){if(isNaN(i=+this._x.call(null,t))||isNaN(s=+this._y.call(null,t)))return this;var e,r,n,o,i,s,a,h,u,c,l,f,d=this._root,g=this._x0,p=this._y0,y=this._x1,m=this._y1;if(!d)return this;if(d.length)for(;;){if((u=i>=(a=(g+y)/2))?g=a:y=a,(c=s>=(h=(p+m)/2))?p=h:m=h,e=d,!(d=d[l=c<<1|u]))return this;if(!d.length)break;(e[l+1&3]||e[l+2&3]||e[l+3&3])&&(r=e,f=l)}for(;d.data!==t;)if(n=d,!(d=d.next))return this;return(o=d.next)&&delete d.next,n?(o?n.next=o:delete n.next,this):e?(o?e[l]=o:delete e[l],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(r?r[f]=d:this._root=d),this):(this._root=o,this)},V.removeAll=function(t){for(var e=0,r=t.length;e<r;++e)this.remove(t[e]);return this},V.root=function(){return this._root},V.size=function(){var t=0;return this.visit((function(e){if(!e.length)do{++t}while(e=e.next)})),t},V.visit=function(t){var e,r,n,o,i,s,a=[],h=this._root;for(h&&a.push(new C(h,this._x0,this._y0,this._x1,this._y1));e=a.pop();)if(!t(h=e.node,n=e.x0,o=e.y0,i=e.x1,s=e.y1)&&h.length){var u=(n+i)/2,c=(o+s)/2;(r=h[3])&&a.push(new C(r,u,c,i,s)),(r=h[2])&&a.push(new C(r,n,c,u,s)),(r=h[1])&&a.push(new C(r,u,o,i,c)),(r=h[0])&&a.push(new C(r,n,o,u,c))}return this},V.visitAfter=function(t){var e,r=[],n=[];for(this._root&&r.push(new C(this._root,this._x0,this._y0,this._x1,this._y1));e=r.pop();){var o=e.node;if(o.length){var i,s=e.x0,a=e.y0,h=e.x1,u=e.y1,c=(s+h)/2,l=(a+u)/2;(i=o[0])&&r.push(new C(i,s,a,c,l)),(i=o[1])&&r.push(new C(i,c,a,h,l)),(i=o[2])&&r.push(new C(i,s,l,c,u)),(i=o[3])&&r.push(new C(i,c,l,h,u))}n.push(e)}for(;e=n.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this},V.x=function(t){return arguments.length?(this._x=t,this):this._x},V.y=function(t){return arguments.length?(this._y=t,this):this._y};var G={value:()=>{}};function U(){for(var t,e=0,r=arguments.length,n={};e<r;++e){if(!(t=arguments[e]+"")||t in n||/[\s.]/.test(t))throw new Error("illegal type: "+t);n[t]=[]}return new B(n)}function B(t){this._=t}function H(t,e){return t.trim().split(/^|\s+/).map((function(t){var r="",n=t.indexOf(".");if(n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:r}}))}function K(t,e){for(var r,n=0,o=t.length;n<o;++n)if((r=t[n]).name===e)return r.value}function J(t,e,r){for(var n=0,o=t.length;n<o;++n)if(t[n].name===e){t[n]=G,t=t.slice(0,n).concat(t.slice(n+1));break}return null!=r&&t.push({name:e,value:r}),t}B.prototype=U.prototype={constructor:B,on:function(t,e){var r,n=this._,o=H(t+"",n),i=-1,s=o.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++i<s;)if(r=(t=o[i]).type)n[r]=J(n[r],t.name,e);else if(null==e)for(r in n)n[r]=J(n[r],t.name,null);return this}for(;++i<s;)if((r=(t=o[i]).type)&&(r=K(n[r],t.name)))return r},copy:function(){var t={},e=this._;for(var r in e)t[r]=e[r].slice();return new B(t)},call:function(t,e){if((r=arguments.length-2)>0)for(var r,n,o=new Array(r),i=0;i<r;++i)o[i]=arguments[i+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(i=0,r=(n=this._[t]).length;i<r;++i)n[i].value.apply(e,o)},apply:function(t,e,r){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var n=this._[t],o=0,i=n.length;o<i;++o)n[o].value.apply(e,r)}};const Y=U;var X,Q,Z=0,tt=0,et=0,rt=0,nt=0,ot=0,it="object"==typeof performance&&performance.now?performance:Date,st="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function at(){return nt||(st(ht),nt=it.now()+ot)}function ht(){nt=0}function ut(){this._call=this._time=this._next=null}function ct(t,e,r){var n=new ut;return n.restart(t,e,r),n}function lt(){nt=(rt=it.now())+ot,Z=tt=0;try{!function(){at(),++Z;for(var t,e=X;e;)(t=nt-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Z}()}finally{Z=0,function(){for(var t,e,r=X,n=1/0;r;)r._call?(n>r._time&&(n=r._time),t=r,r=r._next):(e=r._next,r._next=null,r=t?t._next=e:X=e);Q=t,dt(n)}(),nt=0}}function ft(){var t=it.now(),e=t-rt;e>1e3&&(ot-=e,rt=t)}function dt(t){Z||(tt&&(tt=clearTimeout(tt)),t-nt>24?(t<1/0&&(tt=setTimeout(lt,t-it.now()-ot)),et&&(et=clearInterval(et))):(et||(rt=it.now(),et=setInterval(ft,1e3)),Z=1,st(lt)))}ut.prototype=ct.prototype={constructor:ut,restart:function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?at():+r)+(null==e?0:+e),this._next||Q===this||(Q?Q._next=this:X=this,Q=this),this._call=t,this._time=r,dt()},stop:function(){this._call&&(this._call=null,this._time=1/0,dt())}};const gt=4294967296;function pt(t){return t.x}function yt(t){return t.y}var mt=Math.PI*(3-Math.sqrt(5));function wt(t){var e,r=1,n=.001,o=1-Math.pow(n,1/300),i=0,s=.6,a=new Map,h=ct(l),u=Y("tick","end"),c=function(){let t=1;return()=>(t=(1664525*t+1013904223)%gt)/gt}();function l(){f(),u.call("tick",e),r<n&&(h.stop(),u.call("end",e))}function f(n){var h,u,c=t.length;void 0===n&&(n=1);for(var l=0;l<n;++l)for(r+=(i-r)*o,a.forEach((function(t){t(r)})),h=0;h<c;++h)null==(u=t[h]).fx?u.x+=u.vx*=s:(u.x=u.fx,u.vx=0),null==u.fy?u.y+=u.vy*=s:(u.y=u.fy,u.vy=0);return e}function d(){for(var e,r=0,n=t.length;r<n;++r){if((e=t[r]).index=r,null!=e.fx&&(e.x=e.fx),null!=e.fy&&(e.y=e.fy),isNaN(e.x)||isNaN(e.y)){var o=10*Math.sqrt(.5+r),i=r*mt;e.x=o*Math.cos(i),e.y=o*Math.sin(i)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function g(e){return e.initialize&&e.initialize(t,c),e}return null==t&&(t=[]),d(),e={tick:f,restart:function(){return h.restart(l),e},stop:function(){return h.stop(),e},nodes:function(r){return arguments.length?(t=r,d(),a.forEach(g),e):t},alpha:function(t){return arguments.length?(r=+t,e):r},alphaMin:function(t){return arguments.length?(n=+t,e):n},alphaDecay:function(t){return arguments.length?(o=+t,e):+o},alphaTarget:function(t){return arguments.length?(i=+t,e):i},velocityDecay:function(t){return arguments.length?(s=1-t,e):1-s},randomSource:function(t){return arguments.length?(c=t,a.forEach(g),e):c},force:function(t,r){return arguments.length>1?(null==r?a.delete(t):a.set(t,g(r)),e):a.get(t)},find:function(e,r,n){var o,i,s,a,h,u=0,c=t.length;for(null==n?n=1/0:n*=n,u=0;u<c;++u)(s=(o=e-(a=t[u]).x)*o+(i=r-a.y)*i)<n&&(h=a,n=s);return h},on:function(t,r){return arguments.length>1?(u.on(t,r),e):u.on(t)}}}function vt(){var t,e,r,n,o,i=W(-30),s=1,a=1/0,h=.81;function u(r){var o,i=t.length,s=F(t,pt,yt).visitAfter(l);for(n=r,o=0;o<i;++o)e=t[o],s.visit(f)}function c(){if(t){var e,r,n=t.length;for(o=new Array(n),e=0;e<n;++e)r=t[e],o[r.index]=+i(r,e,t)}}function l(t){var e,r,n,i,s,a=0,h=0;if(t.length){for(n=i=s=0;s<4;++s)(e=t[s])&&(r=Math.abs(e.value))&&(a+=e.value,h+=r,n+=r*e.x,i+=r*e.y);t.x=n/h,t.y=i/h}else{(e=t).x=e.data.x,e.y=e.data.y;do{a+=o[e.data.index]}while(e=e.next)}t.value=a}function f(t,i,u,c){if(!t.value)return!0;var l=t.x-e.x,f=t.y-e.y,d=c-i,g=l*l+f*f;if(d*d/h<g)return g<a&&(0===l&&(g+=(l=$(r))*l),0===f&&(g+=(f=$(r))*f),g<s&&(g=Math.sqrt(s*g)),e.vx+=l*t.value*n/g,e.vy+=f*t.value*n/g),!0;if(!(t.length||g>=a)){(t.data!==e||t.next)&&(0===l&&(g+=(l=$(r))*l),0===f&&(g+=(f=$(r))*f),g<s&&(g=Math.sqrt(s*g)));do{t.data!==e&&(d=o[t.data.index]*n/g,e.vx+=l*d,e.vy+=f*d)}while(t=t.next)}}return u.initialize=function(e,n){t=e,r=n,c()},u.strength=function(t){return arguments.length?(i="function"==typeof t?t:W(+t),c(),u):i},u.distanceMin=function(t){return arguments.length?(s=t*t,u):Math.sqrt(s)},u.distanceMax=function(t){return arguments.length?(a=t*t,u):Math.sqrt(a)},u.theta=function(t){return arguments.length?(h=t*t,u):Math.sqrt(h)},u}function xt(t){return t.index}function Mt(t,e){var r=t.get(e);if(!r)throw new Error("node not found: "+e);return r}function bt(t){var e,r,n,o,i,s,a=xt,h=function(t){return 1/Math.min(o[t.source.index],o[t.target.index])},u=W(30),c=1;function l(n){for(var o=0,a=t.length;o<c;++o)for(var h,u,l,f,d,g,p,y=0;y<a;++y)u=(h=t[y]).source,f=(l=h.target).x+l.vx-u.x-u.vx||$(s),d=l.y+l.vy-u.y-u.vy||$(s),f*=g=((g=Math.sqrt(f*f+d*d))-r[y])/g*n*e[y],d*=g,l.vx-=f*(p=i[y]),l.vy-=d*p,u.vx+=f*(p=1-p),u.vy+=d*p}function f(){if(n){var s,h,u=n.length,c=t.length,l=new Map(n.map(((t,e)=>[a(t,e,n),t])));for(s=0,o=new Array(u);s<c;++s)(h=t[s]).index=s,"object"!=typeof h.source&&(h.source=Mt(l,h.source)),"object"!=typeof h.target&&(h.target=Mt(l,h.target)),o[h.source.index]=(o[h.source.index]||0)+1,o[h.target.index]=(o[h.target.index]||0)+1;for(s=0,i=new Array(c);s<c;++s)h=t[s],i[s]=o[h.source.index]/(o[h.source.index]+o[h.target.index]);e=new Array(c),d(),r=new Array(c),g()}}function d(){if(n)for(var r=0,o=t.length;r<o;++r)e[r]=+h(t[r],r,t)}function g(){if(n)for(var e=0,o=t.length;e<o;++e)r[e]=+u(t[e],e,t)}return null==t&&(t=[]),l.initialize=function(t,e){n=t,s=e,f()},l.links=function(e){return arguments.length?(t=e,f(),l):t},l.id=function(t){return arguments.length?(a=t,l):a},l.iterations=function(t){return arguments.length?(c=+t,l):c},l.strength=function(t){return arguments.length?(h="function"==typeof t?t:W(+t),d(),l):h},l.distance=function(t){return arguments.length?(u="function"==typeof t?t:W(+t),g(),l):u},l}function Et(t){return t.x+t.vx}function Nt(t){return t.y+t.vy}function St(t){var e,r,n,o=1,i=1;function s(){for(var t,s,h,u,c,l,f,d=e.length,g=0;g<i;++g)for(s=F(e,Et,Nt).visitAfter(a),t=0;t<d;++t)h=e[t],l=r[h.index],f=l*l,u=h.x+h.vx,c=h.y+h.vy,s.visit(p);function p(t,e,r,i,s){var a=t.data,d=t.r,g=l+d;if(!a)return e>u+g||i<u-g||r>c+g||s<c-g;if(a.index>h.index){var p=u-a.x-a.vx,y=c-a.y-a.vy,m=p*p+y*y;m<g*g&&(0===p&&(m+=(p=$(n))*p),0===y&&(m+=(y=$(n))*y),m=(g-(m=Math.sqrt(m)))/m*o,h.vx+=(p*=m)*(g=(d*=d)/(f+d)),h.vy+=(y*=m)*g,a.vx-=p*(g=1-g),a.vy-=y*g)}}}function a(t){if(t.data)return t.r=r[t.data.index];for(var e=t.r=0;e<4;++e)t[e]&&t[e].r>t.r&&(t.r=t[e].r)}function h(){if(e){var n,o,i=e.length;for(r=new Array(i),n=0;n<i;++n)o=e[n],r[o.index]=+t(o,n,e)}}return"function"!=typeof t&&(t=W(null==t?1:+t)),s.initialize=function(t,r){e=t,n=r,h()},s.iterations=function(t){return arguments.length?(i=+t,s):i},s.strength=function(t){return arguments.length?(o=+t,s):o},s.radius=function(e){return arguments.length?(t="function"==typeof e?e:W(+e),h(),s):t},s}function At(t){var e,r,n,o=W(.1);function i(t){for(var o,i=0,s=e.length;i<s;++i)(o=e[i]).vx+=(n[i]-o.x)*r[i]*t}function s(){if(e){var i,s=e.length;for(r=new Array(s),n=new Array(s),i=0;i<s;++i)r[i]=isNaN(n[i]=+t(e[i],i,e))?0:+o(e[i],i,e)}}return"function"!=typeof t&&(t=W(null==t?0:+t)),i.initialize=function(t){e=t,s()},i.strength=function(t){return arguments.length?(o="function"==typeof t?t:W(+t),s(),i):o},i.x=function(e){return arguments.length?(t="function"==typeof e?e:W(+e),s(),i):t},i}function kt(t){var e,r,n,o=W(.1);function i(t){for(var o,i=0,s=e.length;i<s;++i)(o=e[i]).vy+=(n[i]-o.y)*r[i]*t}function s(){if(e){var i,s=e.length;for(r=new Array(s),n=new Array(s),i=0;i<s;++i)r[i]=isNaN(n[i]=+t(e[i],i,e))?0:+o(e[i],i,e)}}return"function"!=typeof t&&(t=W(null==t?0:+t)),i.initialize=function(t){e=t,s()},i.strength=function(t){return arguments.length?(o="function"==typeof t?t:W(+t),s(),i):o},i.y=function(e){return arguments.length?(t="function"==typeof e?e:W(+e),s(),i):t},i}function Dt(){function t(t){return function(){return t}}var e,r=function(t){return t.cluster},n=t(1),o=t(-1),i=t(100),a=t(.1),h=[0,0],u=[],c={},l=[],f=100,d=100,g={none:{x:0,y:0}},p=[],y="force",m=!0,w=.1;function v(t){if(!m)return v;e.tick(),M();for(var n=0,o=u.length,i=void 0,s=t*w;n<o;++n)(i=u[n]).vx+=(g[r(i)].x-i.x)*s,i.vy+=(g[r(i)].y-i.y)*s}function x(){u&&function(){if(u&&u.length){if(void 0===r(u[0]))throw Error("Couldnt find the grouping attribute for the nodes. Make sure to set it up with forceInBox.groupBy('clusterAttr') before calling .links()");var t,h,g,y,m,w=(t=[],h=[],g={},{},m=[],y=function(t){var e={};return t.forEach((function(t){var n=r(t);e[n]||(e[n]={count:0,sumforceNodeSize:0})})),t.forEach((function(t){var o=r(t),i=n(t),s=e[o];s.count=s.count+1,s.sumforceNodeSize=s.sumforceNodeSize+Math.PI*(i*i)*1.3,e[o]=s})),e}(u),m=function(t){var e={},n=[];return t.forEach((function(t){var n,o,i,s,a,h=(o=(n=t).source,i=n.target,(s=r(c[o]))<=(a=r(c[i]))?"".concat(s,"~").concat(a):"".concat(a,"~").concat(s)),u=0;void 0!==e[h]&&(u=e[h]),u+=1,e[h]=u})),Object.entries(e).forEach((function(t){var e=s(t,2),r=e[0],o=e[1],i=r.split("~")[0],a=r.split("~")[1];void 0!==i&&void 0!==a&&n.push({source:i,target:a,count:o})})),n}(l),Object.keys(y).forEach((function(e,r){var n=y[e];t.push({id:e,size:n.count,r:Math.sqrt(n.sumforceNodeSize/Math.PI)}),g[e]=r})),m.forEach((function(t){var e=t.source,r=t.target,n=g[e],o=g[r];void 0!==n&&void 0!==o&&h.push({source:n,target:o,count:t.count})})),{nodes:t,links:h});e=wt(w.nodes).force("x",At(f).strength(.1)).force("y",kt(d).strength(.1)).force("collide",St((function(t){return t.r})).iterations(4)).force("charge",vt().strength(o)).force("links",bt(w.nodes.length?w.links:[]).distance(i).strength(a)),p=e.nodes(),M()}}()}function M(){return g={none:{x:0,y:0}},p.forEach((function(t){g[t.id]={x:t.x-h[0],y:t.y-h[1]}})),g}function b(t){c={},t.forEach((function(t){c[t.id]=t}))}return v.initialize=function(t){u=t,x()},v.template=function(t){return arguments.length?(y=t,x(),v):y},v.groupBy=function(t){return arguments.length?"string"==typeof t?(r=function(e){return e[t]},v):(r=t,v):r},v.enableGrouping=function(t){return arguments.length?(m=t,v):m},v.strength=function(t){return arguments.length?(w=t,v):w},v.centerX=function(t){return arguments.length?(f=t,v):f},v.centerY=function(t){return arguments.length?(d=t,v):d},v.nodes=function(t){return arguments.length?(b(t||[]),u=t||[],v):u},v.links=function(t){return arguments.length?(l=t||[],x(),v):l},v.forceNodeSize=function(e){return arguments.length?(n="function"==typeof e?e:t(+e),x(),v):n},v.nodeSize=v.forceNodeSize,v.forceCharge=function(e){return arguments.length?(o="function"==typeof e?e:t(+e),x(),v):o},v.forceLinkDistance=function(e){return arguments.length?(i="function"==typeof e?e:t(+e),x(),v):i},v.forceLinkStrength=function(e){return arguments.length?(a="function"==typeof e?e:t(+e),x(),v):a},v.offset=function(t){return arguments.length?(h=t,v):h},v.getFocis=M,v}var It={center:[0,0],preventOverlap:!1,nodeSize:void 0,nodeSpacing:void 0,linkDistance:50,forceSimulation:null,alphaDecay:.028,alphaMin:.001,alpha:.3,collideStrength:1,clustering:!1,clusterNodeStrength:-1,clusterEdgeStrength:.1,clusterEdgeDistance:100,clusterFociStrength:.8,clusterNodeSize:10},_t=function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="d3force",this.options=r(r({},It),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericForceLayout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return this.genericForceLayout(!0,t,e),[2]}))}))},t.prototype.stop=function(){var t;null===(t=this.forceSimulation)||void 0===t||t.stop()},t.prototype.tick=function(t){var e=this;void 0===t&&(t=1),this.forceSimulation.tick(t);var r={nodes:Rt(this.lastLayoutNodes),edges:zt(this.lastLayoutEdges)};return this.lastAssign&&r.nodes.forEach((function(t){return e.lastGraph.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),r},t.prototype.genericForceLayout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,s,a,h,u,c,l,f,d,g,p,y,m,w,v,x,b,E,N,S,A,k,D,I,_,R,z=this;return i(this,(function(i){return o=r(r({},this.options),n),s=e.getAllNodes(),a=e.getAllEdges(),h=s.map((function(t){var e,n;return r(r({},M(t)),{x:null===(e=t.data)||void 0===e?void 0:e.x,y:null===(n=t.data)||void 0===n?void 0:n.y})})),u=a.map((function(t){return M(t)})),this.lastLayoutNodes=h,this.lastLayoutEdges=u,this.lastAssign=t,this.lastGraph=e,c=o.alphaMin,l=o.alphaDecay,f=o.alpha,d=o.nodeStrength,g=o.edgeStrength,p=o.linkDistance,y=o.clustering,m=o.clusterFociStrength,w=o.clusterEdgeDistance,v=o.clusterEdgeStrength,x=o.clusterNodeStrength,b=o.clusterNodeSize,E=o.collideStrength,N=void 0===E?1:E,S=o.center,A=void 0===S?[0,0]:S,k=o.preventOverlap,D=o.nodeSize,I=o.nodeSpacing,_=o.onTick,R=o.forceSimulation,[2,new Promise((function(r){if(R)y&&((n=Dt()).nodes(h),n.links(u)),R.nodes(h),u&&(i=bt().id((function(t){return t.id})).links(u),g&&i.strength(g),p&&i.distance(p),R.force("link",i)),k&&z.overlapProcess(R,{nodeSize:D,nodeSpacing:I,collideStrength:N}),R.alpha(f).restart();else try{var n,o=vt();if(d&&o.strength(d),R=wt().nodes(h),y&&((n=Dt()).centerX(A[0]).centerY(A[1]).template("force").strength(m),u&&n.links(u),h&&n.nodes(h),n.forceLinkDistance(w).forceLinkStrength(v).forceCharge(x).forceNodeSize(b),R.force("group",n)),R.force("center",function(t,e){var r,n=1;function o(){var o,i,s=r.length,a=0,h=0;for(o=0;o<s;++o)a+=(i=r[o]).x,h+=i.y;for(a=(a/s-t)*n,h=(h/s-e)*n,o=0;o<s;++o)(i=r[o]).x-=a,i.y-=h}return null==t&&(t=0),null==e&&(e=0),o.initialize=function(t){r=t},o.x=function(e){return arguments.length?(t=+e,o):t},o.y=function(t){return arguments.length?(e=+t,o):e},o.strength=function(t){return arguments.length?(n=+t,o):n},o}(A[0],A[1])).force("charge",o).alpha(f).alphaDecay(l).alphaMin(c),k&&z.overlapProcess(R,{nodeSize:D,nodeSpacing:I,collideStrength:N}),u){var i=bt().id((function(t){return t.id})).links(u);g&&i.strength(g),p&&i.distance(p),R.force("link",i)}R.on("tick",(function(){var r=Rt(h);null==_||_({nodes:r,edges:zt(u)}),t&&r.forEach((function(t){return e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})}))})).on("end",(function(){var n=Rt(h);t&&n.forEach((function(t){return e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),r({nodes:n,edges:zt(u)})}))}catch(t){console.warn(t)}z.forceSimulation=R;var s=Rt(h),a=zt(u);t&&s.forEach((function(t){return e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),r({nodes:s,edges:a})}))]}))}))},t.prototype.overlapProcess=function(t,e){var r,n,o=e.nodeSize,i=e.nodeSpacing,s=e.collideStrength;if(n=v(i)?function(){return i}:b(i)?i:function(){return 0},o)if(b(o))r=function(t){return o(t)+n(t)};else if(d(o)){var a=(o[0]>o[1]?o[0]:o[1])/2;r=function(t){return a+n(t)}}else if(v(o)){var h=o/2;r=function(t){return h+n(t)}}else r=function(){return 10};else r=function(t){return t.size?d(t.size)?(t.size[0]>t.size[1]?t.size[0]:t.size[1])/2+n(t):E(t.size)?(t.size.width>t.size.height?t.size.width:t.size.height)/2+n(t):t.size/2+n(t):10+n(t)};t.force("collisionForce",St(r).strength(s))},t}(),Rt=function(t){return t.map((function(t){var e=t.x,o=t.y,i=n(t,["x","y"]);return r(r({},i),{data:r(r({},i.data),{x:e,y:o})})}))},zt=function(t){return t.map((function(t){var e=t.source,o=t.target,i=n(t,["source","target"]);return r(r({},i),{source:e.id,target:o.id})}))};function Tt(t){var e=0,r=0,n=0;if(t.length){for(var o=0;o<4;o++)(i=t[o])&&i.weight&&(e+=i.weight,r+=i.x*i.weight,n+=i.y*i.weight);t.x=r/e,t.y=n/e,t.weight=e}else{var i=t;t.x=i.data.x,t.y=i.data.y,t.weight=i.data.weight}}var Ot={maxIteration:500,gravity:10,factor:1,edgeStrength:200,nodeStrength:1e3,coulombDisScale:.005,damping:.9,maxSpeed:500,minMovement:.4,interval:.02,linkDistance:200,clusterNodeStrength:20,preventOverlap:!0,distanceThresholdMode:"mean"},Ct=function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="force",this.timeInterval=0,this.judgingDistance=0,this.running=!1,this.options=r(r({},Ot),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericForceLayout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return this.genericForceLayout(!0,t,e),[2]}))}))},t.prototype.stop=function(){this.timeInterval&&"undefined"!=typeof window&&window.clearInterval(this.timeInterval),this.running=!1},t.prototype.tick=function(t){var e=this;if(void 0===t&&(t=this.options.maxIteration||1),this.lastResult)return this.lastResult;for(var r=0;(this.judgingDistance>this.lastOptions.minMovement||r<1)&&r<t;r++)this.runOneStep(this.lastCalcGraph,this.lastGraph,r,this.lastVelMap,this.lastOptions),this.updatePosition(this.lastGraph,this.lastCalcGraph,this.lastVelMap,this.lastOptions);var n={nodes:this.lastLayoutNodes,edges:this.lastLayoutEdges};return this.lastAssign&&n.nodes.forEach((function(t){return e.lastGraph.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),n},t.prototype.genericForceLayout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,s,a,h,u,c,f,d,g,p,y,m,w,x,M,b,E,N,S,A=this;return i(this,(function(i){return o=r(r({},this.options),n),s=e.getAllNodes(),a=e.getAllEdges(),h=this.formatOptions(o,e),u=h.width,c=h.height,f=h.nodeSize,d=h.getMass,g=h.nodeStrength,p=h.edgeStrength,y=h.linkDistance,m=s.map((function(t){return r(r({},t),{data:r(r({},t.data),{x:v(t.data.x)?t.data.x:Math.random()*u,y:v(t.data.y)?t.data.y:Math.random()*c,size:f(t)||30,mass:d(t),nodeStrength:g(t)})})})),w=a.map((function(t){return r(r({},t),{data:r(r({},t.data),{edgeStrength:p(t),linkDistance:y(t,e.getNode(t.source),e.getNode(t.target))})})})),(null==s?void 0:s.length)?(x={},s.forEach((function(t,e){x[t.id]={x:0,y:0}})),M=new l({nodes:m,edges:w}),this.formatCentripetal(h,M),b=h.maxIteration,E=h.minMovement,N=h.onTick,this.lastLayoutNodes=m,this.lastLayoutEdges=w,this.lastAssign=t,this.lastGraph=e,this.lastCalcGraph=M,this.lastOptions=h,this.lastVelMap=x,"undefined"==typeof window?[2]:(S=0,[2,new Promise((function(r){A.timeInterval=window.setInterval((function(){s&&A.running||r({nodes:jt(e,m),edges:a}),A.runOneStep(M,e,S,x,h),A.updatePosition(e,M,x,h),t&&m.forEach((function(t){return e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),null==N||N({nodes:jt(e,m),edges:a}),(++S>=b||A.judgingDistance<E)&&(window.clearInterval(A.timeInterval),r({nodes:jt(e,m),edges:a}))}),0),A.running=!0}))])):(this.lastResult={nodes:[],edges:a},[2,{nodes:[],edges:a}])}))}))},t.prototype.formatOptions=function(t,e){var r=t,n=t.width,o=t.height,i=t.getMass;if(r.width=n||"undefined"==typeof window?n:window.innerWidth,r.height=o||"undefined"==typeof window?o:window.innerHeight,t.center||(r.center=[r.width/2,r.height/2]),i||(r.getMass=function(t){var r=1;v(null==t?void 0:t.data.mass)&&(r=null==t?void 0:t.data.mass);var n=e.getDegree(t.id,"both");return!n||n<5?r:5*n*r}),t.preventOverlap){var s=N(0,t.nodeSpacing);t.nodeSize?d(t.nodeSize)?r.nodeSize=function(e){var r=t.nodeSize;return Math.max(r[0],r[1])+s(e)}:r.nodeSize=function(e){return t.nodeSize+s(e)}:r.nodeSize=function(t){var e=((null==t?void 0:t.data)||{}).size;return e?d(e)?Math.max(e[0],e[1])+s(t):E(e)?Math.max(e.width,e.height)+s(t):e+s(t):10+s(t)}}return r.linkDistance=t.linkDistance?N(1,t.linkDistance):function(t){return 1+r.nodeSize(e.getNode(t.source))+r.nodeSize(e.getNode(t.target))},r.nodeStrength=N(1,t.nodeStrength),r.edgeStrength=N(1,t.edgeStrength),t},t.prototype.formatCentripetal=function(t,e){var r,n=t.centripetalOptions,o=t.center,i=t.clusterNodeStrength,s=t.leafCluster,a=t.clustering,h=t.nodeClusterBy,u=e.getAllNodes(),c=n||{leaf:2,single:2,others:1,center:function(t){return{x:o[0],y:o[1]}}};"function"!=typeof i&&(t.clusterNodeStrength=function(t){return i});var l=[];if(s&&h&&(r=Pt(e,h),l=Array.from(new Set(null==u?void 0:u.map((function(t){return t.data[h]}))))||[],t.centripetalOptions=Object.assign(c,{single:100,leaf:function(e){var n=r[e.id]||{},o=n.siblingLeaves,i=n.sameTypeLeaves;return(null==i?void 0:i.length)===(null==o?void 0:o.length)||1===(null==l?void 0:l.length)?1:t.clusterNodeStrength(e)},others:1,center:function(t){var n,o=e.getDegree(t.id,"both");if(!o)return{x:100,y:100};if(1===o){var i=(r[t.id]||{}).sameTypeLeaves,s=void 0===i?[]:i;1===s.length?n=void 0:s.length>1&&(n=Lt(s))}else n=void 0;return{x:null==n?void 0:n.x,y:null==n?void 0:n.y}}})),a&&h){r||(r=Pt(e,h)),l||(l=Array.from(new Set(u.map((function(t){return t.data[h]}))))),l=l.filter((function(t){return void 0!==t}));var f={};l.forEach((function(t){var r=u.filter((function(e){return e.data[h]===t})).map((function(t){return e.getNode(t.id)}));f[t]=Lt(r)})),t.centripetalOptions=Object.assign(c,{single:function(e){return t.clusterNodeStrength(e)},leaf:function(e){return t.clusterNodeStrength(e)},others:function(e){return t.clusterNodeStrength(e)},center:function(t){var e=f[t.data[h]];return{x:null==e?void 0:e.x,y:null==e?void 0:e.y}}})}var d=t.centripetalOptions||{},g=d.leaf,p=d.single,y=d.others;g&&"function"!=typeof g&&(t.centripetalOptions.leaf=function(){return g}),p&&"function"!=typeof p&&(t.centripetalOptions.single=function(){return p}),y&&"function"!=typeof y&&(t.centripetalOptions.others=function(){return y})},t.prototype.runOneStep=function(t,e,r,n,o){var i={},s=t.getAllNodes(),a=t.getAllEdges();if(null==s?void 0:s.length){var h=o.monitor;this.calRepulsive(t,i,o),a&&this.calAttractive(t,i),this.calGravity(t,e,i,o),this.updateVelocity(t,i,n,o),h&&h({energy:this.calTotalEnergy(i,s),nodes:e.getAllNodes(),edges:e.getAllEdges(),iterations:r})}},t.prototype.calTotalEnergy=function(t,e){if(!(null==e?void 0:e.length))return 0;var r=0;return e.forEach((function(e,n){var o=t[e.id].x,i=t[e.id].y,s=o*o+i*i,a=e.data.mass;r+=(void 0===a?1:a)*s*.5})),r},t.prototype.calRepulsive=function(t,e,r){var n=r.factor,o=r.coulombDisScale;!function(t,e,r,n){var o=e/r,i=t.getAllNodes(),s=i.map((function(t,e){var r=t.data,n=r.nodeStrength;return{x:r.x,y:r.y,size:r.size,index:e,vx:0,vy:0,weight:o*n}})),a=F(s,(function(t){return t.x}),(function(t){return t.y})).visitAfter(Tt);s.forEach((function(t){!function(t,e){e.visit((function(e,r,n,o,i){return function(t,e,r,n,o,i){var s=i.x-t.x||.1,a=i.y-t.y||.1,h=n-e,u=s*s+a*a,c=Math.sqrt(u)*u;if(h*h*.81<u){var l=t.weight/c;return i.vx+=s*l,i.vy+=a*l,!0}if(t.length)return!1;t.data!==i&&(l=t.data.weight/c,i.vx+=s*l,i.vy+=a*l)}(e,r,0,o,0,t)}))}(t,a)})),s.map((function(t,e){var r=i[e],o=r.id,s=r.data.mass,a=void 0===s?1:s;n[o]={x:t.vx/a,y:t.vy/a}}))}(t,n,o*o,e)},t.prototype.calAttractive=function(t,e){t.getAllEdges().forEach((function(r,n){var o=r.source,i=r.target,s=t.getNode(o),a=t.getNode(i);if(s&&a){var h=a.data.x-s.data.x,u=a.data.y-s.data.y;h||u||(h=.01*Math.random(),u=.01*Math.random());var c=Math.sqrt(h*h+u*u),l=h/c,f=u/c,d=r.data||{},g=d.linkDistance,p=void 0===g?200:g,y=d.edgeStrength,m=(p-c)*(void 0===y?200:y),w=1/(s.data.mass||1),v=1/(a.data.mass||1),x=l*m,M=f*m;e[o].x-=x*w,e[o].y-=M*w,e[i].x+=x*v,e[i].y+=M*v}}))},t.prototype.calGravity=function(t,e,r,n){var o=n.getCenter,i=t.getAllNodes(),a=e.getAllNodes(),h=e.getAllEdges(),u=n.width,c=n.height,l=n.center,f=n.gravity,d=n.centripetalOptions;i&&i.forEach((function(n){var i=n.id,g=n.data,p=g.mass,y=g.x,m=g.y,w=e.getNode(i),x=0,M=0,b=f,E=t.getDegree(i,"in"),N=t.getDegree(i,"out"),S=t.getDegree(i,"both"),A=null==o?void 0:o(w,S);if(A){var k=s(A,3);x=y-k[0],M=m-k[1],b=k[2]}else x=y-l[0],M=m-l[1];if(b&&(r[i].x-=b*x/p,r[i].y-=b*M/p),d){var D=d.leaf,I=d.single,_=d.others,R=d.center,z=(null==R?void 0:R(w,a,h,u,c))||{x:0,y:0,centerStrength:0},T=z.x,O=z.y,C=z.centerStrength;if(!v(T)||!v(O))return;var P=(y-T)/p,q=(m-O)/p;if(C&&(r[i].x-=C*P,r[i].y-=C*q),0===S){var F=I(w);if(!F)return;return r[i].x-=F*P,void(r[i].y-=F*q)}if(0===E||0===N){var L=D(w,a,h);if(!L)return;return r[i].x-=L*P,void(r[i].y-=L*q)}var j=_(w);if(!j)return;r[i].x-=j*P,r[i].y-=j*q}}))},t.prototype.updateVelocity=function(t,e,r,n){var o=n.damping,i=n.maxSpeed,s=n.interval,a=t.getAllNodes();(null==a?void 0:a.length)&&a.forEach((function(t){var n=t.id,a=(r[n].x+e[n].x*s)*o||.01,h=(r[n].y+e[n].y*s)*o||.01,u=Math.sqrt(a*a+h*h);if(u>i){var c=i/u;a*=c,h*=c}r[n]={x:a,y:h}}))},t.prototype.updatePosition=function(t,e,r,n){var o=this,i=n.distanceThresholdMode,s=n.interval,a=e.getAllNodes();if(null==a?void 0:a.length){var h=0;"max"===i?this.judgingDistance=-1/0:"min"===i&&(this.judgingDistance=1/0),a.forEach((function(n){var a=n.id,u=t.getNode(a);if(v(u.data.fx)&&v(u.data.fy))e.mergeNodeData(a,{x:u.data.fx,y:u.data.fy});else{var c=r[a].x*s,l=r[a].y*s;e.mergeNodeData(a,{x:n.data.x+c,y:n.data.y+l});var f=Math.sqrt(c*c+l*l);switch(i){case"max":o.judgingDistance<f&&(o.judgingDistance=f);break;case"min":o.judgingDistance>f&&(o.judgingDistance=f);break;default:h+=f}}})),i&&"mean"!==i||(this.judgingDistance=h/a.length)}else this.judgingDistance=0},t}(),Pt=function(t,e){var r=t.getAllNodes();if(!(null==r?void 0:r.length))return{};var n={};return r.forEach((function(r,o){1===t.getDegree(r.id,"both")&&(n[r.id]=qt(t,"leaf",r,e))})),n},qt=function(t,e,r,n){var o=t.getDegree(r.id,"in"),i=t.getDegree(r.id,"out"),s=r,a=[];return 0===o?(s=t.getSuccessors(r.id)[0],a=t.getNeighbors(s.id)):0===i&&(s=t.getPredecessors(r.id)[0],a=t.getNeighbors(s.id)),a=a.filter((function(e){return 0===t.getDegree(e.id,"in")||0===t.getDegree(e.id,"out")})),{coreNode:s,siblingLeaves:a,sameTypeLeaves:Ft(t,e,n,r,a)}},Ft=function(t,e,r,n,o){var i=n.data[r]||"",s=(null==o?void 0:o.filter((function(t){return t.data[r]===i})))||[];return"leaf"===e&&(s=s.filter((function(e){return 0===t.getDegree(e.id,"in")||0===t.getDegree(e.id,"out")}))),s},Lt=function(t){var e={x:0,y:0};t.forEach((function(t){var r=t.data,n=r.x,o=r.y;e.x+=n||0,e.y+=o||0}));var r=t.length||1;return{x:e.x/r,y:e.y/r}},jt=function(t,e){return e.map((function(e){var n=e.id,o=e.data,i=t.getNode(n);return r(r({},i),{data:r(r({},i.data),{x:o.x,y:o.y})})}))},Vt=function(){function t(t){this.id=t.id||0,this.rx=t.rx,this.ry=t.ry,this.fx=0,this.fy=0,this.mass=t.mass,this.degree=t.degree,this.g=t.g||0}return t.prototype.distanceTo=function(t){var e=this.rx-t.rx,r=this.ry-t.ry;return Math.hypot(e,r)},t.prototype.setPos=function(t,e){this.rx=t,this.ry=e},t.prototype.resetForce=function(){this.fx=0,this.fy=0},t.prototype.addForce=function(t){var e=t.rx-this.rx,r=t.ry-this.ry,n=Math.hypot(e,r);n=n<1e-4?1e-4:n;var o=this.g*(this.degree+1)*(t.degree+1)/n;this.fx+=o*e/n,this.fy+=o*r/n},t.prototype.in=function(t){return t.contains(this.rx,this.ry)},t.prototype.add=function(e){var r=this.mass+e.mass;return new t({rx:(this.rx*this.mass+e.rx*e.mass)/r,ry:(this.ry*this.mass+e.ry*e.mass)/r,mass:r,degree:this.degree+e.degree})},t}();const Wt=Vt;const $t=function(){function t(t){this.xmid=t.xmid,this.ymid=t.ymid,this.length=t.length,this.massCenter=t.massCenter||[0,0],this.mass=t.mass||1}return t.prototype.getLength=function(){return this.length},t.prototype.contains=function(t,e){var r=this.length/2;return t<=this.xmid+r&&t>=this.xmid-r&&e<=this.ymid+r&&e>=this.ymid-r},t.prototype.NW=function(){return new t({xmid:this.xmid-this.length/4,ymid:this.ymid+this.length/4,length:this.length/2})},t.prototype.NE=function(){return new t({xmid:this.xmid+this.length/4,ymid:this.ymid+this.length/4,length:this.length/2})},t.prototype.SW=function(){return new t({xmid:this.xmid-this.length/4,ymid:this.ymid-this.length/4,length:this.length/2})},t.prototype.SE=function(){return new t({xmid:this.xmid+this.length/4,ymid:this.ymid-this.length/4,length:this.length/2})},t}(),Gt=function(){function t(t){this.body=null,this.quad=null,this.NW=null,this.NE=null,this.SW=null,this.SE=null,this.theta=.5,null!=t&&(this.quad=t)}return t.prototype.insert=function(e){null!=this.body?this._isExternal()?(this.quad&&(this.NW=new t(this.quad.NW()),this.NE=new t(this.quad.NE()),this.SW=new t(this.quad.SW()),this.SE=new t(this.quad.SE())),this._putBody(this.body),this._putBody(e),this.body=this.body.add(e)):(this.body=this.body.add(e),this._putBody(e)):this.body=e},t.prototype._putBody=function(t){this.quad&&(t.in(this.quad.NW())&&this.NW?this.NW.insert(t):t.in(this.quad.NE())&&this.NE?this.NE.insert(t):t.in(this.quad.SW())&&this.SW?this.SW.insert(t):t.in(this.quad.SE())&&this.SE&&this.SE.insert(t))},t.prototype._isExternal=function(){return null==this.NW&&null==this.NE&&null==this.SW&&null==this.SE},t.prototype.updateForce=function(t){null!=this.body&&t!==this.body&&(this._isExternal()||(this.quad?this.quad.getLength():0)/this.body.distanceTo(t)<this.theta?t.addForce(this.body):(this.NW&&this.NW.updateForce(t),this.NE&&this.NE.updateForce(t),this.SW&&this.SW.updateForce(t),this.SE&&this.SE.updateForce(t)))},t}();var Ut={center:[0,0],width:300,height:300,kr:5,kg:1,mode:"normal",preventOverlap:!1,dissuadeHubs:!1,maxIteration:0,ks:.1,ksmax:10,tao:.1},Bt=function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="forceAtlas2",this.options=r(r({},Ut),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericForceAtlas2Layout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return this.genericForceAtlas2Layout(!0,t,e),[2]}))}))},t.prototype.genericForceAtlas2Layout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,s,a,h,u,c,f,d,g,p,y,m,w,v,x,b,E,N,S,k,D,I;return i(this,(function(i){if(o=e.getAllEdges(),s=e.getAllNodes(),a=this.formatOptions(n,s.length),h=a.width,u=a.height,c=a.prune,f=a.maxIteration,d=a.nodeSize,g=a.center,!(null==s?void 0:s.length)||1===s.length)return[2,A(e,t,g)];if(p=s.map((function(t){return M(t,[h,u])})),y=o.filter((function(t){return t.source!==t.target})),m=new l({nodes:p,edges:y}),w=this.getSizes(m,e,d),this.run(m,e,f,w,t,a),c){for(v=0;v<y.length;v+=1)x=y[v],b=x.source,E=x.target,N=m.getDegree(b),S=m.getDegree(b),N<=1?(k=m.getNode(E),m.mergeNodeData(b,{x:k.data.x,y:k.data.y})):S<=1&&(D=m.getNode(b),m.mergeNodeData(E,{x:D.data.x,y:D.data.y}));I=r(r({},a),{prune:!1,barnesHut:!1}),this.run(m,e,100,w,t,I)}return[2,{nodes:p,edges:o}]}))}))},t.prototype.getSizes=function(t,e,r){for(var n=t.getAllNodes(),o={},i=0;i<n.length;i+=1){var h=n[i],u=h.id,c=h.data;if(o[u]=10,v(c.size))o[u]=c.size;else if(d(c.size))isNaN(c.size[0])||(o[u]=Math.max(c.size[0])),isNaN(c.size[1])||(o[u]=Math.max(c.size[1]));else if(E(c.size))o[u]=Math.max(c.size.width,c.size.height);else if(b(r)){var l=r(e.getNode(u));d(l)?o[u]=Math.max.apply(Math,a([],s(l),!1)):o[u]=l}else d(r)?o[u]=Math.max.apply(Math,a([],s(r),!1)):v(r)&&(o[u]=r)}return o},t.prototype.formatOptions=function(t,e){void 0===t&&(t={});var n=r(r({},this.options),t),o=n.center,i=n.width,s=n.height,a=n.barnesHut,h=n.prune,u=n.maxIteration,c=n.kr,l=n.kg;return n.width=i||"undefined"==typeof window?i:window.innerWidth,n.height=s||"undefined"==typeof window?s:window.innerHeight,n.center=o||[n.width/2,n.height/2],void 0===a&&e>250&&(n.barnesHut=!0),void 0===h&&e>100&&(n.prune=!0),0!==u||h?0===u&&h&&(n.maxIteration=100,e<=200&&e>100?n.maxIteration=500:e>200&&(n.maxIteration=950)):(n.maxIteration=250,e<=200&&e>100?n.maxIteration=1e3:e>200&&(n.maxIteration=1200)),c||(n.kr=50,e>100&&e<=500?n.kr=20:e>500&&(n.kr=1)),l||(n.kg=20,e>100&&e<=500?n.kg=10:e>500&&(n.kg=1)),n},t.prototype.run=function(t,e,r,n,o,i){for(var s=i.kr,a=i.barnesHut,h=i.onTick,u=t.getAllNodes(),c=0,l=r,f={},d={},g={},p=0;p<u.length;p+=1){var y=u[p],m=y.data,w=y.id;if(f[w]=[0,0],a){var v={id:p,rx:m.x,ry:m.y,mass:1,g:s,degree:t.getDegree(w)};g[w]=new Wt(v)}}for(;l>0;)c=this.oneStep(t,{iter:l,preventOverlapIters:50,krPrime:100,sg:c,forces:f,preForces:d,bodies:g,sizes:n},i),l--,null==h||h({nodes:u,edges:e.getAllEdges()});return t},t.prototype.oneStep=function(t,e,r){for(var n=e.iter,o=e.preventOverlapIters,i=e.krPrime,h=e.sg,u=e.preForces,c=e.bodies,l=e.sizes,f=e.forces,d=r.preventOverlap,g=r.barnesHut,p=t.getAllNodes(),y=0;y<p.length;y+=1){var m=p[y].id;u[m]=a([],s(f[m]),!1),f[m]=[0,0]}return f=this.getAttrForces(t,n,o,l,f,r),f=g&&(d&&n>o||!d)?this.getOptRepGraForces(t,f,c,r):this.getRepGraForces(t,n,o,f,i,l,r),this.updatePos(t,f,u,h,r)},t.prototype.getAttrForces=function(t,e,r,n,o,i){for(var s=i.preventOverlap,a=i.dissuadeHubs,h=i.mode,u=i.prune,c=t.getAllEdges(),l=0;l<c.length;l+=1){var f=c[l],d=f.source,g=f.target,p=t.getNode(d),y=t.getNode(g),m=t.getDegree(d),w=t.getDegree(g);if(!u||!(m<=1||w<=1)){var v=[y.data.x-p.data.x,y.data.y-p.data.y],x=Math.hypot(v[0],v[1]);x=x<1e-4?1e-4:x,v[0]=v[0]/x,v[1]=v[1]/x,s&&e<r&&(x=x-n[d]-n[g]);var M=x,b=M;"linlog"===h&&(b=M=Math.log(1+x)),a&&(M=x/m,b=x/w),s&&e<r&&x<=0?(M=0,b=0):s&&e<r&&x>0&&(M=x,b=x),o[d][0]+=M*v[0],o[g][0]-=b*v[0],o[d][1]+=M*v[1],o[g][1]-=b*v[1]}}return o},t.prototype.getOptRepGraForces=function(t,e,r,n){for(var o=n.kg,i=n.center,s=n.prune,a=t.getAllNodes(),h=a.length,u=9e10,c=-9e10,l=9e10,f=-9e10,d=0;d<h;d+=1){var g=a[d],p=g.id,y=g.data;s&&t.getDegree(p)<=1||(r[p].setPos(y.x,y.y),y.x>=c&&(c=y.x),y.x<=u&&(u=y.x),y.y>=f&&(f=y.y),y.y<=l&&(l=y.y))}var m=Math.max(c-u,f-l),w=new $t({xmid:(c+u)/2,ymid:(f+l)/2,length:m,massCenter:i,mass:h}),v=new Gt(w);for(d=0;d<h;d+=1)p=a[d].id,s&&t.getDegree(p)<=1||r[p].in(w)&&v.insert(r[p]);for(d=0;d<h;d+=1){var x=a[d],M=(p=x.id,y=x.data,t.getDegree(p));if(!(s&&M<=1)){r[p].resetForce(),v.updateForce(r[p]),e[p][0]-=r[p].fx,e[p][1]-=r[p].fy;var b=[y.x-i[0],y.y-i[1]],E=Math.hypot(b[0],b[1]);E=E<1e-4?1e-4:E,b[0]=b[0]/E,b[1]=b[1]/E;var N=o*(M+1);e[p][0]-=N*b[0],e[p][1]-=N*b[1]}}return e},t.prototype.getRepGraForces=function(t,e,r,n,o,i,s){for(var a=s.preventOverlap,h=s.kr,u=s.kg,c=s.center,l=s.prune,f=t.getAllNodes(),d=f.length,g=0;g<d;g+=1){for(var p=f[g],y=t.getDegree(p.id),m=g+1;m<d;m+=1){var w=f[m],v=t.getDegree(w.id);if(!l||!(y<=1||v<=1)){var x=[w.data.x-p.data.x,w.data.y-p.data.y],M=Math.hypot(x[0],x[1]);M=M<1e-4?1e-4:M,x[0]=x[0]/M,x[1]=x[1]/M,a&&e<r&&(M=M-i[p.id]-i[w.id]);var b=h*(y+1)*(v+1)/M;a&&e<r&&M<0?b=o*(y+1)*(v+1):a&&e<r&&0===M?b=0:a&&e<r&&M>0&&(b=h*(y+1)*(v+1)/M),n[p.id][0]-=b*x[0],n[w.id][0]+=b*x[0],n[p.id][1]-=b*x[1],n[w.id][1]+=b*x[1]}}var E=[p.data.x-c[0],p.data.y-c[1]],N=Math.hypot(E[0],E[1]);E[0]=E[0]/N,E[1]=E[1]/N;var S=u*(y+1);n[p.id][0]-=S*E[0],n[p.id][1]-=S*E[1]}return n},t.prototype.updatePos=function(t,e,r,n,o){for(var i=o.ks,s=o.tao,a=o.prune,h=o.ksmax,u=t.getAllNodes(),c=u.length,l=[],f=[],d=0,g=0,p=n,y=0;y<c;y+=1){var m=u[y].id,w=t.getDegree(m);if(!(a&&w<=1)){var x=[e[m][0]-r[m][0],e[m][1]-r[m][1]],M=Math.hypot(x[0],x[1]),b=[e[m][0]+r[m][0],e[m][1]+r[m][1]],E=Math.hypot(b[0],b[1]);l[y]=M,f[y]=E/2,d+=(w+1)*l[y],g+=(w+1)*f[y]}}var N=p;for(p=s*g/d,0!==N&&(p=p>1.5*N?1.5*N:p),y=0;y<c;y+=1){var S=u[y],A=(m=S.id,S.data);if(w=t.getDegree(m),!(a&&w<=1||v(A.fx)&&v(A.fy))){var k=i*p/(1+p*Math.sqrt(l[y])),D=Math.hypot(e[m][0],e[m][1]),I=h/(D=D<1e-4?1e-4:D),_=(k=k>I?I:k)*e[m][0],R=k*e[m][1];t.mergeNodeData(m,{x:A.x+_,y:A.y+R})}}return p},t}(),Ht={maxIteration:1e3,gravity:10,speed:5,clustering:!1,clusterGravity:10,width:300,height:300,nodeClusterBy:"cluster"},Kt=function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="fruchterman",this.timeInterval=0,this.running=!1,this.options=r(r({},Ht),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericFruchtermanLayout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return this.genericFruchtermanLayout(!0,t,e),[2]}))}))},t.prototype.stop=function(){this.timeInterval&&"undefined"!=typeof window&&window.clearInterval(this.timeInterval),this.running=!1},t.prototype.tick=function(t){var e=this;if(void 0===t&&(t=this.options.maxIteration||1),this.lastResult)return this.lastResult;for(var r=0;r<t;r++)this.runOneStep(this.lastGraph,this.lastClusterMap,this.lastOptions);var n={nodes:this.lastLayoutNodes,edges:this.lastLayoutEdges};return this.lastAssign&&n.nodes.forEach((function(t){return e.lastGraph.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),this.lastOptions.onLayoutEnd&&this.lastOptions.onLayoutEnd(n),n},t.prototype.genericFruchtermanLayout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,s,a,h,u,c,f,d,g,p,y,m,w,v,x,b=this;return i(this,(function(i){return this.running?[2]:(o=this.formatOptions(n),s=o.width,a=o.height,h=o.center,u=o.clustering,c=o.nodeClusterBy,f=o.maxIteration,d=o.onTick,g=e.getAllNodes(),p=e.getAllEdges(),(null==g?void 0:g.length)?1===g.length?(t&&e.mergeNodeData(g[0].id,{x:h[0],y:h[1]}),y={nodes:[r(r({},g[0]),{data:r(r({},g[0].data),{x:h[0],y:h[1]})})],edges:p},this.lastResult=y,[2,y]):(m=g.map((function(t){return M(t,[s,a])})),w=new l({nodes:m,edges:p}),v={},u&&m.forEach((function(t){var e=t.data[c];v[e]||(v[e]={name:e,cx:0,cy:0,count:0})})),this.lastLayoutNodes=m,this.lastLayoutEdges=p,this.lastAssign=t,this.lastGraph=w,this.lastOptions=o,this.lastClusterMap=v,"undefined"==typeof window?[2]:(x=0,[2,new Promise((function(r){b.timeInterval=window.setInterval((function(){b.running?(b.runOneStep(w,v,o),t&&m.forEach((function(t){var r=t.id,n=t.data;return e.mergeNodeData(r,{x:n.x,y:n.y})})),null==d||d({nodes:m,edges:p}),++x>=f&&(window.clearInterval(b.timeInterval),r({nodes:m,edges:p}))):r({nodes:m,edges:p})}),0),b.running=!0}))])):(y={nodes:[],edges:p},this.lastResult=y,[2,y]))}))}))},t.prototype.formatOptions=function(t){void 0===t&&(t={});var e=r(r({},this.options),t),n=e.clustering,o=e.nodeClusterBy,i=e.center,s=e.width,a=e.height;return e.width=s||"undefined"==typeof window?s:window.innerWidth,e.height=a||"undefined"==typeof window?a:window.innerHeight,e.center=i||[e.width/2,e.height/2],e.clustering=n&&!!o,e},t.prototype.runOneStep=function(t,e,r){var n=r.height,o=r.width,i=r.gravity,s=r.center,a=r.speed,h=r.clustering,u=r.nodeClusterBy,c=r.clusterGravity,l=n*o,f=Math.sqrt(l)/10,d=t.getAllNodes(),g=l/(d.length+1),p=Math.sqrt(g),y={};if(this.applyCalculate(t,y,p,g),h){for(var m in e)e[m].cx=0,e[m].cy=0,e[m].count=0;for(var m in d.forEach((function(t){var r=t.data,n=e[r[u]];v(r.x)&&(n.cx+=r.x),v(r.y)&&(n.cy+=r.y),n.count++})),e)e[m].cx/=e[m].count,e[m].cy/=e[m].count;var w=c||i;d.forEach((function(t,r){var n=t.id,o=t.data;if(v(o.x)&&v(o.y)){var i=e[o[u]],s=Math.sqrt((o.x-i.cx)*(o.x-i.cx)+(o.y-i.cy)*(o.y-i.cy)),a=p*w;y[n].x-=a*(o.x-i.cx)/s,y[n].y-=a*(o.y-i.cy)/s}}))}d.forEach((function(t,e){var r=t.id,n=t.data;if(v(n.x)&&v(n.y)){var o=.01*p*i;y[r].x-=o*(n.x-s[0]),y[r].y-=o*(n.y-s[1])}})),d.forEach((function(e,r){var n=e.id,o=e.data;if(v(o.fx)&&v(o.fy))return o.x=o.fx,void(o.y=o.fy);if(v(o.x)&&v(o.y)){var i=Math.sqrt(y[n].x*y[n].x+y[n].y*y[n].y);if(i>0){var s=Math.min(f*(a/800),i);t.mergeNodeData(n,{x:o.x+y[n].x/i*s,y:o.y+y[n].y/i*s})}}}))},t.prototype.applyCalculate=function(t,e,r,n){this.calRepulsive(t,e,n),this.calAttractive(t,e,r)},t.prototype.calRepulsive=function(t,e,r){var n=t.getAllNodes();n.forEach((function(t,o){var i=t.data,s=t.id;e[s]={x:0,y:0},n.forEach((function(t,n){var a=t.data,h=t.id;if(!(o<=n)&&v(i.x)&&v(a.x)&&v(i.y)&&v(a.y)){var u=i.x-a.x,c=i.y-a.y,l=u*u+c*c;0===l&&(l=1,u=.01,c=.01);var f=r/l,d=u*f,g=c*f;e[s].x+=d,e[s].y+=g,e[h].x-=d,e[h].y-=g}}))}))},t.prototype.calAttractive=function(t,e,r){t.getAllEdges().forEach((function(n){var o=n.source,i=n.target;if(o&&i&&o!==i){var s=t.getNode(o).data,a=t.getNode(i).data;if(v(a.x)&&v(s.x)&&v(a.y)&&v(s.y)){var h=a.x-s.x,u=a.y-s.y,c=Math.sqrt(h*h+u*u)/r,l=h*c,f=u*c;e[o].x+=l,e[o].y+=f,e[i].x-=l,e[i].y-=f}}}))},t}(),Jt={begin:[0,0],preventOverlap:!0,preventOverlapPadding:10,condense:!1,rows:void 0,cols:void 0,position:void 0,sortBy:"degree",nodeSize:30,width:300,height:300},Yt=function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="grid",this.options=r(r({},Jt),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericGridLayout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return this.genericGridLayout(!0,t,e),[2]}))}))},t.prototype.genericGridLayout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,s,a,h,u,c,l,f,g,p,y,m,w,x,b,E,k,D,I,_,z,T,O,C,P,q,F,L,j,V,W,$,G,U,B,H,K;return i(this,(function(i){if(o=r(r({},this.options),n),s=o.begin,a=void 0===s?[0,0]:s,h=o.condense,u=o.preventOverlapPadding,c=o.preventOverlap,l=o.rows,f=o.cols,g=o.nodeSpacing,p=o.nodeSize,y=o.width,m=o.height,w=o.position,x=o.sortBy,b=e.getAllNodes(),E=e.getAllEdges(),!(k=null==b?void 0:b.length)||1===k)return[2,A(e,t,a)];if(D=b.map((function(t){return M(t)})),"id"===x||R(x)&&void 0!==D[0].data[x]||(x="degree"),"degree"===x?D.sort((function(t,r){return e.getDegree(r.id,"both")-e.getDegree(t.id,"both")})):"id"===x?D.sort((function(t,e){return v(e.id)&&v(t.id)?e.id-t.id:"".concat(t.id).localeCompare("".concat(e.id))})):D.sort((function(t,e){return e.data[x]-t.data[x]})),I=y||"undefined"==typeof window?y:window.innerWidth,_=m||"undefined"==typeof window?m:window.innerHeight,z=k,T={rows:l,cols:f},null!=l&&null!=f?(T.rows=l,T.cols=f):null!=l&&null==f?(T.rows=l,T.cols=Math.ceil(z/T.rows)):null==l&&null!=f?(T.cols=f,T.rows=Math.ceil(z/T.cols)):(O=Math.sqrt(z*_/I),T.rows=Math.round(O),T.cols=Math.round(I/_*O)),T.rows=Math.max(T.rows,1),T.cols=Math.max(T.cols,1),T.cols*T.rows>z)C=Xt(T),P=Qt(T),(C-1)*P>=z?Xt(T,C-1):(P-1)*C>=z&&Qt(T,P-1);else for(;T.cols*T.rows<z;)C=Xt(T),((P=Qt(T))+1)*C>=z?Qt(T,P+1):Xt(T,C+1);for(q=h?0:I/T.cols,F=h?0:_/T.rows,(c||g)&&(L=N(10,g),j=S(30,p,!1),D.forEach((function(t){t.data.x&&t.data.y||(t.data.x=0,t.data.y=0);var r,n,o=e.getNode(t.id),i=j(o)||30;d(i)?(r=i[0],n=i[1]):(r=i,n=i);var s=void 0!==L?L(t):u,a=r+s,h=n+s;q=Math.max(q,a),F=Math.max(F,h)}))),V={},W={row:0,col:0},$={},G=0;G<D.length;G++){if(U=D[G],B=void 0,w&&(B=w(e.getNode(U.id))),B&&(void 0!==B.row||void 0!==B.col)){if(void 0===(H={row:B.row,col:B.col}).col)for(H.col=0;Zt(V,H);)H.col++;else if(void 0===H.row)for(H.row=0;Zt(V,H);)H.row++;$[U.id]=H,te(V,H)}re(U,a,q,F,$,T,W,V)}return K={nodes:D,edges:E},t&&D.forEach((function(t){e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),[2,K]}))}))},t}(),Xt=function(t,e){var r,n=t.rows||5,o=t.cols||5;return null==e?r=Math.min(n,o):Math.min(n,o)===t.rows?t.rows=e:t.cols=e,r},Qt=function(t,e){var r,n=t.rows||5,o=t.cols||5;return null==e?r=Math.max(n,o):Math.max(n,o)===t.rows?t.rows=e:t.cols=e,r},Zt=function(t,e){return t["c-".concat(e.row,"-").concat(e.col)]||!1},te=function(t,e){return t["c-".concat(e.row,"-").concat(e.col)]=!0},ee=function(t,e){var r=t.cols||5;e.col++,e.col>=r&&(e.col=0,e.row++)},re=function(t,e,r,n,o,i,s,a){var h,u,c=o[t.id];if(c)h=c.col*r+r/2+e[0],u=c.row*n+n/2+e[1];else{for(;Zt(a,s);)ee(i,s);h=s.col*r+r/2+e[0],u=s.row*n+n/2+e[1],te(a,s),ee(i,s)}t.data.x=h,t.data.y=u};const ne=Object.prototype.toString;function oe(t){return ne.call(t).endsWith("Array]")}function ie(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!oe(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var r=e.fromIndex,n=void 0===r?0:r,o=e.toIndex,i=void 0===o?t.length:o;if(n<0||n>=t.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(i<=n||i>t.length||!Number.isInteger(i))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var s=t[n],a=n+1;a<i;a++)t[a]>s&&(s=t[a]);return s}function se(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!oe(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var r=e.fromIndex,n=void 0===r?0:r,o=e.toIndex,i=void 0===o?t.length:o;if(n<0||n>=t.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(i<=n||i>t.length||!Number.isInteger(i))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var s=t[n],a=n+1;a<i;a++)t[a]<s&&(s=t[a]);return s}function ae(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!oe(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");if(void 0!==r.output){if(!oe(r.output))throw new TypeError("output option must be an array if specified");e=r.output}else e=new Array(t.length);var n=se(t),o=ie(t);if(n===o)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var i=r.min,s=void 0===i?r.autoMinMax?n:0:i,a=r.max,h=void 0===a?r.autoMinMax?o:1:a;if(s>=h)throw new RangeError("min option must be smaller than max option");for(var u=(h-s)/(o-n),c=0;c<t.length;c++)e[c]=(t[c]-n)*u+s;return e}const he=" ".repeat(2),ue=" ".repeat(4);function ce(t,e={}){const{maxRows:r=15,maxColumns:n=10,maxNumSize:o=8,padMinus:i="auto"}=e;return`${t.constructor.name} {\n${he}[\n${ue}${function(t,e,r,n,o){const{rows:i,columns:s}=t,a=Math.min(i,e),h=Math.min(s,r),u=[];if("auto"===o){o=!1;t:for(let e=0;e<a;e++)for(let r=0;r<h;r++)if(t.get(e,r)<0){o=!0;break t}}for(let e=0;e<a;e++){let r=[];for(let i=0;i<h;i++)r.push(le(t.get(e,i),n,o));u.push(`${r.join(" ")}`)}return h!==s&&(u[u.length-1]+=` ... ${s-r} more columns`),a!==i&&u.push(`... ${i-e} more rows`),u.join(`\n${ue}`)}(t,r,n,o,i)}\n${he}]\n${he}rows: ${t.rows}\n${he}columns: ${t.columns}\n}`}function le(t,e,r){return(t>=0&&r?` ${fe(t,e-1)}`:fe(t,e)).padEnd(e)}function fe(t,e){let r=t.toString();if(r.length<=e)return r;let n=t.toFixed(e);if(n.length>e&&(n=t.toFixed(Math.max(0,e-(n.length-e)))),n.length<=e&&!n.startsWith("0.000")&&!n.startsWith("-0.000"))return n;let o=t.toExponential(e);return o.length>e&&(o=t.toExponential(Math.max(0,e-(o.length-e)))),o.slice(0)}function de(t,e,r){let n=r?t.rows:t.rows-1;if(e<0||e>n)throw new RangeError("Row index out of range")}function ge(t,e,r){let n=r?t.columns:t.columns-1;if(e<0||e>n)throw new RangeError("Column index out of range")}function pe(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.columns)throw new RangeError("vector size must be the same as the number of columns");return e}function ye(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.rows)throw new RangeError("vector size must be the same as the number of rows");return e}function me(t,e,r,n,o){if(5!==arguments.length)throw new RangeError("expected 4 arguments");if(ve("startRow",e),ve("endRow",r),ve("startColumn",n),ve("endColumn",o),e>r||n>o||e<0||e>=t.rows||r<0||r>=t.rows||n<0||n>=t.columns||o<0||o>=t.columns)throw new RangeError("Submatrix indices are out of range")}function we(t,e=0){let r=[];for(let n=0;n<t;n++)r.push(e);return r}function ve(t,e){if("number"!=typeof e)throw new TypeError(`${t} must be a number`)}function xe(t){if(t.isEmpty())throw new Error("Empty matrix has no elements to index")}class Me{static from1DArray(t,e,r){if(t*e!==r.length)throw new RangeError("data length does not match given dimensions");let n=new Ee(t,e);for(let o=0;o<t;o++)for(let t=0;t<e;t++)n.set(o,t,r[o*e+t]);return n}static rowVector(t){let e=new Ee(1,t.length);for(let r=0;r<t.length;r++)e.set(0,r,t[r]);return e}static columnVector(t){let e=new Ee(t.length,1);for(let r=0;r<t.length;r++)e.set(r,0,t[r]);return e}static zeros(t,e){return new Ee(t,e)}static ones(t,e){return new Ee(t,e).fill(1)}static rand(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{random:n=Math.random}=r;let o=new Ee(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)o.set(r,t,n());return o}static randInt(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{min:n=0,max:o=1e3,random:i=Math.random}=r;if(!Number.isInteger(n))throw new TypeError("min must be an integer");if(!Number.isInteger(o))throw new TypeError("max must be an integer");if(n>=o)throw new RangeError("min must be smaller than max");let s=o-n,a=new Ee(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++){let e=n+Math.round(i()*s);a.set(r,t,e)}return a}static eye(t,e,r){void 0===e&&(e=t),void 0===r&&(r=1);let n=Math.min(t,e),o=this.zeros(t,e);for(let t=0;t<n;t++)o.set(t,t,r);return o}static diag(t,e,r){let n=t.length;void 0===e&&(e=n),void 0===r&&(r=e);let o=Math.min(n,e,r),i=this.zeros(e,r);for(let e=0;e<o;e++)i.set(e,e,t[e]);return i}static min(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,n=t.columns,o=new Ee(r,n);for(let i=0;i<r;i++)for(let r=0;r<n;r++)o.set(i,r,Math.min(t.get(i,r),e.get(i,r)));return o}static max(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,n=t.columns,o=new this(r,n);for(let i=0;i<r;i++)for(let r=0;r<n;r++)o.set(i,r,Math.max(t.get(i,r),e.get(i,r)));return o}static checkMatrix(t){return Me.isMatrix(t)?t:new Ee(t)}static isMatrix(t){return null!=t&&"Matrix"===t.klass}get size(){return this.rows*this.columns}apply(t){if("function"!=typeof t)throw new TypeError("callback must be a function");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.call(this,e,r);return this}to1DArray(){let t=[];for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.push(this.get(e,r));return t}to2DArray(){let t=[];for(let e=0;e<this.rows;e++){t.push([]);for(let r=0;r<this.columns;r++)t[e].push(this.get(e,r))}return t}toJSON(){return this.to2DArray()}isRowVector(){return 1===this.rows}isColumnVector(){return 1===this.columns}isVector(){return 1===this.rows||1===this.columns}isSquare(){return this.rows===this.columns}isEmpty(){return 0===this.rows||0===this.columns}isSymmetric(){if(this.isSquare()){for(let t=0;t<this.rows;t++)for(let e=0;e<=t;e++)if(this.get(t,e)!==this.get(e,t))return!1;return!0}return!1}isEchelonForm(){let t=0,e=0,r=-1,n=!0,o=!1;for(;t<this.rows&&n;){for(e=0,o=!1;e<this.columns&&!1===o;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(o=!0,r=e):(n=!1,o=!0);t++}return n}isReducedEchelonForm(){let t=0,e=0,r=-1,n=!0,o=!1;for(;t<this.rows&&n;){for(e=0,o=!1;e<this.columns&&!1===o;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(o=!0,r=e):(n=!1,o=!0);for(let r=e+1;r<this.rows;r++)0!==this.get(t,r)&&(n=!1);t++}return n}echelonForm(){let t=this.clone(),e=0,r=0;for(;e<t.rows&&r<t.columns;){let n=e;for(let o=e;o<t.rows;o++)t.get(o,r)>t.get(n,r)&&(n=o);if(0===t.get(n,r))r++;else{t.swapRows(e,n);let o=t.get(e,r);for(let n=r;n<t.columns;n++)t.set(e,n,t.get(e,n)/o);for(let n=e+1;n<t.rows;n++){let o=t.get(n,r)/t.get(e,r);t.set(n,r,0);for(let i=r+1;i<t.columns;i++)t.set(n,i,t.get(n,i)-t.get(e,i)*o)}e++,r++}}return t}reducedEchelonForm(){let t=this.echelonForm(),e=t.columns,r=t.rows,n=r-1;for(;n>=0;)if(0===t.maxRow(n))n--;else{let o=0,i=!1;for(;o<r&&!1===i;)1===t.get(n,o)?i=!0:o++;for(let r=0;r<n;r++){let i=t.get(r,o);for(let s=o;s<e;s++){let e=t.get(r,s)-i*t.get(n,s);t.set(r,s,e)}}n--}return t}set(){throw new Error("set method is unimplemented")}get(){throw new Error("get method is unimplemented")}repeat(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{rows:e=1,columns:r=1}=t;if(!Number.isInteger(e)||e<=0)throw new TypeError("rows must be a positive integer");if(!Number.isInteger(r)||r<=0)throw new TypeError("columns must be a positive integer");let n=new Ee(this.rows*e,this.columns*r);for(let t=0;t<e;t++)for(let e=0;e<r;e++)n.setSubMatrix(this,this.rows*t,this.columns*e);return n}fill(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,t);return this}neg(){return this.mulS(-1)}getRow(t){de(this,t);let e=[];for(let r=0;r<this.columns;r++)e.push(this.get(t,r));return e}getRowVector(t){return Ee.rowVector(this.getRow(t))}setRow(t,e){de(this,t),e=pe(this,e);for(let r=0;r<this.columns;r++)this.set(t,r,e[r]);return this}swapRows(t,e){de(this,t),de(this,e);for(let r=0;r<this.columns;r++){let n=this.get(t,r);this.set(t,r,this.get(e,r)),this.set(e,r,n)}return this}getColumn(t){ge(this,t);let e=[];for(let r=0;r<this.rows;r++)e.push(this.get(r,t));return e}getColumnVector(t){return Ee.columnVector(this.getColumn(t))}setColumn(t,e){ge(this,t),e=ye(this,e);for(let r=0;r<this.rows;r++)this.set(r,t,e[r]);return this}swapColumns(t,e){ge(this,t),ge(this,e);for(let r=0;r<this.rows;r++){let n=this.get(r,t);this.set(r,t,this.get(r,e)),this.set(r,e,n)}return this}addRowVector(t){t=pe(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[r]);return this}subRowVector(t){t=pe(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[r]);return this}mulRowVector(t){t=pe(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[r]);return this}divRowVector(t){t=pe(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[r]);return this}addColumnVector(t){t=ye(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[e]);return this}subColumnVector(t){t=ye(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[e]);return this}mulColumnVector(t){t=ye(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[e]);return this}divColumnVector(t){t=ye(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[e]);return this}mulRow(t,e){de(this,t);for(let r=0;r<this.columns;r++)this.set(t,r,this.get(t,r)*e);return this}mulColumn(t,e){ge(this,t);for(let r=0;r<this.rows;r++)this.set(r,t,this.get(r,t)*e);return this}max(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}maxIndex(){xe(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let n=0;n<this.columns;n++)this.get(r,n)>t&&(t=this.get(r,n),e[0]=r,e[1]=n);return e}min(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}minIndex(){xe(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let n=0;n<this.columns;n++)this.get(r,n)<t&&(t=this.get(r,n),e[0]=r,e[1]=n);return e}maxRow(t){if(de(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)>e&&(e=this.get(t,r));return e}maxRowIndex(t){de(this,t),xe(this);let e=this.get(t,0),r=[t,0];for(let n=1;n<this.columns;n++)this.get(t,n)>e&&(e=this.get(t,n),r[1]=n);return r}minRow(t){if(de(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)<e&&(e=this.get(t,r));return e}minRowIndex(t){de(this,t),xe(this);let e=this.get(t,0),r=[t,0];for(let n=1;n<this.columns;n++)this.get(t,n)<e&&(e=this.get(t,n),r[1]=n);return r}maxColumn(t){if(ge(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)>e&&(e=this.get(r,t));return e}maxColumnIndex(t){ge(this,t),xe(this);let e=this.get(0,t),r=[0,t];for(let n=1;n<this.rows;n++)this.get(n,t)>e&&(e=this.get(n,t),r[0]=n);return r}minColumn(t){if(ge(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)<e&&(e=this.get(r,t));return e}minColumnIndex(t){ge(this,t),xe(this);let e=this.get(0,t),r=[0,t];for(let n=1;n<this.rows;n++)this.get(n,t)<e&&(e=this.get(n,t),r[0]=n);return r}diag(){let t=Math.min(this.rows,this.columns),e=[];for(let r=0;r<t;r++)e.push(this.get(r,r));return e}norm(t="frobenius"){let e=0;if("max"===t)return this.max();if("frobenius"===t){for(let t=0;t<this.rows;t++)for(let r=0;r<this.columns;r++)e+=this.get(t,r)*this.get(t,r);return Math.sqrt(e)}throw new RangeError(`unknown norm type: ${t}`)}cumulativeSum(){let t=0;for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t+=this.get(e,r),this.set(e,r,t);return this}dot(t){Me.isMatrix(t)&&(t=t.to1DArray());let e=this.to1DArray();if(e.length!==t.length)throw new RangeError("vectors do not have the same size");let r=0;for(let n=0;n<e.length;n++)r+=e[n]*t[n];return r}mmul(t){t=Ee.checkMatrix(t);let e=this.rows,r=this.columns,n=t.columns,o=new Ee(e,n),i=new Float64Array(r);for(let s=0;s<n;s++){for(let e=0;e<r;e++)i[e]=t.get(e,s);for(let t=0;t<e;t++){let e=0;for(let n=0;n<r;n++)e+=this.get(t,n)*i[n];o.set(t,s,e)}}return o}strassen2x2(t){t=Ee.checkMatrix(t);let e=new Ee(2,2);const r=this.get(0,0),n=t.get(0,0),o=this.get(0,1),i=t.get(0,1),s=this.get(1,0),a=t.get(1,0),h=this.get(1,1),u=t.get(1,1),c=(r+h)*(n+u),l=(s+h)*n,f=r*(i-u),d=h*(a-n),g=(r+o)*u,p=c+d-g+(o-h)*(a+u),y=f+g,m=l+d,w=c-l+f+(s-r)*(n+i);return e.set(0,0,p),e.set(0,1,y),e.set(1,0,m),e.set(1,1,w),e}strassen3x3(t){t=Ee.checkMatrix(t);let e=new Ee(3,3);const r=this.get(0,0),n=this.get(0,1),o=this.get(0,2),i=this.get(1,0),s=this.get(1,1),a=this.get(1,2),h=this.get(2,0),u=this.get(2,1),c=this.get(2,2),l=t.get(0,0),f=t.get(0,1),d=t.get(0,2),g=t.get(1,0),p=t.get(1,1),y=t.get(1,2),m=t.get(2,0),w=t.get(2,1),v=t.get(2,2),x=(r-i)*(-f+p),M=(-r+i+s)*(l-f+p),b=(i+s)*(-l+f),E=r*l,N=(-r+h+u)*(l-d+y),S=(-r+h)*(d-y),A=(h+u)*(-l+d),k=(-o+u+c)*(p+m-w),D=(o-c)*(p-w),I=o*m,_=(u+c)*(-m+w),R=(-o+s+a)*(y+m-v),z=(o-a)*(y-v),T=(s+a)*(-m+v),O=E+I+n*g,C=(r+n+o-i-s-u-c)*p+M+b+E+k+I+_,P=E+N+A+(r+n+o-s-a-h-u)*y+I+R+T,q=x+s*(-l+f+g-p-y-m+v)+M+E+I+R+z,F=x+M+b+E+a*w,L=I+R+z+T+i*d,j=E+N+S+u*(-l+d+g-p-y-m+w)+k+D+I,V=k+D+I+_+h*f,W=E+N+S+A+c*v;return e.set(0,0,O),e.set(0,1,C),e.set(0,2,P),e.set(1,0,q),e.set(1,1,F),e.set(1,2,L),e.set(2,0,j),e.set(2,1,V),e.set(2,2,W),e}mmulStrassen(t){t=Ee.checkMatrix(t);let e=this.clone(),r=e.rows,n=e.columns,o=t.rows,i=t.columns;function s(t,e,r){let n=t.rows,o=t.columns;if(n===e&&o===r)return t;{let n=Me.zeros(e,r);return n=n.setSubMatrix(t,0,0),n}}n!==o&&console.warn(`Multiplying ${r} x ${n} and ${o} x ${i} matrix: dimensions do not match.`);let a=Math.max(r,o),h=Math.max(n,i);return e=s(e,a,h),function t(e,r,n,o){if(n<=512||o<=512)return e.mmul(r);n%2==1&&o%2==1?(e=s(e,n+1,o+1),r=s(r,n+1,o+1)):n%2==1?(e=s(e,n+1,o),r=s(r,n+1,o)):o%2==1&&(e=s(e,n,o+1),r=s(r,n,o+1));let i=parseInt(e.rows/2,10),a=parseInt(e.columns/2,10),h=e.subMatrix(0,i-1,0,a-1),u=r.subMatrix(0,i-1,0,a-1),c=e.subMatrix(0,i-1,a,e.columns-1),l=r.subMatrix(0,i-1,a,r.columns-1),f=e.subMatrix(i,e.rows-1,0,a-1),d=r.subMatrix(i,r.rows-1,0,a-1),g=e.subMatrix(i,e.rows-1,a,e.columns-1),p=r.subMatrix(i,r.rows-1,a,r.columns-1),y=t(Me.add(h,g),Me.add(u,p),i,a),m=t(Me.add(f,g),u,i,a),w=t(h,Me.sub(l,p),i,a),v=t(g,Me.sub(d,u),i,a),x=t(Me.add(h,c),p,i,a),M=t(Me.sub(f,h),Me.add(u,l),i,a),b=t(Me.sub(c,g),Me.add(d,p),i,a),E=Me.add(y,v);E.sub(x),E.add(b);let N=Me.add(w,x),S=Me.add(m,v),A=Me.sub(y,m);A.add(w),A.add(M);let k=Me.zeros(2*E.rows,2*E.columns);return k=k.setSubMatrix(E,0,0),k=k.setSubMatrix(N,E.rows,0),k=k.setSubMatrix(S,0,E.columns),k=k.setSubMatrix(A,E.rows,E.columns),k.subMatrix(0,n-1,0,o-1)}(e,t=s(t,a,h),a,h)}scaleRows(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let n=new Ee(this.rows,this.columns);for(let t=0;t<this.rows;t++){const o=this.getRow(t);o.length>0&&ae(o,{min:e,max:r,output:o}),n.setRow(t,o)}return n}scaleColumns(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let n=new Ee(this.rows,this.columns);for(let t=0;t<this.columns;t++){const o=this.getColumn(t);o.length&&ae(o,{min:e,max:r,output:o}),n.setColumn(t,o)}return n}flipRows(){const t=Math.ceil(this.columns/2);for(let e=0;e<this.rows;e++)for(let r=0;r<t;r++){let t=this.get(e,r),n=this.get(e,this.columns-1-r);this.set(e,r,n),this.set(e,this.columns-1-r,t)}return this}flipColumns(){const t=Math.ceil(this.rows/2);for(let e=0;e<this.columns;e++)for(let r=0;r<t;r++){let t=this.get(r,e),n=this.get(this.rows-1-r,e);this.set(r,e,n),this.set(this.rows-1-r,e,t)}return this}kroneckerProduct(t){t=Ee.checkMatrix(t);let e=this.rows,r=this.columns,n=t.rows,o=t.columns,i=new Ee(e*n,r*o);for(let s=0;s<e;s++)for(let e=0;e<r;e++)for(let r=0;r<n;r++)for(let a=0;a<o;a++)i.set(n*s+r,o*e+a,this.get(s,e)*t.get(r,a));return i}kroneckerSum(t){if(t=Ee.checkMatrix(t),!this.isSquare()||!t.isSquare())throw new Error("Kronecker Sum needs two Square Matrices");let e=this.rows,r=t.rows,n=this.kroneckerProduct(Ee.eye(r,r)),o=Ee.eye(e,e).kroneckerProduct(t);return n.add(o)}transpose(){let t=new Ee(this.columns,this.rows);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(r,e,this.get(e,r));return t}sortRows(t=be){for(let e=0;e<this.rows;e++)this.setRow(e,this.getRow(e).sort(t));return this}sortColumns(t=be){for(let e=0;e<this.columns;e++)this.setColumn(e,this.getColumn(e).sort(t));return this}subMatrix(t,e,r,n){me(this,t,e,r,n);let o=new Ee(e-t+1,n-r+1);for(let i=t;i<=e;i++)for(let e=r;e<=n;e++)o.set(i-t,e-r,this.get(i,e));return o}subMatrixRow(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.columns-1),e>r||e<0||e>=this.columns||r<0||r>=this.columns)throw new RangeError("Argument out of range");let n=new Ee(t.length,r-e+1);for(let o=0;o<t.length;o++)for(let i=e;i<=r;i++){if(t[o]<0||t[o]>=this.rows)throw new RangeError(`Row index out of range: ${t[o]}`);n.set(o,i-e,this.get(t[o],i))}return n}subMatrixColumn(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.rows-1),e>r||e<0||e>=this.rows||r<0||r>=this.rows)throw new RangeError("Argument out of range");let n=new Ee(r-e+1,t.length);for(let o=0;o<t.length;o++)for(let i=e;i<=r;i++){if(t[o]<0||t[o]>=this.columns)throw new RangeError(`Column index out of range: ${t[o]}`);n.set(i-e,o,this.get(i,t[o]))}return n}setSubMatrix(t,e,r){if((t=Ee.checkMatrix(t)).isEmpty())return this;me(this,e,e+t.rows-1,r,r+t.columns-1);for(let n=0;n<t.rows;n++)for(let o=0;o<t.columns;o++)this.set(e+n,r+o,t.get(n,o));return this}selection(t,e){!function(t,e){if(!oe(e))throw new TypeError("row indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.rows)throw new RangeError("row indices are out of range")}(this,t),function(t,e){if(!oe(e))throw new TypeError("column indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.columns)throw new RangeError("column indices are out of range")}(this,e);let r=new Ee(t.length,e.length);for(let n=0;n<t.length;n++){let o=t[n];for(let t=0;t<e.length;t++){let i=e[t];r.set(n,t,this.get(o,i))}}return r}trace(){let t=Math.min(this.rows,this.columns),e=0;for(let r=0;r<t;r++)e+=this.get(r,r);return e}clone(){let t=new Ee(this.rows,this.columns);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(e,r,this.get(e,r));return t}sum(t){switch(t){case"row":return function(t){let e=we(t.rows);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[r]+=t.get(r,n);return e}(this);case"column":return function(t){let e=we(t.columns);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[n]+=t.get(r,n);return e}(this);case void 0:return function(t){let e=0;for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)e+=t.get(r,n);return e}(this);default:throw new Error(`invalid option: ${t}`)}}product(t){switch(t){case"row":return function(t){let e=we(t.rows,1);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[r]*=t.get(r,n);return e}(this);case"column":return function(t){let e=we(t.columns,1);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[n]*=t.get(r,n);return e}(this);case void 0:return function(t){let e=1;for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)e*=t.get(r,n);return e}(this);default:throw new Error(`invalid option: ${t}`)}}mean(t){const e=this.sum(t);switch(t){case"row":for(let t=0;t<this.rows;t++)e[t]/=this.columns;return e;case"column":for(let t=0;t<this.columns;t++)e[t]/=this.rows;return e;case void 0:return e/this.size;default:throw new Error(`invalid option: ${t}`)}}variance(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{unbiased:r=!0,mean:n=this.mean(t)}=e;if("boolean"!=typeof r)throw new TypeError("unbiased must be a boolean");switch(t){case"row":if(!oe(n))throw new TypeError("mean must be an array");return function(t,e,r){const n=t.rows,o=t.columns,i=[];for(let s=0;s<n;s++){let n=0,a=0,h=0;for(let e=0;e<o;e++)h=t.get(s,e)-r[s],n+=h,a+=h*h;e?i.push((a-n*n/o)/(o-1)):i.push((a-n*n/o)/o)}return i}(this,r,n);case"column":if(!oe(n))throw new TypeError("mean must be an array");return function(t,e,r){const n=t.rows,o=t.columns,i=[];for(let s=0;s<o;s++){let o=0,a=0,h=0;for(let e=0;e<n;e++)h=t.get(e,s)-r[s],o+=h,a+=h*h;e?i.push((a-o*o/n)/(n-1)):i.push((a-o*o/n)/n)}return i}(this,r,n);case void 0:if("number"!=typeof n)throw new TypeError("mean must be a number");return function(t,e,r){const n=t.rows,o=t.columns,i=n*o;let s=0,a=0,h=0;for(let e=0;e<n;e++)for(let n=0;n<o;n++)h=t.get(e,n)-r,s+=h,a+=h*h;return e?(a-s*s/i)/(i-1):(a-s*s/i)/i}(this,r,n);default:throw new Error(`invalid option: ${t}`)}}standardDeviation(t,e){"object"==typeof t&&(e=t,t=void 0);const r=this.variance(t,e);if(void 0===t)return Math.sqrt(r);for(let t=0;t<r.length;t++)r[t]=Math.sqrt(r[t]);return r}center(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{center:r=this.mean(t)}=e;switch(t){case"row":if(!oe(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e[r])}(this,r),this;case"column":if(!oe(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e[n])}(this,r),this;case void 0:if("number"!=typeof r)throw new TypeError("center must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}scale(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");let r=e.scale;switch(t){case"row":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.rows;r++){let n=0;for(let e=0;e<t.columns;e++)n+=Math.pow(t.get(r,e),2)/(t.columns-1);e.push(Math.sqrt(n))}return e}(this);else if(!oe(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e[r])}(this,r),this;case"column":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.columns;r++){let n=0;for(let e=0;e<t.rows;e++)n+=Math.pow(t.get(e,r),2)/(t.rows-1);e.push(Math.sqrt(n))}return e}(this);else if(!oe(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e[n])}(this,r),this;case void 0:if(void 0===r)r=function(t){const e=t.size-1;let r=0;for(let n=0;n<t.columns;n++)for(let o=0;o<t.rows;o++)r+=Math.pow(t.get(o,n),2)/e;return Math.sqrt(r)}(this);else if("number"!=typeof r)throw new TypeError("scale must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}toString(t){return ce(this,t)}}function be(t,e){return t-e}Me.prototype.klass="Matrix","undefined"!=typeof Symbol&&(Me.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return ce(this)}),Me.random=Me.rand,Me.randomInt=Me.randInt,Me.diagonal=Me.diag,Me.prototype.diagonal=Me.prototype.diag,Me.identity=Me.eye,Me.prototype.negate=Me.prototype.neg,Me.prototype.tensorProduct=Me.prototype.kroneckerProduct;class Ee extends Me{constructor(t,e){if(super(),Ee.isMatrix(t))return t.clone();if(Number.isInteger(t)&&t>=0){if(this.data=[],!(Number.isInteger(e)&&e>=0))throw new TypeError("nColumns must be a positive integer");for(let r=0;r<t;r++)this.data.push(new Float64Array(e))}else{if(!oe(t))throw new TypeError("First argument must be a positive number or an array");{const r=t;if("number"!=typeof(e=(t=r.length)?r[0].length:0))throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let n=0;n<t;n++){if(r[n].length!==e)throw new RangeError("Inconsistent array dimensions");if(!r[n].every((t=>"number"==typeof t)))throw new TypeError("Input data contains non-numeric values");this.data.push(Float64Array.from(r[n]))}}}this.rows=t,this.columns=e}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}removeRow(t){return de(this,t),this.data.splice(t,1),this.rows-=1,this}addRow(t,e){return void 0===e&&(e=t,t=this.rows),de(this,t,!0),e=Float64Array.from(pe(this,e)),this.data.splice(t,0,e),this.rows+=1,this}removeColumn(t){ge(this,t);for(let e=0;e<this.rows;e++){const r=new Float64Array(this.columns-1);for(let n=0;n<t;n++)r[n]=this.data[e][n];for(let n=t+1;n<this.columns;n++)r[n-1]=this.data[e][n];this.data[e]=r}return this.columns-=1,this}addColumn(t,e){void 0===e&&(e=t,t=this.columns),ge(this,t,!0),e=ye(this,e);for(let r=0;r<this.rows;r++){const n=new Float64Array(this.columns+1);let o=0;for(;o<t;o++)n[o]=this.data[r][o];for(n[o++]=e[r];o<this.columns+1;o++)n[o]=this.data[r][o-1];this.data[r]=n}return this.columns+=1,this}}!function(t,e){t.prototype.add=function(t){return"number"==typeof t?this.addS(t):this.addM(t)},t.prototype.addS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t);return this},t.prototype.addM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t.get(e,r));return this},t.add=function(t,r){return new e(t).add(r)},t.prototype.sub=function(t){return"number"==typeof t?this.subS(t):this.subM(t)},t.prototype.subS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t);return this},t.prototype.subM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t.get(e,r));return this},t.sub=function(t,r){return new e(t).sub(r)},t.prototype.subtract=t.prototype.sub,t.prototype.subtractS=t.prototype.subS,t.prototype.subtractM=t.prototype.subM,t.subtract=t.sub,t.prototype.mul=function(t){return"number"==typeof t?this.mulS(t):this.mulM(t)},t.prototype.mulS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t);return this},t.prototype.mulM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t.get(e,r));return this},t.mul=function(t,r){return new e(t).mul(r)},t.prototype.multiply=t.prototype.mul,t.prototype.multiplyS=t.prototype.mulS,t.prototype.multiplyM=t.prototype.mulM,t.multiply=t.mul,t.prototype.div=function(t){return"number"==typeof t?this.divS(t):this.divM(t)},t.prototype.divS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t);return this},t.prototype.divM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t.get(e,r));return this},t.div=function(t,r){return new e(t).div(r)},t.prototype.divide=t.prototype.div,t.prototype.divideS=t.prototype.divS,t.prototype.divideM=t.prototype.divM,t.divide=t.div,t.prototype.mod=function(t){return"number"==typeof t?this.modS(t):this.modM(t)},t.prototype.modS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t);return this},t.prototype.modM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t.get(e,r));return this},t.mod=function(t,r){return new e(t).mod(r)},t.prototype.modulus=t.prototype.mod,t.prototype.modulusS=t.prototype.modS,t.prototype.modulusM=t.prototype.modM,t.modulus=t.mod,t.prototype.and=function(t){return"number"==typeof t?this.andS(t):this.andM(t)},t.prototype.andS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t);return this},t.prototype.andM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t.get(e,r));return this},t.and=function(t,r){return new e(t).and(r)},t.prototype.or=function(t){return"number"==typeof t?this.orS(t):this.orM(t)},t.prototype.orS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t);return this},t.prototype.orM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t.get(e,r));return this},t.or=function(t,r){return new e(t).or(r)},t.prototype.xor=function(t){return"number"==typeof t?this.xorS(t):this.xorM(t)},t.prototype.xorS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t);return this},t.prototype.xorM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t.get(e,r));return this},t.xor=function(t,r){return new e(t).xor(r)},t.prototype.leftShift=function(t){return"number"==typeof t?this.leftShiftS(t):this.leftShiftM(t)},t.prototype.leftShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t);return this},t.prototype.leftShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t.get(e,r));return this},t.leftShift=function(t,r){return new e(t).leftShift(r)},t.prototype.signPropagatingRightShift=function(t){return"number"==typeof t?this.signPropagatingRightShiftS(t):this.signPropagatingRightShiftM(t)},t.prototype.signPropagatingRightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t);return this},t.prototype.signPropagatingRightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t.get(e,r));return this},t.signPropagatingRightShift=function(t,r){return new e(t).signPropagatingRightShift(r)},t.prototype.rightShift=function(t){return"number"==typeof t?this.rightShiftS(t):this.rightShiftM(t)},t.prototype.rightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t);return this},t.prototype.rightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t.get(e,r));return this},t.rightShift=function(t,r){return new e(t).rightShift(r)},t.prototype.zeroFillRightShift=t.prototype.rightShift,t.prototype.zeroFillRightShiftS=t.prototype.rightShiftS,t.prototype.zeroFillRightShiftM=t.prototype.rightShiftM,t.zeroFillRightShift=t.rightShift,t.prototype.not=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,~this.get(t,e));return this},t.not=function(t){return new e(t).not()},t.prototype.abs=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.abs(this.get(t,e)));return this},t.abs=function(t){return new e(t).abs()},t.prototype.acos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acos(this.get(t,e)));return this},t.acos=function(t){return new e(t).acos()},t.prototype.acosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acosh(this.get(t,e)));return this},t.acosh=function(t){return new e(t).acosh()},t.prototype.asin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asin(this.get(t,e)));return this},t.asin=function(t){return new e(t).asin()},t.prototype.asinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asinh(this.get(t,e)));return this},t.asinh=function(t){return new e(t).asinh()},t.prototype.atan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atan(this.get(t,e)));return this},t.atan=function(t){return new e(t).atan()},t.prototype.atanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atanh(this.get(t,e)));return this},t.atanh=function(t){return new e(t).atanh()},t.prototype.cbrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cbrt(this.get(t,e)));return this},t.cbrt=function(t){return new e(t).cbrt()},t.prototype.ceil=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.ceil(this.get(t,e)));return this},t.ceil=function(t){return new e(t).ceil()},t.prototype.clz32=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.clz32(this.get(t,e)));return this},t.clz32=function(t){return new e(t).clz32()},t.prototype.cos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cos(this.get(t,e)));return this},t.cos=function(t){return new e(t).cos()},t.prototype.cosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cosh(this.get(t,e)));return this},t.cosh=function(t){return new e(t).cosh()},t.prototype.exp=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.exp(this.get(t,e)));return this},t.exp=function(t){return new e(t).exp()},t.prototype.expm1=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.expm1(this.get(t,e)));return this},t.expm1=function(t){return new e(t).expm1()},t.prototype.floor=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.floor(this.get(t,e)));return this},t.floor=function(t){return new e(t).floor()},t.prototype.fround=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.fround(this.get(t,e)));return this},t.fround=function(t){return new e(t).fround()},t.prototype.log=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log(this.get(t,e)));return this},t.log=function(t){return new e(t).log()},t.prototype.log1p=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log1p(this.get(t,e)));return this},t.log1p=function(t){return new e(t).log1p()},t.prototype.log10=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log10(this.get(t,e)));return this},t.log10=function(t){return new e(t).log10()},t.prototype.log2=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log2(this.get(t,e)));return this},t.log2=function(t){return new e(t).log2()},t.prototype.round=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.round(this.get(t,e)));return this},t.round=function(t){return new e(t).round()},t.prototype.sign=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sign(this.get(t,e)));return this},t.sign=function(t){return new e(t).sign()},t.prototype.sin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sin(this.get(t,e)));return this},t.sin=function(t){return new e(t).sin()},t.prototype.sinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sinh(this.get(t,e)));return this},t.sinh=function(t){return new e(t).sinh()},t.prototype.sqrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sqrt(this.get(t,e)));return this},t.sqrt=function(t){return new e(t).sqrt()},t.prototype.tan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tan(this.get(t,e)));return this},t.tan=function(t){return new e(t).tan()},t.prototype.tanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tanh(this.get(t,e)));return this},t.tanh=function(t){return new e(t).tanh()},t.prototype.trunc=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.trunc(this.get(t,e)));return this},t.trunc=function(t){return new e(t).trunc()},t.pow=function(t,r){return new e(t).pow(r)},t.prototype.pow=function(t){return"number"==typeof t?this.powS(t):this.powM(t)},t.prototype.powS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t));return this},t.prototype.powM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t.get(e,r)));return this}}(Me,Ee);class Ne extends Me{constructor(t){super(),this.data=t,this.rows=t.length,this.columns=t[0].length}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}}function Se(t,e){let r=0;return Math.abs(t)>Math.abs(e)?(r=e/t,Math.abs(t)*Math.sqrt(1+r*r)):0!==e?(r=t/e,Math.abs(e)*Math.sqrt(1+r*r)):0}class Ae{constructor(t,e={}){if((t=Ne.checkMatrix(t)).isEmpty())throw new Error("Matrix must be non-empty");let r=t.rows,n=t.columns;const{computeLeftSingularVectors:o=!0,computeRightSingularVectors:i=!0,autoTranspose:s=!1}=e;let a,h=Boolean(o),u=Boolean(i),c=!1;if(r<n)if(s){a=t.transpose(),r=a.rows,n=a.columns,c=!0;let e=h;h=u,u=e}else a=t.clone(),console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");else a=t.clone();let l=Math.min(r,n),f=Math.min(r+1,n),d=new Float64Array(f),g=new Ee(r,l),p=new Ee(n,n),y=new Float64Array(n),m=new Float64Array(r),w=new Float64Array(f);for(let t=0;t<f;t++)w[t]=t;let v=Math.min(r-1,n),x=Math.max(0,Math.min(n-2,r)),M=Math.max(v,x);for(let t=0;t<M;t++){if(t<v){d[t]=0;for(let e=t;e<r;e++)d[t]=Se(d[t],a.get(e,t));if(0!==d[t]){a.get(t,t)<0&&(d[t]=-d[t]);for(let e=t;e<r;e++)a.set(e,t,a.get(e,t)/d[t]);a.set(t,t,a.get(t,t)+1)}d[t]=-d[t]}for(let e=t+1;e<n;e++){if(t<v&&0!==d[t]){let n=0;for(let o=t;o<r;o++)n+=a.get(o,t)*a.get(o,e);n=-n/a.get(t,t);for(let o=t;o<r;o++)a.set(o,e,a.get(o,e)+n*a.get(o,t))}y[e]=a.get(t,e)}if(h&&t<v)for(let e=t;e<r;e++)g.set(e,t,a.get(e,t));if(t<x){y[t]=0;for(let e=t+1;e<n;e++)y[t]=Se(y[t],y[e]);if(0!==y[t]){y[t+1]<0&&(y[t]=0-y[t]);for(let e=t+1;e<n;e++)y[e]/=y[t];y[t+1]+=1}if(y[t]=-y[t],t+1<r&&0!==y[t]){for(let e=t+1;e<r;e++)m[e]=0;for(let e=t+1;e<r;e++)for(let r=t+1;r<n;r++)m[e]+=y[r]*a.get(e,r);for(let e=t+1;e<n;e++){let n=-y[e]/y[t+1];for(let o=t+1;o<r;o++)a.set(o,e,a.get(o,e)+n*m[o])}}if(u)for(let e=t+1;e<n;e++)p.set(e,t,y[e])}}let b=Math.min(n,r+1);if(v<n&&(d[v]=a.get(v,v)),r<b&&(d[b-1]=0),x+1<b&&(y[x]=a.get(x,b-1)),y[b-1]=0,h){for(let t=v;t<l;t++){for(let e=0;e<r;e++)g.set(e,t,0);g.set(t,t,1)}for(let t=v-1;t>=0;t--)if(0!==d[t]){for(let e=t+1;e<l;e++){let n=0;for(let o=t;o<r;o++)n+=g.get(o,t)*g.get(o,e);n=-n/g.get(t,t);for(let o=t;o<r;o++)g.set(o,e,g.get(o,e)+n*g.get(o,t))}for(let e=t;e<r;e++)g.set(e,t,-g.get(e,t));g.set(t,t,1+g.get(t,t));for(let e=0;e<t-1;e++)g.set(e,t,0)}else{for(let e=0;e<r;e++)g.set(e,t,0);g.set(t,t,1)}}if(u)for(let t=n-1;t>=0;t--){if(t<x&&0!==y[t])for(let e=t+1;e<n;e++){let r=0;for(let o=t+1;o<n;o++)r+=p.get(o,t)*p.get(o,e);r=-r/p.get(t+1,t);for(let o=t+1;o<n;o++)p.set(o,e,p.get(o,e)+r*p.get(o,t))}for(let e=0;e<n;e++)p.set(e,t,0);p.set(t,t,1)}let E=b-1,N=0,S=Number.EPSILON;for(;b>0;){let t,e;for(t=b-2;t>=-1&&-1!==t;t--){const e=Number.MIN_VALUE+S*Math.abs(d[t]+Math.abs(d[t+1]));if(Math.abs(y[t])<=e||Number.isNaN(y[t])){y[t]=0;break}}if(t===b-2)e=4;else{let r;for(r=b-1;r>=t&&r!==t;r--){let e=(r!==b?Math.abs(y[r]):0)+(r!==t+1?Math.abs(y[r-1]):0);if(Math.abs(d[r])<=S*e){d[r]=0;break}}r===t?e=3:r===b-1?e=1:(e=2,t=r)}switch(t++,e){case 1:{let e=y[b-2];y[b-2]=0;for(let r=b-2;r>=t;r--){let o=Se(d[r],e),i=d[r]/o,s=e/o;if(d[r]=o,r!==t&&(e=-s*y[r-1],y[r-1]=i*y[r-1]),u)for(let t=0;t<n;t++)o=i*p.get(t,r)+s*p.get(t,b-1),p.set(t,b-1,-s*p.get(t,r)+i*p.get(t,b-1)),p.set(t,r,o)}break}case 2:{let e=y[t-1];y[t-1]=0;for(let n=t;n<b;n++){let o=Se(d[n],e),i=d[n]/o,s=e/o;if(d[n]=o,e=-s*y[n],y[n]=i*y[n],h)for(let e=0;e<r;e++)o=i*g.get(e,n)+s*g.get(e,t-1),g.set(e,t-1,-s*g.get(e,n)+i*g.get(e,t-1)),g.set(e,n,o)}break}case 3:{const e=Math.max(Math.abs(d[b-1]),Math.abs(d[b-2]),Math.abs(y[b-2]),Math.abs(d[t]),Math.abs(y[t])),o=d[b-1]/e,i=d[b-2]/e,s=y[b-2]/e,a=d[t]/e,c=y[t]/e,l=((i+o)*(i-o)+s*s)/2,f=o*s*(o*s);let m=0;0===l&&0===f||(m=l<0?0-Math.sqrt(l*l+f):Math.sqrt(l*l+f),m=f/(l+m));let w=(a+o)*(a-o)+m,v=a*c;for(let e=t;e<b-1;e++){let o=Se(w,v);0===o&&(o=Number.MIN_VALUE);let i=w/o,s=v/o;if(e!==t&&(y[e-1]=o),w=i*d[e]+s*y[e],y[e]=i*y[e]-s*d[e],v=s*d[e+1],d[e+1]=i*d[e+1],u)for(let t=0;t<n;t++)o=i*p.get(t,e)+s*p.get(t,e+1),p.set(t,e+1,-s*p.get(t,e)+i*p.get(t,e+1)),p.set(t,e,o);if(o=Se(w,v),0===o&&(o=Number.MIN_VALUE),i=w/o,s=v/o,d[e]=o,w=i*y[e]+s*d[e+1],d[e+1]=-s*y[e]+i*d[e+1],v=s*y[e+1],y[e+1]=i*y[e+1],h&&e<r-1)for(let t=0;t<r;t++)o=i*g.get(t,e)+s*g.get(t,e+1),g.set(t,e+1,-s*g.get(t,e)+i*g.get(t,e+1)),g.set(t,e,o)}y[b-2]=w,N+=1;break}case 4:if(d[t]<=0&&(d[t]=d[t]<0?-d[t]:0,u))for(let e=0;e<=E;e++)p.set(e,t,-p.get(e,t));for(;t<E&&!(d[t]>=d[t+1]);){let e=d[t];if(d[t]=d[t+1],d[t+1]=e,u&&t<n-1)for(let r=0;r<n;r++)e=p.get(r,t+1),p.set(r,t+1,p.get(r,t)),p.set(r,t,e);if(h&&t<r-1)for(let n=0;n<r;n++)e=g.get(n,t+1),g.set(n,t+1,g.get(n,t)),g.set(n,t,e);t++}N=0,b--}}if(c){let t=p;p=g,g=t}this.m=r,this.n=n,this.s=d,this.U=g,this.V=p}solve(t){let e=t,r=this.threshold,n=this.s.length,o=Ee.zeros(n,n);for(let t=0;t<n;t++)Math.abs(this.s[t])<=r?o.set(t,t,0):o.set(t,t,1/this.s[t]);let i=this.U,s=this.rightSingularVectors,a=s.mmul(o),h=s.rows,u=i.rows,c=Ee.zeros(h,u);for(let t=0;t<h;t++)for(let e=0;e<u;e++){let r=0;for(let o=0;o<n;o++)r+=a.get(t,o)*i.get(e,o);c.set(t,e,r)}return c.mmul(e)}solveForDiagonal(t){return this.solve(Ee.diag(t))}inverse(){let t=this.V,e=this.threshold,r=t.rows,n=t.columns,o=new Ee(r,this.s.length);for(let i=0;i<r;i++)for(let r=0;r<n;r++)Math.abs(this.s[r])>e&&o.set(i,r,t.get(i,r)/this.s[r]);let i=this.U,s=i.rows,a=i.columns,h=new Ee(r,s);for(let t=0;t<r;t++)for(let e=0;e<s;e++){let r=0;for(let n=0;n<a;n++)r+=o.get(t,n)*i.get(e,n);h.set(t,e,r)}return h}get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]}get norm2(){return this.s[0]}get rank(){let t=Math.max(this.m,this.n)*this.s[0]*Number.EPSILON,e=0,r=this.s;for(let n=0,o=r.length;n<o;n++)r[n]>t&&e++;return e}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return Ee.diag(this.s)}}var ke,De={center:[0,0],linkDistance:50},Ie=function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="mds",this.options=r(r({},De),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericMDSLayout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return this.genericMDSLayout(!0,t,e),[2]}))}))},t.prototype.genericMDSLayout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,s,a,h,u,c,l,f,d,y,m;return i(this,(function(i){return o=r(r({},this.options),n),s=o.center,a=void 0===s?[0,0]:s,h=o.linkDistance,u=void 0===h?50:h,c=e.getAllNodes(),l=e.getAllEdges(),(null==c?void 0:c.length)&&1!==c.length?(f=p({nodes:c,edges:l},!1),d=g(f),_e(d),w=u,v=[],d.forEach((function(t){var e=[];t.forEach((function(t){e.push(t*w)})),v.push(e)})),y=Re(v),m=[],y.forEach((function(t,e){var r=M(c[e]);r.data.x=t[0]+a[0],r.data.y=t[1]+a[1],m.push(r)})),t&&m.forEach((function(t){return e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),[2,{nodes:m,edges:l}]):[2,A(e,t,a)];var w,v}))}))},t}(),_e=function(t){var e=-999999;t.forEach((function(t){t.forEach((function(t){t!==1/0&&e<t&&(e=t)}))})),t.forEach((function(r,n){r.forEach((function(r,o){r===1/0&&(t[n][o]=e)}))}))},Re=function(t){var e=Ee.mul(Ee.pow(t,2),-.5),r=e.mean("row"),n=e.mean("column"),o=e.mean();e.add(o).subRowVector(r).subColumnVector(n);var i=new Ae(e),s=Ee.sqrt(i.diagonalMatrix).diagonal();return i.leftSingularVectors.toJSON().map((function(t){return Ee.mul([t],[s]).toJSON()[0].splice(0,2)}))},ze={iterations:10,height:10,width:10,speed:100,gravity:10,k:5},Te=function(t,e,r,n,o,i){e.forEach((function(s,a){r[a]={x:0,y:0},e.forEach((function(e,h){if(a!==h&&o[a]===o[h]){var u=s.x-e.x,c=s.y-e.y,l=Math.sqrt(u*u+c*c);if(0===l){l=1;var f=a>h?1:-1;u=.01*f,c=.01*f}if(l<i(t[a])/2+i(t[h])/2){var d=n*n/l;r[a].x+=u/l*d,r[a].y+=c/l*d}}}))}))},Oe=function(t,e,r,n,o,i,s,a){var h=i||s/10;return n&&e.forEach((function(e,r){var n=t[r].x-t[o].x,i=t[r].y-t[o].y,s=Math.sqrt(n*n+i*i),a=i/s,h=-n/s,u=Math.sqrt(e.x*e.x+e.y*e.y),c=Math.acos((a*e.x+h*e.y)/u);c>Math.PI/2&&(c-=Math.PI/2,a*=-1,h*=-1);var l=Math.cos(c)*u;e.x=a*l,e.y=h*l})),t.forEach((function(i,s){if(s!==o){var u=Math.sqrt(e[s].x*e[s].x+e[s].y*e[s].y);if(u>0&&s!==o){var c=Math.min(h*(r/800),u);if(i.x+=e[s].x/u*c,i.y+=e[s].y/u*c,n){var l=i.x-t[o].x,f=i.y-t[o].y,d=Math.sqrt(l*l+f*f);l=l/d*a[s],f=f/d*a[s],i.x=t[o].x+l,i.y=t[o].y+f}}}})),t},Ce={maxIteration:1e3,focusNode:null,unitRadius:null,linkDistance:50,preventOverlap:!1,strictRadial:!0,maxPreventOverlapIteration:200,sortStrength:10},Pe=function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="radial",this.options=r(r({},Ce),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericRadialLayout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return this.genericRadialLayout(!0,t,e),[2]}))}))},t.prototype.genericRadialLayout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,h,u,c,l,f,d,y,m,w,v,x,b,E,N,S,k,D,I,_,z,T,O,C,P,q,F,L,j,V,W,$,G,U,B,H,K,J,Y,X,Q,Z,tt;return i(this,(function(i){if(o=r(r({},this.options),n),h=o.width,u=o.height,c=o.center,l=o.focusNode,f=o.unitRadius,d=o.nodeSize,y=o.nodeSpacing,m=o.strictRadial,w=o.preventOverlap,v=o.maxPreventOverlapIteration,x=o.sortBy,b=o.linkDistance,E=void 0===b?50:b,N=o.sortStrength,S=void 0===N?10:N,k=o.maxIteration,D=void 0===k?1e3:k,I=e.getAllNodes(),_=e.getAllEdges(),z=h||"undefined"==typeof window?h:window.innerWidth,T=u||"undefined"==typeof window?u:window.innerHeight,O=c||[z/2,T/2],!(null==I?void 0:I.length)||1===I.length)return[2,A(e,t,O)];if(C=I[0],R(l)){for(P=0;P<I.length;P++)if(I[P].id===l){C=I[P];break}}else C=l||I[0];return q=Le(I,C.id),F=p({nodes:I,edges:_},!1),L=g(F),j=Ve(L,q),je(L,q,j+1),V=L[q],W=z-O[0]>O[0]?O[0]:z-O[0],$=T-O[1]>O[1]?O[1]:T-O[1],0===W&&(W=z/2),0===$&&($=T/2),G=Math.min(W,$),U=Math.max.apply(Math,a([],s(V),!1)),B=[],H=f||G/U,V.forEach((function(t,e){B[e]=t*H})),K=qe(I,L,E,B,H,x,S),J=Fe(K),Y=function(t,e,r){try{var n=Ee.mul(Ee.pow(e,2),-.5),o=n.mean("row"),i=n.mean("column"),s=n.mean();n.add(s).subRowVector(o).subColumnVector(i);var a=new Ae(n),h=Ee.sqrt(a.diagonalMatrix).diagonal();return a.leftSingularVectors.toJSON().map((function(e){return Ee.mul([e],[h]).toJSON()[0].splice(0,t)}))}catch(t){for(var u=[],c=0;c<e.length;c++){var l=Math.random()*r,f=Math.random()*r;u.push([l,f])}return u}}(E,K,E),X=Y.map((function(t){var e=s(t,2),r=e[0],n=e[1];return{x:(isNaN(r)?Math.random()*E:r)-Y[q][0],y:(isNaN(n)?Math.random()*E:n)-Y[q][1]}})),this.run(D,X,J,K,B,q),w&&(Q=We(d,y),Z={nodes:I,nodeSizeFunc:Q,positions:X,radii:B,height:T,width:z,strictRadial:Boolean(m),focusIdx:q,iterations:v||200,k:X.length/4.5},X=function(t,e){for(var n=r(r({},ze),e),o=n.positions,i=n.iterations,s=n.width,a=n.k,h=n.speed,u=void 0===h?100:h,c=n.strictRadial,l=n.focusIdx,f=n.radii,d=void 0===f?[]:f,g=n.nodeSizeFunc,p=t.getAllNodes(),y=[],m=s/10,w=0;w<i;w++)o.forEach((function(t,e){y[e]={x:0,y:0}})),Te(p,o,y,a,d,g),Oe(o,y,u,c,l,m,s,d);return o}(e,Z)),tt=[],X.forEach((function(t,e){var r=M(I[e]);r.data.x=t.x+O[0],r.data.y=t.y+O[1],tt.push(r)})),t&&tt.forEach((function(t){return e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),[2,{nodes:tt,edges:_}]}))}))},t.prototype.run=function(t,e,r,n,o,i){for(var s=0;s<=t;s++){var a=s/t;this.oneIteration(a,e,o,n,r,i)}},t.prototype.oneIteration=function(t,e,r,n,o,i){var s=1-t;e.forEach((function(a,h){var u=y(a,{x:0,y:0}),c=0===u?0:1/u;if(h!==i){var l=0,f=0,d=0;e.forEach((function(t,e){if(h!==e){var r=y(a,t),i=0===r?0:1/r,s=n[e][h];d+=o[h][e],l+=o[h][e]*(t.x+s*(a.x-t.x)*i),f+=o[h][e]*(t.y+s*(a.y-t.y)*i)}}));var g=0===r[h]?0:1/r[h];d*=s,d+=t*g*g,l*=s,l+=t*g*a.x*c,a.x=l/d,f*=s,f+=t*g*a.y*c,a.y=f/d}}))},t}(),qe=function(t,e,r,n,o,i,s){if(!t)return[];var a=[];if(e){var h={};e.forEach((function(e,u){var c=[];e.forEach((function(e,a){var l,f;if(u===a)c.push(0);else if(n[u]===n[a])if("data"===i)c.push(e*(Math.abs(u-a)*s)/(n[u]/o));else if(i){var d=void 0,g=void 0;if(h[t[u].id])d=h[t[u].id];else{var p=("id"===i?t[u].id:null===(l=t[u].data)||void 0===l?void 0:l[i])||0;d=R(p)?p.charCodeAt(0):p,h[t[u].id]=d}h[t[a].id]?g=h[t[a].id]:(p=("id"===i?t[a].id:null===(f=t[a].data)||void 0===f?void 0:f[i])||0,g=R(p)?p.charCodeAt(0):p,h[t[a].id]=g),c.push(e*(Math.abs(d-g)*s)/(n[u]/o))}else c.push(e*r/(n[u]/o));else{var y=(r+o)/2;c.push(e*y)}})),a.push(c)}))}return a},Fe=function(t){for(var e=t.length,r=t[0].length,n=[],o=0;o<e;o++){for(var i=[],s=0;s<r;s++)0!==t[o][s]?i.push(1/(t[o][s]*t[o][s])):i.push(0);n.push(i)}return n},Le=function(t,e){var r=-1;return t.forEach((function(t,n){t.id===e&&(r=n)})),Math.max(r,0)},je=function(t,e,r){for(var n=t.length,o=0;o<n;o++)if(t[e][o]===1/0){t[e][o]=r,t[o][e]=r;for(var i=0;i<n;i++)t[o][i]!==1/0&&t[e][i]===1/0&&(t[e][i]=r+t[o][i],t[i][e]=r+t[o][i])}for(o=0;o<n;o++)if(o!==e)for(i=0;i<n;i++)if(t[o][i]===1/0){var s=Math.abs(t[e][o]-t[e][i]);s=0===s?1:s,t[o][i]=s}},Ve=function(t,e){for(var r=0,n=0;n<t[e].length;n++)t[e][n]!==1/0&&(r=t[e][n]>r?t[e][n]:r);return r},We=function(t,e){var r;return r=v(e)?function(){return e}:b(e)?e:function(){return 0},t?d(t)?function(e){return(t[0]>t[1]?t[0]:t[1])+r(e)}:function(e){return t+r(e)}:function(t){var e,n;if(null===(e=t.data)||void 0===e?void 0:e.bboxSize)return Math.max(t.data.bboxSize[0],t.data.bboxSize[1])+r(t);if(null===(n=t.data)||void 0===n?void 0:n.size){if(d(t.data.size))return Math.max(t.data.size[0],t.data.size[1])+r(t);var o=t.data.size;return E(o)?(o.width>o.height?o.width:o.height)+r(t):o+r(t)}return 10+r(t)}},$e={center:[0,0],width:300,height:300},Ge={circular:D,concentric:T,mds:Ie,random:function(){function t(t){void 0===t&&(t={}),this.options=t,this.id="random",this.options=r(r({},$e),t)}return t.prototype.execute=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return[2,this.genericRandomLayout(!1,t,e)]}))}))},t.prototype.assign=function(t,e){return o(this,void 0,void 0,(function(){return i(this,(function(r){return this.genericRandomLayout(!0,t,e),[2]}))}))},t.prototype.genericRandomLayout=function(t,e,n){return o(this,void 0,void 0,(function(){var o,s,a,h,u,c,l,f,d;return i(this,(function(i){return o=r(r({},this.options),n),s=o.center,a=o.width,h=o.height,u=e.getAllNodes(),c=a||"undefined"==typeof window?a:window.innerWidth,l=h||"undefined"==typeof window?h:window.innerHeight,f=s||[c/2,l/2],d=[],u&&u.forEach((function(t){d.push({id:t.id,data:{x:.9*(Math.random()-.5)*c+f[0],y:.9*(Math.random()-.5)*l+f[1]}})})),t&&d.forEach((function(t){return e.mergeNodeData(t.id,{x:t.data.x,y:t.data.y})})),[2,{nodes:d,edges:e.getAllEdges()}]}))}))},t}(),grid:Yt,radial:Pe,force:Ct,d3force:_t,fruchterman:Kt,forceAtlas2:Bt};function Ue(){(null==ke?void 0:ke.stop)&&ke.stop()}function Be(t,e){return o(this,void 0,void 0,(function(){var r,n,o,s,a,h,u,c,f;return i(this,(function(i){switch(i.label){case 0:if(r=t.layout,n=r.id,o=r.options,s=r.iterations,a=t.nodes,h=t.edges,u=new l({nodes:a,edges:h}),!(c=Ge[n]))throw new Error("Unknown layout id: ".concat(n));return[4,(ke=new c(o)).execute(u)];case 1:return f=i.sent(),(d=ke).tick&&d.stop&&(ke.stop(),f=ke.tick(s)),[2,[f,e]]}var d}))}))}addEventListener("message",(function(t){var r,n=t.data,o=n.type,i=n.method,s=n.id,a=n.params;"RPC"===o&&i&&((r=e[i])?Promise.resolve().then((function(){return r.apply(e,a)})):Promise.reject("No such method")).then((function(t){postMessage({type:"RPC",id:s,result:t})})).catch((function(t){var e={message:t};t.stack&&(e.message=t.message,e.stack=t.stack,e.name=t.name),postMessage({type:"RPC",id:s,error:e})}))})),postMessage({type:"RPC",method:"ready"})})();
|
|
2
|
-
//# sourceMappingURL=0ee54f2e2414f719b33e.worker.js.map
|