@useinsider/guido 3.23.0-beta.86bed27 → 3.23.0-beta.9f6bfbf

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 (88) hide show
  1. package/README.md +1 -0
  2. package/dist/@types/config/schemas.js +17 -15
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +58 -56
  5. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +11 -11
  6. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +9 -9
  7. package/dist/composables/useModuleRepair.js +14 -12
  8. package/dist/config/compiler/utils/recommendationCompilerUtils.js +22 -22
  9. package/dist/config/migrator/index.js +16 -15
  10. package/dist/config/migrator/itemsPriceFormatMigrator.js +20 -0
  11. package/dist/config/migrator/recommendation/compositionMapper.js +56 -49
  12. package/dist/config/migrator/recommendation/extractors.js +100 -40
  13. package/dist/config/migrator/recommendation/htmlBuilder.js +285 -207
  14. package/dist/config/migrator/recommendation/settingsMapper.js +37 -36
  15. package/dist/config/migrator/recommendation/themeMapper.js +53 -41
  16. package/dist/config/migrator/recommendationMigrator.js +68 -61
  17. package/dist/extensions/Blocks/Items/block.js +115 -77
  18. package/dist/extensions/Blocks/Items/constants/currency.js +59 -14
  19. package/dist/extensions/Blocks/Items/controls/button/link.js +14 -17
  20. package/dist/extensions/Blocks/Items/controls/cardComposition.js +14 -17
  21. package/dist/extensions/Blocks/Items/controls/image/link.js +14 -17
  22. package/dist/extensions/Blocks/Items/controls/name/trimming.js +9 -10
  23. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +40 -30
  24. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +63 -53
  25. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +31 -31
  26. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +15 -16
  27. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +25 -26
  28. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -32
  29. package/dist/extensions/Blocks/Items/controls/priceFormat.js +145 -0
  30. package/dist/extensions/Blocks/Items/controls/settingsControl.js +160 -144
  31. package/dist/extensions/Blocks/Items/enums/controlEnums.js +1 -1
  32. package/dist/extensions/Blocks/Items/extension.js +9 -8
  33. package/dist/extensions/Blocks/Items/items.css.js +19 -0
  34. package/dist/extensions/Blocks/Items/settingsPanel.js +34 -25
  35. package/dist/extensions/Blocks/Items/template.js +250 -212
  36. package/dist/extensions/Blocks/Items/utils/priceFormatOps.js +185 -0
  37. package/dist/extensions/Blocks/Recommendation/block.js +33 -24
  38. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +3 -3
  39. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +27 -26
  40. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +13 -13
  41. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +165 -175
  42. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +5 -5
  43. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +8 -8
  44. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +15 -15
  45. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +12 -12
  46. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +10 -10
  47. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +1 -1
  48. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +23 -22
  49. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +19 -18
  50. package/dist/extensions/Blocks/Recommendation/templates/utils.js +82 -91
  51. package/dist/extensions/Blocks/Recommendation/utils/inlinePriceOrder.js +12 -0
  52. package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMap.js +3 -2
  53. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +1 -0
  54. package/dist/extensions/Blocks/common-control.js +62 -55
  55. package/dist/guido.css +1 -1
  56. package/dist/package.json.js +2 -2
  57. package/dist/src/@types/config/schemas.d.ts +4 -0
  58. package/dist/src/composables/useConfig.d.ts +2 -0
  59. package/dist/src/config/migrator/index.d.ts +4 -1
  60. package/dist/src/config/migrator/itemsPriceFormatMigrator.d.ts +1 -0
  61. package/dist/src/config/migrator/recommendation/compositionMapper.d.ts +3 -1
  62. package/dist/src/config/migrator/recommendation/extractors.d.ts +35 -6
  63. package/dist/src/config/migrator/recommendation/htmlBuilder.d.ts +3 -1
  64. package/dist/src/config/migrator/recommendation/themeMapper.d.ts +3 -1
  65. package/dist/src/config/migrator/recommendation/types.d.ts +11 -1
  66. package/dist/src/extensions/Blocks/Items/block.d.ts +6 -9
  67. package/dist/src/extensions/Blocks/Items/constants/currency.d.ts +32 -0
  68. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +0 -1
  69. package/dist/src/extensions/Blocks/Items/controls/priceFormat.d.ts +23 -0
  70. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +1 -0
  71. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +1 -0
  72. package/dist/src/extensions/Blocks/Items/template.d.ts +4 -1
  73. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +3 -0
  74. package/dist/src/extensions/Blocks/Items/utils/priceFormatOps.d.ts +61 -0
  75. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
  76. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +5 -10
  77. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +1 -13
  78. package/dist/src/extensions/Blocks/Recommendation/utils/inlinePriceOrder.d.ts +9 -0
  79. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMap.d.ts +2 -19
  80. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +12 -0
  81. package/dist/src/extensions/Blocks/common-control.d.ts +2 -0
  82. package/dist/src/stores/config.d.ts +20 -0
  83. package/dist/src/stores/unsubscribe.d.ts +10 -0
  84. package/dist/src/utils/itemsCurrencyRepair.d.ts +5 -1
  85. package/dist/stores/unsubscribe.js +33 -29
  86. package/dist/utils/itemsCurrencyRepair.js +29 -24
  87. package/dist/utils/pairProductVariables.js +119 -99
  88. package/package.json +2 -2
