@almadar/ui 4.6.10 → 4.6.11
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 +26 -5
- package/dist/avl/index.js +26 -5
- package/dist/runtime/index.cjs +26 -5
- package/dist/runtime/index.js +26 -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
|
});
|
|
@@ -52338,7 +52340,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
52338
52340
|
}
|
|
52339
52341
|
}
|
|
52340
52342
|
}
|
|
52341
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
52343
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
52342
52344
|
const slotsActions = useSlotsActions();
|
|
52343
52345
|
const bridge = useServerBridge();
|
|
52344
52346
|
const uiSlots = useUISlots();
|
|
@@ -52350,7 +52352,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
52350
52352
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
52351
52353
|
}
|
|
52352
52354
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
52353
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
52355
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
52354
52356
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
52355
52357
|
const initSentRef = React127.useRef(false);
|
|
52356
52358
|
React127.useEffect(() => {
|
|
@@ -52421,6 +52423,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52421
52423
|
if (!orbitals) return [];
|
|
52422
52424
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
52423
52425
|
}, [schema]);
|
|
52426
|
+
const traitConfigsByName = React127.useMemo(() => {
|
|
52427
|
+
const map = {};
|
|
52428
|
+
const parsed = schema;
|
|
52429
|
+
const orbitals = parsed?.orbitals;
|
|
52430
|
+
if (!orbitals) return map;
|
|
52431
|
+
for (const orb of orbitals) {
|
|
52432
|
+
const traits3 = orb.traits;
|
|
52433
|
+
if (!traits3) continue;
|
|
52434
|
+
for (const t of traits3) {
|
|
52435
|
+
const name = t.name ?? t.ref;
|
|
52436
|
+
const config = t.config;
|
|
52437
|
+
if (typeof name === "string" && config !== void 0) {
|
|
52438
|
+
map[name] = config;
|
|
52439
|
+
}
|
|
52440
|
+
}
|
|
52441
|
+
}
|
|
52442
|
+
return map;
|
|
52443
|
+
}, [schema]);
|
|
52424
52444
|
const inner = /* @__PURE__ */ jsxRuntime.jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
52425
52445
|
EntitySchemaProvider,
|
|
52426
52446
|
{
|
|
@@ -52444,6 +52464,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52444
52464
|
{
|
|
52445
52465
|
traits: allPageTraits,
|
|
52446
52466
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
52467
|
+
traitConfigsByName,
|
|
52447
52468
|
onNavigate,
|
|
52448
52469
|
onLocalFallback,
|
|
52449
52470
|
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
|
});
|
|
@@ -52292,7 +52294,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
52292
52294
|
}
|
|
52293
52295
|
}
|
|
52294
52296
|
}
|
|
52295
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
52297
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
52296
52298
|
const slotsActions = useSlotsActions();
|
|
52297
52299
|
const bridge = useServerBridge();
|
|
52298
52300
|
const uiSlots = useUISlots();
|
|
@@ -52304,7 +52306,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
52304
52306
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
52305
52307
|
}
|
|
52306
52308
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
52307
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
52309
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
52308
52310
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
52309
52311
|
const initSentRef = useRef(false);
|
|
52310
52312
|
useEffect(() => {
|
|
@@ -52375,6 +52377,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52375
52377
|
if (!orbitals) return [];
|
|
52376
52378
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
52377
52379
|
}, [schema]);
|
|
52380
|
+
const traitConfigsByName = useMemo(() => {
|
|
52381
|
+
const map = {};
|
|
52382
|
+
const parsed = schema;
|
|
52383
|
+
const orbitals = parsed?.orbitals;
|
|
52384
|
+
if (!orbitals) return map;
|
|
52385
|
+
for (const orb of orbitals) {
|
|
52386
|
+
const traits3 = orb.traits;
|
|
52387
|
+
if (!traits3) continue;
|
|
52388
|
+
for (const t of traits3) {
|
|
52389
|
+
const name = t.name ?? t.ref;
|
|
52390
|
+
const config = t.config;
|
|
52391
|
+
if (typeof name === "string" && config !== void 0) {
|
|
52392
|
+
map[name] = config;
|
|
52393
|
+
}
|
|
52394
|
+
}
|
|
52395
|
+
}
|
|
52396
|
+
return map;
|
|
52397
|
+
}, [schema]);
|
|
52378
52398
|
const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(
|
|
52379
52399
|
EntitySchemaProvider,
|
|
52380
52400
|
{
|
|
@@ -52398,6 +52418,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52398
52418
|
{
|
|
52399
52419
|
traits: allPageTraits,
|
|
52400
52420
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
52421
|
+
traitConfigsByName,
|
|
52401
52422
|
onNavigate,
|
|
52402
52423
|
onLocalFallback,
|
|
52403
52424
|
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
|
});
|
|
@@ -39138,7 +39140,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
39138
39140
|
}
|
|
39139
39141
|
}
|
|
39140
39142
|
}
|
|
39141
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
39143
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
39142
39144
|
const slotsActions = useSlotsActions();
|
|
39143
39145
|
const bridge = useServerBridge();
|
|
39144
39146
|
const uiSlots = context.useUISlots();
|
|
@@ -39150,7 +39152,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
39150
39152
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
39151
39153
|
}
|
|
39152
39154
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
39153
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
39155
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
39154
39156
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
39155
39157
|
const initSentRef = React115.useRef(false);
|
|
39156
39158
|
React115.useEffect(() => {
|
|
@@ -39221,6 +39223,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39221
39223
|
if (!orbitals) return [];
|
|
39222
39224
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
39223
39225
|
}, [schema]);
|
|
39226
|
+
const traitConfigsByName = React115.useMemo(() => {
|
|
39227
|
+
const map = {};
|
|
39228
|
+
const parsed = schema;
|
|
39229
|
+
const orbitals = parsed?.orbitals;
|
|
39230
|
+
if (!orbitals) return map;
|
|
39231
|
+
for (const orb of orbitals) {
|
|
39232
|
+
const traits3 = orb.traits;
|
|
39233
|
+
if (!traits3) continue;
|
|
39234
|
+
for (const t of traits3) {
|
|
39235
|
+
const name = t.name ?? t.ref;
|
|
39236
|
+
const config = t.config;
|
|
39237
|
+
if (typeof name === "string" && config !== void 0) {
|
|
39238
|
+
map[name] = config;
|
|
39239
|
+
}
|
|
39240
|
+
}
|
|
39241
|
+
}
|
|
39242
|
+
return map;
|
|
39243
|
+
}, [schema]);
|
|
39224
39244
|
const inner = /* @__PURE__ */ jsxRuntime.jsx(providers.VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
39225
39245
|
EntitySchemaProvider,
|
|
39226
39246
|
{
|
|
@@ -39244,6 +39264,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39244
39264
|
{
|
|
39245
39265
|
traits: allPageTraits,
|
|
39246
39266
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
39267
|
+
traitConfigsByName,
|
|
39247
39268
|
onNavigate,
|
|
39248
39269
|
onLocalFallback,
|
|
39249
39270
|
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
|
});
|
|
@@ -39093,7 +39095,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
39093
39095
|
}
|
|
39094
39096
|
}
|
|
39095
39097
|
}
|
|
39096
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
39098
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
39097
39099
|
const slotsActions = useSlotsActions();
|
|
39098
39100
|
const bridge = useServerBridge();
|
|
39099
39101
|
const uiSlots = useUISlots();
|
|
@@ -39105,7 +39107,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
39105
39107
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
39106
39108
|
}
|
|
39107
39109
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
39108
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
39110
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
39109
39111
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
39110
39112
|
const initSentRef = useRef(false);
|
|
39111
39113
|
useEffect(() => {
|
|
@@ -39176,6 +39178,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39176
39178
|
if (!orbitals) return [];
|
|
39177
39179
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
39178
39180
|
}, [schema]);
|
|
39181
|
+
const traitConfigsByName = useMemo(() => {
|
|
39182
|
+
const map = {};
|
|
39183
|
+
const parsed = schema;
|
|
39184
|
+
const orbitals = parsed?.orbitals;
|
|
39185
|
+
if (!orbitals) return map;
|
|
39186
|
+
for (const orb of orbitals) {
|
|
39187
|
+
const traits3 = orb.traits;
|
|
39188
|
+
if (!traits3) continue;
|
|
39189
|
+
for (const t of traits3) {
|
|
39190
|
+
const name = t.name ?? t.ref;
|
|
39191
|
+
const config = t.config;
|
|
39192
|
+
if (typeof name === "string" && config !== void 0) {
|
|
39193
|
+
map[name] = config;
|
|
39194
|
+
}
|
|
39195
|
+
}
|
|
39196
|
+
}
|
|
39197
|
+
return map;
|
|
39198
|
+
}, [schema]);
|
|
39179
39199
|
const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(
|
|
39180
39200
|
EntitySchemaProvider,
|
|
39181
39201
|
{
|
|
@@ -39199,6 +39219,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39199
39219
|
{
|
|
39200
39220
|
traits: allPageTraits,
|
|
39201
39221
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
39222
|
+
traitConfigsByName,
|
|
39202
39223
|
onNavigate,
|
|
39203
39224
|
onLocalFallback,
|
|
39204
39225
|
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
|