@almadar/ui 6.22.0 → 6.24.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/{EntityBindingContext-DoK8Xq71.d.cts → EntityBindingContext-CTZw2DbY.d.cts} +14 -1
- package/dist/{EntityBindingContext-DoK8Xq71.d.ts → EntityBindingContext-CTZw2DbY.d.ts} +14 -1
- package/dist/avl/index.cjs +80 -42
- package/dist/avl/index.js +81 -43
- package/dist/providers/index.cjs +7 -6
- package/dist/providers/index.d.cts +1 -1
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.js +7 -6
- package/dist/runtime/index.cjs +90 -52
- package/dist/runtime/index.d.cts +2 -2
- package/dist/runtime/index.d.ts +2 -2
- package/dist/runtime/index.js +90 -52
- package/package.json +1 -1
package/dist/runtime/index.js
CHANGED
|
@@ -7636,7 +7636,7 @@ function recordTransition(trace) {
|
|
|
7636
7636
|
...trace,
|
|
7637
7637
|
id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
|
|
7638
7638
|
};
|
|
7639
|
-
|
|
7639
|
+
log5.debug("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
|
|
7640
7640
|
getState().transitions.push(entry);
|
|
7641
7641
|
if (getState().transitions.length > MAX_TRANSITIONS) {
|
|
7642
7642
|
getState().transitions.shift();
|
|
@@ -7754,7 +7754,7 @@ function getTraitSnapshots() {
|
|
|
7754
7754
|
try {
|
|
7755
7755
|
snapshots.push(getter());
|
|
7756
7756
|
} catch (err) {
|
|
7757
|
-
|
|
7757
|
+
log5.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
|
|
7758
7758
|
}
|
|
7759
7759
|
}
|
|
7760
7760
|
return snapshots;
|
|
@@ -7860,10 +7860,10 @@ function updateAssetStatus(url, status) {
|
|
|
7860
7860
|
window.__orbitalVerification.assetStatus[url] = status;
|
|
7861
7861
|
}
|
|
7862
7862
|
}
|
|
7863
|
-
var
|
|
7863
|
+
var log5, MAX_TRANSITIONS;
|
|
7864
7864
|
var init_verificationRegistry = __esm({
|
|
7865
7865
|
"lib/verificationRegistry.ts"() {
|
|
7866
|
-
|
|
7866
|
+
log5 = createLogger("almadar:bridge");
|
|
7867
7867
|
MAX_TRANSITIONS = 500;
|
|
7868
7868
|
exposeOnWindow();
|
|
7869
7869
|
}
|
|
@@ -16702,7 +16702,7 @@ var init_avl_elk_layout = __esm({
|
|
|
16702
16702
|
elk = new ELK();
|
|
16703
16703
|
}
|
|
16704
16704
|
});
|
|
16705
|
-
var
|
|
16705
|
+
var log6, SWIM_GUTTER, CENTER_W, BehaviorView;
|
|
16706
16706
|
var init_BehaviorView = __esm({
|
|
16707
16707
|
"components/avl/molecules/BehaviorView.tsx"() {
|
|
16708
16708
|
"use client";
|
|
@@ -16711,7 +16711,7 @@ var init_BehaviorView = __esm({
|
|
|
16711
16711
|
init_AvlSwimLane();
|
|
16712
16712
|
init_avl_atom_types();
|
|
16713
16713
|
init_avl_elk_layout();
|
|
16714
|
-
|
|
16714
|
+
log6 = createLogger("almadar:ui:avl:behavior-view");
|
|
16715
16715
|
SWIM_GUTTER = 120;
|
|
16716
16716
|
CENTER_W = 360;
|
|
16717
16717
|
BehaviorView = ({ data }) => {
|
|
@@ -16722,7 +16722,7 @@ var init_BehaviorView = __esm({
|
|
|
16722
16722
|
const dataKey = useMemo(() => JSON.stringify(traitData), [traitData]);
|
|
16723
16723
|
useEffect(() => {
|
|
16724
16724
|
if (!traitData) return;
|
|
16725
|
-
computeTraitLayout(traitData).then(setLayout).catch((err) =>
|
|
16725
|
+
computeTraitLayout(traitData).then(setLayout).catch((err) => log6.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
|
|
16726
16726
|
}, [dataKey]);
|
|
16727
16727
|
if (!traitData) {
|
|
16728
16728
|
return /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.noTraitData") });
|
|
@@ -18642,7 +18642,7 @@ function translateProgram(source, language, lang) {
|
|
|
18642
18642
|
}
|
|
18643
18643
|
return source;
|
|
18644
18644
|
}
|
|
18645
|
-
var dynamicallyLoaded, codeLanguageLoader, orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle,
|
|
18645
|
+
var dynamicallyLoaded, codeLanguageLoader, orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log7, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, HIGHLIGHT_CAPACITY_BYTES, MONO_FONT_FAMILY, VIEWER_LINE_NUMBER_STYLE, CodeBlock;
|
|
18646
18646
|
var init_CodeBlock = __esm({
|
|
18647
18647
|
"components/core/molecules/markdown/CodeBlock.tsx"() {
|
|
18648
18648
|
init_cn();
|
|
@@ -18781,7 +18781,7 @@ var init_CodeBlock = __esm({
|
|
|
18781
18781
|
"lolo-op-async": { color: ORB_COLORS.dark.async }
|
|
18782
18782
|
};
|
|
18783
18783
|
loloStyle = { ...dark, ...loloStyleOverrides };
|
|
18784
|
-
|
|
18784
|
+
log7 = createLogger("almadar:ui:markdown-code");
|
|
18785
18785
|
CODE_LANGUAGES = [
|
|
18786
18786
|
"text",
|
|
18787
18787
|
"json",
|
|
@@ -19420,7 +19420,7 @@ var init_CodeBlock = __esm({
|
|
|
19420
19420
|
eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: true });
|
|
19421
19421
|
setTimeout(() => setCopied(false), 2e3);
|
|
19422
19422
|
} catch (err) {
|
|
19423
|
-
|
|
19423
|
+
log7.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
|
|
19424
19424
|
eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: false });
|
|
19425
19425
|
}
|
|
19426
19426
|
};
|
|
@@ -19870,7 +19870,7 @@ function loadMermaid() {
|
|
|
19870
19870
|
mermaidModule ?? (mermaidModule = import('mermaid').then((m) => m.default));
|
|
19871
19871
|
return mermaidModule;
|
|
19872
19872
|
}
|
|
19873
|
-
var
|
|
19873
|
+
var log8, mermaidModule, MermaidDiagram;
|
|
19874
19874
|
var init_MermaidDiagram = __esm({
|
|
19875
19875
|
"components/core/molecules/markdown/MermaidDiagram.tsx"() {
|
|
19876
19876
|
init_Box();
|
|
@@ -19878,7 +19878,7 @@ var init_MermaidDiagram = __esm({
|
|
|
19878
19878
|
init_CodeBlock();
|
|
19879
19879
|
init_mermaidSource();
|
|
19880
19880
|
init_cn();
|
|
19881
|
-
|
|
19881
|
+
log8 = createLogger("almadar:ui:mermaid-diagram");
|
|
19882
19882
|
mermaidModule = null;
|
|
19883
19883
|
MermaidDiagram = React87__default.memo(
|
|
19884
19884
|
({ code, className }) => {
|
|
@@ -19912,14 +19912,14 @@ var init_MermaidDiagram = __esm({
|
|
|
19912
19912
|
container.innerHTML = svg;
|
|
19913
19913
|
container.dataset.mermaidRepaired = String(index > 0);
|
|
19914
19914
|
setUnrenderable(false);
|
|
19915
|
-
if (index > 0)
|
|
19915
|
+
if (index > 0) log8.debug("mermaid:repaired", { candidate: index });
|
|
19916
19916
|
return;
|
|
19917
19917
|
} catch (err) {
|
|
19918
19918
|
firstError ?? (firstError = err instanceof Error ? err : new Error(String(err)));
|
|
19919
19919
|
}
|
|
19920
19920
|
}
|
|
19921
19921
|
if (!active) return;
|
|
19922
|
-
|
|
19922
|
+
log8.warn("mermaid:unrenderable", { error: firstError?.message ?? "", code });
|
|
19923
19923
|
setUnrenderable(true);
|
|
19924
19924
|
})();
|
|
19925
19925
|
return () => {
|
|
@@ -23290,14 +23290,14 @@ function useSafeEventBus2() {
|
|
|
23290
23290
|
} };
|
|
23291
23291
|
}
|
|
23292
23292
|
}
|
|
23293
|
-
var
|
|
23293
|
+
var log9, lookStyles4, ButtonGroup;
|
|
23294
23294
|
var init_ButtonGroup = __esm({
|
|
23295
23295
|
"components/core/molecules/ButtonGroup.tsx"() {
|
|
23296
23296
|
"use client";
|
|
23297
23297
|
init_cn();
|
|
23298
23298
|
init_atoms();
|
|
23299
23299
|
init_useEventBus();
|
|
23300
|
-
|
|
23300
|
+
log9 = createLogger("almadar:ui:button-group");
|
|
23301
23301
|
lookStyles4 = {
|
|
23302
23302
|
"right-aligned-buttons": "",
|
|
23303
23303
|
"floating-bar": "fixed bottom-section left-1/2 -translate-x-1/2 shadow-elevation-toast bg-card p-card-sm rounded-container",
|
|
@@ -23378,7 +23378,7 @@ var init_ButtonGroup = __esm({
|
|
|
23378
23378
|
{
|
|
23379
23379
|
variant: "ghost",
|
|
23380
23380
|
onClick: () => {
|
|
23381
|
-
|
|
23381
|
+
log9.debug("Filter clicked", { field: filter.field });
|
|
23382
23382
|
},
|
|
23383
23383
|
children: filter.label
|
|
23384
23384
|
},
|
|
@@ -31181,9 +31181,9 @@ function debug(...args) {
|
|
|
31181
31181
|
const [first, ...rest] = args;
|
|
31182
31182
|
const message = typeof first === "string" ? first : "<debug>";
|
|
31183
31183
|
if (rest.length === 0 && typeof first === "string") {
|
|
31184
|
-
|
|
31184
|
+
log10.debug(message);
|
|
31185
31185
|
} else {
|
|
31186
|
-
|
|
31186
|
+
log10.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
|
|
31187
31187
|
}
|
|
31188
31188
|
}
|
|
31189
31189
|
function debugGroup(label) {
|
|
@@ -31211,11 +31211,11 @@ function toLogMetaValue(v) {
|
|
|
31211
31211
|
}
|
|
31212
31212
|
return String(v);
|
|
31213
31213
|
}
|
|
31214
|
-
var NAMESPACE,
|
|
31214
|
+
var NAMESPACE, log10;
|
|
31215
31215
|
var init_debug = __esm({
|
|
31216
31216
|
"lib/debug.ts"() {
|
|
31217
31217
|
NAMESPACE = "almadar:ui:debug";
|
|
31218
|
-
|
|
31218
|
+
log10 = createLogger(NAMESPACE);
|
|
31219
31219
|
createLogger("almadar:ui:debug:input");
|
|
31220
31220
|
createLogger("almadar:ui:debug:collision");
|
|
31221
31221
|
createLogger("almadar:ui:debug:physics");
|
|
@@ -34493,13 +34493,13 @@ var init_MapView = __esm({
|
|
|
34493
34493
|
shadowSize: [41, 41]
|
|
34494
34494
|
});
|
|
34495
34495
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
34496
|
-
const { useEffect:
|
|
34496
|
+
const { useEffect: useEffect69, useRef: useRef70, useCallback: useCallback97, useState: useState103 } = React87__default;
|
|
34497
34497
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
34498
34498
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
34499
34499
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
34500
34500
|
const map = useMap();
|
|
34501
|
-
const prevRef =
|
|
34502
|
-
|
|
34501
|
+
const prevRef = useRef70({ centerLat, centerLng, zoom });
|
|
34502
|
+
useEffect69(() => {
|
|
34503
34503
|
const prev = prevRef.current;
|
|
34504
34504
|
if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
|
|
34505
34505
|
map.setView([centerLat, centerLng], zoom);
|
|
@@ -34510,7 +34510,7 @@ var init_MapView = __esm({
|
|
|
34510
34510
|
}
|
|
34511
34511
|
function MapClickHandler({ onMapClick }) {
|
|
34512
34512
|
const map = useMap();
|
|
34513
|
-
|
|
34513
|
+
useEffect69(() => {
|
|
34514
34514
|
if (!onMapClick) return;
|
|
34515
34515
|
const handler = (e) => {
|
|
34516
34516
|
onMapClick(e.latlng.lat, e.latlng.lng);
|
|
@@ -34538,8 +34538,8 @@ var init_MapView = __esm({
|
|
|
34538
34538
|
showAttribution = true
|
|
34539
34539
|
}) {
|
|
34540
34540
|
const eventBus = useEventBus2();
|
|
34541
|
-
const [clickedPosition, setClickedPosition] =
|
|
34542
|
-
const handleMapClick =
|
|
34541
|
+
const [clickedPosition, setClickedPosition] = useState103(null);
|
|
34542
|
+
const handleMapClick = useCallback97((lat, lng) => {
|
|
34543
34543
|
if (showClickedPin) {
|
|
34544
34544
|
setClickedPosition({ lat, lng });
|
|
34545
34545
|
}
|
|
@@ -34548,7 +34548,7 @@ var init_MapView = __esm({
|
|
|
34548
34548
|
eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
|
|
34549
34549
|
}
|
|
34550
34550
|
}, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
|
|
34551
|
-
const handleMarkerClick =
|
|
34551
|
+
const handleMarkerClick = useCallback97((marker) => {
|
|
34552
34552
|
onMarkerClick?.(marker);
|
|
34553
34553
|
if (markerClickEvent) {
|
|
34554
34554
|
eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
|
|
@@ -49135,7 +49135,7 @@ function getAllEvents(traits2) {
|
|
|
49135
49135
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
49136
49136
|
const eventBus = useEventBus();
|
|
49137
49137
|
const { t } = useTranslate();
|
|
49138
|
-
const [
|
|
49138
|
+
const [log12, setLog] = React87.useState([]);
|
|
49139
49139
|
const prevStatesRef = React87.useRef(/* @__PURE__ */ new Map());
|
|
49140
49140
|
React87.useEffect(() => {
|
|
49141
49141
|
for (const trait of traits2) {
|
|
@@ -49199,9 +49199,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
49199
49199
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.otherEvents") }),
|
|
49200
49200
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
49201
49201
|
] }),
|
|
49202
|
-
|
|
49202
|
+
log12.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
49203
49203
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.recentTransitions") }),
|
|
49204
|
-
/* @__PURE__ */ jsx(Stack, { gap: "xs", children:
|
|
49204
|
+
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: log12.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
49205
49205
|
/* @__PURE__ */ jsx("span", { className: "text-primary", children: entry.traitName }),
|
|
49206
49206
|
" ",
|
|
49207
49207
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: entry.from }),
|
|
@@ -52950,7 +52950,25 @@ var init_UISlotRenderer = __esm({
|
|
|
52950
52950
|
|
|
52951
52951
|
// hooks/index.ts
|
|
52952
52952
|
init_useEventBus();
|
|
52953
|
-
|
|
52953
|
+
createLogger("almadar:ui:ui-slots");
|
|
52954
|
+
var ALL_SLOTS = UI_SLOTS.filter(
|
|
52955
|
+
(slot) => !slot.includes(".") && slot !== "hud" && slot !== "screen"
|
|
52956
|
+
);
|
|
52957
|
+
ALL_SLOTS.reduce(
|
|
52958
|
+
(acc, slot) => {
|
|
52959
|
+
acc[slot] = null;
|
|
52960
|
+
return acc;
|
|
52961
|
+
},
|
|
52962
|
+
{}
|
|
52963
|
+
);
|
|
52964
|
+
ALL_SLOTS.reduce(
|
|
52965
|
+
(acc, slot) => {
|
|
52966
|
+
acc[slot] = {};
|
|
52967
|
+
return acc;
|
|
52968
|
+
},
|
|
52969
|
+
{}
|
|
52970
|
+
);
|
|
52971
|
+
var log3 = createLogger("almadar:ui:shared-entity-store");
|
|
52954
52972
|
var EMPTY_ENTITY_STATE = {};
|
|
52955
52973
|
function createSharedEntityStore() {
|
|
52956
52974
|
const states = /* @__PURE__ */ new Map();
|
|
@@ -52980,7 +52998,7 @@ function createSharedEntityStore() {
|
|
|
52980
52998
|
try {
|
|
52981
52999
|
callback();
|
|
52982
53000
|
} catch (error) {
|
|
52983
|
-
|
|
53001
|
+
log3.error("Shared entity subscriber error", {
|
|
52984
53002
|
entityId,
|
|
52985
53003
|
error: error instanceof Error ? error : String(error)
|
|
52986
53004
|
});
|
|
@@ -53011,7 +53029,7 @@ function runTickFrame(entityId, orderedWriters, store) {
|
|
|
53011
53029
|
store.commit(entityId, scratch);
|
|
53012
53030
|
return scratch;
|
|
53013
53031
|
}
|
|
53014
|
-
var
|
|
53032
|
+
var log4 = createLogger("almadar:ui:effects:client-handlers");
|
|
53015
53033
|
function createClientEffectHandlers(options) {
|
|
53016
53034
|
const { eventBus, slotSetter, navigate, navigateBack, callService, liveEntity, persistDelegated, callServiceDelegated } = options;
|
|
53017
53035
|
return {
|
|
@@ -53020,7 +53038,7 @@ function createClientEffectHandlers(options) {
|
|
|
53020
53038
|
eventBus.emit(prefixedEvent, payload, source);
|
|
53021
53039
|
},
|
|
53022
53040
|
persist: async () => {
|
|
53023
|
-
|
|
53041
|
+
log4.debug("persist is server-side only, ignored on client");
|
|
53024
53042
|
},
|
|
53025
53043
|
// Bridge mode: the server runs every persist and the response
|
|
53026
53044
|
// carries its outcome — tell the executor so the placeholder above is
|
|
@@ -53030,7 +53048,7 @@ function createClientEffectHandlers(options) {
|
|
|
53030
53048
|
// @almadar/runtime EffectHandlers.set types value:unknown — should be FieldValue (upstream fix queued)
|
|
53031
53049
|
set: ((_entityId, field, value) => {
|
|
53032
53050
|
if (!liveEntity) {
|
|
53033
|
-
|
|
53051
|
+
log4.warn("set is server-side only, ignored on client (no live entity)");
|
|
53034
53052
|
return;
|
|
53035
53053
|
}
|
|
53036
53054
|
liveEntity[field] = value;
|
|
@@ -53066,10 +53084,10 @@ function createClientEffectHandlers(options) {
|
|
|
53066
53084
|
window.location.href = path;
|
|
53067
53085
|
return;
|
|
53068
53086
|
}
|
|
53069
|
-
|
|
53087
|
+
log4.warn("No navigate handler, ignoring", { path });
|
|
53070
53088
|
}),
|
|
53071
53089
|
navigateBack: navigateBack ?? (() => {
|
|
53072
|
-
|
|
53090
|
+
log4.warn("No navigate-back handler, ignoring");
|
|
53073
53091
|
})
|
|
53074
53092
|
};
|
|
53075
53093
|
}
|
|
@@ -53323,6 +53341,13 @@ function effectsCallOp(effects, ops) {
|
|
|
53323
53341
|
}
|
|
53324
53342
|
return false;
|
|
53325
53343
|
}
|
|
53344
|
+
function diffDroppedTraitNames(prev, next) {
|
|
53345
|
+
const dropped = [];
|
|
53346
|
+
for (const name of prev) {
|
|
53347
|
+
if (!next.has(name)) dropped.push(name);
|
|
53348
|
+
}
|
|
53349
|
+
return dropped;
|
|
53350
|
+
}
|
|
53326
53351
|
function classifySharedTick(tick) {
|
|
53327
53352
|
const writes = effectsCallOp(tick.effects, SHARED_ENTITY_WRITE_OPS);
|
|
53328
53353
|
const renders = effectsCallOp(tick.effects, SHARED_ENTITY_RENDER_OPS);
|
|
@@ -53525,6 +53550,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53525
53550
|
const uiSlotsRef = useRef(uiSlots);
|
|
53526
53551
|
const embeddedTraitsRef = useRef(options?.embeddedTraits);
|
|
53527
53552
|
const optionsRef = useRef(options);
|
|
53553
|
+
const prevActiveTraitNamesRef = useRef(/* @__PURE__ */ new Set());
|
|
53528
53554
|
useEffect(() => {
|
|
53529
53555
|
traitBindingsRef.current = traitBindings;
|
|
53530
53556
|
}, [traitBindings]);
|
|
@@ -53653,6 +53679,18 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53653
53679
|
};
|
|
53654
53680
|
}, [traitBindings]);
|
|
53655
53681
|
useEffect(() => {
|
|
53682
|
+
const nextActiveTraitNames = new Set(
|
|
53683
|
+
traitBindings.map((b) => b.trait.name).filter((n) => !!n)
|
|
53684
|
+
);
|
|
53685
|
+
const dropped = diffDroppedTraitNames(prevActiveTraitNamesRef.current, nextActiveTraitNames);
|
|
53686
|
+
if (dropped.length > 0) {
|
|
53687
|
+
for (const traitName of dropped) {
|
|
53688
|
+
for (const slot of ALL_SLOTS) {
|
|
53689
|
+
uiSlotsRef.current.clearBySource(slot, traitName);
|
|
53690
|
+
}
|
|
53691
|
+
}
|
|
53692
|
+
}
|
|
53693
|
+
prevActiveTraitNamesRef.current = nextActiveTraitNames;
|
|
53656
53694
|
const newManager = managerRef.current;
|
|
53657
53695
|
newManager.resetAll();
|
|
53658
53696
|
setTraitStates(newManager.getAllStates());
|
|
@@ -53700,7 +53738,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53700
53738
|
};
|
|
53701
53739
|
}, [traitBindings]);
|
|
53702
53740
|
const executeTransitionEffects = useCallback(async (params) => {
|
|
53703
|
-
const { binding, previousState, newState, payload, flushEvent, syncOnly, log:
|
|
53741
|
+
const { binding, previousState, newState, payload, flushEvent, syncOnly, log: log12, callsitePayload } = params;
|
|
53704
53742
|
const traitName = binding.trait.name;
|
|
53705
53743
|
const linkedEntity = binding.linkedEntity || "";
|
|
53706
53744
|
const entityId = payload?.entityId;
|
|
@@ -53837,7 +53875,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53837
53875
|
if (sharedKey !== void 0) {
|
|
53838
53876
|
sharedWrites.push({ field, value });
|
|
53839
53877
|
}
|
|
53840
|
-
|
|
53878
|
+
log12.debug("set:write", {
|
|
53841
53879
|
traitName,
|
|
53842
53880
|
field,
|
|
53843
53881
|
value: JSON.stringify(value),
|
|
@@ -53909,7 +53947,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53909
53947
|
mergeEntityFrame(sharedEntityStore.getSnapshot(sharedKey), sharedWrites)
|
|
53910
53948
|
);
|
|
53911
53949
|
}
|
|
53912
|
-
|
|
53950
|
+
log12.debug("effects:executed", () => ({
|
|
53913
53951
|
traitName,
|
|
53914
53952
|
transition: `${previousState}->${newState}`,
|
|
53915
53953
|
event: flushEvent,
|
|
@@ -53919,7 +53957,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53919
53957
|
slotsTouched: Array.from(pendingSlots.keys()).join(",")
|
|
53920
53958
|
}));
|
|
53921
53959
|
for (const [slot, patterns] of pendingSlots) {
|
|
53922
|
-
|
|
53960
|
+
log12.debug("flush:slot", {
|
|
53923
53961
|
traitName,
|
|
53924
53962
|
slot,
|
|
53925
53963
|
patternCount: patterns.length,
|
|
@@ -53937,7 +53975,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53937
53975
|
publishBindingSnapshot(traitName, liveEntity);
|
|
53938
53976
|
}
|
|
53939
53977
|
} catch (error) {
|
|
53940
|
-
|
|
53978
|
+
log12.error("effects:error", {
|
|
53941
53979
|
traitName,
|
|
53942
53980
|
transition: `${previousState}->${newState}`,
|
|
53943
53981
|
event: flushEvent,
|
|
@@ -53947,7 +53985,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53947
53985
|
}
|
|
53948
53986
|
return { emitted: emittedDuringExec, serverEffectResults };
|
|
53949
53987
|
}, [eventBus, flushSlot, sharedEntityStore, publishBindingSnapshot, orbitalsByTrait, viewer]);
|
|
53950
|
-
const reRenderCallsiteCaptureChildren = useCallback(async (traitName, callsitePayload, entityByTrait,
|
|
53988
|
+
const reRenderCallsiteCaptureChildren = useCallback(async (traitName, callsitePayload, entityByTrait, log12, visited = /* @__PURE__ */ new Set()) => {
|
|
53951
53989
|
const children = callsiteCaptureChildrenByTrait?.get(traitName);
|
|
53952
53990
|
if (!children || children.size === 0) return;
|
|
53953
53991
|
const mgr = managerRef.current;
|
|
@@ -53961,7 +53999,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53961
53999
|
if (lifecycleEvent === void 0) continue;
|
|
53962
54000
|
const [entry] = mgr.sendEvent(lifecycleEvent, {}, void 0, entityByTrait, void 0, childName);
|
|
53963
54001
|
if (!entry || !entry.result.executed) continue;
|
|
53964
|
-
|
|
54002
|
+
log12.debug("callsite-capture-child:rerender", {
|
|
53965
54003
|
referrer: traitName,
|
|
53966
54004
|
child: childName,
|
|
53967
54005
|
lifecycleEvent,
|
|
@@ -53975,10 +54013,10 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
53975
54013
|
payload: {},
|
|
53976
54014
|
flushEvent: lifecycleEvent,
|
|
53977
54015
|
syncOnly: false,
|
|
53978
|
-
log:
|
|
54016
|
+
log: log12,
|
|
53979
54017
|
callsitePayload
|
|
53980
54018
|
});
|
|
53981
|
-
await reRenderCallsiteCaptureChildren(childName, callsitePayload, entityByTrait,
|
|
54019
|
+
await reRenderCallsiteCaptureChildren(childName, callsitePayload, entityByTrait, log12, visited);
|
|
53982
54020
|
}
|
|
53983
54021
|
}, [callsiteCaptureChildrenByTrait, executeTransitionEffects]);
|
|
53984
54022
|
const runTickEffects = useCallback((tick, binding) => {
|
|
@@ -55301,7 +55339,7 @@ function BrowserPlayground({
|
|
|
55301
55339
|
|
|
55302
55340
|
// runtime/OrbitalPluginHost.tsx
|
|
55303
55341
|
init_useEventBus();
|
|
55304
|
-
var
|
|
55342
|
+
var log11 = createLogger("almadar:ui:plugin-host");
|
|
55305
55343
|
var UI_SLOT_SET = new Set(UI_SLOTS);
|
|
55306
55344
|
function isUISlot(value) {
|
|
55307
55345
|
return UI_SLOT_SET.has(value);
|
|
@@ -55380,7 +55418,7 @@ function buildMockEffectHandlers(opts) {
|
|
|
55380
55418
|
const handlers = {
|
|
55381
55419
|
renderUI: (slot, pattern, props, priority) => {
|
|
55382
55420
|
if (!isUISlot(slot)) {
|
|
55383
|
-
|
|
55421
|
+
log11.warn("renderUI:unknown-slot", { pluginId, slot });
|
|
55384
55422
|
return;
|
|
55385
55423
|
}
|
|
55386
55424
|
if (pattern === null) {
|
|
@@ -55392,19 +55430,19 @@ function buildMockEffectHandlers(opts) {
|
|
|
55392
55430
|
}
|
|
55393
55431
|
};
|
|
55394
55432
|
if (denySet.has("navigate")) {
|
|
55395
|
-
handlers.navigate = (path) =>
|
|
55433
|
+
handlers.navigate = (path) => log11.warn("navigate:denied", { pluginId, path });
|
|
55396
55434
|
} else if (navigateRef.current) {
|
|
55397
55435
|
handlers.navigate = (path) => navigateRef.current?.(path);
|
|
55398
55436
|
}
|
|
55399
55437
|
if (denySet.has("persist")) {
|
|
55400
55438
|
handlers.persist = async (action, entityType) => {
|
|
55401
|
-
|
|
55439
|
+
log11.warn("persist:denied", { pluginId, action, entityType });
|
|
55402
55440
|
return void 0;
|
|
55403
55441
|
};
|
|
55404
55442
|
}
|
|
55405
55443
|
if (denySet.has("call-service")) {
|
|
55406
55444
|
handlers.callService = async (service, action) => {
|
|
55407
|
-
|
|
55445
|
+
log11.warn("call-service:denied", { pluginId, service, action });
|
|
55408
55446
|
return null;
|
|
55409
55447
|
};
|
|
55410
55448
|
}
|