@vectoriox/iox-builder 11.11.0 → 11.12.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/index.d.ts CHANGED
@@ -143,7 +143,9 @@ interface InteractionAction {
143
143
  duration: number;
144
144
  /** Delay in milliseconds before the action starts. */
145
145
  delay: number;
146
- easing: 'linear' | 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out';
146
+ /** G6 (D8): a CSS keyword, a `cubic-bezier()`, or the NAME of one of the look's easing tokens (`ease-standard`,
147
+ * `ease-enter`, `ease-exit`, `ease-spring`) — resolved by both runtimes through iox-ui's `resolveInteractionEasing`. */
148
+ easing: string;
147
149
  /**
148
150
  * Extra parameters — `{ distance: 20 }` for move actions. For `setContext`/`clearContext` this
149
151
  * holds a `SetContextParams` (`{ slot, value, noReverse? }`), read structurally by the shared
@@ -208,6 +210,7 @@ declare const ACTION_TYPE_OPTIONS: {
208
210
  value: InteractionActionType;
209
211
  label: string;
210
212
  }[];
213
+ /** The keyword easings — the panel lists the look's easing tokens (iox-ui `EASING_TOKENS`) and a custom curve beside them. */
211
214
  declare const EASING_OPTIONS: string[];
212
215
  /**
213
216
  * A named, reusable collection of CSS style properties stored at the org level.
@@ -245,10 +248,11 @@ interface InteractionPreset {
245
248
  name: string;
246
249
  interactions: IoxInteraction[];
247
250
  }
248
- type ElementState = 'hover' | 'active' | 'focus' | 'first-child' | 'last-child' | 'nth-child(odd)' | 'nth-child(even)' | 'parent-hover' | 'trigger-hover' | 'trigger-on' | 'wrong' | 'accepted' | 'current' | 'on';
251
+ type ElementState = 'hover' | 'active' | 'focus' | 'first-child' | 'last-child' | 'nth-child(odd)' | 'nth-child(even)' | 'parent-hover' | 'trigger-hover' | 'trigger-on' | 'wrong' | 'accepted' | 'current' | 'on' | 'disabled' | 'busy' | 'selected' | 'scrolled';
249
252
  /** Interaction pseudo-classes — compiled to .iox-node-{id}:state */
250
253
  declare const INTERACTION_STATES: ElementState[];
251
- /** Structural pseudo-classes — compiled to .iox-outer-{id}:state */
254
+ /** Structural pseudo-classes — matched on the outer element by the shared `planStateRule` (@vectoriox/iox-ui), the
255
+ * engine's planner too (iox-client-engine#14). */
252
256
  declare const STRUCTURAL_STATES: ElementState[];
253
257
  /**
254
258
  * Relational pseudo-classes — the styled element is a descendant, the pseudo-class
@@ -1533,19 +1537,6 @@ declare class StyleRegistryService {
1533
1537
  private fontLocale;
1534
1538
  private tokenMode;
1535
1539
  private styleEl;
1536
- /**
1537
- * Properties that must live on the OUTER wrapper (.iox-outer-{id}) because they
1538
- * affect how the element participates in its PARENT layout (flex/block flow).
1539
- * Everything else goes to the INNER element (.iox-node-{id}).
1540
- *
1541
- * Exception — out-of-flow positioning (position:fixed/absolute):
1542
- * When position is fixed or absolute, width is redirected to the inner element
1543
- * (the positioned one) and a default width:100% is added if none is set, so the
1544
- * element stays visible. top/right/bottom/left/zIndex are always inner because
1545
- * they are co-ordinates of the positioned element, not the flow wrapper.
1546
- * position itself goes to inner with `!important` to beat component-scoped CSS.
1547
- */
1548
- private static readonly OUTER_PROPS;
1549
1540
  /**
1550
1541
  * Properties that need !important on the inner element to beat Angular's scoped-CSS
1551
1542
  * specificity boost. CANVAS-ONLY (H2 audit, 2026-10-11): the shared compiler never forces
@@ -1601,10 +1592,13 @@ declare class StyleRegistryService {
1601
1592
  private clearResponsive;
1602
1593
  private isOutOfFlow;
1603
1594
  /**
1604
- * The selector BODY (no leading dot) for a state rule, or null when a relational / targeted
1605
- * state has no scope yet (emitting it unscoped would be wrong — a page-global `:has()`).
1595
+ * A state rule's CSS through the SHARED planner the engine emits with (`planStateRule`, iox-client-engine#14), or ''
1596
+ * when a relational / targeted state has no scope yet (emitting it unscoped would be wrong — a page-global `:has()`).
1597
+ * `relativeToId` is the parent for a relational state (parent-hover) and the nearest common ancestor of the node and
1598
+ * its trigger for a targeted one (trigger-hover, trigger-on). A structural state is matched on the outer element and
1599
+ * reaches the node's own; its outer props stay outer.
1606
1600
  */
1607
- private stateSelector;
1601
+ private stateRuleCss;
1608
1602
  /**
1609
1603
  * The inner + outer rule (joined) and the `::marker` rule for one composed style map.
1610
1604
  * `isOutOfFlow` is passed in rather than read from `styles` because a breakpoint layer is
@@ -1648,6 +1642,9 @@ declare class StyleRegistryService {
1648
1642
  loadFontsFor(tokens: ReadonlyArray<DesignTokenLike> | null | undefined, locale?: string | null): void;
1649
1643
  private linkFonts;
1650
1644
  private compile;
1645
+ /** One rule for a FULL selector. Declaration compilation (kebab-case, viewport-unit rewrite, !important) lives in
1646
+ * the shared style-compiler so the SSR engine produces byte-identical output. */
1647
+ private compileSelector;
1651
1648
  private _flushPending;
1652
1649
  private flush;
1653
1650
  static ɵfac: i0.ɵɵFactoryDeclaration<StyleRegistryService, never>;
@@ -1898,10 +1895,10 @@ declare class InteractionEngineService {
1898
1895
  private executeSwiperAction;
1899
1896
  private resolveTarget;
1900
1897
  private executeAction;
1898
+ /** On the canvas a run never writes a transform inline (one inside the scaled page breaks Lenis). */
1899
+ private settleOptions;
1901
1900
  /** What an element is left as once an action is done: a revealed one interactive, a hidden one inert. */
1902
1901
  private settleAfter;
1903
- /** Write a frame inline. On the canvas never a transform: one inside the scaled page breaks Lenis. */
1904
- private applyFrame;
1905
1902
  /**
1906
1903
  * Freeze an element at the animation's starting frame immediately, before any
1907
1904
  * trigger fires. Called for ALL entrance-type actions regardless of trigger so
@@ -1914,6 +1911,8 @@ declare class InteractionEngineService {
1914
1911
  */
1915
1912
  private applyPreState;
1916
1913
  private clearInlineAnimationStyles;
1914
+ /** A hover-out: the action played back from where the element IS (never from its end frame), settled by the shared
1915
+ * rule — played back to hidden, it holds hidden; to shown, it releases. */
1917
1916
  private reverseAction;
1918
1917
  /** The action's keyframes from the ONE shared table both runtimes animate from (composite T2). */
1919
1918
  private keyframesFor;
@@ -2482,6 +2481,9 @@ declare class BuilderComponent implements OnInit, AfterViewInit, OnChanges, OnDe
2482
2481
  * Both fall back to their native unit in production (no variables defined).
2483
2482
  */
2484
2483
  private updatePreviewVh;
2484
+ /** Keep the Scrolled attribute (iox-ui SCROLLED_ATTRIBUTE) on the canvas page and the header overlay — written only
2485
+ * when it changes, so the overlay's mutation observers never wake for a scroll tick. */
2486
+ private syncScrolled;
2485
2487
  private initLenis;
2486
2488
  private destroyLenis;
2487
2489
  /**
@@ -3064,8 +3066,11 @@ declare class BuilderContainerComponent implements OnInit, OnDestroy {
3064
3066
  * stylesheet treat them exactly as it treats the engine's own twins.
3065
3067
  */
3066
3068
  formClass: string;
3067
- /** Which state the canvas is showing. Only meaningful on a form host. */
3068
- formState: string;
3069
+ /** Which state the canvas is showing. Only meaningful on a form host: its submit buttons follow it (busy, disabled
3070
+ * while Sending — the ONE `syncSubmitButtons` both live paths call, iox-ui#42); "While sending" is the shared CSS's. */
3071
+ set formState(state: string);
3072
+ get formState(): string;
3073
+ private _formState;
3069
3074
  childClick: EventEmitter<any>;
3070
3075
  childMouseEnter: EventEmitter<any>;
3071
3076
  childMouseLeave: EventEmitter<void>;
@@ -4490,8 +4495,8 @@ declare function syncNodeDesign(ref: ComponentRef<unknown> | null | undefined, n
4490
4495
  /** A node's base style map, from its style traits (the live values the Style panel edits). */
4491
4496
  declare function nodeStyleMap(node: ComponentNode): Record<string, any>;
4492
4497
  /**
4493
- * Re-register a node's compiled rules from its CURRENT style values — the base rule (with the default
4494
- * hover transition), its self-scoped state rules and its breakpoint layers — exactly as the
4498
+ * Re-register a node's compiled rules from its CURRENT style values — the base rule (its transition naming what its
4499
+ * states change, G2), its self-scoped state rules and its breakpoint layers — exactly as the
4495
4500
  * RenderDirective registers them at render. For edits that rewrite a node's styles from outside the Style
4496
4501
  * panel (a Card's layout preset, a reset to defaults).
4497
4502
  */
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@vectoriox/iox-builder",
3
- "version": "11.11.0",
3
+ "version": "11.12.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",
7
7
  "@angular/animations": ">=20.0.0",
8
8
  "@angular/cdk": ">=20.0.0",
9
- "@vectoriox/iox-ui": ">=5.73.0",
9
+ "@vectoriox/iox-ui": ">=5.82.0",
10
10
  "interactjs": "^1.10.27",
11
11
  "primeng": ">=20.0.0",
12
12
  "swiper": ">=12.0.0",