@mindexec/cli 0.2.396 → 0.2.397

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.
@@ -2600,11 +2600,19 @@ html body .css3d-resolution-wrapper.lod-low.node-type-csv-table .csv-table td {
2600
2600
 
2601
2601
  .css3d-resolution-wrapper.node-type-templatelauncher > .map-node-template-card {
2602
2602
  border: 1px solid #111827 !important;
2603
- border-radius: 8px !important;
2603
+ border-radius: 0 !important;
2604
2604
  background: #f8fafc;
2605
2605
  box-shadow: none !important;
2606
2606
  }
2607
2607
 
2608
+ .css3d-resolution-wrapper.node-type-templatelauncher > .map-node-template-card.map-node-remote-fleet {
2609
+ border: 0 !important;
2610
+ }
2611
+
2612
+ .css3d-resolution-wrapper.node-type-templatelauncher.selected > .map-node-template-card.map-node-remote-fleet {
2613
+ border: 2px solid var(--node-selection-edge, #2563eb) !important;
2614
+ }
2615
+
2608
2616
  /* Template launcher and Multi Desktop Monitor own their visual chrome on the
2609
2617
  card itself. Keep the CSS3D wrapper neutral so motion CSS3D and the passive
2610
2618
  DOM overlay do not stack different selection chrome. */
@@ -2627,12 +2635,16 @@ html body .css3d-resolution-wrapper.lod-low.node-type-csv-table .csv-table td {
2627
2635
 
2628
2636
  .map-node-template-card {
2629
2637
  border: 1px solid #111827 !important;
2630
- border-radius: 8px;
2638
+ border-radius: 0;
2631
2639
  color: #10212f;
2632
2640
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
2633
2641
  box-shadow: none !important;
2634
2642
  }
2635
2643
 
2644
+ .map-node-template-card.map-node-remote-fleet {
2645
+ border: 0 !important;
2646
+ }
2647
+
2636
2648
  .template-card__shell {
2637
2649
  display: flex;
2638
2650
  flex-direction: column;
@@ -2641,7 +2653,7 @@ html body .css3d-resolution-wrapper.lod-low.node-type-csv-table .csv-table td {
2641
2653
  gap: 12px;
2642
2654
  padding: 18px;
2643
2655
  border: 0;
2644
- border-radius: 8px;
2656
+ border-radius: 0;
2645
2657
  background: #f8fafc;
2646
2658
  overflow: hidden;
2647
2659
  }
@@ -77,7 +77,7 @@
77
77
  });
78
78
  const CanvasPhaseSet = new Set(Object.values(CanvasPhase));
79
79
  const VIEWPORT_METRICS_POLL_INTERVAL = 480;
80
- const PASSIVE_DOM_OVERLAY_RUNTIME_ENABLED = true;
80
+ const PASSIVE_DOM_OVERLAY_RUNTIME_ENABLED = false;
81
81
  const PASSIVE_OVERLAY_ZOOM_DEFER_VISIBLE_THRESHOLD = 24;
82
82
  const PASSIVE_OVERLAY_INTERACTIVE_REFRESH_INTERVAL_MS = 48;
83
83
  const PASSIVE_OVERLAY_INTERACTIVE_DENSE_REFRESH_INTERVAL_MS = 72;
@@ -516,8 +516,11 @@
516
516
  }
517
517
 
518
518
  function hasPassiveOverlayMotionWork(module) {
519
- return PASSIVE_DOM_OVERLAY_RUNTIME_ENABLED === true ||
520
- hasPassiveOverlaySelectionSurface(module) === true;
519
+ if (PASSIVE_DOM_OVERLAY_RUNTIME_ENABLED !== true) {
520
+ return false;
521
+ }
522
+
523
+ return hasPassiveOverlaySelectionSurface(module) === true;
521
524
  }
522
525
 
523
526
  function deferPassiveOverlayForCameraMotion(module, nowMs = 0, delayMs = PASSIVE_OVERLAY_IDLE_DELAY_MS) {
@@ -676,10 +679,10 @@
676
679
  const DEFAULT_RENDER_DEBUG_FLAGS = Object.freeze({
677
680
  enableCss3d: true,
678
681
  enableCss3dTransformSync: true,
679
- enableDomOverlay: true,
680
- enablePassiveOverlayForVisibleNodes: true,
681
- enableOverlayCssZoom: true,
682
- enableSharedNodeViewOverlay: true,
682
+ enableDomOverlay: false,
683
+ enablePassiveOverlayForVisibleNodes: false,
684
+ enableOverlayCssZoom: false,
685
+ enableSharedNodeViewOverlay: false,
683
686
  preferOverlayNodeViewHost: false,
684
687
  enableVisibilityCulling: true,
685
688
  enableLodUpdate: true,
@@ -1067,6 +1070,12 @@
1067
1070
  }
1068
1071
  });
1069
1072
 
1073
+ next.enableDomOverlay = false;
1074
+ next.enablePassiveOverlayForVisibleNodes = false;
1075
+ next.enableOverlayCssZoom = false;
1076
+ next.enableSharedNodeViewOverlay = false;
1077
+ next.preferOverlayNodeViewHost = false;
1078
+
1070
1079
  return next;
1071
1080
  }
