force-graph 1.43.3 → 1.43.5
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/README.md +1 -0
- package/dist/force-graph.js +137 -143
- package/dist/force-graph.js.map +1 -1
- package/dist/force-graph.min.js +3 -3
- package/dist/force-graph.mjs +69 -85
- package/example/beeswarm/index.html +40 -0
- package/package.json +13 -13
package/dist/force-graph.mjs
CHANGED
|
@@ -41,62 +41,91 @@ function styleInject(css, ref) {
|
|
|
41
41
|
var css_248z = ".force-graph-container canvas {\n display: block;\n user-select: none;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.force-graph-container .graph-tooltip {\n position: absolute;\n top: 0;\n font-family: sans-serif;\n font-size: 16px;\n padding: 4px;\n border-radius: 3px;\n color: #eee;\n background: rgba(0,0,0,0.65);\n visibility: hidden; /* by default */\n}\n\n.force-graph-container .clickable {\n cursor: pointer;\n}\n\n.force-graph-container .grabbable {\n cursor: move;\n cursor: grab;\n cursor: -moz-grab;\n cursor: -webkit-grab;\n}\n\n.force-graph-container .grabbable:active {\n cursor: grabbing;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n}\n";
|
|
42
42
|
styleInject(css_248z);
|
|
43
43
|
|
|
44
|
-
function
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
44
|
+
function _construct(t, e, r) {
|
|
45
|
+
if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
|
|
46
|
+
var o = [null];
|
|
47
|
+
o.push.apply(o, e);
|
|
48
|
+
var p = new (t.bind.apply(t, o))();
|
|
49
|
+
return r && _setPrototypeOf(p, r.prototype), p;
|
|
50
|
+
}
|
|
51
|
+
function _isNativeReflectConstruct() {
|
|
52
|
+
try {
|
|
53
|
+
var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
|
54
|
+
} catch (t) {}
|
|
55
|
+
return (_isNativeReflectConstruct = function () {
|
|
56
|
+
return !!t;
|
|
57
|
+
})();
|
|
58
|
+
}
|
|
59
|
+
function _iterableToArrayLimit(r, l) {
|
|
60
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
61
|
+
if (null != t) {
|
|
62
|
+
var e,
|
|
63
|
+
n,
|
|
64
|
+
i,
|
|
65
|
+
u,
|
|
66
|
+
a = [],
|
|
67
|
+
f = !0,
|
|
68
|
+
o = !1;
|
|
54
69
|
try {
|
|
55
|
-
if (
|
|
56
|
-
if (Object(
|
|
57
|
-
|
|
58
|
-
} else for (; !(
|
|
59
|
-
} catch (
|
|
60
|
-
|
|
70
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
71
|
+
if (Object(t) !== t) return;
|
|
72
|
+
f = !1;
|
|
73
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
74
|
+
} catch (r) {
|
|
75
|
+
o = !0, n = r;
|
|
61
76
|
} finally {
|
|
62
77
|
try {
|
|
63
|
-
if (!
|
|
78
|
+
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
64
79
|
} finally {
|
|
65
|
-
if (
|
|
80
|
+
if (o) throw n;
|
|
66
81
|
}
|
|
67
82
|
}
|
|
68
|
-
return
|
|
83
|
+
return a;
|
|
69
84
|
}
|
|
70
85
|
}
|
|
71
|
-
function ownKeys(
|
|
72
|
-
var
|
|
86
|
+
function ownKeys(e, r) {
|
|
87
|
+
var t = Object.keys(e);
|
|
73
88
|
if (Object.getOwnPropertySymbols) {
|
|
74
|
-
var
|
|
75
|
-
|
|
76
|
-
return Object.getOwnPropertyDescriptor(
|
|
77
|
-
})),
|
|
89
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
90
|
+
r && (o = o.filter(function (r) {
|
|
91
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
92
|
+
})), t.push.apply(t, o);
|
|
78
93
|
}
|
|
79
|
-
return
|
|
94
|
+
return t;
|
|
80
95
|
}
|
|
81
|
-
function _objectSpread2(
|
|
82
|
-
for (var
|
|
83
|
-
var
|
|
84
|
-
|
|
85
|
-
_defineProperty(
|
|
86
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(
|
|
87
|
-
Object.defineProperty(
|
|
96
|
+
function _objectSpread2(e) {
|
|
97
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
98
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
99
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
|
|
100
|
+
_defineProperty(e, r, t[r]);
|
|
101
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
|
102
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
88
103
|
});
|
|
89
104
|
}
|
|
90
|
-
return
|
|
105
|
+
return e;
|
|
106
|
+
}
|
|
107
|
+
function _toPrimitive(t, r) {
|
|
108
|
+
if ("object" != typeof t || !t) return t;
|
|
109
|
+
var e = t[Symbol.toPrimitive];
|
|
110
|
+
if (void 0 !== e) {
|
|
111
|
+
var i = e.call(t, r || "default");
|
|
112
|
+
if ("object" != typeof i) return i;
|
|
113
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
114
|
+
}
|
|
115
|
+
return ("string" === r ? String : Number)(t);
|
|
91
116
|
}
|
|
92
|
-
function
|
|
117
|
+
function _toPropertyKey(t) {
|
|
118
|
+
var i = _toPrimitive(t, "string");
|
|
119
|
+
return "symbol" == typeof i ? i : String(i);
|
|
120
|
+
}
|
|
121
|
+
function _typeof(o) {
|
|
93
122
|
"@babel/helpers - typeof";
|
|
94
123
|
|
|
95
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (
|
|
96
|
-
return typeof
|
|
97
|
-
} : function (
|
|
98
|
-
return
|
|
99
|
-
}, _typeof(
|
|
124
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
|
|
125
|
+
return typeof o;
|
|
126
|
+
} : function (o) {
|
|
127
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
128
|
+
}, _typeof(o);
|
|
100
129
|
}
|
|
101
130
|
function _defineProperty(obj, key, value) {
|
|
102
131
|
key = _toPropertyKey(key);
|
|
@@ -119,32 +148,6 @@ function _setPrototypeOf(o, p) {
|
|
|
119
148
|
};
|
|
120
149
|
return _setPrototypeOf(o, p);
|
|
121
150
|
}
|
|
122
|
-
function _isNativeReflectConstruct() {
|
|
123
|
-
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
|
124
|
-
if (Reflect.construct.sham) return false;
|
|
125
|
-
if (typeof Proxy === "function") return true;
|
|
126
|
-
try {
|
|
127
|
-
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
|
128
|
-
return true;
|
|
129
|
-
} catch (e) {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
function _construct(Parent, args, Class) {
|
|
134
|
-
if (_isNativeReflectConstruct()) {
|
|
135
|
-
_construct = Reflect.construct.bind();
|
|
136
|
-
} else {
|
|
137
|
-
_construct = function _construct(Parent, args, Class) {
|
|
138
|
-
var a = [null];
|
|
139
|
-
a.push.apply(a, args);
|
|
140
|
-
var Constructor = Function.bind.apply(Parent, a);
|
|
141
|
-
var instance = new Constructor();
|
|
142
|
-
if (Class) _setPrototypeOf(instance, Class.prototype);
|
|
143
|
-
return instance;
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
return _construct.apply(null, arguments);
|
|
147
|
-
}
|
|
148
151
|
function _slicedToArray(arr, i) {
|
|
149
152
|
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
150
153
|
}
|
|
@@ -179,20 +182,6 @@ function _nonIterableSpread() {
|
|
|
179
182
|
function _nonIterableRest() {
|
|
180
183
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
181
184
|
}
|
|
182
|
-
function _toPrimitive(input, hint) {
|
|
183
|
-
if (typeof input !== "object" || input === null) return input;
|
|
184
|
-
var prim = input[Symbol.toPrimitive];
|
|
185
|
-
if (prim !== undefined) {
|
|
186
|
-
var res = prim.call(input, hint || "default");
|
|
187
|
-
if (typeof res !== "object") return res;
|
|
188
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
189
|
-
}
|
|
190
|
-
return (hint === "string" ? String : Number)(input);
|
|
191
|
-
}
|
|
192
|
-
function _toPropertyKey(arg) {
|
|
193
|
-
var key = _toPrimitive(arg, "string");
|
|
194
|
-
return typeof key === "symbol" ? key : String(key);
|
|
195
|
-
}
|
|
196
185
|
|
|
197
186
|
var autoColorScale = scaleOrdinal(schemePaired);
|
|
198
187
|
|
|
@@ -332,7 +321,6 @@ var CanvasForceGraph = Kapsule({
|
|
|
332
321
|
}); // unfix nodes when disabling dag mode
|
|
333
322
|
}
|
|
334
323
|
},
|
|
335
|
-
|
|
336
324
|
dagLevelDistance: {},
|
|
337
325
|
dagNodeFilter: {
|
|
338
326
|
"default": function _default(node) {
|
|
@@ -526,7 +514,6 @@ var CanvasForceGraph = Kapsule({
|
|
|
526
514
|
if (forceFn === undefined) {
|
|
527
515
|
return state.forceLayout.force(forceName); // Force getter
|
|
528
516
|
}
|
|
529
|
-
|
|
530
517
|
state.forceLayout.force(forceName, forceFn); // Force setter
|
|
531
518
|
return this;
|
|
532
519
|
},
|
|
@@ -841,7 +828,6 @@ var CanvasForceGraph = Kapsule({
|
|
|
841
828
|
__singleHop: true
|
|
842
829
|
}); // add a single hop particle
|
|
843
830
|
}
|
|
844
|
-
|
|
845
831
|
return this;
|
|
846
832
|
}
|
|
847
833
|
},
|
|
@@ -1363,7 +1349,6 @@ var forceGraph = Kapsule({
|
|
|
1363
1349
|
colorTracker: new ColorTracker() // indexed objects for rgb lookup
|
|
1364
1350
|
};
|
|
1365
1351
|
},
|
|
1366
|
-
|
|
1367
1352
|
init: function init(domNode, state) {
|
|
1368
1353
|
var _this = this;
|
|
1369
1354
|
// Wipe DOM
|
|
@@ -1567,7 +1552,6 @@ var forceGraph = Kapsule({
|
|
|
1567
1552
|
state.isPointerDragging = false;
|
|
1568
1553
|
return; // don't trigger click events after pointer drag (pan / node drag functionality)
|
|
1569
1554
|
}
|
|
1570
|
-
|
|
1571
1555
|
var cbEvents = [ev, state.pointerDownEvent];
|
|
1572
1556
|
requestAnimationFrame(function () {
|
|
1573
1557
|
// trigger click events asynchronously, to allow hoverObj to be set (on frame)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<head>
|
|
2
|
+
<style> body { margin: 0; } </style>
|
|
3
|
+
|
|
4
|
+
<script src="//unpkg.com/force-graph"></script>
|
|
5
|
+
<!--<script src="../../dist/force-graph.js"></script>-->
|
|
6
|
+
|
|
7
|
+
<script src="//unpkg.com/d3-quadtree"></script>
|
|
8
|
+
<script src="//unpkg.com/d3-force"></script>
|
|
9
|
+
</head>
|
|
10
|
+
|
|
11
|
+
<body>
|
|
12
|
+
<div id="graph"></div>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
// Random tree
|
|
16
|
+
const N = 300;
|
|
17
|
+
const nodes = [...Array(N).keys()].map(i => ({
|
|
18
|
+
id: i,
|
|
19
|
+
pos: Math.random()
|
|
20
|
+
}));
|
|
21
|
+
|
|
22
|
+
const Graph = ForceGraph()
|
|
23
|
+
(document.getElementById('graph'));
|
|
24
|
+
|
|
25
|
+
Graph
|
|
26
|
+
// Deactivate existing forces
|
|
27
|
+
.d3Force('center', null)
|
|
28
|
+
.d3Force('charge', null)
|
|
29
|
+
|
|
30
|
+
// Add collision and x/y forces
|
|
31
|
+
.d3Force('collide', d3.forceCollide(Graph.nodeRelSize()))
|
|
32
|
+
.d3Force('x', d3.forceX(d => (d.pos - 0.5) * window.innerWidth))
|
|
33
|
+
.d3Force('y', d3.forceY(0).strength(0.2))
|
|
34
|
+
|
|
35
|
+
// Add nodes
|
|
36
|
+
.graphData({ nodes, links: [] });
|
|
37
|
+
|
|
38
|
+
setTimeout(() => Graph.zoom(0.99), 1);
|
|
39
|
+
</script>
|
|
40
|
+
</body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "force-graph",
|
|
3
|
-
"version": "1.43.
|
|
3
|
+
"version": "1.43.5",
|
|
4
4
|
"description": "2D force-directed graph rendered on HTML5 canvas",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"unpkg": "dist/force-graph.min.js",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"src/**/*"
|
|
48
48
|
],
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@tweenjs/tween.js": "18 -
|
|
50
|
+
"@tweenjs/tween.js": "18 - 23",
|
|
51
51
|
"accessor-fn": "1",
|
|
52
52
|
"bezier-js": "3 - 6",
|
|
53
53
|
"canvas-color-tracker": "1",
|
|
@@ -63,18 +63,18 @@
|
|
|
63
63
|
"lodash-es": "4"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@babel/core": "^7.
|
|
67
|
-
"@babel/preset-env": "^7.
|
|
68
|
-
"@rollup/plugin-babel": "^6.0.
|
|
69
|
-
"@rollup/plugin-commonjs": "^25.0.
|
|
70
|
-
"@rollup/plugin-node-resolve": "^15.2.
|
|
71
|
-
"@rollup/plugin-terser": "^0.4.
|
|
72
|
-
"postcss": "^8.4.
|
|
73
|
-
"rimraf": "^5.0.
|
|
74
|
-
"rollup": "^
|
|
75
|
-
"rollup-plugin-dts": "^6.
|
|
66
|
+
"@babel/core": "^7.23.9",
|
|
67
|
+
"@babel/preset-env": "^7.23.9",
|
|
68
|
+
"@rollup/plugin-babel": "^6.0.4",
|
|
69
|
+
"@rollup/plugin-commonjs": "^25.0.7",
|
|
70
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
71
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
72
|
+
"postcss": "^8.4.35",
|
|
73
|
+
"rimraf": "^5.0.5",
|
|
74
|
+
"rollup": "^4.12.0",
|
|
75
|
+
"rollup-plugin-dts": "^6.1.0",
|
|
76
76
|
"rollup-plugin-postcss": "^4.0.2",
|
|
77
|
-
"typescript": "^5.
|
|
77
|
+
"typescript": "^5.3.3"
|
|
78
78
|
},
|
|
79
79
|
"engines": {
|
|
80
80
|
"node": ">=12"
|