@@ -1,39 +1,44 @@
1
- import { currencyAttrTargets as u, ITEMS_CURRENCY_ATTR as c } from "../extensions/Blocks/Items/constants/currency.js";
2
- import { ItemsBlockId as l } from "../extensions/Blocks/Items/enums/controlEnums.js";
3
- const s = "items-block-v2";
4
- function f(e) {
5
- const i = e.getAttribute("esd-ext-config");
6
- if (!i)
1
+ import { isNewPriceFormatRoot as a, currencyAttrTargets as f, ITEMS_CURRENCY_ATTR as c } from "../extensions/Blocks/Items/constants/currency.js";
2
+ import { ItemsBlockId as p } from "../extensions/Blocks/Items/enums/controlEnums.js";
3
+ import { snapshotPriceFormatFromElement as m, planPriceFormatOps as y, applyPriceFormatOpsToElement as d } from "../extensions/Blocks/Items/utils/priceFormatOps.js";
4
+ const u = "items-block-v2";
5
+ function S(e, i) {
6
+ if (i || a(e)) {
7
+ const t = m(e), l = y(t, { convertLegacy: i });
8
+ return d(e, l);
9
+ }
10
+ const n = e.getAttribute("esd-ext-config");
11
+ if (!n)
7
12
  return !1;
8
- let t, r;
13
+ let r, o;
9
14
  try {
10
- ({ position: t, symbol: r } = u(JSON.parse(i)));
15
+ ({ position: r, symbol: o } = f(JSON.parse(n)));
11
16
  } catch {
12
17
  return !1;
13
18
  }
14
- let o = !1;
15
- return e.querySelectorAll(`.${l.PRICE} p`).forEach((n) => {
16
- t !== void 0 && n.getAttribute(c.POSITION) !== t && (n.setAttribute(c.POSITION, t), o = !0), r !== void 0 && n.getAttribute(c.SYMBOL) !== r && (n.setAttribute(c.SYMBOL, r), o = !0);
17
- }), o;
19
+ let s = !1;
20
+ return e.querySelectorAll(`.${p.PRICE} p`).forEach((t) => {
21
+ r !== void 0 && t.getAttribute(c.POSITION) !== r && (t.setAttribute(c.POSITION, r), s = !0), o !== void 0 && t.getAttribute(c.SYMBOL) !== o && (t.setAttribute(c.SYMBOL, o), s = !0);
22
+ }), s;
18
23
  }
19
- function S(e) {
20
- if (typeof e != "string" || !e.includes(s))
24
+ function I(e, { convertToPriceFormat: i = !1 } = {}) {
25
+ if (typeof e != "string" || !e.includes(u))
21
26
  return e;
22
27
  try {
23
- const t = new DOMParser().parseFromString(
28
+ const r = new DOMParser().parseFromString(
24
29
  `<table><tbody><tr>${e}</tr></tbody></table>`,
25
30
  "text/html"
26
- ).querySelector("tr"), r = t.querySelectorAll(`.${s}`);
27
- if (r.length === 0)
31
+ ).querySelector("tr"), o = r.querySelectorAll(`.${u}`);
32
+ if (o.length === 0)
28
33
  return e;
29
- let o = !1;
30
- return r.forEach((n) => {
31
- f(n) && (o = !0);
32
- }), o ? t.innerHTML : e;
33
- } catch (i) {
34
- return console.error("Failed to repair items currency on module add:", i), e;
34
+ let s = !1;
35
+ return o.forEach((t) => {
36
+ S(t, i) && (s = !0);
37
+ }), s ? r.innerHTML : e;
38
+ } catch (n) {
39
+ return console.error("Failed to repair items currency on module add:", n), e;
35
40
  }
36
41
  }
37
42
  export {
38
- S as repairItemsCurrencyAttributes
43
+ I as repairItemsCurrencyAttributes
39
44
  };
@@ -1,108 +1,128 @@
1
- import { ITEMS_CURRENCY_ATTR as U, isCustomCurrencySymbol as Y } from "../extensions/Blocks/Items/constants/currency.js";
2
- import { productPairs as M } from "../extensions/Blocks/Items/enums/productEnums.js";
3
- import { escapeReplacement as B } from "../extensions/Blocks/Items/utils/nodeConfigUtils.js";
4
- import { preserveTextStyles as L } from "./preserveTextStyles.js";
1
+ import { isNewPriceFormatRoot as G, ITEMS_PRICE_FORMAT_ATTR as N, currencyPositionFromLocation as Y, ITEMS_CURRENCY_ATTR as U, isCustomCurrencySymbol as B } from "../extensions/Blocks/Items/constants/currency.js";
2
+ import { productPairs as k } from "../extensions/Blocks/Items/enums/productEnums.js";
3
+ import { escapeReplacement as v } from "../extensions/Blocks/Items/utils/nodeConfigUtils.js";
4
+ import { preserveTextStyles as w } from "./preserveTextStyles.js";
5
5
  import { unwrapProductNameLinks as X } from "./unwrapProductNameLink.js";
6
6
  const q = {
7
7
  CART_ITEMS: "ins_apr",
8
8
  BROWSED_ITEMS: "browsed_item",
9
9
  PURCHASED_ITEMS: "purchased_item"
10
- }, W = ($) => $.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->");
11
- function v($, C, A) {
12
- let d = C;
13
- for (; d > 0 && /\s/.test($[d - 1]); )
14
- d -= 1;
15
- return A.some((E) => $.endsWith(E, d));
10
+ }, W = (r) => r.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->");
11
+ function j(r, h, p) {
12
+ let u = h;
13
+ for (; u > 0 && /\s/.test(r[u - 1]); )
14
+ u -= 1;
15
+ return p.some((A) => r.endsWith(A, u));
16
16
  }
17
- const j = /(\s)href=(["'])(?:[^"']*#!|#)?\2/gi;
18
- function Q($, C) {
19
- var d;
20
- const A = $.ownerDocument.createTreeWalker($, NodeFilter.SHOW_COMMENT);
21
- for (let E = A.nextNode(); E; E = A.nextNode())
22
- (d = E.nodeValue) != null && d.includes("[if mso]") && (E.nodeValue = E.nodeValue.replace(j, (k, P) => `${P}href="${C}"`));
17
+ const Q = /(\s)href=(["'])(?:[^"']*#!|#)?\2/gi;
18
+ function z(r, h) {
19
+ var u;
20
+ const p = r.ownerDocument.createTreeWalker(r, NodeFilter.SHOW_COMMENT);
21
+ for (let A = p.nextNode(); A; A = p.nextNode())
22
+ (u = A.nodeValue) != null && u.includes("[if mso]") && (A.nodeValue = A.nodeValue.replace(Q, (L, P) => `${P}href="${h}"`));
23
23
  }
24
- function et($) {
25
- const C = W($), A = new DOMParser().parseFromString(C, "text/html");
26
- X(A);
27
- const d = M.PAIRS_FOR_EXTENSION;
28
- Object.entries(d).forEach(([o, p]) => {
29
- A.querySelectorAll(".ins-product-td").forEach((r) => {
30
- const _ = r.getAttribute("data-number") || "1", y = r.getAttribute("data-type") || "CART_ITEMS";
31
- r.querySelectorAll(`[product-attr="${o}"]`).forEach((t) => {
32
- var S, I, O, x;
33
- const m = t.getAttribute("data-type") || y, n = t.getAttribute("data-number") || _, f = p[m];
24
+ function J(r) {
25
+ return {
26
+ isFormatted: r.getAttribute("data-formated") === "true",
27
+ isSinglePrice: r.getAttribute("data-single_price") === "true",
28
+ currencyPosition: r.getAttribute(U.POSITION) || "before",
29
+ configuredSymbol: (r.getAttribute(U.SYMBOL) || "").trim()
30
+ };
31
+ }
32
+ function K(r) {
33
+ return {
34
+ isFormatted: !1,
35
+ isSinglePrice: r.getAttribute(N.SINGLE_PRICE) === "true",
36
+ currencyPosition: Y(
37
+ r.getAttribute(N.ALIGNMENT) ?? void 0
38
+ ),
39
+ configuredSymbol: (r.getAttribute(N.SYMBOL) || "").trim()
40
+ };
41
+ }
42
+ function Z(r, h, p) {
43
+ const { isFormatted: u, isSinglePrice: A, currencyPosition: L, configuredSymbol: P } = p;
44
+ let y;
45
+ A ? y = u ? r.SINGLE_PRICE_FORMATTED : r.SINGLE_PRICE : y = u ? r.PRICE_FORMATTED : r.PRICE;
46
+ const E = r.CURRENCY;
47
+ let F = `{{${y}_${h}}}`, R = "";
48
+ return B(P) ? R = P : E && (R = `{{${E}_${h}}}`), R && (F = L === "after" ? `${F} ${R}` : `${R} ${F}`), F;
49
+ }
50
+ function ct(r) {
51
+ const h = W(r), p = new DOMParser().parseFromString(h, "text/html");
52
+ X(p);
53
+ const u = k.PAIRS_FOR_EXTENSION;
54
+ Object.entries(u).forEach(([o, T]) => {
55
+ p.querySelectorAll(".ins-product-td").forEach((n) => {
56
+ const S = n.getAttribute("data-number") || "1", I = n.getAttribute("data-type") || "CART_ITEMS";
57
+ n.querySelectorAll(`[product-attr="${o}"]`).forEach((t) => {
58
+ var b, M, D, x;
59
+ const m = t.getAttribute("data-type") || I, c = t.getAttribute("data-number") || S, f = T[m];
34
60
  if (f)
35
61
  switch (o) {
36
62
  case "imageSrc": {
37
- let e = null, s = null;
38
- if (t.tagName === "IMG" ? (e = t, s = e.closest("a")) : (e = t.querySelector("img"), s = t.querySelector("a") || t.closest("a")), !e)
63
+ let e = null, i = null;
64
+ if (t.tagName === "IMG" ? (e = t, i = e.closest("a")) : (e = t.querySelector("img"), i = t.querySelector("a") || t.closest("a")), !e)
39
65
  break;
40
- const l = f.DEFAULT, c = f.ATTR;
41
- if (l && e.src) {
42
- const a = e.src;
43
- l.some((g) => {
44
- const u = g.split("/").pop() || "", H = a.split("/").pop() || "";
45
- return a.includes(g) || a.includes(u) || H === u;
46
- }) && (e.src = `{{${c}_${n}}}`);
66
+ const d = f.DEFAULT, a = f.ATTR;
67
+ if (d && e.src) {
68
+ const l = e.src;
69
+ d.some((C) => {
70
+ const $ = C.split("/").pop() || "", V = l.split("/").pop() || "";
71
+ return l.includes(C) || l.includes($) || V === $;
72
+ }) && (e.src = `{{${a}_${c}}}`);
47
73
  }
48
- const i = (I = (S = d.name) == null ? void 0 : S[m]) == null ? void 0 : I.ATTR;
49
- if (i && e.setAttribute("alt", `{{${i}_${n}}}`), s) {
50
- const a = (O = d.itemLink) == null ? void 0 : O[m];
51
- if (a) {
52
- const b = a.HREF, g = a.DEFAULT_HREF || "#!", u = s.href;
53
- (u === "#" || u === "" || u.endsWith("#!") || u.endsWith(g) || u === `${window.location.href}${g}` || !u || u === window.location.href) && (s.href = `{{${b}_${n}}}`);
74
+ const s = (M = (b = u.name) == null ? void 0 : b[m]) == null ? void 0 : M.ATTR;
75
+ if (s && e.setAttribute("alt", `{{${s}_${c}}}`), i) {
76
+ const l = (D = u.itemLink) == null ? void 0 : D[m];
77
+ if (l) {
78
+ const H = l.HREF, C = l.DEFAULT_HREF || "#!", $ = i.href;
79
+ ($ === "#" || $ === "" || $.endsWith("#!") || $.endsWith(C) || $ === `${window.location.href}${C}` || !$ || $ === window.location.href) && (i.href = `{{${H}_${c}}}`);
54
80
  }
55
81
  }
56
82
  break;
57
83
  }
58
84
  case "name": {
59
- const e = f, s = e.ATTR, l = e.DEFAULT_HREF || "#!", c = e.HREF;
60
- t.textContent && (t.innerHTML = L(t, `{{${s}_${n}}}`));
61
- const i = t.closest("a") || (t.tagName === "A" ? t : null);
62
- if (i && c) {
63
- const a = i.href, b = `${window.location.href}${l}`;
64
- (a === b || a.endsWith(l)) && (i.href = `{{${c}_${n}}}`);
85
+ const e = f, i = e.ATTR, d = e.DEFAULT_HREF || "#!", a = e.HREF;
86
+ t.textContent && (t.innerHTML = w(t, `{{${i}_${c}}}`));
87
+ const s = t.closest("a") || (t.tagName === "A" ? t : null);
88
+ if (s && a) {
89
+ const l = s.href, H = `${window.location.href}${d}`;
90
+ (l === H || l.endsWith(d)) && (s.href = `{{${a}_${c}}}`);
65
91
  }
66
92
  break;
67
93
  }
68
94
  case "price":
69
95
  case "originalPrice": {
70
- const e = f, s = t.getAttribute("data-formated"), l = t.getAttribute("data-single_price"), c = s === "true", i = l === "true", a = t.getAttribute(U.POSITION) || "before";
71
- let b;
72
- i ? b = c ? e.SINGLE_PRICE_FORMATTED : e.SINGLE_PRICE : b = c ? e.PRICE_FORMATTED : e.PRICE;
73
- const g = e.CURRENCY;
74
- let u = `{{${b}_${n}}}`;
75
- const H = (t.getAttribute(U.SYMBOL) || "").trim(), G = Y(H);
76
- let F = "";
77
- G ? F = H : g && (F = `{{${g}_${n}}}`), F && (u = a === "after" ? `${u} ${F}` : `${F} ${u}`), t.innerHTML = L(t, u);
96
+ const e = f, i = G(n) ? K(n) : J(t);
97
+ t.innerHTML = w(t, Z(e, c, i));
78
98
  break;
79
99
  }
80
100
  case "quantity": {
81
- const e = f, s = e.ATTR, l = [e.DEFAULT, ...e.LEGACY_DEFAULTS], c = (x = t.textContent) == null ? void 0 : x.trim();
82
- c && l.includes(c) && (t.innerHTML = L(t, `{{${s}_${n}}}`));
101
+ const e = f, i = e.ATTR, d = [e.DEFAULT, ...e.LEGACY_DEFAULTS], a = (x = t.textContent) == null ? void 0 : x.trim();
102
+ a && d.includes(a) && (t.innerHTML = w(t, `{{${i}_${c}}}`));
83
103
  break;
84
104
  }
85
105
  case "button": {
86
- const e = f, s = e.HREF, l = e.DEFAULT_HREF || "#!", c = t.tagName === "A" ? t : t.querySelector("a");
87
- if (c) {
88
- const i = c.href || "", a = `${window.location.href}${l}`;
89
- (i === "" || i === "#" || i === a || i.endsWith(l) || i.endsWith("#!") || i === window.location.href) && (c.href = `{{${s}_${n}}}`);
106
+ const e = f, i = e.HREF, d = e.DEFAULT_HREF || "#!", a = t.tagName === "A" ? t : t.querySelector("a");
107
+ if (a) {
108
+ const s = a.href || "", l = `${window.location.href}${d}`;
109
+ (s === "" || s === "#" || s === l || s.endsWith(d) || s.endsWith("#!") || s === window.location.href) && (a.href = `{{${i}_${c}}}`);
90
110
  }
91
- Q(t, `{{${s}_${n}}}`);
111
+ z(t, `{{${i}_${c}}}`);
92
112
  break;
93
113
  }
94
114
  case "itemLink": {
95
- const e = f, s = e.HREF, l = e.DEFAULT_HREF || "#!", c = t;
96
- if (c.href) {
97
- const i = c.href, a = `${window.location.href}${l}`;
98
- (i === a || i.endsWith(l)) && (c.href = `{{${s}_${n}}}`);
115
+ const e = f, i = e.HREF, d = e.DEFAULT_HREF || "#!", a = t;
116
+ if (a.href) {
117
+ const s = a.href, l = `${window.location.href}${d}`;
118
+ (s === l || s.endsWith(d)) && (a.href = `{{${i}_${c}}}`);
99
119
  }
100
120
  break;
101
121
  }
102
122
  default: {
103
123
  if ("ATTR" in f) {
104
124
  const e = f.ATTR;
105
- t.textContent && (t.innerHTML = L(t, `{{${e}_${n}}}`));
125
+ t.textContent && (t.innerHTML = w(t, `{{${e}_${c}}}`));
106
126
  }
107
127
  break;
108
128
  }
@@ -110,49 +130,49 @@ function et($) {
110
130
  });
111
131
  });
112
132
  });
113
- const E = C.match(/<!DOCTYPE[^>]*>/i), k = E ? `${E[0]}
114
- ` : "", P = A.querySelectorAll(".ins-product-td"), N = [];
133
+ const A = h.match(/<!DOCTYPE[^>]*>/i), L = A ? `${A[0]}
134
+ ` : "", P = p.querySelectorAll(".ins-product-td"), y = [];
115
135
  P.forEach((o) => {
116
- const p = o.getAttribute("data-type") || "CART_ITEMS", T = o.getAttribute("data-number") || "1", r = o.outerHTML;
117
- N.push({
136
+ const T = o.getAttribute("data-type") || "CART_ITEMS", _ = o.getAttribute("data-number") || "1", n = o.outerHTML;
137
+ y.push({
118
138
  element: o,
119
- outerHtml: r,
120
- type: p,
121
- number: T
139
+ outerHtml: n,
140
+ type: T,
141
+ number: _
122
142
  });
123
143
  });
124
- let h = k + A.documentElement.outerHTML;
125
- N.reverse().forEach(({ outerHtml: o, type: p, number: T }) => {
126
- const r = q[p], _ = r ? `${r}_total_product_kind` : "";
127
- if (_) {
128
- const R = parseInt(T) - 1, n = `${`{% if ${_} > ${R} %}`}${o}{% endif %}`;
129
- h = h.replace(o, B(n));
144
+ let E = L + p.documentElement.outerHTML;
145
+ y.reverse().forEach(({ outerHtml: o, type: T, number: _ }) => {
146
+ const n = q[T], S = n ? `${n}_total_product_kind` : "";
147
+ if (S) {
148
+ const g = parseInt(_) - 1, c = `${`{% if ${S} > ${g} %}`}${o}{% endif %}`;
149
+ E = E.replace(o, v(c));
130
150
  }
131
151
  });
132
- const V = A.querySelectorAll('[product-attr="originalPrice"][data-type]'), w = /* @__PURE__ */ new Map(), D = /* @__PURE__ */ new Set();
133
- return V.forEach((o) => {
152
+ const F = p.querySelectorAll('[product-attr="originalPrice"][data-type]'), R = /* @__PURE__ */ new Map(), O = /* @__PURE__ */ new Set();
153
+ return F.forEach((o) => {
134
154
  var t;
135
- const p = o.getAttribute("data-number"), T = o.getAttribute("data-type");
136
- if (!p || !q[T])
155
+ const T = o.getAttribute("data-number"), _ = o.getAttribute("data-type");
156
+ if (!T || !q[_])
137
157
  return;
138
- const r = o.closest(".product-original-price-class");
139
- if (!r || D.has(r))
158
+ const n = o.closest(".product-original-price-class");
159
+ if (!n || O.has(n))
140
160
  return;
141
- D.add(r);
142
- const _ = r.outerHTML, y = (t = o.closest(".ins-product-td")) == null ? void 0 : t.getAttribute("data-nodup"), R = w.get(_) ?? { number: p, type: T, wrap: [] };
143
- R.wrap.push(y !== "false"), w.set(_, R);
144
- }), w.forEach(({ number: o, type: p, wrap: T }, r) => {
145
- if (r.includes("{% if") || !T.some(Boolean))
161
+ O.add(n);
162
+ const S = n.outerHTML, I = (t = o.closest(".ins-product-td")) == null ? void 0 : t.getAttribute("data-nodup"), g = R.get(S) ?? { number: T, type: _, wrap: [] };
163
+ g.wrap.push(I !== "false"), R.set(S, g);
164
+ }), R.forEach(({ number: o, type: T, wrap: _ }, n) => {
165
+ if (n.includes("{% if") || !_.some(Boolean))
146
166
  return;
147
- const _ = M.PAIRS_FOR_EXTENSION.price[p].PRICE, y = M.PAIRS_FOR_EXTENSION.originalPrice[p].PRICE, R = `{% if ${_}_${o} != ${y}_${o} %}`, t = [R, W(R)];
148
- let m = "", n = 0, f = 0, S = h.indexOf(r);
149
- for (; S !== -1; ) {
150
- const I = T[f] === !0 && !v(h, S, t);
151
- m += h.slice(n, S) + (I ? `${R}${r}{% endif %}` : r), n = S + r.length, f += 1, S = h.indexOf(r, n);
167
+ const S = k.PAIRS_FOR_EXTENSION.price[T].PRICE, I = k.PAIRS_FOR_EXTENSION.originalPrice[T].PRICE, g = `{% if ${S}_${o} != ${I}_${o} %}`, t = [g, W(g)];
168
+ let m = "", c = 0, f = 0, b = E.indexOf(n);
169
+ for (; b !== -1; ) {
170
+ const M = _[f] === !0 && !j(E, b, t);
171
+ m += E.slice(c, b) + (M ? `${g}${n}{% endif %}` : n), c = b + n.length, f += 1, b = E.indexOf(n, c);
152
172
  }
153
- h = m + h.slice(n);
154
- }), h.replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
173
+ E = m + E.slice(c);
174
+ }), E.replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
155
175
  }
156
176
  export {
157
- et as pairProductVariables
177
+ ct as pairProductVariables
158
178
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "3.23.0-beta.86bed27",
3
+ "version": "3.23.0-beta.9f6bfbf",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",
@@ -59,7 +59,7 @@
59
59
  "dependencies": {
60
60
  "@stripoinc/ui-editor-extensions": "3.11.0",
61
61
  "@useinsider/design-system-organisms": "0.0.3-beta.d816f06",
62
- "@useinsider/design-system-vue": "2.3.1",
62
+ "@useinsider/design-system-vue": "2.5.0",
63
63
  "@vueuse/core": "11.3.0",
64
64
  "lodash-es": "4.17.21",
65
65
  "pinia": "2.3.1",