1072
1081
 
@@ -1370,16 +1379,10 @@
1370
1379
  const overlayPlacementZoomCount = Number(moduleInstance._overlayDebugPlacementZoomCount || 0);
1371
1380
  const overlayPlacementTransformCount = Number(moduleInstance._overlayDebugPlacementTransformCount || 0);
1372
1381
  const currentLodBand = String(moduleInstance.lodRenderer?._currentLodBand || '').trim().toUpperCase();
1373
- const overlayScaleMode = flags.enableOverlayCssZoom === false
1374
- ? 'transform only'
1375
- : (overlayPlacementZoomCount > 0
1376
- ? 'css zoom + transform fallback'
1377
- : 'transform only (text cards)');
1378
- const overlayCandidateMode = currentLodBand && currentLodBand !== 'NEAR'
1382
+ const overlayScaleMode = 'css3d only';
1383
+ const overlayCandidateMode = currentLodBand
1379
1384
  ? `css3d only (${currentLodBand.toLowerCase()} band)`
1380
- : (flags.enablePassiveOverlayForVisibleNodes !== false
1381
- ? 'all-visible passive'
1382
- : 'selected/editing only');
1385
+ : 'css3d only';
1383
1386
  const shouldBuildResidentDirtySnapshot =
1384
1387
  flags.enableFramePerfProbe === true ||
1385
1388
  flags.enableNodeFrameDebug === true;
@@ -3081,8 +3084,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3081
3084
  this._overlayDirty = true;
3082
3085
  this._lastOverlayKey = '';
3083
3086
  this._lastOverlaySelectionKey = '';
3084
- this.useTextOverlayV2 = true;
3085
- this.useDomTextOverlay = true;
3087
+ this.useTextOverlayV2 = false;
3088
+ this.useDomTextOverlay = false;
3086
3089
  this.renderDebugFlags = getRenderDebugFlagsSnapshot();
3087
3090
  this._framePerfPeakProfile = createEmptyFramePerfPeakProfile();
3088
3091
 
@@ -6016,11 +6019,11 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6016
6019
  ? String(this._textOverlayV2State?.editing?.nodeId || '').trim()
6017
6020
  : String(this._editingOverlayState?.nodeId || '').trim();
6018
6021
  const hasFocusedTextOverlay = !!selectableOverlayNodeId;
6019
- const hasEditingOverlay = !!editingOverlayNodeId;
6022
+ const hasActualTextOverlay = !!selectableOverlayNodeId || !!editingOverlayNodeId;
6023
+ const hasEditingOverlay = !!editingOverlayNodeId || this.isEditingNote === true;
6020
6024
  const shouldTrackTextOverlayDirty =
6021
6025
  isPassiveDomOverlayRuntimeEnabled === true ||
6022
- hasFocusedTextOverlay === true ||
6023
- hasEditingOverlay === true;
6026
+ hasActualTextOverlay === true;
6024
6027
  const selectedOverlayNodeId = String(this.selectedNodeIdJs || '').trim();
6025
6028
  const overlaySelectionKey = `${selectedOverlayNodeId}|${selectableOverlayNodeId}|${editingOverlayNodeId}|${useTextOverlayV2 ? 'v2' : 'legacy'}`;
6026
6029
  if (overlaySelectionKey !== this._lastOverlaySelectionKey) {
@@ -43,6 +43,7 @@
43
43
  const NODE_VIEW_HOST_OVERLAY = 'overlay';
44
44
  const NODE_VIEW_HOST_HYBRID = 'hybrid';
45
45
  const NODE_VIEW_RENDERER_VERSION = 'shared-node-view-v1';
46
+ const CSS3D_ONLY_NODE_RENDERING = true;
46
47
  const CSV_TABLE_MAX_RENDER_ROWS = 500;
47
48
  const CSV_TABLE_MAX_RENDER_COLUMNS = 80;
48
49
  const REMOTE_FLEET_DISPLAY_NAME = 'Multi Desktop Monitor';
@@ -407,11 +408,18 @@
407
408
  }
