@useinsider/guido 3.5.1 → 3.6.0-beta.0e98cf4

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.
@@ -1,31 +1,31 @@
1
- var f = Object.defineProperty;
2
- var p = (d, l, t) => l in d ? f(d, l, { enumerable: !0, configurable: !0, writable: !0, value: t }) : d[l] = t;
3
- var s = (d, l, t) => p(d, typeof l != "symbol" ? l + "" : l, t);
1
+ var C = Object.defineProperty;
2
+ var p = (d, c, t) => c in d ? C(d, c, { enumerable: !0, configurable: !0, writable: !0, value: t }) : d[c] = t;
3
+ var s = (d, c, t) => p(d, typeof c != "symbol" ? c + "" : c, t);
4
4
  import { CommonControl as g } from "../../../common-control.js";
5
5
  import { DEFAULT_NODE_CONFIG as a } from "../../constants/defaultConfig.js";
6
6
  import { RecommendationConfigService as h } from "../../services/configService.js";
7
7
  import { useRecommendationExtensionStore as y } from "../../store/recommendation.js";
8
- import { AlgorithmControl as R } from "./algorithm.js";
9
- import { ALGORITHM_CONTROL_ID as J } from "./algorithm.js";
10
- import { CurrencyControl as N } from "./currency.js";
11
- import { CURRENCY_CONTROL_ID as X } from "./currency.js";
8
+ import { AlgorithmControl as N } from "./algorithm.js";
9
+ import { ALGORITHM_CONTROL_ID as Q } from "./algorithm.js";
10
+ import { CurrencyControl as R } from "./currency.js";
11
+ import { CURRENCY_CONTROL_ID as Z } from "./currency.js";
12
12
  import { FiltersControl as _ } from "./filters.js";
13
- import { FILTERS_CONTROL_ID as tt } from "./filters.js";
13
+ import { FILTERS_CONTROL_ID as et } from "./filters.js";
14
14
  import { LayoutOrientationControl as b } from "./layoutOrientation.js";
15
- import { LAYOUT_ORIENTATION_CONTROL_ID as ot } from "./layoutOrientation.js";
15
+ import { LAYOUT_ORIENTATION_CONTROL_ID as rt } from "./layoutOrientation.js";
16
16
  import { LocaleControl as O } from "./locale.js";
17
- import { LOCALE_CONTROL_ID as nt } from "./locale.js";
17
+ import { LOCALE_CONTROL_ID as it } from "./locale.js";
18
18
  import { ProductCountControl as I } from "./productCount.js";
19
- import { PRODUCT_COUNT_CONTROL_ID as st } from "./productCount.js";
19
+ import { PRODUCT_COUNT_CONTROL_ID as at } from "./productCount.js";
20
20
  import { ProductLayoutControl as T } from "./productLayout.js";
21
21
  import { PRODUCT_LAYOUT_CONTROL_ID as lt } from "./productLayout.js";
22
22
  import { ShuffleControl as S } from "./shuffle.js";
23
- import { SHUFFLE_CONTROL_ID as ut } from "./shuffle.js";
24
- import { getBlockElement as L, updateProductContentInPlace as P, regenerateProductRowsWithStyles as D } from "./utils.js";
25
- import { adjustProductsToSize as ht, formatProductPrice as mt, getCardComposition as Ct, getCurrentLayout as ft, reapplySpacing as pt, regenerateMobileProductRows as gt, regenerateProductRows as yt, setCurrencyAttributes as Rt, updatePricesInPlace as Nt, updateSingleProductContent as _t } from "./utils.js";
23
+ import { SHUFFLE_CONTROL_ID as dt } from "./shuffle.js";
24
+ import { setCurrencyAttributes as L, getBlockElement as P, updateProductContentInPlace as D, regenerateProductRowsWithStyles as k } from "./utils.js";
25
+ import { adjustProductsToSize as mt, formatProductPrice as ft, getCardComposition as Ct, getCurrentLayout as pt, reapplySpacing as gt, regenerateMobileProductRows as yt, regenerateProductRows as Nt, updatePricesInPlace as Rt, updateSingleProductContent as _t } from "./utils.js";
26
26
  import { useDebounceFn as m } from "../../../../../node_modules/@vueuse/shared/index.js";
