@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
@@ -1,13 +1,25 @@
1
- var p = Object.defineProperty;
2
- var R = (o, a, e) => a in o ? p(o, a, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[a] = e;
3
- var c = (o, a, e) => R(o, typeof a != "symbol" ? a + "" : a, e);
4
- import { currencyLocationMaps as l, currencyOperators as i, currencyDecimalCounts as h } from "../../../../../enums/extensions/recommendationBlock.js";
5
- import { UEAttr as _ } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
- import { CommonControl as m } from "../../../common-control.js";
7
- import { RecommendationConfigService as s } from "../../services/configService.js";
8
- import { useRecommendationExtensionStore as d } from "../../store/recommendation.js";
9
- import { setCurrencyAttributes as S, updatePricesInPlace as N } from "./utils.js";
10
- const E = "recommendation-currency-control", t = {
1
+ var y = Object.defineProperty;
2
+ var S = (s, i, e) => i in s ? y(s, i, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[i] = e;
3
+ var C = (s, i, e) => S(s, typeof i != "symbol" ? i + "" : i, e);
4
+ import { currencyLocationMaps as u, currencyOperators as a, currencyDecimalCounts as h } from "../../../../../enums/extensions/recommendationBlock.js";
5
+ import { UEAttr as N, ModificationDescription as l } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
+ import { CommonControl as g } from "../../../common-control.js";
7
+ import { RecommendationConfigService as c } from "../../services/configService.js";
8
+ import { useRecommendationExtensionStore as E } from "../../store/recommendation.js";
9
+ import { toCurrencyConfig as U, toCurrencySettings as p } from "../../utils/currencySettings.js";
10
+ import { setCurrencyAttributes as R, updatePricesInPlace as A, getCurrencyAttributesFromBlock as T } from "./utils.js";
11
+ const f = "recommendation-currency-control", _ = [
12
+ "code",
13
+ "symbol",
14
+ "alignment",
15
+ "thousandSeparator",
16
+ "decimalSeparator",
17
+ "decimalCount"
18
+ ];
19
+ function m(s, i) {
20
+ return _.every((e) => s[e] === i[e]);
21
+ }
22
+ const r = {
11
23
  CURRENCY: "currencyCode",
12
24
  CURRENCY_LOCATION: "currencyAlignment",
13
25
  CURRENCY_SYMBOL: "currencySymbol",
@@ -15,16 +27,16 @@ const E = "recommendation-currency-control", t = {
15
27
  CURRENCY_DECIMAL_SEPARATOR: "currencyDecimalSeparator",
16
28
  CURRENCY_DECIMAL_COUNT: "currencyDecimalCount"
17
29
  };
18
- class Y extends m {
30
+ class P extends g {
19
31
  constructor() {
20
32
  super(...arguments);
21
33
  // Store is used ONLY for API-fetched data (currency list), not for config
22
- c(this, "store", d());
23
- c(this, "storeUnsubscription", () => {
34
+ C(this, "store", E());
35
+ C(this, "storeUnsubscription", () => {
24
36
  });
25
37
  }
26
38
  getId() {
27
- return E;
39
+ return f;
28
40
  }
29
41
  getTemplate() {
30
42
  return `
@@ -32,37 +44,37 @@ class Y extends m {
32
44
  ${this._GuTwoColumns([
33
45
  this._GuLabel({ text: this.api.translate("Currency") }),
34
46
  this._GuSelect({
35
- name: t.CURRENCY,
47
+ name: r.CURRENCY,
36
48
  placeholder: this.api.translate("Select Currency"),
37
49
  options: this.store.currencyList
38
50
  }),
39
51
  this._GuLabel({ text: this.api.translate("Currency Location") }),
40
52
  this._GuSelect({
41
- name: t.CURRENCY_LOCATION,
53
+ name: r.CURRENCY_LOCATION,
42
54
  placeholder: this.api.translate("Select Currency Location"),
43
- options: l
55
+ options: u
44
56
  }),
45
57
  this._GuLabel({ text: this.api.translate("Currency Symbol") }),
46
58
  this._GuTextInput({
47
- name: t.CURRENCY_SYMBOL,
59
+ name: r.CURRENCY_SYMBOL,
48
60
  placeholder: this.api.translate("Enter Currency Symbol"),
49
61
  className: "es-180w"
50
62
  }),
51
63
  this._GuLabel({ text: this.api.translate("Thousand Separator") }),
52
64
  this._GuSelect({
53
- name: t.CURRENCY_THOUSAND_SEPARATOR,
65
+ name: r.CURRENCY_THOUSAND_SEPARATOR,
54
66
  placeholder: this.api.translate("Select Thousand Separator"),
55
- options: i
67
+ options: a
56
68
  }),
57
69
  this._GuLabel({ text: this.api.translate("Decimal Separator") }),
58
70
  this._GuSelect({
59
- name: t.CURRENCY_DECIMAL_SEPARATOR,
71
+ name: r.CURRENCY_DECIMAL_SEPARATOR,
60
72
  placeholder: this.api.translate("Select Decimal Separator"),
61
- options: i
73
+ options: a
62
74
  }),
63
75
  this._GuLabel({ text: this.api.translate("Decimal Count") }),
64
76
  this._GuSelect({
65
- name: t.CURRENCY_DECIMAL_COUNT,
77
+ name: r.CURRENCY_DECIMAL_COUNT,
66
78
  placeholder: this.api.translate("Select Decimal Count"),
67
79
  options: h
68
80
  })
@@ -82,73 +94,79 @@ class Y extends m {
82
94
  this.storeUnsubscription();
83
95
  }
84
96
  _setFormValues() {
85
- const e = s.getConfig(this.currentNode), { currency: r } = e;
97
+ const e = c.getConfig(this.currentNode), { currency: t } = e;
86
98
  this.api.updateValues({
87
- [t.CURRENCY]: `price.${r.code}`,
88
- [t.CURRENCY_LOCATION]: r.alignment === "before" ? "0" : "1",
89
- [t.CURRENCY_SYMBOL]: r.symbol,
90
- [t.CURRENCY_THOUSAND_SEPARATOR]: r.thousandSeparator,
91
- [t.CURRENCY_DECIMAL_SEPARATOR]: r.decimalSeparator,
92
- [t.CURRENCY_DECIMAL_COUNT]: r.decimalCount.toString()
99
+ [r.CURRENCY]: `price.${t.code}`,
100
+ [r.CURRENCY_LOCATION]: t.alignment === "before" ? "0" : "1",
101
+ [r.CURRENCY_SYMBOL]: t.symbol,
102
+ [r.CURRENCY_THOUSAND_SEPARATOR]: t.thousandSeparator,
103
+ [r.CURRENCY_DECIMAL_SEPARATOR]: t.decimalSeparator,
104
+ [r.CURRENCY_DECIMAL_COUNT]: t.decimalCount.toString()
93
105
  });
94
106
  }
95
107
  _initializeSelectItems() {
96
- const { store: e } = this, r = {
97
- [t.CURRENCY]: e.currencyList,
98
- [t.CURRENCY_LOCATION]: l,
99
- [t.CURRENCY_THOUSAND_SEPARATOR]: i,
100
- [t.CURRENCY_DECIMAL_SEPARATOR]: i,
101
- [t.CURRENCY_DECIMAL_COUNT]: h
108
+ const { store: e } = this, t = {
109
+ [r.CURRENCY]: e.currencyList,
110
+ [r.CURRENCY_LOCATION]: u,
111
+ [r.CURRENCY_THOUSAND_SEPARATOR]: a,
112
+ [r.CURRENCY_DECIMAL_SEPARATOR]: a,
113
+ [r.CURRENCY_DECIMAL_COUNT]: h
102
114
  };
103
- Object.entries(r).forEach(([C, n]) => {
104
- this.api.setUIEAttribute(C, _.SELECTPICKER.items, n);
115
+ Object.entries(t).forEach(([n, o]) => {
116
+ this.api.setUIEAttribute(n, N.SELECTPICKER.items, o);
105
117
  });
106
118
  }
107
119
  /**
108
- * Applies currency updates to node config, HTML attributes, Pinia store, and DOM.
120
+ * Applies a display-only currency change (symbol, separators, alignment, decimal count) to node
121
+ * config, block attributes, store and the price text in ONE apply. No product refetch.
109
122
  * @param updates - Partial currency config to merge
110
- * @param triggerRefetch - Whether to trigger a product API refetch.
111
- * true for currency code changes (different prices from API),
112
- * false for display-only changes (symbol, separators, alignment, decimal count).
113
123
  */
114
- _updateCurrency(e, r = !1) {
124
+ _updateCurrency(e) {
115
125
  if (!this.currentNode)
116
126
  return;
117
- const n = { ...s.getConfig(this.currentNode).currency, ...e };
118
- s.updateConfig(
119
- this.api,
120
- this.currentNode,
121
- { currency: n },
122
- "Updated currency settings"
123
- );
124
- const u = this.api.getDocumentModifier();
125
- S({
127
+ const t = U(this.store.recommendationConfigs.currencySettings), n = { ...t, ...e };
128
+ if (m(n, t)) {
129
+ m(n, c.getConfig(this.currentNode).currency) && this._repairCurrencyAttributes(n);
130
+ return;
131
+ }
132
+ const o = this.api.getDocumentModifier();
133
+ c.stageConfig(o, this.currentNode, { currency: n }), R({
126
134
  currentNode: this.currentNode,
127
- documentModifier: u,
128
- currency: n
129
- }), this.store.patchCurrentBlockConfig({
130
- currencySettings: {
131
- name: n.code,
132
- value: n.code,
133
- symbol: n.symbol,
134
- alignment: n.alignment === "before" ? "0" : "1",
135
- decimalCount: n.decimalCount.toString(),
136
- decimalSeparator: n.decimalSeparator,
137
- thousandSeparator: n.thousandSeparator
138
- }
139
- }, { triggerRefetch: r }), N({
135
+ documentModifier: o,
136
+ currency: n,
137
+ stageOnly: !0
138
+ }), this.store.patchCurrentBlockConfig(
139
+ { currencySettings: p(n) },
140
+ { triggerRefetch: !1 }
141
+ ), A({
140
142
  currentNode: this.currentNode,
141
- documentModifier: u
142
- });
143
+ documentModifier: o,
144
+ configOverrides: { currency: n }
145
+ }), o.apply(new l("Updated currency settings"));
146
+ }
147
+ /** Re-stamps the compiler-read block attributes where they drifted from the node config. */
148
+ _repairCurrencyAttributes(e) {
149
+ const t = T(this.currentNode);
150
+ if (t && _.every((o) => t[o] === e[o]))
151
+ return;
152
+ const n = this.api.getDocumentModifier();
153
+ R({ currentNode: this.currentNode, documentModifier: n, currency: e, stageOnly: !0 }) && n.apply(new l("Update currency attributes"));
143
154
  }
144
155
  _onCurrencyChange(e) {
145
- const [, r] = e.includes(".") ? e.split(".") : [null, e];
146
- s.getConfig(this.currentNode).currency.code !== r && (this._updateCurrency({
147
- code: r,
148
- symbol: r
149
- }, !0), this.api.updateValues({
150
- [t.CURRENCY_SYMBOL]: r
151
- }));
156
+ const [, t] = e.includes(".") ? e.split(".") : [null, e], n = c.getConfig(this.currentNode).currency, o = this.store.recommendationConfigs.currencySettings.value;
157
+ if (n.code === t) {
158
+ o !== t && this.store.patchCurrentBlockConfig({ currencySettings: p(n) });
159
+ return;
160
+ }
161
+ if (o !== t) {
162
+ const { currencySettings: d } = this.store.recommendationConfigs;
163
+ this.store.patchCurrentBlockConfig({
164
+ currencySettings: { ...d, name: t, value: t, symbol: t }
165
+ });
166
+ }
167
+ this.api.updateValues({
168
+ [r.CURRENCY_SYMBOL]: t
169
+ });
152
170
  }
153
171
  _onCurrencyLocationChange(e) {
154
172
  this._updateCurrency({
@@ -169,23 +187,23 @@ class Y extends m {
169
187
  });
170
188
  }
171
189
  _onDecimalCountChange(e) {
172
- const r = parseInt(e);
190
+ const t = parseInt(e);
173
191
  this._updateCurrency({
174
- decimalCount: Number.isNaN(r) ? 2 : r
192
+ decimalCount: Number.isNaN(t) ? 2 : t
175
193
  });
176
194
  }
177
195
  _listenToFormUpdates() {
178
- this.api.onValueChanged(t.CURRENCY, (e) => {
196
+ this.api.onValueChanged(r.CURRENCY, (e) => {
179
197
  this._onCurrencyChange(e);
180
- }), this.api.onValueChanged(t.CURRENCY_LOCATION, (e) => {
198
+ }), this.api.onValueChanged(r.CURRENCY_LOCATION, (e) => {
181
199
  this._onCurrencyLocationChange(e);
182
- }), this.api.onValueChanged(t.CURRENCY_SYMBOL, (e) => {
200
+ }), this.api.onValueChanged(r.CURRENCY_SYMBOL, (e) => {
183
201
  this._onCurrencySymbolChange(e);
184
- }), this.api.onValueChanged(t.CURRENCY_THOUSAND_SEPARATOR, (e) => {
202
+ }), this.api.onValueChanged(r.CURRENCY_THOUSAND_SEPARATOR, (e) => {
185
203
  this._onThousandSeparatorChange(e);
186
- }), this.api.onValueChanged(t.CURRENCY_DECIMAL_SEPARATOR, (e) => {
204
+ }), this.api.onValueChanged(r.CURRENCY_DECIMAL_SEPARATOR, (e) => {
187
205
  this._onDecimalSeparatorChange(e);
188
- }), this.api.onValueChanged(t.CURRENCY_DECIMAL_COUNT, (e) => {
206
+ }), this.api.onValueChanged(r.CURRENCY_DECIMAL_COUNT, (e) => {
189
207
  this._onDecimalCountChange(e);
190
208
  });
191
209
  }
@@ -196,12 +214,12 @@ class Y extends m {
196
214
  _subscribeToStoreChanges() {
197
215
  let e = this.store.currencyList.length;
198
216
  this.storeUnsubscription = this.store.$subscribe(() => {
199
- const r = this.store.currencyList.length;
200
- r > 0 && r !== e && (e = r, this._initializeSelectItems(), this._setFormValues());
217
+ const t = this.store.currencyList.length;
218
+ t > 0 && t !== e && (e = t, this._initializeSelectItems(), this._setFormValues());
201
219
  });
202
220
  }
203
221
  }
204
222
  export {
205
- E as CURRENCY_CONTROL_ID,
206
- Y as CurrencyControl
223
+ f as CURRENCY_CONTROL_ID,
224
+ P as CurrencyControl
207
225
  };