@almadar/ui 5.50.0 → 5.51.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.
@@ -57426,6 +57426,7 @@ var SYNC_TICK_OPERATORS = /* @__PURE__ */ new Set([
57426
57426
  "do",
57427
57427
  "when"
57428
57428
  ]);
57429
+ var LIFECYCLE_EVENTS = ["INIT", "LOAD", "$MOUNT"];
57429
57430
  function toTraitDefinition(binding) {
57430
57431
  return {
57431
57432
  name: binding.trait.name,
@@ -57458,6 +57459,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57458
57459
  });
57459
57460
  const eventQueueRef = React90.useRef([]);
57460
57461
  const processingRef = React90.useRef(false);
57462
+ const initedTraitsRef = React90.useRef(/* @__PURE__ */ new Set());
57461
57463
  const traitBindingsRef = React90.useRef(traitBindings);
57462
57464
  const managerRef = React90.useRef(manager);
57463
57465
  const uiSlotsRef = React90.useRef(uiSlots);
@@ -58070,7 +58072,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
58070
58072
  if (!orbitalName) continue;
58071
58073
  for (const transition of binding.trait.transitions) {
58072
58074
  const eventKey = transition.event;
58073
- if (eventKey === "INIT" || eventKey === "LOAD" || eventKey === "$MOUNT") {
58075
+ if (LIFECYCLE_EVENTS.includes(eventKey)) {
58074
58076
  continue;
58075
58077
  }
58076
58078
  const selfBusKey = `UI:${orbitalName}.${traitName}.${eventKey}`;
@@ -58125,6 +58127,24 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
58125
58127
  crossTraitLog.debug("cleanup:done", {});
58126
58128
  };
58127
58129
  }, [traitBindings, eventBus, enqueueAndDrain]);
58130
+ React90.useEffect(() => {
58131
+ const mgr = managerRef.current;
58132
+ const inited = initedTraitsRef.current;
58133
+ for (const binding of traitBindings) {
58134
+ const traitName = binding.trait.name;
58135
+ if (inited.has(traitName)) continue;
58136
+ const lifecycleEvent = LIFECYCLE_EVENTS.find(
58137
+ (evt) => mgr.canHandleEvent(traitName, evt)
58138
+ );
58139
+ if (lifecycleEvent === void 0) continue;
58140
+ inited.add(traitName);
58141
+ stateLog.debug("mount:fire-lifecycle", { traitName, event: lifecycleEvent });
58142
+ enqueueAndDrain(lifecycleEvent, {});
58143
+ }
58144
+ return () => {
58145
+ initedTraitsRef.current = /* @__PURE__ */ new Set();
58146
+ };
58147
+ }, [traitBindings, enqueueAndDrain]);
58128
58148
  return {
58129
58149
  traitStates,
58130
58150
  sendEvent,
package/dist/avl/index.js CHANGED
@@ -57379,6 +57379,7 @@ var SYNC_TICK_OPERATORS = /* @__PURE__ */ new Set([
57379
57379
  "do",
57380
57380
  "when"
57381
57381
  ]);
57382
+ var LIFECYCLE_EVENTS = ["INIT", "LOAD", "$MOUNT"];
57382
57383
  function toTraitDefinition(binding) {
57383
57384
  return {
57384
57385
  name: binding.trait.name,
@@ -57411,6 +57412,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
57411
57412
  });
57412
57413
  const eventQueueRef = useRef([]);
57413
57414
  const processingRef = useRef(false);
57415
+ const initedTraitsRef = useRef(/* @__PURE__ */ new Set());
57414
57416
  const traitBindingsRef = useRef(traitBindings);
57415
57417
  const managerRef = useRef(manager);
57416
57418
  const uiSlotsRef = useRef(uiSlots);
@@ -58023,7 +58025,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
58023
58025
  if (!orbitalName) continue;
58024
58026
  for (const transition of binding.trait.transitions) {
58025
58027
  const eventKey = transition.event;
58026
- if (eventKey === "INIT" || eventKey === "LOAD" || eventKey === "$MOUNT") {
58028
+ if (LIFECYCLE_EVENTS.includes(eventKey)) {
58027
58029
  continue;
58028
58030
  }
58029
58031
  const selfBusKey = `UI:${orbitalName}.${traitName}.${eventKey}`;
@@ -58078,6 +58080,24 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
58078
58080
  crossTraitLog.debug("cleanup:done", {});
58079
58081
  };
58080
58082
  }, [traitBindings, eventBus, enqueueAndDrain]);
