@mindexec/cli 0.2.468 → 0.2.469
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/package.json +1 -1
- 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/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +40 -2
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-image-policy.js +207 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +55 -7
- package/wwwroot/_framework/{MindExecution.Core.yrfbp4404m.dll → MindExecution.Core.rmpf5us73b.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Kernel.qpodwwdiwx.dll → MindExecution.Kernel.jebho1txjn.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Admin.8uzx32oujb.dll → MindExecution.Plugins.Admin.vb2b525l5w.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Business.tx05qckwdp.dll → MindExecution.Plugins.Business.g9svpf2ngw.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.m3ew6te59x.dll → MindExecution.Plugins.Concept.3g19y748j3.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Directory.9qioesdf9k.dll → MindExecution.Plugins.Directory.cb2k9u5952.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.74t0l3lj50.dll → MindExecution.Plugins.PlanMaster.vsojs80h20.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.rw3h96cxzb.dll → MindExecution.Plugins.YouTube.luk1dwf932.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.ubxwcs5koc.dll → MindExecution.Shared.cjavadsxis.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Web.mvn80sbzgp.dll → MindExecution.Web.ratalb86xy.dll} +0 -0
- package/wwwroot/_framework/blazor.boot.json +21 -21
- package/wwwroot/index.html +2 -1
- package/wwwroot/service-worker-assets.js +29 -25
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1720,6 +1720,17 @@
|
|
|
1720
1720
|
_cssImagePreviewHoldUntil = getCssImagePromotionNow() + getPostLoadCssImagePreviewHoldMs(activeModule);
|
|
1721
1721
|
clearCssImagePromotionQueue();
|
|
1722
1722
|
_cssImagePromotionProcessing = false;
|
|
1723
|
+
activeModule?.nodeObjectsById?.forEach?.((entry, nodeId) => {
|
|
1724
|
+
if (window.MindMapImagePolicy?.isGeneratedImageNodeModel?.(entry?.model) === true) {
|
|
1725
|
+
enqueueCssImagePromotion(nodeId);
|
|
1726
|
+
}
|
|
1727
|
+
});
|
|
1728
|
+
if (_cssImagePromotionQueue.length > 0) {
|
|
1729
|
+
scheduleCssImagePromotionPump(
|
|
1730
|
+
activeModule,
|
|
1731
|
+
Math.max(16, Math.ceil(_cssImagePreviewHoldUntil - getCssImagePromotionNow()))
|
|
1732
|
+
);
|
|
1733
|
+
}
|
|
1723
1734
|
}
|
|
1724
1735
|
|
|
1725
1736
|
function getCssMediaMetadata(nodeModel) {
|
|
@@ -1783,6 +1794,13 @@
|
|
|
1783
1794
|
return responseUrl || originalUrl;
|
|
1784
1795
|
}
|
|
1785
1796
|
|
|
1797
|
+
const generatedOriginalUrl = normalizeCssMediaUrl(
|
|
1798
|
+
window.MindMapImagePolicy?.getGeneratedImageOriginalReference?.(nodeModel, assetUrls) || ''
|
|
1799
|
+
);
|
|
1800
|
+
if (generatedOriginalUrl) {
|
|
1801
|
+
return generatedOriginalUrl;
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1786
1804
|
return previewUrl || responseUrl || originalUrl;
|
|
1787
1805
|
}
|
|
1788
1806
|
|
|
@@ -4182,12 +4200,19 @@
|
|
|
4182
4200
|
if (!mediaEl || contentTypeLower !== 'image') return;
|
|
4183
4201
|
if (options.bypassPreviewHold !== true && shouldPreferCssImagePreviewSource(nodeModel)) return;
|
|
4184
4202
|
const forceAnimatedGifOriginal = isAnimatedGifCssImageNode(nodeModel);
|
|
4185
|
-
if (options.forceOriginal !== true && !forceAnimatedGifOriginal && !shouldPromoteCssImageOriginal(nodeModel)) return;
|
|
4186
4203
|
|
|
4187
4204
|
const assetUrls = window.MindMapNodes?.getNodeImageAssetUrls?.(nodeModel) || null;
|
|
4205
|
+
const generatedOriginalReference = normalizeCssMediaUrl(
|
|
4206
|
+
window.MindMapImagePolicy?.getGeneratedImageOriginalReference?.(nodeModel, assetUrls) || ''
|
|
4207
|
+
);
|
|
4208
|
+
if (options.forceOriginal !== true
|
|
4209
|
+
&& !forceAnimatedGifOriginal
|
|
4210
|
+
&& !generatedOriginalReference
|
|
4211
|
+
&& !shouldPromoteCssImageOriginal(nodeModel)) return;
|
|
4188
4212
|
const metadata = getCssMediaMetadata(nodeModel);
|
|
4189
4213
|
const originalUrl = normalizeCssMediaUrl(
|
|
4190
|
-
|
|
4214
|
+
generatedOriginalReference
|
|
4215
|
+
|| assetUrls?.fullResUrl
|
|
4191
4216
|
|| assetUrls?.originalUrl
|
|
4192
4217
|
|| metadata?.OriginalUrl
|
|
4193
4218
|
|| metadata?.originalUrl
|
|
@@ -4206,6 +4231,11 @@
|
|
|
4206
4231
|
isThumbnailCssMediaUrl(currentSource)
|
|
4207
4232
|
) {
|
|
4208
4233
|
mediaEl.dataset.assetRefreshAttempted = '';
|
|
4234
|
+
if (generatedOriginalReference) {
|
|
4235
|
+
console.info('[MindMapCss3DManager] Promoting generated image preview to original', {
|
|
4236
|
+
nodeId: String(nodeModel?.id ?? nodeModel?.Id ?? '')
|
|
4237
|
+
});
|
|
4238
|
+
}
|
|
4209
4239
|
void setCssImageElementSource(mediaEl, nodeModel, originalUrl);
|
|
4210
4240
|
}
|
|
4211
4241
|
return;
|
|
@@ -4223,6 +4253,11 @@
|
|
|
4223
4253
|
if (mediaEl.dataset.originalResolveAttempted === '1') return;
|
|
4224
4254
|
|
|
4225
4255
|
mediaEl.dataset.originalResolveAttempted = '1';
|
|
4256
|
+
if (generatedOriginalReference) {
|
|
4257
|
+
console.info('[MindMapCss3DManager] Resolving generated image original after preview', {
|
|
4258
|
+
nodeId: String(nodeModel?.id ?? nodeModel?.Id ?? '')
|
|
4259
|
+
});
|
|
4260
|
+
}
|
|
4226
4261
|
void tryRefreshCssMediaSource(mediaEl, nodeModel, contentTypeLower);
|
|
4227
4262
|
}
|
|
4228
4263
|
|
|
@@ -4362,6 +4397,9 @@
|
|
|
4362
4397
|
isCssImagePreviewHoldActive() ||
|
|
4363
4398
|
isCssImagePromotionInteractionActive(activeModule);
|
|
4364
4399
|
if (shouldQueuePromotion) {
|
|
4400
|
+
if (window.MindMapImagePolicy?.isGeneratedImageNodeModel?.(entry.model) === true) {
|
|
4401
|
+
enqueueCssImagePromotion(nodeId);
|
|
4402
|
+
}
|
|
4365
4403
|
return;
|
|
4366
4404
|
}
|
|
4367
4405
|
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
(function () {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const BUILD_ID = '20260819-image-original-resize-v1';
|
|
5
|
+
|
|
6
|
+
function normalizeContentType(nodeModel) {
|
|
7
|
+
return String(nodeModel?.contentType ?? nodeModel?.ContentType ?? '').trim().toLowerCase();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function getMetadata(nodeModel) {
|
|
11
|
+
return nodeModel?.metadata ?? nodeModel?.Metadata ?? {};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getMetadataValue(metadata, ...keys) {
|
|
15
|
+
if (!metadata || typeof metadata !== 'object') return '';
|
|
16
|
+
|
|
17
|
+
for (const key of keys) {
|
|
18
|
+
const value = metadata[key];
|
|
19
|
+
if (value !== undefined && value !== null && String(value).trim()) {
|
|
20
|
+
return String(value).trim();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const wanted = new Set(keys.map(key => String(key).toLowerCase()));
|
|
25
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
26
|
+
if (wanted.has(String(key).toLowerCase())
|
|
27
|
+
&& value !== undefined
|
|
28
|
+
&& value !== null
|
|
29
|
+
&& String(value).trim()) {
|
|
30
|
+
return String(value).trim();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return '';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function toPositiveNumber(value) {
|
|
38
|
+
const numeric = Number(value);
|
|
39
|
+
return Number.isFinite(numeric) && numeric > 0 ? numeric : 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function ratioFromPair(width, height) {
|
|
43
|
+
const numericWidth = toPositiveNumber(width);
|
|
44
|
+
const numericHeight = toPositiveNumber(height);
|
|
45
|
+
if (!(numericWidth > 0 && numericHeight > 0)) return 0;
|
|
46
|
+
|
|
47
|
+
const ratio = numericWidth / numericHeight;
|
|
48
|
+
return Number.isFinite(ratio) && ratio >= 0.05 && ratio <= 20 ? ratio : 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function isGeneratedImageNodeModel(nodeModel) {
|
|
52
|
+
if (!nodeModel || normalizeContentType(nodeModel) !== 'image') return false;
|
|
53
|
+
|
|
54
|
+
const metadata = getMetadata(nodeModel);
|
|
55
|
+
const operation = getMetadataValue(
|
|
56
|
+
metadata,
|
|
57
|
+
'RequestedMediaOperation',
|
|
58
|
+
'requestedMediaOperation'
|
|
59
|
+
).toLowerCase();
|
|
60
|
+
|
|
61
|
+
return !!getMetadataValue(metadata, 'ImageGenerationProvider', 'imageGenerationProvider')
|
|
62
|
+
|| !!getMetadataValue(metadata, 'GeneratedImageSourceWidth', 'generatedImageSourceWidth')
|
|
63
|
+
|| !!getMetadataValue(metadata, 'GeneratedImageSourceHeight', 'generatedImageSourceHeight')
|
|
64
|
+
|| !!getMetadataValue(metadata, 'CodexImageQuality', 'codexImageQuality')
|
|
65
|
+
|| !!getMetadataValue(metadata, 'ImageRouterRevisedPrompt', 'imageRouterRevisedPrompt')
|
|
66
|
+
|| operation === 'text2image'
|
|
67
|
+
|| operation === 'image2image'
|
|
68
|
+
|| operation === 'inpaint';
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function getGeneratedImageOriginalReference(nodeModel, assetUrls = null) {
|
|
72
|
+
if (!isGeneratedImageNodeModel(nodeModel)) return '';
|
|
73
|
+
|
|
74
|
+
const metadata = getMetadata(nodeModel);
|
|
75
|
+
const candidates = [
|
|
76
|
+
assetUrls?.fullResUrl,
|
|
77
|
+
assetUrls?.originalUrl,
|
|
78
|
+
assetUrls?.originalPath,
|
|
79
|
+
getMetadataValue(metadata, 'OriginalUrl', 'originalUrl'),
|
|
80
|
+
getMetadataValue(metadata, 'OriginalPath', 'originalPath')
|
|
81
|
+
];
|
|
82
|
+
|
|
83
|
+
for (const candidate of candidates) {
|
|
84
|
+
const normalized = String(candidate || '').trim();
|
|
85
|
+
if (normalized) return normalized;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return '';
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function getOriginalAspectRatio(nodeEntry, fallbackWidth = 0, fallbackHeight = 0) {
|
|
92
|
+
const nodeModel = nodeEntry?.model ?? nodeEntry;
|
|
93
|
+
if (!nodeModel || normalizeContentType(nodeModel) !== 'image') return 0;
|
|
94
|
+
|
|
95
|
+
const metadata = getMetadata(nodeModel);
|
|
96
|
+
const metadataPairs = [
|
|
97
|
+
[
|
|
98
|
+
getMetadataValue(metadata, 'GeneratedImageSourceWidth', 'generatedImageSourceWidth'),
|
|
99
|
+
getMetadataValue(metadata, 'GeneratedImageSourceHeight', 'generatedImageSourceHeight')
|
|
100
|
+
],
|
|
101
|
+
[
|
|
102
|
+
getMetadataValue(metadata, 'ImageIntrinsicWidth', 'imageIntrinsicWidth'),
|
|
103
|
+
getMetadataValue(metadata, 'ImageIntrinsicHeight', 'imageIntrinsicHeight')
|
|
104
|
+
]
|
|
105
|
+
];
|
|
106
|
+
|
|
107
|
+
for (const [width, height] of metadataPairs) {
|
|
108
|
+
const ratio = ratioFromPair(width, height);
|
|
109
|
+
if (ratio > 0) return ratio;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const imageElement = nodeEntry?.cssObject?.element?.querySelector?.('img') || null;
|
|
113
|
+
const naturalRatio = ratioFromPair(
|
|
114
|
+
imageElement?.naturalWidth || imageElement?.width,
|
|
115
|
+
imageElement?.naturalHeight || imageElement?.height
|
|
116
|
+
);
|
|
117
|
+
if (naturalRatio > 0) return naturalRatio;
|
|
118
|
+
|
|
119
|
+
const generatedDisplayRatio = ratioFromPair(
|
|
120
|
+
getMetadataValue(metadata, 'GeneratedImageDisplayWidth', 'generatedImageDisplayWidth'),
|
|
121
|
+
getMetadataValue(metadata, 'GeneratedImageDisplayHeight', 'generatedImageDisplayHeight')
|
|
122
|
+
);
|
|
123
|
+
if (generatedDisplayRatio > 0) return generatedDisplayRatio;
|
|
124
|
+
|
|
125
|
+
return ratioFromPair(
|
|
126
|
+
fallbackWidth || nodeModel.width || nodeModel.Width,
|
|
127
|
+
fallbackHeight || nodeModel.height || nodeModel.Height
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function constrainBottomRightDimensions(
|
|
132
|
+
proposedWidth,
|
|
133
|
+
proposedHeight,
|
|
134
|
+
startWidth,
|
|
135
|
+
startHeight,
|
|
136
|
+
aspectRatio,
|
|
137
|
+
limits = {}) {
|
|
138
|
+
const ratio = toPositiveNumber(aspectRatio);
|
|
139
|
+
if (!(ratio > 0)) {
|
|
140
|
+
return {
|
|
141
|
+
width: Number(proposedWidth),
|
|
142
|
+
height: Number(proposedHeight),
|
|
143
|
+
aspectLocked: false
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const minWidth = Math.max(1, toPositiveNumber(limits.minWidth) || 1);
|
|
148
|
+
const minHeight = Math.max(1, toPositiveNumber(limits.minHeight) || 1);
|
|
149
|
+
const maxWidth = Math.max(minWidth, toPositiveNumber(limits.maxWidth) || Number.MAX_SAFE_INTEGER);
|
|
150
|
+
const maxHeight = Math.max(minHeight, toPositiveNumber(limits.maxHeight) || Number.MAX_SAFE_INTEGER);
|
|
151
|
+
const width = Number(proposedWidth);
|
|
152
|
+
const height = Number(proposedHeight);
|
|
153
|
+
const initialWidth = Number(startWidth);
|
|
154
|
+
const initialHeight = Number(startHeight);
|
|
155
|
+
const widthMotion = Math.abs(width - initialWidth);
|
|
156
|
+
const heightMotionAsWidth = Math.abs(height - initialHeight) * ratio;
|
|
157
|
+
let targetHeight = widthMotion >= heightMotionAsWidth ? width / ratio : height;
|
|
158
|
+
|
|
159
|
+
const minimumLockedHeight = Math.max(minHeight, minWidth / ratio);
|
|
160
|
+
const maximumLockedHeight = Math.min(maxHeight, maxWidth / ratio);
|
|
161
|
+
targetHeight = Math.min(
|
|
162
|
+
Math.max(minimumLockedHeight, targetHeight),
|
|
163
|
+
Math.max(minimumLockedHeight, maximumLockedHeight)
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
width: targetHeight * ratio,
|
|
168
|
+
height: targetHeight,
|
|
169
|
+
aspectLocked: true
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function snapAspectLockedDimensions(width, height, aspectRatio, gridSize, limits = {}) {
|
|
174
|
+
const ratio = toPositiveNumber(aspectRatio);
|
|
175
|
+
const grid = toPositiveNumber(gridSize);
|
|
176
|
+
if (!(ratio > 0 && grid > 0)) {
|
|
177
|
+
return constrainBottomRightDimensions(width, height, width, height, ratio, limits);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const snappedWidth = Math.max(grid, Math.round(Number(width) / grid) * grid);
|
|
181
|
+
const snappedHeight = Math.max(grid, Math.round(Number(height) / grid) * grid);
|
|
182
|
+
const proposedWidth = ratio >= 1 ? snappedWidth : snappedHeight * ratio;
|
|
183
|
+
const proposedHeight = ratio >= 1 ? snappedWidth / ratio : snappedHeight;
|
|
184
|
+
return constrainBottomRightDimensions(
|
|
185
|
+
proposedWidth,
|
|
186
|
+
proposedHeight,
|
|
187
|
+
proposedWidth,
|
|
188
|
+
proposedHeight,
|
|
189
|
+
ratio,
|
|
190
|
+
limits
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
window.MindMapImagePolicy = {
|
|
195
|
+
build: BUILD_ID,
|
|
196
|
+
isGeneratedImageNodeModel,
|
|
197
|
+
getGeneratedImageOriginalReference,
|
|
198
|
+
getOriginalAspectRatio,
|
|
199
|
+
constrainBottomRightDimensions,
|
|
200
|
+
snapAspectLockedDimensions
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
window.MindCanvasBuildInfo?.registerPart?.('imagePolicy', BUILD_ID, {
|
|
204
|
+
generatedOriginalAfterLoad: true,
|
|
205
|
+
bottomRightAspectLock: true
|
|
206
|
+
});
|
|
207
|
+
})();
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
const ENABLE_WEBGL_GLOW = false;
|
|
18
18
|
const DEFAULT_MIN_NODE_WIDTH = 200;
|
|
19
19
|
const DEFAULT_MIN_NODE_HEIGHT = 100;
|
|
20
|
+
const MAX_NODE_WIDTH = 2000;
|
|
21
|
+
const MAX_NODE_HEIGHT = 4000;
|
|
20
22
|
const CSV_TABLE_CONTENT_TYPE = 'csv-table';
|
|
21
23
|
const CSV_TABLE_MIN_WIDTH = 320;
|
|
22
24
|
const CSV_TABLE_MIN_HEIGHT = 180;
|
|
@@ -1102,6 +1104,13 @@
|
|
|
1102
1104
|
w: nodeEntry.model.width || 400,
|
|
1103
1105
|
h: nodeEntry.model.height || 200
|
|
1104
1106
|
};
|
|
1107
|
+
module.resizeAspectRatio = corner === 'BR' && getNodeContentType(nodeEntry.model) === 'image'
|
|
1108
|
+
? Number(window.MindMapImagePolicy?.getOriginalAspectRatio?.(
|
|
1109
|
+
nodeEntry,
|
|
1110
|
+
module.resizeStartDimensions.w,
|
|
1111
|
+
module.resizeStartDimensions.h
|
|
1112
|
+
) || 0)
|
|
1113
|
+
: 0;
|
|
1105
1114
|
// Store initial position from the active render object (CSS/GL) to avoid
|
|
1106
1115
|
// image-node jumps when CSS and GL are slightly out of sync.
|
|
1107
1116
|
const activePos = module.resizeNodeObject?.position
|
|
@@ -1147,10 +1156,6 @@
|
|
|
1147
1156
|
|
|
1148
1157
|
function doResizing(module, currentX, currentY) {
|
|
1149
1158
|
if (!module.isResizing || !module.resizeNodeObject) return;
|
|
1150
|
-
// ▼▼▼ [Changed] Cap max node size: X=2000, Y=4000 ▼▼▼
|
|
1151
|
-
const MAX_NODE_WIDTH = 2000;
|
|
1152
|
-
const MAX_NODE_HEIGHT = 4000;
|
|
1153
|
-
// ▲▲▲ [Changed] ▲▲▲
|
|
1154
1159
|
|
|
1155
1160
|
const vfov = (module.camera.fov * Math.PI) / 180;
|
|
1156
1161
|
const viewHeight = 2 * Math.tan(vfov / 2) * module.camera.position.z;
|
|
@@ -1240,6 +1245,27 @@
|
|
|
1240
1245
|
break;
|
|
1241
1246
|
}
|
|
1242
1247
|
|
|
1248
|
+
const imageAspectRatio = corner === 'BR' && getNodeContentType(nodeEntry.model) === 'image'
|
|
1249
|
+
? Number(module.resizeAspectRatio || 0)
|
|
1250
|
+
: 0;
|
|
1251
|
+
if (imageAspectRatio > 0 && window.MindMapImagePolicy?.constrainBottomRightDimensions) {
|
|
1252
|
+
const lockedSize = window.MindMapImagePolicy.constrainBottomRightDimensions(
|
|
1253
|
+
finalWidth,
|
|
1254
|
+
finalHeight,
|
|
1255
|
+
startW,
|
|
1256
|
+
startH,
|
|
1257
|
+
imageAspectRatio,
|
|
1258
|
+
{
|
|
1259
|
+
minWidth: DEFAULT_MIN_NODE_WIDTH,
|
|
1260
|
+
minHeight: DEFAULT_MIN_NODE_HEIGHT,
|
|
1261
|
+
maxWidth: MAX_NODE_WIDTH,
|
|
1262
|
+
maxHeight: MAX_NODE_HEIGHT
|
|
1263
|
+
}
|
|
1264
|
+
);
|
|
1265
|
+
finalWidth = lockedSize.width;
|
|
1266
|
+
finalHeight = lockedSize.height;
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1243
1269
|
// Clamp size
|
|
1244
1270
|
const minClampedSize = clampRemoteFleetResizeDimensions(nodeEntry.model, finalWidth, finalHeight);
|
|
1245
1271
|
let clampedWidth = Math.min(MAX_NODE_WIDTH, minClampedSize.width);
|
|
@@ -1844,13 +1870,34 @@
|
|
|
1844
1870
|
const currentPosY = nodeEntry.glObject?.position?.y ?? nodeEntry.cssObject?.position?.y ?? 0;
|
|
1845
1871
|
let finalPosX = currentPosX;
|
|
1846
1872
|
let finalPosY = currentPosY;
|
|
1873
|
+
const imageAspectRatio = module.resizeCorner === 'BR'
|
|
1874
|
+
&& getNodeContentType(nodeEntry.model) === 'image'
|
|
1875
|
+
? Number(module.resizeAspectRatio || 0)
|
|
1876
|
+
: 0;
|
|
1847
1877
|
|
|
1848
1878
|
// Respect global snap toggle. Resize itself stays free-form while dragging;
|
|
1849
1879
|
// snapping is applied only at the end when enabled.
|
|
1850
1880
|
if (module.gridSnapEnabled !== false) {
|
|
1851
1881
|
const GRID_SIZE = module.GRID_SIZE || 10;
|
|
1852
|
-
|
|
1853
|
-
|
|
1882
|
+
if (imageAspectRatio > 0 && window.MindMapImagePolicy?.snapAspectLockedDimensions) {
|
|
1883
|
+
const snappedSize = window.MindMapImagePolicy.snapAspectLockedDimensions(
|
|
1884
|
+
nodeEntry.model.width,
|
|
1885
|
+
nodeEntry.model.height,
|
|
1886
|
+
imageAspectRatio,
|
|
1887
|
+
GRID_SIZE,
|
|
1888
|
+
{
|
|
1889
|
+
minWidth: DEFAULT_MIN_NODE_WIDTH,
|
|
1890
|
+
minHeight: DEFAULT_MIN_NODE_HEIGHT,
|
|
1891
|
+
maxWidth: MAX_NODE_WIDTH,
|
|
1892
|
+
maxHeight: MAX_NODE_HEIGHT
|
|
1893
|
+
}
|
|
1894
|
+
);
|
|
1895
|
+
nodeEntry.model.width = snappedSize.width;
|
|
1896
|
+
nodeEntry.model.height = snappedSize.height;
|
|
1897
|
+
} else {
|
|
1898
|
+
nodeEntry.model.width = Math.round(nodeEntry.model.width / GRID_SIZE) * GRID_SIZE;
|
|
1899
|
+
nodeEntry.model.height = Math.round(nodeEntry.model.height / GRID_SIZE) * GRID_SIZE;
|
|
1900
|
+
}
|
|
1854
1901
|
finalPosX = Math.round(currentPosX / GRID_SIZE) * GRID_SIZE;
|
|
1855
1902
|
finalPosY = Math.round(currentPosY / GRID_SIZE) * GRID_SIZE;
|
|
1856
1903
|
}
|
|
@@ -2206,6 +2253,8 @@
|
|
|
2206
2253
|
module.isResizing = false;
|
|
2207
2254
|
module.resizeNodeObject = null;
|
|
2208
2255
|
module.resizingNodeId = null; // ▼▼▼ [Changed] clear resizingNodeId ▼▼▼
|
|
2256
|
+
module.resizeAspectRatio = 0;
|
|
2257
|
+
module.resizeCorner = null;
|
|
2209
2258
|
window.MindMapInteractions?.setBrowserSelectionLock?.(false, 'resize');
|
|
2210
2259
|
document.body.classList.remove('is-resizing');
|
|
2211
2260
|
|
|
@@ -2239,4 +2288,3 @@
|
|
|
2239
2288
|
|
|
2240
2289
|
console.log('? mind-map-pipeline.js loaded');
|
|
2241
2290
|
})();
|
|
2242
|
-
|
package/wwwroot/_framework/{MindExecution.Core.yrfbp4404m.dll → MindExecution.Core.rmpf5us73b.dll}
RENAMED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/wwwroot/_framework/{MindExecution.Web.mvn80sbzgp.dll → MindExecution.Web.ratalb86xy.dll}
RENAMED
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mainAssemblyName": "MindExecution.Web",
|
|
3
3
|
"resources": {
|
|
4
|
-
"hash": "sha256-
|
|
4
|
+
"hash": "sha256-fgUfmB92eXnfCyKAVfkOCtGsUJUH3nDK+lE9oPLU4Wc=",
|
|
5
5
|
"fingerprinting": {
|
|
6
6
|
"Google.Protobuf.9h59ukbel7.dll": "Google.Protobuf.dll",
|
|
7
7
|
"Markdig.d1j7v41cl1.dll": "Markdig.dll",
|
|
@@ -122,16 +122,16 @@
|
|
|
122
122
|
"System.brmz7yk5qh.dll": "System.dll",
|
|
123
123
|
"netstandard.b50t77veor.dll": "netstandard.dll",
|
|
124
124
|
"System.Private.CoreLib.g6ztz7cmo2.dll": "System.Private.CoreLib.dll",
|
|
125
|
-
"MindExecution.Core.
|
|
126
|
-
"MindExecution.Kernel.
|
|
127
|
-
"MindExecution.Plugins.Admin.
|
|
128
|
-
"MindExecution.Plugins.Business.
|
|
129
|
-
"MindExecution.Plugins.Concept.
|
|
130
|
-
"MindExecution.Plugins.Directory.
|
|
131
|
-
"MindExecution.Plugins.PlanMaster.
|
|
132
|
-
"MindExecution.Plugins.YouTube.
|
|
133
|
-
"MindExecution.Shared.
|
|
134
|
-
"MindExecution.Web.
|
|
125
|
+
"MindExecution.Core.rmpf5us73b.dll": "MindExecution.Core.dll",
|
|
126
|
+
"MindExecution.Kernel.jebho1txjn.dll": "MindExecution.Kernel.dll",
|
|
127
|
+
"MindExecution.Plugins.Admin.vb2b525l5w.dll": "MindExecution.Plugins.Admin.dll",
|
|
128
|
+
"MindExecution.Plugins.Business.g9svpf2ngw.dll": "MindExecution.Plugins.Business.dll",
|
|
129
|
+
"MindExecution.Plugins.Concept.3g19y748j3.dll": "MindExecution.Plugins.Concept.dll",
|
|
130
|
+
"MindExecution.Plugins.Directory.cb2k9u5952.dll": "MindExecution.Plugins.Directory.dll",
|
|
131
|
+
"MindExecution.Plugins.PlanMaster.vsojs80h20.dll": "MindExecution.Plugins.PlanMaster.dll",
|
|
132
|
+
"MindExecution.Plugins.YouTube.luk1dwf932.dll": "MindExecution.Plugins.YouTube.dll",
|
|
133
|
+
"MindExecution.Shared.cjavadsxis.dll": "MindExecution.Shared.dll",
|
|
134
|
+
"MindExecution.Web.ratalb86xy.dll": "MindExecution.Web.dll",
|
|
135
135
|
"dotnet.native.566r55w3xu.js": "dotnet.native.js",
|
|
136
136
|
"dotnet.native.x6q5aixc38.wasm": "dotnet.native.wasm",
|
|
137
137
|
"dotnet.js": "dotnet.js",
|
|
@@ -276,18 +276,18 @@
|
|
|
276
276
|
"System.Xml.XDocument.sn51jas17n.dll": "sha256-GNI2kFgFmPTwzuzwUn8gxK+AzGLUWRJFdg9JzIbrybQ=",
|
|
277
277
|
"System.brmz7yk5qh.dll": "sha256-CfM2miyj1KHApFmqMdLYWio3S/jrdON2pW9Xr2nTwlo=",
|
|
278
278
|
"netstandard.b50t77veor.dll": "sha256-//jQGOXjb8ET8WtXgOJrAxLx6E7zDJ5RjRRutwkvmxo=",
|
|
279
|
-
"MindExecution.Core.
|
|
280
|
-
"MindExecution.Kernel.
|
|
281
|
-
"MindExecution.Plugins.Business.
|
|
282
|
-
"MindExecution.Plugins.Concept.
|
|
283
|
-
"MindExecution.Plugins.PlanMaster.
|
|
284
|
-
"MindExecution.Shared.
|
|
285
|
-
"MindExecution.Web.
|
|
279
|
+
"MindExecution.Core.rmpf5us73b.dll": "sha256-gwxzUOyvnr1Q2UXzdu1H4SUeq3bbm3lXYe7/bd9860Y=",
|
|
280
|
+
"MindExecution.Kernel.jebho1txjn.dll": "sha256-+x+obc3kMnclHhP6m/z4jzqd+zXDZ+jhgLEVKKDs67Q=",
|
|
281
|
+
"MindExecution.Plugins.Business.g9svpf2ngw.dll": "sha256-1NUsUHFCUNBTMBFXIMbt6MAMqxzkl0AqrI4GPfqeer0=",
|
|
282
|
+
"MindExecution.Plugins.Concept.3g19y748j3.dll": "sha256-k42ltXSBo5RwkBrzyOgAHPemVl8Xw91c+gYrBRPrJyc=",
|
|
283
|
+
"MindExecution.Plugins.PlanMaster.vsojs80h20.dll": "sha256-TwC1ItzVv+J+5C905NOpLwCpJWohnmSIDhjbolLlHZc=",
|
|
284
|
+
"MindExecution.Shared.cjavadsxis.dll": "sha256-6BpxPPUmZVP/7Z2pCoBmAWA4azB1q6IXSnLs8X5+gsQ=",
|
|
285
|
+
"MindExecution.Web.ratalb86xy.dll": "sha256-0/ONjTN+Xx81nLs1yo2GRhtcTFFY1Ulm/keJQNfdDVU="
|
|
286
286
|
},
|
|
287
287
|
"lazyAssembly": {
|
|
288
|
-
"MindExecution.Plugins.Admin.
|
|
289
|
-
"MindExecution.Plugins.Directory.
|
|
290
|
-
"MindExecution.Plugins.YouTube.
|
|
288
|
+
"MindExecution.Plugins.Admin.vb2b525l5w.dll": "sha256-dSJHWimUTP/gn9qMwXWaZ7XXAkZFhezPGKIr7lags0o=",
|
|
289
|
+
"MindExecution.Plugins.Directory.cb2k9u5952.dll": "sha256-uLmsvR6Sg/EDXME2PWFTWw9l0b427MyIK0YydWybGDc=",
|
|
290
|
+
"MindExecution.Plugins.YouTube.luk1dwf932.dll": "sha256-zfyvtryHEQ8fLlaRPto9s9Y2vozH1qjOXhFy4CqFOx4="
|
|
291
291
|
}
|
|
292
292
|
},
|
|
293
293
|
"cacheBootResources": true,
|
package/wwwroot/index.html
CHANGED
|
@@ -614,7 +614,7 @@
|
|
|
614
614
|
}
|
|
615
615
|
|
|
616
616
|
const base = '_content/MindExecution.Shared/js/';
|
|
617
|
-
const scriptVersion = '20260819-
|
|
617
|
+
const scriptVersion = '20260819-image-original-resize-v977';
|
|
618
618
|
const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
|
|
619
619
|
console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
|
|
620
620
|
const criticalScripts = [
|
|
@@ -631,6 +631,7 @@
|
|
|
631
631
|
'mind-map-video-playback-controls.js',
|
|
632
632
|
'mind-map-remote-codecs.js',
|
|
633
633
|
'mind-map-css3d-hotpath.js',
|
|
634
|
+
'mind-map-image-policy.js',
|
|
634
635
|
'mind-map-css3d-manager.js',
|
|
635
636
|
'mind-map-object-manager.js',
|
|
636
637
|
'mind-map-pipeline.js',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
self.assetsManifest = {
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "/TO/XqZ0",
|
|
3
3
|
"assets": [
|
|
4
4
|
{
|
|
5
5
|
"hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
|
|
@@ -98,7 +98,7 @@ self.assetsManifest = {
|
|
|
98
98
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-hotpath.js"
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
|
-
"hash": "sha256-
|
|
101
|
+
"hash": "sha256-pnzJc5Y0FgyQ8muctsOpK3jh7jpDz/NlicK8UOTimpI=",
|
|
102
102
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
|
|
103
103
|
},
|
|
104
104
|
{
|
|
@@ -117,6 +117,10 @@ self.assetsManifest = {
|
|
|
117
117
|
"hash": "sha256-7B7gdxe1oZBi+9GHUXcaf6njTH0c3tg8//wBYGfbBcg=",
|
|
118
118
|
"url": "_content/MindExecution.Shared/js/mind-map-glow-shader.js"
|
|
119
119
|
},
|
|
120
|
+
{
|
|
121
|
+
"hash": "sha256-C8A7FBiE5Tab+Qxg8RUiuZatttPo4xCMgRzIzbpLzak=",
|
|
122
|
+
"url": "_content/MindExecution.Shared/js/mind-map-image-policy.js"
|
|
123
|
+
},
|
|
120
124
|
{
|
|
121
125
|
"hash": "sha256-5sVcWSPLCHmnvAYLsqBwno201net5gfRYOqtQLUXQZE=",
|
|
122
126
|
"url": "_content/MindExecution.Shared/js/mind-map-interactions.js"
|
|
@@ -166,7 +170,7 @@ self.assetsManifest = {
|
|
|
166
170
|
"url": "_content/MindExecution.Shared/js/mind-map-object-manager.js.backup"
|
|
167
171
|
},
|
|
168
172
|
{
|
|
169
|
-
"hash": "sha256-
|
|
173
|
+
"hash": "sha256-pHqW8QvxjoBSjP4026YppVd9hs3QlUePBbb9UCjFDZs=",
|
|
170
174
|
"url": "_content/MindExecution.Shared/js/mind-map-pipeline.js"
|
|
171
175
|
},
|
|
172
176
|
{
|
|
@@ -438,44 +442,44 @@ self.assetsManifest = {
|
|
|
438
442
|
"url": "_framework/MimeMapping.og9ys58ylm.dll"
|
|
439
443
|
},
|
|
440
444
|
{
|
|
441
|
-
"hash": "sha256-
|
|
442
|
-
"url": "_framework/MindExecution.Core.
|
|
445
|
+
"hash": "sha256-gwxzUOyvnr1Q2UXzdu1H4SUeq3bbm3lXYe7/bd9860Y=",
|
|
446
|
+
"url": "_framework/MindExecution.Core.rmpf5us73b.dll"
|
|
443
447
|
},
|
|
444
448
|
{
|
|
445
|
-
"hash": "sha256
|
|
446
|
-
"url": "_framework/MindExecution.Kernel.
|
|
449
|
+
"hash": "sha256-+x+obc3kMnclHhP6m/z4jzqd+zXDZ+jhgLEVKKDs67Q=",
|
|
450
|
+
"url": "_framework/MindExecution.Kernel.jebho1txjn.dll"
|
|
447
451
|
},
|
|
448
452
|
{
|
|
449
|
-
"hash": "sha256-
|
|
450
|
-
"url": "_framework/MindExecution.Plugins.Admin.
|
|
453
|
+
"hash": "sha256-dSJHWimUTP/gn9qMwXWaZ7XXAkZFhezPGKIr7lags0o=",
|
|
454
|
+
"url": "_framework/MindExecution.Plugins.Admin.vb2b525l5w.dll"
|
|
451
455
|
},
|
|
452
456
|
{
|
|
453
|
-
"hash": "sha256
|
|
454
|
-
"url": "_framework/MindExecution.Plugins.Business.
|
|
457
|
+
"hash": "sha256-1NUsUHFCUNBTMBFXIMbt6MAMqxzkl0AqrI4GPfqeer0=",
|
|
458
|
+
"url": "_framework/MindExecution.Plugins.Business.g9svpf2ngw.dll"
|
|
455
459
|
},
|
|
456
460
|
{
|
|
457
|
-
"hash": "sha256-
|
|
458
|
-
"url": "_framework/MindExecution.Plugins.Concept.
|
|
461
|
+
"hash": "sha256-k42ltXSBo5RwkBrzyOgAHPemVl8Xw91c+gYrBRPrJyc=",
|
|
462
|
+
"url": "_framework/MindExecution.Plugins.Concept.3g19y748j3.dll"
|
|
459
463
|
},
|
|
460
464
|
{
|
|
461
|
-
"hash": "sha256-
|
|
462
|
-
"url": "_framework/MindExecution.Plugins.Directory.
|
|
465
|
+
"hash": "sha256-uLmsvR6Sg/EDXME2PWFTWw9l0b427MyIK0YydWybGDc=",
|
|
466
|
+
"url": "_framework/MindExecution.Plugins.Directory.cb2k9u5952.dll"
|
|
463
467
|
},
|
|
464
468
|
{
|
|
465
|
-
"hash": "sha256-
|
|
466
|
-
"url": "_framework/MindExecution.Plugins.PlanMaster.
|
|
469
|
+
"hash": "sha256-TwC1ItzVv+J+5C905NOpLwCpJWohnmSIDhjbolLlHZc=",
|
|
470
|
+
"url": "_framework/MindExecution.Plugins.PlanMaster.vsojs80h20.dll"
|
|
467
471
|
},
|
|
468
472
|
{
|
|
469
|
-
"hash": "sha256-
|
|
470
|
-
"url": "_framework/MindExecution.Plugins.YouTube.
|
|
473
|
+
"hash": "sha256-zfyvtryHEQ8fLlaRPto9s9Y2vozH1qjOXhFy4CqFOx4=",
|
|
474
|
+
"url": "_framework/MindExecution.Plugins.YouTube.luk1dwf932.dll"
|
|
471
475
|
},
|
|
472
476
|
{
|
|
473
|
-
"hash": "sha256-
|
|
474
|
-
"url": "_framework/MindExecution.Shared.
|
|
477
|
+
"hash": "sha256-6BpxPPUmZVP/7Z2pCoBmAWA4azB1q6IXSnLs8X5+gsQ=",
|
|
478
|
+
"url": "_framework/MindExecution.Shared.cjavadsxis.dll"
|
|
475
479
|
},
|
|
476
480
|
{
|
|
477
|
-
"hash": "sha256-
|
|
478
|
-
"url": "_framework/MindExecution.Web.
|
|
481
|
+
"hash": "sha256-0/ONjTN+Xx81nLs1yo2GRhtcTFFY1Ulm/keJQNfdDVU=",
|
|
482
|
+
"url": "_framework/MindExecution.Web.ratalb86xy.dll"
|
|
479
483
|
},
|
|
480
484
|
{
|
|
481
485
|
"hash": "sha256-IsZJ91/OW+fHzNqIgEc7Y072ns8z9dGritiSyvR9Wgc=",
|
|
@@ -794,7 +798,7 @@ self.assetsManifest = {
|
|
|
794
798
|
"url": "_framework/Websocket.Client.vapounvmnl.dll"
|
|
795
799
|
},
|
|
796
800
|
{
|
|
797
|
-
"hash": "sha256-
|
|
801
|
+
"hash": "sha256-OEzJUvajm6kUJUiSCb/eJl8DxcM5DS8gddgkufF6Y8A=",
|
|
798
802
|
"url": "_framework/blazor.boot.json"
|
|
799
803
|
},
|
|
800
804
|
{
|
|
@@ -870,7 +874,7 @@ self.assetsManifest = {
|
|
|
870
874
|
"url": "icon-512.png"
|
|
871
875
|
},
|
|
872
876
|
{
|
|
873
|
-
"hash": "sha256-
|
|
877
|
+
"hash": "sha256-42TjUxNh5O46JfoJIZXaZGb6w4b1+sYj0i+HCK5v3Zc=",
|
|
874
878
|
"url": "index.html"
|
|
875
879
|
},
|
|
876
880
|
{
|