@useinsider/guido 3.21.2-beta.4c14c74 → 3.21.2-beta.5a809f7

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 (44) hide show
  1. package/dist/config/compiler/utils/recommendationCompilerUtils.js +22 -22
  2. package/dist/config/migrator/recommendation/compositionMapper.js +56 -49
  3. package/dist/config/migrator/recommendation/extractors.js +74 -26
  4. package/dist/config/migrator/recommendation/htmlBuilder.js +279 -202
  5. package/dist/config/migrator/recommendation/settingsMapper.js +37 -36
  6. package/dist/config/migrator/recommendationMigrator.js +65 -59
  7. package/dist/extensions/Blocks/Items/controls/button/link.js +17 -14
  8. package/dist/extensions/Blocks/Items/controls/cardComposition.js +17 -14
  9. package/dist/extensions/Blocks/Items/controls/image/link.js +17 -14
  10. package/dist/extensions/Blocks/Items/controls/name/trimming.js +10 -9
  11. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +25 -24
  12. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +13 -12
  13. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +30 -29
  14. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +16 -15
  15. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +26 -25
  16. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +28 -27
  17. package/dist/extensions/Blocks/Items/controls/settingsControl.js +80 -75
  18. package/dist/extensions/Blocks/Recommendation/block.js +33 -24
  19. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +3 -3
  20. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +27 -26
  21. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +13 -13
  22. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +216 -236
  23. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +5 -5
  24. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +8 -8
  25. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +15 -15
  26. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +12 -12
  27. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +10 -10
  28. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +1 -1
  29. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +23 -22
  30. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +19 -18
  31. package/dist/extensions/Blocks/Recommendation/templates/utils.js +82 -91
  32. package/dist/extensions/Blocks/Recommendation/utils/inlinePriceOrder.js +12 -0
  33. package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMap.js +3 -2
  34. package/dist/extensions/Blocks/common-control.js +55 -62
  35. package/dist/src/config/migrator/recommendation/compositionMapper.d.ts +3 -1
  36. package/dist/src/config/migrator/recommendation/extractors.d.ts +26 -0
  37. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +1 -0
  38. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
  39. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +4 -11
  40. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +1 -13
  41. package/dist/src/extensions/Blocks/Recommendation/utils/inlinePriceOrder.d.ts +9 -0
  42. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMap.d.ts +2 -19
  43. package/dist/src/extensions/Blocks/common-control.d.ts +0 -2
  44. package/package.json +1 -1
@@ -1,20 +1,20 @@
1
1
  import { ModificationDescription as N, UEAttr as L } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { CommonControl as F } from "../../common-control.js";
3
- import { reorientBlockCellPadding as D, nameMaxWidthFor as $ } from "../constants/cardLayout.js";
4
- import { ItemsBlockId as T } from "../enums/controlEnums.js";
5
- import { productPairs as S, templateFirstLine as x } from "../enums/productEnums.js";
6
- import { SETTINGS_ENUMS as I, ItemTypeOptions as H, OrientationOptions as w, ItemInCartOptions as O, DefaultConfigValues as U } from "../enums/settingsEnums.js";
2
+ import { CommonControl as $ } from "../../common-control.js";
3
+ import { reorientBlockCellPadding as D, nameMaxWidthFor as f } from "../constants/cardLayout.js";
4
+ import { ItemsBlockId as I } from "../enums/controlEnums.js";
5
+ import { productPairs as y, templateFirstLine as x } from "../enums/productEnums.js";
6
+ import { SETTINGS_ENUMS as T, ItemTypeOptions as H, OrientationOptions as w, ItemInCartOptions as g, DefaultConfigValues as U } from "../enums/settingsEnums.js";
7
7
  import q from "../layouts/horizontal.html.js";
8
- import B from "../layouts/vertical.html.js";
9
- import { getDefaultTemplate as V, wrapInTableRow as C, applyPriceOrientationStyles as G } from "../template.js";
8
+ import V from "../layouts/vertical.html.js";
9
+ import { getDefaultTemplate as B, wrapInTableRow as C, applyPriceOrientationStyles as G } from "../template.js";
10
10
  import { findNameTextNode as Y } from "../utils/nameNode.js";
11
- import { getItemsBlockConfig as _, setItemsBlockConfig as b, escapeReplacement as g, deriveItemNumber as v } from "../utils/nodeConfigUtils.js";
11
+ import { getItemsBlockConfig as _, setItemsBlockConfig as M, escapeReplacement as A, deriveItemNumber as v } from "../utils/nodeConfigUtils.js";
12
12
  const Q = "ui-elements-items-block", p = {
13
13
  ITEMS_TYPE: "itemsType",
14
14
  ORIENTATION: "orientation",
15
15
  ITEM_IDS: "itemIds"
16
16
  };
