@almadar/ui 5.53.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");
@@ -31538,12 +31549,18 @@ function PlatformerCanvas({
31538
31549
  camX = Math.max(0, Math.min(px - cw / 2, ww - cw));
31539
31550
  camY = Math.max(0, Math.min(py - ch / 2 - 50, wh - ch));
31540
31551
  }
31541
- if (plats.length !== lastPlatCountRef.current) {
31552
+ const shouldDiag = plats.length !== lastPlatCountRef.current;
31553
+ if (shouldDiag) {
31542
31554
  lastPlatCountRef.current = plats.length;
31543
31555
  canvasLog.debug("draw:platforms", {
31544
31556
  platformCount: plats.length,
31545
31557
  camX,
31546
31558
  camY,
31559
+ plat0: JSON.stringify(plats[0]),
31560
+ plat2: JSON.stringify(plats[2]),
31561
+ tSpritesType: tSprites ? tSprites instanceof Map ? "Map" : typeof tSprites : "none",
31562
+ canvasW: canvas.width,
31563
+ canvasH: canvas.height,
31547
31564
  player: { x: px, y: py },
31548
31565
  worldWidth: ww,
31549
31566
  canvasWidth: cw,
@@ -31584,6 +31601,19 @@ function PlatformerCanvas({
31584
31601
  const platType = plat.type ?? "ground";
31585
31602
  const spriteUrl = tSprites?.[platType];
31586
31603
  const tileImg = spriteUrl ? loadImage(spriteUrl) : null;
31604
+ if (shouldDiag) {
31605
+ canvasLog.debug("plat:draw", {
31606
+ platType,
31607
+ platX,
31608
+ platY,
31609
+ w: plat.width,
31610
+ h: plat.height,
31611
+ branch: tileImg ? "tile" : "color",
31612
+ natW: tileImg?.naturalWidth,
31613
+ natH: tileImg?.naturalHeight,
31614
+ spriteUrl: spriteUrl ?? null
31615
+ });
31616
+ }
31587
31617
  if (tileImg) {
31588
31618
  const tileW = tileImg.naturalWidth;
31589
31619
  const tileH = tileImg.naturalHeight;
@@ -43990,11 +44020,11 @@ var init_Canvas3DErrorBoundary = __esm({
43990
44020
  "components/game/molecules/three/components/Canvas3DErrorBoundary.css"() {
43991
44021
  }
43992
44022
  });
43993
- var log8, Canvas3DErrorBoundary;
44023
+ var log9, Canvas3DErrorBoundary;
43994
44024
  var init_Canvas3DErrorBoundary2 = __esm({
43995
44025
  "components/game/molecules/three/components/Canvas3DErrorBoundary.tsx"() {
43996
44026
  init_Canvas3DErrorBoundary();
43997
- log8 = logger.createLogger("almadar:ui:game:canvas3d:error-boundary");
44027
+ log9 = logger.createLogger("almadar:ui:game:canvas3d:error-boundary");
43998
44028
  Canvas3DErrorBoundary = class extends React90.Component {
43999
44029
  constructor(props) {
44000
44030
  super(props);
@@ -44022,8 +44052,8 @@ var init_Canvas3DErrorBoundary2 = __esm({
44022
44052
  componentDidCatch(error, errorInfo) {
44023
44053
  this.setState({ errorInfo });
44024
44054
  this.props.onError?.(error, errorInfo);
44025
- log8.error("Error caught", { error });
44026
- log8.error("Component stack", { componentStack: errorInfo.componentStack ?? "<none>" });
44055
+ log9.error("Error caught", { error });
44056
+ log9.error("Component stack", { componentStack: errorInfo.componentStack ?? "<none>" });
44027
44057
  }
44028
44058
  render() {
44029
44059
  if (this.state.hasError) {
@@ -44086,7 +44116,7 @@ function useGLTFModel(url, resourceBasePath) {
44086
44116
  setState({ model: null, isLoading: false, error: null });
44087
44117
  return;
44088
44118
  }
44089
- log9.debug("Loading", { url });
44119
+ log10.debug("Loading", { url });
44090
44120
  setState((prev) => ({ ...prev, isLoading: true, error: null }));
44091
44121
  const assetRoot = resourceBasePath || detectAssetRoot2(url);
44092
44122
  const loader = new GLTFLoader.GLTFLoader();
@@ -44094,7 +44124,7 @@ function useGLTFModel(url, resourceBasePath) {
44094
44124
  loader.load(
44095
44125
  url,
44096
44126
  (gltf) => {
44097
- log9.debug("Loaded", { url });
44127
+ log10.debug("Loaded", { url });
44098
44128
  setState({
44099
44129
  model: gltf.scene,
44100
44130
  isLoading: false,
@@ -44103,7 +44133,7 @@ function useGLTFModel(url, resourceBasePath) {
44103
44133
  },
44104
44134
  void 0,
44105
44135
  (err) => {
44106
- log9.warn("Failed", { url, error: err instanceof Error ? err : String(err) });
44136
+ log10.warn("Failed", { url, error: err instanceof Error ? err : String(err) });
44107
44137
  setState({
44108
44138
  model: null,
44109
44139
  isLoading: false,
@@ -44219,11 +44249,11 @@ function ModelLoader({
44219
44249
  }
44220
44250
  );
44221
44251
  }
44222
- var log9;
44252
+ var log10;
44223
44253
  var init_ModelLoader = __esm({
44224
44254
  "components/game/molecules/three/components/ModelLoader.tsx"() {
44225
44255
  "use client";
44226
- log9 = logger.createLogger("almadar:ui:game:model-loader");
44256
+ log10 = logger.createLogger("almadar:ui:game:model-loader");
44227
44257
  }
44228
44258
  });
44229
44259
 
@@ -48528,7 +48558,7 @@ function getAllEvents(traits2) {
48528
48558
  function EventDispatcherTab({ traits: traits2, schema }) {
48529
48559
  const eventBus = useEventBus();
48530
48560
  const { t } = hooks.useTranslate();
48531
- const [log15, setLog] = React90__namespace.useState([]);
48561
+ const [log16, setLog] = React90__namespace.useState([]);
48532
48562
  const prevStatesRef = React90__namespace.useRef(/* @__PURE__ */ new Map());
48533
48563
  React90__namespace.useEffect(() => {
48534
48564
  for (const trait of traits2) {
@@ -48592,9 +48622,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
48592
48622
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
48593
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)) })
48594
48624
  ] }),
48595
- log15.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
48625
+ log16.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
48596
48626
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
48597
- /* @__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: [
48598
48628
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
48599
48629
  " ",
48600
48630
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
@@ -53459,7 +53489,7 @@ function isPatternConfig(value) {
53459
53489
  if (value instanceof Date) return false;
53460
53490
  if (typeof value === "function") return false;
53461
53491
  const record = value;
53462
- return "type" in record && typeof record.type === "string";
53492
+ return "type" in record && typeof record.type === "string" && isKnownPattern(record.type);
53463
53493
  }
53464
53494
  function isPlainConfigObject(value) {
53465
53495
  if (React90__namespace.default.isValidElement(value)) return false;
@@ -57371,7 +57401,7 @@ function convertObjectProps(props) {
57371
57401
  function convertFnFormLambdasInProps(props) {
57372
57402
  return convertObjectProps(props);
57373
57403
  }
57374
- var log10 = logger.createLogger("almadar:ui:effects:client-handlers");
57404
+ var log11 = logger.createLogger("almadar:ui:effects:client-handlers");
57375
57405
  function createClientEffectHandlers(options) {
57376
57406
  const { eventBus, slotSetter, navigate, notify, callService, liveEntity } = options;
57377
57407
  return {
@@ -57380,11 +57410,11 @@ function createClientEffectHandlers(options) {
57380
57410
  eventBus.emit(prefixedEvent, payload);
57381
57411
  },
57382
57412
  persist: async () => {
57383
- log10.warn("persist is server-side only, ignored on client");
57413
+ log11.warn("persist is server-side only, ignored on client");
57384
57414
  },
57385
57415
  set: (_entityId, field, value) => {
57386
57416
  if (!liveEntity) {
57387
- 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)");
57388
57418
  return;
57389
57419
  }
57390
57420
  liveEntity[field] = value;
@@ -57416,10 +57446,10 @@ function createClientEffectHandlers(options) {
57416
57446
  slotSetter.addPattern(slot, pattern, props);
57417
57447
  },
57418
57448
  navigate: navigate ?? ((path) => {
57419
- log10.warn("No navigate handler, ignoring", { path });
57449
+ log11.warn("No navigate handler, ignoring", { path });
57420
57450
  }),
57421
57451
  notify: notify ?? ((msg, type) => {
57422
- log10.debug("notify", { type, message: msg });
57452
+ log11.debug("notify", { type, message: msg });
57423
57453
  })
57424
57454
  };
57425
57455
  }
@@ -57651,7 +57681,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57651
57681
  };
57652
57682
  }, [traitBindings]);
57653
57683
  const executeTransitionEffects = React90.useCallback(async (params) => {
57654
- const { binding, previousState, newState, payload, flushEvent, syncOnly, log: log15 } = params;
57684
+ const { binding, previousState, newState, payload, flushEvent, syncOnly, log: log16 } = params;
57655
57685
  const traitName = binding.trait.name;
57656
57686
  const linkedEntity = binding.linkedEntity || "";
57657
57687
  const entityId = payload?.entityId;
@@ -57739,7 +57769,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57739
57769
  ...handlers,
57740
57770
  set: async (targetId, field, value) => {
57741
57771
  if (baseSet) await baseSet(targetId, field, value);
57742
- log15.debug("set:write", {
57772
+ log16.debug("set:write", {
57743
57773
  traitName,
57744
57774
  field,
57745
57775
  value: JSON.stringify(value),
@@ -57779,7 +57809,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57779
57809
  const executor = new runtime.EffectExecutor({ handlers: trackingHandlers, bindings: bindingCtx, context: effectContext });
57780
57810
  try {
57781
57811
  await executor.executeAll(effects);
57782
- log15.debug("effects:executed", () => ({
57812
+ log16.debug("effects:executed", () => ({
57783
57813
  traitName,
57784
57814
  transition: `${previousState}->${newState}`,
57785
57815
  event: flushEvent,
@@ -57789,7 +57819,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57789
57819
  slotsTouched: Array.from(pendingSlots.keys()).join(",")
57790
57820
  }));
57791
57821
  for (const [slot, patterns] of pendingSlots) {
57792
- log15.debug("flush:slot", {
57822
+ log16.debug("flush:slot", {
57793
57823
  traitName,
57794
57824
  slot,
57795
57825
  patternCount: patterns.length,
@@ -57804,7 +57834,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57804
57834
  });
57805
57835
  }
57806
57836
  } catch (error) {
57807
- log15.error("effects:error", {
57837
+ log16.error("effects:error", {
57808
57838
  traitName,
57809
57839
  transition: `${previousState}->${newState}`,
57810
57840
  event: flushEvent,
@@ -58796,7 +58826,7 @@ OrbitalThemeProvider.displayName = "OrbitalThemeProvider";
58796
58826
  init_navigation();
58797
58827
  init_verificationRegistry();
58798
58828
  var PERF_NAMESPACE = "almadar:perf:canvas";
58799
- var log12 = logger.createLogger(PERF_NAMESPACE);
58829
+ var log13 = logger.createLogger(PERF_NAMESPACE);
58800
58830
  var RING_SIZE = 50;
58801
58831
  var ring = [];
58802
58832
  var writeIdx = 0;
@@ -58847,7 +58877,7 @@ function perfEnd(name, startToken, detail) {
58847
58877
  }
58848
58878
  }
58849
58879
  push({ name, durationMs, ts: endTs, detail });
58850
- log12.debug(name, () => ({ durationMs, ...detail ?? {} }));
58880
+ log13.debug(name, () => ({ durationMs, ...detail ?? {} }));
58851
58881
  }
58852
58882
  var profilerOnRender = (id, phase, actualDuration, baseDuration, _startTime, commitTime) => {
58853
58883
  if (!isEnabled()) return;
@@ -58857,7 +58887,7 @@ var profilerOnRender = (id, phase, actualDuration, baseDuration, _startTime, com
58857
58887
  ts: commitTime,
58858
58888
  detail: { baseDuration }
58859
58889
  });
58860
- log12.debug(`profiler:${id}:${phase}`, () => ({ actualDuration, baseDuration }));
58890
+ log13.debug(`profiler:${id}:${phase}`, () => ({ actualDuration, baseDuration }));
58861
58891
  };
58862
58892
 
58863
58893
  // runtime/prepareSchemaForPreview.ts
@@ -59500,7 +59530,7 @@ init_useEventBus();
59500
59530
  // components/avl/molecules/useCanvasDnd.tsx
59501
59531
  init_useEventBus();
59502
59532
  init_useAlmadarDndCollision();
59503
- var log13 = logger.createLogger("almadar:ui:canvas-dnd");
59533
+ var log14 = logger.createLogger("almadar:ui:canvas-dnd");
59504
59534
  function useCanvasDraggable({
59505
59535
  id,
59506
59536
  payload,
@@ -59539,7 +59569,7 @@ function defaultEmit(eventBus, drop) {
59539
59569
  if (payload.kind === "pattern") {
59540
59570
  const patternType = payload.data.type;
59541
59571
  if (typeof patternType !== "string") {
59542
- log13.warn("default-emit:pattern:missing-type");
59572
+ log14.warn("default-emit:pattern:missing-type");
59543
59573
  return;
59544
59574
  }
59545
59575
  const out = { patternType, containerNode: target.containerNode };
@@ -59548,23 +59578,23 @@ function defaultEmit(eventBus, drop) {
59548
59578
  out.index = resolved.index;
59549
59579
  }
59550
59580
  eventBus.emit("UI:PATTERN_DROP", out);
59551
- log13.info("default-emit:pattern", { patternType, level: target.level });
59581
+ log14.info("default-emit:pattern", { patternType, level: target.level });
59552
59582
  return;
59553
59583
  }
59554
59584
  if (payload.kind === "behavior") {
59555
59585
  const behaviorName = payload.data.name;
59556
59586
  if (typeof behaviorName !== "string") {
59557
- log13.warn("default-emit:behavior:missing-name");
59587
+ log14.warn("default-emit:behavior:missing-name");
59558
59588
  return;
59559
59589
  }
59560
59590
  eventBus.emit("UI:BEHAVIOR_DROP", {
59561
59591
  behaviorName,
59562
59592
  containerNode: target.containerNode
59563
59593
  });
59564
- log13.info("default-emit:behavior", { behaviorName, level: target.level });
59594
+ log14.info("default-emit:behavior", { behaviorName, level: target.level });
59565
59595
  return;
59566
59596
  }
59567
- log13.debug("default-emit:unhandled-kind", { kind: payload.kind });
59597
+ log14.debug("default-emit:unhandled-kind", { kind: payload.kind });
59568
59598
  }
59569
59599
  function CanvasDndProvider({
59570
59600
  children,
@@ -59580,9 +59610,9 @@ function CanvasDndProvider({
59580
59610
  if (payload) {
59581
59611
  setActivePayload(payload);
59582
59612
  eventBus.emit("UI:DRAG_START", { kind: payload.kind, data: payload.data });
59583
- log13.info("dragStart", { id: e.active.id, kind: payload.kind });
59613
+ log14.info("dragStart", { id: e.active.id, kind: payload.kind });
59584
59614
  } else {
59585
- log13.warn("dragStart:missing-payload", { id: e.active.id });
59615
+ log14.warn("dragStart:missing-payload", { id: e.active.id });
59586
59616
  }
59587
59617
  }, [eventBus]);
59588
59618
  const handleDragEnd = React90__namespace.default.useCallback((e) => {
@@ -59592,7 +59622,7 @@ function CanvasDndProvider({
59592
59622
  const overData = e.over?.data.current;
59593
59623
  const target = overData?.target;
59594
59624
  const accepts = overData?.accepts;
59595
- log13.info("dragEnd", {
59625
+ log14.info("dragEnd", {
59596
59626
  activeId: e.active.id,
59597
59627
  overId: e.over?.id,
59598
59628
  hasPayload: !!payload,
@@ -59604,7 +59634,7 @@ function CanvasDndProvider({
59604
59634
  }
59605
59635
  if (!payload || !target) return;
59606
59636
  if (accepts && !accepts.includes(payload.kind)) {
59607
- log13.debug("dragEnd:rejected:kind", { kind: payload.kind, accepts: [...accepts] });
59637
+ log14.debug("dragEnd:rejected:kind", { kind: payload.kind, accepts: [...accepts] });
59608
59638
  return;
59609
59639
  }
59610
59640
  const activator = e.activatorEvent;
@@ -59616,7 +59646,7 @@ function CanvasDndProvider({
59616
59646
  }, [eventBus, onDrop]);
59617
59647
  const handleDragCancel = React90__namespace.default.useCallback(() => {
59618
59648
  setActivePayload(null);
59619
- log13.info("dragCancel");
59649
+ log14.info("dragCancel");
59620
59650
  }, []);
59621
59651
  return /* @__PURE__ */ jsxRuntime.jsxs(
59622
59652
  core$1.DndContext,
@@ -61431,7 +61461,7 @@ init_AvlTransitionLane();
61431
61461
  init_AvlSwimLane();
61432
61462
  init_types();
61433
61463
  init_avl_elk_layout();
61434
- var log14 = logger.createLogger("almadar:ui:avl:trait-scene");
61464
+ var log15 = logger.createLogger("almadar:ui:avl:trait-scene");
61435
61465
  var SWIM_GUTTER2 = 120;
61436
61466
  var CENTER_W2 = 360;
61437
61467
  var AvlTraitScene = ({
@@ -61444,7 +61474,7 @@ var AvlTraitScene = ({
61444
61474
  const dataKey = React90.useMemo(() => JSON.stringify(data), [data]);
61445
61475
  React90.useEffect(() => {
61446
61476
  computeTraitLayout(data).then(setLayout).catch((error) => {
61447
- log14.error("computeTraitLayout failed", { error: error instanceof Error ? error : String(error) });
61477
+ log15.error("computeTraitLayout failed", { error: error instanceof Error ? error : String(error) });
61448
61478
  });
61449
61479
  }, [dataKey]);
61450
61480
  if (!layout) {