@mindexec/cli 0.2.193 → 0.2.195
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/wwwroot/_content/MindExecution.Shared/css/app.css +1 -1
- package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +54 -131
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +20 -27
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +4 -4
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +11 -116
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +7 -7
- package/wwwroot/service-worker.js +1 -1
|
@@ -218,8 +218,8 @@ body.is-zooming .css3d-resolution-wrapper.selected,
|
|
|
218
218
|
body.is-panning .css3d-resolution-wrapper.selected,
|
|
219
219
|
body.mindcanvas-is-moving .css3d-resolution-wrapper.selected,
|
|
220
220
|
body.mindcanvas-is-dense .css3d-resolution-wrapper.selected {
|
|
221
|
-
-webkit-filter:
|
|
222
|
-
filter:
|
|
221
|
+
-webkit-filter: none !important;
|
|
222
|
+
filter: none !important;
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
body.is-resizing .css3d-resolution-wrapper {
|
|
@@ -1197,7 +1197,7 @@ body.is-node-dragging * {
|
|
|
1197
1197
|
|
|
1198
1198
|
.map-node-note.selected {
|
|
1199
1199
|
/* 선택 시에만 최소한의 glow */
|
|
1200
|
-
box-shadow:
|
|
1200
|
+
box-shadow: none !important;
|
|
1201
1201
|
}
|
|
1202
1202
|
|
|
1203
1203
|
/* ▲▲▲ [Perf] ▲▲▲ */
|
|
@@ -1206,23 +1206,19 @@ body.is-node-dragging * {
|
|
|
1206
1206
|
|
|
1207
1207
|
.map-node-bubble.selected {
|
|
1208
1208
|
border-color: var(--mind-node-selection-edge) !important;
|
|
1209
|
-
box-shadow:
|
|
1210
|
-
0 0 22px rgba(var(--mind-node-selection-glow-rgb), 0.18),
|
|
1211
|
-
0 10px 15px -3px rgba(0, 0, 0, 0.2) !important;
|
|
1209
|
+
box-shadow: none !important;
|
|
1212
1210
|
overflow: hidden !important;
|
|
1213
1211
|
}
|
|
1214
1212
|
|
|
1215
1213
|
.map-node-note.selected,
|
|
1216
1214
|
.map-node-note:focus-within {
|
|
1217
1215
|
border-color: var(--mind-node-selection-edge) !important;
|
|
1218
|
-
box-shadow:
|
|
1219
|
-
0 0 18px 0 rgba(var(--mind-node-selection-glow-rgb), 0.24),
|
|
1220
|
-
0 0 32px 0 rgba(var(--mind-node-selection-glow-soft-rgb), 0.16) !important;
|
|
1216
|
+
box-shadow: none !important;
|
|
1221
1217
|
overflow: hidden !important;
|
|
1222
1218
|
}
|
|
1223
1219
|
|
|
1224
1220
|
/* Note/Image hard edge lives on the inner CSS3D card in app.css.
|
|
1225
|
-
|
|
1221
|
+
Node glow/shadow is retired; keep only crisp borders. */
|
|
1226
1222
|
.map-node-note,
|
|
1227
1223
|
.map-node-note.selected,
|
|
1228
1224
|
.map-node-note:focus-within,
|
|
@@ -1236,61 +1232,38 @@ body.is-node-dragging * {
|
|
|
1236
1232
|
}
|
|
1237
1233
|
|
|
1238
1234
|
.css3d-resolution-wrapper.node-type-note {
|
|
1239
|
-
-webkit-box-shadow:
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1244
|
-
box-shadow:
|
|
1245
|
-
0 0 6px rgba(15, 23, 42, 0.25),
|
|
1246
|
-
0 0 16px rgba(15, 23, 42, 0.18),
|
|
1247
|
-
0 0 30px rgba(15, 23, 42, 0.12),
|
|
1248
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1235
|
+
-webkit-box-shadow: none !important;
|
|
1236
|
+
box-shadow: none !important;
|
|
1237
|
+
-webkit-filter: none !important;
|
|
1238
|
+
filter: none !important;
|
|
1249
1239
|
}
|
|
1250
1240
|
|
|
1251
1241
|
.css3d-resolution-wrapper.selected {
|
|
1252
1242
|
outline: 1px solid rgba(var(--node-selection-glow-rgb, 59, 130, 246), 0.24) !important;
|
|
1253
|
-
outline-offset:
|
|
1254
|
-
-webkit-box-shadow:
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
0 0 56px rgba(var(--node-selection-glow-rgb-soft, 191, 219, 254), 0.26) !important;
|
|
1259
|
-
box-shadow:
|
|
1260
|
-
0 0 4px rgba(var(--node-selection-glow-rgb, 59, 130, 246), 0.56),
|
|
1261
|
-
0 0 12px rgba(var(--node-selection-glow-rgb, 59, 130, 246), 0.44),
|
|
1262
|
-
0 0 28px rgba(var(--node-selection-glow-rgb, 59, 130, 246), 0.32),
|
|
1263
|
-
0 0 56px rgba(var(--node-selection-glow-rgb-soft, 191, 219, 254), 0.26) !important;
|
|
1264
|
-
-webkit-filter: saturate(1.08) !important;
|
|
1265
|
-
filter: saturate(1.08) !important;
|
|
1243
|
+
outline-offset: 0;
|
|
1244
|
+
-webkit-box-shadow: none !important;
|
|
1245
|
+
box-shadow: none !important;
|
|
1246
|
+
-webkit-filter: none !important;
|
|
1247
|
+
filter: none !important;
|
|
1266
1248
|
}
|
|
1267
1249
|
|
|
1268
1250
|
.css3d-resolution-wrapper.selection-style-agent.selected {
|
|
1269
1251
|
outline: 1px solid rgba(var(--node-selection-glow-rgb, 59, 130, 246), 0.24) !important;
|
|
1270
|
-
outline-offset:
|
|
1271
|
-
-webkit-box-shadow:
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
0 0 56px rgba(var(--node-selection-glow-rgb-soft, 191, 219, 254), 0.26) !important;
|
|
1276
|
-
box-shadow:
|
|
1277
|
-
0 0 4px rgba(var(--node-selection-glow-rgb, 59, 130, 246), 0.56),
|
|
1278
|
-
0 0 12px rgba(var(--node-selection-glow-rgb, 59, 130, 246), 0.44),
|
|
1279
|
-
0 0 28px rgba(var(--node-selection-glow-rgb, 59, 130, 246), 0.32),
|
|
1280
|
-
0 0 56px rgba(var(--node-selection-glow-rgb-soft, 191, 219, 254), 0.26) !important;
|
|
1281
|
-
-webkit-filter: saturate(1.08) !important;
|
|
1282
|
-
filter: saturate(1.08) !important;
|
|
1252
|
+
outline-offset: 0;
|
|
1253
|
+
-webkit-box-shadow: none !important;
|
|
1254
|
+
box-shadow: none !important;
|
|
1255
|
+
-webkit-filter: none !important;
|
|
1256
|
+
filter: none !important;
|
|
1283
1257
|
}
|
|
1284
1258
|
|
|
1285
|
-
/* During resize, keep the crisp selection edge
|
|
1286
|
-
The blur bleeds underneath overlapping siblings and looks like a second glow. */
|
|
1259
|
+
/* During resize, keep the crisp selection edge and avoid decorative glow. */
|
|
1287
1260
|
body.is-resizing .css3d-resolution-wrapper.selected,
|
|
1288
1261
|
body.is-resizing .css3d-resolution-wrapper.node-type-note.selected,
|
|
1289
1262
|
body.is-resizing .css3d-resolution-wrapper.node-type-image.selected,
|
|
1290
1263
|
body.is-resizing .css3d-resolution-wrapper.node-type-video.selected,
|
|
1291
1264
|
body.is-resizing .css3d-resolution-wrapper.node-type-embed.selected {
|
|
1292
1265
|
outline: 1px solid rgba(var(--node-selection-glow-rgb, 59, 130, 246), 0.34) !important;
|
|
1293
|
-
outline-offset:
|
|
1266
|
+
outline-offset: 0;
|
|
1294
1267
|
-webkit-box-shadow: none !important;
|
|
1295
1268
|
box-shadow: none !important;
|
|
1296
1269
|
-webkit-filter: none !important;
|
|
@@ -1298,18 +1271,10 @@ body.is-resizing .css3d-resolution-wrapper.node-type-embed.selected {
|
|
|
1298
1271
|
}
|
|
1299
1272
|
|
|
1300
1273
|
.css3d-resolution-wrapper.node-type-note.selected {
|
|
1301
|
-
-webkit-box-shadow:
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
0 0 56px rgba(var(--node-selection-glow-rgb-soft), 0.26) !important;
|
|
1306
|
-
box-shadow:
|
|
1307
|
-
0 0 4px rgba(var(--node-selection-glow-rgb), 0.56),
|
|
1308
|
-
0 0 12px rgba(var(--node-selection-glow-rgb), 0.44),
|
|
1309
|
-
0 0 28px rgba(var(--node-selection-glow-rgb), 0.32),
|
|
1310
|
-
0 0 56px rgba(var(--node-selection-glow-rgb-soft), 0.26) !important;
|
|
1311
|
-
-webkit-filter: saturate(1.08) !important;
|
|
1312
|
-
filter: saturate(1.08) !important;
|
|
1274
|
+
-webkit-box-shadow: none !important;
|
|
1275
|
+
box-shadow: none !important;
|
|
1276
|
+
-webkit-filter: none !important;
|
|
1277
|
+
filter: none !important;
|
|
1313
1278
|
}
|
|
1314
1279
|
|
|
1315
1280
|
html.mindcanvas-platform-apple .css3d-resolution-wrapper.selected,
|
|
@@ -1324,61 +1289,33 @@ html.mindcanvas-platform-apple .css3d-resolution-wrapper.is-automation-relation-
|
|
|
1324
1289
|
}
|
|
1325
1290
|
|
|
1326
1291
|
.css3d-resolution-wrapper.node-type-image {
|
|
1327
|
-
-webkit-box-shadow:
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1332
|
-
box-shadow:
|
|
1333
|
-
0 0 6px rgba(15, 23, 42, 0.25),
|
|
1334
|
-
0 0 16px rgba(15, 23, 42, 0.18),
|
|
1335
|
-
0 0 30px rgba(15, 23, 42, 0.12),
|
|
1336
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1292
|
+
-webkit-box-shadow: none !important;
|
|
1293
|
+
box-shadow: none !important;
|
|
1294
|
+
-webkit-filter: none !important;
|
|
1295
|
+
filter: none !important;
|
|
1337
1296
|
}
|
|
1338
1297
|
|
|
1339
1298
|
.css3d-resolution-wrapper.node-type-video,
|
|
1340
1299
|
.css3d-resolution-wrapper.node-type-embed {
|
|
1341
|
-
-webkit-box-shadow:
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1346
|
-
box-shadow:
|
|
1347
|
-
0 0 6px rgba(15, 23, 42, 0.25),
|
|
1348
|
-
0 0 16px rgba(15, 23, 42, 0.18),
|
|
1349
|
-
0 0 30px rgba(15, 23, 42, 0.12),
|
|
1350
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1300
|
+
-webkit-box-shadow: none !important;
|
|
1301
|
+
box-shadow: none !important;
|
|
1302
|
+
-webkit-filter: none !important;
|
|
1303
|
+
filter: none !important;
|
|
1351
1304
|
}
|
|
1352
1305
|
|
|
1353
1306
|
.css3d-resolution-wrapper.node-type-image.selected {
|
|
1354
|
-
-webkit-box-shadow:
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
0 0 56px rgba(var(--node-selection-glow-rgb-soft), 0.26) !important;
|
|
1359
|
-
box-shadow:
|
|
1360
|
-
0 0 4px rgba(var(--node-selection-glow-rgb), 0.56),
|
|
1361
|
-
0 0 12px rgba(var(--node-selection-glow-rgb), 0.44),
|
|
1362
|
-
0 0 28px rgba(var(--node-selection-glow-rgb), 0.32),
|
|
1363
|
-
0 0 56px rgba(var(--node-selection-glow-rgb-soft), 0.26) !important;
|
|
1364
|
-
-webkit-filter: saturate(1.08) !important;
|
|
1365
|
-
filter: saturate(1.08) !important;
|
|
1307
|
+
-webkit-box-shadow: none !important;
|
|
1308
|
+
box-shadow: none !important;
|
|
1309
|
+
-webkit-filter: none !important;
|
|
1310
|
+
filter: none !important;
|
|
1366
1311
|
}
|
|
1367
1312
|
|
|
1368
1313
|
.css3d-resolution-wrapper.node-type-video.selected,
|
|
1369
1314
|
.css3d-resolution-wrapper.node-type-embed.selected {
|
|
1370
1315
|
outline: 1px solid rgba(var(--node-selection-glow-rgb), 0.24) !important;
|
|
1371
|
-
outline-offset:
|
|
1372
|
-
-webkit-box-shadow:
|
|
1373
|
-
|
|
1374
|
-
0 0 16px rgba(15, 23, 42, 0.18),
|
|
1375
|
-
0 0 30px rgba(15, 23, 42, 0.12),
|
|
1376
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1377
|
-
box-shadow:
|
|
1378
|
-
0 0 6px rgba(15, 23, 42, 0.25),
|
|
1379
|
-
0 0 16px rgba(15, 23, 42, 0.18),
|
|
1380
|
-
0 0 30px rgba(15, 23, 42, 0.12),
|
|
1381
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1316
|
+
outline-offset: 0;
|
|
1317
|
+
-webkit-box-shadow: none !important;
|
|
1318
|
+
box-shadow: none !important;
|
|
1382
1319
|
-webkit-filter: none !important;
|
|
1383
1320
|
filter: none !important;
|
|
1384
1321
|
}
|
|
@@ -1386,16 +1323,8 @@ html.mindcanvas-platform-apple .css3d-resolution-wrapper.is-automation-relation-
|
|
|
1386
1323
|
.css3d-resolution-wrapper.node-type-video.selected-media-safe,
|
|
1387
1324
|
.css3d-resolution-wrapper.node-type-embed.selected-media-safe {
|
|
1388
1325
|
outline: none !important;
|
|
1389
|
-
-webkit-box-shadow:
|
|
1390
|
-
|
|
1391
|
-
0 0 16px rgba(15, 23, 42, 0.18),
|
|
1392
|
-
0 0 30px rgba(15, 23, 42, 0.12),
|
|
1393
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1394
|
-
box-shadow:
|
|
1395
|
-
0 0 6px rgba(15, 23, 42, 0.25),
|
|
1396
|
-
0 0 16px rgba(15, 23, 42, 0.18),
|
|
1397
|
-
0 0 30px rgba(15, 23, 42, 0.12),
|
|
1398
|
-
0 0 50px rgba(15, 23, 42, 0.08) !important;
|
|
1326
|
+
-webkit-box-shadow: none !important;
|
|
1327
|
+
box-shadow: none !important;
|
|
1399
1328
|
-webkit-filter: none !important;
|
|
1400
1329
|
filter: none !important;
|
|
1401
1330
|
}
|
|
@@ -1403,13 +1332,9 @@ html.mindcanvas-platform-apple .css3d-resolution-wrapper.is-automation-relation-
|
|
|
1403
1332
|
.css3d-resolution-wrapper.node-type-video.selected-media-safe .map-node.selected,
|
|
1404
1333
|
.css3d-resolution-wrapper.node-type-embed.selected-media-safe .map-node.selected {
|
|
1405
1334
|
outline: 1px solid rgba(var(--node-selection-glow-rgb), 0.82) !important;
|
|
1406
|
-
outline-offset:
|
|
1407
|
-
-webkit-box-shadow:
|
|
1408
|
-
|
|
1409
|
-
0 0 0 1px rgba(var(--node-selection-glow-rgb-soft), 0.12) !important;
|
|
1410
|
-
box-shadow:
|
|
1411
|
-
0 0 0 1px rgba(var(--node-selection-glow-rgb), 0.18) inset,
|
|
1412
|
-
0 0 0 1px rgba(var(--node-selection-glow-rgb-soft), 0.12) !important;
|
|
1335
|
+
outline-offset: 0;
|
|
1336
|
+
-webkit-box-shadow: none !important;
|
|
1337
|
+
box-shadow: none !important;
|
|
1413
1338
|
}
|
|
1414
1339
|
|
|
1415
1340
|
.map-node-memo.selected,
|
|
@@ -1420,9 +1345,7 @@ html.mindcanvas-platform-apple .css3d-resolution-wrapper.is-automation-relation-
|
|
|
1420
1345
|
.map-node-code.selected,
|
|
1421
1346
|
.map-node-code:focus-within {
|
|
1422
1347
|
border-color: var(--mind-node-selection-edge) !important;
|
|
1423
|
-
box-shadow:
|
|
1424
|
-
0 0 18px 0 rgba(var(--mind-node-selection-glow-rgb), 0.24),
|
|
1425
|
-
0 0 32px 0 rgba(var(--mind-node-selection-glow-soft-rgb), 0.16) !important;
|
|
1348
|
+
box-shadow: none !important;
|
|
1426
1349
|
overflow: hidden !important;
|
|
1427
1350
|
}
|
|
1428
1351
|
|
|
@@ -1435,8 +1358,8 @@ html.mindcanvas-platform-apple .css3d-resolution-wrapper.is-automation-relation-
|
|
|
1435
1358
|
overflow: visible !important;
|
|
1436
1359
|
}
|
|
1437
1360
|
|
|
1438
|
-
/* Use the wrapper as the single source of truth for CSS3D selection
|
|
1439
|
-
Agent wrappers intentionally mirror the edit-state
|
|
1361
|
+
/* Use the wrapper as the single source of truth for CSS3D selection edge.
|
|
1362
|
+
Agent wrappers intentionally mirror the edit-state edge so selection/editing
|
|
1440
1363
|
keep the same visual signature even when overlays swap in and out. */
|
|
1441
1364
|
.css3d-resolution-wrapper.selected .map-node-bubble.selected,
|
|
1442
1365
|
.css3d-resolution-wrapper.selected .map-node-code.selected,
|
|
@@ -1571,8 +1494,8 @@ html.mindcanvas-platform-apple .css3d-resolution-wrapper.is-automation-relation-
|
|
|
1571
1494
|
|
|
1572
1495
|
.mind-map-text-overlay-v2-card.is-passive {
|
|
1573
1496
|
pointer-events: none;
|
|
1574
|
-
/* CSS3D owns card background/edge
|
|
1575
|
-
readable text fragments and must never paint over
|
|
1497
|
+
/* CSS3D owns card background/edge; passive overlay only contributes
|
|
1498
|
+
readable text fragments and must never paint over CSS3D node chrome. */
|
|
1576
1499
|
contain: layout style;
|
|
1577
1500
|
overflow: visible;
|
|
1578
1501
|
background: transparent !important;
|
|
@@ -2489,7 +2412,7 @@ body.is-panning .mind-map-text-overlay-v2-card.is-passive .mind-map-text-overlay
|
|
|
2489
2412
|
|
|
2490
2413
|
/* Template launcher and Multi Desktop Monitor own their visual chrome on the
|
|
2491
2414
|
card itself. Keep the CSS3D wrapper neutral so motion CSS3D and the passive
|
|
2492
|
-
DOM overlay do not stack different selection
|
|
2415
|
+
DOM overlay do not stack different selection chrome. */
|
|
2493
2416
|
.css3d-resolution-wrapper.node-type-templatelauncher.selected,
|
|
2494
2417
|
body.is-panning .css3d-resolution-wrapper.node-type-templatelauncher.selected,
|
|
2495
2418
|
body.is-zooming .css3d-resolution-wrapper.node-type-templatelauncher.selected,
|
|
@@ -3418,7 +3341,7 @@ body.mindcanvas-is-dense .css3d-resolution-wrapper [id^="css3d-node-"] {
|
|
|
3418
3341
|
}
|
|
3419
3342
|
|
|
3420
3343
|
/* Temporary lightweight node visuals.
|
|
3421
|
-
CSS3D and passive overlay node surfaces intentionally avoid shadows/glow
|
|
3344
|
+
CSS3D and passive overlay node surfaces intentionally avoid shadows/glow.
|
|
3422
3345
|
Keep outlines, borders, and status color so selection and node state remain readable. */
|
|
3423
3346
|
.css3d-resolution-wrapper,
|
|
3424
3347
|
.css3d-resolution-wrapper.selected,
|
|
@@ -3451,7 +3374,7 @@ body.mindcanvas-is-dense .css3d-resolution-wrapper [id^="css3d-node-"] {
|
|
|
3451
3374
|
filter: none !important;
|
|
3452
3375
|
}
|
|
3453
3376
|
|
|
3454
|
-
/* Strong tail guard for the
|
|
3377
|
+
/* Strong tail guard for the no node-glow policy.
|
|
3455
3378
|
This intentionally wins after idle/motion class cleanup and after older
|
|
3456
3379
|
note/image/video/agent/remote rules that used selected-state glow. */
|
|
3457
3380
|
html body .css3d-resolution-wrapper,
|
|
@@ -1192,8 +1192,8 @@
|
|
|
1192
1192
|
opacity: 0;
|
|
1193
1193
|
pointer-events: none !important;
|
|
1194
1194
|
transform: var(--context-source-pin-transform, translate(0, 0)) scale(0.86);
|
|
1195
|
-
transition: opacity 120ms ease, transform 120ms ease
|
|
1196
|
-
filter:
|
|
1195
|
+
transition: opacity 120ms ease, transform 120ms ease;
|
|
1196
|
+
filter: none;
|
|
1197
1197
|
}
|
|
1198
1198
|
|
|
1199
1199
|
.css3d-resolution-wrapper.has-context-source-pins,
|
|
@@ -1245,20 +1245,14 @@
|
|
|
1245
1245
|
}
|
|
1246
1246
|
|
|
1247
1247
|
.map-node-memo__automation-pin.is-output.has-result .map-node-memo__automation-pin-dot {
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
0 0 0 4px rgba(249, 115, 22, 0.18),
|
|
1251
|
-
0 0 16px rgba(249, 115, 22, 0.52),
|
|
1252
|
-
0 4px 9px rgba(15, 23, 42, 0.16) !important;
|
|
1248
|
+
border-color: #f97316 !important;
|
|
1249
|
+
box-shadow: none !important;
|
|
1253
1250
|
}
|
|
1254
1251
|
|
|
1255
1252
|
.map-node-memo__automation-pin.is-output.has-result .map-node-memo__automation-pin-label {
|
|
1256
1253
|
background: rgba(255, 247, 237, 0.98) !important;
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
0 0 18px rgba(249, 115, 22, 0.28),
|
|
1260
|
-
0 8px 16px rgba(15, 23, 42, 0.12),
|
|
1261
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.94) !important;
|
|
1254
|
+
border-color: rgba(249, 115, 22, 0.38) !important;
|
|
1255
|
+
box-shadow: none !important;
|
|
1262
1256
|
}
|
|
1263
1257
|
|
|
1264
1258
|
.mind-map-edit-overlay-active .node-content-wrapper,
|
|
@@ -2142,7 +2136,7 @@
|
|
|
2142
2136
|
isSelected,
|
|
2143
2137
|
{
|
|
2144
2138
|
edgeVisible: false,
|
|
2145
|
-
glowVisible:
|
|
2139
|
+
glowVisible: false
|
|
2146
2140
|
}
|
|
2147
2141
|
);
|
|
2148
2142
|
if (cssIsVisible) {
|
|
@@ -2154,10 +2148,7 @@
|
|
|
2154
2148
|
|
|
2155
2149
|
const glowMesh = group.getObjectByName?.('glow');
|
|
2156
2150
|
if (glowMesh && window.MindMapGlowShader?.updateGlowSize) {
|
|
2157
|
-
|
|
2158
|
-
window.MindMapGlowShader.updateGlowSelection?.(glowMesh, isSelected);
|
|
2159
|
-
glowMesh.position.set(nextWidth / 2, -nextHeight / 2, 0);
|
|
2160
|
-
glowMesh.visible = !cssIsVisible;
|
|
2151
|
+
glowMesh.visible = false;
|
|
2161
2152
|
entry.glowMesh = glowMesh;
|
|
2162
2153
|
}
|
|
2163
2154
|
}
|
|
@@ -3922,8 +3913,8 @@
|
|
|
3922
3913
|
});
|
|
3923
3914
|
const NEUTRAL_SELECTION_GLOW_RGB = '59, 130, 246';
|
|
3924
3915
|
const NEUTRAL_SELECTION_GLOW_RGB_SOFT = '191, 219, 254';
|
|
3925
|
-
const CSS3D_WRAPPER_TRANSITION = '
|
|
3926
|
-
const CSS3D_WRAPPER_WEBKIT_TRANSITION =
|
|
3916
|
+
const CSS3D_WRAPPER_TRANSITION = 'transform .22s ease, opacity .22s ease, border-color .22s ease';
|
|
3917
|
+
const CSS3D_WRAPPER_WEBKIT_TRANSITION = CSS3D_WRAPPER_TRANSITION;
|
|
3927
3918
|
const TEXT_OVERLAY_SUPPORTED_TYPES = new Set(['text', 'markdown', 'note', 'code', 'memo', CSV_TABLE_CONTENT_TYPE]);
|
|
3928
3919
|
const TEXT_SELECTION_OVERLAY_SUPPORTED_TYPES = new Set(['text', 'markdown']);
|
|
3929
3920
|
const TEXT_INTERACTION_SCROLLABLE_SELECTORS = '.node-response, .note-content, .markdown-body, .prose, .note-textarea, .code-body, .code-content, .csv-table-scroll, .csv-table-scroll *, .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';
|
|
@@ -4132,7 +4123,7 @@
|
|
|
4132
4123
|
|
|
4133
4124
|
if (getTextOverlayRenderMode(nodeEntry) === 'memo') {
|
|
4134
4125
|
// Memo cards rely on the canonical CSS3D shell for their rounded
|
|
4135
|
-
// body surface and selection
|
|
4126
|
+
// body surface and selection edge. Passive readonly overlays only
|
|
4136
4127
|
// duplicate text and can drift from that chrome during camera motion.
|
|
4137
4128
|
return 'none';
|
|
4138
4129
|
}
|
|
@@ -8638,7 +8629,7 @@
|
|
|
8638
8629
|
border-radius: 999px;
|
|
8639
8630
|
border: 2px solid rgba(255, 255, 255, 0.96);
|
|
8640
8631
|
background: ${theme.edge};
|
|
8641
|
-
box-shadow:
|
|
8632
|
+
box-shadow: none;
|
|
8642
8633
|
box-sizing: border-box;
|
|
8643
8634
|
pointer-events: none;
|
|
8644
8635
|
`;
|
|
@@ -8656,7 +8647,7 @@
|
|
|
8656
8647
|
border: 1px solid ${theme.edge};
|
|
8657
8648
|
background: rgba(255, 255, 255, 0.94);
|
|
8658
8649
|
color: #0f172a;
|
|
8659
|
-
box-shadow:
|
|
8650
|
+
box-shadow: none;
|
|
8660
8651
|
font-size: 9px;
|
|
8661
8652
|
line-height: 20px;
|
|
8662
8653
|
font-weight: 800;
|
|
@@ -8968,6 +8959,8 @@
|
|
|
8968
8959
|
if (sourcePin) {
|
|
8969
8960
|
sourcePin.classList.remove('is-connecting-source');
|
|
8970
8961
|
sourcePin.style.filter = '';
|
|
8962
|
+
sourcePin.style.outline = '';
|
|
8963
|
+
sourcePin.style.outlineOffset = '';
|
|
8971
8964
|
try {
|
|
8972
8965
|
if (previous.pointerId != null) {
|
|
8973
8966
|
sourcePin.releasePointerCapture?.(previous.pointerId);
|
|
@@ -8984,7 +8977,9 @@
|
|
|
8984
8977
|
const sourcePin = findBusinessAutomationPinElement(_module, draft.sourceNodeId, draft.sourcePinId, 'output');
|
|
8985
8978
|
if (sourcePin) {
|
|
8986
8979
|
sourcePin.classList.add('is-connecting-source');
|
|
8987
|
-
sourcePin.style.filter = '
|
|
8980
|
+
sourcePin.style.filter = 'none';
|
|
8981
|
+
sourcePin.style.outline = '2px solid rgba(37, 99, 235, 0.72)';
|
|
8982
|
+
sourcePin.style.outlineOffset = '2px';
|
|
8988
8983
|
}
|
|
8989
8984
|
scheduleBusinessAutomationEdgeRender(_module);
|
|
8990
8985
|
}
|
|
@@ -10418,9 +10413,7 @@
|
|
|
10418
10413
|
'stroke-width': isSelected ? '3.6' : (isRelationHighlighted ? (isContextEdge ? '2.45' : '2.65') : (isContextEdge ? '2.1' : '2.4')),
|
|
10419
10414
|
opacity: isSelected ? '0.96' : (isRelationHighlighted ? (isContextEdge ? '0.72' : '0.78') : (isContextEdge ? '0.68' : '0.82')),
|
|
10420
10415
|
'stroke-dasharray': isContextEdge ? '7 7' : '',
|
|
10421
|
-
filter:
|
|
10422
|
-
? `drop-shadow(0 0 7px ${theme.edge})`
|
|
10423
|
-
: (isRelationHighlighted ? `drop-shadow(0 0 3px ${theme.edge})` : '')
|
|
10416
|
+
filter: ''
|
|
10424
10417
|
});
|
|
10425
10418
|
path.style.pointerEvents = 'none';
|
|
10426
10419
|
path.dataset.edgeId = edge.id;
|
|
@@ -21987,7 +21980,7 @@
|
|
|
21987
21980
|
font-size: 14px;
|
|
21988
21981
|
line-height: 1.6;
|
|
21989
21982
|
color: #1f2937;
|
|
21990
|
-
|
|
21983
|
+
box-shadow: none;
|
|
21991
21984
|
`;
|
|
21992
21985
|
|
|
21993
21986
|
// 콘텐츠 래퍼 생성
|
|
@@ -111,8 +111,8 @@
|
|
|
111
111
|
const CSS3D_PREWARM_HEAVY_VISIBLE_THRESHOLD = 144;
|
|
112
112
|
const CSS3D_PREWARM_EXTREME_VISIBLE_THRESHOLD = 240;
|
|
113
113
|
const FREEZE_CONTENT_DRIVEN_LOD_LINES = false; // Recompute when content changes; resident instances make this affordable.
|
|
114
|
-
const ENABLE_INSTANCED_BORDER_LINES = false; // Remove MID/FAR outline lines; keep body/
|
|
115
|
-
const ENABLE_INSTANCED_HALO = false; //
|
|
114
|
+
const ENABLE_INSTANCED_BORDER_LINES = false; // Remove MID/FAR outline lines; keep body/text lines.
|
|
115
|
+
const ENABLE_INSTANCED_HALO = false; // Node halo/shadow is retired.
|
|
116
116
|
const ENABLE_INSTANCED_TEXT_LINES = true; // Keep MID/FAR text silhouettes enabled.
|
|
117
117
|
const SUSPEND_LOD_TEXT_LINES_DURING_PAN = false; // Keep MID line silhouettes visible during pan/wheel; only defer expensive refresh work.
|
|
118
118
|
// NOTE: Distance-based line disable removed (lines always render by distance)
|
|
@@ -2834,7 +2834,7 @@
|
|
|
2834
2834
|
? visible
|
|
2835
2835
|
: null;
|
|
2836
2836
|
const edgeVisible = visibilityConfig ? !!visibilityConfig.edgeVisible : !!visible;
|
|
2837
|
-
const glowVisible =
|
|
2837
|
+
const glowVisible = false;
|
|
2838
2838
|
const imageMidEdge = entry.imageMidEdgeMesh || entry.glObject.getObjectByName('imageMidEdge');
|
|
2839
2839
|
const imageMidGlow = entry.imageMidGlowMesh || entry.glObject.getObjectByName('imageMidGlow');
|
|
2840
2840
|
entry.imageMidEdgeMesh = imageMidEdge || null;
|
|
@@ -3508,7 +3508,7 @@
|
|
|
3508
3508
|
baseRenderOrder,
|
|
3509
3509
|
isSelected: !!isNodeSelected,
|
|
3510
3510
|
edgeVisible: false,
|
|
3511
|
-
glowVisible:
|
|
3511
|
+
glowVisible: false
|
|
3512
3512
|
};
|
|
3513
3513
|
const previousState = entry._imageLodVisualState || null;
|
|
3514
3514
|
const needsDecorSync =
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const DEBUG = false;
|
|
7
7
|
const log = DEBUG ? console.log.bind(console) : () => { };
|
|
8
8
|
const warn = DEBUG ? console.warn.bind(console) : () => { };
|
|
9
|
-
//
|
|
9
|
+
// Node glow/shadow is retired. Selection uses crisp outlines/borders only.
|
|
10
10
|
const ENABLE_WEBGL_GLOW = false;
|
|
11
11
|
const ENABLE_NODE_DECORATION_GLOW = false;
|
|
12
12
|
function waitForNonVisualFrame(hiddenDelay = 16) {
|
|
@@ -825,110 +825,16 @@
|
|
|
825
825
|
existingEdge.material?.dispose?.();
|
|
826
826
|
}
|
|
827
827
|
const existingGlow = group.getObjectByName('imageMidGlow');
|
|
828
|
-
if (
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
existingGlow.material?.dispose?.();
|
|
833
|
-
}
|
|
834
|
-
if (group.userData) {
|
|
835
|
-
delete group.userData.imageMidLodDecorState;
|
|
836
|
-
}
|
|
837
|
-
return { edge: null, glow: null };
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
const visibilityConfig =
|
|
841
|
-
visible && typeof visible === 'object'
|
|
842
|
-
? visible
|
|
843
|
-
: null;
|
|
844
|
-
const edgeVisible = false;
|
|
845
|
-
const glowVisible = visibilityConfig
|
|
846
|
-
? !!visibilityConfig.glowVisible
|
|
847
|
-
: (visible === undefined ? (existingGlow?.visible ?? false) : !!visible);
|
|
848
|
-
const previousState = group.userData?.imageMidLodDecorState || null;
|
|
849
|
-
|
|
850
|
-
if (
|
|
851
|
-
previousState &&
|
|
852
|
-
previousState.width === width &&
|
|
853
|
-
previousState.height === height &&
|
|
854
|
-
previousState.baseRenderOrder === baseRenderOrder &&
|
|
855
|
-
previousState.isSelected === !!isSelected &&
|
|
856
|
-
previousState.edgeVisible === edgeVisible &&
|
|
857
|
-
previousState.glowVisible === glowVisible &&
|
|
858
|
-
((existingGlow && existingGlow.visible === glowVisible) || (!existingGlow && glowVisible === false))
|
|
859
|
-
) {
|
|
860
|
-
return { edge: null, glow: existingGlow || null };
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
group.userData.imageMidLodDecorState = {
|
|
864
|
-
width,
|
|
865
|
-
height,
|
|
866
|
-
baseRenderOrder,
|
|
867
|
-
isSelected: !!isSelected,
|
|
868
|
-
edgeVisible,
|
|
869
|
-
glowVisible
|
|
870
|
-
};
|
|
871
|
-
|
|
872
|
-
let glow = existingGlow;
|
|
873
|
-
if (window.MindMapGlowShader?.createSDFGlowMesh) {
|
|
874
|
-
glow = window.MindMapGlowShader.createSDFGlowMesh(width, height, false, 'image', glow || null);
|
|
875
|
-
glow.name = 'imageMidGlow';
|
|
876
|
-
glow.raycast = () => { };
|
|
877
|
-
if (!glow.parent) {
|
|
878
|
-
group.add(glow);
|
|
879
|
-
}
|
|
880
|
-
} else {
|
|
881
|
-
const glowWidth = Math.max(1, width + 24);
|
|
882
|
-
const glowHeight = Math.max(1, height + 24);
|
|
883
|
-
if (!glow) {
|
|
884
|
-
glow = new THREE.Mesh(
|
|
885
|
-
new THREE.PlaneGeometry(glowWidth, glowHeight),
|
|
886
|
-
new THREE.MeshBasicMaterial({
|
|
887
|
-
color: IMAGE_MID_GLOW_COLOR,
|
|
888
|
-
transparent: true,
|
|
889
|
-
opacity: IMAGE_MID_GLOW_OPACITY,
|
|
890
|
-
depthWrite: false,
|
|
891
|
-
depthTest: false,
|
|
892
|
-
side: THREE.DoubleSide
|
|
893
|
-
})
|
|
894
|
-
);
|
|
895
|
-
glow.name = 'imageMidGlow';
|
|
896
|
-
glow.raycast = () => { };
|
|
897
|
-
group.add(glow);
|
|
898
|
-
}
|
|
899
|
-
|
|
900
|
-
const glowGeometry = glow.geometry?.parameters;
|
|
901
|
-
if (!glowGeometry || glowGeometry.width !== glowWidth || glowGeometry.height !== glowHeight) {
|
|
902
|
-
glow.geometry?.dispose?.();
|
|
903
|
-
glow.geometry = new THREE.PlaneGeometry(glowWidth, glowHeight);
|
|
904
|
-
}
|
|
828
|
+
if (existingGlow) {
|
|
829
|
+
existingGlow.parent?.remove?.(existingGlow);
|
|
830
|
+
existingGlow.geometry?.dispose?.();
|
|
831
|
+
existingGlow.material?.dispose?.();
|
|
905
832
|
}
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
const glowColor = isSelected ? IMAGE_SELECTION_SDF_GLOW_COLOR : IMAGE_MID_GLOW_COLOR;
|
|
909
|
-
const glowOpacity = isSelected ? IMAGE_SELECTION_SDF_GLOW_OPACITY : IMAGE_MID_GLOW_OPACITY;
|
|
910
|
-
glow.position.set(width / 2, -height / 2, -0.02);
|
|
911
|
-
glow.renderOrder = Math.max(0, (baseRenderOrder || 1) - 3);
|
|
912
|
-
glow.visible = glowVisible;
|
|
913
|
-
|
|
914
|
-
if (glow.material?.uniforms) {
|
|
915
|
-
glow.material.uniforms.color.value.setHex(glowColor);
|
|
916
|
-
glow.material.uniforms.opacity.value = glowOpacity;
|
|
917
|
-
glow.material.depthWrite = false;
|
|
918
|
-
glow.material.depthTest = false;
|
|
919
|
-
glow.material.transparent = true;
|
|
920
|
-
glow.material.needsUpdate = true;
|
|
921
|
-
} else if (glow.material) {
|
|
922
|
-
glow.material.color.setHex(glowColor);
|
|
923
|
-
glow.material.opacity = glowOpacity;
|
|
924
|
-
glow.material.transparent = true;
|
|
925
|
-
glow.material.depthWrite = false;
|
|
926
|
-
glow.material.depthTest = false;
|
|
927
|
-
glow.material.needsUpdate = true;
|
|
928
|
-
}
|
|
833
|
+
if (group.userData) {
|
|
834
|
+
delete group.userData.imageMidLodDecorState;
|
|
929
835
|
}
|
|
930
836
|
|
|
931
|
-
return { edge: null, glow };
|
|
837
|
+
return { edge: null, glow: null };
|
|
932
838
|
}
|
|
933
839
|
|
|
934
840
|
function applyImageCoverUv(bodyMesh, nodeWidth, nodeHeight) {
|
|
@@ -2625,21 +2531,10 @@
|
|
|
2625
2531
|
isSelected,
|
|
2626
2532
|
{
|
|
2627
2533
|
edgeVisible: false,
|
|
2628
|
-
glowVisible:
|
|
2534
|
+
glowVisible: false
|
|
2629
2535
|
}
|
|
2630
2536
|
);
|
|
2631
2537
|
|
|
2632
|
-
// Optional WebGL glow (disabled by default)
|
|
2633
|
-
if (ENABLE_WEBGL_GLOW && window.MindMapGlowShader) {
|
|
2634
|
-
const glowMesh = window.MindMapGlowShader.createSDFGlowMesh(width, height, isSelected, nodeModel.contentType === 'video' || nodeModel.contentType === 'embed' ? 'text' : 'image');
|
|
2635
|
-
glowMesh.position.set(width / 2, -height / 2, 0.0); // body(1.0)보다 뒤, 그리드(-10)보다 앞
|
|
2636
|
-
glowMesh.renderOrder = baseRenderOrder - 5;
|
|
2637
|
-
const cameraZ = module.camera?.position?.z ?? Infinity;
|
|
2638
|
-
const threshold = 4000;
|
|
2639
|
-
glowMesh.visible = cameraZ < threshold;
|
|
2640
|
-
glObject.add(glowMesh);
|
|
2641
|
-
}
|
|
2642
|
-
|
|
2643
2538
|
// ▼▼▼ [FIX] Add corner resize handles to image nodes ▼▼▼
|
|
2644
2539
|
// Image nodes use only corner hit-handles in WebGL; the visible affordance comes from the selection overlay.
|
|
2645
2540
|
const HANDLE_SIZE = 16;
|
|
@@ -3457,7 +3352,7 @@
|
|
|
3457
3352
|
const baseRenderOrder = entry.glObject.userData?.baseRenderOrder ?? body?.renderOrder ?? 1;
|
|
3458
3353
|
const nodeWidth = entry.model.width || body?.geometry?.parameters?.width || 300;
|
|
3459
3354
|
const nodeHeight = entry.model.height || body?.geometry?.parameters?.height || 300;
|
|
3460
|
-
const showImageLodGlow =
|
|
3355
|
+
const showImageLodGlow = false;
|
|
3461
3356
|
syncImageSelectionGlow(entry.glObject, nodeWidth, nodeHeight, baseRenderOrder, false);
|
|
3462
3357
|
syncImageMidLodDecorations(entry.glObject, nodeWidth, nodeHeight, baseRenderOrder, !!isSelected, {
|
|
3463
3358
|
edgeVisible: false,
|
|
@@ -3517,7 +3412,7 @@
|
|
|
3517
3412
|
}
|
|
3518
3413
|
// ▲▲▲ [Fix] ▲▲▲
|
|
3519
3414
|
|
|
3520
|
-
// ▼▼▼ [Fix] Sync CSS3D selection
|
|
3415
|
+
// ▼▼▼ [Fix] Sync CSS3D selection edge/border with the node's active theme ▼▼▼
|
|
3521
3416
|
const cssElement = entry.cssObject?.element;
|
|
3522
3417
|
if (cssElement) {
|
|
3523
3418
|
const isEditing = !!(module.isEditingNote && module.selectedNodeIdJs === nodeId);
|