58083
+ useEffect(() => {
58084
+ const mgr = managerRef.current;
58085
+ const inited = initedTraitsRef.current;
58086
+ for (const binding of traitBindings) {
58087
+ const traitName = binding.trait.name;
58088
+ if (inited.has(traitName)) continue;
58089
+ const lifecycleEvent = LIFECYCLE_EVENTS.find(
58090
+ (evt) => mgr.canHandleEvent(traitName, evt)
58091
+ );
58092
+ if (lifecycleEvent === void 0) continue;
58093
+ inited.add(traitName);
58094
+ stateLog.debug("mount:fire-lifecycle", { traitName, event: lifecycleEvent });
58095
+ enqueueAndDrain(lifecycleEvent, {});
58096
+ }
58097
+ return () => {
58098
+ initedTraitsRef.current = /* @__PURE__ */ new Set();
58099
+ };
58100
+ }, [traitBindings, enqueueAndDrain]);
58081
58101
  return {
58082
58102
  traitStates,
58083
58103
  sendEvent,
@@ -51480,6 +51480,7 @@ var SYNC_TICK_OPERATORS = /* @__PURE__ */ new Set([
51480
51480
  "do",
51481
51481
  "when"
51482
51482
  ]);
51483
+ var LIFECYCLE_EVENTS = ["INIT", "LOAD", "$MOUNT"];
51483
51484
  function toTraitDefinition(binding) {
51484
51485
  return {
51485
51486
  name: binding.trait.name,
@@ -51512,6 +51513,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
51512
51513
  });
51513
51514
  const eventQueueRef = React81.useRef([]);
51514
51515
  const processingRef = React81.useRef(false);
51516
+ const initedTraitsRef = React81.useRef(/* @__PURE__ */ new Set());
51515
51517
  const traitBindingsRef = React81.useRef(traitBindings);
51516
51518
  const managerRef = React81.useRef(manager);
51517
51519
  const uiSlotsRef = React81.useRef(uiSlots);
@@ -52124,7 +52126,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
52124
52126
  if (!orbitalName) continue;
52125
52127
  for (const transition of binding.trait.transitions) {
52126
52128
  const eventKey = transition.event;
52127
- if (eventKey === "INIT" || eventKey === "LOAD" || eventKey === "$MOUNT") {
52129
+ if (LIFECYCLE_EVENTS.includes(eventKey)) {
52128
52130
  continue;
52129
52131
  }
52130
52132
  const selfBusKey = `UI:${orbitalName}.${traitName}.${eventKey}`;
@@ -52179,6 +52181,24 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
52179
52181
  crossTraitLog.debug("cleanup:done", {});
52180
52182
  };
52181
52183
  }, [traitBindings, eventBus, enqueueAndDrain]);
52184
+ React81.useEffect(() => {
52185
+ const mgr = managerRef.current;
52186
+ const inited = initedTraitsRef.current;
52187
+ for (const binding of traitBindings) {
52188
+ const traitName = binding.trait.name;
52189
+ if (inited.has(traitName)) continue;
52190
+ const lifecycleEvent = LIFECYCLE_EVENTS.find(
52191
+ (evt) => mgr.canHandleEvent(traitName, evt)
52192
+ );
52193
+ if (lifecycleEvent === void 0) continue;
52194
+ inited.add(traitName);
52195
+ stateLog.debug("mount:fire-lifecycle", { traitName, event: lifecycleEvent });
52196
+ enqueueAndDrain(lifecycleEvent, {});
52197
+ }
52198
+ return () => {
52199
+ initedTraitsRef.current = /* @__PURE__ */ new Set();
52200
+ };
52201
+ }, [traitBindings, enqueueAndDrain]);
52182
52202
  return {
52183
52203
  traitStates,
52184
52204
  sendEvent,
@@ -51433,6 +51433,7 @@ var SYNC_TICK_OPERATORS = /* @__PURE__ */ new Set([
51433
51433
  "do",
51434
51434
  "when"
51435
51435
  ]);
51436
+ var LIFECYCLE_EVENTS = ["INIT", "LOAD", "$MOUNT"];
51436
51437
  function toTraitDefinition(binding) {
51437
51438
  return {
51438
51439
  name: binding.trait.name,
@@ -51465,6 +51466,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
51465
51466
  });
51466
51467
  const eventQueueRef = useRef([]);
51467
51468
  const processingRef = useRef(false);
51469
+ const initedTraitsRef = useRef(/* @__PURE__ */ new Set());
51468
51470
  const traitBindingsRef = useRef(traitBindings);
51469
51471
  const managerRef = useRef(manager);
51470
51472
  const uiSlotsRef = useRef(uiSlots);
@@ -52077,7 +52079,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
52077
52079
  if (!orbitalName) continue;
52078
52080
  for (const transition of binding.trait.transitions) {
52079
52081
  const eventKey = transition.event;
52080
- if (eventKey === "INIT" || eventKey === "LOAD" || eventKey === "$MOUNT") {
52082
+ if (LIFECYCLE_EVENTS.includes(eventKey)) {
52081
52083
  continue;
52082
52084
  }
52083
52085
  const selfBusKey = `UI:${orbitalName}.${traitName}.${eventKey}`;
@@ -52132,6 +52134,24 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
52132
52134
  crossTraitLog.debug("cleanup:done", {});
52133
52135
  };
52134
52136
  }, [traitBindings, eventBus, enqueueAndDrain]);
52137
+ useEffect(() => {
52138
+ const mgr = managerRef.current;
52139
+ const inited = initedTraitsRef.current;
52140
+ for (const binding of traitBindings) {
52141
+ const traitName = binding.trait.name;
52142
+ if (inited.has(traitName)) continue;
52143
+ const lifecycleEvent = LIFECYCLE_EVENTS.find(
52144
+ (evt) => mgr.canHandleEvent(traitName, evt)
52145
+ );
52146
+ if (lifecycleEvent === void 0) continue;
52147
+ inited.add(traitName);
52148
+ stateLog.debug("mount:fire-lifecycle", { traitName, event: lifecycleEvent });
52149
+ enqueueAndDrain(lifecycleEvent, {});
52150
+ }
52151
+ return () => {
52152
+ initedTraitsRef.current = /* @__PURE__ */ new Set();
52153
+ };
52154
+ }, [traitBindings, enqueueAndDrain]);
52135
52155
  return {
52136
52156
  traitStates,
52137
52157
  sendEvent,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "5.50.0",
3
+ "version": "5.51.0",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "sideEffects": [