@almadar/ui 4.6.10 → 4.6.12
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.
- package/dist/avl/index.cjs +43 -5
- package/dist/avl/index.js +43 -5
- package/dist/runtime/index.cjs +43 -5
- package/dist/runtime/index.js +43 -5
- package/dist/runtime/useTraitStateMachine.d.ts +8 -0
- package/package.json +1 -1
package/dist/avl/index.cjs
CHANGED
|
@@ -51499,16 +51499,18 @@ function normalizeEventKey(eventKey) {
|
|
|
51499
51499
|
function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
51500
51500
|
const eventBus = useEventBus();
|
|
51501
51501
|
const { entities } = useEntitySchema();
|
|
51502
|
+
const traitConfigsByName = options?.traitConfigsByName;
|
|
51502
51503
|
const manager = React127.useMemo(() => {
|
|
51503
51504
|
const traitDefs = traitBindings.map(toTraitDefinition);
|
|
51504
51505
|
const m = new runtime.StateMachineManager(traitDefs);
|
|
51505
51506
|
for (const binding of traitBindings) {
|
|
51506
|
-
|
|
51507
|
-
|
|
51507
|
+
const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
|
|
51508
|
+
if (cfg !== void 0) {
|
|
51509
|
+
m.setTraitConfig(binding.trait.name, cfg);
|
|
51508
51510
|
}
|
|
51509
51511
|
}
|
|
51510
51512
|
return m;
|
|
51511
|
-
}, [traitBindings]);
|
|
51513
|
+
}, [traitBindings, traitConfigsByName]);
|
|
51512
51514
|
const [traitStates, setTraitStates] = React127.useState(() => {
|
|
51513
51515
|
return manager.getAllStates();
|
|
51514
51516
|
});
|
|
@@ -51710,6 +51712,14 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
|
51710
51712
|
const actions = slotsActionsRef.current;
|
|
51711
51713
|
console.log("[TraitStateMachine] Processing event:", normalizedEvent, "payload:", payload);
|
|
51712
51714
|
const bindingMap = new Map(bindings.map((b) => [b.trait.name, b]));
|
|
51715
|
+
for (const traitName of bindingMap.keys()) {
|
|
51716
|
+
const traitState = currentManager.getState(traitName);
|
|
51717
|
+
eventBus.emit(`${traitName}:DISPATCH`, {
|
|
51718
|
+
event: normalizedEvent,
|
|
51719
|
+
payload,
|
|
51720
|
+
currentState: traitState?.currentState
|
|
51721
|
+
});
|
|
51722
|
+
}
|
|
51713
51723
|
const results = currentManager.sendEvent(normalizedEvent, payload);
|
|
51714
51724
|
const emittedByTrait = /* @__PURE__ */ new Map();
|
|
51715
51725
|
for (const { traitName, result } of results) {
|
|
@@ -51892,6 +51902,15 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
|
51892
51902
|
}
|
|
51893
51903
|
}
|
|
51894
51904
|
}
|
|
51905
|
+
for (const { traitName, result } of results) {
|
|
51906
|
+
const suffix = result.executed ? "SUCCESS" : "ERROR";
|
|
51907
|
+
eventBus.emit(`${traitName}:${normalizedEvent}:${suffix}`, {
|
|
51908
|
+
event: normalizedEvent,
|
|
51909
|
+
payload,
|
|
51910
|
+
newState: result.newState,
|
|
51911
|
+
currentState: result.previousState
|
|
51912
|
+
});
|
|
51913
|
+
}
|
|
51895
51914
|
for (const { traitName, result } of results) {
|
|
51896
51915
|
if (result.executed) {
|
|
51897
51916
|
updateTraitState(traitName, result.newState);
|
|
@@ -52338,7 +52357,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
52338
52357
|
}
|
|
52339
52358
|
}
|
|
52340
52359
|
}
|
|
52341
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
52360
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
52342
52361
|
const slotsActions = useSlotsActions();
|
|
52343
52362
|
const bridge = useServerBridge();
|
|
52344
52363
|
const uiSlots = useUISlots();
|
|
@@ -52350,7 +52369,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
52350
52369
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
52351
52370
|
}
|
|
52352
52371
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
52353
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
52372
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
52354
52373
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
52355
52374
|
const initSentRef = React127.useRef(false);
|
|
52356
52375
|
React127.useEffect(() => {
|
|
@@ -52421,6 +52440,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52421
52440
|
if (!orbitals) return [];
|
|
52422
52441
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
52423
52442
|
}, [schema]);
|
|
52443
|
+
const traitConfigsByName = React127.useMemo(() => {
|
|
52444
|
+
const map = {};
|
|
52445
|
+
const parsed = schema;
|
|
52446
|
+
const orbitals = parsed?.orbitals;
|
|
52447
|
+
if (!orbitals) return map;
|
|
52448
|
+
for (const orb of orbitals) {
|
|
52449
|
+
const traits3 = orb.traits;
|
|
52450
|
+
if (!traits3) continue;
|
|
52451
|
+
for (const t of traits3) {
|
|
52452
|
+
const name = t.name ?? t.ref;
|
|
52453
|
+
const config = t.config;
|
|
52454
|
+
if (typeof name === "string" && config !== void 0) {
|
|
52455
|
+
map[name] = config;
|
|
52456
|
+
}
|
|
52457
|
+
}
|
|
52458
|
+
}
|
|
52459
|
+
return map;
|
|
52460
|
+
}, [schema]);
|
|
52424
52461
|
const inner = /* @__PURE__ */ jsxRuntime.jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
52425
52462
|
EntitySchemaProvider,
|
|
52426
52463
|
{
|
|
@@ -52444,6 +52481,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52444
52481
|
{
|
|
52445
52482
|
traits: allPageTraits,
|
|
52446
52483
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
52484
|
+
traitConfigsByName,
|
|
52447
52485
|
onNavigate,
|
|
52448
52486
|
onLocalFallback,
|
|
52449
52487
|
persistence
|
package/dist/avl/index.js
CHANGED
|
@@ -51453,16 +51453,18 @@ function normalizeEventKey(eventKey) {
|
|
|
51453
51453
|
function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
51454
51454
|
const eventBus = useEventBus();
|
|
51455
51455
|
const { entities } = useEntitySchema();
|
|
51456
|
+
const traitConfigsByName = options?.traitConfigsByName;
|
|
51456
51457
|
const manager = useMemo(() => {
|
|
51457
51458
|
const traitDefs = traitBindings.map(toTraitDefinition);
|
|
51458
51459
|
const m = new StateMachineManager(traitDefs);
|
|
51459
51460
|
for (const binding of traitBindings) {
|
|
51460
|
-
|
|
51461
|
-
|
|
51461
|
+
const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
|
|
51462
|
+
if (cfg !== void 0) {
|
|
51463
|
+
m.setTraitConfig(binding.trait.name, cfg);
|
|
51462
51464
|
}
|
|
51463
51465
|
}
|
|
51464
51466
|
return m;
|
|
51465
|
-
}, [traitBindings]);
|
|
51467
|
+
}, [traitBindings, traitConfigsByName]);
|
|
51466
51468
|
const [traitStates, setTraitStates] = useState(() => {
|
|
51467
51469
|
return manager.getAllStates();
|
|
51468
51470
|
});
|
|
@@ -51664,6 +51666,14 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
|
51664
51666
|
const actions = slotsActionsRef.current;
|
|
51665
51667
|
console.log("[TraitStateMachine] Processing event:", normalizedEvent, "payload:", payload);
|
|
51666
51668
|
const bindingMap = new Map(bindings.map((b) => [b.trait.name, b]));
|
|
51669
|
+
for (const traitName of bindingMap.keys()) {
|
|
51670
|
+
const traitState = currentManager.getState(traitName);
|
|
51671
|
+
eventBus.emit(`${traitName}:DISPATCH`, {
|
|
51672
|
+
event: normalizedEvent,
|
|
51673
|
+
payload,
|
|
51674
|
+
currentState: traitState?.currentState
|
|
51675
|
+
});
|
|
51676
|
+
}
|
|
51667
51677
|
const results = currentManager.sendEvent(normalizedEvent, payload);
|
|
51668
51678
|
const emittedByTrait = /* @__PURE__ */ new Map();
|
|
51669
51679
|
for (const { traitName, result } of results) {
|
|
@@ -51846,6 +51856,15 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
|
51846
51856
|
}
|
|
51847
51857
|
}
|
|
51848
51858
|
}
|
|
51859
|
+
for (const { traitName, result } of results) {
|
|
51860
|
+
const suffix = result.executed ? "SUCCESS" : "ERROR";
|
|
51861
|
+
eventBus.emit(`${traitName}:${normalizedEvent}:${suffix}`, {
|
|
51862
|
+
event: normalizedEvent,
|
|
51863
|
+
payload,
|
|
51864
|
+
newState: result.newState,
|
|
51865
|
+
currentState: result.previousState
|
|
51866
|
+
});
|
|
51867
|
+
}
|
|
51849
51868
|
for (const { traitName, result } of results) {
|
|
51850
51869
|
if (result.executed) {
|
|
51851
51870
|
updateTraitState(traitName, result.newState);
|
|
@@ -52292,7 +52311,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
52292
52311
|
}
|
|
52293
52312
|
}
|
|
52294
52313
|
}
|
|
52295
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
52314
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
52296
52315
|
const slotsActions = useSlotsActions();
|
|
52297
52316
|
const bridge = useServerBridge();
|
|
52298
52317
|
const uiSlots = useUISlots();
|
|
@@ -52304,7 +52323,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
52304
52323
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
52305
52324
|
}
|
|
52306
52325
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
52307
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
52326
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
52308
52327
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
52309
52328
|
const initSentRef = useRef(false);
|
|
52310
52329
|
useEffect(() => {
|
|
@@ -52375,6 +52394,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52375
52394
|
if (!orbitals) return [];
|
|
52376
52395
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
52377
52396
|
}, [schema]);
|
|
52397
|
+
const traitConfigsByName = useMemo(() => {
|
|
52398
|
+
const map = {};
|
|
52399
|
+
const parsed = schema;
|
|
52400
|
+
const orbitals = parsed?.orbitals;
|
|
52401
|
+
if (!orbitals) return map;
|
|
52402
|
+
for (const orb of orbitals) {
|
|
52403
|
+
const traits3 = orb.traits;
|
|
52404
|
+
if (!traits3) continue;
|
|
52405
|
+
for (const t of traits3) {
|
|
52406
|
+
const name = t.name ?? t.ref;
|
|
52407
|
+
const config = t.config;
|
|
52408
|
+
if (typeof name === "string" && config !== void 0) {
|
|
52409
|
+
map[name] = config;
|
|
52410
|
+
}
|
|
52411
|
+
}
|
|
52412
|
+
}
|
|
52413
|
+
return map;
|
|
52414
|
+
}, [schema]);
|
|
52378
52415
|
const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(
|
|
52379
52416
|
EntitySchemaProvider,
|
|
52380
52417
|
{
|
|
@@ -52398,6 +52435,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52398
52435
|
{
|
|
52399
52436
|
traits: allPageTraits,
|
|
52400
52437
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
52438
|
+
traitConfigsByName,
|
|
52401
52439
|
onNavigate,
|
|
52402
52440
|
onLocalFallback,
|
|
52403
52441
|
persistence
|
package/dist/runtime/index.cjs
CHANGED
|
@@ -38178,16 +38178,18 @@ function normalizeEventKey(eventKey) {
|
|
|
38178
38178
|
function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
38179
38179
|
const eventBus = useEventBus();
|
|
38180
38180
|
const { entities } = useEntitySchema();
|
|
38181
|
+
const traitConfigsByName = options?.traitConfigsByName;
|
|
38181
38182
|
const manager = React115.useMemo(() => {
|
|
38182
38183
|
const traitDefs = traitBindings.map(toTraitDefinition);
|
|
38183
38184
|
const m = new runtime.StateMachineManager(traitDefs);
|
|
38184
38185
|
for (const binding of traitBindings) {
|
|
38185
|
-
|
|
38186
|
-
|
|
38186
|
+
const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
|
|
38187
|
+
if (cfg !== void 0) {
|
|
38188
|
+
m.setTraitConfig(binding.trait.name, cfg);
|
|
38187
38189
|
}
|
|
38188
38190
|
}
|
|
38189
38191
|
return m;
|
|
38190
|
-
}, [traitBindings]);
|
|
38192
|
+
}, [traitBindings, traitConfigsByName]);
|
|
38191
38193
|
const [traitStates, setTraitStates] = React115.useState(() => {
|
|
38192
38194
|
return manager.getAllStates();
|
|
38193
38195
|
});
|
|
@@ -38389,6 +38391,14 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
|
38389
38391
|
const actions = slotsActionsRef.current;
|
|
38390
38392
|
console.log("[TraitStateMachine] Processing event:", normalizedEvent, "payload:", payload);
|
|
38391
38393
|
const bindingMap = new Map(bindings.map((b) => [b.trait.name, b]));
|
|
38394
|
+
for (const traitName of bindingMap.keys()) {
|
|
38395
|
+
const traitState = currentManager.getState(traitName);
|
|
38396
|
+
eventBus.emit(`${traitName}:DISPATCH`, {
|
|
38397
|
+
event: normalizedEvent,
|
|
38398
|
+
payload,
|
|
38399
|
+
currentState: traitState?.currentState
|
|
38400
|
+
});
|
|
38401
|
+
}
|
|
38392
38402
|
const results = currentManager.sendEvent(normalizedEvent, payload);
|
|
38393
38403
|
const emittedByTrait = /* @__PURE__ */ new Map();
|
|
38394
38404
|
for (const { traitName, result } of results) {
|
|
@@ -38571,6 +38581,15 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
|
38571
38581
|
}
|
|
38572
38582
|
}
|
|
38573
38583
|
}
|
|
38584
|
+
for (const { traitName, result } of results) {
|
|
38585
|
+
const suffix = result.executed ? "SUCCESS" : "ERROR";
|
|
38586
|
+
eventBus.emit(`${traitName}:${normalizedEvent}:${suffix}`, {
|
|
38587
|
+
event: normalizedEvent,
|
|
38588
|
+
payload,
|
|
38589
|
+
newState: result.newState,
|
|
38590
|
+
currentState: result.previousState
|
|
38591
|
+
});
|
|
38592
|
+
}
|
|
38574
38593
|
for (const { traitName, result } of results) {
|
|
38575
38594
|
if (result.executed) {
|
|
38576
38595
|
updateTraitState(traitName, result.newState);
|
|
@@ -39138,7 +39157,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
39138
39157
|
}
|
|
39139
39158
|
}
|
|
39140
39159
|
}
|
|
39141
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
39160
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
39142
39161
|
const slotsActions = useSlotsActions();
|
|
39143
39162
|
const bridge = useServerBridge();
|
|
39144
39163
|
const uiSlots = context.useUISlots();
|
|
@@ -39150,7 +39169,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
39150
39169
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
39151
39170
|
}
|
|
39152
39171
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
39153
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
39172
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
39154
39173
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
39155
39174
|
const initSentRef = React115.useRef(false);
|
|
39156
39175
|
React115.useEffect(() => {
|
|
@@ -39221,6 +39240,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39221
39240
|
if (!orbitals) return [];
|
|
39222
39241
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
39223
39242
|
}, [schema]);
|
|
39243
|
+
const traitConfigsByName = React115.useMemo(() => {
|
|
39244
|
+
const map = {};
|
|
39245
|
+
const parsed = schema;
|
|
39246
|
+
const orbitals = parsed?.orbitals;
|
|
39247
|
+
if (!orbitals) return map;
|
|
39248
|
+
for (const orb of orbitals) {
|
|
39249
|
+
const traits3 = orb.traits;
|
|
39250
|
+
if (!traits3) continue;
|
|
39251
|
+
for (const t of traits3) {
|
|
39252
|
+
const name = t.name ?? t.ref;
|
|
39253
|
+
const config = t.config;
|
|
39254
|
+
if (typeof name === "string" && config !== void 0) {
|
|
39255
|
+
map[name] = config;
|
|
39256
|
+
}
|
|
39257
|
+
}
|
|
39258
|
+
}
|
|
39259
|
+
return map;
|
|
39260
|
+
}, [schema]);
|
|
39224
39261
|
const inner = /* @__PURE__ */ jsxRuntime.jsx(providers.VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
39225
39262
|
EntitySchemaProvider,
|
|
39226
39263
|
{
|
|
@@ -39244,6 +39281,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39244
39281
|
{
|
|
39245
39282
|
traits: allPageTraits,
|
|
39246
39283
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
39284
|
+
traitConfigsByName,
|
|
39247
39285
|
onNavigate,
|
|
39248
39286
|
onLocalFallback,
|
|
39249
39287
|
persistence
|
package/dist/runtime/index.js
CHANGED
|
@@ -38133,16 +38133,18 @@ function normalizeEventKey(eventKey) {
|
|
|
38133
38133
|
function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
38134
38134
|
const eventBus = useEventBus();
|
|
38135
38135
|
const { entities } = useEntitySchema();
|
|
38136
|
+
const traitConfigsByName = options?.traitConfigsByName;
|
|
38136
38137
|
const manager = useMemo(() => {
|
|
38137
38138
|
const traitDefs = traitBindings.map(toTraitDefinition);
|
|
38138
38139
|
const m = new StateMachineManager(traitDefs);
|
|
38139
38140
|
for (const binding of traitBindings) {
|
|
38140
|
-
|
|
38141
|
-
|
|
38141
|
+
const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
|
|
38142
|
+
if (cfg !== void 0) {
|
|
38143
|
+
m.setTraitConfig(binding.trait.name, cfg);
|
|
38142
38144
|
}
|
|
38143
38145
|
}
|
|
38144
38146
|
return m;
|
|
38145
|
-
}, [traitBindings]);
|
|
38147
|
+
}, [traitBindings, traitConfigsByName]);
|
|
38146
38148
|
const [traitStates, setTraitStates] = useState(() => {
|
|
38147
38149
|
return manager.getAllStates();
|
|
38148
38150
|
});
|
|
@@ -38344,6 +38346,14 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
|
38344
38346
|
const actions = slotsActionsRef.current;
|
|
38345
38347
|
console.log("[TraitStateMachine] Processing event:", normalizedEvent, "payload:", payload);
|
|
38346
38348
|
const bindingMap = new Map(bindings.map((b) => [b.trait.name, b]));
|
|
38349
|
+
for (const traitName of bindingMap.keys()) {
|
|
38350
|
+
const traitState = currentManager.getState(traitName);
|
|
38351
|
+
eventBus.emit(`${traitName}:DISPATCH`, {
|
|
38352
|
+
event: normalizedEvent,
|
|
38353
|
+
payload,
|
|
38354
|
+
currentState: traitState?.currentState
|
|
38355
|
+
});
|
|
38356
|
+
}
|
|
38347
38357
|
const results = currentManager.sendEvent(normalizedEvent, payload);
|
|
38348
38358
|
const emittedByTrait = /* @__PURE__ */ new Map();
|
|
38349
38359
|
for (const { traitName, result } of results) {
|
|
@@ -38526,6 +38536,15 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
|
|
|
38526
38536
|
}
|
|
38527
38537
|
}
|
|
38528
38538
|
}
|
|
38539
|
+
for (const { traitName, result } of results) {
|
|
38540
|
+
const suffix = result.executed ? "SUCCESS" : "ERROR";
|
|
38541
|
+
eventBus.emit(`${traitName}:${normalizedEvent}:${suffix}`, {
|
|
38542
|
+
event: normalizedEvent,
|
|
38543
|
+
payload,
|
|
38544
|
+
newState: result.newState,
|
|
38545
|
+
currentState: result.previousState
|
|
38546
|
+
});
|
|
38547
|
+
}
|
|
38529
38548
|
for (const { traitName, result } of results) {
|
|
38530
38549
|
if (result.executed) {
|
|
38531
38550
|
updateTraitState(traitName, result.newState);
|
|
@@ -39093,7 +39112,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
39093
39112
|
}
|
|
39094
39113
|
}
|
|
39095
39114
|
}
|
|
39096
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
39115
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
39097
39116
|
const slotsActions = useSlotsActions();
|
|
39098
39117
|
const bridge = useServerBridge();
|
|
39099
39118
|
const uiSlots = useUISlots();
|
|
@@ -39105,7 +39124,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
39105
39124
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
39106
39125
|
}
|
|
39107
39126
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
39108
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
39127
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
39109
39128
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
39110
39129
|
const initSentRef = useRef(false);
|
|
39111
39130
|
useEffect(() => {
|
|
@@ -39176,6 +39195,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39176
39195
|
if (!orbitals) return [];
|
|
39177
39196
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
39178
39197
|
}, [schema]);
|
|
39198
|
+
const traitConfigsByName = useMemo(() => {
|
|
39199
|
+
const map = {};
|
|
39200
|
+
const parsed = schema;
|
|
39201
|
+
const orbitals = parsed?.orbitals;
|
|
39202
|
+
if (!orbitals) return map;
|
|
39203
|
+
for (const orb of orbitals) {
|
|
39204
|
+
const traits3 = orb.traits;
|
|
39205
|
+
if (!traits3) continue;
|
|
39206
|
+
for (const t of traits3) {
|
|
39207
|
+
const name = t.name ?? t.ref;
|
|
39208
|
+
const config = t.config;
|
|
39209
|
+
if (typeof name === "string" && config !== void 0) {
|
|
39210
|
+
map[name] = config;
|
|
39211
|
+
}
|
|
39212
|
+
}
|
|
39213
|
+
}
|
|
39214
|
+
return map;
|
|
39215
|
+
}, [schema]);
|
|
39179
39216
|
const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(
|
|
39180
39217
|
EntitySchemaProvider,
|
|
39181
39218
|
{
|
|
@@ -39199,6 +39236,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39199
39236
|
{
|
|
39200
39237
|
traits: allPageTraits,
|
|
39201
39238
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
39239
|
+
traitConfigsByName,
|
|
39202
39240
|
onNavigate,
|
|
39203
39241
|
onLocalFallback,
|
|
39204
39242
|
persistence
|
|
@@ -49,6 +49,14 @@ export interface UseTraitStateMachineOptions {
|
|
|
49
49
|
persistence?: import('@almadar/runtime').PersistenceAdapter;
|
|
50
50
|
/** Optional consumer `call-service` hook forwarded to the mock server handlers. */
|
|
51
51
|
callService?: (service: string, action: string, params: unknown) => Promise<unknown>;
|
|
52
|
+
/**
|
|
53
|
+
* Trait configs keyed by trait name. Threaded into setTraitConfig so
|
|
54
|
+
* `@config.X` resolves inside guard expressions on the client. Page-level
|
|
55
|
+
* `ResolvedTraitBinding`s often arrive without a config (the orbital-level
|
|
56
|
+
* config doesn't propagate through `@almadar/core`'s page resolver), so the
|
|
57
|
+
* caller assembles this map from the orbital schema directly.
|
|
58
|
+
*/
|
|
59
|
+
traitConfigsByName?: Record<string, import('@almadar/core').TraitConfig>;
|
|
52
60
|
}
|
|
53
61
|
/**
|
|
54
62
|
* useTraitStateMachine - Manages state machines for multiple traits
|