@almadar/ui 4.16.1 → 4.16.3

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.
@@ -51772,6 +51772,13 @@ var crossTraitLog = createLogger("almadar:ui:cross-trait");
51772
51772
  var reducerMirrorLog = createLogger("almadar:ui:reducer-mirror");
51773
51773
  var flushLog = createLogger("almadar:ui:slot-flush");
51774
51774
  var stateLog = createLogger("almadar:ui:state-transitions");
51775
+ function readPayloadRows(payload) {
51776
+ const data = payload?.["data"];
51777
+ if (!Array.isArray(data)) return null;
51778
+ return data.filter(
51779
+ (v) => v !== null && typeof v === "object" && !Array.isArray(v) && !(v instanceof Date)
51780
+ );
51781
+ }
51775
51782
  function toTraitDefinition(binding) {
51776
51783
  return {
51777
51784
  name: binding.trait.name,
@@ -52422,6 +52429,12 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
52422
52429
  for (const transition of binding.trait.transitions) {
52423
52430
  allEvents.add(transition.event);
52424
52431
  }
52432
+ reducerMirrorLog.info("binding:transitions", {
52433
+ traitName: binding.trait.name,
52434
+ linkedEntity: binding.linkedEntity,
52435
+ transitions: binding.trait.transitions.map((t) => `${t.from}->${t.to}/${t.event}`).join(","),
52436
+ events: binding.trait.events.map((e) => e.key).join(",")
52437
+ });
52425
52438
  }
52426
52439
  console.log("[TraitStateMachine] Subscribing to events:", Array.from(allEvents));
52427
52440
  const unsubscribes = [];
@@ -52436,11 +52449,27 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
52436
52449
  }
52437
52450
  const selfBusKey = `UI:${orbitalName}.${traitName}.${eventKey}`;
52438
52451
  crossTraitLog.debug("self:subscribe", { traitName, busKey: selfBusKey, eventKey });
52452
+ const selfLinkedEntity = binding.linkedEntity;
52439
52453
  const unsub = eventBus.on(selfBusKey, (event) => {
52440
52454
  if (event.source && event.source.fromBridge) {
52441
52455
  crossTraitLog.debug("self:fire-skipped-bridge-echo", { traitName, busKey: selfBusKey, eventKey });
52442
52456
  return;
52443
52457
  }
52458
+ if (selfLinkedEntity) {
52459
+ const rowsFromPayload = readPayloadRows(event.payload);
52460
+ if (rowsFromPayload !== null) {
52461
+ const snapNow = traitSnapshotDataRef.current.get(traitName);
52462
+ if (snapNow) {
52463
+ snapNow.data[selfLinkedEntity] = rowsFromPayload;
52464
+ reducerMirrorLog.info("write:self-emit", {
52465
+ traitName,
52466
+ eventKey,
52467
+ linkedEntity: selfLinkedEntity,
52468
+ rowCount: rowsFromPayload.length
52469
+ });
52470
+ }
52471
+ }
52472
+ }
52444
52473
  crossTraitLog.info("self:fire", { traitName, busKey: selfBusKey, eventKey });
52445
52474
  enqueueAndDrain(eventKey, event.payload);
52446
52475
  });
package/dist/avl/index.js CHANGED
@@ -51726,6 +51726,13 @@ var crossTraitLog = createLogger("almadar:ui:cross-trait");
51726
51726
  var reducerMirrorLog = createLogger("almadar:ui:reducer-mirror");
51727
51727
  var flushLog = createLogger("almadar:ui:slot-flush");
51728
51728
  var stateLog = createLogger("almadar:ui:state-transitions");
51729
+ function readPayloadRows(payload) {
51730
+ const data = payload?.["data"];
51731
+ if (!Array.isArray(data)) return null;
51732
+ return data.filter(
51733
+ (v) => v !== null && typeof v === "object" && !Array.isArray(v) && !(v instanceof Date)
51734
+ );
51735
+ }
51729
51736
  function toTraitDefinition(binding) {
51730
51737
  return {
51731
51738
  name: binding.trait.name,
@@ -52376,6 +52383,12 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
52376
52383
  for (const transition of binding.trait.transitions) {
52377
52384
  allEvents.add(transition.event);
52378
52385
  }
52386
+ reducerMirrorLog.info("binding:transitions", {
52387
+ traitName: binding.trait.name,
52388
+ linkedEntity: binding.linkedEntity,
52389
+ transitions: binding.trait.transitions.map((t) => `${t.from}->${t.to}/${t.event}`).join(","),
52390
+ events: binding.trait.events.map((e) => e.key).join(",")
52391
+ });
52379
52392
  }
52380
52393
  console.log("[TraitStateMachine] Subscribing to events:", Array.from(allEvents));
52381
52394
  const unsubscribes = [];
@@ -52390,11 +52403,27 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
52390
52403
  }