17
- class oe extends F {
17
+ class se extends $ {
18
18
  getId() {
19
19
  return Q;
20
20
  }
@@ -28,14 +28,19 @@ class oe extends F {
28
28
  `;
29
29
  }
30
30
  onRender() {
31
- this.forgetLastPanelNode(), this._listenToFormUpdates();
31
+ const e = _(this.currentNode);
32
+ this.api.updateValues({
33
+ [p.ORIENTATION]: (e == null ? void 0 : e.orientation) ?? T.ORIENTATION.VERTICAL,
34
+ [p.ITEMS_TYPE]: (e == null ? void 0 : e.type) ?? T.ITEMS_TYPE.CART_ITEMS,
35
+ [p.ITEM_IDS]: (e == null ? void 0 : e.itemsSelectValue) ?? ""
36
+ }), this._listenToFormUpdates();
32
37
  }
33
38
  onTemplateNodeUpdated(e) {
34
39
  super.onTemplateNodeUpdated(e), console.debug("Items Block Config", e.getNodeConfig()), this.handleBlockInstanceChange(() => {
35
40
  const r = _(this.currentNode);
36
41
  this.api.updateValues({
37
- [p.ORIENTATION]: (r == null ? void 0 : r.orientation) ?? I.ORIENTATION.VERTICAL,
38
- [p.ITEMS_TYPE]: (r == null ? void 0 : r.type) ?? I.ITEMS_TYPE.CART_ITEMS,
42
+ [p.ORIENTATION]: (r == null ? void 0 : r.orientation) ?? T.ORIENTATION.VERTICAL,
43
+ [p.ITEMS_TYPE]: (r == null ? void 0 : r.type) ?? T.ITEMS_TYPE.CART_ITEMS,
39
44
  [p.ITEM_IDS]: (r == null ? void 0 : r.itemsSelectValue) ?? ""
40
45
  }), this._initializeSelectItems();
41
46
  });
@@ -80,7 +85,7 @@ class oe extends F {
80
85
  _onOrientationChange(e) {
81
86
  this.api.updateValues({ [p.ORIENTATION]: e });
82
87
  const r = this.api.getDocumentModifier();
83
- b(this.currentNode, this.api, {
88
+ M(this.currentNode, this.api, {
84
89
  orientation: e,
85
90
  priceOrientation: "horizontal"
86
91
  }, r), r.apply(new N("Changed orientation")), this._reOrderTemplate(), setTimeout(() => {
@@ -88,15 +93,15 @@ class oe extends F {
88
93
  }, 50);
89
94
  }
90
95
  _onItemsTypeChange(e) {
91
- const r = I.ITEMS_TYPE[e], t = O[e], i = t == null ? void 0 : t[0];
96
+ const r = T.ITEMS_TYPE[e], t = g[e], i = t == null ? void 0 : t[0];
92
97
  if (!r || !i)
93
98
  return;
94
- const n = i.value, o = i.value.replace("Url}}", "Image}}"), a = this.api.getDocumentModifier();
95
- b(this.currentNode, this.api, {
99
+ const n = i.value, s = i.value.replace("Url}}", "Image}}"), a = this.api.getDocumentModifier();
100
+ M(this.currentNode, this.api, {
96
101
  source: r,
97
102
  type: r,
98
103
  itemsSelectValue: i.value,
99
- imageLink: o,
104
+ imageLink: s,
100
105
  buttonLink: n
101
106
  }, a), this._updateDataTypeAttributes(r, a), this._initializeSelectItems();
102
107
  const l = this._getTemplateData(r, i.value);
@@ -105,7 +110,7 @@ class oe extends F {
105
110
  _onItemIdsChange(e) {
106
111
  this.api.updateValues({ [p.ITEM_IDS]: e });
107
112
  const r = e, t = e.replace("Url}}", "Image}}"), i = this.api.getDocumentModifier();
108
- b(this.currentNode, this.api, {
113
+ M(this.currentNode, this.api, {
109
114
  itemsSelectValue: e,
110
115
  imageLink: t,
111
116
  buttonLink: r
@@ -119,11 +124,11 @@ class oe extends F {
119
124
  L.SELECTPICKER.items,
120
125
  H
121
126
  );
122
- const e = _(this.currentNode), r = (e == null ? void 0 : e.type) ?? I.ITEMS_TYPE.CART_ITEMS, t = (e == null ? void 0 : e.itemsSelectValue) ?? "";
127
+ const e = _(this.currentNode), r = (e == null ? void 0 : e.type) ?? T.ITEMS_TYPE.CART_ITEMS, t = (e == null ? void 0 : e.itemsSelectValue) ?? "";
123
128
  this.api.updateValues({
124
129
  [p.ITEMS_TYPE]: r
125
130
  });
126
- const i = O[r];
131
+ const i = g[r];
127
132
  this.api.setUIEAttribute(
128
133
  p.ITEM_IDS,
129
134
  L.SELECTPICKER.items,
@@ -145,113 +150,113 @@ class oe extends F {
145
150
  );
146
151
  }
147
152
  _renderTemplate() {
148
- const e = _(this.currentNode), r = (e == null ? void 0 : e.orientation) ?? I.ORIENTATION.VERTICAL, t = (e == null ? void 0 : e.type) ?? I.ITEMS_TYPE.CART_ITEMS, i = (e == null ? void 0 : e.itemsSelectValue) ?? "", n = (e == null ? void 0 : e.priceCurrencySymbol) ?? "", o = (e == null ? void 0 : e.priceCurrencyLocation) ?? "0", a = (e == null ? void 0 : e.priceFormatted) ?? !1;
149
- this.api.getDocumentModifier().modifyHtml(this.currentNode).setInnerHtml(V({
153
+ const e = _(this.currentNode), r = (e == null ? void 0 : e.orientation) ?? T.ORIENTATION.VERTICAL, t = (e == null ? void 0 : e.type) ?? T.ITEMS_TYPE.CART_ITEMS, i = (e == null ? void 0 : e.itemsSelectValue) ?? "", n = (e == null ? void 0 : e.priceCurrencySymbol) ?? "", s = (e == null ? void 0 : e.priceCurrencyLocation) ?? "0", a = (e == null ? void 0 : e.priceFormatted) ?? !1;
154
+ this.api.getDocumentModifier().modifyHtml(this.currentNode).setInnerHtml(B({
150
155
  orientation: r,
151
156
  itemsType: t,
152
157
  itemId: i,
153
158
  currencySymbol: n,
154
- currencyLocation: o,
159
+ currencyLocation: s,
155
160
  formattedPrice: a
156
161
  })).apply(new N("Updated template"));
157
162
  }
158
163
  _getTemplateData(e, r) {
159
- const t = _(this.currentNode), i = e ?? (t == null ? void 0 : t.type) ?? I.ITEMS_TYPE.CART_ITEMS, n = r ?? (t == null ? void 0 : t.itemsSelectValue) ?? "", o = (t == null ? void 0 : t.priceFormatted) ?? !1, a = (t == null ? void 0 : t.priceSinglePrice) ?? !1, l = O[i].findIndex((h) => h.value === n), c = l > -1 ? l : 0, s = S.PAIRS_FOR_EXTENSION.price[i], d = S.PAIRS_FOR_EXTENSION.originalPrice[i];
164
+ const t = _(this.currentNode), i = e ?? (t == null ? void 0 : t.type) ?? T.ITEMS_TYPE.CART_ITEMS, n = r ?? (t == null ? void 0 : t.itemsSelectValue) ?? "", s = (t == null ? void 0 : t.priceFormatted) ?? !1, a = (t == null ? void 0 : t.priceSinglePrice) ?? !1, l = g[i].findIndex((h) => h.value === n), c = l > -1 ? l : 0, o = y.PAIRS_FOR_EXTENSION.price[i], d = y.PAIRS_FOR_EXTENSION.originalPrice[i];
160
165
  let m, u;
161
- return a ? (m = o ? s.DEFAULT_SINGLE_PRICE_FORMATTED : s.DEFAULT_SINGLE_PRICE, u = o ? d.DEFAULT_SINGLE_PRICE_FORMATTED : d.DEFAULT_SINGLE_PRICE) : (m = o ? s.DEFAULT_PRICE_FORMATTED : s.DEFAULT_PRICE, u = o ? d.DEFAULT_PRICE_FORMATTED : d.DEFAULT_PRICE), {
162
- imageSrc: S.PAIRS_FOR_EXTENSION.imageSrc[i].DEFAULT[c],
163
- name: S.PAIRS_FOR_EXTENSION.name[i].DEFAULT[c],
166
+ return a ? (m = s ? o.DEFAULT_SINGLE_PRICE_FORMATTED : o.DEFAULT_SINGLE_PRICE, u = s ? d.DEFAULT_SINGLE_PRICE_FORMATTED : d.DEFAULT_SINGLE_PRICE) : (m = s ? o.DEFAULT_PRICE_FORMATTED : o.DEFAULT_PRICE, u = s ? d.DEFAULT_PRICE_FORMATTED : d.DEFAULT_PRICE), {
167
+ imageSrc: y.PAIRS_FOR_EXTENSION.imageSrc[i].DEFAULT[c],
168
+ name: y.PAIRS_FOR_EXTENSION.name[i].DEFAULT[c],
164
169
  price: m,
165
170
  originalPrice: u,
166
- quantity: S.PAIRS_FOR_EXTENSION.quantity[i].DEFAULT,
167
- button: S.PAIRS_FOR_EXTENSION.button[i].DEFAULT_LABEL
171
+ quantity: y.PAIRS_FOR_EXTENSION.quantity[i].DEFAULT,
172
+ button: y.PAIRS_FOR_EXTENSION.button[i].DEFAULT_LABEL
168
173
  };
169
174
  }
170
175
  _updateImageSrc(e, r) {
171
176
  var i;
172
- const t = (i = this.currentNode) == null ? void 0 : i.querySelector(`[esd-extension-block-id="${T.IMAGE}"] img`);
177
+ const t = (i = this.currentNode) == null ? void 0 : i.querySelector(`[esd-extension-block-id="${I.IMAGE}"] img`);
173
178
  t && r.modifyHtml(t).setAttribute("src", e);
174
179
  }
175
180
  _updateName(e, r) {
176
- var o;
177
- const t = (o = this.currentNode) == null ? void 0 : o.querySelector(`[esd-extension-block-id="${T.NAME}"]`);
181
+ var s;
182
+ const t = (s = this.currentNode) == null ? void 0 : s.querySelector(`[esd-extension-block-id="${I.NAME}"]`);
178
183
  if (!t)
179
184
  return;
180
185
  const i = t.getInnerText().trim();
181
186
  let n = t.getInnerHTML().trim();
182
- n = n.replace(i, g(e)), r.modifyHtml(t).setInnerHtml(n);
187
+ n = n.replace(i, A(e)), r.modifyHtml(t).setInnerHtml(n);
183
188
  }
184
189
  _updatePrice(e, r) {
185
190
  var a;
186
191
  const t = ((a = this.currentNode) == null ? void 0 : a.querySelectorAll(
187
- `[esd-extension-block-id="${T.PRICE}"]`
188
- )) || [], i = _(this.currentNode), n = (i == null ? void 0 : i.priceCurrencySymbol) ?? "", o = (i == null ? void 0 : i.priceCurrencyLocation) ?? "0";
192
+ `[esd-extension-block-id="${I.PRICE}"]`
193
+ )) || [], i = _(this.currentNode), n = (i == null ? void 0 : i.priceCurrencySymbol) ?? "", s = (i == null ? void 0 : i.priceCurrencyLocation) ?? "0";
189
194
  t.forEach((l) => {
190
195
  const c = this._getParagraphFromBlock(l);
191
196
  if (!c)
192
197
  return;
193
- const s = c.getInnerHTML().trim() || "", d = c.getInnerText().trim() || "", m = (n == null ? void 0 : n.trim()) || "", u = this._removeCurrencySymbol(d, m), h = this._replacePriceNumber(u, e), E = this._buildPriceContent(h, m, o), y = s.replace(d, g(E));
194
- r.modifyHtml(c).setInnerHtml(y);
198
+ const o = c.getInnerHTML().trim() || "", d = c.getInnerText().trim() || "", m = (n == null ? void 0 : n.trim()) || "", u = this._removeCurrencySymbol(d, m), h = this._replacePriceNumber(u, e), E = this._buildPriceContent(h, m, s), S = o.replace(d, A(E));
199
+ r.modifyHtml(c).setInnerHtml(S);
195
200
  });
196
201
  }
197
202
  _updateOriginalPrice(e, r) {
198
203
  var a;
199
204
  const t = ((a = this.currentNode) == null ? void 0 : a.querySelectorAll(
200
- `[esd-extension-block-id="${T.ORIGINAL_PRICE}"]`
201
- )) || [], i = _(this.currentNode), n = (i == null ? void 0 : i.priceCurrencySymbol) ?? "", o = (i == null ? void 0 : i.priceCurrencyLocation) ?? "0";
205
+ `[esd-extension-block-id="${I.ORIGINAL_PRICE}"]`
206
+ )) || [], i = _(this.currentNode), n = (i == null ? void 0 : i.priceCurrencySymbol) ?? "", s = (i == null ? void 0 : i.priceCurrencyLocation) ?? "0";
202
207
  t.forEach((l) => {
203
208
  const c = this._getParagraphFromBlock(l);
204
209
  if (!c)
205
210
  return;
206
- const s = c.querySelector("s");
207
- if (!s)
211
+ const o = c.querySelector("s");
212
+ if (!o)
208
213
  return;
209
- const d = s.getInnerHTML().trim() || "", m = s.getInnerText().trim() || "", u = (n == null ? void 0 : n.trim()) || "", h = this._removeCurrencySymbol(m, u), E = this._replacePriceNumber(h, e), y = this._buildPriceContent(E, u, o), A = `<s>${d.replace(m, g(y))}</s>`;
210
- r.modifyHtml(c).setInnerHtml(A);
214
+ const d = o.getInnerHTML().trim() || "", m = o.getInnerText().trim() || "", u = (n == null ? void 0 : n.trim()) || "", h = this._removeCurrencySymbol(m, u), E = this._replacePriceNumber(h, e), S = this._buildPriceContent(E, u, s), R = `<s>${d.replace(m, A(S))}</s>`;
215
+ r.modifyHtml(c).setInnerHtml(R);
211
216
  });
212
217
  }
213
218
  _updateQuantity(e, r, t) {
214
219
  var h;
215
- const i = _(this.currentNode), o = (r ?? (i == null ? void 0 : i.type) ?? I.ITEMS_TYPE.CART_ITEMS) !== I.ITEMS_TYPE.BROWSED_ITEMS, a = (i == null ? void 0 : i.quantityControlEnabled) !== !1, l = o && a, c = (h = this.currentNode) == null ? void 0 : h.querySelector(`[esd-extension-block-id="${T.QUANTITY}"]`);
220
+ const i = _(this.currentNode), s = (r ?? (i == null ? void 0 : i.type) ?? T.ITEMS_TYPE.CART_ITEMS) !== T.ITEMS_TYPE.BROWSED_ITEMS, a = (i == null ? void 0 : i.quantityControlEnabled) !== !1, l = s && a, c = (h = this.currentNode) == null ? void 0 : h.querySelector(`[esd-extension-block-id="${I.QUANTITY}"]`);
216
221
  if (!c)
217
222
  return;
218
- const s = this._getParagraphFromBlock(c);
219
- if (!s)
223
+ const o = this._getParagraphFromBlock(c);
224
+ if (!o)
220
225
  return;
221
- const d = s.getInnerText().trim();
222
- let m = s.getInnerHTML().trim();
223
- function u(E, y, P) {
226
+ const d = o.getInnerText().trim();
227
+ let m = o.getInnerHTML().trim();
228
+ function u(E, S, P) {
224
229
  return E.replace(
225
- new RegExp(`(>\\s*)?${y}(\\s*<)?`, "g"),
230
+ new RegExp(`(>\\s*)?${S}(\\s*<)?`, "g"),
226
231
  `$1${P}$2`
227
232
  );
228
233
  }
229
- m = u(m, d, e), t.modifyHtml(s).setInnerHtml(m), t.modifyHtml(c).setStyle("display", l ? "table-cell" : "none");
234
+ m = u(m, d, e), t.modifyHtml(o).setInnerHtml(m), t.modifyHtml(c).setStyle("display", l ? "table-cell" : "none");
230
235
  }
231
236
  _reOrderTemplate(e) {
232
- var h, E, y, P, A, M;
233
- const r = (h = this.currentNode) == null ? void 0 : h.querySelector(`[esd-extension-block-id="${T.IMAGE}"]`), t = (E = this.currentNode) == null ? void 0 : E.querySelector(`[esd-extension-block-id="${T.NAME}"]`), i = ((y = this.currentNode) == null ? void 0 : y.querySelectorAll(
234
- `[esd-extension-block-id="${T.PRICE}"]`
237
+ var h, E, S, P, R, b;
238
+ const r = (h = this.currentNode) == null ? void 0 : h.querySelector(`[esd-extension-block-id="${I.IMAGE}"]`), t = (E = this.currentNode) == null ? void 0 : E.querySelector(`[esd-extension-block-id="${I.NAME}"]`), i = ((S = this.currentNode) == null ? void 0 : S.querySelectorAll(
239
+ `[esd-extension-block-id="${I.PRICE}"]`
235
240
  )) || [], n = ((P = this.currentNode) == null ? void 0 : P.querySelectorAll(
236
- `[esd-extension-block-id="${T.ORIGINAL_PRICE}"]`
237
- )) || [], [o] = i, [a] = n, l = (A = this.currentNode) == null ? void 0 : A.querySelector(`[esd-extension-block-id="${T.QUANTITY}"]`), c = (M = this.currentNode) == null ? void 0 : M.querySelector(`[esd-extension-block-id="${T.BUTTON}"]`);
238
- if (!r || !t || !o || !a || !l || !c)
241
+ `[esd-extension-block-id="${I.ORIGINAL_PRICE}"]`
242
+ )) || [], [s] = i, [a] = n, l = (R = this.currentNode) == null ? void 0 : R.querySelector(`[esd-extension-block-id="${I.QUANTITY}"]`), c = (b = this.currentNode) == null ? void 0 : b.querySelector(`[esd-extension-block-id="${I.BUTTON}"]`);
243
+ if (!r || !t || !s || !a || !l || !c)
239
244
  return;
240
- const s = _(this.currentNode), d = (s == null ? void 0 : s.orientation) ?? I.ORIENTATION.VERTICAL, m = d === I.ORIENTATION.VERTICAL;
241
- let u = m ? B : q;
245
+ const o = _(this.currentNode), d = (o == null ? void 0 : o.orientation) ?? T.ORIENTATION.VERTICAL, m = d === T.ORIENTATION.VERTICAL;
246
+ let u = m ? V : q;
242
247
  setTimeout(() => {
243
- const f = g(D(o.getOuterHTML(), m)), k = g(
248
+ const k = A(D(s.getOuterHTML(), m)), F = A(
244
249
  D(a.getOuterHTML(), m)
245
250
  );
246
- u = u.replace("{-{-TEMPLATE_FIRST_LINE-}-}", m ? x : "").replace("{-{-PRODUCT_IMAGE-}-}", C(r.getOuterHTML())).replace("{-{-PRODUCT_NAME-}-}", C(t.getOuterHTML())).replaceAll("{-{-PRODUCT_PRICE-}-}", C(f)).replaceAll("{-{-PRODUCT_ORIGINAL_PRICE-}-}", C(k)).replace("{-{-PRODUCT_QUANTITY-}-}", C(l.getOuterHTML())).replace("{-{-PRODUCT_BUTTON-}-}", C(c.getOuterHTML())), u = G(
251
+ u = u.replace("{-{-TEMPLATE_FIRST_LINE-}-}", m ? x : "").replace("{-{-PRODUCT_IMAGE-}-}", C(r.getOuterHTML())).replace("{-{-PRODUCT_NAME-}-}", C(t.getOuterHTML())).replaceAll("{-{-PRODUCT_PRICE-}-}", C(k)).replaceAll("{-{-PRODUCT_ORIGINAL_PRICE-}-}", C(F)).replace("{-{-PRODUCT_QUANTITY-}-}", C(l.getOuterHTML())).replace("{-{-PRODUCT_BUTTON-}-}", C(c.getOuterHTML())), u = G(
247
252
  u,
248
253
  d,
249
- (s == null ? void 0 : s.priceOrientation) ?? "horizontal",
250
- (s == null ? void 0 : s.priceVisible) ?? !0,
251
- (s == null ? void 0 : s.originalPriceVisible) ?? !0
254
+ (o == null ? void 0 : o.priceOrientation) ?? "horizontal",
255
+ (o == null ? void 0 : o.priceVisible) ?? !0,
256
+ (o == null ? void 0 : o.originalPriceVisible) ?? !0
252
257
  ), u = u.trim().replace(x, "").slice(0, -5);
253
- const R = e ?? this.api.getDocumentModifier();
254
- R.modifyHtml(r.querySelector("img")).setAttribute("width", U.productImageWidth).setAttribute("height", U.productImageWidth), R.modifyHtml(this.currentNode).setInnerHtml(u), e || R.apply(new N("Reordered template"));
258
+ const O = e ?? this.api.getDocumentModifier();
259
+ O.modifyHtml(r.querySelector("img")).setAttribute("width", U.productImageWidth).setAttribute("height", U.productImageWidth), O.modifyHtml(this.currentNode).setInnerHtml(u), e || O.apply(new N("Reordered template"));
255
260
  }, 50);
256
261
  }
257
262
  _updateDataTypeAttributes(e, r) {
@@ -259,15 +264,15 @@ class oe extends F {
259
264
  return;
260
265
  const t = this.currentNode.closest(".ins-product-td");
261
266
  t && r.modifyHtml(t).setAttribute("data-type", e), this.currentNode.querySelectorAll("[data-type]").forEach((n) => {
262
- const o = n;
263
- r.modifyHtml(o).setAttribute("data-type", e);
267
+ const s = n;
268
+ r.modifyHtml(s).setAttribute("data-type", e);
264
269
  });
265
270
  }
266
271
  _updateDataNumberAttributes(e, r) {
267
272
  if (!this.currentNode)
268
273
  return;
269
- const t = _(this.currentNode), i = (t == null ? void 0 : t.type) ?? I.ITEMS_TYPE.CART_ITEMS, n = v(e, i), o = this.currentNode.closest(".ins-product-td");
270
- o && r.modifyHtml(o).setAttribute("data-number", n), this.currentNode.querySelectorAll("[data-number]").forEach((l) => {
274
+ const t = _(this.currentNode), i = (t == null ? void 0 : t.type) ?? T.ITEMS_TYPE.CART_ITEMS, n = v(e, i), s = this.currentNode.closest(".ins-product-td");
275
+ s && r.modifyHtml(s).setAttribute("data-number", n), this.currentNode.querySelectorAll("[data-number]").forEach((l) => {
271
276
  const c = l;
272
277
  r.modifyHtml(c).setAttribute("data-number", n);
273
278
  });
@@ -277,16 +282,16 @@ class oe extends F {
277
282
  this._updateImageSrc(r.imageSrc, t), this._updateName(r.name, t), this._updatePrice(r.price, t), this._updateOriginalPrice(r.originalPrice, t), this._updateQuantity(r.quantity, e, t), t.apply(new N("Refilled template"));
278
283
  }
279
284
  _recalculateTrimming() {
280
- var o;
285
+ var s;
281
286
  if (!this.currentNode)
282
287
  return;
283
- const e = (o = this.currentNode) == null ? void 0 : o.querySelector(`[esd-extension-block-id="${T.NAME}"]`);
288
+ const e = (s = this.currentNode) == null ? void 0 : s.querySelector(`[esd-extension-block-id="${I.NAME}"]`);
284
289
  if (!e)
285
290
  return;
286
291
  const r = Y(e);
287
292
  if (!r)
288
293
  return;
289
- const t = _(this.currentNode), i = (t == null ? void 0 : t.nameTrimming) ?? !0, n = $(t == null ? void 0 : t.orientation);
294
+ const t = _(this.currentNode), i = (t == null ? void 0 : t.nameTrimming) ?? !0, n = f(t == null ? void 0 : t.orientation);
290
295
  this.api.getDocumentModifier().modifyHtml(r).setStyle("overflow", "hidden").setStyle("white-space", i ? "nowrap" : "normal").setStyle("text-overflow", i ? "ellipsis" : "unset").setStyle("max-width", n).removeStyle("width").apply(new N("Recalculated trimming after orientation change"));
291
296
  }
292
297
  _getParagraphFromBlock(e) {
@@ -304,7 +309,7 @@ class oe extends F {
304
309
  } else {
305
310
  const n = t.match(/([^0-9.,\s]+)/);
306
311
  if (n && n[1]) {
307
- const o = n[1].trim(), a = new RegExp(`\\s*${this._escapeRegex(o)}\\s*`);
312
+ const s = n[1].trim(), a = new RegExp(`\\s*${this._escapeRegex(s)}\\s*`);
308
313
  i = t.replace(a, "").trim();
309
314
  }
310
315
  }
@@ -320,5 +325,5 @@ class oe extends F {
320
325
  }
321
326
  export {
322
327
  Q as CONTROL_BLOCK_ID,
323
- oe as ItemsBlockControl
328
+ se as ItemsBlockControl
324
329
  };
@@ -2,23 +2,24 @@ var b = Object.defineProperty;
2
2
  var A = (m, c, e) => c in m ? b(m, c, { enumerable: !0, configurable: !0, writable: !0, value: e }) : m[c] = e;
3
3
  var u = (m, c, e) => A(m, typeof c != "symbol" ? c + "" : c, e);
4
4
  import { useConfig as g } from "../../../composables/useConfig.js";
5
- import { BlockId as D } from "../../../enums/block.js";
6
- import { getMigrationBannerHtml as E } from "../../../utils/migrationBannerHtml.js";
5
+ import { BlockId as E } from "../../../enums/block.js";
6
+ import { getMigrationBannerHtml as D } from "../../../utils/migrationBannerHtml.js";
7
7
  import { Block as S, BlockCompositionType as v, ModificationDescription as _ } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
8
- import { CURRENT_CONFIG_VERSION as N, PRE_RRS_CONFIG_VERSION as M } from "./constants/defaultConfig.js";
8
+ import { CURRENT_CONFIG_VERSION as M, PRE_RRS_CONFIG_VERSION as N } from "./constants/defaultConfig.js";
9
9
  import { RECOMMENDATION_ID_ATTR as f } from "./constants/selectors.js";
10
- import { ensureMobileFitRule as w, syncHeightBound as O } from "./controls/image/index.js";
11
- import { regenerateMobileProductRows as H } from "./controls/main/utils.js";
12
- import { ensureMobileCssRulesExist as I, setMobileLayoutOptOut as R, hasMobileLayoutOptOut as T } from "./controls/mobileLayout/cssRules.js";
10
+ import { ensureMobileFitRule as T, syncHeightBound as w } from "./controls/image/index.js";
11
+ import { regenerateMobileProductRows as O } from "./controls/main/utils.js";
12
+ import { ensureMobileCssRulesExist as I, setMobileLayoutOptOut as R, hasMobileLayoutOptOut as x } from "./controls/mobileLayout/cssRules.js";
13
+ import { CSS_CLASS_TEXT_TRIM as H, ensureTextTrimCssRulesExist as $ } from "./controls/shared/textTrimCssRules.js";
13
14
  import { RecommendationConfigService as a } from "./services/configService.js";
14
15
  import { useRecommendationExtensionStore as p } from "./store/recommendation.js";
15
- import { getDefaultTemplate as x } from "./templates/grid/template.js";
16
+ import { getDefaultTemplate as q } from "./templates/grid/template.js";
16
17
  import { useRecommendationBlockWarning as F } from "./useRecommendationBlockWarning.js";
17
- import { registerNodeConfigWriter as y, readBlockNodeConfigs as $ } from "./utils/nodeConfigWriter.js";
18
- import { refreshArrivedStrategyBlocks as q, resolveSourceConfig as L, refreshDuplicatedStrategyBlocks as P } from "./utils/strategyCommit.js";
19
- const k = D.Recommendation, h = "recommendation-block-v2", C = "hide-price";
18
+ import { registerNodeConfigWriter as y, readBlockNodeConfigs as L } from "./utils/nodeConfigWriter.js";
19
+ import { refreshArrivedStrategyBlocks as P, resolveSourceConfig as V, refreshDuplicatedStrategyBlocks as W } from "./utils/strategyCommit.js";
20
+ const k = E.Recommendation, h = "recommendation-block-v2", C = "hide-price";
20
21
  let B = !1;
21
- class se extends S {
22
+ class ae extends S {
22
23
  constructor() {
23
24
  super();
24
25
  /**
@@ -52,7 +53,7 @@ class se extends S {
52
53
  );
53
54
  }
54
55
  getSettingsPanelTitleHtml() {
55
- return E(
56
+ return D(
56
57
  k,
57
58
  this.api.translate("Recommendation Block"),
58
59
  this.api.translate("This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.")
@@ -76,7 +77,7 @@ class se extends S {
76
77
  */
77
78
  getTemplate() {
78
79
  const e = this._generateNextId();
79
- return this._pendingBlockId = e, x(e);
80
+ return this._pendingBlockId = e, q(e);
80
81
  }
81
82
  /**
82
83
  * Called when a new block is dropped into the template
@@ -110,7 +111,7 @@ class se extends S {
110
111
  e,
111
112
  {
112
113
  recommendationId: i,
113
- configVersion: r ? N : M,
114
+ configVersion: r ? M : N,
114
115
  ...s ? { partnerName: g().partnerName.value } : {},
115
116
  // An RRS block picks a strategy, not an algorithm, and its algorithm control is
116
117
  // hidden. Keeping the `mostPopular` default would bake a most-popular feed URL
@@ -121,7 +122,7 @@ class se extends S {
121
122
  if (l.setCurrentBlock(i), this._stampHidePrice(e, n.priceHideIfSameAsDiscounted), o) {
122
123
  I(this.api);
123
124
  const d = this._getBlockElement(e);
124
- d && (R(this.api, d, !0), H({
125
+ d && (R(this.api, d, !0), O({
125
126
  currentNode: e,
126
127
  documentModifier: this.api.getDocumentModifier()
127
128
  }));
@@ -155,13 +156,13 @@ class se extends S {
155
156
  "Assign recommendation ID to legacy block"
156
157
  );
157
158
  }
158
- this._healLingeringDuplicate(e), a.needsMigration(e) && this._migrateFromLegacy(e), this._healHidePriceAttr(e), this._ensureMobileFitRule(e), this._syncHeightBound(e);
159
+ this._healLingeringDuplicate(e), a.needsMigration(e) && this._migrateFromLegacy(e), this._healHidePriceAttr(e), this._ensureMobileFitRule(e), this._syncHeightBound(e), this._ensureTextTrimCss(e);
159
160
  try {
160
161
  B || (I(this.api), B = !0);
161
162
  const t = a.getConfig(e), i = this._getBlockElement(e);
162
163
  if (i) {
163
164
  const r = !t.mobileLayoutEnabled;
164
- T(i) !== r && R(this.api, i, r);
165
+ x(i) !== r && R(this.api, i, r);
165
166
  }
166
167
  } catch {
167
168
  }
@@ -179,7 +180,15 @@ class se extends S {
179
180
  }
180
181
  _ensureMobileFitRule(e) {
181
182
  try {
182
- w(this.api, e);
183
+ T(this.api, e);
184
+ } catch {
185
+ }
186
+ }
187
+ // A migrated block arrives with trimmed cells but without the stylesheet rules the toggle would have added.
188
+ _ensureTextTrimCss(e) {
189
+ var t;
190
+ try {
191
+ (t = this._getBlockElement(e)) != null && t.querySelector(`.${H}`) && $(this.api);
183
192
  } catch {
184
193
  }
185
194
  }
@@ -187,7 +196,7 @@ class se extends S {
187
196
  const t = this._getBlockElement(e);
188
197
  if (t)
189
198
  try {
190
- O(this.api, t);
199
+ w(this.api, t);
191
200
  } catch {
192
201
  }
193
202
  }
@@ -270,7 +279,7 @@ class se extends S {
270
279
  const d = { strategyId: l.strategyId };
271
280
  return t.add(n), this._refreshClaims.set(n, d), [{ id: n, config: l, claim: d }];
272
281
  });
273
- i.length && q(i.map(({ id: r, config: s }) => ({ id: r, config: s }))).catch((r) => console.error("[recommendation] refreshing an arrived strategy failed", r)).finally(() => i.forEach(({ id: r, claim: s }) => this._releaseRefreshClaim(r, s)));
282
+ i.length && P(i.map(({ id: r, config: s }) => ({ id: r, config: s }))).catch((r) => console.error("[recommendation] refreshing an arrived strategy failed", r)).finally(() => i.forEach(({ id: r, claim: s }) => this._releaseRefreshClaim(r, s)));
274
283
  }
275
284
  /**
276
285
  * A new document reports each block to onCreated and onDocumentInit, not always in one batch, so a
@@ -282,7 +291,7 @@ class se extends S {
282
291
  return !0;
283
292
  if (i.strategyId === t)
284
293
  return !1;
285
- const r = $(e);
294
+ const r = L(e);
286
295
  return r.length > 0 && r.every((s) => s.strategyId === t);
287
296
  }
288
297
  _releaseRefreshClaim(e, t) {
@@ -344,10 +353,10 @@ class se extends S {
344
353
  if (r.cloneBlockState(t, i), r.setCurrentBlock(i), g().isFeatureEnabled("reusableRecommendationStrategy")) {
345
354
  this._resetSourceIds.add(t), y(this.api);
346
355
  const s = a.getConfig(e), n = [
347
- { id: t, claim: { strategyId: L(t, s).strategyId } },
356
+ { id: t, claim: { strategyId: V(t, s).strategyId } },
348
357
  { id: i, claim: { strategyId: s.strategyId } }
349
358
  ].filter(({ id: o }) => !this._refreshClaims.has(o));
350
- n.forEach(({ id: o, claim: l }) => this._refreshClaims.set(o, l)), P(t, i, s).catch((o) => console.error("[recommendation] refreshing a duplicated strategy failed", o)).finally(() => n.forEach(({ id: o, claim: l }) => this._releaseRefreshClaim(o, l)));
359
+ n.forEach(({ id: o, claim: l }) => this._refreshClaims.set(o, l)), W(t, i, s).catch((o) => console.error("[recommendation] refreshing a duplicated strategy failed", o)).finally(() => n.forEach(({ id: o, claim: l }) => this._releaseRefreshClaim(o, l)));
351
360
  }
352
361
  this._warnIfMultipleBlocks();
353
362
  }
@@ -451,5 +460,5 @@ class se extends S {
451
460
  }
452
461
  export {
453
462
  k as BLOCK_ID,
454
- se as RecommendationBlock
463
+ ae as RecommendationBlock
455
464
  };
@@ -7,7 +7,7 @@ const u = "recommendation-card-background-color-control", e = {
7
7
  GRID: ".product-card-segment",
8
8
  LIST: ".product-card-wrapper"
9
9
  };
10
- class h extends s {
10
+ class _ extends s {
11
11
  getId() {
12
12
  return u;
13
13
  }
@@ -18,7 +18,7 @@ class h extends s {
18
18
  ]);
19
19
  }
20
20
  onRender() {
21
- this.forgetLastPanelNode(), this._listenToFormUpdates();
21
+ this._setFormValues(), this._listenToFormUpdates();
22
22
  }
23
23
  onTemplateNodeUpdated(r) {
24
24
  super.onTemplateNodeUpdated(r), this._setFormValues();
@@ -72,5 +72,5 @@ class h extends s {
72
72
  }
73
73
  export {
74
74
  u as CARD_BACKGROUND_COLOR_CONTROL_ID,
75
- h as CardBackgroundColorControl
75
+ _ as CardBackgroundColorControl
76
76
  };