@almadar/ui 2.51.0 → 2.53.0
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/dist/avl/index.cjs +325 -93
- package/dist/avl/index.d.cts +36 -6
- package/dist/avl/index.js +325 -93
- package/dist/components/index.cjs +114 -21
- package/dist/components/index.js +114 -21
- package/dist/components/molecules/markdown/CodeBlock.d.ts +9 -4
- package/dist/components/organisms/avl/AvlOrbitalsCosmicZoom.d.ts +16 -0
- package/dist/components/organisms/avl/FlowCanvas.d.ts +20 -6
- package/dist/providers/index.cjs +114 -21
- package/dist/providers/index.js +114 -21
- package/dist/runtime/index.cjs +114 -21
- package/dist/runtime/index.js +114 -21
- package/package.json +1 -1
package/dist/avl/index.js
CHANGED
|
@@ -19342,13 +19342,13 @@ var MapViewImpl = lazy(async () => {
|
|
|
19342
19342
|
shadowSize: [41, 41]
|
|
19343
19343
|
});
|
|
19344
19344
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
19345
|
-
const { useEffect:
|
|
19345
|
+
const { useEffect: useEffect88, useRef: useRef88, useCallback: useCallback124, useState: useState124 } = React125__default;
|
|
19346
19346
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
19347
19347
|
const { useEventBus: useEventBus3 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
19348
19348
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
19349
19349
|
const map = useMap();
|
|
19350
|
-
const prevRef =
|
|
19351
|
-
|
|
19350
|
+
const prevRef = useRef88({ centerLat, centerLng, zoom });
|
|
19351
|
+
useEffect88(() => {
|
|
19352
19352
|
const prev = prevRef.current;
|
|
19353
19353
|
if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
|
|
19354
19354
|
map.setView([centerLat, centerLng], zoom);
|
|
@@ -19359,7 +19359,7 @@ var MapViewImpl = lazy(async () => {
|
|
|
19359
19359
|
}
|
|
19360
19360
|
function MapClickHandler({ onMapClick }) {
|
|
19361
19361
|
const map = useMap();
|
|
19362
|
-
|
|
19362
|
+
useEffect88(() => {
|
|
19363
19363
|
if (!onMapClick) return;
|
|
19364
19364
|
const handler = (e) => {
|
|
19365
19365
|
onMapClick(e.latlng.lat, e.latlng.lng);
|
|
@@ -22086,6 +22086,26 @@ var CodeBlock = React125__default.memo(
|
|
|
22086
22086
|
const codeRef = useRef(null);
|
|
22087
22087
|
const savedScrollLeftRef = useRef(0);
|
|
22088
22088
|
const [copied, setCopied] = useState(false);
|
|
22089
|
+
const [editableValue, setEditableValue] = useState(code);
|
|
22090
|
+
const [editableTextareaKey, setEditableTextareaKey] = useState(0);
|
|
22091
|
+
const lastPropCodeRef = useRef(code);
|
|
22092
|
+
const editableTextareaRef = useRef(null);
|
|
22093
|
+
const editableOverlayRef = useRef(null);
|
|
22094
|
+
useEffect(() => {
|
|
22095
|
+
if (code !== lastPropCodeRef.current) {
|
|
22096
|
+
lastPropCodeRef.current = code;
|
|
22097
|
+
setEditableValue(code);
|
|
22098
|
+
setEditableTextareaKey((k) => k + 1);
|
|
22099
|
+
}
|
|
22100
|
+
}, [code]);
|
|
22101
|
+
const handleEditableScroll = useCallback(() => {
|
|
22102
|
+
const ta = editableTextareaRef.current;
|
|
22103
|
+
const ov = editableOverlayRef.current;
|
|
22104
|
+
if (ta && ov) {
|
|
22105
|
+
ov.scrollTop = ta.scrollTop;
|
|
22106
|
+
ov.scrollLeft = ta.scrollLeft;
|
|
22107
|
+
}
|
|
22108
|
+
}, []);
|
|
22089
22109
|
const isFoldable = foldableProp ?? (language === "orb" || language === "json");
|
|
22090
22110
|
const [collapsed, setCollapsed] = useState(() => /* @__PURE__ */ new Set());
|
|
22091
22111
|
const foldRegions = useMemo(
|
|
@@ -22246,33 +22266,106 @@ var CodeBlock = React125__default.memo(
|
|
|
22246
22266
|
}
|
|
22247
22267
|
),
|
|
22248
22268
|
editable ? (
|
|
22249
|
-
/* GAP-
|
|
22250
|
-
|
|
22251
|
-
|
|
22252
|
-
|
|
22253
|
-
|
|
22254
|
-
|
|
22255
|
-
|
|
22256
|
-
|
|
22269
|
+
/* GAP-77: editable mode = transparent Textarea on top + Prism-highlighted
|
|
22270
|
+
overlay underneath. The textarea is uncontrolled (defaultValue + key)
|
|
22271
|
+
to avoid cursor jumps; the overlay reads `editableValue` which is
|
|
22272
|
+
mirrored from the textarea via onChange. Both elements share IDENTICAL
|
|
22273
|
+
font / line-height / padding so the highlighted text aligns with the
|
|
22274
|
+
textarea's invisible glyphs.
|
|
22275
|
+
|
|
22276
|
+
Scroll sync: the overlay has `pointer-events: none` and the textarea
|
|
22277
|
+
scrolls; `handleEditableScroll` keeps the overlay's scroll matched. */
|
|
22278
|
+
/* @__PURE__ */ jsxs(
|
|
22279
|
+
Box,
|
|
22257
22280
|
{
|
|
22258
|
-
defaultValue: code,
|
|
22259
|
-
onChange: (e) => onChange?.(e.target.value),
|
|
22260
|
-
spellCheck: false,
|
|
22261
22281
|
style: {
|
|
22262
|
-
|
|
22263
|
-
fontSize: "13px",
|
|
22264
|
-
lineHeight: "1.5",
|
|
22282
|
+
position: "relative",
|
|
22265
22283
|
backgroundColor: "#1e1e1e",
|
|
22266
|
-
color: "#e6e6e6",
|
|
22267
22284
|
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
22268
|
-
border: "none",
|
|
22269
|
-
padding: "1rem",
|
|
22270
|
-
resize: "none",
|
|
22271
22285
|
minHeight: "160px",
|
|
22272
22286
|
maxHeight,
|
|
22273
|
-
|
|
22274
|
-
|
|
22275
|
-
|
|
22287
|
+
overflow: "hidden"
|
|
22288
|
+
},
|
|
22289
|
+
children: [
|
|
22290
|
+
/* @__PURE__ */ jsx(
|
|
22291
|
+
"div",
|
|
22292
|
+
{
|
|
22293
|
+
ref: editableOverlayRef,
|
|
22294
|
+
"aria-hidden": true,
|
|
22295
|
+
style: {
|
|
22296
|
+
position: "absolute",
|
|
22297
|
+
inset: 0,
|
|
22298
|
+
overflow: "hidden",
|
|
22299
|
+
pointerEvents: "none",
|
|
22300
|
+
maxHeight
|
|
22301
|
+
},
|
|
22302
|
+
children: /* @__PURE__ */ jsx(
|
|
22303
|
+
SyntaxHighlighter,
|
|
22304
|
+
{
|
|
22305
|
+
PreTag: "div",
|
|
22306
|
+
language,
|
|
22307
|
+
style: activeStyle,
|
|
22308
|
+
customStyle: {
|
|
22309
|
+
backgroundColor: "transparent",
|
|
22310
|
+
borderRadius: 0,
|
|
22311
|
+
padding: "1rem",
|
|
22312
|
+
margin: 0,
|
|
22313
|
+
whiteSpace: "pre",
|
|
22314
|
+
minWidth: "100%",
|
|
22315
|
+
minHeight: "160px",
|
|
22316
|
+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace',
|
|
22317
|
+
fontSize: "13px",
|
|
22318
|
+
lineHeight: "1.5"
|
|
22319
|
+
},
|
|
22320
|
+
codeTagProps: {
|
|
22321
|
+
style: {
|
|
22322
|
+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace',
|
|
22323
|
+
fontSize: "13px",
|
|
22324
|
+
lineHeight: "1.5"
|
|
22325
|
+
}
|
|
22326
|
+
},
|
|
22327
|
+
children: editableValue || " "
|
|
22328
|
+
}
|
|
22329
|
+
)
|
|
22330
|
+
}
|
|
22331
|
+
),
|
|
22332
|
+
/* @__PURE__ */ jsx(
|
|
22333
|
+
Textarea,
|
|
22334
|
+
{
|
|
22335
|
+
ref: editableTextareaRef,
|
|
22336
|
+
defaultValue: code,
|
|
22337
|
+
onChange: (e) => {
|
|
22338
|
+
setEditableValue(e.target.value);
|
|
22339
|
+
onChange?.(e.target.value);
|
|
22340
|
+
},
|
|
22341
|
+
onScroll: handleEditableScroll,
|
|
22342
|
+
spellCheck: false,
|
|
22343
|
+
style: {
|
|
22344
|
+
position: "relative",
|
|
22345
|
+
zIndex: 1,
|
|
22346
|
+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace',
|
|
22347
|
+
fontSize: "13px",
|
|
22348
|
+
lineHeight: "1.5",
|
|
22349
|
+
backgroundColor: "transparent",
|
|
22350
|
+
color: "transparent",
|
|
22351
|
+
caretColor: "#e6e6e6",
|
|
22352
|
+
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
22353
|
+
border: "none",
|
|
22354
|
+
padding: "1rem",
|
|
22355
|
+
resize: "none",
|
|
22356
|
+
minHeight: "160px",
|
|
22357
|
+
maxHeight,
|
|
22358
|
+
width: "100%",
|
|
22359
|
+
height: "100%",
|
|
22360
|
+
outline: "none",
|
|
22361
|
+
whiteSpace: "pre",
|
|
22362
|
+
overflowWrap: "normal",
|
|
22363
|
+
overflow: "auto"
|
|
22364
|
+
}
|
|
22365
|
+
},
|
|
22366
|
+
editableTextareaKey
|
|
22367
|
+
)
|
|
22368
|
+
]
|
|
22276
22369
|
}
|
|
22277
22370
|
)
|
|
22278
22371
|
) : /* @__PURE__ */ jsx(
|
|
@@ -47729,12 +47822,18 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
47729
47822
|
el = el.parentElement;
|
|
47730
47823
|
if (!el || el === contentRef.current) break;
|
|
47731
47824
|
}
|
|
47825
|
+
const containerNode = {
|
|
47826
|
+
orbitalName: data.orbitalName,
|
|
47827
|
+
traitName: data.traitName,
|
|
47828
|
+
transitionEvent: data.transitionEvent
|
|
47829
|
+
};
|
|
47732
47830
|
const containerPath = el?.dataset?.patternPath;
|
|
47733
47831
|
if (!containerPath) {
|
|
47734
|
-
eventBus.emit("UI:
|
|
47832
|
+
eventBus.emit("UI:PATTERN_DROP", {
|
|
47735
47833
|
parentPath: "root",
|
|
47736
47834
|
patternType: payload.data.type,
|
|
47737
|
-
index: 0
|
|
47835
|
+
index: 0,
|
|
47836
|
+
containerNode
|
|
47738
47837
|
});
|
|
47739
47838
|
return;
|
|
47740
47839
|
}
|
|
@@ -47751,12 +47850,13 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
47751
47850
|
break;
|
|
47752
47851
|
}
|
|
47753
47852
|
}
|
|
47754
|
-
eventBus.emit("UI:
|
|
47853
|
+
eventBus.emit("UI:PATTERN_DROP", {
|
|
47755
47854
|
parentPath: containerPath,
|
|
47756
47855
|
patternType: payload.data.type,
|
|
47757
|
-
index: insertIndex
|
|
47856
|
+
index: insertIndex,
|
|
47857
|
+
containerNode
|
|
47758
47858
|
});
|
|
47759
|
-
}, [eventBus]);
|
|
47859
|
+
}, [eventBus, data.orbitalName, data.traitName, data.transitionEvent]);
|
|
47760
47860
|
const handlePreviewDragOver = useCallback((e) => {
|
|
47761
47861
|
if (!e.dataTransfer.types.includes(ALMADAR_DND_MIME)) return;
|
|
47762
47862
|
e.preventDefault();
|
|
@@ -48396,7 +48496,7 @@ function OrbInspector({ node, schema, editable = false, onSchemaChange, onClose
|
|
|
48396
48496
|
onBlur: (e) => handlePropChange(propName, e.target.value)
|
|
48397
48497
|
}
|
|
48398
48498
|
) : /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-[11px] text-muted-foreground", children: [
|
|
48399
|
-
displayValue ||
|
|
48499
|
+
displayValue || "\u2014",
|
|
48400
48500
|
ps.required ? " *" : ""
|
|
48401
48501
|
] })
|
|
48402
48502
|
] }, propName);
|
|
@@ -48667,6 +48767,7 @@ function FlowCanvasInner({
|
|
|
48667
48767
|
onNodeClick,
|
|
48668
48768
|
onLevelChange,
|
|
48669
48769
|
onOrbitalDoubleClick,
|
|
48770
|
+
cosmicEntryLevel = "expanded",
|
|
48670
48771
|
initialOrbital,
|
|
48671
48772
|
initialLevel,
|
|
48672
48773
|
initialSelectedNode,
|
|
@@ -48740,19 +48841,24 @@ function FlowCanvasInner({
|
|
|
48740
48841
|
}
|
|
48741
48842
|
if (level === "overview") {
|
|
48742
48843
|
const d = node.data;
|
|
48743
|
-
|
|
48844
|
+
const orbitalName = d.orbitalName ?? node.id;
|
|
48845
|
+
if (onOrbitalDoubleClick && (cosmicEntryLevel === "overview" || cosmicEntryLevel === "both")) {
|
|
48846
|
+
onOrbitalDoubleClick(orbitalName);
|
|
48847
|
+
return;
|
|
48848
|
+
}
|
|
48849
|
+
setExpandedOrbital(orbitalName);
|
|
48744
48850
|
setLevel("expanded");
|
|
48745
|
-
onLevelChange?.("expanded",
|
|
48851
|
+
onLevelChange?.("expanded", orbitalName);
|
|
48746
48852
|
return;
|
|
48747
48853
|
}
|
|
48748
48854
|
if (level === "expanded") {
|
|
48749
48855
|
const d = node.data;
|
|
48750
48856
|
const orbitalName = d.orbitalName ?? node.id;
|
|
48751
|
-
if (orbitalName && onOrbitalDoubleClick) {
|
|
48857
|
+
if (orbitalName && onOrbitalDoubleClick && (cosmicEntryLevel === "expanded" || cosmicEntryLevel === "both")) {
|
|
48752
48858
|
onOrbitalDoubleClick(orbitalName);
|
|
48753
48859
|
}
|
|
48754
48860
|
}
|
|
48755
|
-
}, [level, onLevelChange, onOrbitalDoubleClick, atBehaviorLevel, composeLevel]);
|
|
48861
|
+
}, [level, onLevelChange, onOrbitalDoubleClick, cosmicEntryLevel, atBehaviorLevel, composeLevel]);
|
|
48756
48862
|
const handleNodeClick = useCallback((_, node) => {
|
|
48757
48863
|
const nodeData = node.data;
|
|
48758
48864
|
if (level === "expanded") {
|
|
@@ -49288,7 +49394,10 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
49288
49394
|
animated = true,
|
|
49289
49395
|
width = "100%",
|
|
49290
49396
|
height = 450,
|
|
49291
|
-
highlightedOrbital
|
|
49397
|
+
highlightedOrbital,
|
|
49398
|
+
onOrbitalSelect,
|
|
49399
|
+
minZoom = 0.4,
|
|
49400
|
+
maxZoom = 3
|
|
49292
49401
|
}) => {
|
|
49293
49402
|
const parsedSchema = useMemo(() => {
|
|
49294
49403
|
if (typeof schemaProp === "string") return JSON.parse(schemaProp);
|
|
@@ -49319,10 +49428,83 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
49319
49428
|
);
|
|
49320
49429
|
const [selected, setSelected] = useState(null);
|
|
49321
49430
|
const handleSelect = useCallback(
|
|
49322
|
-
(name) =>
|
|
49323
|
-
|
|
49431
|
+
(name) => {
|
|
49432
|
+
setSelected((prev) => prev === name ? null : name);
|
|
49433
|
+
onOrbitalSelect?.(name);
|
|
49434
|
+
},
|
|
49435
|
+
[onOrbitalSelect]
|
|
49324
49436
|
);
|
|
49325
49437
|
const selectedView = orbitalViews.find((o) => o.name === selected);
|
|
49438
|
+
const [zoom, setZoom] = useState(1);
|
|
49439
|
+
const [pan, setPan] = useState({ x: 0, y: 0 });
|
|
49440
|
+
const dragStateRef = useRef(null);
|
|
49441
|
+
const transformWrapperRef = useRef(null);
|
|
49442
|
+
const clampZoom = useCallback(
|
|
49443
|
+
(z) => Math.max(minZoom, Math.min(maxZoom, z)),
|
|
49444
|
+
[minZoom, maxZoom]
|
|
49445
|
+
);
|
|
49446
|
+
const handlePointerDown = useCallback((e) => {
|
|
49447
|
+
if (e.target.closest("[data-orbital-tile]")) return;
|
|
49448
|
+
dragStateRef.current = {
|
|
49449
|
+
startX: e.clientX,
|
|
49450
|
+
startY: e.clientY,
|
|
49451
|
+
panX: pan.x,
|
|
49452
|
+
panY: pan.y
|
|
49453
|
+
};
|
|
49454
|
+
e.target.setPointerCapture(e.pointerId);
|
|
49455
|
+
}, [pan]);
|
|
49456
|
+
const handlePointerMove = useCallback((e) => {
|
|
49457
|
+
const drag = dragStateRef.current;
|
|
49458
|
+
if (!drag) return;
|
|
49459
|
+
setPan({
|
|
49460
|
+
x: drag.panX + (e.clientX - drag.startX),
|
|
49461
|
+
y: drag.panY + (e.clientY - drag.startY)
|
|
49462
|
+
});
|
|
49463
|
+
}, []);
|
|
49464
|
+
const handlePointerUp = useCallback((e) => {
|
|
49465
|
+
if (!dragStateRef.current) return;
|
|
49466
|
+
dragStateRef.current = null;
|
|
49467
|
+
try {
|
|
49468
|
+
e.target.releasePointerCapture(e.pointerId);
|
|
49469
|
+
} catch {
|
|
49470
|
+
}
|
|
49471
|
+
}, []);
|
|
49472
|
+
const panRef = useRef(pan);
|
|
49473
|
+
const zoomRef = useRef(zoom);
|
|
49474
|
+
useEffect(() => {
|
|
49475
|
+
panRef.current = pan;
|
|
49476
|
+
}, [pan]);
|
|
49477
|
+
useEffect(() => {
|
|
49478
|
+
zoomRef.current = zoom;
|
|
49479
|
+
}, [zoom]);
|
|
49480
|
+
useEffect(() => {
|
|
49481
|
+
const wrapper = transformWrapperRef.current;
|
|
49482
|
+
if (!wrapper) return;
|
|
49483
|
+
const wheelListener = (e) => {
|
|
49484
|
+
e.preventDefault();
|
|
49485
|
+
const rect = wrapper.getBoundingClientRect();
|
|
49486
|
+
const cursorX = e.clientX - rect.left;
|
|
49487
|
+
const cursorY = e.clientY - rect.top;
|
|
49488
|
+
const currentZoom = zoomRef.current;
|
|
49489
|
+
const currentPan = panRef.current;
|
|
49490
|
+
const worldX = (cursorX - currentPan.x) / currentZoom;
|
|
49491
|
+
const worldY = (cursorY - currentPan.y) / currentZoom;
|
|
49492
|
+
const delta = e.deltaY > 0 ? -0.1 : 0.1;
|
|
49493
|
+
const nextZoom = clampZoom(currentZoom * (1 + delta));
|
|
49494
|
+
const nextPanX = cursorX - worldX * nextZoom;
|
|
49495
|
+
const nextPanY = cursorY - worldY * nextZoom;
|
|
49496
|
+
setZoom(nextZoom);
|
|
49497
|
+
setPan({ x: nextPanX, y: nextPanY });
|
|
49498
|
+
};
|
|
49499
|
+
wrapper.addEventListener("wheel", wheelListener, { passive: false });
|
|
49500
|
+
return () => wrapper.removeEventListener("wheel", wheelListener);
|
|
49501
|
+
}, [clampZoom]);
|
|
49502
|
+
const zoomIn = useCallback(() => setZoom((z) => clampZoom(z * 1.2)), [clampZoom]);
|
|
49503
|
+
const zoomOut = useCallback(() => setZoom((z) => clampZoom(z / 1.2)), [clampZoom]);
|
|
49504
|
+
const resetZoom = useCallback(() => {
|
|
49505
|
+
setZoom(1);
|
|
49506
|
+
setPan({ x: 0, y: 0 });
|
|
49507
|
+
}, []);
|
|
49326
49508
|
return /* @__PURE__ */ jsxs(
|
|
49327
49509
|
Box,
|
|
49328
49510
|
{
|
|
@@ -49332,65 +49514,115 @@ var AvlOrbitalsCosmicZoom = ({
|
|
|
49332
49514
|
style: { width, height: containerH },
|
|
49333
49515
|
children: [
|
|
49334
49516
|
/* @__PURE__ */ jsx(
|
|
49335
|
-
|
|
49517
|
+
"div",
|
|
49336
49518
|
{
|
|
49337
|
-
|
|
49338
|
-
|
|
49339
|
-
|
|
49340
|
-
|
|
49341
|
-
|
|
49342
|
-
|
|
49343
|
-
}
|
|
49344
|
-
),
|
|
49345
|
-
orbitalViews.map((view) => {
|
|
49346
|
-
const isHighlighted = view.name === highlightedOrbital;
|
|
49347
|
-
return /* @__PURE__ */ jsx(
|
|
49348
|
-
Box,
|
|
49349
|
-
{
|
|
49350
|
-
role: "button",
|
|
49351
|
-
tabIndex: 0,
|
|
49352
|
-
onClick: () => handleSelect(view.name),
|
|
49353
|
-
onKeyDown: (e) => {
|
|
49354
|
-
if (e.key === "Enter" || e.key === " ") handleSelect(view.name);
|
|
49355
|
-
},
|
|
49356
|
-
"aria-label": `Orbital: ${view.name}${isHighlighted ? " (highlighted)" : ""}`,
|
|
49519
|
+
ref: transformWrapperRef,
|
|
49520
|
+
onPointerDown: handlePointerDown,
|
|
49521
|
+
onPointerMove: handlePointerMove,
|
|
49522
|
+
onPointerUp: handlePointerUp,
|
|
49523
|
+
onPointerCancel: handlePointerUp,
|
|
49524
|
+
style: {
|
|
49357
49525
|
position: "absolute",
|
|
49358
|
-
|
|
49359
|
-
|
|
49360
|
-
|
|
49361
|
-
|
|
49362
|
-
height: UNIT_DISPLAY_H,
|
|
49363
|
-
cursor: "pointer",
|
|
49364
|
-
transition: "transform 0.2s ease, filter 0.2s ease, box-shadow 0.3s ease",
|
|
49365
|
-
transform: selected === view.name ? "scale(1.05)" : "scale(1)",
|
|
49366
|
-
filter: selected && selected !== view.name ? "opacity(0.5)" : "none",
|
|
49367
|
-
// GAP-52: persistent highlight ring (independent from user selection)
|
|
49368
|
-
boxShadow: isHighlighted ? `0 0 0 3px ${color}, 0 0 24px 4px ${color}` : "none",
|
|
49369
|
-
borderRadius: isHighlighted ? "12px" : void 0,
|
|
49370
|
-
zIndex: isHighlighted ? 11 : selected === view.name ? 10 : 1
|
|
49371
|
-
},
|
|
49372
|
-
children: /* @__PURE__ */ jsx(
|
|
49373
|
-
AvlOrbitalUnit,
|
|
49374
|
-
{
|
|
49375
|
-
entityName: view.entityName,
|
|
49376
|
-
fields: view.fieldCount,
|
|
49377
|
-
persistence: view.persistence,
|
|
49378
|
-
traits: view.traits,
|
|
49379
|
-
pages: view.pages,
|
|
49380
|
-
color,
|
|
49381
|
-
animated: animated && (selected === view.name || isHighlighted)
|
|
49382
|
-
}
|
|
49383
|
-
)
|
|
49526
|
+
inset: 0,
|
|
49527
|
+
overflow: "hidden",
|
|
49528
|
+
cursor: dragStateRef.current ? "grabbing" : "grab",
|
|
49529
|
+
touchAction: "none"
|
|
49384
49530
|
},
|
|
49385
|
-
|
|
49386
|
-
|
|
49387
|
-
|
|
49388
|
-
|
|
49389
|
-
|
|
49531
|
+
children: /* @__PURE__ */ jsxs(
|
|
49532
|
+
"div",
|
|
49533
|
+
{
|
|
49534
|
+
style: {
|
|
49535
|
+
position: "absolute",
|
|
49536
|
+
inset: 0,
|
|
49537
|
+
transform: `translate(${pan.x}px, ${pan.y}px) scale(${zoom})`,
|
|
49538
|
+
transformOrigin: "0 0"
|
|
49539
|
+
},
|
|
49540
|
+
children: [
|
|
49541
|
+
/* @__PURE__ */ jsx(
|
|
49542
|
+
EventWireOverlay,
|
|
49543
|
+
{
|
|
49544
|
+
orbitalViews,
|
|
49545
|
+
crossLinks,
|
|
49546
|
+
color,
|
|
49547
|
+
animated,
|
|
49548
|
+
containerW,
|
|
49549
|
+
containerH
|
|
49550
|
+
}
|
|
49551
|
+
),
|
|
49552
|
+
orbitalViews.map((view) => {
|
|
49553
|
+
const isHighlighted = view.name === highlightedOrbital;
|
|
49554
|
+
return /* @__PURE__ */ jsx(
|
|
49555
|
+
Box,
|
|
49556
|
+
{
|
|
49557
|
+
role: "button",
|
|
49558
|
+
tabIndex: 0,
|
|
49559
|
+
"data-orbital-tile": "true",
|
|
49560
|
+
onClick: () => handleSelect(view.name),
|
|
49561
|
+
onKeyDown: (e) => {
|
|
49562
|
+
if (e.key === "Enter" || e.key === " ") handleSelect(view.name);
|
|
49563
|
+
},
|
|
49564
|
+
"aria-label": `Orbital: ${view.name}${isHighlighted ? " (highlighted)" : ""}`,
|
|
49565
|
+
position: "absolute",
|
|
49566
|
+
style: {
|
|
49567
|
+
left: view.cx - UNIT_DISPLAY_W / 2,
|
|
49568
|
+
top: view.cy - UNIT_DISPLAY_H / 2,
|
|
49569
|
+
width: UNIT_DISPLAY_W,
|
|
49570
|
+
height: UNIT_DISPLAY_H,
|
|
49571
|
+
cursor: "pointer",
|
|
49572
|
+
transition: "transform 0.2s ease, filter 0.2s ease, box-shadow 0.3s ease",
|
|
49573
|
+
transform: selected === view.name ? "scale(1.05)" : "scale(1)",
|
|
49574
|
+
filter: selected && selected !== view.name ? "opacity(0.5)" : "none",
|
|
49575
|
+
// GAP-52: persistent highlight ring (independent from user selection)
|
|
49576
|
+
boxShadow: isHighlighted ? `0 0 0 3px ${color}, 0 0 24px 4px ${color}` : "none",
|
|
49577
|
+
borderRadius: isHighlighted ? "12px" : void 0,
|
|
49578
|
+
zIndex: isHighlighted ? 11 : selected === view.name ? 10 : 1
|
|
49579
|
+
},
|
|
49580
|
+
children: /* @__PURE__ */ jsx(
|
|
49581
|
+
AvlOrbitalUnit,
|
|
49582
|
+
{
|
|
49583
|
+
entityName: view.entityName,
|
|
49584
|
+
fields: view.fieldCount,
|
|
49585
|
+
persistence: view.persistence,
|
|
49586
|
+
traits: view.traits,
|
|
49587
|
+
pages: view.pages,
|
|
49588
|
+
color,
|
|
49589
|
+
animated: animated && (selected === view.name || isHighlighted)
|
|
49590
|
+
}
|
|
49591
|
+
)
|
|
49592
|
+
},
|
|
49593
|
+
view.name
|
|
49594
|
+
);
|
|
49595
|
+
}),
|
|
49596
|
+
selectedView && /* @__PURE__ */ jsx(
|
|
49597
|
+
InfoPanel,
|
|
49598
|
+
{
|
|
49599
|
+
view: selectedView,
|
|
49600
|
+
crossLinks,
|
|
49601
|
+
color
|
|
49602
|
+
}
|
|
49603
|
+
)
|
|
49604
|
+
]
|
|
49605
|
+
}
|
|
49606
|
+
)
|
|
49607
|
+
}
|
|
49608
|
+
),
|
|
49609
|
+
/* @__PURE__ */ jsxs(
|
|
49610
|
+
Box,
|
|
49390
49611
|
{
|
|
49391
|
-
|
|
49392
|
-
|
|
49393
|
-
|
|
49612
|
+
position: "absolute",
|
|
49613
|
+
style: {
|
|
49614
|
+
top: 12,
|
|
49615
|
+
right: 12,
|
|
49616
|
+
display: "flex",
|
|
49617
|
+
flexDirection: "column",
|
|
49618
|
+
gap: 4,
|
|
49619
|
+
zIndex: 30
|
|
49620
|
+
},
|
|
49621
|
+
children: [
|
|
49622
|
+
/* @__PURE__ */ jsx(Button, { variant: "secondary", size: "sm", onClick: zoomIn, title: "Zoom in", action: "COSMIC_ZOOM_IN", children: /* @__PURE__ */ jsx(Icon, { name: "plus", size: "sm" }) }),
|
|
49623
|
+
/* @__PURE__ */ jsx(Button, { variant: "secondary", size: "sm", onClick: zoomOut, title: "Zoom out", action: "COSMIC_ZOOM_OUT", children: /* @__PURE__ */ jsx(Icon, { name: "minus", size: "sm" }) }),
|
|
49624
|
+
/* @__PURE__ */ jsx(Button, { variant: "secondary", size: "sm", onClick: resetZoom, title: "Reset", action: "COSMIC_ZOOM_RESET", children: /* @__PURE__ */ jsx(Icon, { name: "maximize", size: "sm" }) })
|
|
49625
|
+
]
|
|
49394
49626
|
}
|
|
49395
49627
|
)
|
|
49396
49628
|
]
|