force-graph 1.49.1 → 1.49.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/force-graph.js +96 -135
- package/dist/force-graph.js.map +1 -1
- package/dist/force-graph.min.js +3 -3
- package/dist/force-graph.mjs +13 -15
- package/package.json +7 -7
- package/src/force-graph.js +2 -4
package/dist/force-graph.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { select } from 'd3-selection';
|
|
2
|
-
import {
|
|
2
|
+
import { zoomTransform, zoom } from 'd3-zoom';
|
|
3
3
|
import { drag } from 'd3-drag';
|
|
4
4
|
import { sum, min, max } from 'd3-array';
|
|
5
5
|
import { throttle } from 'lodash-es';
|
|
@@ -8,14 +8,14 @@ import Kapsule from 'kapsule';
|
|
|
8
8
|
import accessorFn from 'accessor-fn';
|
|
9
9
|
import ColorTracker from 'canvas-color-tracker';
|
|
10
10
|
import Tooltip from 'float-tooltip';
|
|
11
|
-
import { forceSimulation, forceLink, forceManyBody, forceCenter
|
|
11
|
+
import { forceRadial, forceSimulation, forceLink, forceManyBody, forceCenter } from 'd3-force-3d';
|
|
12
12
|
import { Bezier } from 'bezier-js';
|
|
13
13
|
import indexBy from 'index-array-by';
|
|
14
14
|
import { scaleOrdinal } from 'd3-scale';
|
|
15
15
|
import { schemePaired } from 'd3-scale-chromatic';
|
|
16
16
|
|
|
17
17
|
function styleInject(css, ref) {
|
|
18
|
-
if (ref ===
|
|
18
|
+
if (ref === void 0) ref = {};
|
|
19
19
|
var insertAt = ref.insertAt;
|
|
20
20
|
if (typeof document === 'undefined') {
|
|
21
21
|
return;
|
|
@@ -139,8 +139,8 @@ function _toConsumableArray(r) {
|
|
|
139
139
|
function _toPrimitive(t, r) {
|
|
140
140
|
if ("object" != typeof t || !t) return t;
|
|
141
141
|
var e = t[Symbol.toPrimitive];
|
|
142
|
-
if (
|
|
143
|
-
var i = e.call(t, r
|
|
142
|
+
if (void 0 !== e) {
|
|
143
|
+
var i = e.call(t, r);
|
|
144
144
|
if ("object" != typeof i) return i;
|
|
145
145
|
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
146
146
|
}
|
|
@@ -163,7 +163,7 @@ function _unsupportedIterableToArray(r, a) {
|
|
|
163
163
|
if (r) {
|
|
164
164
|
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
165
165
|
var t = {}.toString.call(r).slice(8, -1);
|
|
166
|
-
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) :
|
|
166
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
|
|
@@ -186,11 +186,11 @@ function getDagDepths (_ref, idAccessor) {
|
|
|
186
186
|
links = _ref.links;
|
|
187
187
|
var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
188
188
|
_ref2$nodeFilter = _ref2.nodeFilter,
|
|
189
|
-
nodeFilter = _ref2$nodeFilter ===
|
|
189
|
+
nodeFilter = _ref2$nodeFilter === void 0 ? function () {
|
|
190
190
|
return true;
|
|
191
191
|
} : _ref2$nodeFilter,
|
|
192
192
|
_ref2$onLoopError = _ref2.onLoopError,
|
|
193
|
-
onLoopError = _ref2$onLoopError ===
|
|
193
|
+
onLoopError = _ref2$onLoopError === void 0 ? function (loopIds) {
|
|
194
194
|
throw "Invalid DAG structure! Found cycle in node path: ".concat(loopIds.join(' -> '), ".");
|
|
195
195
|
} : _ref2$onLoopError;
|
|
196
196
|
// linked graph
|
|
@@ -1398,9 +1398,7 @@ var forceGraph = Kapsule({
|
|
|
1398
1398
|
x: obj.x,
|
|
1399
1399
|
y: obj.y,
|
|
1400
1400
|
fx: obj.fx,
|
|
1401
|
-
fy: obj.fy
|
|
1402
|
-
clientX: ev.sourceEvent.clientX,
|
|
1403
|
-
clientY: ev.sourceEvent.clientY
|
|
1401
|
+
fy: obj.fy
|
|
1404
1402
|
};
|
|
1405
1403
|
|
|
1406
1404
|
// keep engine running at low intensity throughout drag
|
|
@@ -1427,8 +1425,8 @@ var forceGraph = Kapsule({
|
|
|
1427
1425
|
});
|
|
1428
1426
|
|
|
1429
1427
|
// Only engage full drag if distance reaches above threshold
|
|
1430
|
-
if (!obj.__dragged && DRAG_CLICK_TOLERANCE_PX >= Math.sqrt(sum(['
|
|
1431
|
-
return Math.pow(ev
|
|
1428
|
+
if (!obj.__dragged && DRAG_CLICK_TOLERANCE_PX >= Math.sqrt(sum(['x', 'y'].map(function (k) {
|
|
1429
|
+
return Math.pow(ev[k] - initPos[k], 2);
|
|
1432
1430
|
})))) return;
|
|
1433
1431
|
state.forceGraph.d3AlphaTarget(0.3) // keep engine running at low intensity throughout drag
|
|
1434
1432
|
.resetCountdown(); // prevent freeze while dragging
|
|
@@ -1551,7 +1549,7 @@ var forceGraph = Kapsule({
|
|
|
1551
1549
|
// mouse left-click or touch
|
|
1552
1550
|
if (state.hoverObj) {
|
|
1553
1551
|
var fn = state["on".concat(state.hoverObj.type, "Click")];
|
|
1554
|
-
fn && fn.apply(
|
|
1552
|
+
fn && fn.apply(void 0, [state.hoverObj.d].concat(cbEvents));
|
|
1555
1553
|
} else {
|
|
1556
1554
|
state.onBackgroundClick && state.onBackgroundClick.apply(state, cbEvents);
|
|
1557
1555
|
}
|
|
@@ -1560,7 +1558,7 @@ var forceGraph = Kapsule({
|
|
|
1560
1558
|
// mouse right-click
|
|
1561
1559
|
if (state.hoverObj) {
|
|
1562
1560
|
var _fn = state["on".concat(state.hoverObj.type, "RightClick")];
|
|
1563
|
-
_fn && _fn.apply(
|
|
1561
|
+
_fn && _fn.apply(void 0, [state.hoverObj.d].concat(cbEvents));
|
|
1564
1562
|
} else {
|
|
1565
1563
|
state.onBackgroundRightClick && state.onBackgroundRightClick.apply(state, cbEvents);
|
|
1566
1564
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "force-graph",
|
|
3
|
-
"version": "1.49.
|
|
3
|
+
"version": "1.49.3",
|
|
4
4
|
"description": "2D force-directed graph rendered on HTML5 canvas",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"unpkg": "dist/force-graph.min.js",
|
|
@@ -64,18 +64,18 @@
|
|
|
64
64
|
"lodash-es": "4"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@babel/core": "^7.26.
|
|
68
|
-
"@babel/preset-env": "^7.26.
|
|
67
|
+
"@babel/core": "^7.26.9",
|
|
68
|
+
"@babel/preset-env": "^7.26.9",
|
|
69
69
|
"@rollup/plugin-babel": "^6.0.4",
|
|
70
|
-
"@rollup/plugin-commonjs": "^28.0.
|
|
70
|
+
"@rollup/plugin-commonjs": "^28.0.3",
|
|
71
71
|
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
72
72
|
"@rollup/plugin-terser": "^0.4.4",
|
|
73
|
-
"postcss": "^8.5.
|
|
73
|
+
"postcss": "^8.5.3",
|
|
74
74
|
"rimraf": "^6.0.1",
|
|
75
|
-
"rollup": "^4.
|
|
75
|
+
"rollup": "^4.34.9",
|
|
76
76
|
"rollup-plugin-dts": "^6.1.1",
|
|
77
77
|
"rollup-plugin-postcss": "^4.0.2",
|
|
78
|
-
"typescript": "^5.
|
|
78
|
+
"typescript": "^5.8.2"
|
|
79
79
|
},
|
|
80
80
|
"engines": {
|
|
81
81
|
"node": ">=12"
|
package/src/force-graph.js
CHANGED
|
@@ -403,9 +403,7 @@ export default Kapsule({
|
|
|
403
403
|
x: obj.x,
|
|
404
404
|
y: obj.y,
|
|
405
405
|
fx: obj.fx,
|
|
406
|
-
fy: obj.fy
|
|
407
|
-
clientX: ev.sourceEvent.clientX,
|
|
408
|
-
clientY: ev.sourceEvent.clientY
|
|
406
|
+
fy: obj.fy
|
|
409
407
|
};
|
|
410
408
|
|
|
411
409
|
// keep engine running at low intensity throughout drag
|
|
@@ -431,7 +429,7 @@ export default Kapsule({
|
|
|
431
429
|
['x', 'y'].forEach(c => obj[`f${c}`] = obj[c] = initPos[c] + (dragPos[c] - initPos[c]) / k);
|
|
432
430
|
|
|
433
431
|
// Only engage full drag if distance reaches above threshold
|
|
434
|
-
if (!obj.__dragged && (DRAG_CLICK_TOLERANCE_PX >= Math.sqrt(d3Sum(['
|
|
432
|
+
if (!obj.__dragged && (DRAG_CLICK_TOLERANCE_PX >= Math.sqrt(d3Sum(['x', 'y'].map(k => (ev[k] - initPos[k])**2)))))
|
|
435
433
|
return;
|
|
436
434
|
|
|
437
435
|
state.forceGraph
|