@vectoriox/iox-ui 4.9.0 → 4.11.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.
|
@@ -2337,6 +2337,10 @@ function planDataSource(ds, routeParams = {}, queryParams = {}) {
|
|
|
2337
2337
|
}
|
|
2338
2338
|
case 'static':
|
|
2339
2339
|
return { kind: 'static', data: ds.request?.data ?? null, mode };
|
|
2340
|
+
case 'derived': {
|
|
2341
|
+
const d = ds.request?.derived;
|
|
2342
|
+
return d?.from ? { kind: 'derived', from: d.from, path: d.path ?? '', mode } : { kind: 'none' };
|
|
2343
|
+
}
|
|
2340
2344
|
default:
|
|
2341
2345
|
return { kind: 'none' };
|
|
2342
2346
|
}
|
|
@@ -2374,6 +2378,29 @@ function getByPath(obj, path) {
|
|
|
2374
2378
|
* - With `sourcePath`: the source resolved to a SINGLE resource (e.g. a product); dive into the
|
|
2375
2379
|
* nested array property (e.g. `gallery`). Non-array / missing → `[]`.
|
|
2376
2380
|
*/
|
|
2381
|
+
/**
|
|
2382
|
+
* Fill in `derived` aliases in an already-resolved map. Given the data sources and a map of resolved
|
|
2383
|
+
* NON-derived values (by alias), compute each `type:'derived'` alias as `getByPath(parent, path)` in
|
|
2384
|
+
* dependency order (chains resolved by iterating until stable). Mutates + returns the map. Used by the
|
|
2385
|
+
* SSR engine after it resolves the root sources; the builder resolves derived lazily per alias.
|
|
2386
|
+
*/
|
|
2387
|
+
function resolveDerivedInto(dataSources, resolved) {
|
|
2388
|
+
const derived = (dataSources ?? []).filter(d => d?.type === 'derived' && !!d.alias);
|
|
2389
|
+
let changed = true, guard = 0;
|
|
2390
|
+
while (changed && guard++ < 25) {
|
|
2391
|
+
changed = false;
|
|
2392
|
+
for (const d of derived) {
|
|
2393
|
+
if (d.alias in resolved)
|
|
2394
|
+
continue;
|
|
2395
|
+
const from = d.request?.derived?.from;
|
|
2396
|
+
if (from && from in resolved) {
|
|
2397
|
+
resolved[d.alias] = getByPath(resolved[from], d.request.derived.path ?? '');
|
|
2398
|
+
changed = true;
|
|
2399
|
+
}
|
|
2400
|
+
}
|
|
2401
|
+
}
|
|
2402
|
+
return resolved;
|
|
2403
|
+
}
|
|
2377
2404
|
function resolveRepeaterItems(resolved, sourcePath) {
|
|
2378
2405
|
if (sourcePath) {
|
|
2379
2406
|
const nested = getByPath(resolved, sourcePath);
|
|
@@ -2383,6 +2410,48 @@ function resolveRepeaterItems(resolved, sourcePath) {
|
|
|
2383
2410
|
return resolved;
|
|
2384
2411
|
return resolved == null ? [] : [resolved];
|
|
2385
2412
|
}
|
|
2413
|
+
// ── Referenced data sources (shared: builder-save + SSR resolve) ─────────────────────────────────
|
|
2414
|
+
// Which data-source aliases a node tree uses, so a consumer resolves ONLY what a page/global needs
|
|
2415
|
+
// (not the whole org library). Used by cms-client (persist globals' sources) and the SSR engine
|
|
2416
|
+
// (resolve the referenced subset per page). See org-data-sources-plan.md.
|
|
2417
|
+
/** Aliases referenced anywhere in a node tree: a repeater/slider `source` (a `bindings` entry with
|
|
2418
|
+
* `prop === 'source'`, or `props.source` for the slider) plus every binding's `source`. */
|
|
2419
|
+
function collectReferencedAliases(nodes, acc = new Set()) {
|
|
2420
|
+
for (const n of nodes ?? []) {
|
|
2421
|
+
for (const b of n?.bindings ?? []) {
|
|
2422
|
+
if (b?.source)
|
|
2423
|
+
acc.add(b.source);
|
|
2424
|
+
}
|
|
2425
|
+
if (n?.props?.source)
|
|
2426
|
+
acc.add(n.props.source);
|
|
2427
|
+
if (n?.children?.length)
|
|
2428
|
+
collectReferencedAliases(n.children, acc);
|
|
2429
|
+
}
|
|
2430
|
+
return acc;
|
|
2431
|
+
}
|
|
2432
|
+
/** The subset of `all` whose `alias` is referenced by `nodes` (shallow — direct references only). */
|
|
2433
|
+
function referencedDataSources(nodes, all) {
|
|
2434
|
+
const aliases = collectReferencedAliases(nodes);
|
|
2435
|
+
return (all ?? []).filter(ds => aliases.has(ds?.alias));
|
|
2436
|
+
}
|
|
2437
|
+
/** Like `referencedDataSources`, but also pulls in the DERIVED dependencies (transitively): a
|
|
2438
|
+
* referenced `derived` alias needs its `request.derived.from` source resolved too, even though the
|
|
2439
|
+
* layout never names the parent directly. Use this when RESOLVING (the engine) so derived views
|
|
2440
|
+
* don't resolve to nothing. */
|
|
2441
|
+
function referencedDataSourcesDeep(nodes, all) {
|
|
2442
|
+
const byAlias = new Map((all ?? []).map(d => [d?.alias, d]));
|
|
2443
|
+
const wanted = collectReferencedAliases(nodes);
|
|
2444
|
+
const queue = [...wanted];
|
|
2445
|
+
while (queue.length) {
|
|
2446
|
+
const ds = byAlias.get(queue.pop());
|
|
2447
|
+
const from = ds?.request?.derived?.from;
|
|
2448
|
+
if (from && !wanted.has(from)) {
|
|
2449
|
+
wanted.add(from);
|
|
2450
|
+
queue.push(from);
|
|
2451
|
+
}
|
|
2452
|
+
}
|
|
2453
|
+
return (all ?? []).filter(d => wanted.has(d?.alias));
|
|
2454
|
+
}
|
|
2386
2455
|
/**
|
|
2387
2456
|
* Turn a resolved {@link DataSourcePlan} into the concrete public HTTP request (url + params) — the
|
|
2388
2457
|
* SINGLE place that decides the URL shape, shared by the builder binding preview and the SSR engine
|
|
@@ -2841,5 +2910,5 @@ function effectiveTransitionId(anim) {
|
|
|
2841
2910
|
* Generated bundle index. Do not edit.
|
|
2842
2911
|
*/
|
|
2843
2912
|
|
|
2844
|
-
export { AOSService, AnalyticsService, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, CMSClientInfraModule, CardComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ConsentService, ContainerComponent, ContentService, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_WIDTH_BY_TYPE, ENVIRONMENT, IOX_BUILDER_EVENTS, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxPageComponent, IoxPageModule, IoxUiModule, LinkedContainerComponent, PAGE_TRANSITION_CATEGORIES, PAGE_TRANSITION_PRESETS, PageScrollProvider, PrivacyModalComponent, PrivacyModalService, PrivacyModelEvent, SUPPRESSED_STYLE_PROPS_BY_TYPE, SectionComponent, TRANSITION_FEELS, TextBlockComponent, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, WebSettingsService, applyFeel, buildDataSourceFilter, buildTransitionTimeline, compileDeclarations, composeVirtualTraits, dataSourcePlanToRequest, effectiveTransitionId, feelFor, getByPath, legacyEnterToTransition, matchRouteParams, normalizeCollectionResult, planDataSource, renderDefaultDeclarations, resolvePageTransition, resolveRepeaterItems, resolveSingleItemId, rewriteViewportUnits, stripSuppressedProps, styleKeyToKebab };
|
|
2913
|
+
export { AOSService, AnalyticsService, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, CMSClientInfraModule, CardComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ConsentService, ContainerComponent, ContentService, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_WIDTH_BY_TYPE, ENVIRONMENT, IOX_BUILDER_EVENTS, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxPageComponent, IoxPageModule, IoxUiModule, LinkedContainerComponent, PAGE_TRANSITION_CATEGORIES, PAGE_TRANSITION_PRESETS, PageScrollProvider, PrivacyModalComponent, PrivacyModalService, PrivacyModelEvent, SUPPRESSED_STYLE_PROPS_BY_TYPE, SectionComponent, TRANSITION_FEELS, TextBlockComponent, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, WebSettingsService, applyFeel, buildDataSourceFilter, buildTransitionTimeline, collectReferencedAliases, compileDeclarations, composeVirtualTraits, dataSourcePlanToRequest, effectiveTransitionId, feelFor, getByPath, legacyEnterToTransition, matchRouteParams, normalizeCollectionResult, planDataSource, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resolveDerivedInto, resolvePageTransition, resolveRepeaterItems, resolveSingleItemId, rewriteViewportUnits, stripSuppressedProps, styleKeyToKebab };
|
|
2845
2914
|
//# sourceMappingURL=vectoriox-iox-ui.mjs.map
|