@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.
@@ -12207,6 +12207,16 @@ var init_Skeleton = __esm({
12207
12207
  Skeleton.displayName = "Skeleton";
12208
12208
  }
12209
12209
  });
12210
+ function isKnownPattern(type) {
12211
+ return type in componentMapping;
12212
+ }
12213
+ var componentMapping;
12214
+ var init_pattern_resolver = __esm({
12215
+ "renderer/pattern-resolver.ts"() {
12216
+ logger.createLogger("almadar:ui:pattern-resolver");
12217
+ componentMapping = {};
12218
+ }
12219
+ });
12210
12220
 
12211
12221
  // renderer/slot-definitions.ts
12212
12222
  function isPortalSlot(slot) {
@@ -12315,6 +12325,7 @@ var init_navigation = __esm({
12315
12325
  // renderer/index.ts
12316
12326
  var init_renderer = __esm({
12317
12327
  "renderer/index.ts"() {
12328
+ init_pattern_resolver();
12318
12329
  init_slot_definitions();
12319
12330
  }
12320
12331
  });
@@ -14018,7 +14029,7 @@ function recordTransition(trace) {
14018
14029
  ...trace,
14019
14030
  id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
14020
14031
  };
14021
- log4.debug("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
14032
+ log5.debug("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
14022
14033
  getState().transitions.push(entry);
14023
14034
  if (getState().transitions.length > MAX_TRANSITIONS) {
14024
14035
  getState().transitions.shift();
@@ -14117,7 +14128,7 @@ function getTraitSnapshots() {
14117
14128
  try {
14118
14129
  snapshots.push(getter());
14119
14130
  } catch (err) {
14120
- log4.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
14131
+ log5.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
14121
14132
  }
14122
14133
  }
14123
14134
  return snapshots;
@@ -14216,10 +14227,10 @@ function updateAssetStatus(url, status) {
14216
14227
  window.__orbitalVerification.assetStatus[url] = status;
14217
14228
  }
14218
14229
  }
14219
- var log4, MAX_TRANSITIONS;
14230
+ var log5, MAX_TRANSITIONS;
14220
14231
  var init_verificationRegistry = __esm({
14221
14232
  "lib/verificationRegistry.ts"() {
14222
- log4 = logger.createLogger("almadar:bridge");
14233
+ log5 = logger.createLogger("almadar:bridge");
14223
14234
  MAX_TRANSITIONS = 500;
14224
14235
  exposeOnWindow();
14225
14236
  }
@@ -16115,7 +16126,7 @@ function generateDiff(oldVal, newVal) {
16115
16126
  }
16116
16127
  return diff;
16117
16128
  }
16118
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log5, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
16129
+ var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log6, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
16119
16130
  var init_CodeBlock = __esm({
16120
16131
  "components/core/molecules/markdown/CodeBlock.tsx"() {
16121
16132
  init_cn();
@@ -16198,7 +16209,7 @@ var init_CodeBlock = __esm({
16198
16209
  "lolo-op-async": { color: syntax.ORB_COLORS.dark.async }
16199
16210
  };
16200
16211
  loloStyle = { ...dark__default.default, ...loloStyleOverrides };
16201
- log5 = logger.createLogger("almadar:ui:markdown-code");
16212
+ log6 = logger.createLogger("almadar:ui:markdown-code");
16202
16213
  CODE_LANGUAGES = [
16203
16214
  "text",
16204
16215
  "json",
@@ -16462,7 +16473,7 @@ var init_CodeBlock = __esm({
16462
16473
  eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: true });
16463
16474
  setTimeout(() => setCopied(false), 2e3);
16464
16475
  } catch (err) {
16465
- log5.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
16476
+ log6.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
16466
16477
  eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: false });
16467
16478
  }
16468
16479
  };
@@ -20343,14 +20354,14 @@ function useSafeEventBus2() {
20343
20354
  } };
20344
20355
  }
20345
20356
  }
20346
- var log6, lookStyles4, ButtonGroup;
20357
+ var log7, lookStyles4, ButtonGroup;
20347
20358
  var init_ButtonGroup = __esm({
20348
20359
  "components/core/molecules/ButtonGroup.tsx"() {
20349
20360
  "use client";
20350
20361
  init_cn();
20351
20362
  init_atoms2();
20352
20363
  init_useEventBus();
20353
- log6 = logger.createLogger("almadar:ui:button-group");
20364
+ log7 = logger.createLogger("almadar:ui:button-group");
20354
20365
  lookStyles4 = {
20355
20366
  "right-aligned-buttons": "",
20356
20367
  "floating-bar": "fixed bottom-section left-1/2 -translate-x-1/2 shadow-elevation-toast bg-card p-card-sm rounded-container",
@@ -20431,7 +20442,7 @@ var init_ButtonGroup = __esm({
20431
20442
  {
20432
20443
  variant: "ghost",
20433
20444
  onClick: () => {
20434
- log6.debug("Filter clicked", { field: filter.field });
20445
+ log7.debug("Filter clicked", { field: filter.field });
20435
20446
  },
20436
20447
  children: filter.label
20437
20448
  },
@@ -28093,9 +28104,9 @@ function debug(...args) {
28093
28104
  const [first, ...rest] = args;
28094
28105
  const message = typeof first === "string" ? first : "<debug>";
28095
28106
  if (rest.length === 0 && typeof first === "string") {
28096
- log7.debug(message);
28107
+ log8.debug(message);
28097
28108
  } else {
28098
- log7.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
28109
+ log8.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
28099
28110
  }
28100
28111
  }
28101
28112
  function debugGroup(label) {
@@ -28123,11 +28134,11 @@ function toLogMetaValue(v) {
28123
28134
  }
28124
28135
  return String(v);
28125
28136
  }
28126
- var NAMESPACE, log7;
28137
+ var NAMESPACE, log8;
28127
28138
  var init_debug = __esm({
28128
28139
  "lib/debug.ts"() {
28129
28140
  NAMESPACE = "almadar:ui:debug";
28130
- log7 = logger.createLogger(NAMESPACE);
28141
+ log8 = logger.createLogger(NAMESPACE);
28131
28142
  logger.createLogger("almadar:ui:debug:input");
28132
28143
  logger.createLogger("almadar:ui:debug:collision");
28133
28144
  logger.createLogger("almadar:ui:debug:physics");
@@ -44009,11 +44020,11 @@ var init_Canvas3DErrorBoundary = __esm({
44009
44020
  "components/game/molecules/three/components/Canvas3DErrorBoundary.css"() {
44010
44021
  }
44011
44022
  });
44012
- var log8, Canvas3DErrorBoundary;
44023
+ var log9, Canvas3DErrorBoundary;
44013
44024
  var init_Canvas3DErrorBoundary2 = __esm({
44014
44025
  "components/game/molecules/three/components/Canvas3DErrorBoundary.tsx"() {
44015
44026
  init_Canvas3DErrorBoundary();
44016
- log8 = logger.createLogger("almadar:ui:game:canvas3d:error-boundary");
44027
+ log9 = logger.createLogger("almadar:ui:game:canvas3d:error-boundary");
44017
44028
  Canvas3DErrorBoundary = class extends React90.Component {
44018
44029
  constructor(props) {
44019
44030
  super(props);
@@ -44041,8 +44052,8 @@ var init_Canvas3DErrorBoundary2 = __esm({
44041
44052
  componentDidCatch(error, errorInfo) {
44042
44053
  this.setState({ errorInfo });
44043
44054
  this.props.onError?.(error, errorInfo);
44044
- log8.error("Error caught", { error });
44045
- log8.error("Component stack", { componentStack: errorInfo.componentStack ?? "<none>" });
44055
+ log9.error("Error caught", { error });
44056
+ log9.error("Component stack", { componentStack: errorInfo.componentStack ?? "<none>" });
44046
44057
  }
44047
44058
  render() {
44048
44059
  if (this.state.hasError) {
@@ -44105,7 +44116,7 @@ function useGLTFModel(url, resourceBasePath) {
44105
44116
  setState({ model: null, isLoading: false, error: null });
44106
44117
  return;
44107
44118
  }
44108
- log9.debug("Loading", { url });
44119
+ log10.debug("Loading", { url });
44109
44120
  setState((prev) => ({ ...prev, isLoading: true, error: null }));
44110
44121
  const assetRoot = resourceBasePath || detectAssetRoot2(url);
44111
44122
  const loader = new GLTFLoader.GLTFLoader();
@@ -44113,7 +44124,7 @@ function useGLTFModel(url, resourceBasePath) {
44113
44124
  loader.load(
44114
44125
  url,
44115
44126
  (gltf) => {
44116
- log9.debug("Loaded", { url });
44127
+ log10.debug("Loaded", { url });
44117
44128
  setState({
44118
44129
  model: gltf.scene,
44119
44130
  isLoading: false,
@@ -44122,7 +44133,7 @@ function useGLTFModel(url, resourceBasePath) {
44122
44133
  },
44123
44134
  void 0,
44124
44135
  (err) => {
44125
- log9.warn("Failed", { url, error: err instanceof Error ? err : String(err) });
44136
+ log10.warn("Failed", { url, error: err instanceof Error ? err : String(err) });
44126
44137
  setState({
44127
44138
  model: null,
44128
44139
  isLoading: false,
@@ -44238,11 +44249,11 @@ function ModelLoader({
44238
44249
  }
44239
44250
  );
44240
44251
  }
44241
- var log9;
44252
+ var log10;
44242
44253
  var init_ModelLoader = __esm({
44243
44254
  "components/game/molecules/three/components/ModelLoader.tsx"() {
44244
44255
  "use client";
44245
- log9 = logger.createLogger("almadar:ui:game:model-loader");
44256
+ log10 = logger.createLogger("almadar:ui:game:model-loader");
44246
44257
  }
44247
44258
  });
44248
44259
 
@@ -48547,7 +48558,7 @@ function getAllEvents(traits2) {
48547
48558
  function EventDispatcherTab({ traits: traits2, schema }) {
48548
48559
  const eventBus = useEventBus();
48549
48560
  const { t } = hooks.useTranslate();
48550
- const [log15, setLog] = React90__namespace.useState([]);
48561
+ const [log16, setLog] = React90__namespace.useState([]);
48551
48562
  const prevStatesRef = React90__namespace.useRef(/* @__PURE__ */ new Map());
48552
48563
  React90__namespace.useEffect(() => {
48553
48564
  for (const trait of traits2) {
@@ -48611,9 +48622,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
48611
48622
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
48612
48623
  /* @__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)) })
48613
48624
  ] }),
48614
- log15.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
48625
+ log16.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
48615
48626
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
48616
- /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log15.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
48627
+ /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log16.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
48617
48628
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
48618
48629
  " ",
48619
48630
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
@@ -53478,7 +53489,7 @@ function isPatternConfig(value) {
53478
53489
  if (value instanceof Date) return false;
53479
53490
  if (typeof value === "function") return false;
53480
53491
  const record = value;
53481
- return "type" in record && typeof record.type === "string";
53492
+ return "type" in record && typeof record.type === "string" && isKnownPattern(record.type);
53482
53493
  }
53483
53494
  function isPlainConfigObject(value) {
53484
53495
  if (React90__namespace.default.isValidElement(value)) return false;
@@ -57390,7 +57401,7 @@ function convertObjectProps(props) {
57390
57401
  function convertFnFormLambdasInProps(props) {
57391
57402
  return convertObjectProps(props);
57392
57403
  }
57393
- var log10 = logger.createLogger("almadar:ui:effects:client-handlers");
57404
+ var log11 = logger.createLogger("almadar:ui:effects:client-handlers");
57394
57405
  function createClientEffectHandlers(options) {
57395
57406
  const { eventBus, slotSetter, navigate, notify, callService, liveEntity } = options;
57396
57407
  return {
@@ -57399,11 +57410,11 @@ function createClientEffectHandlers(options) {
57399
57410
  eventBus.emit(prefixedEvent, payload);
57400
57411
  },
57401
57412
  persist: async () => {
57402
- log10.warn("persist is server-side only, ignored on client");
57413
+ log11.warn("persist is server-side only, ignored on client");
57403
57414
  },
57404
57415
  set: (_entityId, field, value) => {
57405
57416
  if (!liveEntity) {
57406
- log10.warn("set is server-side only, ignored on client (no live entity)");
57417
+ log11.warn("set is server-side only, ignored on client (no live entity)");
57407
57418
  return;
57408
57419
  }
57409
57420
  liveEntity[field] = value;
@@ -57435,10 +57446,10 @@ function createClientEffectHandlers(options) {
57435
57446
  slotSetter.addPattern(slot, pattern, props);
57436
57447
  },
57437
57448
  navigate: navigate ?? ((path) => {
57438
- log10.warn("No navigate handler, ignoring", { path });
57449
+ log11.warn("No navigate handler, ignoring", { path });
57439
57450
  }),
57440
57451
  notify: notify ?? ((msg, type) => {
57441
- log10.debug("notify", { type, message: msg });
57452
+ log11.debug("notify", { type, message: msg });
57442
57453
  })
57443
57454
  };
57444
57455
  }
@@ -57670,7 +57681,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57670
57681
  };
57671
57682
  }, [traitBindings]);
57672
57683
  const executeTransitionEffects = React90.useCallback(async (params) => {
57673
- const { binding, previousState, newState, payload, flushEvent, syncOnly, log: log15 } = params;
57684
+ const { binding, previousState, newState, payload, flushEvent, syncOnly, log: log16 } = params;
57674
57685
  const traitName = binding.trait.name;
57675
57686
  const linkedEntity = binding.linkedEntity || "";
57676
57687
  const entityId = payload?.entityId;
@@ -57758,7 +57769,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57758
57769
  ...handlers,
57759
57770
  set: async (targetId, field, value) => {
57760
57771
  if (baseSet) await baseSet(targetId, field, value);
57761
- log15.debug("set:write", {
57772
+ log16.debug("set:write", {
57762
57773
  traitName,
57763
57774
  field,
57764
57775
  value: JSON.stringify(value),
@@ -57798,7 +57809,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57798
57809
  const executor = new runtime.EffectExecutor({ handlers: trackingHandlers, bindings: bindingCtx, context: effectContext });
57799
57810
  try {
57800
57811
  await executor.executeAll(effects);
57801
- log15.debug("effects:executed", () => ({
57812
+ log16.debug("effects:executed", () => ({
57802
57813
  traitName,
57803
57814
  transition: `${previousState}->${newState}`,
57804
57815
  event: flushEvent,
@@ -57808,7 +57819,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57808
57819
  slotsTouched: Array.from(pendingSlots.keys()).join(",")
57809
57820
  }));
57810
57821
  for (const [slot, patterns] of pendingSlots) {
57811
- log15.debug("flush:slot", {
57822
+ log16.debug("flush:slot", {
57812
57823
  traitName,
57813
57824
  slot,
57814
57825
  patternCount: patterns.length,
@@ -57823,7 +57834,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57823
57834
  });
57824
57835
  }
57825
57836
  } catch (error) {
57826
- log15.error("effects:error", {
57837
+ log16.error("effects:error", {
57827
57838
  traitName,
57828
57839
  transition: `${previousState}->${newState}`,
57829
57840
  event: flushEvent,
@@ -58815,7 +58826,7 @@ OrbitalThemeProvider.displayName = "OrbitalThemeProvider";
58815
58826
  init_navigation();
58816
58827
  init_verificationRegistry();
58817
58828
  var PERF_NAMESPACE = "almadar:perf:canvas";
58818
- var log12 = logger.createLogger(PERF_NAMESPACE);
58829
+ var log13 = logger.createLogger(PERF_NAMESPACE);
58819
58830
  var RING_SIZE = 50;
58820
58831
  var ring = [];
58821
58832
  var writeIdx = 0;
@@ -58866,7 +58877,7 @@ function perfEnd(name, startToken, detail) {
58866
58877
  }
58867
58878
  }
58868
58879
  push({ name, durationMs, ts: endTs, detail });
58869
- log12.debug(name, () => ({ durationMs, ...detail ?? {} }));
58880
+ log13.debug(name, () => ({ durationMs, ...detail ?? {} }));
58870
58881
  }
58871
58882
  var profilerOnRender = (id, phase, actualDuration, baseDuration, _startTime, commitTime) => {
58872
58883
  if (!isEnabled()) return;
@@ -58876,7 +58887,7 @@ var profilerOnRender = (id, phase, actualDuration, baseDuration, _startTime, com
58876
58887
  ts: commitTime,
58877
58888
  detail: { baseDuration }
58878
58889
  });
58879
- log12.debug(`profiler:${id}:${phase}`, () => ({ actualDuration, baseDuration }));
58890
+ log13.debug(`profiler:${id}:${phase}`, () => ({ actualDuration, baseDuration }));
58880
58891
  };
58881
58892
 
58882
58893
  // runtime/prepareSchemaForPreview.ts
@@ -59519,7 +59530,7 @@ init_useEventBus();
59519
59530
  // components/avl/molecules/useCanvasDnd.tsx
59520
59531
  init_useEventBus();
59521
59532
  init_useAlmadarDndCollision();
59522
- var log13 = logger.createLogger("almadar:ui:canvas-dnd");
59533
+ var log14 = logger.createLogger("almadar:ui:canvas-dnd");
59523
59534
  function useCanvasDraggable({
59524
59535
  id,
59525
59536
  payload,
@@ -59558,7 +59569,7 @@ function defaultEmit(eventBus, drop) {
59558
59569
  if (payload.kind === "pattern") {
59559
59570
  const patternType = payload.data.type;
59560
59571
  if (typeof patternType !== "string") {
59561
- log13.warn("default-emit:pattern:missing-type");
59572
+ log14.warn("default-emit:pattern:missing-type");
59562
59573
  return;
59563
59574
  }
59564
59575
  const out = { patternType, containerNode: target.containerNode };
@@ -59567,23 +59578,23 @@ function defaultEmit(eventBus, drop) {
59567
59578
  out.index = resolved.index;
59568
59579
  }
59569
59580
  eventBus.emit("UI:PATTERN_DROP", out);
59570
- log13.info("default-emit:pattern", { patternType, level: target.level });
59581
+ log14.info("default-emit:pattern", { patternType, level: target.level });
59571
59582
  return;
59572
59583
  }
59573
59584
  if (payload.kind === "behavior") {
59574
59585
  const behaviorName = payload.data.name;
59575
59586
  if (typeof behaviorName !== "string") {
59576
- log13.warn("default-emit:behavior:missing-name");
59587
+ log14.warn("default-emit:behavior:missing-name");
59577
59588
  return;
59578
59589
  }
59579
59590
  eventBus.emit("UI:BEHAVIOR_DROP", {
59580
59591
  behaviorName,
59581
59592
  containerNode: target.containerNode
59582
59593
  });
59583
- log13.info("default-emit:behavior", { behaviorName, level: target.level });
59594
+ log14.info("default-emit:behavior", { behaviorName, level: target.level });
59584
59595
  return;
59585
59596
  }
59586
- log13.debug("default-emit:unhandled-kind", { kind: payload.kind });
59597
+ log14.debug("default-emit:unhandled-kind", { kind: payload.kind });
59587
59598
  }
59588
59599
  function CanvasDndProvider({
59589
59600
  children,
@@ -59599,9 +59610,9 @@ function CanvasDndProvider({
59599
59610
  if (payload) {
59600
59611
  setActivePayload(payload);
59601
59612
  eventBus.emit("UI:DRAG_START", { kind: payload.kind, data: payload.data });
59602
- log13.info("dragStart", { id: e.active.id, kind: payload.kind });
59613
+ log14.info("dragStart", { id: e.active.id, kind: payload.kind });
59603
59614
  } else {
59604
- log13.warn("dragStart:missing-payload", { id: e.active.id });
59615
+ log14.warn("dragStart:missing-payload", { id: e.active.id });
59605
59616
  }
59606
59617
  }, [eventBus]);
59607
59618
  const handleDragEnd = React90__namespace.default.useCallback((e) => {
@@ -59611,7 +59622,7 @@ function CanvasDndProvider({
59611
59622
  const overData = e.over?.data.current;
59612
59623
  const target = overData?.target;
59613
59624
  const accepts = overData?.accepts;
59614
- log13.info("dragEnd", {
59625
+ log14.info("dragEnd", {
59615
59626
  activeId: e.active.id,
59616
59627
  overId: e.over?.id,
59617
59628
  hasPayload: !!payload,
@@ -59623,7 +59634,7 @@ function CanvasDndProvider({
59623
59634
  }
59624
59635
  if (!payload || !target) return;
59625
59636
  if (accepts && !accepts.includes(payload.kind)) {
59626
- log13.debug("dragEnd:rejected:kind", { kind: payload.kind, accepts: [...accepts] });
59637
+ log14.debug("dragEnd:rejected:kind", { kind: payload.kind, accepts: [...accepts] });
59627
59638
  return;
59628
59639
  }
59629
59640
  const activator = e.activatorEvent;
@@ -59635,7 +59646,7 @@ function CanvasDndProvider({
59635
59646
  }, [eventBus, onDrop]);
59636
59647
  const handleDragCancel = React90__namespace.default.useCallback(() => {
59637
59648
  setActivePayload(null);
59638
- log13.info("dragCancel");
59649
+ log14.info("dragCancel");
59639
59650
  }, []);
59640
59651
  return /* @__PURE__ */ jsxRuntime.jsxs(
59641
59652
  core$1.DndContext,
@@ -61450,7 +61461,7 @@ init_AvlTransitionLane();
61450
61461
  init_AvlSwimLane();
61451
61462
  init_types();
61452
61463
  init_avl_elk_layout();
61453
- var log14 = logger.createLogger("almadar:ui:avl:trait-scene");
61464
+ var log15 = logger.createLogger("almadar:ui:avl:trait-scene");
61454
61465
  var SWIM_GUTTER2 = 120;
61455
61466
  var CENTER_W2 = 360;
61456
61467
  var AvlTraitScene = ({
@@ -61463,7 +61474,7 @@ var AvlTraitScene = ({
61463
61474
  const dataKey = React90.useMemo(() => JSON.stringify(data), [data]);
61464
61475
  React90.useEffect(() => {
61465
61476
  computeTraitLayout(data).then(setLayout).catch((error) => {
61466
- log14.error("computeTraitLayout failed", { error: error instanceof Error ? error : String(error) });
61477
+ log15.error("computeTraitLayout failed", { error: error instanceof Error ? error : String(error) });
61467
61478
  });
61468
61479
  }, [dataKey]);
61469
61480
  if (!layout) {