@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.
@@ -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
- log4.debug("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
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
- log4.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
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 log4, MAX_TRANSITIONS;
7863
+ var log5, MAX_TRANSITIONS;
7864
7864
  var init_verificationRegistry = __esm({
7865
7865
  "lib/verificationRegistry.ts"() {
7866
- log4 = createLogger("almadar:bridge");
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 log5, SWIM_GUTTER, CENTER_W, BehaviorView;
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
- log5 = createLogger("almadar:ui:avl:behavior-view");
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) => log5.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(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, log6, 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;
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
- log6 = createLogger("almadar:ui:markdown-code");
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
- log6.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
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 log7, mermaidModule, MermaidDiagram;
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
- log7 = createLogger("almadar:ui:mermaid-diagram");
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) log7.debug("mermaid:repaired", { candidate: index });
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
- log7.warn("mermaid:unrenderable", { error: firstError?.message ?? "", code });
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 log8, lookStyles4, ButtonGroup;
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
- log8 = createLogger("almadar:ui:button-group");
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
- log8.debug("Filter clicked", { field: filter.field });
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
- log9.debug(message);
31184
+ log10.debug(message);
31185
31185
  } else {
31186
- log9.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
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, log9;
31214
+ var NAMESPACE, log10;
31215
31215
  var init_debug = __esm({
31216
31216
  "lib/debug.ts"() {
31217
31217
  NAMESPACE = "almadar:ui:debug";
31218
- log9 = createLogger(NAMESPACE);
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: useEffect68, useRef: useRef69, useCallback: useCallback96, useState: useState102 } = React87__default;
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 = useRef69({ centerLat, centerLng, zoom });
34502
- useEffect68(() => {
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
- useEffect68(() => {
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] = useState102(null);
34542
- const handleMapClick = useCallback96((lat, lng) => {
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 = useCallback96((marker) => {
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 [log11, setLog] = React87.useState([]);
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
- log11.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
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: log11.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-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
- var log2 = createLogger("almadar:ui:shared-entity-store");
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
- log2.error("Shared entity subscriber error", {
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 log3 = createLogger("almadar:ui:effects:client-handlers");
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
- log3.debug("persist is server-side only, ignored on client");
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
- log3.warn("set is server-side only, ignored on client (no live entity)");
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
- log3.warn("No navigate handler, ignoring", { path });
53087
+ log4.warn("No navigate handler, ignoring", { path });
53070
53088
  }),
53071
53089
  navigateBack: navigateBack ?? (() => {
53072
- log3.warn("No navigate-back handler, ignoring");
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: log11, callsitePayload } = params;
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
- log11.debug("set:write", {
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
- log11.debug("effects:executed", () => ({
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
- log11.debug("flush:slot", {
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
- log11.error("effects:error", {
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, log11, visited = /* @__PURE__ */ new Set()) => {
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
- log11.debug("callsite-capture-child:rerender", {
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: log11,
54016
+ log: log12,
53979
54017
  callsitePayload
53980
54018
  });
53981
- await reRenderCallsiteCaptureChildren(childName, callsitePayload, entityByTrait, log11, visited);
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 log10 = createLogger("almadar:ui:plugin-host");
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
- log10.warn("renderUI:unknown-slot", { pluginId, slot });
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) => log10.warn("navigate:denied", { pluginId, 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
- log10.warn("persist:denied", { pluginId, action, entityType });
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
- log10.warn("call-service:denied", { pluginId, service, action });
55445
+ log11.warn("call-service:denied", { pluginId, service, action });
55408
55446
  return null;
55409
55447
  };
55410
55448
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "6.22.0",
3
+ "version": "6.24.0",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "sideEffects": [