@useinsider/guido 3.20.1 → 3.21.0-beta.0df5409

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.
Files changed (90) hide show
  1. package/dist/components/Guido.vue.js +1 -1
  2. package/dist/components/Guido.vue2.js +65 -64
  3. package/dist/components/organisms/AutoSaveController.vue2.js +10 -9
  4. package/dist/components/organisms/header/EditorActions.vue.js +4 -4
  5. package/dist/components/organisms/header/EditorActions.vue2.js +53 -51
  6. package/dist/components/organisms/validation/ValidationErrorDrawer.vue.js +3 -3
  7. package/dist/components/organisms/validation/ValidationErrorDrawer.vue2.js +23 -22
  8. package/dist/composables/useActionsApi.js +80 -63
  9. package/dist/composables/useAutoSave.js +46 -44
  10. package/dist/composables/useGuidoStateBridge.js +3 -3
  11. package/dist/composables/useLegacyStrategyConversion.js +16 -16
  12. package/dist/composables/useSave.js +26 -23
  13. package/dist/composables/useSaveValidation.js +113 -114
  14. package/dist/composables/useSaveValidationRollout.js +17 -6
  15. package/dist/composables/useStripo.js +11 -10
  16. package/dist/extensions/Blocks/Items/block.js +43 -42
  17. package/dist/extensions/Blocks/Recommendation/block.js +33 -29
  18. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +78 -83
  19. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +1 -2
  20. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +2 -12
  21. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +104 -86
  22. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +348 -263
  23. package/dist/extensions/Blocks/Recommendation/controls/main/layoutOrientation.js +48 -50
  24. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +16 -21
  25. package/dist/extensions/Blocks/Recommendation/controls/main/pricePlacement.js +44 -40
  26. package/dist/extensions/Blocks/Recommendation/controls/main/productCount.js +14 -19
  27. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +104 -102
  28. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +18 -23
  29. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +312 -286
  30. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +24 -20
  31. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +6 -7
  32. package/dist/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.js +8 -8
  33. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +113 -151
  34. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +221 -203
  35. package/dist/extensions/Blocks/Recommendation/utils/blockRefresh.js +28 -0
  36. package/dist/extensions/Blocks/Recommendation/utils/captureStyleTemplates.js +1 -1
  37. package/dist/extensions/Blocks/Recommendation/utils/currencySettings.js +25 -0
  38. package/dist/extensions/Blocks/Recommendation/utils/nodeConfigWriter.js +111 -40
  39. package/dist/extensions/Blocks/Recommendation/utils/strategyCommit.js +31 -35
  40. package/dist/extensions/Blocks/Unsubscribe/block.js +70 -75
  41. package/dist/guido.css +1 -1
  42. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +271 -192
  43. package/dist/package.json.js +1 -1
  44. package/dist/services/settingsApi.js +11 -0
  45. package/dist/src/components/Guido.vue.d.ts +1 -1
  46. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  47. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  48. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  49. package/dist/src/composables/useActionsApi.d.ts +5 -1
  50. package/dist/src/composables/useAutoSave.d.ts +4 -1
  51. package/dist/src/composables/useSaveValidationRollout.d.ts +1 -0
  52. package/dist/src/extensions/Blocks/Checkbox/controls/blockBackground/index.d.ts +1 -0
  53. package/dist/src/extensions/Blocks/CouponBlock/controls/index.d.ts +8 -0
  54. package/dist/src/extensions/Blocks/Items/controls/index.d.ts +40 -0
  55. package/dist/src/extensions/Blocks/RadioButton/controls/blockBackground/index.d.ts +1 -0
  56. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
  57. package/dist/src/extensions/Blocks/Recommendation/controls/blockBackground/index.d.ts +1 -0
  58. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +11 -0
  59. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +3 -6
  60. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/index.d.ts +7 -0
  61. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +2 -0
  62. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +5 -5
  63. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +21 -12
  64. package/dist/src/extensions/Blocks/Recommendation/controls/main/layoutOrientation.d.ts +6 -3
  65. package/dist/src/extensions/Blocks/Recommendation/controls/main/pricePlacement.d.ts +6 -5
  66. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +6 -3
  67. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +21 -9
  68. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +19 -13
  69. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +7 -0
  70. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +7 -0
  71. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +7 -0
  72. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +7 -0
  73. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +7 -0
  74. package/dist/src/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.d.ts +10 -8
  75. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +9 -5
  76. package/dist/src/extensions/Blocks/Recommendation/controls/title/index.d.ts +7 -0
  77. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +9 -1
  78. package/dist/src/extensions/Blocks/Recommendation/utils/blockRefresh.d.ts +17 -0
  79. package/dist/src/extensions/Blocks/Recommendation/utils/currencySettings.d.ts +6 -0
  80. package/dist/src/extensions/Blocks/Recommendation/utils/nodeConfigWriter.d.ts +18 -11
  81. package/dist/src/extensions/Blocks/Unsubscribe/block.d.ts +1 -6
  82. package/dist/src/extensions/Blocks/_Boilerplate/controls/blockBackground/index.d.ts +1 -0
  83. package/dist/src/extensions/Blocks/controlFactories.d.ts +22 -0
  84. package/dist/src/services/settingsApi.d.ts +6 -0
  85. package/dist/src/stores/editor.d.ts +3 -1
  86. package/dist/src/stores/setup-settings.d.ts +4 -0
  87. package/dist/static/styles/components/button.css.js +5 -0
  88. package/dist/stores/editor.js +5 -0
  89. package/dist/stores/setup-settings.js +10 -0
  90. package/package.json +4 -4
