@almadar/ui 4.6.9 → 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 +31 -4
- package/dist/avl/index.js +31 -4
- package/dist/runtime/index.cjs +31 -4
- package/dist/runtime/index.js +31 -4
- package/dist/runtime/useTraitStateMachine.d.ts +8 -0
- package/package.json +2 -2
package/dist/avl/index.cjs
CHANGED
|
@@ -51499,10 +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
|
-
|
|
51505
|
+
const m = new runtime.StateMachineManager(traitDefs);
|
|
51506
|
+
for (const binding of traitBindings) {
|
|
51507
|
+
const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
|
|
51508
|
+
if (cfg !== void 0) {
|
|
51509
|
+
m.setTraitConfig(binding.trait.name, cfg);
|
|
51510
|
+
}
|
|
51511
|
+
}
|
|
51512
|
+
return m;
|
|
51513
|
+
}, [traitBindings, traitConfigsByName]);
|
|
51506
51514
|
const [traitStates, setTraitStates] = React127.useState(() => {
|
|
51507
51515
|
return manager.getAllStates();
|
|
51508
51516
|
});
|
|
@@ -52332,7 +52340,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
52332
52340
|
}
|
|
52333
52341
|
}
|
|
52334
52342
|
}
|
|
52335
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
52343
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
52336
52344
|
const slotsActions = useSlotsActions();
|
|
52337
52345
|
const bridge = useServerBridge();
|
|
52338
52346
|
const uiSlots = useUISlots();
|
|
@@ -52344,7 +52352,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
52344
52352
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
52345
52353
|
}
|
|
52346
52354
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
52347
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
52355
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
52348
52356
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
52349
52357
|
const initSentRef = React127.useRef(false);
|
|
52350
52358
|
React127.useEffect(() => {
|
|
@@ -52415,6 +52423,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52415
52423
|
if (!orbitals) return [];
|
|
52416
52424
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
52417
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]);
|
|
52418
52444
|
const inner = /* @__PURE__ */ jsxRuntime.jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
52419
52445
|
EntitySchemaProvider,
|
|
52420
52446
|
{
|
|
@@ -52438,6 +52464,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52438
52464
|
{
|
|
52439
52465
|
traits: allPageTraits,
|
|
52440
52466
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
52467
|
+
traitConfigsByName,
|
|
52441
52468
|
onNavigate,
|
|
52442
52469
|
onLocalFallback,
|
|
52443
52470
|
persistence
|
package/dist/avl/index.js
CHANGED
|
@@ -51453,10 +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
|
-
|
|
51459
|
+
const m = new StateMachineManager(traitDefs);
|
|
51460
|
+
for (const binding of traitBindings) {
|
|
51461
|
+
const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
|
|
51462
|
+
if (cfg !== void 0) {
|
|
51463
|
+
m.setTraitConfig(binding.trait.name, cfg);
|
|
51464
|
+
}
|
|
51465
|
+
}
|
|
51466
|
+
return m;
|
|
51467
|
+
}, [traitBindings, traitConfigsByName]);
|
|
51460
51468
|
const [traitStates, setTraitStates] = useState(() => {
|
|
51461
51469
|
return manager.getAllStates();
|
|
51462
51470
|
});
|
|
@@ -52286,7 +52294,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
52286
52294
|
}
|
|
52287
52295
|
}
|
|
52288
52296
|
}
|
|
52289
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
52297
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
52290
52298
|
const slotsActions = useSlotsActions();
|
|
52291
52299
|
const bridge = useServerBridge();
|
|
52292
52300
|
const uiSlots = useUISlots();
|
|
@@ -52298,7 +52306,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
52298
52306
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
52299
52307
|
}
|
|
52300
52308
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
52301
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
52309
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
52302
52310
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
52303
52311
|
const initSentRef = useRef(false);
|
|
52304
52312
|
useEffect(() => {
|
|
@@ -52369,6 +52377,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52369
52377
|
if (!orbitals) return [];
|
|
52370
52378
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
52371
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]);
|
|
52372
52398
|
const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(
|
|
52373
52399
|
EntitySchemaProvider,
|
|
52374
52400
|
{
|
|
@@ -52392,6 +52418,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
52392
52418
|
{
|
|
52393
52419
|
traits: allPageTraits,
|
|
52394
52420
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
52421
|
+
traitConfigsByName,
|
|
52395
52422
|
onNavigate,
|
|
52396
52423
|
onLocalFallback,
|
|
52397
52424
|
persistence
|
package/dist/runtime/index.cjs
CHANGED
|
@@ -38178,10 +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
|
-
|
|
38184
|
+
const m = new runtime.StateMachineManager(traitDefs);
|
|
38185
|
+
for (const binding of traitBindings) {
|
|
38186
|
+
const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
|
|
38187
|
+
if (cfg !== void 0) {
|
|
38188
|
+
m.setTraitConfig(binding.trait.name, cfg);
|
|
38189
|
+
}
|
|
38190
|
+
}
|
|
38191
|
+
return m;
|
|
38192
|
+
}, [traitBindings, traitConfigsByName]);
|
|
38185
38193
|
const [traitStates, setTraitStates] = React115.useState(() => {
|
|
38186
38194
|
return manager.getAllStates();
|
|
38187
38195
|
});
|
|
@@ -39132,7 +39140,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
39132
39140
|
}
|
|
39133
39141
|
}
|
|
39134
39142
|
}
|
|
39135
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
39143
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
39136
39144
|
const slotsActions = useSlotsActions();
|
|
39137
39145
|
const bridge = useServerBridge();
|
|
39138
39146
|
const uiSlots = context.useUISlots();
|
|
@@ -39144,7 +39152,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
39144
39152
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
39145
39153
|
}
|
|
39146
39154
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
39147
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
39155
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
39148
39156
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
39149
39157
|
const initSentRef = React115.useRef(false);
|
|
39150
39158
|
React115.useEffect(() => {
|
|
@@ -39215,6 +39223,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39215
39223
|
if (!orbitals) return [];
|
|
39216
39224
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
39217
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]);
|
|
39218
39244
|
const inner = /* @__PURE__ */ jsxRuntime.jsx(providers.VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
39219
39245
|
EntitySchemaProvider,
|
|
39220
39246
|
{
|
|
@@ -39238,6 +39264,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39238
39264
|
{
|
|
39239
39265
|
traits: allPageTraits,
|
|
39240
39266
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
39267
|
+
traitConfigsByName,
|
|
39241
39268
|
onNavigate,
|
|
39242
39269
|
onLocalFallback,
|
|
39243
39270
|
persistence
|
package/dist/runtime/index.js
CHANGED
|
@@ -38133,10 +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
|
-
|
|
38139
|
+
const m = new StateMachineManager(traitDefs);
|
|
38140
|
+
for (const binding of traitBindings) {
|
|
38141
|
+
const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
|
|
38142
|
+
if (cfg !== void 0) {
|
|
38143
|
+
m.setTraitConfig(binding.trait.name, cfg);
|
|
38144
|
+
}
|
|
38145
|
+
}
|
|
38146
|
+
return m;
|
|
38147
|
+
}, [traitBindings, traitConfigsByName]);
|
|
38140
38148
|
const [traitStates, setTraitStates] = useState(() => {
|
|
38141
38149
|
return manager.getAllStates();
|
|
38142
38150
|
});
|
|
@@ -39087,7 +39095,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
|
|
|
39087
39095
|
}
|
|
39088
39096
|
}
|
|
39089
39097
|
}
|
|
39090
|
-
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
|
|
39098
|
+
function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
|
|
39091
39099
|
const slotsActions = useSlotsActions();
|
|
39092
39100
|
const bridge = useServerBridge();
|
|
39093
39101
|
const uiSlots = useUISlots();
|
|
@@ -39099,7 +39107,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
|
|
|
39099
39107
|
applyServerEffects(effects, uiSlots, onNavigate);
|
|
39100
39108
|
}
|
|
39101
39109
|
}, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
|
|
39102
|
-
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
|
|
39110
|
+
const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
|
|
39103
39111
|
const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
|
|
39104
39112
|
const initSentRef = useRef(false);
|
|
39105
39113
|
useEffect(() => {
|
|
@@ -39170,6 +39178,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39170
39178
|
if (!orbitals) return [];
|
|
39171
39179
|
return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
|
|
39172
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]);
|
|
39173
39199
|
const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(
|
|
39174
39200
|
EntitySchemaProvider,
|
|
39175
39201
|
{
|
|
@@ -39193,6 +39219,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
|
|
|
39193
39219
|
{
|
|
39194
39220
|
traits: allPageTraits,
|
|
39195
39221
|
orbitalNames: serverUrl ? orbitalNames : void 0,
|
|
39222
|
+
traitConfigsByName,
|
|
39196
39223
|
onNavigate,
|
|
39197
39224
|
onLocalFallback,
|
|
39198
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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@almadar/ui",
|
|
3
|
-
"version": "4.6.
|
|
3
|
+
"version": "4.6.11",
|
|
4
4
|
"description": "React UI components, hooks, and providers for Almadar",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/components/index.js",
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
"@almadar/core": "^7.0.0",
|
|
122
122
|
"@almadar/evaluator": ">=2.9.2",
|
|
123
123
|
"@almadar/patterns": ">=2.17.1",
|
|
124
|
-
"@almadar/runtime": "^
|
|
124
|
+
"@almadar/runtime": "^5.3.0",
|
|
125
125
|
"@almadar/std": ">=6.4.1",
|
|
126
126
|
"@almadar/syntax": ">=1.3.1",
|
|
127
127
|
"@xyflow/react": "12.10.1",
|