27
- const k = "recommendation-id", E = "ui-elements-recommendation-block";
28
- class H extends g {
27
+ const E = "recommendation-id", v = "ui-elements-recommendation-block";
28
+ class K extends g {
29
29
  constructor() {
30
30
  super(...arguments);
31
31
  s(this, "store", y());
@@ -62,11 +62,11 @@ class H extends g {
62
62
  if (!this.currentNode || !this.api)
63
63
  return;
64
64
  const e = this.api.getDocumentModifier();
65
- P({
65
+ D({
66
66
  currentNode: this.currentNode,
67
67
  documentModifier: e,
68
68
  products: t
69
- }) || D({
69
+ }) || k({
70
70
  currentNode: this.currentNode,
71
71
  documentModifier: e,
72
72
  products: t
@@ -74,10 +74,10 @@ class H extends g {
74
74
  }, 100));
75
75
  }
76
76
  getId() {
77
- return E;
77
+ return v;
78
78
  }
79
79
  getTemplate() {
80
- return this.algorithmControl = new R(), this.localeControl = new O(), this.currencyControl = new N(), this.productCountControl = new I(), this.productLayoutControl = new T(), this.filtersControl = new _(), this.shuffleControl = new S(), this.layoutOrientationControl = new b(), [
80
+ return this.algorithmControl = new N(), this.localeControl = new O(), this.currencyControl = new R(), this.productCountControl = new I(), this.productLayoutControl = new T(), this.filtersControl = new _(), this.shuffleControl = new S(), this.layoutOrientationControl = new b(), [
81
81
  this.algorithmControl,
82
82
  this.localeControl,
83
83
  this.currencyControl,
@@ -263,7 +263,11 @@ class H extends g {
263
263
  this.currentNode,
264
264
  e,
265
265
  "Applied smart defaults"
266
- ), this.store.patchCurrentBlockConfig({
266
+ ), o && e.currency && L({
267
+ currentNode: this.currentNode,
268
+ documentModifier: this.api.getDocumentModifier(),
269
+ currency: e.currency
270
+ }), this.store.patchCurrentBlockConfig({
267
271
  ...o ? {
268
272
  currencySettings: {
269
273
  name: o,
@@ -283,10 +287,10 @@ class H extends g {
283
287
  * Reads the recommendation-id attribute from the block element within the node
284
288
  */
285
289
  _getRecommendationIdFromNode(t) {
286
- const e = L(t);
290
+ const e = P(t);
287
291
  if (!e || !("getAttribute" in e))
288
292
  return null;
289
- const o = e.getAttribute(k);
293
+ const o = e.getAttribute(E);
290
294
  if (!o)
291
295
  return null;
292
296
  const r = parseInt(o);
@@ -316,8 +320,8 @@ class H extends g {
316
320
  }
317
321
  const i = t.$state.configVersion;
318
322
  i !== o && (o = i, this._persistFiltersToNodeConfig(), this._debouncedFetchProducts());
319
- const c = t.recommendationProducts, u = c !== e, C = Array.isArray(c) && c.length > 0;
320
- u && C && (e = c, this._debouncedRegenerateWithProducts());
323
+ const l = t.recommendationProducts, u = l !== e, f = Array.isArray(l) && l.length > 0;
324
+ u && f && (e = l, this._debouncedRegenerateWithProducts());
321
325
  });
322
326
  }
323
327
  /**
@@ -337,35 +341,35 @@ class H extends g {
337
341
  }
338
342
  }
339
343
  export {
340
- J as ALGORITHM_CONTROL_ID,
341
- R as AlgorithmControl,
342
- E as CONTROL_BLOCK_ID,
343
- X as CURRENCY_CONTROL_ID,
344
- N as CurrencyControl,
345
- tt as FILTERS_CONTROL_ID,
344
+ Q as ALGORITHM_CONTROL_ID,
345
+ N as AlgorithmControl,
346
+ v as CONTROL_BLOCK_ID,
347
+ Z as CURRENCY_CONTROL_ID,
348
+ R as CurrencyControl,
349
+ et as FILTERS_CONTROL_ID,
346
350
  _ as FiltersControl,
347
- ot as LAYOUT_ORIENTATION_CONTROL_ID,
348
- nt as LOCALE_CONTROL_ID,
351
+ rt as LAYOUT_ORIENTATION_CONTROL_ID,
352
+ it as LOCALE_CONTROL_ID,
349
353
  b as LayoutOrientationControl,
350
354
  O as LocaleControl,
351
- st as PRODUCT_COUNT_CONTROL_ID,
355
+ at as PRODUCT_COUNT_CONTROL_ID,
352
356
  lt as PRODUCT_LAYOUT_CONTROL_ID,
353
357
  I as ProductCountControl,
354
358
  T as ProductLayoutControl,
355
- H as RecommendationBlockControl,
356
- ut as SHUFFLE_CONTROL_ID,
359
+ K as RecommendationBlockControl,
360
+ dt as SHUFFLE_CONTROL_ID,
357
361
  S as ShuffleControl,
358
- ht as adjustProductsToSize,
359
- mt as formatProductPrice,
360
- L as getBlockElement,
362
+ mt as adjustProductsToSize,
363
+ ft as formatProductPrice,
364
+ P as getBlockElement,
361
365
  Ct as getCardComposition,
362
- ft as getCurrentLayout,
363
- pt as reapplySpacing,
364
- gt as regenerateMobileProductRows,
365
- yt as regenerateProductRows,
366
- D as regenerateProductRowsWithStyles,
367
- Rt as setCurrencyAttributes,
368
- Nt as updatePricesInPlace,
369
- P as updateProductContentInPlace,
366
+ pt as getCurrentLayout,
367
+ gt as reapplySpacing,
368
+ yt as regenerateMobileProductRows,
369
+ Nt as regenerateProductRows,
370
+ k as regenerateProductRowsWithStyles,
371
+ L as setCurrencyAttributes,
372
+ Rt as updatePricesInPlace,
373
+ D as updateProductContentInPlace,
370
374
  _t as updateSingleProductContent
371
375
  };
@@ -1,14 +1,14 @@
1
1
  import { ModificationDescription as p } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
2
  import { RecommendationBlockId as m } from "../../constants/blockIds.js";
3
- import { MOBILE_CONTAINER_SELECTOR as q, MOBILE_ROW_SELECTOR as k, CURRENCY_ATTR as y, DESKTOP_CONTAINER_SELECTOR as P, CONTAINER_SELECTOR as v, ATTR_PRODUCT_ATTR as W } from "../../constants/selectors.js";
3
+ import { CURRENCY_ATTR as y, MOBILE_CONTAINER_SELECTOR as q, MOBILE_ROW_SELECTOR as k, DESKTOP_CONTAINER_SELECTOR as P, CONTAINER_SELECTOR as v, ATTR_PRODUCT_ATTR as V } from "../../constants/selectors.js";
4
4
  import { RecommendationConfigService as E } from "../../services/configService.js";
5
5
  import { useRecommendationExtensionStore as C } from "../../store/recommendation.js";
6
6
  import { prepareProductRows as _ } from "../../templates/index.js";
7
- import { formatPrice as j } from "../../utils/priceFormatter.js";
8
- import { isTdNode as F } from "../../utils/tagName.js";
9
- import { getDefaultProducts as L, DEFAULT_CARD_COMPOSITION as R, sanitizeImageUrl as V } from "../../templates/utils.js";
7
+ import { formatPrice as W } from "../../utils/priceFormatter.js";
8
+ import { isTdNode as j } from "../../utils/tagName.js";
9
+ import { getDefaultProducts as L, DEFAULT_CARD_COMPOSITION as h, sanitizeImageUrl as F, toDisplayableAttributeValue as G } from "../../templates/utils.js";
10
10
  const M = "recommendation-block-v2";
11
- function h(t) {
11
+ function R(t) {
12
12
  if (!t)
13
13
  return null;
14
14
  if ("getAttribute" in t) {
@@ -19,18 +19,18 @@ function h(t) {
19
19
  return "querySelector" in t ? t.querySelector(`.${M}`) ?? null : null;
20
20
  }
21
21
  function b(t) {
22
- const e = h(t);
22
+ const e = R(t);
23
23
  if (!e || !("getAttribute" in e))
24
24
  return "grid";
25
25
  const o = e.getAttribute("data-layout");
26
26
  return o === "list" || o === "horizontal" ? "list" : "grid";
27
27
  }
28
28
  function x(t) {
29
- const e = h(t);
29
+ const e = R(t);
30
30
  if (!e || !("getAttribute" in e))
31
- return R;
31
+ return h;
32
32
  const o = e.getAttribute("data-card-composition");
33
- return o ? o.split(",").filter(Boolean) : R;
33
+ return o ? o.split(",").filter(Boolean) : h;
34
34
  }
35
35
  function D(t) {
36
36
  if (!t || !("childNodes" in t))
@@ -47,14 +47,14 @@ function S(t, e, o) {
47
47
  function U(t, e) {
48
48
  return t && t.length > 0 ? t : e.length > 0 ? e : L();
49
49
  }
50
- function G(t) {
50
+ function Y(t) {
51
51
  const { currentNode: e, documentModifier: o } = t;
52
52
  if (!e || !("querySelector" in e))
53
53
  return;
54
54
  const n = e.querySelector(k);
55
55
  n && (o.modifyHtml(n).setInnerHtml(""), o.apply(new p("Cleared mobile row content")));
56
56
  }
57
- function Y(t) {
57
+ function K(t) {
58
58
  const {
59
59
  currentNode: e,
60
60
  documentModifier: o,
@@ -66,7 +66,7 @@ function Y(t) {
66
66
  return;
67
67
  const r = i ?? b(e), s = E.getConfig(e);
68
68
  if (r === "list" || !s.mobileLayoutEnabled) {
69
- G({ currentNode: e, documentModifier: o });
69
+ Y({ currentNode: e, documentModifier: o });
70
70
  return;
71
71
  }
72
72
  const u = e.querySelector(k);
@@ -79,7 +79,7 @@ function Y(t) {
79
79
  })}</table></td>`;
80
80
  o.modifyHtml(u).setInnerHtml(g), o.apply(new p("Updated mobile product rows"));
81
81
  }
82
- function K(t) {
82
+ function X(t) {
83
83
  const {
84
84
  currentNode: e,
85
85
  documentModifier: o,
@@ -98,7 +98,7 @@ function K(t) {
98
98
  composition: a,
99
99
  filterList: u.filterList
100
100
  });
101
- o.modifyHtml(s).setInnerHtml(g).apply(new p("Updated product")), Y(t), n == null || n();
101
+ o.modifyHtml(s).setInnerHtml(g).apply(new p("Updated product")), K(t), n == null || n();
102
102
  }
103
103
  function T(t, e, o, n) {
104
104
  const c = `0 ${Math.floor(o / 2)}px`;
@@ -111,7 +111,7 @@ function T(t, e, o, n) {
111
111
  t.querySelectorAll(".product-card-wrapper")
112
112
  ).forEach((u) => {
113
113
  const l = "parentNode" in u ? u.parentNode : null;
114
- l && F(l) && (e.modifyHtml(l).setStyle("padding", c), r = !0);
114
+ l && j(l) && (e.modifyHtml(l).setStyle("padding", c), r = !0);
115
115
  }), r;
116
116
  }
117
117
  function I(t, e, o) {
@@ -121,7 +121,7 @@ function I(t, e, o) {
121
121
  e.modifyHtml(r).setStyle("height", n), c = !0;
122
122
  }), c;
123
123
  }
124
- function X(t) {
124
+ function z(t) {
125
125
  const { currentNode: e, documentModifier: o } = t;
126
126
  if (!e)
127
127
  return;
@@ -160,9 +160,9 @@ function X(t) {
160
160
  }
161
161
  c && o.apply(new p("Reapply spacing after regeneration"));
162
162
  }
163
- function se(t) {
163
+ function ae(t) {
164
164
  const { currentNode: e, documentModifier: o, afterRegenerate: n, products: i, layout: c, composition: r } = t;
165
- e && K({
165
+ e && X({
166
166
  currentNode: e,
167
167
  documentModifier: o,
168
168
  products: i,
@@ -170,12 +170,12 @@ function se(t) {
170
170
  composition: r,
171
171
  afterRegenerate: () => {
172
172
  setTimeout(() => {
173
- X({ currentNode: e, documentModifier: o });
173
+ z({ currentNode: e, documentModifier: o });
174
174
  }, 0), n == null || n();
175
175
  }
176
176
  });
177
177
  }
178
- function ae(t, e) {
178
+ function de(t, e) {
179
179
  return t.length === e ? t : t.length > e ? t.slice(0, e) : [...t, ...L(e - t.length)];
180
180
  }
181
181
  function H() {
@@ -191,12 +191,12 @@ function H() {
191
191
  }
192
192
  function A(t, e = "price") {
193
193
  const o = H(), n = t[e], i = (n == null ? void 0 : n[o.code]) ?? Object.values(n ?? {})[0] ?? 0;
194
- return j({
194
+ return W({
195
195
  price: i,
196
196
  currency: o
197
197
  });
198
198
  }
199
- function z(t) {
199
+ function J(t) {
200
200
  var c, r;
201
201
  const e = H(), o = ((c = t.original_price) == null ? void 0 : c[e.code]) ?? Object.values(t.original_price ?? {})[0] ?? 0, n = ((r = t.price) == null ? void 0 : r[e.code]) ?? Object.values(t.price ?? {})[0] ?? 0, i = o > 0 ? Math.round((o - n) / o * 100) : 0;
202
202
  return i > 0 ? `-${i}%` : "0%";
@@ -217,12 +217,12 @@ function $(t) {
217
217
  S(e, u, l) && (s = !0);
218
218
  }
219
219
  if (r && "querySelector" in r) {
220
- const u = r.querySelector(".omnibus-discount-value") ?? null, l = z(o);
220
+ const u = r.querySelector(".omnibus-discount-value") ?? null, l = J(o);
221
221
  S(e, u, l) && (s = !0);
222
222
  }
223
223
  return s;
224
224
  }
225
- function J(t) {
225
+ function Q(t) {
226
226
  const {
227
227
  documentModifier: e,
228
228
  product: o,
@@ -237,7 +237,7 @@ function J(t) {
237
237
  let d = !1;
238
238
  if (n && "querySelector" in n) {
239
239
  const a = n.querySelector("img");
240
- a && (e.modifyHtml(a).setAttribute("src", V(o.image_url)).setAttribute("alt", o.name), d = !0);
240
+ a && (e.modifyHtml(a).setAttribute("src", F(o.image_url)).setAttribute("alt", o.name), d = !0);
241
241
  const f = n.querySelector("a");
242
242
  f && (e.modifyHtml(f).setAttribute("href", o.url), d = !0);
243
243
  }
@@ -262,7 +262,7 @@ function B(t) {
262
262
  return "querySelector" in t ? t.querySelector(P) ?? t : t;
263
263
  }
264
264
  const O = "product_attribute.";
265
- function Q(t, e) {
265
+ function Z(t, e) {
266
266
  var n;
267
267
  let o;
268
268
  if (t.startsWith(O)) {
@@ -270,9 +270,9 @@ function Q(t, e) {
270
270
  o = (n = e.product_attributes) == null ? void 0 : n[i];
271
271
  } else
272
272
  o = e[t];
273
- return typeof o == "string" && o.length > 0 ? o : typeof o == "number" ? String(o) : null;
273
+ return G(o) || null;
274
274
  }
275
- function Z(t, e, o) {
275
+ function ee(t, e, o) {
276
276
  if (!("querySelectorAll" in t))
277
277
  return !1;
278
278
  const n = t.querySelectorAll(
@@ -284,7 +284,7 @@ function Z(t, e, o) {
284
284
  n.forEach((r) => {
285
285
  if (!("getAttribute" in r))
286
286
  return;
287
- const s = r.getAttribute(W);
287
+ const s = r.getAttribute(V);
288
288
  if (!s)
289
289
  return;
290
290
  const u = i.get(s) ?? [];
@@ -296,7 +296,7 @@ function Z(t, e, o) {
296
296
  r.slice(0, u).forEach((l, d) => {
297
297
  if (!("querySelector" in l))
298
298
  return;
299
- const a = Q(s, o[d]);
299
+ const a = Z(s, o[d]);
300
300
  if (a === null)
301
301
  return;
302
302
  const f = l.querySelector("p") ?? null;
@@ -324,7 +324,7 @@ function w(t, e, o) {
324
324
  ), d = Math.min(n.length, o.length);
325
325
  let a = !1;
326
326
  for (let f = 0; f < d; f++) {
327
- const g = J({
327
+ const g = Q({
328
328
  documentModifier: e,
329
329
  product: o[f],
330
330
  imageEl: n[f] ?? null,
@@ -337,9 +337,9 @@ function w(t, e, o) {
337
337
  });
338
338
  a = a || g;
339
339
  }
340
- return Z(t, e, o) && (a = !0), a;
340
+ return ee(t, e, o) && (a = !0), a;
341
341
  }
342
- function de(t) {
342
+ function fe(t) {
343
343
  const { currentNode: e, documentModifier: o, products: n } = t;
344
344
  if (!e || !("querySelectorAll" in e))
345
345
  return !1;
@@ -387,7 +387,7 @@ function N(t, e, o) {
387
387
  }) && (u = !0);
388
388
  return u;
389
389
  }
390
- function fe(t) {
390
+ function me(t) {
391
391
  const { currentNode: e, documentModifier: o } = t;
392
392
  if (!e || !("querySelectorAll" in e))
393
393
  return !1;
@@ -406,8 +406,8 @@ function fe(t) {
406
406
  }
407
407
  return r && o.apply(new p("Updated price formatting in-place")), r;
408
408
  }
409
- function me(t) {
410
- const { currentNode: e, documentModifier: o, currency: n } = t, i = h(e);
409
+ function pe(t) {
410
+ const { currentNode: e, documentModifier: o, currency: n } = t, i = R(e);
411
411
  if (!i)
412
412
  return;
413
413
  const c = n.alignment === "before" ? "0" : "1", r = (s, u) => {
@@ -416,17 +416,17 @@ function me(t) {
416
416
  r(y.CURRENCY, n.code), r(y.SYMBOL, n.symbol), r(y.ALIGNMENT, c), r(y.THOUSAND_SEPARATOR, n.thousandSeparator), r(y.DECIMAL_SEPARATOR, n.decimalSeparator), r(y.DECIMAL_COUNT, n.decimalCount.toString()), o.apply(new p("Update currency attributes"));
417
417
  }
418
418
  export {
419
- ae as adjustProductsToSize,
419
+ de as adjustProductsToSize,
420
420
  A as formatProductPrice,
421
- h as getBlockElement,
421
+ R as getBlockElement,
422
422
  x as getCardComposition,
423
423
  b as getCurrentLayout,
424
- X as reapplySpacing,
425
- Y as regenerateMobileProductRows,
426
- K as regenerateProductRows,
427
- se as regenerateProductRowsWithStyles,
428
- me as setCurrencyAttributes,
429
- fe as updatePricesInPlace,
430
- de as updateProductContentInPlace,
431
- J as updateSingleProductContent
424
+ z as reapplySpacing,
425
+ K as regenerateMobileProductRows,
426
+ X as regenerateProductRows,
427
+ ae as regenerateProductRowsWithStyles,
428
+ pe as setCurrencyAttributes,
429
+ me as updatePricesInPlace,
430
+ fe as updateProductContentInPlace,
431
+ Q as updateSingleProductContent
432
432
  };
@@ -453,7 +453,7 @@ const N = () => ({
453
453
  details: !0,
454
454
  campaignId: o.variationId
455
455
  };
456
- r.strategy === "manualMerchandising" ? a.productId = r.productIds.slice(0, s).join(",") : r.strategy === "similarViewed" && (a.productId = "{itemId}"), r.strategy === "userBased" && (a.userId = "{user_id}"), c && (a.filter = c), r.shuffleProducts && (a.shuffle = !0);
456
+ r.strategy === "manualMerchandising" ? a.productId = r.productIds.join(",") : r.strategy === "similarViewed" && (a.productId = "{itemId}"), r.strategy === "userBased" && (a.userId = "{user_id}"), c && (a.filter = c), r.shuffleProducts && (a.shuffle = !0);
457
457
  let f;
458
458
  try {
459
459
  f = await h.fetchRecommendationProducts(i, a);
@@ -1,11 +1,14 @@
1
- import { RecommendationBlockId as s } from "../../constants/blockIds.js";
2
- import { ATTR_PRODUCT_ATTR as u, CSS_CLASS_RECO_BUTTON as p, ATTR_PRODUCT_BUTTON as m, ATTR_PRODUCT_OMNIBUS_DISCOUNT as h, ATTR_PRODUCT_OMNIBUS_PRICE as y, ATTR_PRODUCT_OLD_PRICE as T, ATTR_PRODUCT_PRICE as f, ATTR_PRODUCT_NAME as _, ATTR_PRODUCT_IMAGE as x } from "../../constants/selectors.js";
3
- import { useRecommendationExtensionStore as $ } from "../../store/recommendation.js";
1
+ import { RecommendationBlockId as l } from "../../constants/blockIds.js";
2
+ import { ATTR_PRODUCT_ATTR as u, CSS_CLASS_RECO_BUTTON as p, ATTR_PRODUCT_BUTTON as m, ATTR_PRODUCT_OMNIBUS_DISCOUNT as h, ATTR_PRODUCT_OMNIBUS_PRICE as y, ATTR_PRODUCT_OLD_PRICE as T, ATTR_PRODUCT_PRICE as f, ATTR_PRODUCT_NAME as $, ATTR_PRODUCT_IMAGE as _ } from "../../constants/selectors.js";
3
+ import { useRecommendationExtensionStore as x } from "../../store/recommendation.js";
4
4
  import { formatPrice as C } from "../../utils/priceFormatter.js";
5
5
  import { CUSTOM_CELL_HTML as R, sanitizeImageUrl as O } from "../utils.js";
6
- const a = "0 5px", l = "attribute-cell";
6
+ const s = "0 5px", a = "attribute-cell";
7
+ function S(t, e = s) {
8
+ return `<td class="${a}" style="padding: ${e};" width="${t}%"></td>`;
9
+ }
7
10
  function g() {
8
- const t = $(), { currencySettings: e } = t.recommendationConfigs;
11
+ const t = x(), { currencySettings: e } = t.recommendationConfigs;
9
12
  return {
10
13
  code: e.value,
11
14
  symbol: e.symbol,
@@ -22,9 +25,9 @@ function i(t, e = "price") {
22
25
  currency: o
23
26
  });
24
27
  }
25
- const S = {
26
- [x]: (t) => `
27
- <td class="${l}" style="padding: ${a}; height: 100%;" valign="top">
28
+ const A = {
29
+ [_]: (t) => `
30
+ <td class="${a}" style="padding: ${s}; height: 100%;" valign="top">
28
31
  <table
29
32
  class="product-card-segment"
30
33
  width="100%"
@@ -37,7 +40,7 @@ const S = {
37
40
  <td
38
41
  class="esd-block-image product-image"
39
42
  align="center"
40
- esd-extension-block-id="${s.IMAGE}">
43
+ esd-extension-block-id="${l.IMAGE}">
41
44
  <a target="_blank" href="${t.url}" class="${p}">
42
45
  <img
43
46
  src="${O(t.image_url)}"
@@ -51,8 +54,8 @@ const S = {
51
54
  </table>
52
55
  </td>
53
56
  `,
54
- [_]: (t) => `
55
- <td class="${l}" style="padding: ${a}; height: 100%;" valign="middle">
57
+ [$]: (t) => `
58
+ <td class="${a}" style="padding: ${s}; height: 100%;" valign="middle">
56
59
  <table
57
60
  class="product-card-segment"
58
61
  width="100%"
@@ -66,7 +69,7 @@ const S = {
66
69
  <td
67
70
  class="esd-block-text product-name es-p10t es-p10b es-p15l es-p15r"
68
71
  align="center"
69
- esd-extension-block-id="${s.NAME}">
72
+ esd-extension-block-id="${l.NAME}">
70
73
  <p contenteditable="false" style="font-size: 16px; color: #333333;">
71
74
  <strong>${t.name}</strong>
72
75
  </p>
@@ -77,7 +80,7 @@ const S = {
77
80
  </td>
78
81
  `,
79
82
  [f]: (t) => `
80
- <td class="${l}" style="padding: ${a}; height: 100%;" valign="top">
83
+ <td class="${a}" style="padding: ${s}; height: 100%;" valign="top">
81
84
  <table
82
85
  class="product-card-segment"
83
86
  width="100%"
@@ -90,7 +93,7 @@ const S = {
90
93
  <td
91
94
  class="esd-block-text product-price es-p15l es-p15r"
92
95
  align="center"
93
- esd-extension-block-id="${s.PRICE}">
96
+ esd-extension-block-id="${l.PRICE}">
94
97
  <p contenteditable="false" style="font-size: 16px; color: #333333;">
95
98
  <strong>${i(t, "price")}</strong>
96
99
  </p>
@@ -101,7 +104,7 @@ const S = {
101
104
  </td>
102
105
  `,
103
106
  [T]: (t) => `
104
- <td class="${l}" style="padding: ${a}; height: 100%;" valign="top">
107
+ <td class="${a}" style="padding: ${s}; height: 100%;" valign="top">
105
108
  <table
106
109
  class="product-card-segment"
107
110
  width="100%"
@@ -114,7 +117,7 @@ const S = {
114
117
  <td
115
118
  class="esd-block-text product-old-price es-p15l es-p15r"
116
119
  align="center"
117
- esd-extension-block-id="${s.OLD_PRICE}">
120
+ esd-extension-block-id="${l.OLD_PRICE}">
118
121
  <p contenteditable="false" style="font-size: 14px; color: #999999;">
119
122
  <strong>${i(t, "original_price")}</strong>
120
123
  </p>
@@ -125,7 +128,7 @@ const S = {
125
128
  </td>
126
129
  `,
127
130
  [y]: (t) => `
128
- <td class="${l}" style="padding: ${a}; height: 100%;" valign="top">
131
+ <td class="${a}" style="padding: ${s}; height: 100%;" valign="top">
129
132
  <table
130
133
  class="product-card-segment"
131
134
  width="100%"
@@ -140,7 +143,7 @@ const S = {
140
143
  align="center"
141
144
  data-text-before="Lowest 30-day price: "
142
145
  data-text-after=""
143
- esd-extension-block-id="${s.OMNIBUS_PRICE}">
146
+ esd-extension-block-id="${l.OMNIBUS_PRICE}">
144
147
  <p contenteditable="false" style="font-size: 12px; color: #666666;">
145
148
  <span class="omnibus-text-before">Lowest 30-day price: </span>
146
149
  <span class="omnibus-price-value">${i(t, "original_price")}</span>
@@ -156,7 +159,7 @@ const S = {
156
159
  var r, c;
157
160
  const e = g(), o = ((r = t.original_price) == null ? void 0 : r[e.code]) ?? Object.values(t.original_price ?? {})[0] ?? 0, n = ((c = t.price) == null ? void 0 : c[e.code]) ?? Object.values(t.price ?? {})[0] ?? 0, d = o > 0 ? Math.round((o - n) / o * 100) : 0, b = d > 0 ? `-${d}%` : "0%";
158
161
  return `
159
- <td class="${l}" style="padding: ${a}; height: 100%;" valign="top">
162
+ <td class="${a}" style="padding: ${s}; height: 100%;" valign="top">
160
163
  <table
161
164
  class="product-card-segment"
162
165
  width="100%"
@@ -171,7 +174,7 @@ const S = {
171
174
  align="center"
172
175
  data-text-before=""
173
176
  data-text-after=""
174
- esd-extension-block-id="${s.OMNIBUS_DISCOUNT}">
177
+ esd-extension-block-id="${l.OMNIBUS_DISCOUNT}">
175
178
  <p contenteditable="false" style="font-size: 12px; color: #666666;">
176
179
  <span class="omnibus-text-before"></span>
177
180
  <span class="omnibus-discount-value">${b}</span>
@@ -185,7 +188,7 @@ const S = {
185
188
  `;
186
189
  },
187
190
  [m]: () => `
188
- <td class="${l}" style="padding: ${a}; height: 100%;" valign="top">
191
+ <td class="${a}" style="padding: ${s}; height: 100%;" valign="top">
189
192
  <table
190
193
  class="product-card-segment"
191
194
  width="100%"
@@ -198,7 +201,7 @@ const S = {
198
201
  <td
199
202
  class="esd-block-button product-button es-p10t es-p10b"
200
203
  align="center"
201
- esd-extension-block-id="${s.BUTTON}">
204
+ esd-extension-block-id="${l.BUTTON}">
202
205
  <span
203
206
  class="es-button-border"
204
207
  style="
@@ -237,7 +240,7 @@ const S = {
237
240
  * @param content - Display content for the cell
238
241
  */
239
242
  [R]: (t, e) => `
240
- <td class="${l}" style="padding: ${a}; height: 100%;" valign="middle">
243
+ <td class="${a}" style="padding: ${s}; height: 100%;" valign="middle">
241
244
  <table
242
245
  class="product-card-segment"
243
246
  width="100%"
@@ -252,7 +255,7 @@ const S = {
252
255
  ${u}="${t}"
253
256
  class="esd-block-text product-custom-attribute es-p0t es-p0b es-p15l es-p15r"
254
257
  align="center"
255
- esd-extension-block-id="${s.CUSTOM_ATTRIBUTE}">
258
+ esd-extension-block-id="${l.CUSTOM_ATTRIBUTE}">
256
259
  <p contenteditable="false" style="font-size: 12px; color: #666666;">${e}</p>
257
260
  </td>
258
261
  </tr>
@@ -262,7 +265,8 @@ const S = {
262
265
  `
263
266
  };
264
267
  export {
265
- l as ATTRIBUTE_CELL_CLASS,
266
- a as DEFAULT_CELL_PADDING,
267
- S as gridElementRenderer
268
+ a as ATTRIBUTE_CELL_CLASS,
269
+ s as DEFAULT_CELL_PADDING,
270
+ S as buildFillerCell,
271
+ A as gridElementRenderer
268
272
  };