@almadar/ui 5.54.0 → 5.55.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.
@@ -8379,6 +8379,16 @@ var init_Skeleton = __esm({
8379
8379
  Skeleton.displayName = "Skeleton";
8380
8380
  }
8381
8381
  });
8382
+ function isKnownPattern(type) {
8383
+ return type in componentMapping;
8384
+ }
8385
+ var componentMapping;
8386
+ var init_pattern_resolver = __esm({
8387
+ "renderer/pattern-resolver.ts"() {
8388
+ createLogger("almadar:ui:pattern-resolver");
8389
+ componentMapping = {};
8390
+ }
8391
+ });
8382
8392
  function executeClientEffects(effects, config) {
8383
8393
  if (!effects || effects.length === 0) {
8384
8394
  return;
@@ -8387,7 +8397,7 @@ function executeClientEffects(effects, config) {
8387
8397
  try {
8388
8398
  executeEffect(effect, config);
8389
8399
  } catch (error) {
8390
- log3.error("Error executing effect", () => ({
8400
+ log4.error("Error executing effect", () => ({
8391
8401
  effect: JSON.stringify(effect),
8392
8402
  error: error instanceof Error ? error : String(error)
8393
8403
  }));
@@ -8419,7 +8429,7 @@ function executeEffect(effect, config) {
8419
8429
  break;
8420
8430
  }
8421
8431
  default:
8422
- log3.warn("Unknown effect type", { effectType: String(effectType) });
8432
+ log4.warn("Unknown effect type", { effectType: String(effectType) });
8423
8433
  }
8424
8434
  }
8425
8435
  function executeRenderUI(slot, patternConfig, config) {
@@ -8434,10 +8444,10 @@ function executeNotify(message, options, config) {
8434
8444
  function executeEmit(event, payload, config) {
8435
8445
  config.eventBus.emit(event, payload);
8436
8446
  }
8437
- var log3;
8447
+ var log4;
8438
8448
  var init_client_effect_executor = __esm({
8439
8449
  "renderer/client-effect-executor.ts"() {
8440
- log3 = createLogger("almadar:ui:effects:client");
8450
+ log4 = createLogger("almadar:ui:effects:client");
8441
8451
  }
8442
8452
  });
8443
8453
 
@@ -8598,12 +8608,12 @@ function useOfflineExecutor(options) {
8598
8608
  clearQueue
8599
8609
  };
8600
8610
  }
8601
- var log4, effectIdCounter, OfflineExecutor;
8611
+ var log5, effectIdCounter, OfflineExecutor;
8602
8612
  var init_offline_executor = __esm({
8603
8613
  "renderer/offline-executor.ts"() {
8604
8614
  "use client";
8605
8615
  init_client_effect_executor();
8606
- log4 = createLogger("almadar:ui:effects:offline");
8616
+ log5 = createLogger("almadar:ui:effects:offline");
8607
8617
  effectIdCounter = 0;
8608
8618
  OfflineExecutor = class {
8609
8619
  constructor(config) {
@@ -8657,7 +8667,7 @@ var init_offline_executor = __esm({
8657
8667
  this.state.syncQueue = JSON.parse(stored);
8658
8668
  }
8659
8669
  } catch (error) {
8660
- log4.warn("Failed to load sync queue", { error: error instanceof Error ? error : String(error) });
8670
+ log5.warn("Failed to load sync queue", { error: error instanceof Error ? error : String(error) });
8661
8671
  }
8662
8672
  }
8663
8673
  /**
@@ -8668,7 +8678,7 @@ var init_offline_executor = __esm({
8668
8678
  try {
8669
8679
  this.storage.setItem("orbital-offline-queue", JSON.stringify(this.state.syncQueue));
8670
8680
  } catch (error) {
8671
- log4.warn("Failed to save sync queue", { error: error instanceof Error ? error : String(error) });
8681
+ log5.warn("Failed to save sync queue", { error: error instanceof Error ? error : String(error) });
8672
8682
  }
8673
8683
  }
8674
8684
  /**
@@ -8738,7 +8748,7 @@ var init_offline_executor = __esm({
8738
8748
  this.queueForSync(type, { args, event, payload });
8739
8749
  break;
8740
8750
  default:
8741
- log4.warn("Unknown effect type", { type });
8751
+ log5.warn("Unknown effect type", { type });
8742
8752
  }
8743
8753
  }
8744
8754
  }
@@ -8843,6 +8853,7 @@ var init_offline_executor = __esm({
8843
8853
  // renderer/index.ts
8844
8854
  var init_renderer = __esm({
8845
8855
  "renderer/index.ts"() {
8856
+ init_pattern_resolver();
8846
8857
  init_slot_definitions();
8847
8858
  }
8848
8859
  });
@@ -10546,7 +10557,7 @@ function recordTransition(trace) {
10546
10557
  ...trace,
10547
10558
  id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
10548
10559
  };
10549
- log5.debug("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
10560
+ log6.debug("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
10550
10561
  getState().transitions.push(entry);
10551
10562
  if (getState().transitions.length > MAX_TRANSITIONS) {
10552
10563
  getState().transitions.shift();
@@ -10615,7 +10626,7 @@ function getTraitSnapshots() {
10615
10626
  try {
10616
10627
  snapshots.push(getter());
10617
10628
  } catch (err) {
10618
- log5.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
10629
+ log6.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
10619
10630
  }
10620
10631
  }
10621
10632
  return snapshots;
@@ -10678,12 +10689,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
10678
10689
  }
10679
10690
  function bindEventBus(eventBus) {
10680
10691
  if (typeof window === "undefined") return;
10681
- log5.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
10692
+ log6.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
10682
10693
  exposeOnWindow();
10683
10694
  if (window.__orbitalVerification) {
10684
10695
  window.__orbitalVerification.sendEvent = (event, payload, traitScope) => {
10685
10696
  const prefixed = event.startsWith("UI:") ? event : traitScope ? `UI:${traitScope}.${event}` : `UI:${event}`;
10686
- log5.debug("sendEvent", { event: prefixed, traitScope, payloadKeys: payload ? Object.keys(payload) : [] });
10697
+ log6.debug("sendEvent", { event: prefixed, traitScope, payloadKeys: payload ? Object.keys(payload) : [] });
10687
10698
  eventBus.emit(prefixed, payload);
10688
10699
  };
10689
10700
  const eventLog = [];
@@ -10732,10 +10743,10 @@ function updateAssetStatus(url, status) {
10732
10743
  window.__orbitalVerification.assetStatus[url] = status;
10733
10744
  }
10734
10745
  }
10735
- var log5, MAX_TRANSITIONS;
10746
+ var log6, MAX_TRANSITIONS;
10736
10747
  var init_verificationRegistry = __esm({
10737
10748
  "lib/verificationRegistry.ts"() {
10738
- log5 = createLogger("almadar:bridge");
10749
+ log6 = createLogger("almadar:bridge");
10739
10750
  MAX_TRANSITIONS = 500;
10740
10751
  exposeOnWindow();
10741
10752
  }
@@ -13029,7 +13040,7 @@ var init_avl_elk_layout = __esm({
13029
13040
  elk = new ELK();
13030
13041
  }
13031
13042
  });
13032
- var log6, SWIM_GUTTER, CENTER_W, BehaviorView;
13043
+ var log7, SWIM_GUTTER, CENTER_W, BehaviorView;
13033
13044
  var init_BehaviorView = __esm({
13034
13045
  "components/avl/molecules/BehaviorView.tsx"() {
13035
13046
  "use client";
@@ -13038,7 +13049,7 @@ var init_BehaviorView = __esm({
13038
13049
  init_AvlSwimLane();
13039
13050
  init_types();
13040
13051
  init_avl_elk_layout();
13041
- log6 = createLogger("almadar:ui:avl:behavior-view");
13052
+ log7 = createLogger("almadar:ui:avl:behavior-view");
13042
13053
  SWIM_GUTTER = 120;
13043
13054
  CENTER_W = 360;
13044
13055
  BehaviorView = ({ data }) => {
@@ -13049,7 +13060,7 @@ var init_BehaviorView = __esm({
13049
13060
  const dataKey = useMemo(() => JSON.stringify(traitData), [traitData]);
13050
13061
  useEffect(() => {
13051
13062
  if (!traitData) return;
13052
- computeTraitLayout(traitData).then(setLayout).catch((err) => log6.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
13063
+ computeTraitLayout(traitData).then(setLayout).catch((err) => log7.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
13053
13064
  }, [dataKey]);
13054
13065
  if (!traitData) {
13055
13066
  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") });
@@ -13460,7 +13471,7 @@ function generateDiff(oldVal, newVal) {
13460
13471
  }
13461
13472
  return diff;
13462
13473
  }
13463
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log7, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
13474
+ var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log8, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
13464
13475
  var init_CodeBlock = __esm({
13465
13476
  "components/core/molecules/markdown/CodeBlock.tsx"() {
13466
13477
  init_cn();
@@ -13543,7 +13554,7 @@ var init_CodeBlock = __esm({
13543
13554
  "lolo-op-async": { color: ORB_COLORS.dark.async }
13544
13555
  };
13545
13556
  loloStyle = { ...dark, ...loloStyleOverrides };
13546
- log7 = createLogger("almadar:ui:markdown-code");
13557
+ log8 = createLogger("almadar:ui:markdown-code");
13547
13558
  CODE_LANGUAGES = [
13548
13559
  "text",
13549
13560
  "json",
@@ -13807,7 +13818,7 @@ var init_CodeBlock = __esm({
13807
13818
  eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: true });
13808
13819
  setTimeout(() => setCopied(false), 2e3);
13809
13820
  } catch (err) {
13810
- log7.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
13821
+ log8.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
13811
13822
  eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: false });
13812
13823
  }
13813
13824
  };
@@ -17688,14 +17699,14 @@ function useSafeEventBus2() {
17688
17699
  } };
17689
17700
  }
17690
17701
  }
17691
- var log8, lookStyles4, ButtonGroup;
17702
+ var log9, lookStyles4, ButtonGroup;
17692
17703
  var init_ButtonGroup = __esm({
17693
17704
  "components/core/molecules/ButtonGroup.tsx"() {
17694
17705
  "use client";
17695
17706
  init_cn();
17696
17707
  init_atoms2();
17697
17708
  init_useEventBus();
17698
- log8 = createLogger("almadar:ui:button-group");
17709
+ log9 = createLogger("almadar:ui:button-group");
17699
17710
  lookStyles4 = {
17700
17711
  "right-aligned-buttons": "",
17701
17712
  "floating-bar": "fixed bottom-section left-1/2 -translate-x-1/2 shadow-elevation-toast bg-card p-card-sm rounded-container",
@@ -17776,7 +17787,7 @@ var init_ButtonGroup = __esm({
17776
17787
  {
17777
17788
  variant: "ghost",
17778
17789
  onClick: () => {
17779
- log8.debug("Filter clicked", { field: filter.field });
17790
+ log9.debug("Filter clicked", { field: filter.field });
17780
17791
  },
17781
17792
  children: filter.label
17782
17793
  },
@@ -25438,9 +25449,9 @@ function debug(...args) {
25438
25449
  const [first, ...rest] = args;
25439
25450
  const message = typeof first === "string" ? first : "<debug>";
25440
25451
  if (rest.length === 0 && typeof first === "string") {
25441
- log9.debug(message);
25452
+ log10.debug(message);
25442
25453
  } else {
25443
- log9.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
25454
+ log10.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
25444
25455
  }
25445
25456
  }
25446
25457
  function debugGroup(label) {
@@ -25468,11 +25479,11 @@ function toLogMetaValue(v) {
25468
25479
  }
25469
25480
  return String(v);
25470
25481
  }
25471
- var NAMESPACE, log9;
25482
+ var NAMESPACE, log10;
25472
25483
  var init_debug = __esm({
25473
25484
  "lib/debug.ts"() {
25474
25485
  NAMESPACE = "almadar:ui:debug";
25475
- log9 = createLogger(NAMESPACE);
25486
+ log10 = createLogger(NAMESPACE);
25476
25487
  createLogger("almadar:ui:debug:input");
25477
25488
  createLogger("almadar:ui:debug:collision");
25478
25489
  createLogger("almadar:ui:debug:physics");
@@ -41763,11 +41774,11 @@ var init_Canvas3DErrorBoundary = __esm({
41763
41774
  "components/game/molecules/three/components/Canvas3DErrorBoundary.css"() {
41764
41775
  }
41765
41776
  });
41766
- var log10, Canvas3DErrorBoundary;
41777
+ var log11, Canvas3DErrorBoundary;
41767
41778
  var init_Canvas3DErrorBoundary2 = __esm({
41768
41779
  "components/game/molecules/three/components/Canvas3DErrorBoundary.tsx"() {
41769
41780
  init_Canvas3DErrorBoundary();
41770
- log10 = createLogger("almadar:ui:game:canvas3d:error-boundary");
41781
+ log11 = createLogger("almadar:ui:game:canvas3d:error-boundary");
41771
41782
  Canvas3DErrorBoundary = class extends Component {
41772
41783
  constructor(props) {
41773
41784
  super(props);
@@ -41795,8 +41806,8 @@ var init_Canvas3DErrorBoundary2 = __esm({
41795
41806
  componentDidCatch(error, errorInfo) {
41796
41807
  this.setState({ errorInfo });
41797
41808
  this.props.onError?.(error, errorInfo);
41798
- log10.error("Error caught", { error });
41799
- log10.error("Component stack", { componentStack: errorInfo.componentStack ?? "<none>" });
41809
+ log11.error("Error caught", { error });
41810
+ log11.error("Component stack", { componentStack: errorInfo.componentStack ?? "<none>" });
41800
41811
  }
41801
41812
  render() {
41802
41813
  if (this.state.hasError) {
@@ -41859,7 +41870,7 @@ function useGLTFModel(url, resourceBasePath) {
41859
41870
  setState({ model: null, isLoading: false, error: null });
41860
41871
  return;
41861
41872
  }
41862
- log11.debug("Loading", { url });
41873
+ log12.debug("Loading", { url });
41863
41874
  setState((prev) => ({ ...prev, isLoading: true, error: null }));
41864
41875
  const assetRoot = resourceBasePath || detectAssetRoot2(url);
41865
41876
  const loader = new GLTFLoader$1();
@@ -41867,7 +41878,7 @@ function useGLTFModel(url, resourceBasePath) {
41867
41878
  loader.load(
41868
41879
  url,
41869
41880
  (gltf) => {
41870
- log11.debug("Loaded", { url });
41881
+ log12.debug("Loaded", { url });
41871
41882
  setState({
41872
41883
  model: gltf.scene,
41873
41884
  isLoading: false,
@@ -41876,7 +41887,7 @@ function useGLTFModel(url, resourceBasePath) {
41876
41887
  },
41877
41888
  void 0,
41878
41889
  (err) => {
41879
- log11.warn("Failed", { url, error: err instanceof Error ? err : String(err) });
41890
+ log12.warn("Failed", { url, error: err instanceof Error ? err : String(err) });
41880
41891
  setState({
41881
41892
  model: null,
41882
41893
  isLoading: false,
@@ -41992,11 +42003,11 @@ function ModelLoader({
41992
42003
  }
41993
42004
  );
41994
42005
  }
41995
- var log11;
42006
+ var log12;
41996
42007
  var init_ModelLoader = __esm({
41997
42008
  "components/game/molecules/three/components/ModelLoader.tsx"() {
41998
42009
  "use client";
41999
- log11 = createLogger("almadar:ui:game:model-loader");
42010
+ log12 = createLogger("almadar:ui:game:model-loader");
42000
42011
  }
42001
42012
  });
42002
42013
 
@@ -46282,7 +46293,7 @@ function getAllEvents(traits2) {
46282
46293
  function EventDispatcherTab({ traits: traits2, schema }) {
46283
46294
  const eventBus = useEventBus();
46284
46295
  const { t } = useTranslate();
46285
- const [log13, setLog] = React82.useState([]);
46296
+ const [log14, setLog] = React82.useState([]);
46286
46297
  const prevStatesRef = React82.useRef(/* @__PURE__ */ new Map());
46287
46298
  React82.useEffect(() => {
46288
46299
  for (const trait of traits2) {
@@ -46346,9 +46357,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
46346
46357
  /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
46347
46358
  /* @__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)) })
46348
46359
  ] }),
46349
- log13.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
46360
+ log14.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
46350
46361
  /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
46351
- /* @__PURE__ */ jsx(Stack, { gap: "xs", children: log13.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
46362
+ /* @__PURE__ */ jsx(Stack, { gap: "xs", children: log14.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
46352
46363
  /* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
46353
46364
  " ",
46354
46365
  /* @__PURE__ */ jsx("span", { className: "text-gray-500", children: entry.from }),
@@ -51213,7 +51224,7 @@ function isPatternConfig(value) {
51213
51224
  if (value instanceof Date) return false;
51214
51225
  if (typeof value === "function") return false;
51215
51226
  const record = value;
51216
- return "type" in record && typeof record.type === "string";
51227
+ return "type" in record && typeof record.type === "string" && isKnownPattern(record.type);
51217
51228
  }
51218
51229
  function isPlainConfigObject(value) {
51219
51230
  if (React82__default.isValidElement(value)) return false;
@@ -51807,7 +51818,7 @@ init_UISlotRenderer();
51807
51818
  // providers/VerificationProvider.tsx
51808
51819
  init_useEventBus();
51809
51820
  init_verificationRegistry();
51810
- var log12 = createLogger("almadar:verify");
51821
+ var log13 = createLogger("almadar:verify");
51811
51822
  var DISPATCH_SUFFIX = ":DISPATCH";
51812
51823
  var SUCCESS_SUFFIX = ":SUCCESS";
51813
51824
  var ERROR_SUFFIX = ":ERROR";
@@ -51854,7 +51865,7 @@ function VerificationProvider({
51854
51865
  const verificationProviderLifecycleListener = (evt) => {
51855
51866
  const parsed = parseLifecycleEvent(evt.type);
51856
51867
  if (!parsed) return;
51857
- log12.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
51868
+ log13.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
51858
51869
  const payload = evt.payload ?? {};
51859
51870
  if (parsed.kind === "dispatch") {
51860
51871
  const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
@@ -51909,7 +51920,7 @@ function VerificationProvider({
51909
51920
  },
51910
51921
  timestamp: Date.now()
51911
51922
  });
51912
- log12.debug("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
51923
+ log13.debug("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
51913
51924
  } else if (parsed.kind === "error" && parsed.event) {
51914
51925
  const key = `${parsed.traitName}:${parsed.event}`;
51915
51926
  const pending = pendingRef.current.get(key);
@@ -51939,7 +51950,7 @@ function VerificationProvider({
51939
51950
  },
51940
51951
  timestamp: Date.now()
51941
51952
  });
51942
- log12.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
51953
+ log13.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
51943
51954
  }
51944
51955
  };
51945
51956
  Object.defineProperty(verificationProviderLifecycleListener, "name", {