@vectoriox/iox-ui 4.14.0 → 4.15.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectoriox/iox-ui",
3
- "version": "4.14.0",
3
+ "version": "4.15.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",
@@ -847,10 +847,12 @@ declare function resolveRepeaterItems(resolved: any, sourcePath?: string | null)
847
847
  declare function collectReferencedAliases(nodes: any[], acc?: Set<string>): Set<string>;
848
848
  /** The subset of `all` whose `alias` is referenced by `nodes` (shallow — direct references only). */
849
849
  declare function referencedDataSources(nodes: any[], all: any[]): any[];
850
- /** Like `referencedDataSources`, but also pulls in the DERIVED dependencies (transitively): a
851
- * referenced `derived` alias needs its `request.derived.from` source resolved too, even though the
852
- * layout never names the parent directly. Use this when RESOLVING (the engine) so derived views
853
- * don't resolve to nothing. */
850
+ /** Like `referencedDataSources`, but also pulls in a referenced source's DEPENDENCIES (transitively),
851
+ * none of which the layout names directly:
852
+ * - a `derived` alias needs its `request.derived.from` parent;
853
+ * - a `relative` (route-context) alias needs its `request.relative.subjectFrom` (the current item)
854
+ * and `request.relative.from` (the collection it navigates).
855
+ * Use this when RESOLVING (the engine) so derived views and siblings/related don't resolve to nothing. */
854
856
  declare function referencedDataSourcesDeep(nodes: any[], all: any[]): any[];
855
857
  /** Base URLs for the PUBLIC content controllers. Both must end with `/`. The builder and the SSR
856
858
  * engine pass their own host (they proxy `/api` differently) but MUST target the public
@@ -1019,6 +1021,56 @@ declare function computeRelative(spec: RelativeSourceSpec, inputs: RelativeInput
1019
1021
  */
1020
1022
  declare function resolveRelativeInto(dataSources: RelativeCapableSource[], resolved: Record<string, any>, routeParams?: Record<string, any>): Record<string, any>;
1021
1023
 
