force-graph 1.49.2 → 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 +97 -134
- package/dist/force-graph.js.map +1 -1
- package/dist/force-graph.min.js +3 -3
- package/dist/force-graph.mjs +14 -14
- package/package.json +7 -7
- package/src/force-graph.js +4 -5
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
|
|
@@ -1414,6 +1414,10 @@ var forceGraph = Kapsule({
|
|
|
1414
1414
|
var initPos = obj.__initialDragPos;
|
|
1415
1415
|
var dragPos = ev;
|
|
1416
1416
|
var k = zoomTransform(state.canvas).k;
|
|
1417
|
+
var translate = {
|
|
1418
|
+
x: initPos.x + (dragPos.x - initPos.x) / k - obj.x,
|
|
1419
|
+
y: initPos.y + (dragPos.y - initPos.y) / k - obj.y
|
|
1420
|
+
};
|
|
1417
1421
|
|
|
1418
1422
|
// Move fx/fy (and x/y) of nodes based on the scaled drag distance since the drag start
|
|
1419
1423
|
['x', 'y'].forEach(function (c) {
|
|
@@ -1424,10 +1428,6 @@ var forceGraph = Kapsule({
|
|
|
1424
1428
|
if (!obj.__dragged && DRAG_CLICK_TOLERANCE_PX >= Math.sqrt(sum(['x', 'y'].map(function (k) {
|
|
1425
1429
|
return Math.pow(ev[k] - initPos[k], 2);
|
|
1426
1430
|
})))) return;
|
|
1427
|
-
var translate = {
|
|
1428
|
-
x: initPos.x + (dragPos.x - initPos.x) / k - obj.x,
|
|
1429
|
-
y: initPos.y + (dragPos.y - initPos.y) / k - obj.y
|
|
1430
|
-
};
|
|
1431
1431
|
state.forceGraph.d3AlphaTarget(0.3) // keep engine running at low intensity throughout drag
|
|
1432
1432
|
.resetCountdown(); // prevent freeze while dragging
|
|
1433
1433
|
|
|
@@ -1549,7 +1549,7 @@ var forceGraph = Kapsule({
|
|
|
1549
1549
|
// mouse left-click or touch
|
|
1550
1550
|
if (state.hoverObj) {
|
|
1551
1551
|
var fn = state["on".concat(state.hoverObj.type, "Click")];
|
|
1552
|
-
fn && fn.apply(
|
|
1552
|
+
fn && fn.apply(void 0, [state.hoverObj.d].concat(cbEvents));
|
|
1553
1553
|
} else {
|
|
1554
1554
|
state.onBackgroundClick && state.onBackgroundClick.apply(state, cbEvents);
|
|
1555
1555
|
}
|
|
@@ -1558,7 +1558,7 @@ var forceGraph = Kapsule({
|
|
|
1558
1558
|
// mouse right-click
|
|
1559
1559
|
if (state.hoverObj) {
|
|
1560
1560
|
var _fn = state["on".concat(state.hoverObj.type, "RightClick")];
|
|
1561
|
-
_fn && _fn.apply(
|
|
1561
|
+
_fn && _fn.apply(void 0, [state.hoverObj.d].concat(cbEvents));
|
|
1562
1562
|
} else {
|
|
1563
1563
|
state.onBackgroundRightClick && state.onBackgroundRightClick.apply(state, cbEvents);
|
|
1564
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
|
@@ -420,6 +420,10 @@ export default Kapsule({
|
|
|
420
420
|
const dragPos = ev;
|
|
421
421
|
|
|
422
422
|
const k = d3ZoomTransform(state.canvas).k;
|
|
423
|
+
const translate = {
|
|
424
|
+
x: (initPos.x + (dragPos.x - initPos.x) / k) - obj.x,
|
|
425
|
+
y: (initPos.y + (dragPos.y - initPos.y) / k) - obj.y
|
|
426
|
+
};
|
|
423
427
|
|
|
424
428
|
// Move fx/fy (and x/y) of nodes based on the scaled drag distance since the drag start
|
|
425
429
|
['x', 'y'].forEach(c => obj[`f${c}`] = obj[c] = initPos[c] + (dragPos[c] - initPos[c]) / k);
|
|
@@ -428,11 +432,6 @@ export default Kapsule({
|
|
|
428
432
|
if (!obj.__dragged && (DRAG_CLICK_TOLERANCE_PX >= Math.sqrt(d3Sum(['x', 'y'].map(k => (ev[k] - initPos[k])**2)))))
|
|
429
433
|
return;
|
|
430
434
|
|
|
431
|
-
const translate = {
|
|
432
|
-
x: (initPos.x + (dragPos.x - initPos.x) / k) - obj.x,
|
|
433
|
-
y: (initPos.y + (dragPos.y - initPos.y) / k) - obj.y
|
|
434
|
-
};
|
|
435
|
-
|
|
436
435
|
state.forceGraph
|
|
437
436
|
.d3AlphaTarget(0.3) // keep engine running at low intensity throughout drag
|
|
438
437
|
.resetCountdown(); // prevent freeze while dragging
|