@mindexec/cli 0.2.446 → 0.2.448
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 +36 -6
- package/electron/main.cjs +347 -0
- package/electron/source-smoke.mjs +39 -0
- package/electron/windows-package-smoke.mjs +147 -0
- package/package.json +74 -14
- 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
|
@@ -44,7 +44,6 @@
|
|
|
44
44
|
const NODE_VIEW_HOST_HYBRID = 'hybrid';
|
|
45
45
|
const NODE_VIEW_RENDERER_VERSION = 'shared-node-view-v1';
|
|
46
46
|
const CSS3D_ONLY_NODE_RENDERING = true;
|
|
47
|
-
const NATIVE_TEXT_SELECTION_CONTENT_SELECTORS = '.node-response, .code-body, .text-content, .markdown-body, .csv-table-scroll, .csv-table-cell, textarea, .map-node-memo__title, .map-node-memo__body, .map-node-memo__body-view, .map-node-memo__body-view *';
|
|
48
47
|
const CSV_TABLE_MAX_RENDER_ROWS = 500;
|
|
49
48
|
const CSV_TABLE_MAX_RENDER_COLUMNS = 80;
|
|
50
49
|
const REMOTE_FLEET_DISPLAY_NAME = 'Multi Desktop Monitor';
|
|
@@ -827,6 +826,19 @@
|
|
|
827
826
|
cursor: grab;
|
|
828
827
|
}
|
|
829
828
|
|
|
829
|
+
.css3d-resolution-wrapper:not(.is-text-selection-owner) .node-response,
|
|
830
|
+
.css3d-resolution-wrapper:not(.is-text-selection-owner) .code-body,
|
|
831
|
+
.css3d-resolution-wrapper:not(.is-text-selection-owner) .text-content,
|
|
832
|
+
.css3d-resolution-wrapper:not(.is-text-selection-owner) .markdown-body,
|
|
833
|
+
.css3d-resolution-wrapper:not(.is-text-selection-owner) .csv-table-scroll,
|
|
834
|
+
.css3d-resolution-wrapper:not(.is-text-selection-owner) textarea,
|
|
835
|
+
.css3d-resolution-wrapper:not(.is-text-selection-owner) .map-node-memo__title,
|
|
836
|
+
.css3d-resolution-wrapper:not(.is-text-selection-owner) .map-node-memo__body,
|
|
837
|
+
.css3d-resolution-wrapper:not(.is-text-selection-owner) .map-node-memo__body-view {
|
|
838
|
+
user-select: none !important;
|
|
839
|
+
-webkit-user-select: none !important;
|
|
840
|
+
}
|
|
841
|
+
|
|
830
842
|
.css3d-resolution-wrapper.is-text-selection-owner .node-response,
|
|
831
843
|
.css3d-resolution-wrapper.is-text-selection-owner .code-body,
|
|
832
844
|
.css3d-resolution-wrapper.is-text-selection-owner .text-content,
|
|
@@ -4703,9 +4715,6 @@
|
|
|
4703
4715
|
const TEXT_OVERLAY_MAX_CANDIDATES = 6;
|
|
4704
4716
|
const TEXT_OVERLAY_MAX_VISIBLE = 2;
|
|
4705
4717
|
const TEXT_OVERLAY_OVERLAP_PADDING = 10;
|
|
4706
|
-
const TEXT_OVERLAY_SOURCE_SUSPENDED_CLASS = 'mind-map-text-overlay-source-suspended';
|
|
4707
|
-
const TEXT_OVERLAY_SOURCE_SUSPENDED_ATTR = 'data-text-overlay-source-suspended';
|
|
4708
|
-
const TEXT_OVERLAY_SOURCE_STYLE_STATE = new WeakMap();
|
|
4709
4718
|
const EDIT_OVERLAY_SUPPORTED_TYPES = new Set(['memo', 'note']);
|
|
4710
4719
|
|
|
4711
4720
|
function hexToRgb(hexColor) {
|
|
@@ -5019,388 +5028,45 @@
|
|
|
5019
5028
|
|| getTextOverlayHostElement(nodeEntry);
|
|
5020
5029
|
}
|
|
5021
5030
|
|
|
5022
|
-
|
|
5023
|
-
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
|
|
5027
|
-
|
|
5028
|
-
|
|
5029
|
-
|
|
5030
|
-
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
&& !element.classList?.contains?.('resize-handle')
|
|
5048
|
-
&& (element.style.display !== 'none' || element.offsetWidth > 0 || element.offsetHeight > 0));
|
|
5049
|
-
}
|
|
5050
|
-
|
|
5051
|
-
function ensureTextOverlaySourceStyleState(element) {
|
|
5052
|
-
if (!element) {
|
|
5053
|
-
return null;
|
|
5054
|
-
}
|
|
5055
|
-
|
|
5056
|
-
let state = TEXT_OVERLAY_SOURCE_STYLE_STATE.get(element) || null;
|
|
5057
|
-
if (!state) {
|
|
5058
|
-
state = {
|
|
5059
|
-
opacity: element.style.opacity,
|
|
5060
|
-
pointerEvents: element.style.pointerEvents,
|
|
5061
|
-
userSelect: element.style.userSelect,
|
|
5062
|
-
webkitUserSelect: element.style.webkitUserSelect,
|
|
5063
|
-
caretColor: element.style.caretColor,
|
|
5064
|
-
contentVisibility: element.style.contentVisibility,
|
|
5065
|
-
containIntrinsicSize: element.style.containIntrinsicSize,
|
|
5066
|
-
contain: element.style.contain
|
|
5067
|
-
};
|
|
5068
|
-
TEXT_OVERLAY_SOURCE_STYLE_STATE.set(element, state);
|
|
5069
|
-
}
|
|
5070
|
-
|
|
5071
|
-
return state;
|
|
5072
|
-
}
|
|
5073
|
-
|
|
5074
|
-
function resetTextOverlaySourcePresentation(element) {
|
|
5075
|
-
if (!element) {
|
|
5076
|
-
return;
|
|
5077
|
-
}
|
|
5078
|
-
|
|
5079
|
-
element.classList?.remove?.(TEXT_OVERLAY_SOURCE_SUSPENDED_CLASS);
|
|
5080
|
-
element.removeAttribute?.(TEXT_OVERLAY_SOURCE_SUSPENDED_ATTR);
|
|
5081
|
-
element.style.opacity = '';
|
|
5082
|
-
element.style.pointerEvents = '';
|
|
5083
|
-
element.style.userSelect = '';
|
|
5084
|
-
element.style.webkitUserSelect = '';
|
|
5085
|
-
element.style.caretColor = '';
|
|
5086
|
-
element.style.contentVisibility = '';
|
|
5087
|
-
element.style.containIntrinsicSize = '';
|
|
5088
|
-
element.style.contain = '';
|
|
5089
|
-
}
|
|
5090
|
-
|
|
5091
|
-
function suspendTextOverlaySourceTarget(element) {
|
|
5092
|
-
if (!element) {
|
|
5093
|
-
return;
|
|
5094
|
-
}
|
|
5095
|
-
|
|
5096
|
-
ensureTextOverlaySourceStyleState(element);
|
|
5097
|
-
|
|
5098
|
-
const rect = element.getBoundingClientRect();
|
|
5099
|
-
const width = Math.max(1, Math.round(Number(rect.width || element.offsetWidth || 1)));
|
|
5100
|
-
const height = Math.max(1, Math.round(Number(rect.height || element.offsetHeight || 1)));
|
|
5101
|
-
|
|
5102
|
-
element.classList?.add?.(TEXT_OVERLAY_SOURCE_SUSPENDED_CLASS);
|
|
5103
|
-
element.setAttribute?.(TEXT_OVERLAY_SOURCE_SUSPENDED_ATTR, 'true');
|
|
5104
|
-
element.style.pointerEvents = 'none';
|
|
5105
|
-
element.style.userSelect = 'none';
|
|
5106
|
-
element.style.webkitUserSelect = 'none';
|
|
5107
|
-
element.style.caretColor = 'transparent';
|
|
5108
|
-
element.style.opacity = '0';
|
|
5109
|
-
element.style.contain = 'layout style paint';
|
|
5110
|
-
// Keep scroll metrics alive while the overlay clone is visible. If this
|
|
5111
|
-
// becomes content-visibility:hidden, scrollHeight/clientHeight collapse
|
|
5112
|
-
// and overlay scroll can no longer be mapped back to CSS3D accurately.
|
|
5113
|
-
element.style.contentVisibility = 'visible';
|
|
5114
|
-
element.style.containIntrinsicSize = '';
|
|
5115
|
-
}
|
|
5116
|
-
|
|
5117
|
-
function restoreTextOverlaySourceTarget(element) {
|
|
5118
|
-
if (!element) {
|
|
5119
|
-
return;
|
|
5120
|
-
}
|
|
5121
|
-
|
|
5122
|
-
const state = TEXT_OVERLAY_SOURCE_STYLE_STATE.get(element) || null;
|
|
5123
|
-
if (!state) {
|
|
5124
|
-
resetTextOverlaySourcePresentation(element);
|
|
5125
|
-
return;
|
|
5126
|
-
}
|
|
5127
|
-
|
|
5128
|
-
element.classList?.remove?.(TEXT_OVERLAY_SOURCE_SUSPENDED_CLASS);
|
|
5129
|
-
element.removeAttribute?.(TEXT_OVERLAY_SOURCE_SUSPENDED_ATTR);
|
|
5130
|
-
element.style.opacity = state.opacity;
|
|
5131
|
-
element.style.pointerEvents = state.pointerEvents;
|
|
5132
|
-
element.style.userSelect = state.userSelect;
|
|
5133
|
-
element.style.webkitUserSelect = state.webkitUserSelect;
|
|
5134
|
-
element.style.caretColor = state.caretColor;
|
|
5135
|
-
element.style.contentVisibility = state.contentVisibility;
|
|
5136
|
-
element.style.containIntrinsicSize = state.containIntrinsicSize;
|
|
5137
|
-
element.style.contain = state.contain;
|
|
5138
|
-
TEXT_OVERLAY_SOURCE_STYLE_STATE.delete(element);
|
|
5139
|
-
}
|
|
5140
|
-
|
|
5141
|
-
function stripTextOverlayPresentationOverrides(root) {
|
|
5142
|
-
if (!root) {
|
|
5143
|
-
return;
|
|
5144
|
-
}
|
|
5145
|
-
|
|
5146
|
-
const resetTarget = element => {
|
|
5147
|
-
if (!element) {
|
|
5148
|
-
return;
|
|
5149
|
-
}
|
|
5150
|
-
|
|
5151
|
-
resetTextOverlaySourcePresentation(element);
|
|
5152
|
-
};
|
|
5153
|
-
|
|
5154
|
-
if (root.hasAttribute?.(TEXT_OVERLAY_SOURCE_SUSPENDED_ATTR) || root.classList?.contains?.(TEXT_OVERLAY_SOURCE_SUSPENDED_CLASS)) {
|
|
5155
|
-
resetTarget(root);
|
|
5156
|
-
}
|
|
5157
|
-
root.querySelectorAll?.(`[${TEXT_OVERLAY_SOURCE_SUSPENDED_ATTR}], .${TEXT_OVERLAY_SOURCE_SUSPENDED_CLASS}`)?.forEach?.(resetTarget);
|
|
5158
|
-
}
|
|
5159
|
-
|
|
5160
|
-
function getNativeTextSelectionSourceNodeId(module) {
|
|
5161
|
-
return String(module?._nativeTextSelectionSourceNodeId || '').trim();
|
|
5162
|
-
}
|
|
5163
|
-
|
|
5164
|
-
function hasNativeTextSelectionSource(module, nodeId = null) {
|
|
5165
|
-
const activeId = getNativeTextSelectionSourceNodeId(module);
|
|
5166
|
-
if (!activeId) {
|
|
5167
|
-
return false;
|
|
5168
|
-
}
|
|
5169
|
-
|
|
5170
|
-
if (nodeId === null) {
|
|
5171
|
-
return true;
|
|
5172
|
-
}
|
|
5173
|
-
|
|
5174
|
-
return activeId === String(nodeId || '').trim();
|
|
5175
|
-
}
|
|
5176
|
-
|
|
5177
|
-
function setNativeTextSelectionOwnerClass(module, nodeId = null) {
|
|
5178
|
-
if (!module) return false;
|
|
5179
|
-
const nextId = String(nodeId || '').trim();
|
|
5180
|
-
const previousId = String(module._nativeTextSelectionOwnerNodeId || '').trim();
|
|
5181
|
-
if (previousId === nextId) return true;
|
|
5182
|
-
|
|
5183
|
-
const getWrapper = id => {
|
|
5184
|
-
const entry = id ? module.nodeObjectsById?.get?.(id) : null;
|
|
5185
|
-
return entry?.cssObject?.element?.closest?.('.css3d-resolution-wrapper')
|
|
5186
|
-
|| entry?.cssObject?.element
|
|
5187
|
-
|| null;
|
|
5188
|
-
};
|
|
5189
|
-
const previousWrapper = getWrapper(previousId);
|
|
5190
|
-
previousWrapper?.classList?.remove?.('is-text-selection-owner');
|
|
5191
|
-
if (previousWrapper?.querySelectorAll) {
|
|
5192
|
-
previousWrapper.querySelectorAll(NATIVE_TEXT_SELECTION_CONTENT_SELECTORS).forEach(element => {
|
|
5193
|
-
element.style.userSelect = 'none';
|
|
5194
|
-
element.style.webkitUserSelect = 'none';
|
|
5195
|
-
});
|
|
5196
|
-
}
|
|
5197
|
-
const nextWrapper = getWrapper(nextId);
|
|
5198
|
-
nextWrapper?.classList?.add?.('is-text-selection-owner');
|
|
5199
|
-
if (nextWrapper?.querySelectorAll) {
|
|
5200
|
-
nextWrapper.querySelectorAll(NATIVE_TEXT_SELECTION_CONTENT_SELECTORS).forEach(element => {
|
|
5201
|
-
element.style.userSelect = 'text';
|
|
5202
|
-
element.style.webkitUserSelect = 'text';
|
|
5203
|
-
});
|
|
5204
|
-
}
|
|
5205
|
-
module._nativeTextSelectionOwnerNodeId = nextId || null;
|
|
5206
|
-
return true;
|
|
5207
|
-
}
|
|
5208
|
-
|
|
5209
|
-
function activateNativeTextSelectionSource(module, nodeId) {
|
|
5210
|
-
const id = String(nodeId || '').trim();
|
|
5211
|
-
if (!module || !id) {
|
|
5212
|
-
return false;
|
|
5213
|
-
}
|
|
5214
|
-
|
|
5215
|
-
module._nativeTextSelectionSourceNodeId = id;
|
|
5216
|
-
setNativeTextSelectionOwnerClass(module, id);
|
|
5217
|
-
ensureTextOverlaySourceVisible(module, id);
|
|
5218
|
-
return true;
|
|
5219
|
-
}
|
|
5220
|
-
|
|
5221
|
-
function clearNativeTextSelectionSource(module, nodeId = null) {
|
|
5222
|
-
const activeId = getNativeTextSelectionSourceNodeId(module);
|
|
5223
|
-
const requestedId = nodeId === null ? activeId : String(nodeId || '').trim();
|
|
5224
|
-
if (!module || !activeId || !requestedId || activeId !== requestedId) {
|
|
5225
|
-
return false;
|
|
5226
|
-
}
|
|
5227
|
-
|
|
5228
|
-
module._nativeTextSelectionSourceNodeId = null;
|
|
5229
|
-
setNativeTextSelectionOwnerClass(module, null);
|
|
5230
|
-
return true;
|
|
5231
|
-
}
|
|
5232
|
-
|
|
5233
|
-
function isTextOverlaySelectionNode(module, nodeEntry) {
|
|
5234
|
-
const contentType = String(nodeEntry?.model?.contentType ?? nodeEntry?.model?.ContentType ?? '').toLowerCase();
|
|
5235
|
-
if (contentType !== 'text' && contentType !== 'markdown') {
|
|
5236
|
-
return false;
|
|
5237
|
-
}
|
|
5238
|
-
|
|
5239
|
-
const nodeId = String(getNodeId(nodeEntry?.model) || '').trim();
|
|
5240
|
-
return hasNativeTextSelectionSource(module, nodeId);
|
|
5241
|
-
}
|
|
5242
|
-
|
|
5243
|
-
function setTextOverlaySourceActive(nodeEntry, isActive) {
|
|
5244
|
-
if (isCss3dMediaNode(nodeEntry?.model)) {
|
|
5245
|
-
restoreCss3dMediaOverlayState(nodeEntry.model, nodeEntry.cssObject);
|
|
5246
|
-
nodeEntry._textOverlayActive = false; nodeEntry._css3dSourceSuspended = false;
|
|
5247
|
-
return;
|
|
5248
|
-
}
|
|
5249
|
-
|
|
5250
|
-
const host = getTextOverlayHostElement(nodeEntry);
|
|
5251
|
-
if (!host?.classList) {
|
|
5252
|
-
return;
|
|
5253
|
-
}
|
|
5254
|
-
|
|
5255
|
-
host.classList.toggle('mind-map-text-overlay-active', !!isActive);
|
|
5256
|
-
getTextOverlaySourceTargets(nodeEntry).forEach(target => {
|
|
5257
|
-
if (isActive) {
|
|
5258
|
-
suspendTextOverlaySourceTarget(target);
|
|
5259
|
-
} else {
|
|
5260
|
-
restoreTextOverlaySourceTarget(target);
|
|
5261
|
-
}
|
|
5262
|
-
});
|
|
5263
|
-
nodeEntry._textOverlayActive = nodeEntry._css3dSourceSuspended = !!isActive;
|
|
5264
|
-
}
|
|
5265
|
-
|
|
5266
|
-
function getTextOverlayPlacementInfo(module, element) {
|
|
5267
|
-
if (!module?.container || !element) {
|
|
5268
|
-
return null;
|
|
5269
|
-
}
|
|
5270
|
-
|
|
5271
|
-
const rect = element.getBoundingClientRect();
|
|
5272
|
-
const containerRect = module.container.getBoundingClientRect();
|
|
5273
|
-
const width = Math.max(0, rect.width || 0);
|
|
5274
|
-
const height = Math.max(0, rect.height || 0);
|
|
5275
|
-
if (width < 1 || height < 1) {
|
|
5276
|
-
return null;
|
|
5277
|
-
}
|
|
5278
|
-
|
|
5279
|
-
return {
|
|
5280
|
-
left: rect.left - containerRect.left,
|
|
5281
|
-
top: rect.top - containerRect.top,
|
|
5282
|
-
width,
|
|
5283
|
-
height,
|
|
5284
|
-
baseWidth: Math.max(1, Number(element.offsetWidth || width || 1)),
|
|
5285
|
-
baseHeight: Math.max(1, Number(element.offsetHeight || height || 1)),
|
|
5286
|
-
right: rect.left - containerRect.left + width,
|
|
5287
|
-
bottom: rect.top - containerRect.top + height
|
|
5288
|
-
};
|
|
5289
|
-
}
|
|
5290
|
-
|
|
5291
|
-
function doesTextOverlayRectOverlap(a, b, padding = 0) {
|
|
5292
|
-
if (!a || !b) {
|
|
5293
|
-
return false;
|
|
5294
|
-
}
|
|
5295
|
-
|
|
5296
|
-
const inset = Number.isFinite(Number(padding)) ? Number(padding) : 0;
|
|
5297
|
-
return !(
|
|
5298
|
-
(a.left + a.width + inset) < b.left
|
|
5299
|
-
|| (b.left + b.width + inset) < a.left
|
|
5300
|
-
|| (a.top + a.height + inset) < b.top
|
|
5301
|
-
|| (b.top + b.height + inset) < a.top
|
|
5302
|
-
);
|
|
5303
|
-
}
|
|
5304
|
-
|
|
5305
|
-
function isTextOverlayPlacementVisible(module, placement, options = {}) {
|
|
5306
|
-
if (!module?.container || !placement) {
|
|
5307
|
-
return false;
|
|
5308
|
-
}
|
|
5309
|
-
|
|
5310
|
-
const { ignoreMinSize = false } = options;
|
|
5311
|
-
if (!ignoreMinSize && (placement.width < TEXT_OVERLAY_MIN_WIDTH || placement.height < TEXT_OVERLAY_MIN_HEIGHT)) {
|
|
5312
|
-
return false;
|
|
5313
|
-
}
|
|
5314
|
-
|
|
5315
|
-
const maxWidth = Number(module.container.clientWidth || 0);
|
|
5316
|
-
const maxHeight = Number(module.container.clientHeight || 0);
|
|
5317
|
-
if (!(maxWidth > 0) || !(maxHeight > 0)) {
|
|
5318
|
-
return false;
|
|
5319
|
-
}
|
|
5320
|
-
|
|
5321
|
-
return !(
|
|
5322
|
-
placement.right < 0
|
|
5323
|
-
|| placement.left > maxWidth
|
|
5324
|
-
|| placement.bottom < 0
|
|
5325
|
-
|| placement.top > maxHeight
|
|
5326
|
-
);
|
|
5327
|
-
}
|
|
5328
|
-
|
|
5329
|
-
function getTextOverlayPriority(module, nodeEntry) {
|
|
5330
|
-
const nodeModel = nodeEntry?.model;
|
|
5331
|
-
const nodeId = String(getNodeId(nodeModel) || '').trim();
|
|
5332
|
-
if (!nodeModel || !nodeId) {
|
|
5333
|
-
return Number.NEGATIVE_INFINITY;
|
|
5334
|
-
}
|
|
5335
|
-
|
|
5336
|
-
let priority = 0;
|
|
5337
|
-
if (String(module?.selectedNodeIdJs || '').trim() === nodeId) {
|
|
5338
|
-
priority += 100000;
|
|
5339
|
-
} else if (module?.multiSelectedNodeIds?.has?.(nodeId)) {
|
|
5340
|
-
priority += 50000;
|
|
5341
|
-
}
|
|
5342
|
-
|
|
5343
|
-
const width = Math.max(1, Number(nodeModel?.width || nodeModel?.Width || 0));
|
|
5344
|
-
const height = Math.max(1, Number(nodeModel?.height || nodeModel?.Height || 0));
|
|
5345
|
-
priority += Math.min(6000, (width * height) / 18);
|
|
5346
|
-
|
|
5347
|
-
if (module?.camera) {
|
|
5348
|
-
const centerX = Number(nodeModel?.positionX ?? nodeModel?.PositionX ?? nodeModel?.x ?? nodeModel?.X ?? 0) + (width * 0.5);
|
|
5349
|
-
const centerY = Number(nodeModel?.positionY ?? nodeModel?.PositionY ?? nodeModel?.y ?? nodeModel?.Y ?? 0) - (height * 0.5);
|
|
5350
|
-
const dx = Math.abs(centerX - Number(module.camera.position?.x || 0));
|
|
5351
|
-
const dy = Math.abs(centerY - Number(module.camera.position?.y || 0));
|
|
5352
|
-
priority += Math.max(0, 24000 - (dx + dy));
|
|
5353
|
-
}
|
|
5354
|
-
|
|
5355
|
-
const zIndex = Number(nodeEntry?.cssObject?.element?.style?.zIndex || 0);
|
|
5356
|
-
if (Number.isFinite(zIndex)) {
|
|
5357
|
-
priority += zIndex * 10;
|
|
5358
|
-
}
|
|
5359
|
-
|
|
5360
|
-
return priority;
|
|
5361
|
-
}
|
|
5362
|
-
|
|
5363
|
-
function isAlwaysTextOverlayNode(nodeEntry) {
|
|
5364
|
-
const contentType = String(nodeEntry?.model?.contentType ?? nodeEntry?.model?.ContentType ?? '').toLowerCase();
|
|
5365
|
-
return contentType === 'markdown' || contentType === 'text';
|
|
5366
|
-
}
|
|
5367
|
-
|
|
5368
|
-
function getTextOverlayContentSignature(nodeEntry) {
|
|
5369
|
-
const model = nodeEntry?.model || {};
|
|
5370
|
-
const contentType = String(model.contentType ?? model.ContentType ?? '').toLowerCase();
|
|
5371
|
-
const prompt = String(model.prompt ?? model.Prompt ?? '');
|
|
5372
|
-
const response = String(model.response ?? model.Response ?? '');
|
|
5373
|
-
const isLoading = (model.isLoading ?? model.IsLoading ?? false) ? '1' : '0';
|
|
5374
|
-
const width = Math.max(0, Number(model.width ?? model.Width ?? 0));
|
|
5375
|
-
const height = Math.max(0, Number(model.height ?? model.Height ?? 0));
|
|
5376
|
-
return `${contentType}||${prompt}||${response}||${isLoading}||${width}||${height}`;
|
|
5377
|
-
}
|
|
5378
|
-
|
|
5379
|
-
function getTextOverlayLayoutSignature(sourceElement, mode = 'full', hostPlacement = null) {
|
|
5380
|
-
if (!sourceElement) {
|
|
5381
|
-
return '';
|
|
5382
|
-
}
|
|
5031
|
+
const {
|
|
5032
|
+
getTextOverlaySourceTargets,
|
|
5033
|
+
ensureTextOverlaySourceStyleState,
|
|
5034
|
+
resetTextOverlaySourcePresentation,
|
|
5035
|
+
suspendTextOverlaySourceTarget,
|
|
5036
|
+
restoreTextOverlaySourceTarget,
|
|
5037
|
+
stripTextOverlayPresentationOverrides,
|
|
5038
|
+
getNativeTextSelectionSourceNodeId,
|
|
5039
|
+
hasNativeTextSelectionSource,
|
|
5040
|
+
setNativeTextSelectionOwnerClass,
|
|
5041
|
+
activateNativeTextSelectionSource,
|
|
5042
|
+
clearNativeTextSelectionSource,
|
|
5043
|
+
isTextOverlaySelectionNode,
|
|
5044
|
+
setTextOverlaySourceActive
|
|
5045
|
+
} = window.MindMapCss3dHotPath.installTextSource({
|
|
5046
|
+
getModule: () => _module,
|
|
5047
|
+
supportsTextOverlay,
|
|
5048
|
+
getTextOverlayRenderMode,
|
|
5049
|
+
getTextOverlayHostElement,
|
|
5050
|
+
getTextOverlayRootElement,
|
|
5051
|
+
isCss3dMediaNode,
|
|
5052
|
+
restoreCss3dMediaOverlayState,
|
|
5053
|
+
ensureTextOverlaySourceVisible,
|
|
5054
|
+
getNodeId
|
|
5055
|
+
});
|
|
5383
5056
|
|
|
5384
|
-
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
|
|
5396
|
-
|
|
5397
|
-
|
|
5398
|
-
const rootWidth = Math.round(Number(sourceElement.offsetWidth || 0));
|
|
5399
|
-
const rootHeight = Math.round(Number(sourceElement.offsetHeight || 0));
|
|
5400
|
-
const childSignature = Array.from(sourceElement.children || []).map(child =>
|
|
5401
|
-
`${child.tagName}:${child.offsetWidth}:${child.offsetHeight}:${child.style.display}`).join('|');
|
|
5402
|
-
return `${mode}||${rootWidth}x${rootHeight}||${childSignature}`;
|
|
5403
|
-
}
|
|
5057
|
+
const {
|
|
5058
|
+
getTextOverlayPlacementInfo,
|
|
5059
|
+
doesTextOverlayRectOverlap,
|
|
5060
|
+
isTextOverlayPlacementVisible,
|
|
5061
|
+
getTextOverlayPriority,
|
|
5062
|
+
isAlwaysTextOverlayNode,
|
|
5063
|
+
getTextOverlayContentSignature,
|
|
5064
|
+
getTextOverlayLayoutSignature
|
|
5065
|
+
} = window.MindMapCss3dHotPath.installOverlayGeometry({
|
|
5066
|
+
getNodeId,
|
|
5067
|
+
minWidth: TEXT_OVERLAY_MIN_WIDTH,
|
|
5068
|
+
minHeight: TEXT_OVERLAY_MIN_HEIGHT
|
|
5069
|
+
});
|
|
5404
5070
|
|
|
5405
5071
|
function stripOverlayCloneIds(root) {
|
|
5406
5072
|
if (!root) {
|
|
@@ -24400,6 +24066,7 @@
|
|
|
24400
24066
|
function syncCss3dContent(nodeModel, cssObject) {
|
|
24401
24067
|
if (!nodeModel || !cssObject || !cssObject.element) return;
|
|
24402
24068
|
const nodeId = String(getNodeId(nodeModel) || '').trim();
|
|
24069
|
+
window.MindMapCss3dHotPath?.invalidateDomRefsByCssObject?.(_module, cssObject, nodeId);
|
|
24403
24070
|
if (_module && nodeId) {
|
|
24404
24071
|
const overlayV2Cards = _module._textOverlayV2State?.cards || null;
|
|
24405
24072
|
const selectionCard = overlayV2Cards?.get?.(`selection:${nodeId}`) || null;
|
|
@@ -25170,6 +24837,8 @@
|
|
|
25170
24837
|
window.MindMapCss3DManager = {
|
|
25171
24838
|
activateSelectableTextOverlay: activateSelectableTextOverlay,
|
|
25172
24839
|
activateNativeTextSelectionSource: activateNativeTextSelectionSource,
|
|
24840
|
+
applyVisibilityDiff: (module, enteredIds, exitedIds) =>
|
|
24841
|
+
window.MindMapCss3dHotPath?.applyVisibilityDiff?.(module, enteredIds, exitedIds) || { complete: false, reason: 'hotpath-unavailable' },
|
|
25173
24842
|
setNativeTextSelectionOwnerClass: setNativeTextSelectionOwnerClass,
|
|
25174
24843
|
beginNodeEditingOverlay: beginNodeEditingOverlay,
|
|
25175
24844
|
bindMemoWheelRouting: bindMemoWheelRouting,
|
|
@@ -25181,6 +24850,8 @@
|
|
|
25181
24850
|
createNodeViewElement: createNodeViewElement,
|
|
25182
24851
|
getNodeViewHostPolicy: getNodeViewHostPolicy,
|
|
25183
24852
|
getNodeViewPrimaryHost: getNodeViewPrimaryHost,
|
|
24853
|
+
getDomRefs: (entry, module = _module) => window.MindMapCss3dHotPath?.getDomRefs?.(entry, module) || null,
|
|
24854
|
+
invalidateDomRefs: (entry) => window.MindMapCss3dHotPath?.invalidateDomRefs?.(entry),
|
|
25184
24855
|
createEditingOverlayContent: createEditingOverlayContent,
|
|
25185
24856
|
clearEditingOverlay: clearEditingOverlay,
|
|
25186
24857
|
getTextInteractionContentSelectors: getTextInteractionContentSelectors,
|