1024
+ /**
1025
+ * Binding pipes — render-time value transforms (UI label: "Filters").
1026
+ *
1027
+ * A binding resolves a raw value (`resolvePath(sourceData, path)`); a pipe chain then reshapes it for
1028
+ * display (format a timestamp, upper-case, truncate, …). This is the SINGLE shared implementation used
1029
+ * by BOTH the builder canvas and the SSR engine — the engine renders layout JSON to a STRING and can't
1030
+ * use Angular pipes, and `resolvePath` is already duplicated across the apply points, so the transform
1031
+ * MUST be one pure, transport-agnostic function applied identically everywhere. Never fork it.
1032
+ *
1033
+ * See iox-ai-guidance/architecture/builder/binding-filters-plan.md.
1034
+ */
1035
+ /** One transform in a binding's chain. `args` are positional, matching the pipe's descriptor order. */
1036
+ interface IoxPipe {
1037
+ name: string;
1038
+ args?: any[];
1039
+ }
1040
+ /** Runtime context threaded to every pipe — the locale keeps date/number output identical on the
1041
+ * builder canvas and the SSR engine (both pass the site's language). */
1042
+ interface PipeContext {
1043
+ locale?: string;
1044
+ }
1045
+ type PipeFn = (value: any, args: any[], ctx: PipeContext) => any;
1046
+ /** The registry — adding a pipe here (+ a descriptor below) makes it work on both sides and appear in
1047
+ * the authoring UI. Keyed by name; unknown names are passed through by `applyBindingPipes`. */
1048
+ declare const PIPE_REGISTRY: Record<string, PipeFn>;
1049
+ /**
1050
+ * Apply a binding's pipe chain to a resolved value, LEFT→RIGHT. Pure. An empty/undefined chain returns
1051
+ * the value untouched; an unknown pipe name is skipped (forward-compatible with newer authored pipes).
1052
+ * Call this at every binding-resolution point (builder canvas + engine SSR + engine hydration).
1053
+ */
1054
+ declare function applyBindingPipes(value: any, pipes?: IoxPipe[], ctx?: PipeContext): any;
1055
+ interface PipeArgSpec {
1056
+ /** Positional key (order defines the `args` index). */
1057
+ key: string;
1058
+ /** Default English label; consumers may map `name`/`key` to their own i18n keys. */
1059
+ label: string;
1060
+ control: 'select' | 'text' | 'number';
1061
+ options?: {
1062
+ label: string;
1063
+ value: any;
1064
+ }[];
1065
+ default?: any;
1066
+ }
1067
+ interface PipeDescriptor {
1068
+ name: string;
1069
+ label: string;
1070
+ args: PipeArgSpec[];
1071
+ }
1072
+ declare const PIPE_DESCRIPTORS: PipeDescriptor[];
1073
+
1022
1074
  /**
1023
1075
  * Cinematic page-transition presets — the SINGLE SOURCE OF TRUTH shared by the page builder
1024
1076
  * (preview) and the SSR client engine (production). Pure, transport-agnostic: this module only
@@ -1166,5 +1218,5 @@ declare function effectiveTransitionId(anim: {
1166
1218
  enter?: string | null;
1167
1219
  } | null | undefined): string;
1168
1220
 
1169
- 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, RESERVED_ALIAS_PREFIX, SUPPRESSED_STYLE_PROPS_BY_TYPE, SectionComponent, TRANSITION_FEELS, TextBlockComponent, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, WebSettingsService, applyFeel, buildDataSourceFilter, buildRelatedFilter, buildTransitionTimeline, collectReferencedAliases, compileDeclarations, composeVirtualTraits, computeRelative, dataSourcePlanToRequest, effectiveTransitionId, excludeSelf, feelFor, getByPath, isReservedAlias, legacyEnterToTransition, matchRouteParams, normalizeCollectionResult, planDataSource, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resolveDerivedInto, resolvePageTransition, resolveRelativeInto, resolveRepeaterItems, resolveSiblings, resolveSingleItemId, rewriteViewportUnits, stripSuppressedProps, styleKeyToKebab };
1170
- export type { BuildRelatedFilterOptions, DataSourceDomain, DataSourceEndpoints, DataSourceMode, DataSourcePlan, DataSourceQueryFilter, DataSourceRequest, DataSourceRequestSpec, DataSourceRouteFilter, DataSourceSpec, IBuilderEventEmitter, PageTransitionCategory, PageTransitionCategoryMeta, PageTransitionOptions, PageTransitionPreset, RelativeInputs, RelativeSourceKind, RelativeSourceSpec, ResolveSiblingsOptions, ResolvedPageTransition, RouteContext, SiblingsResult, TransitionFeel, TransitionPhase, TransitionTimelineInput };
1221
+ 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, PIPE_DESCRIPTORS, PIPE_REGISTRY, PageScrollProvider, PrivacyModalComponent, PrivacyModalService, PrivacyModelEvent, RESERVED_ALIAS_PREFIX, SUPPRESSED_STYLE_PROPS_BY_TYPE, SectionComponent, TRANSITION_FEELS, TextBlockComponent, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, WebSettingsService, applyBindingPipes, applyFeel, buildDataSourceFilter, buildRelatedFilter, buildTransitionTimeline, collectReferencedAliases, compileDeclarations, composeVirtualTraits, computeRelative, dataSourcePlanToRequest, effectiveTransitionId, excludeSelf, feelFor, getByPath, isReservedAlias, legacyEnterToTransition, matchRouteParams, normalizeCollectionResult, planDataSource, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resolveDerivedInto, resolvePageTransition, resolveRelativeInto, resolveRepeaterItems, resolveSiblings, resolveSingleItemId, rewriteViewportUnits, stripSuppressedProps, styleKeyToKebab };
1222
+ export type { BuildRelatedFilterOptions, DataSourceDomain, DataSourceEndpoints, DataSourceMode, DataSourcePlan, DataSourceQueryFilter, DataSourceRequest, DataSourceRequestSpec, DataSourceRouteFilter, DataSourceSpec, IBuilderEventEmitter, IoxPipe, PageTransitionCategory, PageTransitionCategoryMeta, PageTransitionOptions, PageTransitionPreset, PipeArgSpec, PipeContext, PipeDescriptor, RelativeInputs, RelativeSourceKind, RelativeSourceSpec, ResolveSiblingsOptions, ResolvedPageTransition, RouteContext, SiblingsResult, TransitionFeel, TransitionPhase, TransitionTimelineInput };