@vectoriox/iox-builder 11.9.2 → 11.10.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.
@@ -17,7 +17,7 @@ import { TooltipModule } from 'primeng/tooltip';
17
17
  import * as i20 from 'primeng/dialog';
18
18
  import { DialogModule } from 'primeng/dialog';
19
19
  import * as i1$1 from '@vectoriox/iox-ui';
20
- import { nodeCssId, needsGroupName, resolveBoundValue, VALIDATION_STATES as VALIDATION_STATES$1, VALIDATION_STATE_CLASS as VALIDATION_STATE_CLASS$1, DEFAULT_WIDTH_BY_TYPE, TEXT_DIRECTION_KEY, TEXT_ALIGN_KEY, TextAlign, COLOR_SCHEME_TRAIT, COLOR_SCHEMES, ColorScheme, LinkType, MAX_LINES_KEY, A11yTrait, BREAKPOINTS, Breakpoint, withSchemeInk, stripSuppressedProps, DeclarationContext, buildPartSelector, planResponsiveRules, resolveStyleProps, targetedStateSelector, stateSelectorSuffix, compileTokenCssBlocks, catalogFontId, fontsForTokens, GOOGLE_FONTS_FILE_ORIGIN, googleFontHref, compileDeclarations, isLastEmittedStateKey, wrapInBreakpointQuery, BreakpointQueryKind, NEW_NODE_STYLE_DEFAULTS, defaultElementStyleFor, applyElementStyle, planDataSource, dataSourcePlanToRequest, normalizeCollectionResult, resolveRepeaterItems, getByPath, computeRelative, ContextStore, ENTRANCE_ACTION_TYPES, EXIT_ACTION_TYPES, ComponentInstanceRegistryService, entranceStartsHidden, isActionEnabled, isContextAction, contextActionEffect, resolveContextValue, effectiveActionType, INTERACTION_HIDDEN_ATTRIBUTE, motionAllowed, finalKeyframe, entranceDelay, repeatedRowIndex, keyframeStyleEntries, buildInteractionKeyframes, cascadeChain, declaredInputNames, emptyImagePlaceholder, syncNodeDesignClasses, nodeTraitValue, syncNodeA11yAttributes, nodeA11yAttributes, safeSetInput, colorSchemeOf, composeVirtualTraits, withDefaultHoverTransition, stateNamesIn, partClassName, switchElementStyle, releaseElementStyle, countOverrides, setOverride, breakpointDef, breakpointForWidth, FormRenderState, needsAccessibleName, resolveInputs, setInputOverride, barReserveClass, collectContextSlotKeys, withContextSlots, compilePageStyle, nodeUsesContext, IS_PREVIEW, buttonBlockHref, bootSlider, IoxPageModule, PALETTE_PRESETS, elementStyleById, PART_CLASS_NAMES } from '@vectoriox/iox-ui';
20
+ import { nodeCssId, needsGroupName, resolveBoundValue, VALIDATION_STATES as VALIDATION_STATES$1, VALIDATION_STATE_CLASS as VALIDATION_STATE_CLASS$1, DEFAULT_WIDTH_BY_TYPE, TEXT_DIRECTION_KEY, TEXT_ALIGN_KEY, TextAlign, COLOR_SCHEME_TRAIT, COLOR_SCHEMES, ColorScheme, LinkType, MAX_LINES_KEY, A11yTrait, BREAKPOINTS, Breakpoint, withSchemeInk, stripSuppressedProps, DeclarationContext, buildPartSelector, planResponsiveRules, resolveStyleProps, targetedStateSelector, stateSelectorSuffix, compileTokenCssBlocks, catalogFontId, fontsForTokens, GOOGLE_FONTS_FILE_ORIGIN, googleFontHref, compileDeclarations, isLastEmittedStateKey, wrapInBreakpointQuery, BreakpointQueryKind, NEW_NODE_STYLE_DEFAULTS, defaultElementStyleFor, applyElementStyle, planDataSource, dataSourcePlanToRequest, normalizeCollectionResult, resolveRepeaterItems, getByPath, computeRelative, ContextStore, ENTRANCE_ACTION_TYPES, EXIT_ACTION_TYPES, ComponentInstanceRegistryService, entranceStartsHidden, isActionEnabled, isContextAction, contextActionEffect, resolveContextValue, effectiveActionType, INTERACTION_HIDDEN_ATTRIBUTE, motionAllowed, finalKeyframe, animateAction, entranceDelay, repeatedRowIndex, keyframeStyleEntries, buildInteractionKeyframes, cascadeChain, declaredInputNames, emptyImagePlaceholder, syncNodeDesignClasses, nodeTraitValue, syncNodeA11yAttributes, nodeA11yAttributes, safeSetInput, colorSchemeOf, composeVirtualTraits, withDefaultHoverTransition, stateNamesIn, partClassName, switchElementStyle, releaseElementStyle, countOverrides, setOverride, breakpointDef, breakpointForWidth, FormRenderState, needsAccessibleName, resolveInputs, setInputOverride, barReserveClass, collectContextSlotKeys, withContextSlots, compilePageStyle, nodeUsesContext, IS_PREVIEW, buttonBlockHref, bootSlider, IoxPageModule, PALETTE_PRESETS, elementStyleById, PART_CLASS_NAMES } from '@vectoriox/iox-ui';
21
21
  export { ComponentInstanceRegistryService, VIRTUAL_TRAIT_KEYS, composeVirtualTraits } from '@vectoriox/iox-ui';
