@useinsider/guido 3.21.2-beta.4b0fed7 → 3.21.2-beta.4c14c74

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 (45) hide show
  1. package/dist/composables/useSave.js +75 -68
  2. package/dist/composables/validators/useHtmlDocumentCountValidator.js +22 -0
  3. package/dist/config/compiler/utils/recommendationCompilerUtils.js +22 -22
  4. package/dist/config/migrator/recommendation/compositionMapper.js +49 -56
  5. package/dist/config/migrator/recommendation/extractors.js +29 -68
  6. package/dist/config/migrator/recommendation/htmlBuilder.js +200 -283
  7. package/dist/config/migrator/recommendation/settingsMapper.js +32 -35
  8. package/dist/config/migrator/recommendationMigrator.js +29 -32
  9. package/dist/extensions/Blocks/Items/controls/button/link.js +14 -17
  10. package/dist/extensions/Blocks/Items/controls/cardComposition.js +14 -17
  11. package/dist/extensions/Blocks/Items/controls/image/link.js +14 -17
  12. package/dist/extensions/Blocks/Items/controls/name/trimming.js +9 -10
  13. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +24 -25
  14. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +12 -13
  15. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +29 -30
  16. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +15 -16
  17. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +25 -26
  18. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +27 -28
  19. package/dist/extensions/Blocks/Items/controls/settingsControl.js +75 -80
  20. package/dist/extensions/Blocks/Recommendation/block.js +24 -33
  21. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +3 -3
  22. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +7 -7
  23. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +13 -13
  24. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +229 -208
  25. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +5 -5
  26. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +8 -8
  27. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +15 -15
  28. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +12 -12
  29. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +10 -10
  30. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +1 -1
  31. package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMap.js +2 -1
  32. package/dist/extensions/Blocks/common-control.js +62 -55
  33. package/dist/services/templateLibraryApi.js +36 -31
  34. package/dist/src/composables/validators/useHtmlDocumentCountValidator.d.ts +3 -0
  35. package/dist/src/config/migrator/recommendation/compositionMapper.d.ts +1 -3
  36. package/dist/src/config/migrator/recommendation/extractors.d.ts +0 -20
  37. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +0 -1
  38. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -1
  39. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +11 -4
  40. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMap.d.ts +2 -3
  41. package/dist/src/extensions/Blocks/common-control.d.ts +2 -0
  42. package/dist/src/utils/templatePreparation.d.ts +2 -1
  43. package/dist/utils/pairProductVariables.js +98 -90
  44. package/dist/utils/templatePreparation.js +30 -30
  45. package/package.json +1 -1
@@ -1,14 +1,12 @@
1
1
  import { RecommendationBlockId as g } from "../../../extensions/Blocks/Recommendation/constants/blockIds.js";
2
- import { CSS_CLASS_SKIP_COMPILE as at, ATTR_RECOMMENDATION_TITLE as dt, CURRENCY_ATTR as k, ATTR_PRODUCT_PRICE as h, ATTR_PRODUCT_OLD_PRICE as x, ATTR_PRODUCT_IMAGE as L, ATTR_PRODUCT_BUTTON as U, CSS_CLASS_RECO_BUTTON as J, ATTR_PRODUCT_NAME as q, ATTR_PRODUCT_OMNIBUS_PRICE as j, ATTR_PRODUCT_OMNIBUS_DISCOUNT as Q, ATTR_CUSTOM_PREFIX as Z } from "../../../extensions/Blocks/Recommendation/constants/selectors.js";
3
- import { CSS_CLASS_NO_MOBILE_LAYOUT as pt } from "../../../extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js";
4
- import { CSS_CLASS_TEXT_TRIM as ut } from "../../../extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.js";
5
- import { buildTitleRows as bt } from "../../../extensions/Blocks/Recommendation/templates/titleRows.js";
6
- import { compositionKeyToProductAttr as W, bareAttributeName as tt } from "../../../extensions/Blocks/Recommendation/utils/compositionKeys.js";
7
- import { formatPrice as H } from "../../../extensions/Blocks/Recommendation/utils/priceFormatter.js";
2
+ import { CSS_CLASS_SKIP_COMPILE as st, ATTR_RECOMMENDATION_TITLE as lt, CURRENCY_ATTR as R, ATTR_PRODUCT_IMAGE as I, ATTR_PRODUCT_BUTTON as O, CSS_CLASS_RECO_BUTTON as H, ATTR_PRODUCT_NAME as j, ATTR_PRODUCT_PRICE as V, ATTR_PRODUCT_OLD_PRICE as Y, ATTR_PRODUCT_OMNIBUS_PRICE as M, ATTR_PRODUCT_OMNIBUS_DISCOUNT as F, ATTR_CUSTOM_PREFIX as K } from "../../../extensions/Blocks/Recommendation/constants/selectors.js";
3
+ import { buildTitleRows as it } from "../../../extensions/Blocks/Recommendation/templates/titleRows.js";
4
+ import { compositionKeyToProductAttr as J, bareAttributeName as X } from "../../../extensions/Blocks/Recommendation/utils/compositionKeys.js";
5
+ import { formatPrice as B } from "../../../extensions/Blocks/Recommendation/utils/priceFormatter.js";
8
6
  import { escapeHtml as r } from "../../../utils/htmlEscape.js";