408
409
  .map-node-template-card {
409
410
  border: 1px solid #111827 !important;
410
- border-radius: 8px;
411
+ border-radius: 0;
411
412
  box-shadow: none !important;
412
413
  }
414
+ .map-node-template-card.map-node-remote-fleet {
415
+ border: 0 !important;
416
+ }
417
+ .css3d-resolution-wrapper.node-type-templatelauncher.selected > .map-node-template-card.map-node-remote-fleet {
418
+ border: 2px solid var(--node-selection-edge, #2563eb) !important;
419
+ }
413
420
  .map-node-template-card > .template-card__shell {
414
421
  border: 0 !important;
422
+ border-radius: 0 !important;
415
423
  }
416
424
  .csv-table-scroll {
417
425
  width: 100%;
@@ -1707,12 +1715,34 @@
1707
1715
  if (isGeneratedCssImageNode(nodeModel)) {
1708
1716
  const directOriginalUrl = isDirectCssMediaUrl(originalUrl) ? originalUrl : '';
1709
1717
  const responseFullResUrl = responseUrl && !isThumbnailCssMediaUrl(responseUrl) ? responseUrl : '';
1710
- return directOriginalUrl || responseFullResUrl || previewUrl || originalUrl;
1718
+ return directOriginalUrl || originalUrl || previewUrl || responseFullResUrl;
1711
1719
  }
1712
1720
 
1713
1721
  return previewUrl || responseUrl || originalUrl;
1714
1722
  }
1715
1723
 
1724
+ function hasRecoverableCssImageAssetReference(nodeModel) {
1725
+ const assetUrls = window.MindMapNodes?.getNodeImageAssetUrls?.(nodeModel) || null;
1726
+ if (assetUrls?.originalPath || assetUrls?.originalUrl || assetUrls?.fullResUrl) {
1727
+ return true;
1728
+ }
1729
+
1730
+ const metadata = getCssMediaMetadata(nodeModel);
1731
+ return !!(
1732
+ metadata?.OriginalPath ||
1733
+ metadata?.OriginalUrl ||
1734
+ metadata?.originalUrl
1735
+ );
1736
+ }
1737
+
1738
+ function shouldRefreshNonRefreshableCssMediaSource(nodeModel, contentTypeLower, currentSource) {
1739
+ if (contentTypeLower !== 'image' || !isNonRefreshableMediaUrl(currentSource)) {
1740
+ return false;
1741
+ }
1742
+
1743
+ return hasRecoverableCssImageAssetReference(nodeModel);
1744
+ }
1745
+
1716
1746
  function shouldPreferCssImagePreviewSource(nodeModel) {
1717
1747
  if (!nodeModel) return false;
1718
1748
  if (isAnimatedGifCssImageNode(nodeModel)) return false;
@@ -4120,7 +4150,8 @@
4120
4150
  return;
4121
4151
  }
4122
4152
 
4123
- if (isNonRefreshableMediaUrl(currentSource)) {
4153
+ if (isNonRefreshableMediaUrl(currentSource)
4154
+ && !shouldRefreshNonRefreshableCssMediaSource(nodeModel, contentTypeLower, currentSource)) {
4124
4155
  return;
4125
4156
  }
4126
4157
 
@@ -4696,6 +4727,10 @@
4696
4727
  }
4697
4728
 
4698
4729
  function supportsTextOverlay(nodeModel) {
4730
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
4731
+ return false;
4732
+ }
4733
+
4699
4734
  const contentType = String(nodeModel?.contentType ?? nodeModel?.ContentType ?? '').toLowerCase();
4700
4735
  return TEXT_OVERLAY_SUPPORTED_TYPES.has(contentType);
4701
4736
  }
@@ -4717,11 +4752,19 @@
4717
4752
  }
4718
4753
 
4719
4754
  function supportsEditingOverlay(nodeModel) {
4755
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
4756
+ return false;
4757
+ }
4758
+
4720
4759
  const contentType = String(nodeModel?.contentType ?? nodeModel?.ContentType ?? '').toLowerCase();
