@useinsider/guido 3.22.0-beta.e1b5da2 → 3.22.0-beta.e9b6f94

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