@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.
@@ -8426,6 +8426,16 @@ var init_Skeleton = __esm({
8426
8426
  Skeleton.displayName = "Skeleton";
8427
8427
  }
8428
8428
  });
8429
+ function isKnownPattern(type) {
8430
+ return type in componentMapping;
8431
+ }
8432
+ var componentMapping;
8433
+ var init_pattern_resolver = __esm({
8434
+ "renderer/pattern-resolver.ts"() {
8435
+ logger.createLogger("almadar:ui:pattern-resolver");
8436
+ componentMapping = {};
8437
+ }
8438
+ });
8429
8439
  function executeClientEffects(effects, config) {
8430
8440
  if (!effects || effects.length === 0) {
8431
8441
  return;
@@ -8434,7 +8444,7 @@ function executeClientEffects(effects, config) {
8434
8444
  try {
8435
8445
  executeEffect(effect, config);
8436
8446
  } catch (error) {
8437
- log3.error("Error executing effect", () => ({
8447
+ log4.error("Error executing effect", () => ({
8438
8448
  effect: JSON.stringify(effect),
8439
8449
  error: error instanceof Error ? error : String(error)
8440
8450
  }));
@@ -8466,7 +8476,7 @@ function executeEffect(effect, config) {
8466
8476
  break;
8467
8477
  }
8468
8478
  default:
8469
- log3.warn("Unknown effect type", { effectType: String(effectType) });
8479
+ log4.warn("Unknown effect type", { effectType: String(effectType) });
8470
8480
  }
8471
8481
  }
8472
8482
  function executeRenderUI(slot, patternConfig, config) {
@@ -8481,10 +8491,10 @@ function executeNotify(message, options, config) {
8481
8491
  function executeEmit(event, payload, config) {
8482
8492
  config.eventBus.emit(event, payload);
8483
8493
  }
8484
- var log3;
8494
+ var log4;
8485
8495
  var init_client_effect_executor = __esm({
8486
8496
  "renderer/client-effect-executor.ts"() {
8487
- log3 = logger.createLogger("almadar:ui:effects:client");
8497
+ log4 = logger.createLogger("almadar:ui:effects:client");
8488
8498
  }
8489
8499
  });
8490
8500
 
@@ -8645,12 +8655,12 @@ function useOfflineExecutor(options) {
8645
8655
  clearQueue
8646
8656
  };
8647
8657
  }
8648
- var log4, effectIdCounter, OfflineExecutor;
8658
+ var log5, effectIdCounter, OfflineExecutor;
8649
8659
  var init_offline_executor = __esm({
8650
8660
  "renderer/offline-executor.ts"() {
8651
8661
  "use client";
8652
8662
  init_client_effect_executor();
8653
- log4 = logger.createLogger("almadar:ui:effects:offline");
8663
+ log5 = logger.createLogger("almadar:ui:effects:offline");
8654
8664
  effectIdCounter = 0;
8655
8665
  OfflineExecutor = class {
8656
8666
  constructor(config) {
@@ -8704,7 +8714,7 @@ var init_offline_executor = __esm({
8704
8714
  this.state.syncQueue = JSON.parse(stored);
8705
8715
  }
8706
8716
  } catch (error) {
8707
- log4.warn("Failed to load sync queue", { error: error instanceof Error ? error : String(error) });
8717
+ log5.warn("Failed to load sync queue", { error: error instanceof Error ? error : String(error) });
8708
8718
  }
8709
8719
  }
8710
8720
  /**
@@ -8715,7 +8725,7 @@ var init_offline_executor = __esm({
8715
8725
  try {
8716
8726
  this.storage.setItem("orbital-offline-queue", JSON.stringify(this.state.syncQueue));
8717
8727
  } catch (error) {
8718
- log4.warn("Failed to save sync queue", { error: error instanceof Error ? error : String(error) });
8728
+ log5.warn("Failed to save sync queue", { error: error instanceof Error ? error : String(error) });
8719
8729
  }
8720
8730
  }
8721
8731
  /**
@@ -8785,7 +8795,7 @@ var init_offline_executor = __esm({
8785
8795
  this.queueForSync(type, { args, event, payload });
8786
8796
  break;
8787
8797
  default:
8788
- log4.warn("Unknown effect type", { type });
8798
+ log5.warn("Unknown effect type", { type });
8789
8799
  }
8790
8800
  }
8791
8801
  }
@@ -8890,6 +8900,7 @@ var init_offline_executor = __esm({
8890
8900
  // renderer/index.ts
8891
8901
  var init_renderer = __esm({
8892
8902
  "renderer/index.ts"() {
8903
+ init_pattern_resolver();
8893
8904
  init_slot_definitions();
8894
8905
  }
8895
8906
  });
@@ -10593,7 +10604,7 @@ function recordTransition(trace) {
10593
10604
  ...trace,
10594
10605
  id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
10595
10606
  };
10596
- log5.debug("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
10607
+ log6.debug("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
10597
10608
  getState().transitions.push(entry);
10598
10609
  if (getState().transitions.length > MAX_TRANSITIONS) {
10599
10610
  getState().transitions.shift();
@@ -10662,7 +10673,7 @@ function getTraitSnapshots() {
10662
10673
  try {
10663
10674
  snapshots.push(getter());
10664
10675
  } catch (err) {
10665
- log5.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
10676
+ log6.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
10666
10677
  }
10667
10678
  }
10668
10679
  return snapshots;
@@ -10725,12 +10736,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
10725
10736
  }
10726
10737
  function bindEventBus(eventBus) {
10727
10738
  if (typeof window === "undefined") return;
10728
- log5.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
10739
+ log6.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
10729
10740
  exposeOnWindow();
10730
10741
  if (window.__orbitalVerification) {
10731
10742
  window.__orbitalVerification.sendEvent = (event, payload, traitScope) => {
10732
10743
  const prefixed = event.startsWith("UI:") ? event : traitScope ? `UI:${traitScope}.${event}` : `UI:${event}`;
10733
- log5.debug("sendEvent", { event: prefixed, traitScope, payloadKeys: payload ? Object.keys(payload) : [] });
10744
+ log6.debug("sendEvent", { event: prefixed, traitScope, payloadKeys: payload ? Object.keys(payload) : [] });
10734
10745
  eventBus.emit(prefixed, payload);
10735
10746
  };
10736
10747
  const eventLog = [];
@@ -10779,10 +10790,10 @@ function updateAssetStatus(url, status) {
10779
10790
  window.__orbitalVerification.assetStatus[url] = status;
10780
10791
  }
10781
10792
  }
10782
- var log5, MAX_TRANSITIONS;
10793
+ var log6, MAX_TRANSITIONS;
10783
10794
  var init_verificationRegistry = __esm({
10784
10795
  "lib/verificationRegistry.ts"() {
10785
- log5 = logger.createLogger("almadar:bridge");
10796
+ log6 = logger.createLogger("almadar:bridge");
10786
10797
  MAX_TRANSITIONS = 500;
10787
10798
  exposeOnWindow();
10788
10799
  }
@@ -13076,7 +13087,7 @@ var init_avl_elk_layout = __esm({
13076
13087
  elk = new ELK__default.default();
13077
13088
  }
13078
13089
  });
13079
- var log6, SWIM_GUTTER, CENTER_W, BehaviorView;
13090
+ var log7, SWIM_GUTTER, CENTER_W, BehaviorView;
13080
13091
  var init_BehaviorView = __esm({
13081
13092
  "components/avl/molecules/BehaviorView.tsx"() {
13082
13093
  "use client";
@@ -13085,7 +13096,7 @@ var init_BehaviorView = __esm({
13085
13096
  init_AvlSwimLane();
13086
13097
  init_types();
13087
13098
  init_avl_elk_layout();
13088
- log6 = logger.createLogger("almadar:ui:avl:behavior-view");
13099
+ log7 = logger.createLogger("almadar:ui:avl:behavior-view");
13089
13100
  SWIM_GUTTER = 120;
13090
13101
  CENTER_W = 360;
13091
13102
  BehaviorView = ({ data }) => {
@@ -13096,7 +13107,7 @@ var init_BehaviorView = __esm({
13096
13107
  const dataKey = React82.useMemo(() => JSON.stringify(traitData), [traitData]);
13097
13108
  React82.useEffect(() => {
13098
13109
  if (!traitData) return;
13099
- computeTraitLayout(traitData).then(setLayout).catch((err) => log6.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
13110
+ computeTraitLayout(traitData).then(setLayout).catch((err) => log7.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
13100
13111
  }, [dataKey]);
13101
13112
  if (!traitData) {
13102
13113
  return /* @__PURE__ */ jsxRuntime.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") });
@@ -13507,7 +13518,7 @@ function generateDiff(oldVal, newVal) {
13507
13518
  }
13508
13519
  return diff;
13509
13520
  }
13510
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log7, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
13521
+ var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log8, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
13511
13522
  var init_CodeBlock = __esm({
13512
13523
  "components/core/molecules/markdown/CodeBlock.tsx"() {
13513
13524
  init_cn();
@@ -13590,7 +13601,7 @@ var init_CodeBlock = __esm({
13590
13601
  "lolo-op-async": { color: syntax.ORB_COLORS.dark.async }
13591
13602
  };
13592
13603
  loloStyle = { ...dark__default.default, ...loloStyleOverrides };
13593
- log7 = logger.createLogger("almadar:ui:markdown-code");
13604
+ log8 = logger.createLogger("almadar:ui:markdown-code");
13594
13605
  CODE_LANGUAGES = [
13595
13606
  "text",
13596
13607
  "json",
@@ -13854,7 +13865,7 @@ var init_CodeBlock = __esm({
13854
13865
  eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: true });
13855
13866
  setTimeout(() => setCopied(false), 2e3);
13856
13867
  } catch (err) {
13857
- log7.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
13868
+ log8.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
13858
13869
  eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: false });
13859
13870
  }
13860
13871
  };
@@ -17735,14 +17746,14 @@ function useSafeEventBus2() {
17735
17746
  } };
17736
17747
  }
17737
17748
  }
17738
- var log8, lookStyles4, ButtonGroup;
17749
+ var log9, lookStyles4, ButtonGroup;
17739
17750
  var init_ButtonGroup = __esm({
17740
17751
  "components/core/molecules/ButtonGroup.tsx"() {
17741
17752
  "use client";
17742
17753
  init_cn();
17743
17754
  init_atoms2();
17744
17755
  init_useEventBus();
17745
- log8 = logger.createLogger("almadar:ui:button-group");
17756
+ log9 = logger.createLogger("almadar:ui:button-group");
17746
17757
  lookStyles4 = {
17747
17758
  "right-aligned-buttons": "",
17748
17759
  "floating-bar": "fixed bottom-section left-1/2 -translate-x-1/2 shadow-elevation-toast bg-card p-card-sm rounded-container",
@@ -17823,7 +17834,7 @@ var init_ButtonGroup = __esm({
17823
17834
  {
17824
17835
  variant: "ghost",
17825
17836
  onClick: () => {
17826
- log8.debug("Filter clicked", { field: filter.field });
17837
+ log9.debug("Filter clicked", { field: filter.field });
17827
17838
  },
17828
17839
  children: filter.label
17829
17840
  },
@@ -25485,9 +25496,9 @@ function debug(...args) {
25485
25496
  const [first, ...rest] = args;
25486
25497
  const message = typeof first === "string" ? first : "<debug>";
25487
25498
  if (rest.length === 0 && typeof first === "string") {
25488
- log9.debug(message);
25499
+ log10.debug(message);
25489
25500
  } else {
25490
- log9.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
25501
+ log10.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
25491
25502
  }
25492
25503
  }
25493
25504
  function debugGroup(label) {
@@ -25515,11 +25526,11 @@ function toLogMetaValue(v) {
25515
25526
  }
25516
25527
  return String(v);
25517
25528
  }
25518
- var NAMESPACE, log9;
25529
+ var NAMESPACE, log10;
25519
25530
  var init_debug = __esm({
25520
25531
  "lib/debug.ts"() {
25521
25532
  NAMESPACE = "almadar:ui:debug";
25522
- log9 = logger.createLogger(NAMESPACE);
25533
+ log10 = logger.createLogger(NAMESPACE);
25523
25534
  logger.createLogger("almadar:ui:debug:input");
25524
25535
  logger.createLogger("almadar:ui:debug:collision");
25525
25536
  logger.createLogger("almadar:ui:debug:physics");
@@ -41810,11 +41821,11 @@ var init_Canvas3DErrorBoundary = __esm({
41810
41821
  "components/game/molecules/three/components/Canvas3DErrorBoundary.css"() {
41811
41822
  }
41812
41823
  });
41813
- var log10, Canvas3DErrorBoundary;
41824
+ var log11, Canvas3DErrorBoundary;
41814
41825
  var init_Canvas3DErrorBoundary2 = __esm({
41815
41826
  "components/game/molecules/three/components/Canvas3DErrorBoundary.tsx"() {
41816
41827
  init_Canvas3DErrorBoundary();
41817
- log10 = logger.createLogger("almadar:ui:game:canvas3d:error-boundary");
41828
+ log11 = logger.createLogger("almadar:ui:game:canvas3d:error-boundary");
41818
41829
  Canvas3DErrorBoundary = class extends React82.Component {
41819
41830
  constructor(props) {
41820
41831
  super(props);
@@ -41842,8 +41853,8 @@ var init_Canvas3DErrorBoundary2 = __esm({
41842
41853
  componentDidCatch(error, errorInfo) {
41843
41854
  this.setState({ errorInfo });
41844
41855
  this.props.onError?.(error, errorInfo);
41845
- log10.error("Error caught", { error });
41846
- log10.error("Component stack", { componentStack: errorInfo.componentStack ?? "<none>" });
41856
+ log11.error("Error caught", { error });
41857
+ log11.error("Component stack", { componentStack: errorInfo.componentStack ?? "<none>" });
41847
41858
  }
41848
41859
  render() {
41849
41860
  if (this.state.hasError) {
@@ -41906,7 +41917,7 @@ function useGLTFModel(url, resourceBasePath) {
41906
41917
  setState({ model: null, isLoading: false, error: null });
41907
41918
  return;
41908
41919
  }
41909
- log11.debug("Loading", { url });
41920
+ log12.debug("Loading", { url });
41910
41921
  setState((prev) => ({ ...prev, isLoading: true, error: null }));
41911
41922
  const assetRoot = resourceBasePath || detectAssetRoot2(url);
41912
41923
  const loader = new GLTFLoader.GLTFLoader();
@@ -41914,7 +41925,7 @@ function useGLTFModel(url, resourceBasePath) {
41914
41925
  loader.load(
41915
41926
  url,
41916
41927
  (gltf) => {
41917
- log11.debug("Loaded", { url });
41928
+ log12.debug("Loaded", { url });
41918
41929
  setState({
41919
41930
  model: gltf.scene,
41920
41931
  isLoading: false,
@@ -41923,7 +41934,7 @@ function useGLTFModel(url, resourceBasePath) {
41923
41934
  },
41924
41935
  void 0,
41925
41936
  (err) => {
41926
- log11.warn("Failed", { url, error: err instanceof Error ? err : String(err) });
41937
+ log12.warn("Failed", { url, error: err instanceof Error ? err : String(err) });
41927
41938
  setState({
41928
41939
  model: null,
41929
41940
  isLoading: false,
@@ -42039,11 +42050,11 @@ function ModelLoader({
42039
42050
  }
42040
42051
  );
42041
42052
  }
42042
- var log11;
42053
+ var log12;
42043
42054
  var init_ModelLoader = __esm({
42044
42055
  "components/game/molecules/three/components/ModelLoader.tsx"() {
42045
42056
  "use client";
42046
- log11 = logger.createLogger("almadar:ui:game:model-loader");
42057
+ log12 = logger.createLogger("almadar:ui:game:model-loader");
42047
42058
  }
42048
42059
  });
42049
42060
 
@@ -46329,7 +46340,7 @@ function getAllEvents(traits2) {
46329
46340
  function EventDispatcherTab({ traits: traits2, schema }) {
46330
46341
  const eventBus = useEventBus();
46331
46342
  const { t } = hooks.useTranslate();
46332
- const [log13, setLog] = React82__namespace.useState([]);
46343
+ const [log14, setLog] = React82__namespace.useState([]);
46333
46344
  const prevStatesRef = React82__namespace.useRef(/* @__PURE__ */ new Map());
46334
46345
  React82__namespace.useEffect(() => {
46335
46346
  for (const trait of traits2) {
@@ -46393,9 +46404,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
46393
46404
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
46394
46405
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
46395
46406
  ] }),
46396
- log13.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
46407
+ log14.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
46397
46408
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
46398
- /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log13.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
46409
+ /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log14.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
46399
46410
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
46400
46411
  " ",
46401
46412
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
@@ -51260,7 +51271,7 @@ function isPatternConfig(value) {
51260
51271
  if (value instanceof Date) return false;
51261
51272
  if (typeof value === "function") return false;
51262
51273
  const record = value;
51263
- return "type" in record && typeof record.type === "string";
51274
+ return "type" in record && typeof record.type === "string" && isKnownPattern(record.type);
51264
51275
  }
51265
51276
  function isPlainConfigObject(value) {
51266
51277
  if (React82__namespace.default.isValidElement(value)) return false;
@@ -51854,7 +51865,7 @@ init_UISlotRenderer();
51854
51865
  // providers/VerificationProvider.tsx
51855
51866
  init_useEventBus();
51856
51867
  init_verificationRegistry();
51857
- var log12 = logger.createLogger("almadar:verify");
51868
+ var log13 = logger.createLogger("almadar:verify");
51858
51869
  var DISPATCH_SUFFIX = ":DISPATCH";
51859
51870
  var SUCCESS_SUFFIX = ":SUCCESS";
51860
51871
  var ERROR_SUFFIX = ":ERROR";
@@ -51901,7 +51912,7 @@ function VerificationProvider({
51901
51912
  const verificationProviderLifecycleListener = (evt) => {
51902
51913
  const parsed = parseLifecycleEvent(evt.type);
51903
51914
  if (!parsed) return;
51904
- log12.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
51915
+ log13.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
51905
51916
  const payload = evt.payload ?? {};
51906
51917
  if (parsed.kind === "dispatch") {
51907
51918
  const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
@@ -51956,7 +51967,7 @@ function VerificationProvider({
51956
51967
  },
51957
51968
  timestamp: Date.now()
51958
51969
  });
51959
- log12.debug("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
51970
+ log13.debug("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
51960
51971
  } else if (parsed.kind === "error" && parsed.event) {
51961
51972
  const key = `${parsed.traitName}:${parsed.event}`;
51962
51973
  const pending = pendingRef.current.get(key);
@@ -51986,7 +51997,7 @@ function VerificationProvider({
51986
51997
  },
51987
51998
  timestamp: Date.now()
51988
51999
  });
51989
- log12.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
52000
+ log13.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
51990
52001
  }
51991
52002
  };
51992
52003
  Object.defineProperty(verificationProviderLifecycleListener, "name", {