4721
4760
  return EDIT_OVERLAY_SUPPORTED_TYPES.has(contentType);
4722
4761
  }
4723
4762
 
4724
4763
  function supportsSelectionTextOverlay(nodeModel) {
4764
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
4765
+ return false;
4766
+ }
4767
+
4725
4768
  const contentType = String(nodeModel?.contentType ?? nodeModel?.ContentType ?? '').toLowerCase();
4726
4769
  return TEXT_SELECTION_OVERLAY_SUPPORTED_TYPES.has(contentType);
4727
4770
  }
@@ -4732,6 +4775,10 @@
4732
4775
  }
4733
4776
 
4734
4777
  function getReadonlyTextOverlayMode(nodeEntry) {
4778
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
4779
+ return 'none';
4780
+ }
4781
+
4735
4782
  if (isCss3dOnlyTemplateSurfaceNode(nodeEntry?.model)) {
4736
4783
  return 'none';
4737
4784
  }
@@ -5370,10 +5417,18 @@
5370
5417
  }
5371
5418
 
5372
5419
  function isTextOverlayV2Enabled(module) {
5420
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
5421
+ return false;
5422
+ }
5423
+
5373
5424
  return module?.useTextOverlayV2 === true && !!window.MindMapTextOverlayV2;
5374
5425
  }
5375
5426
 
5376
5427
  function hasSelectableTextOverlay(module, nodeId = null) {
5428
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
5429
+ return false;
5430
+ }
5431
+
5377
5432
  if (isTextOverlayV2Enabled(module) && window.MindMapTextOverlayV2?.hasSelection?.(module, nodeId) === true) {
5378
5433
  return true;
5379
5434
  }
@@ -5654,6 +5709,11 @@
5654
5709
  }
5655
5710
 
5656
5711
  function activateSelectableTextOverlay(module, nodeId) {
5712
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
5713
+ clearLegacyTextOverlays(module);
5714
+ return false;
5715
+ }
5716
+
5657
5717
  if (isTextOverlayV2Enabled(module) && window.MindMapTextOverlayV2?.activateSelection?.(module, nodeId) === true) {
5658
5718
  return true;
5659
5719
  }
@@ -6491,6 +6551,10 @@
6491
6551
  }
6492
6552
 
6493
6553
  function beginNodeEditingOverlay(module, nodeEntry) {
6554
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
6555
+ return false;
6556
+ }
6557
+
6494
6558
  if (isTextOverlayV2Enabled(module) && window.MindMapTextOverlayV2?.beginEditing?.(module, nodeEntry) === true) {
6495
6559
  return true;
6496
6560
  }
@@ -6563,6 +6627,13 @@
6563
6627
  }
6564
6628
 
6565
6629
  function syncEditingOverlay(module) {
6630
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
6631
+ if (getActiveEditingOverlayState(module)) {
6632
+ clearEditingOverlay(module, { commit: true });
6633
+ }
6634
+ return;
6635
+ }
6636
+
6566
6637
  if (isTextOverlayV2Enabled(module)) {
6567
6638
  return;
6568
6639
  }
@@ -6590,6 +6661,10 @@
6590
6661
  }
6591
6662
 
6592
6663
  function hasEditingOverlay(module, nodeId = null) {
6664
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
6665
+ return false;
6666
+ }
6667
+
6593
6668
  if (isTextOverlayV2Enabled(module) && window.MindMapTextOverlayV2?.hasEditing?.(module, nodeId) === true) {
6594
6669
  return true;
6595
6670
  }
@@ -6745,6 +6820,14 @@
6745
6820
  }
6746
6821
 
