force-graph 1.50.0 → 1.51.0
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.d.ts +2 -0
- package/dist/force-graph.js +12 -8
- package/dist/force-graph.js.map +1 -1
- package/dist/force-graph.min.js +2 -2
- package/dist/force-graph.mjs +7 -3
- package/package.json +6 -6
- package/src/force-graph.js +4 -2
- package/src/index.d.ts +2 -0
package/dist/force-graph.mjs
CHANGED
|
@@ -1179,6 +1179,10 @@ var forceGraph = Kapsule({
|
|
|
1179
1179
|
onBackgroundRightClick: {
|
|
1180
1180
|
triggerUpdate: false
|
|
1181
1181
|
},
|
|
1182
|
+
showPointerCursor: {
|
|
1183
|
+
"default": true,
|
|
1184
|
+
triggerUpdate: false
|
|
1185
|
+
},
|
|
1182
1186
|
onZoom: {
|
|
1183
1187
|
triggerUpdate: false
|
|
1184
1188
|
},
|
|
@@ -1525,9 +1529,9 @@ var forceGraph = Kapsule({
|
|
|
1525
1529
|
// detect pointer drag on canvas pan
|
|
1526
1530
|
!state.isPointerDragging && ev.type === 'pointermove' && state.onBackgroundClick // only bother detecting drags this way if background clicks are enabled (so they don't trigger accidentally on canvas panning)
|
|
1527
1531
|
&& (ev.pressure > 0 || state.isPointerPressed) // ev.pressure always 0 on Safari, so we use the isPointerPressed tracker
|
|
1528
|
-
&& (ev.pointerType
|
|
1532
|
+
&& (ev.pointerType === 'mouse' || ev.movementX === undefined || [ev.movementX, ev.movementY].some(function (m) {
|
|
1529
1533
|
return Math.abs(m) > 1;
|
|
1530
|
-
})) // relax drag trigger sensitivity on touch events
|
|
1534
|
+
})) // relax drag trigger sensitivity on non-mouse (touch/pen) events
|
|
1531
1535
|
&& (state.isPointerDragging = true);
|
|
1532
1536
|
|
|
1533
1537
|
// update the pointer pos
|
|
@@ -1638,7 +1642,7 @@ var forceGraph = Kapsule({
|
|
|
1638
1642
|
state.tooltip.content(obj ? accessorFn(state["".concat(obj.type.toLowerCase(), "Label")])(obj.d) || null : null);
|
|
1639
1643
|
|
|
1640
1644
|
// set pointer if hovered object is clickable
|
|
1641
|
-
state.canvas.classList[obj && state["on".concat(objType, "Click")] || !obj && state.onBackgroundClick ? 'add' : 'remove']('clickable');
|
|
1645
|
+
state.canvas.classList[(obj && state["on".concat(objType, "Click")] || !obj && state.onBackgroundClick) && accessorFn(state.showPointerCursor)(obj === null || obj === void 0 ? void 0 : obj.d) ? 'add' : 'remove']('clickable');
|
|
1642
1646
|
state.hoverObj = obj;
|
|
1643
1647
|
}
|
|
1644
1648
|
doRedraw && refreshShadowCanvas();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "force-graph",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.51.0",
|
|
4
4
|
"description": "2D force-directed graph rendered on HTML5 canvas",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"unpkg": "dist/force-graph.min.js",
|
|
@@ -65,18 +65,18 @@
|
|
|
65
65
|
"lodash-es": "4"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@babel/core": "^7.28.
|
|
69
|
-
"@babel/preset-env": "^7.28.
|
|
68
|
+
"@babel/core": "^7.28.4",
|
|
69
|
+
"@babel/preset-env": "^7.28.3",
|
|
70
70
|
"@rollup/plugin-babel": "^6.0.4",
|
|
71
71
|
"@rollup/plugin-commonjs": "^28.0.6",
|
|
72
72
|
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
73
73
|
"@rollup/plugin-terser": "^0.4.4",
|
|
74
74
|
"postcss": "^8.5.6",
|
|
75
75
|
"rimraf": "^6.0.1",
|
|
76
|
-
"rollup": "^4.
|
|
77
|
-
"rollup-plugin-dts": "^6.2.
|
|
76
|
+
"rollup": "^4.50.0",
|
|
77
|
+
"rollup-plugin-dts": "^6.2.3",
|
|
78
78
|
"rollup-plugin-postcss": "^4.0.2",
|
|
79
|
-
"typescript": "^5.
|
|
79
|
+
"typescript": "^5.9.2"
|
|
80
80
|
},
|
|
81
81
|
"engines": {
|
|
82
82
|
"node": ">=12"
|
package/src/force-graph.js
CHANGED
|
@@ -185,6 +185,7 @@ export default Kapsule({
|
|
|
185
185
|
onLinkHover: { triggerUpdate: false },
|
|
186
186
|
onBackgroundClick: { triggerUpdate: false },
|
|
187
187
|
onBackgroundRightClick: { triggerUpdate: false },
|
|
188
|
+
showPointerCursor: { default: true, triggerUpdate: false },
|
|
188
189
|
onZoom: { triggerUpdate: false },
|
|
189
190
|
onZoomEnd: { triggerUpdate: false },
|
|
190
191
|
onRenderFramePre: { triggerUpdate: false },
|
|
@@ -528,7 +529,7 @@ export default Kapsule({
|
|
|
528
529
|
!state.isPointerDragging && ev.type === 'pointermove'
|
|
529
530
|
&& (state.onBackgroundClick) // only bother detecting drags this way if background clicks are enabled (so they don't trigger accidentally on canvas panning)
|
|
530
531
|
&& (ev.pressure > 0 || state.isPointerPressed) // ev.pressure always 0 on Safari, so we use the isPointerPressed tracker
|
|
531
|
-
&& (ev.pointerType
|
|
532
|
+
&& (ev.pointerType === 'mouse' || ev.movementX === undefined || [ev.movementX, ev.movementY].some(m => Math.abs(m) > 1)) // relax drag trigger sensitivity on non-mouse (touch/pen) events
|
|
532
533
|
&& (state.isPointerDragging = true);
|
|
533
534
|
|
|
534
535
|
// update the pointer pos
|
|
@@ -634,7 +635,8 @@ export default Kapsule({
|
|
|
634
635
|
|
|
635
636
|
// set pointer if hovered object is clickable
|
|
636
637
|
state.canvas.classList[
|
|
637
|
-
((obj && state[`on${objType}Click`]) || (!obj && state.onBackgroundClick))
|
|
638
|
+
((obj && state[`on${objType}Click`]) || (!obj && state.onBackgroundClick)) &&
|
|
639
|
+
accessorFn(state.showPointerCursor)(obj?.d) ? 'add' : 'remove'
|
|
638
640
|
]('clickable');
|
|
639
641
|
|
|
640
642
|
state.hoverObj = obj;
|
package/src/index.d.ts
CHANGED
|
@@ -180,6 +180,8 @@ export declare class ForceGraphGeneric<ChainableInstance, N extends NodeObject =
|
|
|
180
180
|
linkHoverPrecision(precision: number): ChainableInstance;
|
|
181
181
|
onBackgroundClick(callback: (event: MouseEvent) => void): ChainableInstance;
|
|
182
182
|
onBackgroundRightClick(callback: (event: MouseEvent) => void): ChainableInstance;
|
|
183
|
+
showPointerCursor(): Accessor<N | L | undefined, boolean>;
|
|
184
|
+
showPointerCursor(objAccessor: Accessor<N | L | undefined, boolean>): ChainableInstance;
|
|
183
185
|
onZoom(callback: (transform: {k: number, x: number, y: number}) => void): ChainableInstance;
|
|
184
186
|
onZoomEnd(callback: (transform: {k: number, x: number, y: number}) => void): ChainableInstance;
|
|
185
187
|
enableNodeDrag(): boolean;
|