@mindexec/cli 0.2.446 → 0.2.447
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/package.json +2 -2
- package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
- package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
- package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
- package/remote-hub.js +1 -1
- package/scripts/remote-fleet-render-smoke.mjs +74 -36
- package/scripts/remote-hub-smoke.mjs +7 -0
- package/wwwroot/_content/MindExecution.Shared/js/background-themes.js +1 -3
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +199 -100
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-hotpath.js +902 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +56 -385
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +90 -134
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +167 -24
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +92 -50
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +35 -12
- package/wwwroot/_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js +35 -2
- package/wwwroot/_framework/{MindExecution.Core.djyzj5mxyk.dll → MindExecution.Core.mswl4wlkm9.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Kernel.6e5cj9aijz.dll → MindExecution.Kernel.zupeldfptg.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Admin.siulh9tfrf.dll → MindExecution.Plugins.Admin.hq0vyqnqtn.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Business.8cjtrc7qd3.dll → MindExecution.Plugins.Business.pucw3o7rno.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.rpp78mc75u.dll → MindExecution.Plugins.Concept.557tzzkrrx.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Directory.wfv0ff9v4u.dll → MindExecution.Plugins.Directory.zh1ddg1fn6.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.jdppnbd6g4.dll → MindExecution.Plugins.PlanMaster.0z9pzynpu9.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.a43f2q3pkw.dll → MindExecution.Plugins.YouTube.y8g77r54fa.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.gwtyj0e9lw.dll → MindExecution.Shared.1ymsdbwid2.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Web.j3zaapcxtt.dll → MindExecution.Web.bb1txupuv0.dll} +0 -0
- package/wwwroot/_framework/blazor.boot.json +21 -21
- package/wwwroot/index.html +2 -1
- package/wwwroot/service-worker-assets.js +35 -31
- package/wwwroot/service-worker.js +1 -1
|
@@ -1364,7 +1364,11 @@
|
|
|
1364
1364
|
metricsSnapshotAgeMs: 0,
|
|
1365
1365
|
metricsSnapshotPeakMs: 0,
|
|
1366
1366
|
visibilityCullingProfile: null,
|
|
1367
|
-
renderPlanDiagnostics: null
|
|
1367
|
+
renderPlanDiagnostics: null,
|
|
1368
|
+
nearCss3dPerf: null,
|
|
1369
|
+
css3dRendererCounters: null,
|
|
1370
|
+
renderQueueMetrics: null,
|
|
1371
|
+
lastCss3dVisibilityPatch: null
|
|
1368
1372
|
};
|
|
1369
1373
|
}
|
|
1370
1374
|
|
|
@@ -1490,7 +1494,11 @@
|
|
|
1490
1494
|
metricsSnapshotAgeMs: 0,
|
|
1491
1495
|
metricsSnapshotPeakMs: Number((moduleInstance._renderDebugMetricsSnapshotPeakMs || 0).toFixed(2)),
|
|
1492
1496
|
visibilityCullingProfile: moduleInstance._lastVisibilityCullingProfile || null,
|
|
1493
|
-
renderPlanDiagnostics: window.MindMapRenderPlan?.getDiagnostics?.(moduleInstance.lodRenderer) || null
|
|
1497
|
+
renderPlanDiagnostics: window.MindMapRenderPlan?.getDiagnostics?.(moduleInstance.lodRenderer) || null,
|
|
1498
|
+
nearCss3dPerf: window.MindMapCss3dHotPath?.getPerfSnapshot?.(moduleInstance) || null,
|
|
1499
|
+
css3dRendererCounters: moduleInstance.cssRenderer?.getDebugCounters?.() || null,
|
|
1500
|
+
renderQueueMetrics: window.MindMapPipeline?.getQueueDebugMetrics?.() || null,
|
|
1501
|
+
lastCss3dVisibilityPatch: moduleInstance._lastCss3dVisibilityPatch || null
|
|
1494
1502
|
};
|
|
1495
1503
|
moduleInstance._lastRenderDebugMetricsSnapshot = snapshot;
|
|
1496
1504
|
return snapshot;
|
|
@@ -3290,36 +3298,22 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3290
3298
|
|
|
3291
3299
|
const roundedX = Math.round(nextX * 2) / 2;
|
|
3292
3300
|
const roundedY = Math.round(nextY * 2) / 2;
|
|
3293
|
-
if (this.
|
|
3294
|
-
this.
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3301
|
+
if (Math.abs(Number(this._lastSnapGridClientX ?? Number.NaN) - roundedX) < 0.001 &&
|
|
3302
|
+
Math.abs(Number(this._lastSnapGridClientY ?? Number.NaN) - roundedY) < 0.001) {
|
|
3303
|
+
if (this.isZooming === true) {
|
|
3304
|
+
this._localSnapGridStyleDeferredForZoom = true;
|
|
3305
|
+
}
|
|
3298
3306
|
return false;
|
|
3299
3307
|
}
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
if (this.container && this.camera?.isPerspectiveCamera) {
|
|
3303
|
-
const viewportMetrics = getCachedViewportMetrics(this);
|
|
3304
|
-
const width = Math.max(1, Number(viewportMetrics.width || 0));
|
|
3305
|
-
const height = Math.max(1, Number(viewportMetrics.height || 0));
|
|
3306
|
-
const left = Number(viewportMetrics.left || 0);
|
|
3307
|
-
const top = Number(viewportMetrics.top || 0);
|
|
3308
|
-
const centerX = Math.max(0, Math.min(width, roundedX - left));
|
|
3309
|
-
const centerY = Math.max(0, Math.min(height, roundedY - top));
|
|
3310
|
-
const snappedCenter = this._getLocalSnapGridSnappedScreenCenter(centerX, centerY, width, height, this.camera);
|
|
3311
|
-
pointerSnapKey = snappedCenter.snapKey || pointerSnapKey;
|
|
3312
|
-
}
|
|
3313
|
-
|
|
3314
|
-
if (this._lastLocalSnapGridPointerSnapKey === pointerSnapKey) {
|
|
3315
|
-
return false;
|
|
3308
|
+
if (this.isZooming === true) {
|
|
3309
|
+
this._localSnapGridStyleDeferredForZoom = true;
|
|
3316
3310
|
}
|
|
3317
3311
|
|
|
3318
3312
|
const previousX = this._lastSnapGridClientX;
|
|
3319
3313
|
const previousY = this._lastSnapGridClientY;
|
|
3320
3314
|
this._lastSnapGridClientX = roundedX;
|
|
3321
3315
|
this._lastSnapGridClientY = roundedY;
|
|
3322
|
-
this._lastLocalSnapGridPointerSnapKey =
|
|
3316
|
+
this._lastLocalSnapGridPointerSnapKey = `screen:${roundedX}|${roundedY}`;
|
|
3323
3317
|
this._localSnapGridPointerRevision = Math.max(0, Number(this._localSnapGridPointerRevision || 0)) + 1;
|
|
3324
3318
|
this._lastLocalSnapGridTransformKey = '';
|
|
3325
3319
|
if (previousX !== roundedX || previousY !== roundedY) {
|
|
@@ -3334,11 +3328,13 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3334
3328
|
_getLocalSnapGridSnappedScreenCenter(rawCenterX, rawCenterY, width, height, camera = null) {
|
|
3335
3329
|
const safeWidth = Math.max(1, Number(width || 0));
|
|
3336
3330
|
const safeHeight = Math.max(1, Number(height || 0));
|
|
3337
|
-
const
|
|
3331
|
+
const grid = Math.max(1, Number(this.GRID_SIZE || 10));
|
|
3332
|
+
const fallbackCenterX = Math.max(0, Math.min(safeWidth, Number(rawCenterX || 0)));
|
|
3333
|
+
const fallbackCenterY = Math.max(0, Math.min(safeHeight, Number(rawCenterY || 0)));
|
|
3338
3334
|
const fallback = {
|
|
3339
|
-
centerX:
|
|
3340
|
-
centerY:
|
|
3341
|
-
snapKey: `screen:${Math.round(
|
|
3335
|
+
centerX: fallbackCenterX,
|
|
3336
|
+
centerY: fallbackCenterY,
|
|
3337
|
+
snapKey: `screen:${Math.round(fallbackCenterX / grid)}|${Math.round(fallbackCenterY / grid)}`
|
|
3342
3338
|
};
|
|
3343
3339
|
const activeCamera = camera || this.camera;
|
|
3344
3340
|
if (!activeCamera?.isPerspectiveCamera) {
|
|
@@ -3355,17 +3351,20 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3355
3351
|
|
|
3356
3352
|
const cameraX = Number(activeCamera.position?.x || 0);
|
|
3357
3353
|
const cameraY = Number(activeCamera.position?.y || 0);
|
|
3358
|
-
const worldX = cameraX + ((
|
|
3359
|
-
const worldY = cameraY + (0.5 - (
|
|
3360
|
-
const grid = fallbackGrid;
|
|
3354
|
+
const worldX = cameraX + ((fallbackCenterX / safeWidth) - 0.5) * viewWidth;
|
|
3355
|
+
const worldY = cameraY + (0.5 - (fallbackCenterY / safeHeight)) * viewHeight;
|
|
3361
3356
|
const snappedWorldX = Math.round(worldX / grid) * grid;
|
|
3362
3357
|
const snappedWorldY = Math.round(worldY / grid) * grid;
|
|
3363
|
-
const snappedCenterX = (((snappedWorldX - cameraX) / viewWidth) + 0.5) * safeWidth;
|
|
3364
|
-
const snappedCenterY = (0.5 - ((snappedWorldY - cameraY) / viewHeight)) * safeHeight;
|
|
3365
3358
|
|
|
3366
3359
|
return {
|
|
3367
|
-
centerX: Math.max(0, Math.min(
|
|
3368
|
-
|
|
3360
|
+
centerX: Math.max(0, Math.min(
|
|
3361
|
+
safeWidth,
|
|
3362
|
+
(((snappedWorldX - cameraX) / viewWidth) + 0.5) * safeWidth
|
|
3363
|
+
)),
|
|
3364
|
+
centerY: Math.max(0, Math.min(
|
|
3365
|
+
safeHeight,
|
|
3366
|
+
(0.5 - ((snappedWorldY - cameraY) / viewHeight)) * safeHeight
|
|
3367
|
+
)),
|
|
3369
3368
|
snapKey: `world:${Math.round(snappedWorldX / grid)}|${Math.round(snappedWorldY / grid)}`
|
|
3370
3369
|
};
|
|
3371
3370
|
}
|
|
@@ -3444,6 +3443,43 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3444
3443
|
return layer.parentNode === host;
|
|
3445
3444
|
}
|
|
3446
3445
|
|
|
3446
|
+
_syncLocalSnapGridBackgroundSurface() {
|
|
3447
|
+
if (!this.container) {
|
|
3448
|
+
return false;
|
|
3449
|
+
}
|
|
3450
|
+
|
|
3451
|
+
const isLocalSnapGridTheme = this.currentThemeObject?.userData?.localSnapGrid === true;
|
|
3452
|
+
if (isLocalSnapGridTheme !== true) {
|
|
3453
|
+
if (this.container.style.backgroundColor) {
|
|
3454
|
+
this.container.style.backgroundColor = '';
|
|
3455
|
+
}
|
|
3456
|
+
return false;
|
|
3457
|
+
}
|
|
3458
|
+
|
|
3459
|
+
const rawBackgroundColor = this.currentThemeObject?.userData?.localSnapGridBackgroundColor;
|
|
3460
|
+
let backgroundColor = '';
|
|
3461
|
+
if (rawBackgroundColor !== undefined && rawBackgroundColor !== null) {
|
|
3462
|
+
try {
|
|
3463
|
+
const themeColor = rawBackgroundColor?.isColor === true
|
|
3464
|
+
? rawBackgroundColor
|
|
3465
|
+
: new THREE.Color(rawBackgroundColor);
|
|
3466
|
+
backgroundColor = `#${themeColor.getHexString()}`;
|
|
3467
|
+
} catch {
|
|
3468
|
+
backgroundColor = '';
|
|
3469
|
+
}
|
|
3470
|
+
}
|
|
3471
|
+
|
|
3472
|
+
// Local dot/line hints are DOM canvases below the transparent WebGL
|
|
3473
|
+
// resident surface. An opaque scene background would cover the hint.
|
|
3474
|
+
if (this.scene?.background) {
|
|
3475
|
+
this.scene.background = null;
|
|
3476
|
+
}
|
|
3477
|
+
if (this.container.style.backgroundColor !== backgroundColor) {
|
|
3478
|
+
this.container.style.backgroundColor = backgroundColor;
|
|
3479
|
+
}
|
|
3480
|
+
return true;
|
|
3481
|
+
}
|
|
3482
|
+
|
|
3447
3483
|
_ensureLocalSnapGridLayer() {
|
|
3448
3484
|
if (!this.container || typeof document === 'undefined') {
|
|
3449
3485
|
return null;
|
|
@@ -3514,66 +3550,74 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3514
3550
|
const smallStep = Math.max(LOCAL_SNAP_GRID_MIN_STEP_PX, Number(smallStepPx) || LOCAL_SNAP_GRID_DEFAULT_STEP_PX);
|
|
3515
3551
|
const majorStep = Math.max(smallStep, Number(majorStepPx) || LOCAL_SNAP_GRID_DEFAULT_MAJOR_STEP_PX);
|
|
3516
3552
|
ctx.clearRect(0, 0, size, size);
|
|
3517
|
-
const
|
|
3518
|
-
const
|
|
3553
|
+
const radiusSq = center * center;
|
|
3554
|
+
const forCenteredSteps = (step, callback) => {
|
|
3555
|
+
callback(center);
|
|
3556
|
+
for (let offset = step; offset <= center; offset += step) {
|
|
3557
|
+
callback(center - offset);
|
|
3558
|
+
callback(center + offset);
|
|
3559
|
+
}
|
|
3560
|
+
};
|
|
3519
3561
|
|
|
3520
3562
|
if (styleKind === 'dot') {
|
|
3521
3563
|
ctx.fillStyle = 'rgba(58, 69, 88, 0.46)';
|
|
3522
3564
|
const dotRadius = 1.15;
|
|
3523
|
-
|
|
3565
|
+
forCenteredSteps(smallStep, y => {
|
|
3524
3566
|
const dy = y - center;
|
|
3525
3567
|
const dySq = dy * dy;
|
|
3526
|
-
|
|
3568
|
+
forCenteredSteps(smallStep, x => {
|
|
3527
3569
|
const dx = x - center;
|
|
3528
3570
|
if ((dx * dx) + dySq > radiusSq) {
|
|
3529
|
-
|
|
3571
|
+
return;
|
|
3530
3572
|
}
|
|
3531
3573
|
ctx.beginPath();
|
|
3532
3574
|
ctx.arc(x, y, dotRadius, 0, Math.PI * 2);
|
|
3533
3575
|
ctx.fill();
|
|
3534
|
-
}
|
|
3535
|
-
}
|
|
3576
|
+
});
|
|
3577
|
+
});
|
|
3536
3578
|
|
|
3537
3579
|
ctx.fillStyle = 'rgba(15, 23, 42, 0.62)';
|
|
3538
3580
|
const majorDotRadius = 1.85;
|
|
3539
|
-
|
|
3581
|
+
forCenteredSteps(majorStep, y => {
|
|
3540
3582
|
const dy = y - center;
|
|
3541
3583
|
const dySq = dy * dy;
|
|
3542
|
-
|
|
3584
|
+
forCenteredSteps(majorStep, x => {
|
|
3543
3585
|
const dx = x - center;
|
|
3544
3586
|
if ((dx * dx) + dySq > radiusSq) {
|
|
3545
|
-
|
|
3587
|
+
return;
|
|
3546
3588
|
}
|
|
3547
3589
|
ctx.beginPath();
|
|
3548
3590
|
ctx.arc(x, y, majorDotRadius, 0, Math.PI * 2);
|
|
3549
3591
|
ctx.fill();
|
|
3550
|
-
}
|
|
3551
|
-
}
|
|
3592
|
+
});
|
|
3593
|
+
});
|
|
3552
3594
|
} else {
|
|
3553
3595
|
const drawLines = (step, color, width) => {
|
|
3554
3596
|
ctx.strokeStyle = color;
|
|
3555
3597
|
ctx.lineWidth = width;
|
|
3556
3598
|
ctx.beginPath();
|
|
3557
|
-
|
|
3599
|
+
forCenteredSteps(step, x => {
|
|
3558
3600
|
const dx = x - center;
|
|
3559
3601
|
const spanSq = radiusSq - (dx * dx);
|
|
3560
3602
|
if (spanSq <= 0) {
|
|
3561
|
-
|
|
3603
|
+
return;
|
|
3562
3604
|
}
|
|
3563
3605
|
const span = Math.sqrt(spanSq);
|
|
3564
|
-
|
|
3565
|
-
ctx.
|
|
3566
|
-
|
|
3567
|
-
|
|
3606
|
+
const pixelX = Math.round(x) + 0.5;
|
|
3607
|
+
ctx.moveTo(pixelX, center - span);
|
|
3608
|
+
ctx.lineTo(pixelX, center + span);
|
|
3609
|
+
});
|
|
3610
|
+
forCenteredSteps(step, y => {
|
|
3568
3611
|
const dy = y - center;
|
|
3569
3612
|
const spanSq = radiusSq - (dy * dy);
|
|
3570
3613
|
if (spanSq <= 0) {
|
|
3571
|
-
|
|
3614
|
+
return;
|
|
3572
3615
|
}
|
|
3573
3616
|
const span = Math.sqrt(spanSq);
|
|
3574
|
-
|
|
3575
|
-
ctx.
|
|
3576
|
-
|
|
3617
|
+
const pixelY = Math.round(y) + 0.5;
|
|
3618
|
+
ctx.moveTo(center - span, pixelY);
|
|
3619
|
+
ctx.lineTo(center + span, pixelY);
|
|
3620
|
+
});
|
|
3577
3621
|
ctx.stroke();
|
|
3578
3622
|
};
|
|
3579
3623
|
|
|
@@ -3595,7 +3639,14 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3595
3639
|
return true;
|
|
3596
3640
|
}
|
|
3597
3641
|
|
|
3598
|
-
_applyLocalSnapGridStyle(
|
|
3642
|
+
_applyLocalSnapGridStyle(
|
|
3643
|
+
layer,
|
|
3644
|
+
styleKind,
|
|
3645
|
+
smallStepPx,
|
|
3646
|
+
majorStepPx,
|
|
3647
|
+
opacity,
|
|
3648
|
+
keyPrefix = 'style'
|
|
3649
|
+
) {
|
|
3599
3650
|
if (!layer) {
|
|
3600
3651
|
return false;
|
|
3601
3652
|
}
|
|
@@ -3622,7 +3673,12 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3622
3673
|
this._lastLocalSnapGridKey = localGridKey;
|
|
3623
3674
|
const opacityValue = safeOpacity.toFixed(3);
|
|
3624
3675
|
this._lastLocalSnapGridOpacity = opacityValue;
|
|
3625
|
-
this._drawLocalSnapGridBitmap(
|
|
3676
|
+
this._drawLocalSnapGridBitmap(
|
|
3677
|
+
layer,
|
|
3678
|
+
safeStyleKind,
|
|
3679
|
+
safeSmallStep,
|
|
3680
|
+
safeMajorStep
|
|
3681
|
+
);
|
|
3626
3682
|
if (layer.style.opacity !== opacityValue) {
|
|
3627
3683
|
layer.style.opacity = opacityValue;
|
|
3628
3684
|
}
|
|
@@ -3673,7 +3729,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3673
3729
|
return;
|
|
3674
3730
|
}
|
|
3675
3731
|
|
|
3676
|
-
if (this._localSnapGridVisible !== true &&
|
|
3732
|
+
if (this._localSnapGridVisible !== true &&
|
|
3733
|
+
layer.style.display === 'none') {
|
|
3677
3734
|
return;
|
|
3678
3735
|
}
|
|
3679
3736
|
|
|
@@ -3722,19 +3779,24 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3722
3779
|
const centerY = hasPointer
|
|
3723
3780
|
? Math.max(0, Math.min(height, Number(this._lastSnapGridClientY) - top))
|
|
3724
3781
|
: height / 2;
|
|
3725
|
-
const snappedCenter = this._getLocalSnapGridSnappedScreenCenter(
|
|
3726
|
-
|
|
3727
|
-
|
|
3782
|
+
const snappedCenter = this._getLocalSnapGridSnappedScreenCenter(
|
|
3783
|
+
centerX,
|
|
3784
|
+
centerY,
|
|
3785
|
+
width,
|
|
3786
|
+
height,
|
|
3787
|
+
this.camera
|
|
3788
|
+
);
|
|
3789
|
+
const snappedLayerLeft = Math.round(snappedCenter.centerX - LOCAL_SNAP_GRID_RADIUS_PX);
|
|
3790
|
+
const snappedLayerTop = Math.round(snappedCenter.centerY - LOCAL_SNAP_GRID_RADIUS_PX);
|
|
3791
|
+
const transformKey = `${snappedLayerLeft}|${snappedLayerTop}`;
|
|
3792
|
+
if (transformKey !== this._lastLocalSnapGridTransformKey) {
|
|
3793
|
+
this._lastLocalSnapGridTransformKey = transformKey;
|
|
3794
|
+
layer.style.transform = `translate3d(${snappedLayerLeft}px, ${snappedLayerTop}px, 0)`;
|
|
3795
|
+
}
|
|
3796
|
+
this._lastLocalSnapGridPointerSnapKey = snappedCenter.snapKey;
|
|
3797
|
+
this._lastLocalSnapGridPositionRevision = Math.max(0, Number(this._localSnapGridPointerRevision || 0));
|
|
3728
3798
|
|
|
3729
3799
|
if (this.isZooming === true && !!this._lastLocalSnapGridKey) {
|
|
3730
|
-
const snappedLayerLeft = Math.round(layerLeft);
|
|
3731
|
-
const snappedLayerTop = Math.round(layerTop);
|
|
3732
|
-
const transformKey = `${snappedLayerLeft}|${snappedLayerTop}`;
|
|
3733
|
-
if (transformKey !== this._lastLocalSnapGridTransformKey) {
|
|
3734
|
-
this._lastLocalSnapGridTransformKey = transformKey;
|
|
3735
|
-
layer.style.transform = `translate3d(${snappedLayerLeft}px, ${snappedLayerTop}px, 0)`;
|
|
3736
|
-
}
|
|
3737
|
-
this._lastLocalSnapGridPositionRevision = Math.max(0, Number(this._localSnapGridPointerRevision || 0));
|
|
3738
3800
|
this._localSnapGridStyleDeferredForZoom = true;
|
|
3739
3801
|
this._setLocalSnapGridVisible(true, this._lastLocalSnapGridOpacity || null);
|
|
3740
3802
|
return true;
|
|
@@ -3770,20 +3832,17 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3770
3832
|
|
|
3771
3833
|
if (shouldDeferLocalGridStyleForZoom !== true) {
|
|
3772
3834
|
this._localSnapGridStyleDeferredForZoom = false;
|
|
3773
|
-
this._applyLocalSnapGridStyle(
|
|
3835
|
+
this._applyLocalSnapGridStyle(
|
|
3836
|
+
layer,
|
|
3837
|
+
styleKind,
|
|
3838
|
+
smallStepPx,
|
|
3839
|
+
majorStepPx,
|
|
3840
|
+
opacity
|
|
3841
|
+
);
|
|
3774
3842
|
} else if (shouldDeferLocalGridStyleForZoom === true) {
|
|
3775
3843
|
this._localSnapGridStyleDeferredForZoom = true;
|
|
3776
3844
|
}
|
|
3777
3845
|
|
|
3778
|
-
const snappedLayerLeft = Math.round(layerLeft);
|
|
3779
|
-
const snappedLayerTop = Math.round(layerTop);
|
|
3780
|
-
const transformKey = `${snappedLayerLeft}|${snappedLayerTop}`;
|
|
3781
|
-
if (transformKey !== this._lastLocalSnapGridTransformKey) {
|
|
3782
|
-
this._lastLocalSnapGridTransformKey = transformKey;
|
|
3783
|
-
layer.style.transform = `translate3d(${snappedLayerLeft}px, ${snappedLayerTop}px, 0)`;
|
|
3784
|
-
}
|
|
3785
|
-
this._lastLocalSnapGridPositionRevision = Math.max(0, Number(this._localSnapGridPointerRevision || 0));
|
|
3786
|
-
|
|
3787
3846
|
this._setLocalSnapGridVisible(true, this._lastLocalSnapGridOpacity || opacity.toFixed(3));
|
|
3788
3847
|
return true;
|
|
3789
3848
|
}
|
|
@@ -3813,15 +3872,6 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3813
3872
|
|
|
3814
3873
|
const layer = this._localSnapGridLayer;
|
|
3815
3874
|
const pointerRevision = Math.max(0, Number(this._localSnapGridPointerRevision || 0));
|
|
3816
|
-
if (this.isZooming === true &&
|
|
3817
|
-
this._localSnapGridVisible === true &&
|
|
3818
|
-
this._lastLocalSnapGridKey &&
|
|
3819
|
-
this._lastLocalSnapGridTransformKey &&
|
|
3820
|
-
this._lastLocalSnapGridPositionRevision === pointerRevision) {
|
|
3821
|
-
this._localSnapGridStyleDeferredForZoom = true;
|
|
3822
|
-
return true;
|
|
3823
|
-
}
|
|
3824
|
-
|
|
3825
3875
|
const viewportMetrics = getCachedViewportMetrics(this);
|
|
3826
3876
|
const width = Math.max(1, Number(viewportMetrics.width || 0));
|
|
3827
3877
|
const height = Math.max(1, Number(viewportMetrics.height || 0));
|
|
@@ -3840,17 +3890,21 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3840
3890
|
const centerY = hasPointer
|
|
3841
3891
|
? Math.max(0, Math.min(height, Number(this._lastSnapGridClientY) - top))
|
|
3842
3892
|
: height / 2;
|
|
3843
|
-
const snappedCenter = this._getLocalSnapGridSnappedScreenCenter(
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3893
|
+
const snappedCenter = this._getLocalSnapGridSnappedScreenCenter(
|
|
3894
|
+
centerX,
|
|
3895
|
+
centerY,
|
|
3896
|
+
width,
|
|
3897
|
+
height,
|
|
3898
|
+
this.camera
|
|
3899
|
+
);
|
|
3900
|
+
const snappedLayerLeft = Math.round(snappedCenter.centerX - LOCAL_SNAP_GRID_RADIUS_PX);
|
|
3901
|
+
const snappedLayerTop = Math.round(snappedCenter.centerY - LOCAL_SNAP_GRID_RADIUS_PX);
|
|
3848
3902
|
const transformKey = `${snappedLayerLeft}|${snappedLayerTop}`;
|
|
3849
|
-
|
|
3850
3903
|
if (transformKey !== this._lastLocalSnapGridTransformKey) {
|
|
3851
3904
|
this._lastLocalSnapGridTransformKey = transformKey;
|
|
3852
3905
|
layer.style.transform = `translate3d(${snappedLayerLeft}px, ${snappedLayerTop}px, 0)`;
|
|
3853
3906
|
}
|
|
3907
|
+
this._lastLocalSnapGridPointerSnapKey = snappedCenter.snapKey;
|
|
3854
3908
|
this._lastLocalSnapGridPositionRevision = pointerRevision;
|
|
3855
3909
|
|
|
3856
3910
|
if (this.isZooming === true) {
|
|
@@ -4761,6 +4815,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
4761
4815
|
// 3. CSS3D Renderer (??
|
|
4762
4816
|
if (globalThis.CSS3DRenderer) {
|
|
4763
4817
|
this.cssRenderer = new globalThis.CSS3DRenderer();
|
|
4818
|
+
window.MindMapCss3dHotPath?.ensureCssRendererHooks?.(this);
|
|
4764
4819
|
this.cssRenderer.setSize(this.container.clientWidth, this.container.clientHeight);
|
|
4765
4820
|
|
|
4766
4821
|
const cssEl = this.cssRenderer.domElement;
|
|
@@ -4892,7 +4947,10 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
4892
4947
|
}
|
|
4893
4948
|
if (isLocalSnapGridOnlyTheme === true) {
|
|
4894
4949
|
this.currentThemeObject.visible = false;
|
|
4950
|
+
this._syncLocalSnapGridBackgroundSurface();
|
|
4895
4951
|
this._syncLocalSnapGridLayer(true);
|
|
4952
|
+
} else {
|
|
4953
|
+
this._syncLocalSnapGridBackgroundSurface();
|
|
4896
4954
|
}
|
|
4897
4955
|
this._forceThemeAnimationFrame = true;
|
|
4898
4956
|
this._forceUpdateFrames = Math.max(this._forceUpdateFrames || 0, 2);
|
|
@@ -6505,6 +6563,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
6505
6563
|
shouldUpdateResidentCssMediaFallback;
|
|
6506
6564
|
const prevVisibilityVersion = Number(this._visibilityVersion || 0);
|
|
6507
6565
|
const prevLodVisualEpoch = Number(this.lodRenderer?._lodVisualEpoch || 0);
|
|
6566
|
+
const css3dVisualChangedSinceLastRenderAtFrameStart =
|
|
6567
|
+
this._css3dVisualChangedSinceLastRender === true;
|
|
6508
6568
|
this._css3dVisualChangedThisFrame = false;
|
|
6509
6569
|
let shouldSyncCss3dTransforms = false;
|
|
6510
6570
|
let lodUpdateCalledThisFrame = false;
|
|
@@ -6637,9 +6697,37 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
6637
6697
|
!hasNonCameraNavigationForcedUpdate &&
|
|
6638
6698
|
!hasPendingNearCssWarmup &&
|
|
6639
6699
|
!this.isWindowResizing;
|
|
6700
|
+
const hasExactVisibilityDiff =
|
|
6701
|
+
visibilityChangedThisFrame === true &&
|
|
6702
|
+
this._lastVisibilityDiffComplete === true &&
|
|
6703
|
+
Number(this._lastVisibilityDiffVersion ?? -1) === Number(this._visibilityVersion || 0);
|
|
6704
|
+
const canApplyCss3dVisibilityDiff =
|
|
6705
|
+
isFullResMode === true &&
|
|
6706
|
+
hasExactVisibilityDiff === true &&
|
|
6707
|
+
lodVisualEpochChangedThisFrame !== true &&
|
|
6708
|
+
css3dVisualChangedSinceLastRenderAtFrameStart !== true &&
|
|
6709
|
+
!isNodeInteracting &&
|
|
6710
|
+
!hasNonCameraNavigationForcedUpdate &&
|
|
6711
|
+
!hasPendingNearCssWarmup &&
|
|
6712
|
+
!this.isWindowResizing;
|
|
6713
|
+
const css3dVisibilityDiffResult = canApplyCss3dVisibilityDiff
|
|
6714
|
+
? window.MindMapCss3DManager?.applyVisibilityDiff?.(
|
|
6715
|
+
this,
|
|
6716
|
+
this._lastVisibilityEnteredIds || [],
|
|
6717
|
+
this._lastVisibilityExitedIds || []
|
|
6718
|
+
)
|
|
6719
|
+
: null;
|
|
6720
|
+
const css3dVisibilityDiffAppliedThisFrame =
|
|
6721
|
+
css3dVisibilityDiffResult?.complete === true;
|
|
6722
|
+
this._lastCss3dVisibilityPatch = css3dVisibilityDiffResult || null;
|
|
6723
|
+
if (css3dVisibilityDiffAppliedThisFrame) {
|
|
6724
|
+
this._css3dVisualChangedThisFrame = false;
|
|
6725
|
+
this._css3dVisualChangedSinceLastRender = false;
|
|
6726
|
+
}
|
|
6640
6727
|
const shouldSyncCss3dForVisibilityChange =
|
|
6641
6728
|
visibilityChangedThisFrame === true &&
|
|
6642
|
-
isIncrementalPanVisibilityFrame !== true
|
|
6729
|
+
isIncrementalPanVisibilityFrame !== true &&
|
|
6730
|
+
css3dVisibilityDiffAppliedThisFrame !== true;
|
|
6643
6731
|
if (useTextOverlayV2 && lodVisualEpochChangedThisFrame) {
|
|
6644
6732
|
this._overlayDirty = true;
|
|
6645
6733
|
}
|
|
@@ -6977,10 +7065,16 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
6977
7065
|
this._syncMotionGridLayerForCameraNavigation();
|
|
6978
7066
|
}
|
|
6979
7067
|
}
|
|
7068
|
+
const localSnapGridPointerRevision = Math.max(0, Number(this._localSnapGridPointerRevision || 0));
|
|
7069
|
+
const hasPendingLocalSnapGridPointerMove =
|
|
7070
|
+
Number(this._lastLocalSnapGridPositionRevision ?? -1) !== localSnapGridPointerRevision;
|
|
6980
7071
|
const shouldUseLocalSnapGridPositionOnly = !!(
|
|
6981
|
-
isCameraNavigationOnlyInteractiveFrame === true &&
|
|
6982
7072
|
this._localSnapGridLayer?.isConnected &&
|
|
6983
|
-
this._lastLocalSnapGridKey
|
|
7073
|
+
this._lastLocalSnapGridKey &&
|
|
7074
|
+
(
|
|
7075
|
+
isCameraNavigationOnlyInteractiveFrame === true ||
|
|
7076
|
+
hasPendingLocalSnapGridPointerMove === true
|
|
7077
|
+
)
|
|
6984
7078
|
);
|
|
6985
7079
|
syncLocalSnapGridForCameraNavigation(this, shouldUseLocalSnapGridPositionOnly === true);
|
|
6986
7080
|
if (shouldRenderWebglFrame === true &&
|
|
@@ -7669,7 +7763,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
7669
7763
|
this.setBackgroundTheme(desiredTheme);
|
|
7670
7764
|
}
|
|
7671
7765
|
|
|
7672
|
-
this.
|
|
7766
|
+
this._syncLocalSnapGridBackgroundSurface();
|
|
7673
7767
|
this.container.style.display = 'block';
|
|
7674
7768
|
|
|
7675
7769
|
if (this.renderer?.domElement) {
|
|
@@ -9794,6 +9888,11 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
9794
9888
|
}
|
|
9795
9889
|
resetFramePerfPeakProfile(moduleInstance);
|
|
9796
9890
|
moduleInstance._renderDebugMetricsSnapshotPeakMs = 0;
|
|
9891
|
+
window.MindMapCss3dHotPath?.resetPerfCounters?.(moduleInstance);
|
|
9892
|
+
moduleInstance.cssRenderer?.resetDebugCounters?.();
|
|
9893
|
+
window.MindMapPipeline?.resetQueueDebugMetrics?.();
|
|
9894
|
+
moduleInstance._lastRenderDebugMetricsSnapshot = null;
|
|
9895
|
+
moduleInstance._lastRenderDebugMetricsSnapshotAt = 0;
|
|
9797
9896
|
return true;
|
|
9798
9897
|
},
|
|
9799
9898
|
getOverlayDebugSnapshot: () => window.MindMapTextOverlayV2?.getDebugSnapshot?.(moduleInstance) || null,
|