6747
6822
  function syncTextOverlays(module) {
6823
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
6824
+ clearLegacyTextOverlays(module);
6825
+ if (getActiveEditingOverlayState(module)) {
6826
+ clearEditingOverlay(module, { commit: true });
6827
+ }
6828
+ return;
6829
+ }
6830
+
6748
6831
  if (isTextOverlayV2Enabled(module)) {
6749
6832
  clearLegacyTextOverlays(module);
6750
6833
  return;
@@ -19257,7 +19340,9 @@
19257
19340
  overflow: hidden;
19258
19341
  border-radius: 0;
19259
19342
  background: ${hasPreviewSource ? 'linear-gradient(135deg, #0f172a 0%, #1e293b 100%)' : '#ffffff'};
19260
- border: 1px solid rgba(148, 163, 184, ${isDetail ? '0.34' : '0.24'});
19343
+ border: ${isDetail ? '1px solid rgba(148, 163, 184, 0.34)' : '0'};
19344
+ outline: 0;
19345
+ outline-offset: 0;
19261
19346
  box-shadow: none;
19262
19347
  `;
19263
19348
  ensureRemoteFleetFrameCanvas(preview);
@@ -19442,7 +19527,9 @@
19442
19527
  `;
19443
19528
  const preview = createDevicePreview(device, 'tile');
19444
19529
  if (isSelected) {
19445
- preview.style.borderColor = 'rgba(37, 99, 235, 0.86)';
19530
+ preview.style.border = '2px solid rgba(37, 99, 235, 0.86)';
19531
+ preview.style.outline = '0';
19532
+ preview.style.outlineOffset = '0';
19446
19533
  preview.style.boxShadow = 'none';
19447
19534
  }
19448
19535
  card.appendChild(preview);
@@ -19871,11 +19958,11 @@
19871
19958
 
19872
19959
  const preview = card.querySelector?.('[data-remote-fleet-device-preview]') || card.firstElementChild;
19873
19960
  if (preview?.style) {
19874
- preview.style.borderColor = isSelected
19875
- ? 'rgba(37, 99, 235, 0.86)'
19876
- : 'rgba(148, 163, 184, 0.24)';
19877
- preview.style.outline = isSelected ? '2px solid rgba(37, 99, 235, 0.18)' : '0';
19878
- preview.style.outlineOffset = isSelected ? '-2px' : '0';
19961
+ preview.style.border = isSelected
19962
+ ? '2px solid rgba(37, 99, 235, 0.86)'
19963
+ : '0';
19964
+ preview.style.outline = '0';
19965
+ preview.style.outlineOffset = '0';
19879
19966
  preview.style.boxShadow = 'none';
19880
19967
  }
19881
19968
  };
@@ -23326,6 +23413,10 @@
23326
23413
  }
23327
23414
 
