@vectoriox/iox-builder 2.11.0 → 2.12.1

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-builder",
3
- "version": "2.11.0",
3
+ "version": "2.12.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",
@@ -1077,6 +1077,10 @@ declare class DataSourceRegistryService {
1077
1077
  declare class InteractionEngineService {
1078
1078
  private overlayService;
1079
1079
  private attached;
1080
+ /** Shared with the SSR engine — one store type, one set of semantics. */
1081
+ private contextStore;
1082
+ /** Resolved data for the canvas, so a row marker (source + index) resolves back to its item. */
1083
+ private contextData;
1080
1084
  /** Elements that have had pre-state applied (hidden by attach). */
1081
1085
  private preStatedElements;
1082
1086
  /**
@@ -1143,6 +1147,16 @@ declare class InteractionEngineService {
1143
1147
  private attachClick;
1144
1148
  private attachHover;
1145
1149
  private runActions;
1150
+ /**
1151
+ * Execute a context action against the shared store. The forward/reverse semantics come from
1152
+ * `contextActionEffect` in @vectoriox/iox-ui — the same function the SSR engine calls, so the
1153
+ * builder canvas and the live site behave identically.
1154
+ */
1155
+ private applyContextAction;
1156
+ /** The repeater item this element belongs to — the nearest marked row ancestor. */
1157
+ private rowItemFor;
1158
+ /** Resolved data for the canvas, kept current by the repeater as it fetches. */
1159
+ setContextData(data: Record<string, any>): void;
1146
1160
  private executeSwiperAction;
1147
1161
  private resolveTarget;
1148
1162
  private executeAction;
@@ -1268,6 +1282,15 @@ declare class BuilderComponent implements OnInit, AfterViewInit, OnChanges, OnDe
1268
1282
  private appRef;
1269
1283
  private moveableCanvas;
1270
1284
  private selectoCanvas;
1285
+ private contextStore;
1286
+ /**
1287
+ * Re-apply context-bound inputs on the CANVAS when a slot changes — the builder twin of the
1288
+ * engine's effect. The canvas is a live runtime, so hovering a repeater row while editing must
1289
+ * swap the bound element just as it does on the published site.
1290
+ *
1291
+ * Only nodes that read a slot are touched; nothing else re-renders (trap T2).
1292
+ */
1293
+ private readonly contextEffect;
1271
1294
  layout: ComponentNode[];
1272
1295
  dataSources: IoxDataSource[];
1273
1296
  orgId: string;
@@ -1368,6 +1391,12 @@ declare class BuilderComponent implements OnInit, AfterViewInit, OnChanges, OnDe
1368
1391
  ngOnInit(): void;
1369
1392
  ngOnChanges(changes: SimpleChanges): void;
1370
1393
  ngAfterViewInit(): void;
1394
+ /**
1395
+ * Walk the tree and push freshly-resolved values into the live component instances of every node
1396
+ * that reads a context slot. Uses the overlay's node→ComponentRef registry, and the shared
1397
+ * `safeSetInput` so an undeclared input can never trigger NG0303.
1398
+ */
1399
+ private applyContextBindings;
1371
1400
  ngOnDestroy(): void;
1372
1401
  /**
1373
1402
  * Cancel the browser's default navigation for any link clicked on the editing canvas.
@@ -1906,6 +1935,7 @@ declare class BuilderRepeaterComponent implements OnInit, OnDestroy {
1906
1935
  private dsRegistry;
1907
1936
  private panelEventService;
1908
1937
  private cdr;
1938
+ private interactionEngine;
1909
1939
  private _children;
1910
1940
  get children(): ComponentNode[];
1911
1941
  /** RenderDirective sets `source` (→ fetchData) BEFORE `children`. With an async source the response
@@ -1937,7 +1967,7 @@ declare class BuilderRepeaterComponent implements OnInit, OnDestroy {
1937
1967
  set sourcePath(value: string);
1938
1968
  get limit(): number;
1939
1969
  set limit(value: number);
1940
- constructor(dragEngine: DragEngineService, overlayService: OverlayService, dataSourceService: BuilderDataSourceService, dsRegistry: DataSourceRegistryService, panelEventService: PanelEventService, cdr: ChangeDetectorRef);
1970
+ constructor(dragEngine: DragEngineService, overlayService: OverlayService, dataSourceService: BuilderDataSourceService, dsRegistry: DataSourceRegistryService, panelEventService: PanelEventService, cdr: ChangeDetectorRef, interactionEngine: InteractionEngineService);
1941
1971
  ngOnInit(): void;
1942
1972
  ngOnDestroy(): void;
1943
1973
  onDrop(event: IoxDropEvent): void;
@@ -2226,6 +2256,22 @@ declare class InteractionsPanelComponent implements OnInit, OnDestroy {
2226
2256
  label: string;
2227
2257
  value: string;
2228
2258
  }[];
2259
+ /** Slot names already used anywhere on the canvas — offered as suggestions, not a closed list.
2260
+ * A slot needs no declaration to work: naming it in a setContext action creates it. */
2261
+ knownSlots: string[];
2262
+ /** Add-form state for a context action. */
2263
+ newSlot: string;
2264
+ newValueKind: 'item' | 'source';
2265
+ newValueSource: string;
2266
+ newValuePath: string;
2267
+ /** Defaults ON — a row that cleared itself on mouseleave would blink on every row-to-row move. */
2268
+ newKeepAfterLeave: boolean;
2269
+ /** Data-source aliases, for the "Pick a value…" mode. */
2270
+ sourceOptions: {
2271
+ label: string;
2272
+ value: string;
2273
+ }[];
2274
+ private dsRegistry;
2229
2275
  /** State for the "add interaction" form */
2230
2276
  isAdding: boolean;
2231
2277
  newTrigger: InteractionTrigger;
@@ -2243,6 +2289,8 @@ declare class InteractionsPanelComponent implements OnInit, OnDestroy {
2243
2289
  constructor(overlayService: OverlayService, componentRegistry: ComponentRegistryService);
2244
2290
  get isSwiperGoToSlide(): boolean;
2245
2291
  get isSwiperAction(): boolean;
2292
+ /** The add-form is building a context action — it needs a slot, not a target/duration/easing. */
2293
+ get isNewContextAction(): boolean;
2246
2294
  ngOnInit(): void;
2247
2295
  /** Merge component-specific events into trigger options and methods into action options. */
2248
2296
  private refreshDynamicOptions;
@@ -2260,6 +2308,25 @@ declare class InteractionsPanelComponent implements OnInit, OnDestroy {
2260
2308
  removeInteraction(id: string): void;
2261
2309
  addAction(interaction: IoxInteraction): void;
2262
2310
  removeAction(interaction: IoxInteraction, index: number): void;
2311
+ /** True for setContext/clearContext — they get a slot editor instead of a target + easing. */
2312
+ isContextAction(action: InteractionAction): boolean;
2313
+ private ctxParams;
2314
+ slotOf(action: InteractionAction): string;
2315
+ setSlot(action: InteractionAction, slot: string): void;
2316
+ valueKindOf(action: InteractionAction): string;
2317
+ setValueKind(action: InteractionAction, kind: string): void;
2318
+ valueSourceOf(action: InteractionAction): string;
2319
+ setValueSource(action: InteractionAction, source: string): void;
2320
+ valuePathOf(action: InteractionAction): string;
2321
+ setValuePath(action: InteractionAction, path: string): void;
2322
+ /**
2323
+ * "Keep after leave" — ON means the slot survives mouseleave (stored as `noReverse`).
2324
+ * Defaults to ON: a repeater row that cleared itself on leave would blink on every row-to-row
2325
+ * move. Turning it OFF is the list-container behaviour (leave clears).
2326
+ */
2327
+ keepAfterLeave(action: InteractionAction): boolean;
2328
+ setKeepAfterLeave(action: InteractionAction, keep: boolean): void;
2329
+ private refreshKnownSlots;
2263
2330
  hasToggle(interaction: IoxInteraction): boolean;
2264
2331
  enableToggle(interaction: IoxInteraction): void;
2265
2332
  disableToggle(interaction: IoxInteraction): void;