@@ -30,6 +30,7 @@ export declare const CustomAttributeControls: {
30
30
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
31
31
  getAdditionalModifications(_root: ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
32
32
  isVisible(_node: ImmutableHtmlNode): boolean;
33
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
33
34
  };
34
35
  };
35
36
  readonly color: {
@@ -42,6 +43,7 @@ export declare const CustomAttributeControls: {
42
43
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
43
44
  getAdditionalModifications(_root: ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
44
45
  isVisible(_node: ImmutableHtmlNode): boolean;
46
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
45
47
  };
46
48
  };
47
49
  readonly size: {
@@ -54,6 +56,7 @@ export declare const CustomAttributeControls: {
54
56
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
55
57
  getAdditionalModifications(_root: ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
56
58
  isVisible(_node: ImmutableHtmlNode): boolean;
59
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
57
60
  };
58
61
  };
59
62
  readonly style: {
@@ -66,6 +69,7 @@ export declare const CustomAttributeControls: {
66
69
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
67
70
  getAdditionalModifications(_root: ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
68
71
  isVisible(_node: ImmutableHtmlNode): boolean;
72
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
69
73
  };
70
74
  };
71
75
  readonly fontFamily: {
@@ -78,6 +82,7 @@ export declare const CustomAttributeControls: {
78
82
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
79
83
  getAdditionalModifications(_root: ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
80
84
  isVisible(_node: ImmutableHtmlNode): boolean;
85
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
81
86
  };
82
87
  };
83
88
  readonly background: {
@@ -90,6 +95,7 @@ export declare const CustomAttributeControls: {
90
95
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
91
96
  getAdditionalModifications(_root: ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
92
97
  isVisible(_node: ImmutableHtmlNode): boolean;
98
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
93
99
  };
94
100
  };
95
101
  readonly paddings: {
@@ -102,6 +108,7 @@ export declare const CustomAttributeControls: {
102
108
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
103
109
  getAdditionalModifications(_root: ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
104
110
  isVisible(_node: ImmutableHtmlNode): boolean;
111
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
105
112
  };
106
113
  };
107
114
  readonly textTrim: typeof CustomAttributeTextTrimControl;
@@ -18,6 +18,7 @@ export declare const ImageControls: {
18
18
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
19
19
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
20
20
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
21
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
21
22
  };
22
23
  };
23
24
  readonly margins: {
@@ -30,6 +31,7 @@ export declare const ImageControls: {
30
31
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
31
32
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
32
33
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
34
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
33
35
  };
34
36
  };
35
37
  };
@@ -30,13 +30,13 @@ export declare class CurrencyControl extends CommonControl {
30
30
  _setFormValues(): void;
31
31
  _initializeSelectItems(): void;
32
32
  /**
33
- * Applies currency updates to node config, HTML attributes, Pinia store, and DOM.
33
+ * Applies a display-only currency change (symbol, separators, alignment, decimal count) to node
34
+ * config, block attributes, store and the price text in ONE apply. No product refetch.
34
35
  * @param updates - Partial currency config to merge
35
- * @param triggerRefetch - Whether to trigger a product API refetch.
36
- * true for currency code changes (different prices from API),
37
- * false for display-only changes (symbol, separators, alignment, decimal count).
38
36
  */
39
- _updateCurrency(updates: Partial<CurrencyConfig>, triggerRefetch?: boolean): void;
37
+ _updateCurrency(updates: Partial<CurrencyConfig>): void;
38
+ /** Re-stamps the compiler-read block attributes where they drifted from the node config. */
39
+ private _repairCurrencyAttributes;
40
40
  _onCurrencyChange(value: string): void;
41
41
  _onCurrencyLocationChange(value: string): void;
42
42
  _onCurrencySymbolChange(value: string): void;
@@ -20,8 +20,14 @@ export * from './utils';
20
20
  export declare class RecommendationBlockControl extends CommonControl {
21
21
  private store;
22
22
  private storeUnsubscription;
23
+ private unregisterConfigFlush;
23
24
  private pendingNodeConfigWrite;
24
25
  private pendingConfigFlushTimer;
26
+ private trackedBlockId;
27
+ private fetchedConfigVersion;
28
+ private hasUnrenderedProducts;
29
+ private panelGeneration;
30
+ private isPanelAlive;
25
31
  private algorithmControl;
26
32
  private localeControl;
27
33
  private currencyControl;
@@ -73,17 +79,16 @@ export declare class RecommendationBlockControl extends CommonControl {
73
79
  /** Whether the deferred write would move the node's strategyId — see the caller (SD-149916). */
74
80
  private _isPendingStrategyIdChange;
75
81
  private _capturePendingNodeConfigWrite;
82
+ private _pendingUpdates;
83
+ private _pendingUpdatesForCurrentNode;
84
+ private _getNodeConfigUpdates;
76
85
  /**
77
86
  * Accumulates the pending write into `documentModifier` without applying, so the
78
87
  * caller's apply() commits config and re-render as ONE undo entry.
79
- *
80
- * Deliberately does not consume the pending record: the product helpers call
81
- * apply() only when they actually changed something, so this batch may never be
82
- * committed and the flush has to stay able to write it standalone.
83
- * @param documentModifier - The batch to accumulate into
84
- * @returns Whether anything was staged
88
+ * @returns the undo label, null when only stamps moved; undefined when nothing was staged
85
89
  */
86
90
  private _stagePendingNodeConfig;
91
+ private _consumePendingNodeConfig;
87
92
  /**
88
93
  * Arms the guaranteed fallback write, once the product fetch has settled. The
89
94
  * delay only has to outlast the re-render debounce that fetch triggers — firing
@@ -91,11 +96,6 @@ export declare class RecommendationBlockControl extends CommonControl {
91
96
  */
92
97
  private _scheduleConfigFlush;
93
98
  private _clearConfigFlush;
94
- /**
95
- * Writes the deferred change standalone when the batch it was staged into never
96
- * committed. Always targets the LIVE node — the captured one is an immutable
97
- * snapshot the intervening re-render staled, and saveConfig swallows that failure.
98
- */
99
99
  private _flushPendingNodeConfig;
100
100
  private _syncNodeConfigToStore;
101
101
  /**
@@ -108,6 +108,7 @@ export declare class RecommendationBlockControl extends CommonControl {
108
108
  * Marks the block as initialized to prevent redundant fetches on re-selection.
109
109
  */
110
110
  private _fetchBlockData;
111
+ private _isPanelOn;
111
112
  /**
112
113
  * Applies smart defaults for newly dropped blocks.
113
114
  *
@@ -127,6 +128,14 @@ export declare class RecommendationBlockControl extends CommonControl {
127
128
  * Debounced product fetch to prevent rapid API calls during config changes
128
129
  */
129
130
  private _debouncedFetchProducts;
131
+ /**
132
+ * Lands what the panel still owes its block before it stops watching it: the config now, the
133
+ * products through a block-scoped refresh. Never throws — it runs from Stripo's teardown.
134
+ */
135
+ private _finishBlockOutsidePanel;
136
+ private _trackedBlockSnapshot;
137
+ private _refreshOutsidePanel;
138
+ private _getBlockConfigVersion;
130
139
  /**
131
140
  * Debounced content update when products arrive from API.
132
141
  *
@@ -144,7 +153,7 @@ export declare class RecommendationBlockControl extends CommonControl {
144
153
  /**
145
154
  * Listen to store changes that require product refresh or regeneration.
146
155
  *
147
- * Uses configVersion counter (incremented only by patchCurrentBlockConfig)
156
+ * Uses the block's configVersion counter (bumped by patchCurrentBlockConfig and legacy conversion)
148
157
  * to distinguish user-initiated config changes from internal mutations
149
158
  * (e.g., fetchRecommendationCreateData setting preferred currency).
150
159
  *
@@ -6,6 +6,8 @@
6
6
  *
7
7
  * Configuration is stored via node config (persists with template).
8
8
  */
9
+ import type { DocumentModifier } from '../../services/configService';
10
+ import type { PartialNodeConfig } from '../../types/nodeConfig';
9
11
  import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
10
12
  import { CommonControl } from '../../../common-control';
11
13
  import { type Orientation } from '../../templates';
@@ -33,11 +35,12 @@ export declare class LayoutOrientationControl extends CommonControl {
33
35
  */
34
36
  _onLayoutChange(layout: Orientation): void;
35
37
  /**
36
- * Regenerates product rows based on the selected layout
37
- * Uses unified style-preserving regeneration to maintain user customizations
38
+ * Stages the product rows for the selected layout into the caller's batch,
39
+ * with the user's styles preserved.
38
40
  * @param layout - The layout to use for regeneration (passed explicitly to avoid stale DOM reads)
39
41
  * @param composition - The preserved card composition, incl. customAttr:* entries
42
+ * @param configOverrides - The config staged in the same batch (spacing defaults)
40
43
  */
41
- _regenerateProductRows(layout: Orientation, composition: string[]): void;
44
+ _regenerateProductRows(documentModifier: DocumentModifier, layout: Orientation, composition: string[], configOverrides: PartialNodeConfig): void;
42
45
  _listenToFormUpdates(): void;
43
46
  }
@@ -18,7 +18,8 @@
18
18
  * `hide-price` attribute; the visual hide is simulated in the preview and applied
19
19
  * for real server-side by email-service.
20
20
  */
21
- import type { RecommendationNodeConfig } from '../../types/nodeConfig';
21
+ import type { DocumentModifier } from '../../services/configService';
22
+ import type { PartialNodeConfig, RecommendationNodeConfig } from '../../types/nodeConfig';
22
23
  import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
23
24
  import { CommonControl } from '../../../common-control';
24
25
  export declare const PRICE_PLACEMENT_CONTROL_ID = "recommendation-price-placement-control";
@@ -48,12 +49,12 @@ export declare class PricePlacementControl extends CommonControl {
48
49
  * Mirrors the hide-if-same flag onto the durable `hide-price` block attribute
49
50
  * read by email-service at send time.
50
51
  */
51
- _stampHideIfSameAttr(value: boolean): void;
52
+ _stampHideIfSameAttr(documentModifier: DocumentModifier, value: boolean): void;
52
53
  /**
53
- * Rebuilds the product rows so the renderer re-reads the inline/stacked
54
- * layout flag from the store. Used by the orientation change only.
54
+ * Stages the rebuilt product rows into the caller's batch so the renderer
55
+ * reads the inline/stacked flag being written. Used by the orientation change only.
55
56
  */
56
- _regenerate(): void;
57
+ _regenerate(documentModifier: DocumentModifier, configOverrides: PartialNodeConfig): void;
57
58
  _listenToFormUpdates(): void;
58
59
  }
59
60
  export {};
@@ -15,8 +15,10 @@
15
15
  *
16
16
  * Configuration is stored via node config (persists with template).
17
17
  */
18
- import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
18
+ import type { PartialNodeConfig } from '../../types/nodeConfig';
19
+ import type { CssNodeModifier, HtmlNodeModifier, ImmutableHtmlNode, TemplateModifier } from '@stripoinc/ui-editor-extensions';
19
20
  import { CommonControl } from '../../../common-control';
21
+ type DocumentModifier = TemplateModifier<HtmlNodeModifier, CssNodeModifier>;
20
22
  export declare const PRODUCT_LAYOUT_CONTROL_ID = "recommendation-product-layout-control";
21
23
  /**
22
24
  * Control for configuring product layout density.
@@ -65,10 +67,10 @@ export declare class ProductLayoutControl extends CommonControl {
65
67
  * When disabled: snapshots current mobileCardsInRow, resets to 1, opts out.
66
68
  */
67
69
  _onMobileLayoutToggleChange(enabled: boolean): void;
70
+ private _commitMobileLayoutToggle;
68
71
  _onProductsInRowChange(value: number): void;
69
72
  _onMobileCardsInRowChange(value: number): void;
70
- _regenerateProductRows(): void;
71
- _debouncedRegenerateProductRows: import("@vueuse/shared").PromisifyFn<() => void>;
73
+ _regenerateProductRows(modifier: DocumentModifier, configOverrides: PartialNodeConfig): void;
72
74
  _listenToFormUpdates(): void;
73
75
  /**
74
76
  * Subscribe to store changes to update visibility when layout changes
@@ -82,3 +84,4 @@ export declare class ProductLayoutControl extends CommonControl {
82
84
  */
83
85
  _listenEditorModeChanges(): void;
84
86
  }
87
+ export {};
@@ -8,7 +8,7 @@
8
8
  * - Spacing reapplication
9
9
  * - In-place content updates (style-preserving)
10
10
  */
11
- import type { CurrencyConfig } from '../../types/nodeConfig';
11
+ import type { CurrencyConfig, PartialNodeConfig } from '../../types/nodeConfig';
12
12
  import type { FiltersResponse, RecommendationProduct } from '@@/Types/recommendation';
13
13
  import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
14
14
  import { ModificationDescription } from '@stripoinc/ui-editor-extensions';
@@ -69,6 +69,10 @@ export interface RegenerateProductRowsOptions {
69
69
  layout?: Orientation;
70
70
  /** Optional: pass composition directly to avoid stale DOM reads after setAttribute */
71
71
  composition?: string[];
72
+ /** Accumulate only; the caller applies the batch (one undo entry with the change that caused it) */
73
+ stageOnly?: boolean;
74
+ /** Config staged in the same batch — the node still holds the pre-change values */
75
+ configOverrides?: PartialNodeConfig;
72
76
  }
73
77
  export declare function getMainContainerTbody(currentNode: ImmutableHtmlNode): ImmutableHtmlNode | null;
74
78
  /**
@@ -80,7 +84,7 @@ export declare function getMainContainerTbody(currentNode: ImmutableHtmlNode): I
80
84
  * For list layout / disabled mobile layout: clears the mobile row content.
81
85
  * For grid layout with mobileLayoutEnabled ON: rebuilds the full mobile row.
82
86
  */
83
- export declare function regenerateMobileProductRows(options: Omit<RegenerateProductRowsOptions, 'afterRegenerate'>): void;
87
+ export declare function regenerateMobileProductRows(options: Omit<RegenerateProductRowsOptions, 'afterRegenerate'>): boolean;
84
88
  export interface RegenerateWithStylesOptions extends Omit<RegenerateProductRowsOptions, 'products' | 'layout'> {
85
89
  /** Skip style capture if styles were already handled externally */
86
90
  skipStylePreservation?: boolean;
@@ -151,11 +155,12 @@ export interface UpdateProductContentInPlaceOptions {
151
155
  currentNode: ImmutableHtmlNode | null | undefined;
152
156
  documentModifier: DocumentModifier;
153
157
  products: RecommendationProduct[];
154
- /**
155
- * Called when the batch was actually committed. Identical products commit nothing, which
156
- * leaves anything a caller staged into the same batch unwritten unless it applies itself.
157
- */
158
- onApplied?: () => void;
158
+ /** Called when a product cell actually changed; identical products stage nothing. */
159
+ onChanged?: () => void;
160
+ /** Accumulate only; the caller applies the batch */
161
+ stageOnly?: boolean;
162
+ /** Config staged in the same batch — the node still holds the pre-change values */
163
+ configOverrides?: PartialNodeConfig;
159
164
  }
160
165
  /**
161
166
  * Updates product content in-place without regenerating HTML structure.
@@ -166,13 +171,17 @@ export interface UpdateProductContentInPlaceOptions {
166
171
  * After updating desktop, also updates mobile container to keep them in sync.
167
172
  *
168
173
  * Falls back to false when product count changed (need to add/remove elements).
169
- * @param options - Configuration options; `onApplied` fires only when a batch was committed
174
+ * @param options - Configuration options; `onChanged` fires only when a cell changed
170
175
  * @returns true if in-place update was successful, false to fall back to full regeneration
171
176
  */
172
177
  export declare function updateProductContentInPlace(options: UpdateProductContentInPlaceOptions): boolean;
173
178
  export interface UpdatePricesInPlaceOptions {
174
179
  currentNode: ImmutableHtmlNode | null | undefined;
175
180
  documentModifier: DocumentModifier;
181
+ /** Accumulate only; the caller applies the batch */
182
+ stageOnly?: boolean;
183
+ /** Config staged in the same batch — the node still holds the pre-change values */
184
+ configOverrides?: PartialNodeConfig;
176
185
  }
177
186
  /**
178
187
  * Updates only price displays in-place (for currency changes).
@@ -211,13 +220,16 @@ export interface SetCurrencyAttributesOptions {
211
220
  currentNode: ImmutableHtmlNode | null | undefined;
212
221
  documentModifier: DocumentModifier;
213
222
  currency: CurrencyConfig;
223
+ /** Accumulate only; the caller applies the batch */
224
+ stageOnly?: boolean;
214
225
  }
215
226
  /**
216
227
  * Sets currency configuration as HTML attributes on the block element
217
228
  * These attributes are read by the HTML compiler at runtime to format prices
218
229
  * @param options - Configuration options
230
+ * @returns whether the block element was found and its attributes staged
219
231
  */
220
- export declare function setCurrencyAttributes(options: SetCurrencyAttributesOptions): void;
232
+ export declare function setCurrencyAttributes(options: SetCurrencyAttributesOptions): boolean;
221
233
  /**
222
234
  * Reads currency configuration from block HTML attributes
223
235
  * Used to restore settings when loading a template
@@ -13,35 +13,41 @@ export declare const CSS_CLASS_DESKTOP_CONTAINER = "ins-recommendation-desktop-c
13
13
  export declare const CSS_CLASS_MOBILE_CONTAINER = "ins-recommendation-mobile-container";
14
14
  /** CSS class that opts a block out of the mobile layout container swap */
15
15
  export declare const CSS_CLASS_NO_MOBILE_LAYOUT = "ins-recommendation-no-mobile-layout";
16
+ interface HtmlModifier {
17
+ modifyHtml: (node: ImmutableHtmlNode) => {
18
+ setClass: (cls: string) => void;
19
+ removeClass: (cls: string) => void;
20
+ };
21
+ }
16
22
  interface HtmlModifierApi {
17
- getDocumentModifier: () => {
18
- modifyHtml: (node: ImmutableHtmlNode) => {
19
- setClass: (cls: string) => void;
20
- removeClass: (cls: string) => void;
21
- };
23
+ getDocumentModifier: () => HtmlModifier & {
22
24
  apply: (desc: ModificationDescription) => void;
23
25
  };
24
26
  }
27
+ interface CssModifier {
28
+ modifyCss: (node: ImmutableCssNode) => {
29
+ appendRule: (rule: string) => void;
30
+ };
31
+ apply: (desc: ModificationDescription) => void;
32
+ }
25
33
  interface CssModifierApi {
26
34
  getDocumentRootCssNode: () => ImmutableCssNode | null;
27
- getDocumentModifier: () => {
28
- modifyCss: (node: ImmutableCssNode) => {
29
- appendRule: (rule: string) => void;
30
- };
31
- apply: (desc: ModificationDescription) => void;
32
- };
35
+ getDocumentModifier: () => CssModifier;
33
36
  }
34
37
  /**
35
38
  * Ensures mobile layout CSS rules exist in the document stylesheet.
36
39
  * Only adds rules if they don't already exist (prevents duplicates across multiple blocks).
37
- * Follows the same pattern as textTrim's _ensureCssRulesExist().
40
+ * @param batch - stage into this modifier and let the caller apply it (one undo entry)
41
+ * @returns whether any rule was staged
38
42
  */
39
- export declare function ensureMobileCssRulesExist(api: CssModifierApi): void;
43
+ export declare function ensureMobileCssRulesExist(api: CssModifierApi, batch?: CssModifier): boolean;
40
44
  /**
41
45
  * Checks if a block element has the mobile layout opt-out class.
42
46
  * Read-side companion to setMobileLayoutOptOut().
43
47
  */
44
48
  export declare function hasMobileLayoutOptOut(blockElement: ImmutableHtmlNode): boolean;
49
+ /** Stages the opt-out class change on a modifier; the caller applies it. */
50
+ export declare function stageMobileLayoutOptOut(modifier: HtmlModifier, blockElement: ImmutableHtmlNode, optOut: boolean): void;
45
51
  /**
46
52
  * Adds or removes the mobile layout opt-out class on a block element.
47
53
  * When optOut is true, the block keeps the desktop container visible on mobile.
@@ -19,6 +19,7 @@ export declare const NameControls: {
19
19
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
20
20
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
21
21
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
22
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
22
23
  };
23
24
  };
24
25
  readonly color: {
@@ -31,6 +32,7 @@ export declare const NameControls: {
31
32
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
32
33
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
33
34
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
35
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
34
36
  };
35
37
  };
36
38
  readonly size: {
@@ -43,6 +45,7 @@ export declare const NameControls: {
43
45
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
44
46
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
45
47
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
48
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
46
49
  };
47
50
  };
48
51
  readonly style: {
@@ -55,6 +58,7 @@ export declare const NameControls: {
55
58
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
56
59
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
57
60
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
61
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
58
62
  };
59
63
  };
60
64
  readonly fontFamily: {
@@ -67,6 +71,7 @@ export declare const NameControls: {
67
71
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
68
72
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
69
73
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
74
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
70
75
  };
71
76
  };
72
77
  readonly background: {
@@ -79,6 +84,7 @@ export declare const NameControls: {
79
84
  getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
80
85
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
81
86
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
87
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
82
88
  };
83
89
  };
84
90
  readonly paddings: {
@@ -91,6 +97,7 @@ export declare const NameControls: {
91
97
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
92
98
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
93
99
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
100
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
94
101
  };
95
102
  };
96
103
  readonly textTrim: typeof NameTextTrimControl;
@@ -18,6 +18,7 @@ export declare const OldPriceControls: {
18
18
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
19
19
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
20
20
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
21
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
21
22
  };
22
23
  };
23
24
  readonly color: {
@@ -30,6 +31,7 @@ export declare const OldPriceControls: {
30
31
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
31
32
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
32
33
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
34
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
33
35
  };
34
36
  };
35
37
  readonly size: {
@@ -42,6 +44,7 @@ export declare const OldPriceControls: {
42
44
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
43
45
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
44
46
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
47
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
45
48
  };
46
49
  };
47
50
  readonly style: {
@@ -54,6 +57,7 @@ export declare const OldPriceControls: {
54
57
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
55
58
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
56
59
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
60
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
57
61
  };
58
62
  };
59
63
  readonly fontFamily: {
@@ -66,6 +70,7 @@ export declare const OldPriceControls: {
66
70
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
67
71
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
68
72
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
73
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
69
74
  };
70
75
  };
71
76
  readonly background: {
@@ -78,6 +83,7 @@ export declare const OldPriceControls: {
78
83
  getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
79
84
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
80
85
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
86
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
81
87
  };
82
88
  };
83
89
  readonly paddings: {
@@ -90,6 +96,7 @@ export declare const OldPriceControls: {
90
96
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
91
97
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
92
98
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
99
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
93
100
  };
94
101
  };
95
102
  };
@@ -21,6 +21,7 @@ export declare const OmnibusDiscountControls: {
21
21
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
22
22
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
23
23
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
24
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
24
25
  };
25
26
  };
26
27
  readonly color: {
@@ -33,6 +34,7 @@ export declare const OmnibusDiscountControls: {
33
34
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
34
35
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
35
36
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
37
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
36
38
  };
37
39
  };
38
40
  readonly size: {
@@ -45,6 +47,7 @@ export declare const OmnibusDiscountControls: {
45
47
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
46
48
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
47
49
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
50
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
48
51
  };
49
52
  };
50
53
  readonly style: {
@@ -57,6 +60,7 @@ export declare const OmnibusDiscountControls: {
57
60
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
58
61
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
59
62
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
63
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
60
64
  };
61
65
  };
62
66
  readonly fontFamily: {
@@ -69,6 +73,7 @@ export declare const OmnibusDiscountControls: {
69
73
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
70
74
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
71
75
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
76
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
72
77
  };
73
78
  };
74
79
  readonly background: {
@@ -81,6 +86,7 @@ export declare const OmnibusDiscountControls: {
81
86
  getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
82
87
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
83
88
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
89
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
84
90
  };
85
91
  };
86
92
  readonly paddings: {
@@ -93,6 +99,7 @@ export declare const OmnibusDiscountControls: {
93
99
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
94
100
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
95
101
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
102
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
96
103
  };
97
104
  };
98
105
  readonly textBefore: typeof OmnibusDiscountTextBeforeControl;
@@ -21,6 +21,7 @@ export declare const OmnibusPriceControls: {
21
21
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
22
22
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
23
23
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
24
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
24
25
  };
25
26
  };
26
27
  readonly color: {
@@ -33,6 +34,7 @@ export declare const OmnibusPriceControls: {
33
34
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
34
35
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
35
36
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
37
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
36
38
  };
37
39
  };
38
40
  readonly size: {
@@ -45,6 +47,7 @@ export declare const OmnibusPriceControls: {
45
47
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
46
48
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
47
49
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
50
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
48
51
  };
49
52
  };
50
53
  readonly style: {
@@ -57,6 +60,7 @@ export declare const OmnibusPriceControls: {
57
60
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
58
61
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
59
62
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
63
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
60
64
  };
61
65
  };
62
66
  readonly fontFamily: {
@@ -69,6 +73,7 @@ export declare const OmnibusPriceControls: {
69
73
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
70
74
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
71
75
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
76
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
72
77
  };
73
78
  };
74
79
  readonly background: {
@@ -81,6 +86,7 @@ export declare const OmnibusPriceControls: {
81
86
  getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
82
87
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
83
88
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
89
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
84
90
  };
85
91
  };
86
92
  readonly paddings: {
@@ -93,6 +99,7 @@ export declare const OmnibusPriceControls: {
93
99
  getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
94
100
  getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
95
101
  isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
102
+ getElementLockCategory(): import("@stripoinc/ui-editor-extensions").ElementLockCategory | undefined;
96
103
  };
97
104
  };
98
105
  readonly textBefore: typeof OmnibusPriceTextBeforeControl;