52391
52404
  const selfBusKey = `UI:${orbitalName}.${traitName}.${eventKey}`;
52392
52405
  crossTraitLog.debug("self:subscribe", { traitName, busKey: selfBusKey, eventKey });
52406
+ const selfLinkedEntity = binding.linkedEntity;
52393
52407
  const unsub = eventBus.on(selfBusKey, (event) => {
52394
52408
  if (event.source && event.source.fromBridge) {
52395
52409
  crossTraitLog.debug("self:fire-skipped-bridge-echo", { traitName, busKey: selfBusKey, eventKey });
52396
52410
  return;
52397
52411
  }
52412
+ if (selfLinkedEntity) {
52413
+ const rowsFromPayload = readPayloadRows(event.payload);
52414
+ if (rowsFromPayload !== null) {
52415
+ const snapNow = traitSnapshotDataRef.current.get(traitName);
52416
+ if (snapNow) {
52417
+ snapNow.data[selfLinkedEntity] = rowsFromPayload;
52418
+ reducerMirrorLog.info("write:self-emit", {
52419
+ traitName,
52420
+ eventKey,
52421
+ linkedEntity: selfLinkedEntity,
52422
+ rowCount: rowsFromPayload.length
52423
+ });
52424
+ }
52425
+ }
52426
+ }
52398
52427
  crossTraitLog.info("self:fire", { traitName, busKey: selfBusKey, eventKey });
52399
52428
  enqueueAndDrain(eventKey, event.payload);
52400
52429
  });
@@ -38299,6 +38299,13 @@ var crossTraitLog = createLogger("almadar:ui:cross-trait");
38299
38299
  var reducerMirrorLog = createLogger("almadar:ui:reducer-mirror");
38300
38300
  var flushLog = createLogger("almadar:ui:slot-flush");
38301
38301
  var stateLog = createLogger("almadar:ui:state-transitions");
38302
+ function readPayloadRows(payload) {
38303
+ const data = payload?.["data"];
38304
+ if (!Array.isArray(data)) return null;
38305
+ return data.filter(
38306
+ (v) => v !== null && typeof v === "object" && !Array.isArray(v) && !(v instanceof Date)
38307
+ );
38308
+ }
38302
38309
  function toTraitDefinition(binding) {
38303
38310
  return {
38304
38311
  name: binding.trait.name,
@@ -38949,6 +38956,12 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
38949
38956
  for (const transition of binding.trait.transitions) {
38950
38957
  allEvents.add(transition.event);
38951
38958
  }
38959
+ reducerMirrorLog.info("binding:transitions", {
38960
+ traitName: binding.trait.name,
38961
+ linkedEntity: binding.linkedEntity,
38962
+ transitions: binding.trait.transitions.map((t) => `${t.from}->${t.to}/${t.event}`).join(","),
38963
+ events: binding.trait.events.map((e) => e.key).join(",")
38964
+ });
38952
38965
  }
38953
38966
  console.log("[TraitStateMachine] Subscribing to events:", Array.from(allEvents));
38954
38967
  const unsubscribes = [];
@@ -38963,11 +38976,27 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
38963
38976
  }
38964
38977
  const selfBusKey = `UI:${orbitalName}.${traitName}.${eventKey}`;
38965
38978
  crossTraitLog.debug("self:subscribe", { traitName, busKey: selfBusKey, eventKey });