9
- import { appendStyle as m } from "./themeMapper.js";
10
- const et = "https://email-static.useinsider.com/stripo/modules/email-recommendation-v3/assets/images/image-placeholder.png", ot = "attribute-cell", nt = "Buy", lt = "border-width: 1px; background: rgb(217, 234, 211); border-color: rgb(106, 168, 79)", it = "color: rgb(56, 118, 29); background: rgb(217, 234, 211); font-family: arial, 'helvetica neue', helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 120%; mso-border-alt: 10px solid rgb(217, 234, 211); mso-padding-alt: 0", $t = "ins-recommendation-product-container ins-recommendation-desktop-container", gt = "ins-recommendation-product-container ins-recommendation-mobile-container", st = "font-size: 16px; color: #333333", Y = "font-size: 14px; color: #999999", ct = `${Y}; text-decoration: line-through; margin: 0`;
11
- function mt(t) {
7
+ import { appendStyle as $ } from "./themeMapper.js";
8
+ const q = "https://email-static.useinsider.com/stripo/modules/email-recommendation-v3/assets/images/image-placeholder.png", Q = "attribute-cell", Z = "Buy", W = "border-width: 1px; background: rgb(217, 234, 211); border-color: rgb(106, 168, 79)", tt = "color: rgb(56, 118, 29); background: rgb(217, 234, 211); font-family: arial, 'helvetica neue', helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 120%; mso-border-alt: 10px solid rgb(217, 234, 211); mso-padding-alt: 0", rt = "ins-recommendation-product-container ins-recommendation-desktop-container";
9
+ function ct(t) {
12
10
  return t.replace(/>\s+</g, "><").trim();
13
11
  }
14
12
  function f(t) {
@@ -23,28 +21,25 @@ function _() {
23
21
  textTrimming: !1
24
22
  };
25
23
  }
26
- function M(t) {
24
+ function et(t) {
27
25
  return t ? { ...t, wrapBold: !0 } : { ..._(), wrapBold: !0 };
28
26
  }
29
- function C(t, e) {
30
- let o = r(t);
31
- return e.wrapBold && e.wrapItalic ? o = `<strong><em>${o}</em></strong>` : e.wrapBold ? o = `<strong>${o}</strong>` : e.wrapItalic && (o = `<em>${o}</em>`), o;
27
+ function N(t, o) {
28
+ let e = r(t);
29
+ return o.wrapBold && o.wrapItalic ? e = `<strong><em>${e}</em></strong>` : o.wrapBold ? e = `<strong>${e}</strong>` : o.wrapItalic && (e = `<em>${e}</em>`), e;
32
30
  }
33
- function p(t) {
31
+ function u(t) {
34
32
  return t ? ` style="${r(t)}"` : "";
35
33
  }
36
- function B(t) {
37
- return t.textTrimming ? ` ${ut}` : "";
34
+ function P(t, o) {
35
+ return `<td width="${t}%" class="${Q}" ${o}`;
38
36
  }
39
- function I(t, e) {
40
- return `<td width="${t}%" class="${ot}" ${e}`;
41
- }
42
- function ft(t, e, o, n) {
43
- const s = t.width ? ` width="${t.width}"` : "", l = t.height ? ` height="${t.height}"` : "", i = ["display: block", "max-width: 100%", "height: auto"];
37
+ function at(t, o, e, s) {
38
+ const l = t.width ? ` width="${t.width}"` : "", n = t.height ? ` height="${t.height}"` : "", i = ["display: block", "max-width: 100%", "height: auto"];
44
39
  t.width && i.push(`width: ${t.width}px`), t.height && i.push(`height: ${t.height}px`);
45
- const c = i.join("; "), a = o ? ` style="background-color: ${r(o)}"` : "";
40
+ const c = i.join("; "), a = e ? ` style="background-color: ${r(e)}"` : "";
46
41
  return `
47
- ${I(n, 'valign="top" style="padding: 0 5px; height: 100%"')}>
42
+ ${P(s, 'valign="top" style="padding: 0 5px; height: 100%"')}>
48
43
  <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0"
49
44
  class="product-card-segment"${a}>
50
45
  <tbody>
@@ -52,9 +47,9 @@ function ft(t, e, o, n) {
52
47
  <td align="center"
53
48
  class="esd-block-image product-image es-p5"
54
49
  esd-extension-block-id="${g.IMAGE}">
55
- <a target="_blank" href="https://example.com/product/${e + 1}">
56
- <img src="${et}" alt="Product Name"
57
- class="adapt-img"${s}${l}
50
+ <a target="_blank" href="https://example.com/product/${o + 1}">
51
+ <img src="${q}" alt="Product Name"
52
+ class="adapt-img"${l}${n}
58
53
  style="${c}">
59
54
  </a>
60
55
  </td>
@@ -64,18 +59,18 @@ function ft(t, e, o, n) {
64
59
  </td>
65
60
  `;
66
61
  }
67
- function F(t, e, o, n, s, l, i) {
68
- const a = `table-layout: fixed${l ? `; background-color: ${r(l)}` : ""}`, d = p(s.tdStyle), u = f(s.align), b = `esd-block-text ${e}`.trim(), $ = m(n, s.pStyle);
62
+ function G(t, o, e, s, l, n, i) {
63
+ const a = `table-layout: fixed${n ? `; background-color: ${r(n)}` : ""}`, d = u(l.tdStyle), p = f(l.align), b = `esd-block-text ${o}`.trim(), m = $(s, l.pStyle);
69
64
  return `
70
- ${I(i, 'valign="top" style="padding: 0 5px; height: 100%"')}>
65
+ ${P(i, 'valign="top" style="padding: 0 5px; height: 100%"')}>
71
66
  <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0"
72
67
  class="product-card-segment" style="${a}">
73
68
  <tbody>
74
69
  <tr valign="top">
75
- <td${u}
70
+ <td${p}
76
71
  class="${b}"
77
72
  esd-extension-block-id="${t}"${d}>
78
- <p contenteditable="false"${p($)}>${C(o, s)}</p>
73
+ <p contenteditable="false"${u(m)}>${N(e, l)}</p>
79
74
  </td>
80
75
  </tr>
81
76
  </tbody>
@@ -83,19 +78,19 @@ function F(t, e, o, n, s, l, i) {
83
78
  </td>
84
79
  `;
85
80
  }
86
- function yt(t, e, o, n) {
87
- const s = e ? ` style="background-color: ${r(e)}"` : "", l = p(t.tdStyle), i = f(t.align), c = m(Y, t.pStyle);
81
+ function dt(t, o, e, s) {
82
+ const l = o ? ` style="background-color: ${r(o)}"` : "", n = u(t.tdStyle), i = f(t.align), a = $("font-size: 14px; color: #999999", t.pStyle);
88
83
  return `
89
- ${I(o, 'valign="top" style="padding: 0 5px; height: 100%"')}>
84
+ ${P(e, 'valign="top" style="padding: 0 5px; height: 100%"')}>
90
85
  <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0"
91
- class="product-card-segment"${s}>
86
+ class="product-card-segment"${l}>
92
87
  <tbody>
93
88
  <tr valign="top">
94
89
  <td${i}
95
90
  class="esd-block-text product-old-price es-p15l es-p15r"
96
- esd-extension-block-id="${g.OLD_PRICE}"${l}>
97
- <p contenteditable="false"${p(c)}>
98
- <s>${C(n, t)}</s>
91
+ esd-extension-block-id="${g.OLD_PRICE}"${n}>
92
+ <p contenteditable="false"${u(a)}>
93
+ <s>${N(s, t)}</s>
99
94
  </p>
100
95
  </td>
101
96
  </tr>
@@ -104,21 +99,21 @@ function yt(t, e, o, n) {
104
99
  </td>
105
100
  `;
106
101
  }
107
- function K(t, e, o, n, s, l, i) {
108
- const c = s ? `; background-color: ${r(s)}` : "", a = p(n.tdStyle), d = f(n.align), b = m("font-size: 12px; color: #666666", n.pStyle);
102
+ function z(t, o, e, s, l, n, i) {
103
+ const c = l ? `; background-color: ${r(l)}` : "", a = u(s.tdStyle), d = f(s.align), b = $("font-size: 12px; color: #666666", s.pStyle);
109
104
  return `
110
- ${I(i, 'valign="top" style="padding: 0 5px; height: 100%"')}>
105
+ ${P(i, 'valign="top" style="padding: 0 5px; height: 100%"')}>
111
106
  <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0"
112
107
  class="product-card-segment" style="table-layout: fixed${c}">
113
108
  <tbody>
114
109
  <tr valign="top">
115
110
  <td${d}
116
111
  data-text-before="" data-text-after=""
117
- class="esd-block-text ${l} es-p15l es-p15r"
112
+ class="esd-block-text ${n} es-p15l es-p15r"
118
113
  esd-extension-block-id="${t}"${a}>
119
- <p contenteditable="false"${p(b)}>
114
+ <p contenteditable="false"${u(b)}>
120
115
  <span class="omnibus-text-before"></span>
121
- <span class="${e}">${r(o)}</span>
116
+ <span class="${o}">${r(e)}</span>
122
117
  <span class="omnibus-text-after"></span>
123
118
  </p>
124
119
  </td>
@@ -128,12 +123,12 @@ function K(t, e, o, n, s, l, i) {
128
123
  </td>
129
124
  `;
130
125
  }
131
- function St(t, e, o, n) {
132
- const s = o ? ` style="background-color: ${r(o)}"` : "", l = m("padding: 0 5px; height: 100%", e.tdStyle), i = f(e.align), c = e.text || nt, a = m(lt, e.spanStyle), d = m(it, e.aStyle);
126
+ function pt(t, o, e, s) {
127
+ const l = e ? ` style="background-color: ${r(e)}"` : "", n = $("padding: 0 5px; height: 100%", o.tdStyle), i = f(o.align), c = o.text || Z, a = $(W, o.spanStyle), d = $(tt, o.aStyle);
133
128
  return `
134
- ${I(n, `valign="top" style="${r(l)}"`)}>
129
+ ${P(s, `valign="top" style="${r(n)}"`)}>
135
130
  <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0"
136
- class="product-card-segment"${s}>
131
+ class="product-card-segment"${l}>
137
132
  <tbody>
138
133
  <tr valign="top">
139
134
  <td${i}
@@ -141,7 +136,7 @@ function St(t, e, o, n) {
141
136
  esd-extension-block-id="${g.BUTTON}">
142
137
  <span class="es-button-border" style="${r(a)}">
143
138
  <a href="https://example.com/product/${t + 1}" target="_blank"
144
- class="es-button ${J}"
139
+ class="es-button ${H}"
145
140
  style="${r(d)}">${r(c)}</a>
146
141
  </span>
147
142
  </td>
@@ -151,53 +146,18 @@ function St(t, e, o, n) {
151
146
  </td>
152
147
  `;
153
148
  }
154
- function ht(t, e, o, n, s) {
155
- const l = n ? `; background-color: ${r(n)}` : "", i = p(o.tdStyle), c = f(o.align), d = m("font-size: 12px; color: #666666; margin: 0", o.pStyle), u = `esd-block-text product-custom-attribute es-p0t es-p0b es-p15l es-p15r${B(o)}`, b = e.replace(/_/g, " ").replace(/\b\w/g, ($) => $.toUpperCase());
149
+ function ut(t, o, e, s, l) {
150
+ const n = s ? `; background-color: ${r(s)}` : "", i = u(e.tdStyle), c = f(e.align), d = $("font-size: 12px; color: #666666; margin: 0", e.pStyle), p = o.replace(/_/g, " ").replace(/\b\w/g, (b) => b.toUpperCase());
156
151
  return `
157
- ${I(s, 'valign="middle" style="padding: 0 5px; height: 100%"')}>
152
+ ${P(l, 'valign="middle" style="padding: 0 5px; height: 100%"')}>
158
153
  <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0"
159
- class="product-card-segment" style="table-layout: fixed${l}">
154
+ class="product-card-segment" style="table-layout: fixed${n}">
160
155
  <tbody>
161
156
  <tr valign="top">
162
157
  <td product-attr="${r(t)}"${c}
163
- class="${u}"
158
+ class="esd-block-text product-custom-attribute es-p0t es-p0b es-p15l es-p15r"
164
159
  esd-extension-block-id="${g.CUSTOM_ATTRIBUTE}"${i}>
165
- <p contenteditable="false"${p(d)}>${r(b)}</p>
166
- </td>
167
- </tr>
168
- </tbody>
169
- </table>
170
- </td>
171
- `;
172
- }
173
- function xt(t, e, o, n, s) {
174
- const l = e ? ` style="background-color: ${r(e)}"` : "", i = M(t[h]), c = t[x] ?? _(), a = ($) => `
175
- <td${f(i.align)} valign="middle"
176
- class="esd-block-text product-price ${$}"
177
- esd-extension-block-id="${g.PRICE}"${p(i.tdStyle)}>
178
- <p contenteditable="false"${p(m(st, i.pStyle))}>${C(n.pricePlaceholder, i)}</p>
179
- </td>
180
- `, d = ($) => `
181
- <td${f(c.align)} valign="middle"
182
- class="esd-block-text product-old-price ${$}"
183
- esd-extension-block-id="${g.OLD_PRICE}"${p(c.tdStyle)}>
184
- <p contenteditable="false"${p(m(Y, c.pStyle))}>
185
- <s>${C(n.oldPricePlaceholder, c)}</s>
186
- </p>
187
- </td>
188
- `, u = s ? d("es-p15l es-p5r") : a("es-p15l es-p5r"), b = s ? a("es-p5l es-p15r") : d("es-p5l es-p15r");
189
- return `
190
- ${I(o, 'valign="top" style="padding: 0 5px; height: 100%"')}>
191
- <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0"
192
- class="product-card-segment"${l}>
193
- <tbody>
194
- <tr valign="top">
195
- <td align="center">
196
- <table cellpadding="0" cellspacing="0" border="0" align="center" style="margin: 0 auto">
197
- <tbody>
198
- <tr valign="middle">${u}${b}</tr>
199
- </tbody>
200
- </table>
160
+ <p contenteditable="false"${u(d)}>${r(p)}</p>
201
161
  </td>
202
162
  </tr>
203
163
  </tbody>
@@ -205,127 +165,111 @@ function xt(t, e, o, n, s) {
205
165
  </td>
206
166
  `;
207
167
  }
208
- function Ct(t, e, o, n, s, l, i) {
209
- const c = e[t], a = c ?? _();
210
- if (i.inlinePrice && t === i.inlinePrice.anchor)
211
- return xt(e, n, l, i, i.inlinePrice.originalFirst);
168
+ function bt(t, o, e, s, l, n, i) {
169
+ const c = o[t], a = c ?? _();
212
170
  switch (t) {
213
- case L:
214
- return ft(
171
+ case I:
172
+ return at(
215
173
  c ?? {},
174
+ l,
216
175
  s,
217
- n,
218
- l
176
+ n
219
177
  );
220
- case q:
221
- return F(
178
+ case j:
179
+ return G(
222
180
  g.NAME,
223
- `product-name es-p10t es-p10b es-p15l es-p15r${B(a)}`,
181
+ "product-name es-p10t es-p10b es-p15l es-p15r",
224
182
  "Product Name",
225
183
  "font-size: 16px; color: #333333",
226
184
  a,
227
- n,
228
- l
185
+ s,
186
+ n
229
187
  );
230
- case h:
231
- return F(
188
+ case V:
189
+ return G(
232
190
  g.PRICE,
233
191
  "product-price es-p15l es-p15r",
234
192
  i.pricePlaceholder,
235
193
  "font-size: 16px; color: #333333",
236
- M(c),
237
- n,
238
- l
194
+ et(c),
195
+ s,
196
+ n
239
197
  );
240
- case x:
241
- return yt(a, n, l, i.oldPricePlaceholder);
242
- case j:
243
- return K(
198
+ case Y:
199
+ return dt(a, s, n, i.oldPricePlaceholder);
200
+ case M:
201
+ return z(
244
202
  g.OMNIBUS_PRICE,
245
203
  "omnibus-price-value",
246
204
  i.omnibusPricePlaceholder,
247
205
  a,
248
- n,
206
+ s,
249
207
  "product-omnibus-price",
250
- l
208
+ n
251
209
  );
252
- case Q:
253
- return K(
210
+ case F:
211
+ return z(
254
212
  g.OMNIBUS_DISCOUNT,
255
213
  "omnibus-discount-value",
256
214
  "-10%",
257
215
  a,
258
- n,
216
+ s,
259
217
  "product-omnibus-discount",
260
- l
218
+ n
261
219
  );
262
- case U:
263
- return St(
264
- s,
220
+ case O:
221
+ return pt(
222
+ l,
265
223
  c ?? {},
266
- n,
267
- l
224
+ s,
225
+ n
268
226
  );
269
227
  default:
270
- if (t.startsWith(Z)) {
271
- const d = o[t] ?? W(t), u = tt(d);
272
- return ht(d, u, a, n, l);
228
+ if (t.startsWith(K)) {
229
+ const d = e[t] ?? J(t), p = X(d);
230
+ return ut(d, p, a, s, n);
273
231
  }
274
232
  return null;
275
233
  }
276
234
  }
277
- const rt = `
235
+ const ot = `
278
236
  <tr>
279
237
  <td class="spacer" style="height: 10px"></td>
280
238
  </tr>
281
239
  `;
282
- function Tt(t) {
240
+ function gt(t) {
283
241
  return {
284
- pricePlaceholder: H({ price: 18, currency: t }),
285
- oldPricePlaceholder: H({ price: 20, currency: t }),
286
- omnibusPricePlaceholder: H({ price: 20, currency: t })
242
+ pricePlaceholder: B({ price: 18, currency: t }),
243
+ oldPricePlaceholder: B({ price: 20, currency: t }),
244
+ omnibusPricePlaceholder: B({ price: 20, currency: t })
287
245
  };
288
246
  }
289
- function Pt(t, e, o) {
290
- const n = e.includes(h) && e.includes(x), l = o[h] !== !1 === (o[x] !== !1);
291
- if (t || !n || !l)
292
- return null;
293
- const i = e.indexOf(x) < e.indexOf(h);
294
- return {
295
- originalFirst: i,
296
- anchor: i ? x : h,
297
- skip: i ? h : x
298
- };
299
- }
300
- function wt(t, e, o, n) {
301
- const { composition: s, visibility: l, perElement: i, customAttrValues: c, cardBg: a } = n, d = (100 / o).toFixed(2), u = o - e, b = `<td class="${ot}" style="padding: 0 5px;" width="${d}%"></td>`, $ = u > 0 ? b.repeat(u) : "";
247
+ function mt(t, o, e, s) {
248
+ const { composition: l, visibility: n, perElement: i, customAttrValues: c, cardBg: a } = s, d = (100 / e).toFixed(2), p = e - o, b = `<td class="${Q}" style="padding: 0 5px;" width="${d}%"></td>`, m = p > 0 ? b.repeat(p) : "";
302
249
  return `
303
250
  <tr class="recommendation-product-row">
304
251
  <td>
305
252
  <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0"
306
253
  class="product-card-wrapper" style="table-layout: fixed">
307
- <tbody>${s.filter((T) => {
308
- var S;
309
- return T !== ((S = n.inlinePrice) == null ? void 0 : S.skip);
310
- }).map((T) => {
311
- const S = l[T] !== !1, P = S ? "" : ' style="display: none"', O = S ? "1" : "0", R = [];
312
- for (let E = 0; E < e; E += 1) {
313
- const v = Ct(
314
- T,
254
+ <tbody>${l.map((w) => {
255
+ const C = n[w] !== !1, S = C ? "" : ' style="display: none"', A = C ? "1" : "0", x = [];
256
+ for (let T = 0; T < o; T += 1) {
257
+ const E = bt(
258
+ w,
315
259
  i,
316
260
  c,
317
261
  a,
318
- t + E,
262
+ t + T,
319
263
  d,
320
- n
264
+ s
321
265
  );
322
- v && R.push(v);
266
+ E && x.push(E);
323
267
  }
324
- return R.length === 0 ? "" : `
268
+ return x.length === 0 ? "" : `
325
269
  <tr class="recommendation-attribute-row"
326
- data-attribute-type="${r(T)}"
327
- data-visibility="${O}"${P}>
328
- ${R.join("")}${$}
270
+ data-attribute-type="${r(w)}"
271
+ data-visibility="${A}"${S}>
272
+ ${x.join("")}${m}
329
273
  </tr>
330
274
  `;
331
275
  }).filter(Boolean).join("")}</tbody>
@@ -334,68 +278,50 @@ function wt(t, e, o, n) {
334
278
  </tr>
335
279
  `;
336
280
  }
337
- function X(t, e, o) {
338
- const n = [];
339
- for (let s = 0; s < t; s += e) {
340
- const l = Math.min(e, t - s);
341
- s > 0 && n.push(rt), n.push(wt(s, l, e, o));
281
+ function $t(t, o, e) {
282
+ const s = [];
283
+ for (let l = 0; l < t; l += o) {
284
+ const n = Math.min(o, t - l);
285
+ l > 0 && s.push(ot), s.push(mt(l, n, o, e));
342
286
  }
343
- return n.join("");
344
- }
345
- function _t(t, e, o) {
346
- const n = M(t[h]), s = t[x] ?? _(), l = (c) => `
347
- <td class="esd-block-text product-price" esd-extension-block-id="${g.PRICE}"
348
- ${f(n.align ?? "left")} valign="middle"
349
- ${p(m(`width: auto${c}`, n.tdStyle))}>
350
- <p contenteditable="false"${p(m(`${st}; margin: 0`, n.pStyle))}>${C(e.pricePlaceholder, n)}</p>
351
- </td>
352
- `, i = (c) => `
353
- <td class="esd-block-text product-old-price" esd-extension-block-id="${g.OLD_PRICE}"
354
- ${f(s.align ?? "left")} valign="middle"
355
- ${p(m(`width: auto${c}`, s.tdStyle))}>
356
- <p contenteditable="false"${p(m(ct, s.pStyle))}>${`<s>${C(e.oldPricePlaceholder, s)}</s>`}</p>
357
- </td>
358
- `;
359
- return o ? i("; padding-right: 8px") + l("") : l("; padding-right: 8px") + i("");
287
+ return s.join("");
360
288
  }
361
- function At(t, e, o, n) {
362
- const s = e[t];
363
- if (n.inlinePrice && t === n.inlinePrice.anchor)
364
- return _t(e, n, n.inlinePrice.originalFirst);
365
- if (t === q) {
366
- const l = s ?? _(), i = m("font-size: 16px; color: #333333; margin: 0", l.pStyle), c = f(l.align ?? "left");
289
+ function ft(t, o, e, s) {
290
+ const l = o[t];
291
+ if (t === j) {
292
+ const n = l ?? _(), i = $("font-size: 16px; color: #333333; margin: 0", n.pStyle), c = f(n.align ?? "left");
367
293
  return `
368
- <td class="esd-block-text product-name${B(l)}"
369
- esd-extension-block-id="${g.NAME}"${c}${p(l.tdStyle)}>
370
- <p contenteditable="false"${p(i)}>${C("Product Name", l)}</p>
294
+ <td class="esd-block-text product-name"
295
+ esd-extension-block-id="${g.NAME}"${c}${u(n.tdStyle)}>
296
+ <p contenteditable="false"${u(i)}>${N("Product Name", n)}</p>
371
297
  </td>
372
298
  `;
373
299
  }
374
- if (t === h) {
375
- const l = M(s), i = m("font-size: 16px; color: #333333; margin: 0", l.pStyle), c = f(l.align ?? "left");
300
+ if (t === V) {
301
+ const n = et(l), i = $("font-size: 16px; color: #333333; margin: 0", n.pStyle), c = f(n.align ?? "left");
376
302
  return `
377
303
  <td class="esd-block-text product-price"
378
- esd-extension-block-id="${g.PRICE}"${c}${p(l.tdStyle)}>
379
- <p contenteditable="false"${p(i)}>${C(n.pricePlaceholder, l)}</p>
304
+ esd-extension-block-id="${g.PRICE}"${c}${u(n.tdStyle)}>
305
+ <p contenteditable="false"${u(i)}>${N(s.pricePlaceholder, n)}</p>
380
306
  </td>
381
307
  `;
382
308
  }
383
- if (t === x) {
384
- const l = s ?? _(), i = m(ct, l.pStyle), c = f(l.align ?? "left");
309
+ if (t === Y) {
310
+ const n = l ?? _(), c = $("font-size: 14px; color: #999999; text-decoration: line-through; margin: 0", n.pStyle), a = f(n.align ?? "left");
385
311
  return `
386
312
  <td class="esd-block-text product-old-price"
387
- esd-extension-block-id="${g.OLD_PRICE}"${c}${p(l.tdStyle)}>
388
- <p contenteditable="false"${p(i)}><s>${C(n.oldPricePlaceholder, l)}</s></p>
313
+ esd-extension-block-id="${g.OLD_PRICE}"${a}${u(n.tdStyle)}>
314
+ <p contenteditable="false"${u(c)}><s>${N(s.oldPricePlaceholder, n)}</s></p>
389
315
  </td>
390
316
  `;
391
317
  }
392
- if (t === j || t === Q) {
393
- const l = t === j, i = l ? g.OMNIBUS_PRICE : g.OMNIBUS_DISCOUNT, c = l ? "omnibus-price-value" : "omnibus-discount-value", a = l ? n.omnibusPricePlaceholder : "-10%", d = l ? "product-omnibus-price" : "product-omnibus-discount", u = s ?? _(), b = m("font-size: 12px; color: #666666; margin: 0", u.pStyle), $ = f(u.align ?? "left");
318
+ if (t === M || t === F) {
319
+ const n = t === M, i = n ? g.OMNIBUS_PRICE : g.OMNIBUS_DISCOUNT, c = n ? "omnibus-price-value" : "omnibus-discount-value", a = n ? s.omnibusPricePlaceholder : "-10%", d = n ? "product-omnibus-price" : "product-omnibus-discount", p = l ?? _(), b = $("font-size: 12px; color: #666666; margin: 0", p.pStyle), m = f(p.align ?? "left");
394
320
  return `
395
321
  <td class="esd-block-text ${d}"
396
322
  data-text-before="" data-text-after=""
397
- esd-extension-block-id="${i}"${$}${p(u.tdStyle)}>
398
- <p contenteditable="false"${p(b)}>
323
+ esd-extension-block-id="${i}"${m}${u(p.tdStyle)}>
324
+ <p contenteditable="false"${u(b)}>
399
325
  <span class="omnibus-text-before"></span>
400
326
  <span class="${c}">${r(a)}</span>
401
327
  <span class="omnibus-text-after"></span>
@@ -403,59 +329,56 @@ function At(t, e, o, n) {
403
329
  </td>
404
330
  `;
405
331
  }
406
- if (t.startsWith(Z)) {
407
- const l = s ?? _(), i = o[t] ?? W(t), a = tt(i).replace(/_/g, " ").replace(/\b\w/g, ($) => $.toUpperCase()), d = m("font-size: 12px; color: #666666; margin: 0", l.pStyle), u = f(l.align ?? "left"), b = g.CUSTOM_ATTRIBUTE;
332
+ if (t.startsWith(K)) {
333
+ const n = l ?? _(), i = e[t] ?? J(t), a = X(i).replace(/_/g, " ").replace(/\b\w/g, (m) => m.toUpperCase()), d = $("font-size: 12px; color: #666666; margin: 0", n.pStyle), p = f(n.align ?? "left"), b = g.CUSTOM_ATTRIBUTE;
408
334
  return `
409
335
  <td product-attr="${r(i)}"
410
- class="esd-block-text product-custom-attribute${B(l)}"
411
- esd-extension-block-id="${b}"${u}${p(l.tdStyle)}>
412
- <p contenteditable="false"${p(d)}>${r(a)}</p>
336
+ class="esd-block-text product-custom-attribute"
337
+ esd-extension-block-id="${b}"${p}${u(n.tdStyle)}>
338
+ <p contenteditable="false"${u(d)}>${r(a)}</p>
413
339
  </td>
414
340
  `;
415
341
  }
416
342
  return null;
417
343
  }
418
- function Rt(t, e) {
419
- const { composition: o, visibility: n, perElement: s, customAttrValues: l, cardBg: i } = e, c = i ? `background-color: ${r(i)}` : "", a = c ? `style="table-layout: fixed; ${c}"` : 'style="table-layout: fixed"', d = s[L] ?? {}, u = n[L] !== !1, b = d.width ? ` width="${d.width}"` : "", $ = u ? "" : ' style="display: none"', A = `
344
+ function yt(t, o) {
345
+ const { composition: e, visibility: s, perElement: l, customAttrValues: n, cardBg: i } = o, c = i ? `background-color: ${r(i)}` : "", a = c ? `style="table-layout: fixed; ${c}"` : 'style="table-layout: fixed"', d = l[I] ?? {}, p = s[I] !== !1, b = d.width ? ` width="${d.width}"` : "", m = p ? "" : ' style="display: none"', h = `
420
346
  <td width="120"
421
347
  class="esd-block-image product-image-cell recommendation-attribute-row es-p5"
422
348
  esd-extension-block-id="${g.IMAGE}"
423
- data-attribute-type="${L}"
424
- data-visibility="${u ? "1" : "0"}"
425
- align="center" valign="middle"${$}>
349
+ data-attribute-type="${I}"
350
+ data-visibility="${p ? "1" : "0"}"
351
+ align="center" valign="middle"${m}>
426
352
  <a target="_blank" href="https://example.com/product/${t + 1}">
427
- <img src="${et}" alt="Product Name"
353
+ <img src="${q}" alt="Product Name"
428
354
  class="adapt-img product-image"${b}
429
355
  style="display: block; max-width: 100%; height: auto">
430
356
  </a>
431
357
  </td>
432
- `, S = `
358
+ `, C = `
433
359
  <td class="product-info-cell" valign="middle" style="padding: 15px">
434
360
  <table cellpadding="0" cellspacing="0" role="presentation" width="100%"
435
361
  style="table-layout: fixed">
436
- <tbody>${o.filter((y) => {
437
- var w;
438
- return y !== L && y !== U && y !== ((w = e.inlinePrice) == null ? void 0 : w.skip);
439
- }).map((y) => {
440
- const w = n[y] !== !1, G = w ? "" : ' style="display: none"', z = w ? "1" : "0", V = At(y, s, l, e);
441
- return V ? `<tr class="recommendation-attribute-row"
362
+ <tbody>${e.filter((y) => y !== I && y !== O).map((y) => {
363
+ const v = s[y] !== !1, L = v ? "" : ' style="display: none"', nt = v ? "1" : "0", D = ft(y, l, n, o);
364
+ return D ? `<tr class="recommendation-attribute-row"
442
365
  data-attribute-type="${r(y)}"
443
- data-visibility="${z}"${G}>${V}</tr>` : "";
366
+ data-visibility="${nt}"${L}>${D}</tr>` : "";
444
367
  }).filter(Boolean).join(`
445
368
  `)}</tbody>
446
369
  </table>
447
370
  </td>
448
- `, P = s[U] ?? {}, O = n[U] !== !1, R = P.text || nt, E = m(lt, P.spanStyle ?? ""), v = m(it, P.aStyle ?? ""), D = O ? "" : ' style="display: none"', N = `
371
+ `, S = l[O] ?? {}, A = s[O] !== !1, x = S.text || Z, T = $(W, S.spanStyle ?? ""), E = $(tt, S.aStyle ?? ""), U = A ? "" : ' style="display: none"', k = `
449
372
  <td width="100"
450
373
  class="esd-block-button button-cell recommendation-attribute-row product-button es-p5l es-p5r"
451
374
  esd-extension-block-id="${g.BUTTON}"
452
- data-attribute-type="${U}"
453
- data-visibility="${O ? "1" : "0"}"
454
- align="${r(P.align ?? "center")}" valign="middle"${D}>
455
- <span class="es-button-border" style="${r(E)}">
375
+ data-attribute-type="${O}"
376
+ data-visibility="${A ? "1" : "0"}"
377
+ align="${r(S.align ?? "center")}" valign="middle"${U}>
378
+ <span class="es-button-border" style="${r(T)}">
456
379
  <a href="https://example.com/product/${t + 1}" target="_blank"
457
- class="es-button ${J}"
458
- style="${r(v)}">${r(R)}</a>
380
+ class="es-button ${H}"
381
+ style="${r(E)}">${r(x)}</a>
459
382
  </span>
460
383
  </td>
461
384
  `;
@@ -465,70 +388,64 @@ function Rt(t, e) {
465
388
  <table width="100%" cellpadding="0" cellspacing="0" border="0"
466
389
  class="product-card-wrapper" ${a}>
467
390
  <tbody>
468
- <tr>${A}${S}${N}</tr>
391
+ <tr>${h}${C}${k}</tr>
469
392
  </tbody>
470
393
  </table>
471
394
  </td>
472
395
  </tr>
473
396
  `;
474
397
  }
475
- function Et(t, e) {
476
- const o = [];
477
- for (let n = 0; n < t; n += 1)
478
- n > 0 && o.push(rt), o.push(Rt(n, e));
479
- return o.join("");
398
+ function St(t, o) {
399
+ const e = [];
400
+ for (let s = 0; s < t; s += 1)
401
+ s > 0 && e.push(ot), e.push(yt(s, o));
402
+ return e.join("");
480
403
  }
481
- function It(t, e) {
482
- var a, d, u, b, $, A;
483
- const o = t == null ? void 0 : t.theme, n = [];
484
- (a = o == null ? void 0 : o.textStyle) != null && a["font-family"] && n.push(`font-family: ${o.textStyle["font-family"]}`), n.push(`font-size: ${((d = o == null ? void 0 : o.textStyle) == null ? void 0 : d["font-size"]) ?? "28px"}`), n.push(`color: ${((u = o == null ? void 0 : o.textColor) == null ? void 0 : u.color) ?? "#333333"}`), (b = o == null ? void 0 : o.textStyle) != null && b["font-weight"] && n.push(`font-weight: ${o.textStyle["font-weight"]}`), ($ = o == null ? void 0 : o.textStyle) != null && $["font-style"] && n.push(`font-style: ${o.textStyle["font-style"]}`);
485
- const s = n.join("; "), l = ((A = o == null ? void 0 : o.textStyle) == null ? void 0 : A["font-weight"]) !== "normal", i = r(e), c = l ? `<strong>${i}</strong>` : i;
486
- return `<p${p(s)}>${c}</p>`;
404
+ function ht(t, o) {
405
+ var a, d, p, b, m, h;
406
+ const e = t == null ? void 0 : t.theme, s = [];
407
+ (a = e == null ? void 0 : e.textStyle) != null && a["font-family"] && s.push(`font-family: ${e.textStyle["font-family"]}`), s.push(`font-size: ${((d = e == null ? void 0 : e.textStyle) == null ? void 0 : d["font-size"]) ?? "28px"}`), s.push(`color: ${((p = e == null ? void 0 : e.textColor) == null ? void 0 : p.color) ?? "#333333"}`), (b = e == null ? void 0 : e.textStyle) != null && b["font-weight"] && s.push(`font-weight: ${e.textStyle["font-weight"]}`), (m = e == null ? void 0 : e.textStyle) != null && m["font-style"] && s.push(`font-style: ${e.textStyle["font-style"]}`);
408
+ const l = s.join("; "), n = ((h = e == null ? void 0 : e.textStyle) == null ? void 0 : h["font-weight"]) !== "normal", i = r(o), c = n ? `<strong>${i}</strong>` : i;
409
+ return `<p${u(l)}>${c}</p>`;
487
410
  }
488
- function Ot(t) {
489
- const e = t.alignment === "before" ? "0" : "1";
490
- return ` ${k.CURRENCY}="${r(t.code)}" ${k.SYMBOL}="${r(t.symbol)}" ${k.ALIGNMENT}="${e}" ${k.THOUSAND_SEPARATOR}="${r(t.thousandSeparator)}" ${k.DECIMAL_SEPARATOR}="${r(t.decimalSeparator)}" ${k.DECIMAL_COUNT}="${t.decimalCount}"`;
411
+ function xt(t) {
412
+ const o = t.alignment === "before" ? "0" : "1";
413
+ return ` ${R.CURRENCY}="${r(t.code)}" ${R.SYMBOL}="${r(t.symbol)}" ${R.ALIGNMENT}="${o}" ${R.THOUSAND_SEPARATOR}="${r(t.thousandSeparator)}" ${R.DECIMAL_SEPARATOR}="${r(t.decimalSeparator)}" ${R.DECIMAL_COUNT}="${t.decimalCount}"`;
491
414
  }
492
- function zt(t) {
415
+ function Et(t) {
493
416
  const {
494
- nodeConfig: e,
495
- composition: o,
496
- cardBg: n,
497
- titleText: s,
498
- extraClasses: l = "",
417
+ nodeConfig: o,
418
+ composition: e,
419
+ cardBg: s,
420
+ titleText: l,
421
+ extraClasses: n = "",
499
422
  legacyId: i,
500
423
  legacyBgColor: c,
501
424
  preserveInnerHtml: a,
502
425
  skipCompile: d = !1
503
- } = t, u = e.layout === "list" ? ' data-layout="list"' : "", b = e.layout === "list" ? " es-m-p0 ins-recommendation-list-layout" : "", $ = o.composition.join(","), A = JSON.stringify(o.customAttributes), T = [
426
+ } = t, p = o.layout === "list" ? ' data-layout="list"' : "", b = o.layout === "list" ? " es-m-p0 ins-recommendation-list-layout" : "", m = e.composition.join(","), h = JSON.stringify(e.customAttributes), w = [
504
427
  "recommendation-block-v2",
505
428
  "esd-block-recommendation-v3-block",
506
429
  `es-p20${b}`,
507
- `ins-recommendation-v3-block-${e.recommendationId}`,
430
+ `ins-recommendation-v3-block-${o.recommendationId}`,
508
431
  // Marker class Stripo's block infrastructure uses to identify recommendation
509
432
  // blocks. Without it, certain Styles-panel controls (e.g. button "Fit to
510
433
  // Container") are suppressed even though every other selector matches.
511
434
  "esd-recommendation-block",
512
435
  "esd-extension-block",
513
436
  "esd-container-frame",
514
- e.mobileLayoutEnabled ? "" : pt,
515
- d ? at : "",
516
- l
517
- ].filter(Boolean).join(" "), S = Ot(e.currency), P = e.visibility[dt] !== !1, O = ` esd-ext-config="${r(JSON.stringify(e))}"`, R = i ? ` id="${r(i)}"` : "", E = c ? ` bgcolor="${r(c)}"` : "", D = a ?? (() => {
518
- const N = parseInt(e.size) || 6, y = {
519
- composition: o.composition,
520
- visibility: o.visibility,
521
- perElement: o.perElementStyles,
522
- customAttrValues: o.customAttrValues,
523
- cardBg: n,
524
- ...Tt(e.currency),
525
- inlinePrice: Pt(
526
- e.priceMovedToNextLine,
527
- o.composition,
528
- o.visibility
529
- )
530
- }, w = e.layout === "list", G = w ? Et(N, y) : X(N, e.cardsInRow, y), z = e.mobileLayoutEnabled && !w ? `<td><table width="100%" cellpadding="0" cellspacing="0" border="0"
531
- class="${gt}" style="display: none">${X(N, e.mobileCardsInRow, y)}</table></td>` : "";
437
+ "ins-recommendation-no-mobile-layout",
438
+ d ? st : "",
439
+ n
440
+ ].filter(Boolean).join(" "), C = xt(o.currency), S = o.visibility[lt] !== !1, A = ` esd-ext-config="${r(JSON.stringify(o))}"`, x = i ? ` id="${r(i)}"` : "", T = c ? ` bgcolor="${r(c)}"` : "", U = a ?? (() => {
441
+ const k = parseInt(o.size) || 6, y = {
442
+ composition: e.composition,
443
+ visibility: e.visibility,
444
+ perElement: e.perElementStyles,
445
+ customAttrValues: e.customAttrValues,
446
+ cardBg: s,
447
+ ...gt(o.currency)
448
+ }, v = o.layout === "list" ? St(k, y) : $t(k, o.cardsInRow, y);
532
449
  return `
533
450
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
534
451
  <tbody>
@@ -536,15 +453,15 @@ function zt(t) {
536
453
  <td align="center">
537
454
  <table class="container" width="100%" cellpadding="0" cellspacing="0" border="0">
538
455
  <tbody>
539
- ${P ? bt(It(o.titleVariable, s), !0, e.rowSpacing) : ""}
456
+ ${S ? it(ht(e.titleVariable, l), !0, o.rowSpacing) : ""}
540
457
  <tr>
541
458
  <td>
542
459
  <table width="100%" cellpadding="0" cellspacing="0" border="0"
543
- class="${$t}">${G}
460
+ class="${rt}">${v}
544
461
  </table>
545
462
  </td>
546
463
  </tr>
547
- <tr class="ins-recommendation-mobile-row">${z}</tr>
464
+ <tr class="ins-recommendation-mobile-row"></tr>
548
465
  </tbody>
549
466
  </table>
550
467
  </td>
@@ -552,22 +469,22 @@ function zt(t) {
552
469
  </tbody>
553
470
  </table>`;
554
471
  })();
555
- return mt(`
472
+ return ct(`
556
473
  <td align="left"
557
474
  esd-extension-block-id="recommendation-block"
558
475
  width="520"
559
- class="${T}"${R}${E}
560
- recommendation-id="${e.recommendationId}"${S}
561
- data-card-composition="${r($)}"
562
- data-custom-attributes="${r(A)}"
563
- data-column-spacing="${e.columnSpacing}"
564
- data-row-spacing="${e.rowSpacing}"
565
- data-mobile-column-spacing="${e.mobileColumnSpacing}"
566
- data-mobile-row-spacing="${e.mobileRowSpacing}"
567
- hide-price="${e.priceHideIfSameAsDiscounted}"${u}${O}>${D}
476
+ class="${w}"${x}${T}
477
+ recommendation-id="${o.recommendationId}"${C}
478
+ data-card-composition="${r(m)}"
479
+ data-custom-attributes="${r(h)}"
480
+ data-column-spacing="${o.columnSpacing}"
481
+ data-row-spacing="${o.rowSpacing}"
482
+ data-mobile-column-spacing="${o.mobileColumnSpacing}"
483
+ data-mobile-row-spacing="${o.mobileRowSpacing}"
484
+ hide-price="${o.priceHideIfSameAsDiscounted}"${p}${A}>${U}
568
485
  </td>
569
486
  `);
570
487
  }
571
488
  export {
572
- zt as buildBlockHtml
489
+ Et as buildBlockHtml
573
490
  };