@cocorof/graphier 1.4.2 → 1.4.4
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/index.cjs +102 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +102 -17
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2213,6 +2213,14 @@ function createScene(container, backgroundColor, style, rendererConfig) {
|
|
|
2213
2213
|
renderer.toneMappingExposure = 1.2;
|
|
2214
2214
|
const canvas = renderer.domElement;
|
|
2215
2215
|
canvas.style.setProperty("display", "block", "important");
|
|
2216
|
+
canvas.draggable = false;
|
|
2217
|
+
canvas.style.userSelect = "none";
|
|
2218
|
+
canvas.style.setProperty("-webkit-user-drag", "none");
|
|
2219
|
+
canvas.style.touchAction = "none";
|
|
2220
|
+
const onDragStart = (e) => e.preventDefault();
|
|
2221
|
+
canvas.addEventListener("dragstart", onDragStart);
|
|
2222
|
+
const onSelectStart = (e) => e.preventDefault();
|
|
2223
|
+
canvas.addEventListener("selectstart", onSelectStart);
|
|
2216
2224
|
container.appendChild(canvas);
|
|
2217
2225
|
const controls = new OrbitControls(camera, canvas);
|
|
2218
2226
|
controls.enableDamping = true;
|
|
@@ -2221,6 +2229,7 @@ function createScene(container, backgroundColor, style, rendererConfig) {
|
|
|
2221
2229
|
controls.zoomSpeed = 1.2;
|
|
2222
2230
|
controls.minDistance = 10;
|
|
2223
2231
|
controls.maxDistance = 3e4;
|
|
2232
|
+
controls.screenSpacePanning = true;
|
|
2224
2233
|
scene.add(new THREE.AmbientLight(16777215, 0.8));
|
|
2225
2234
|
const stars = createStarField(4e3, 8e3);
|
|
2226
2235
|
stars.visible = style.starField;
|
|
@@ -2234,23 +2243,35 @@ function createScene(container, backgroundColor, style, rendererConfig) {
|
|
|
2234
2243
|
controls.enableZoom = false;
|
|
2235
2244
|
const flags = {
|
|
2236
2245
|
is2D: false,
|
|
2237
|
-
keyboardMode3D: cameraMode
|
|
2246
|
+
keyboardMode3D: cameraMode,
|
|
2247
|
+
rotateButton: null
|
|
2238
2248
|
};
|
|
2239
|
-
const
|
|
2249
|
+
const _wheelOffset = new THREE.Vector3();
|
|
2240
2250
|
const onWheel = (e) => {
|
|
2241
2251
|
if (flags.is2D) return;
|
|
2242
2252
|
e.preventDefault();
|
|
2243
2253
|
let delta = -e.deltaY;
|
|
2244
2254
|
if (e.deltaMode === 1) delta *= 40;
|
|
2245
2255
|
if (e.deltaMode === 2) delta *= 800;
|
|
2246
|
-
|
|
2247
|
-
|
|
2256
|
+
const target = controls.target;
|
|
2257
|
+
_wheelOffset.copy(camera.position).sub(target);
|
|
2258
|
+
const dist = _wheelOffset.length();
|
|
2248
2259
|
const moveAmount = delta * 2e-3 * Math.max(dist * 0.1, 1);
|
|
2249
|
-
|
|
2250
|
-
|
|
2260
|
+
const newDist = Math.min(
|
|
2261
|
+
Math.max(dist - moveAmount, controls.minDistance),
|
|
2262
|
+
controls.maxDistance
|
|
2263
|
+
);
|
|
2264
|
+
_wheelOffset.setLength(newDist);
|
|
2265
|
+
camera.position.copy(target).add(_wheelOffset);
|
|
2251
2266
|
};
|
|
2252
2267
|
canvas.addEventListener("wheel", onWheel, { passive: false });
|
|
2253
|
-
const
|
|
2268
|
+
const trackballCleanup = setupTrackballRotation(canvas, camera, controls, flags);
|
|
2269
|
+
const scrollCleanup = () => {
|
|
2270
|
+
canvas.removeEventListener("wheel", onWheel);
|
|
2271
|
+
canvas.removeEventListener("dragstart", onDragStart);
|
|
2272
|
+
canvas.removeEventListener("selectstart", onSelectStart);
|
|
2273
|
+
trackballCleanup();
|
|
2274
|
+
};
|
|
2254
2275
|
return {
|
|
2255
2276
|
scene,
|
|
2256
2277
|
camera,
|
|
@@ -2266,24 +2287,80 @@ function createScene(container, backgroundColor, style, rendererConfig) {
|
|
|
2266
2287
|
flags
|
|
2267
2288
|
};
|
|
2268
2289
|
}
|
|
2269
|
-
const
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2290
|
+
const TRACKBALL_SPEED = 4e-3;
|
|
2291
|
+
function setupTrackballRotation(canvas, camera, controls, flags) {
|
|
2292
|
+
let rotating = false;
|
|
2293
|
+
let lastX = 0;
|
|
2294
|
+
let lastY = 0;
|
|
2295
|
+
const _offset2 = new THREE.Vector3();
|
|
2296
|
+
const _right2 = new THREE.Vector3();
|
|
2297
|
+
const _upAxis = new THREE.Vector3();
|
|
2298
|
+
const _q2 = new THREE.Quaternion();
|
|
2299
|
+
const _qPitch = new THREE.Quaternion();
|
|
2300
|
+
function onDown(e) {
|
|
2301
|
+
if (flags.rotateButton == null || e.button !== flags.rotateButton) return;
|
|
2302
|
+
rotating = true;
|
|
2303
|
+
lastX = e.clientX;
|
|
2304
|
+
lastY = e.clientY;
|
|
2305
|
+
try {
|
|
2306
|
+
canvas.setPointerCapture(e.pointerId);
|
|
2307
|
+
} catch {
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
function onMove(e) {
|
|
2311
|
+
if (!rotating) return;
|
|
2312
|
+
const dx = e.clientX - lastX;
|
|
2313
|
+
const dy = e.clientY - lastY;
|
|
2314
|
+
lastX = e.clientX;
|
|
2315
|
+
lastY = e.clientY;
|
|
2316
|
+
if (!dx && !dy) return;
|
|
2317
|
+
const target = controls.target;
|
|
2318
|
+
_offset2.copy(camera.position).sub(target);
|
|
2319
|
+
_right2.setFromMatrixColumn(camera.matrix, 0);
|
|
2320
|
+
_upAxis.setFromMatrixColumn(camera.matrix, 1);
|
|
2321
|
+
_q2.setFromAxisAngle(_upAxis, -dx * TRACKBALL_SPEED);
|
|
2322
|
+
_qPitch.setFromAxisAngle(_right2, -dy * TRACKBALL_SPEED);
|
|
2323
|
+
_q2.multiply(_qPitch);
|
|
2324
|
+
_offset2.applyQuaternion(_q2);
|
|
2325
|
+
camera.up.applyQuaternion(_q2).normalize();
|
|
2326
|
+
camera.position.copy(target).add(_offset2);
|
|
2327
|
+
camera.lookAt(target);
|
|
2328
|
+
}
|
|
2329
|
+
function onUp(e) {
|
|
2330
|
+
if (!rotating) return;
|
|
2331
|
+
rotating = false;
|
|
2332
|
+
try {
|
|
2333
|
+
canvas.releasePointerCapture(e.pointerId);
|
|
2334
|
+
} catch {
|
|
2335
|
+
}
|
|
2336
|
+
}
|
|
2337
|
+
canvas.addEventListener("pointerdown", onDown);
|
|
2338
|
+
canvas.addEventListener("pointermove", onMove);
|
|
2339
|
+
canvas.addEventListener("pointerup", onUp);
|
|
2340
|
+
canvas.addEventListener("pointercancel", onUp);
|
|
2341
|
+
return () => {
|
|
2342
|
+
canvas.removeEventListener("pointerdown", onDown);
|
|
2343
|
+
canvas.removeEventListener("pointermove", onMove);
|
|
2344
|
+
canvas.removeEventListener("pointerup", onUp);
|
|
2345
|
+
canvas.removeEventListener("pointercancel", onUp);
|
|
2346
|
+
};
|
|
2347
|
+
}
|
|
2273
2348
|
function applyNavigationMode(state, is2D, nav) {
|
|
2274
2349
|
const { controls, camera, keyboard } = state;
|
|
2275
2350
|
state.flags.is2D = is2D;
|
|
2276
2351
|
const left = (nav == null ? void 0 : nav.leftButton) ?? (is2D ? "pan" : "rotate");
|
|
2277
2352
|
const right = (nav == null ? void 0 : nav.rightButton) ?? (is2D ? "rotate" : "pan");
|
|
2353
|
+
const NONE = -1;
|
|
2278
2354
|
controls.mouseButtons = {
|
|
2279
|
-
LEFT:
|
|
2355
|
+
LEFT: left === "pan" ? THREE.MOUSE.PAN : NONE,
|
|
2280
2356
|
MIDDLE: THREE.MOUSE.DOLLY,
|
|
2281
|
-
RIGHT:
|
|
2357
|
+
RIGHT: right === "pan" ? THREE.MOUSE.PAN : NONE
|
|
2282
2358
|
};
|
|
2283
|
-
controls.enableRotate =
|
|
2359
|
+
controls.enableRotate = false;
|
|
2360
|
+
state.flags.rotateButton = left === "rotate" ? 0 : right === "rotate" ? 2 : null;
|
|
2284
2361
|
controls.touches = left === "pan" ? { ONE: THREE.TOUCH.PAN, TWO: THREE.TOUCH.DOLLY_PAN } : { ONE: THREE.TOUCH.ROTATE, TWO: THREE.TOUCH.DOLLY_PAN };
|
|
2285
2362
|
controls.enableZoom = is2D;
|
|
2286
|
-
controls.screenSpacePanning =
|
|
2363
|
+
controls.screenSpacePanning = true;
|
|
2287
2364
|
const kb = (nav == null ? void 0 : nav.keyboard) ?? (is2D ? "pan" : state.flags.keyboardMode3D);
|
|
2288
2365
|
if (kb === "off") {
|
|
2289
2366
|
keyboard.setEnabled(false);
|
|
@@ -2619,6 +2696,7 @@ function animateCamera(camera, controls, targetPos, targetLookAt, duration) {
|
|
|
2619
2696
|
function zoomToFitPositions(camera, controls, positions, duration, padding) {
|
|
2620
2697
|
const count = positions.length / 3;
|
|
2621
2698
|
if (count === 0) return;
|
|
2699
|
+
camera.up.set(0, 1, 0);
|
|
2622
2700
|
let cx = 0, cy = 0, cz = 0;
|
|
2623
2701
|
for (let i = 0; i < count; i++) {
|
|
2624
2702
|
cx += positions[i * 3];
|
|
@@ -2863,8 +2941,8 @@ function setupInteraction(canvas, camera, controls, getNodesMesh, getNodes, call
|
|
|
2863
2941
|
}
|
|
2864
2942
|
}
|
|
2865
2943
|
function onContextMenu2(e) {
|
|
2866
|
-
if (!callbacks.onContextMenu) return;
|
|
2867
2944
|
e.preventDefault();
|
|
2945
|
+
if (!callbacks.onContextMenu) return;
|
|
2868
2946
|
const nodesMesh = getNodesMesh();
|
|
2869
2947
|
if (!nodesMesh) return;
|
|
2870
2948
|
const rect = canvas.getBoundingClientRect();
|
|
@@ -3786,7 +3864,14 @@ function NetworkGraph3DInner(props, ref) {
|
|
|
3786
3864
|
{
|
|
3787
3865
|
ref: containerRef,
|
|
3788
3866
|
tabIndex: -1,
|
|
3789
|
-
style: {
|
|
3867
|
+
style: {
|
|
3868
|
+
width: "100%",
|
|
3869
|
+
height: "100%",
|
|
3870
|
+
outline: "none",
|
|
3871
|
+
userSelect: "none",
|
|
3872
|
+
WebkitUserSelect: "none"
|
|
3873
|
+
},
|
|
3874
|
+
onDragStart: (e) => e.preventDefault()
|
|
3790
3875
|
}
|
|
3791
3876
|
);
|
|
3792
3877
|
}
|