38979
+ const selfLinkedEntity = binding.linkedEntity;
38966
38980
  const unsub = eventBus.on(selfBusKey, (event) => {
38967
38981
  if (event.source && event.source.fromBridge) {
38968
38982
  crossTraitLog.debug("self:fire-skipped-bridge-echo", { traitName, busKey: selfBusKey, eventKey });
38969
38983
  return;
38970
38984
  }
38985
+ if (selfLinkedEntity) {
38986
+ const rowsFromPayload = readPayloadRows(event.payload);
38987
+ if (rowsFromPayload !== null) {
38988
+ const snapNow = traitSnapshotDataRef.current.get(traitName);
38989
+ if (snapNow) {
38990
+ snapNow.data[selfLinkedEntity] = rowsFromPayload;
38991
+ reducerMirrorLog.info("write:self-emit", {
38992
+ traitName,
38993
+ eventKey,
38994
+ linkedEntity: selfLinkedEntity,
38995
+ rowCount: rowsFromPayload.length
38996
+ });
38997
+ }
38998
+ }
38999
+ }
38971
39000
  crossTraitLog.info("self:fire", { traitName, busKey: selfBusKey, eventKey });
38972
39001
  enqueueAndDrain(eventKey, event.payload);
38973
39002
  });
@@ -38254,6 +38254,13 @@ var crossTraitLog = createLogger("almadar:ui:cross-trait");
38254
38254
  var reducerMirrorLog = createLogger("almadar:ui:reducer-mirror");
38255
38255
  var flushLog = createLogger("almadar:ui:slot-flush");
38256
38256
  var stateLog = createLogger("almadar:ui:state-transitions");
38257
+ function readPayloadRows(payload) {
38258
+ const data = payload?.["data"];
38259
+ if (!Array.isArray(data)) return null;
38260
+ return data.filter(
38261
+ (v) => v !== null && typeof v === "object" && !Array.isArray(v) && !(v instanceof Date)
38262
+ );
38263
+ }
38257
38264
  function toTraitDefinition(binding) {
38258
38265
  return {
38259
38266
  name: binding.trait.name,
@@ -38904,6 +38911,12 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
38904
38911
  for (const transition of binding.trait.transitions) {
38905
38912
  allEvents.add(transition.event);
38906
38913
  }
38914
+ reducerMirrorLog.info("binding:transitions", {
38915
+ traitName: binding.trait.name,
38916
+ linkedEntity: binding.linkedEntity,
38917
+ transitions: binding.trait.transitions.map((t) => `${t.from}->${t.to}/${t.event}`).join(","),
38918
+ events: binding.trait.events.map((e) => e.key).join(",")
38919
+ });
38907
38920
  }
38908
38921
  console.log("[TraitStateMachine] Subscribing to events:", Array.from(allEvents));
38909
38922
  const unsubscribes = [];
@@ -38918,11 +38931,27 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
38918
38931
  }
38919
38932
  const selfBusKey = `UI:${orbitalName}.${traitName}.${eventKey}`;
38920
38933
  crossTraitLog.debug("self:subscribe", { traitName, busKey: selfBusKey, eventKey });
38934
+ const selfLinkedEntity = binding.linkedEntity;
38921
38935
  const unsub = eventBus.on(selfBusKey, (event) => {
38922
38936
  if (event.source && event.source.fromBridge) {
38923
38937
  crossTraitLog.debug("self:fire-skipped-bridge-echo", { traitName, busKey: selfBusKey, eventKey });
38924
38938
  return;
38925
38939
  }
38940
+ if (selfLinkedEntity) {
38941
+ const rowsFromPayload = readPayloadRows(event.payload);
38942
+ if (rowsFromPayload !== null) {
38943
+ const snapNow = traitSnapshotDataRef.current.get(traitName);
38944
+ if (snapNow) {
38945
+ snapNow.data[selfLinkedEntity] = rowsFromPayload;
38946
+ reducerMirrorLog.info("write:self-emit", {
38947
+ traitName,
38948
+ eventKey,
38949
+ linkedEntity: selfLinkedEntity,
38950
+ rowCount: rowsFromPayload.length
38951
+ });
38952
+ }
38953
+ }
38954
+ }
38926
38955
  crossTraitLog.info("self:fire", { traitName, busKey: selfBusKey, eventKey });
38927
38956
  enqueueAndDrain(eventKey, event.payload);
38928
38957
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "4.16.1",
3
+ "version": "4.16.3",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "main": "./dist/components/index.js",