22
22
  import { StructureEdit, isAccordionPart, isDisclosurePart, isSliderPart, isTabsPart, isSegmentedPart, structureRefusal, StructureRefusal, SegmentedRole, SEGMENTED_MAX_OPTIONS, AccordionRole, SEGMENTED_MIN_OPTIONS, isExclusiveItemPart, TabsRole, ITEM_OPEN_STATE, readStyle, isSegmentedRoot, segmentedDefaultOn, segmentedOptions, isTabsRoot, isTabsFromContent, tabsTriggers, isAccordionRoot, isAccordionFromContent, accordionItems, initialAccordionOpen, accordionBehaviour, exclusiveItemLabel, exclusiveRootOf, tabTriggerOf, tabLabel, removeTabPair, tabPanelOf, tabsListOf, tabsPanelsOf, nextTabKey, CompositeBehaviourTrait, ACCORDION_DEFAULT_ONS, TabsBehaviourTrait, TABS_ACTIVATE_ONS, TABS_ORIENTATIONS, onCompositeItemState, isCompositeItemOn, runCompositeItemAction, shouldScrollToItem, rowIndexOf as rowIndexOf$1, slideIndexForRow, DisclosureRole, isExclusiveTrigger, compositeScopeId, compositeRowKeys, isExclusiveRoot, ExclusiveRuntime, exclusiveDefaultOf, exclusiveLabelOf, exclusiveBehaviourOf, exclusiveKindOf, compositeKindOfRole, AccordionRuntime, isToggleKind, closestAccordionItem, isAnyCompositeRoot, SceneRole, isExclusiveList, buildCardRecipe, buildBadge, buildChip, buildAccordionRecipe, buildDisclosureRecipe, buildTabsRecipe, buildSegmentedRecipe, buildLightboxRecipe, NO_ELEMENT_STYLE, CompositeKind, SliderRole, accordionItemLabel, segmentedOptionLabel, isExclusivePanels, isLockedPart, accordionRootOf, accordionItemOf, addAccordionItem, addTabPair, segmentedAddRefusal, addSegmentedOption, isCompositeItem, accordionHeadingLevel, isCompositePanel, isCompositeTrigger, splitSliderChildren, hasSliderParts } from '@vectoriox/iox-ui/composite-core';
23
23
  import { formContentInHost, isInteractiveHost, findFormContentInHosts } from '@vectoriox/iox-ui/forms-core';