23328
23415
  function getNodeViewPrimaryHost(module = _module) {
23416
+ if (CSS3D_ONLY_NODE_RENDERING === true) {
23417
+ return NODE_VIEW_HOST_CSS3D;
23418
+ }
23419
+
23329
23420
  const flags = module?.renderDebugFlags || {};
23330
23421
  const explicit = normalizeNodeViewHost(flags.nodeViewPrimaryHost, '');
23331
23422
  if (explicit) {
@@ -23338,7 +23429,9 @@
23338
23429
  }
23339
23430
 
23340
23431
  function getNodeViewHostPolicy(module, nodeModel, options = {}) {
23341
- const requestedHost = normalizeNodeViewHost(options.hostKind, NODE_VIEW_HOST_CSS3D);
23432
+ const requestedHost = CSS3D_ONLY_NODE_RENDERING === true
23433
+ ? NODE_VIEW_HOST_CSS3D
23434
+ : normalizeNodeViewHost(options.hostKind, NODE_VIEW_HOST_CSS3D);
23342
23435
  const primaryHost = getNodeViewPrimaryHost(module);
23343
23436
  const info = getNodeViewContentInfo(nodeModel);
23344
23437
  const overlayPrimary = primaryHost === NODE_VIEW_HOST_OVERLAY;
@@ -23352,7 +23445,8 @@
23352
23445
  isCss3dPrimary: primaryHost === NODE_VIEW_HOST_CSS3D || hybridPrimary,
23353
23446
  isOverlayPrimary: overlayPrimary,
23354
23447
  isHybridPrimary: hybridPrimary,
23355
- useSharedOverlay: module?.renderDebugFlags?.enableSharedNodeViewOverlay !== false,
23448
+ useSharedOverlay: CSS3D_ONLY_NODE_RENDERING !== true &&
23449
+ module?.renderDebugFlags?.enableSharedNodeViewOverlay !== false,
23356
23450
  supportsNodeView: shouldCreateDynamicNodeView(nodeModel, info) || !shouldBypassNodeViewTemplate(nodeModel, info),
23357
23451
  contentTypeLower: info.contentTypeLower,
23358
23452
  visualContentTypeLower: info.visualContentTypeLower
@@ -24614,6 +24708,7 @@
24614
24708
  syncCss3dEmbedInteractivity: syncCss3dEmbedInteractivity,
24615
24709
  getMountedEmbedState: getMountedEmbedState,
24616
24710
  hasMountedEmbedIframe: hasMountedEmbedIframe,
24711
+ isCss3dOnlyNodeRendering: () => CSS3D_ONLY_NODE_RENDERING === true,
24617
24712
  shouldConsumeEmbedPointerEvent: shouldConsumeEmbedPointerEvent,
24618
24713
  syncCss3dContent: syncCss3dContent,
24619
24714
  syncCss3dVideoLodMediaSource: syncCss3dVideoLodMediaSource,
@@ -512,6 +512,13 @@ window.MindMapInteractions = (function () {
512
512
  }
513
513
  }
514
514
 
515
+ if (window.MindMapCss3DManager?.isCss3dOnlyNodeRendering?.() === true) {
516
+ module._overlayDirty = false;
517
+ module._deferPassiveOverlayRefresh = false;
518
+ module._passiveOverlayResumeAt = 0;
519
+ return;
520
+ }
521
+
515
522
  if (module.useTextOverlayV2 === true && isDomOverlayEnabled && window.MindMapTextOverlayV2?.updateFrame) {
516
523
  window.MindMapTextOverlayV2.updateFrame(module);
517
524
  } else if (module.useTextOverlayV2 !== true && window.MindMapCss3DManager?.syncTextOverlays) {
@@ -521,6 +528,10 @@ window.MindMapInteractions = (function () {
521
528
  }
522
529
 
523
530
  function syncOverlayNodePlacementDuringDrag(module, nodeId) {
531
+ if (window.MindMapCss3DManager?.isCss3dOnlyNodeRendering?.() === true) {
532
+ return;
533
+ }
534
+
524
535
  if (!module || !nodeId || module.useTextOverlayV2 !== true) {
525
536
  return;
526
537
  }
@@ -533,6 +544,15 @@ window.MindMapInteractions = (function () {
533
544
  }
534
545
 
535
546
  function setPassiveOverlaySuppressedDuringDrag(module, suppressed) {
547
+ if (window.MindMapCss3DManager?.isCss3dOnlyNodeRendering?.() === true) {
548
+ if (module) {
549
+ module._deferPassiveOverlayRefresh = false;
550
+ module._passiveOverlayResumeAt = 0;
551
+ module._suppressPassiveDomOverlayDuringZoom = false;
552
+ }
553
+ return;
554
+ }
555
+
536
556
  if (!module || module.useTextOverlayV2 !== true || !window.MindMapTextOverlayV2?.setPassiveOverlaySuppressed) {
537
557
  return;
538
558
  }
@@ -555,6 +575,14 @@ window.MindMapInteractions = (function () {
555
575
  module._overlayDirty = true;
556
576
  module._forceUpdateFrames = Math.max(Number(module._forceUpdateFrames || 0), forceFrames);
557
577
 
578
+ if (window.MindMapCss3DManager?.isCss3dOnlyNodeRendering?.() === true) {
579
+ module._deferPassiveOverlayRefresh = false;
580
+ module._cameraNavigationOverlayInputTime = 0;
581
+ module._passiveOverlayResumeAt = 0;
582
+ module._overlayDirty = false;
583
+ return;
584
+ }
585
+
558
586
  const isMotionInteraction =
559
587
  module.isZooming === true ||
560
588
  module.isPanning === true ||
@@ -832,7 +860,9 @@ window.MindMapInteractions = (function () {
832
860
  if (isReadOnlyTextSelectionNode(nodeEntry)) {
833
861
  if (isLink) return;
834
862
 
835
- const preferCss3dNativeSelection = module?.useTextOverlayV2 === true;
863
+ const preferCss3dNativeSelection =
864
+ window.MindMapCss3DManager?.isCss3dOnlyNodeRendering?.() === true ||
865
+ module?.useTextOverlayV2 === true;
836
866
  if (!preferCss3dNativeSelection &&
837
867
  (contentType === 'markdown' || contentType === 'text') &&
838
868
  window.MindMapCss3DManager?.activateSelectableTextOverlay) {
@@ -7257,10 +7287,7 @@ window.MindMapInteractions = (function () {
7257
7287
  );
7258
7288
  const isMemoDom = !!cssEl?.querySelector?.('.map-node-memo, .map-node-memo__shell, .map-node-memo__body');
7259
7289
  const isMemoNode = contentType === 'memo' || isMemoDom || isAgentCommandDom;
7260
- const preferDomEditingOverlay = contentType === 'memo'
7261
- || contentType === 'note'
7262
- || isMemoDom
7263
- || isAgentCommandDom;
7290
+ const preferDomEditingOverlay = false;
7264
7291
 
7265
7292
  // ▼▼▼ [FIX] 카메라 행렬 강제 업데이트 (CSS3D와 WebGL 동기화) ▼▼▼
7266
7293
  // 클릭 시 카메라의 이전 프레임 행렬로 렌더링되는 것을 방지
@@ -1479,10 +1479,13 @@
1479
1479
  }
1480
1480
 
1481
1481
  const metadata = getNodeMetadata(nodeModel) || {};
1482
- const provider = String(metadata.ImageGenerationProvider || metadata.imageGenerationProvider || '').trim();
1483
- const operation = String(metadata.RequestedMediaOperation || metadata.requestedMediaOperation || '').trim().toLowerCase();
1482
+ const provider = getMetadataValueCaseInsensitive(metadata, 'ImageGenerationProvider', 'imageGenerationProvider');
1483
+ const operation = getMetadataValueCaseInsensitive(metadata, 'RequestedMediaOperation', 'requestedMediaOperation').toLowerCase();
1484
1484
  return !!provider ||
1485
- !!(metadata.GeneratedImageSourceWidth || metadata.generatedImageSourceWidth) ||
1485
+ !!getMetadataValueCaseInsensitive(metadata, 'GeneratedImageSourceWidth', 'generatedImageSourceWidth') ||
1486
+ !!getMetadataValueCaseInsensitive(metadata, 'GeneratedImageSourceHeight', 'generatedImageSourceHeight') ||
1487
+ !!getMetadataValueCaseInsensitive(metadata, 'CodexImageQuality', 'codexImageQuality') ||
1488
+ !!getMetadataValueCaseInsensitive(metadata, 'ImageRouterRevisedPrompt', 'imageRouterRevisedPrompt') ||
1486
1489
  operation === 'text2image' ||
1487
1490
  operation === 'image2image' ||
1488
1491
  operation === 'inpaint';
@@ -1702,14 +1705,17 @@
1702
1705
  const missingFullResUrl = canUseAsFullResImageUrl(missingAssetUrl) ? missingAssetUrl : '';
1703
1706
  const mediaPreviewUrl = isAnimatedGif ? '' : (thumbnailUrl || snapshotUrl || previewImageUrl);
1704
1707
  const responsePreviewUrl = isImageContent && !isAnimatedGif ? responseUrl : '';
1708
+ const generatedFullResUrl = originalUrl || originalPath || responseFullResUrl || missingFullResUrl;
1705
1709
  const fullResUrl = isImageContent
1706
1710
  ? (isGeneratedImageNode
1707
- ? (originalUrl || responseFullResUrl || originalPath || missingFullResUrl)
1711
+ ? generatedFullResUrl
1708
1712
  : (originalUrl || originalPath || responseFullResUrl || missingFullResUrl))
1709
1713
  : (originalUrl || originalPath || snapshotUrl || previewImageUrl || thumbnailUrl || missingFullResUrl);
1710
1714
  const previewUrl = isAnimatedGif
1711
1715
  ? (fullResUrl || responseUrl || originalPath || originalUrl || missingAssetUrl)
1712
- : (mediaPreviewUrl || responsePreviewUrl || originalPath || originalUrl || missingAssetUrl);
1716
+ : (isGeneratedImageNode
1717
+ ? (mediaPreviewUrl || originalUrl || originalPath || responsePreviewUrl || missingAssetUrl)
1718
+ : (mediaPreviewUrl || responsePreviewUrl || originalPath || originalUrl || missingAssetUrl));
1713
1719
 
1714
1720
  return {
1715
1721
  responseUrl,
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  const DEBUG = false;
5
- const PASSIVE_DOM_OVERLAY_ENABLED = true;
5
+ const PASSIVE_DOM_OVERLAY_ENABLED = false;
6
6
  const DEFAULT_OVERLAY_SCROLLABLE_SELECTOR = '.node-response, .note-content, .markdown-body, .prose, .note-textarea, .code-body, .code-content, .pdf-content, .text-content, .file-content, .map-node-memo__body, .map-node-memo__body-view, .map-node-memo__agent-plan-body, .map-node-memo__agent-console-body, pre, code';
7
7
  const PASSIVE_OVERLAY_NEAR_EXIT_GRACE_MS = 220;
8
8
  const PASSIVE_OVERLAY_CANDIDATE_GRACE_MS = 160;
@@ -4174,7 +4174,10 @@
4174
4174
  }
4175
4175
  }
4176
4176
  hideCard(card);
4177
+ card.replaceChildren?.();
4178
+ card.remove?.();
4177
4179
  });
4180
+ state.cards.clear();
4178
4181
 
4179
4182
  clearLayerTransform(state.layer);
4180
4183
  if (state.layer?.style) {
@@ -4182,6 +4185,8 @@
4182
4185
  }
4183
4186
 
4184
4187
  state.layoutSnapshot = null;
4188
+ state.selectionNodeId = '';
4189
+ state.editing = null;
4185
4190
  state.lastPassiveRenderEnabled = null;
4186
4191
  state.lastViewKey = '';
4187
4192
  state.lastVisibilityVersion = -1;
@@ -4695,6 +4700,12 @@
4695
4700
  }
4696
4701
 
4697
4702
  const state = ensureState(module);
4703
+ if (PASSIVE_DOM_OVERLAY_ENABLED !== true) {
4704
+ cleanupDisabledOverlay(module, state);
4705
+ log('disabled: css3d-only rendering is active');
4706
+ return;
4707
+ }
4708
+
4698
4709
  ensureLayer(module);
4699
4710
  window.MindMapCss3DManager?.injectMarkdownStyles?.();
4700
4711
  if (state) {
@@ -4706,6 +4717,55 @@
4706
4717
  log('initialized');
4707
4718
  }
4708
4719
 
4720
+ if (PASSIVE_DOM_OVERLAY_ENABLED !== true) {
4721
+ const cleanupDisabledRuntime = (module) => {
4722
+ if (!module) {
4723
+ return false;
4724
+ }
4725
+
4726
+ cleanupDisabledOverlay(module, ensureState(module));
4727
+ return false;
4728
+ };
4729
+
4730
+ window.MindMapTextOverlayV2 = {
4731
+ init: cleanupDisabledRuntime,
4732
+ updateFrame: cleanupDisabledRuntime,
4733
+ syncPassiveViewTransform: () => false,
4734
+ setPassiveOverlaySuppressed: (module) => {
4735
+ if (module) {
4736
+ module._suppressPassiveDomOverlayDuringZoom = false;
4737
+ module._deferPassiveOverlayRefresh = false;
4738
+ module._passiveOverlayResumeAt = 0;
4739
+ }
4740
+ return false;
4741
+ },
4742
+ setMotionHint: () => false,
4743
+ isPassiveDomOverlayEnabled: () => false,
4744
+ invalidateNode: () => { },
4745
+ invalidateView: () => { },
4746
+ updateNodePlacement: () => false,
4747
+ shouldRenderPassiveDomOverlays: () => false,
4748
+ shouldSkipCss3dRender: () => false,
4749
+ activateSelection: () => false,
4750
+ clearSelection: cleanupDisabledRuntime,
4751
+ beginEditing: () => false,
4752
+ clearEditing: cleanupDisabledRuntime,
4753
+ hasSelection: () => false,
4754
+ hasEditing: () => false,
4755
+ getDebugSnapshot: () => ({
4756
+ available: false,
4757
+ reason: 'passive DOM overlay disabled; CSS3D-only rendering active'
4758
+ }),
4759
+ purgeMediaOverlayCards: cleanupDisabledRuntime,
4760
+ suspendSource: () => false,
4761
+ resumeSource: resumeSource,
4762
+ hasLiveInteractiveOverlay: () => false,
4763
+ syncReadonlySourceScroll: () => false,
4764
+ invalidateReadonlySource: () => false
4765
+ };
4766
+ return;
4767
+ }
4768
+
4709
4769
  window.MindMapTextOverlayV2 = {
4710
4770
  init: init,
4711
4771
  updateFrame: updateFrame,
@@ -47,7 +47,12 @@
47
47
  }
48
48
 
49
49
  async function requestFreshNodeAssetUrl(nodeId, failedUrl, options = {}) {
50
- if (!nodeId || options.skipAssetRefresh === true || isNonRefreshableLocalUrl(failedUrl)) {
50
+ const canRefreshNonRefreshable = options.preferOriginal === true
51
+ || options.allowOriginalFallback === true
52
+ || options.allowNonRefreshableRefresh === true;
53
+ if (!nodeId
54
+ || options.skipAssetRefresh === true
55
+ || (isNonRefreshableLocalUrl(failedUrl) && !canRefreshNonRefreshable)) {
51
56
  return null;
52
57
  }
53
58