@vectoriox/iox-ui 4.17.0 → 4.17.2

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, HostListener, Output, Input, Directive, NgModule, Injectable, ViewChild, Component, Host, Optional, inject, NgZone, Inject, InjectionToken, PLATFORM_ID, ChangeDetectionStrategy, ViewContainerRef } from '@angular/core';
2
+ import { EventEmitter, HostListener, Output, Input, Directive, NgModule, Injectable, ViewChild, Component, Host, Optional, inject, NgZone, Inject, InjectionToken, PLATFORM_ID, ChangeDetectionStrategy, ViewContainerRef, reflectComponentType } from '@angular/core';
3
3
  import * as i2 from '@angular/animations';
4
4
  import { style, animate } from '@angular/animations';
5
5
  import { Subject, fromEvent, of } from 'rxjs';
@@ -2578,6 +2578,13 @@ const NOOP_INITIAL_VALUES = {
2578
2578
  'aspect-ratio': ['auto'],
2579
2579
  'mix-blend-mode': ['normal'],
2580
2580
  'transform': ['none'], 'box-shadow': ['none'],
2581
+ // overflow initial is `visible`. A self-describing node serialises the Overflow trait's default,
2582
+ // so WITHOUT this the emitted `overflow: visible` would override component baselines that clip
2583
+ // (e.g. `.iox-card__img-wrap`, `.iox-slider`, `.iox-gallery` all set `overflow: hidden`), breaking
2584
+ // object-fit/aspect-ratio image clipping everywhere. A user-set hidden/scroll/auto/clip is not the
2585
+ // initial, so it still emits and wins.
2586
+ 'overflow': ['visible'], 'overflow-x': ['visible'], 'overflow-y': ['visible'],
2587
+ 'clip-path': ['none'],
2581
2588
  };
2582
2589
  /**
2583
2590
  * Style props a type's render-default fully REPLACES. Emitting them would produce a dead
@@ -3193,6 +3200,53 @@ const PIPE_DESCRIPTORS = [
3193
3200
  { name: 'number', label: 'Number', args: [{ key: 'decimals', label: 'Decimals', control: 'number', default: null }] },
3194
3201
  ];
3195
3202
 
3203
+ /**
3204
+ * Declared-input reflection + safe input application, shared by every dynamic renderer
3205
+ * (builder `RenderDirective`, builder bindings panel, SSR `ClientTreeRendererService`).
3206
+ *
3207
+ * WHY THIS EXISTS: `ComponentRef.setInput(name, value)` for an input the component does NOT
3208
+ * declare does **not throw** — in dev mode it calls `reportUnknownPropertyError`, which
3209
+ * `console.error`s `NG0303: Can't set value of the '<name>' input ...` and returns without
3210
+ * setting anything. A `try/catch` around `setInput` is therefore dead code (nothing is thrown)
3211
+ * AND the value is silently dropped. On every (re-)render — drag, duplicate, save-triggered
3212
+ * re-render, repeater/slider clones — that spams the console and skips the write.
3213
+ *
3214
+ * The fix is to reflect the component's declared inputs ONCE (cached) and only `setInput` names
3215
+ * that exist; anything else is assigned directly on the instance (harmless for consumers that
3216
+ * read the raw property, e.g. a `sourcePath`/`source` binding pushed to a SliderContainer).
3217
+ */
3218
+ /** Per-component-class cache of declared public input names (templateName / alias). */
3219
+ const inputNameCache = new WeakMap();
3220
+ /**
3221
+ * The public input names (`@Input()` / `input()` / `model()`, honouring aliases) a component
3222
+ * class declares. Cached per class — `reflectComponentType` is not free. Returns an empty set
3223
+ * for a class Angular can't reflect (e.g. a non-component).
3224
+ */
3225
+ function declaredInputNames(type) {
3226
+ let names = inputNameCache.get(type);
3227
+ if (!names) {
3228
+ const mirror = reflectComponentType(type);
3229
+ names = new Set((mirror?.inputs ?? []).map(i => i.templateName));
3230
+ inputNameCache.set(type, names);
3231
+ }
3232
+ return names;
3233
+ }
3234
+ /**
3235
+ * Set `name` on `ref` as an Angular input **only** when the component declares it (so change
3236
+ * detection + signal inputs work); otherwise assign directly on the instance and mark it for
3237
+ * check. Never produces an NG0303 error and never silently drops the value. Returns `true` if
3238
+ * it was applied as a real input, `false` if it fell back to direct assignment.
3239
+ */
3240
+ function safeSetInput(ref, name, value) {
3241
+ if (declaredInputNames(ref.componentType).has(name)) {
3242
+ ref.setInput(name, value);
3243
+ return true;
3244
+ }
3245
+ ref.instance[name] = value;
3246
+ ref.changeDetectorRef.markForCheck();
3247
+ return false;
3248
+ }
3249
+
3196
3250
  /**
3197
3251
  * Cinematic page-transition presets — the SINGLE SOURCE OF TRUTH shared by the page builder
3198
3252
  * (preview) and the SSR client engine (production). Pure, transport-agnostic: this module only
@@ -3627,5 +3681,5 @@ function effectiveTransitionId(anim) {
3627
3681
  * Generated bundle index. Do not edit.
3628
3682
  */
3629
3683
 
3630
- export { AOSService, AnalyticsService, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, CMSClientInfraModule, CardComponent, ClientGalleryComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ConsentService, ContainerComponent, ContentService, DEFAULT_GALLERY_SCHEDULER, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_WIDTH_BY_TYPE, ENVIRONMENT, GALLERY_EFFECTS, GALLERY_EFFECT_DESCRIPTORS, GalleryLoop, 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, buildTargetedStateSelector, buildTransitionTimeline, collectReferencedAliases, compileDeclarations, composeVirtualTraits, computeRelative, dataSourcePlanToRequest, effectiveTransitionId, excludeSelf, feelFor, getByPath, isReservedAlias, legacyEnterToTransition, matchRouteParams, nearestCommonAncestorId, nodeCssId, normalizeCollectionResult, parseUrlList, planDataSource, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resolveDerivedInto, resolveGalleryEffect, resolveGalleryUrls, resolvePageTransition, resolveRelativeInto, resolveRepeaterItems, resolveSiblings, resolveSingleItemId, rewriteViewportUnits, stripSuppressedProps, styleKeyToKebab };
3684
+ export { AOSService, AnalyticsService, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, CMSClientInfraModule, CardComponent, ClientGalleryComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ConsentService, ContainerComponent, ContentService, DEFAULT_GALLERY_SCHEDULER, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_WIDTH_BY_TYPE, ENVIRONMENT, GALLERY_EFFECTS, GALLERY_EFFECT_DESCRIPTORS, GalleryLoop, 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, buildTargetedStateSelector, buildTransitionTimeline, collectReferencedAliases, compileDeclarations, composeVirtualTraits, computeRelative, dataSourcePlanToRequest, declaredInputNames, effectiveTransitionId, excludeSelf, feelFor, getByPath, isReservedAlias, legacyEnterToTransition, matchRouteParams, nearestCommonAncestorId, nodeCssId, normalizeCollectionResult, parseUrlList, planDataSource, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resolveDerivedInto, resolveGalleryEffect, resolveGalleryUrls, resolvePageTransition, resolveRelativeInto, resolveRepeaterItems, resolveSiblings, resolveSingleItemId, rewriteViewportUnits, safeSetInput, stripSuppressedProps, styleKeyToKebab };
3631
3685
  //# sourceMappingURL=vectoriox-iox-ui.mjs.map