@@ -1318,6 +1318,9 @@ const ACTION_TYPE_OPTIONS = [
1318
1318
  { value: 'scaleIn', label: 'Scale in' },
1319
1319
  { value: 'scaleOut', label: 'Scale out' },
1320
1320
  { value: 'rotate', label: 'Rotate' },
1321
+ { value: 'clipReveal', label: 'Reveal' },
1322
+ { value: 'zoomOut', label: 'Zoom settle' },
1323
+ { value: 'revealText', label: 'Reveal text' },
1321
1324
  { value: 'show', label: 'Show' },
1322
1325
  { value: 'hide', label: 'Hide' },
1323
1326
  { value: 'toggleVisibility', label: 'Toggle visibility' },
@@ -4697,7 +4700,7 @@ class InteractionEngineService {
4697
4700
  }
4698
4701
  // 'both' = backwards (holds first keyframe during delay) + forwards (holds last keyframe after end). A look
4699
4702
  // entrance on a Repeater's template staggers its rows: each copy adds its row's share (shared `entranceDelay`).
4700
- const anim = element.animate(keyframes, {
4703
+ const anim = animateAction(element, { type, params: action.params }, keyframes, {
4701
4704
  duration: action.duration,
4702
4705
  delay: entranceDelay(action, repeatedRowIndex(element)),
4703
4706
  easing: action.easing,
@@ -4748,8 +4751,12 @@ class InteractionEngineService {
4748
4751
  if (this.isBuilderMode()) {
4749
4752
  // No transforms — inline transforms on children inside iox-page-component's
4750
4753
  // scale() break Lenis scroll. pointer-events:none lets wheel events and
4751
- // hover fall through to visible elements underneath.
4752
- element.style.setProperty('opacity', '0');
4754
+ // hover fall through to visible elements underneath. A clip hides by itself, and
4755
+ // an entrance that hides nothing (a picture settling) stays in view.
4756
+ if (first['clipPath'])
4757
+ element.style.setProperty('clip-path', first['clipPath']);
4758
+ else if ('opacity' in first || 'visibility' in first)
4759
+ element.style.setProperty('opacity', '0');
4753
4760
  element.style.setProperty('pointer-events', 'none');
4754
4761
  }
4755
4762
  else {
@@ -4764,6 +4771,7 @@ class InteractionEngineService {
4764
4771
  clearInlineAnimationStyles(element) {
4765
4772
  element.style.removeProperty('opacity');
4766
4773
  element.style.removeProperty('transform');
4774
+ element.style.removeProperty('clip-path');
4767
4775
  element.style.removeProperty('visibility');
4768
4776
  element.style.removeProperty('pointer-events');
4769
4777
  element.removeAttribute(INTERACTION_HIDDEN_ATTRIBUTE);
@@ -4777,11 +4785,11 @@ class InteractionEngineService {
4777
4785
  return;
4778
4786
  }
4779
4787
  // Reverse: play the keyframes backwards
4780
- element.animate([...keyframes].reverse(), {
4788
+ animateAction(element, action, [...keyframes].reverse(), {
4781
4789
  duration: action.duration,
4782
4790
  easing: action.easing,
4783
4791
  fill: 'forwards',
4784
- });
4792
+ }, { reverse: true });
4785
4793
  }
4786
4794
  /** The action's keyframes from the ONE shared table both runtimes animate from (composite T2). */
4787
4795
  keyframesFor(type, action) {
@@ -5302,6 +5310,10 @@ class SceneCanvasService {
5302
5310
  this.rootsById.delete(id);
5303
5311
  this.idsByRoot.delete(root);
5304
5312
  }
5313
+ /** The canvas's Lenis just moved the scroll, inside this frame: hold every stage in this same frame. */
5314
+ pinNow() {
5315
+ this.driver?.pinNow();
5316
+ }
5305
5317
  /** The damped progress a root's layers stand at. */
5306
5318
  progressOf(root) {
5307
5319
  return this.driver?.progressOf(root) ?? null;
@@ -8165,6 +8177,7 @@ class OverlayComponent {
8165
8177
  scaleIn: 'Scale In', scaleOut: 'Scale Out',
8166
8178
  rotate: 'Rotate', show: 'Show', hide: 'Hide',
8167
8179
  toggleVisibility: 'Toggle',
8180
+ clipReveal: 'Reveal', zoomOut: 'Zoom settle', revealText: 'Reveal text',
8168
8181
  };
8169
8182
  if (isPhoneMenuOpener(this.selectEntry?.node, ix, this.designState?.snapshot.menu?.drawer.id)) {
8170
8183
  return this.builderLabels(MENU_OPENER_KEY, BUILDER_CHROME_EN[MENU_OPENER_KEY]);
@@ -9977,6 +9990,8 @@ class BuilderComponent {
9977
9990
  autoResize: false, // we drive resize() manually via canvasRo + viewportSub
9978
9991
  });
9979
9992
  this.lenis.on('scroll', (instance) => {
9993
+ // A Scene's stage is held against this very scroll: a frame later, it would paint carried off its pin.
9994
+ this.sceneCanvas?.pinNow();
9980
9995
  const clientH = this.previewScrollRef.nativeElement.clientHeight;
9981
9996
  this.onPageScroll({
9982
9997
  scrollTop: instance.scroll,