@useinsider/guido 3.27.0-beta.aadc015 → 3.27.0-beta.b57163d

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,165 +1,126 @@
1
- var O = Object.defineProperty;
2
- var x = (r, t, e) => t in r ? O(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
- var w = (r, t, e) => x(r, typeof t != "symbol" ? t + "" : t, e);
4
- import { BLOCK_ID as V } from "../../extensions/Blocks/Items/block.js";
5
- import { hasZeroWidthDeclaration as H, withoutZeroWidth as N } from "../../extensions/Blocks/Items/constants/cardWidth.js";
6
- import { ItemInCartOptions as E, DefaultConfigValues as S, SETTINGS_ENUMS as p } from "../../extensions/Blocks/Items/enums/settingsEnums.js";
7
- import { getDefaultTemplate as W } from "../../extensions/Blocks/Items/template.js";
8
- import { useTemplateStore as $ } from "../../stores/template.js";
9
- import { protectLiquid as F, restoreLiquid as U } from "../../utils/liquidProtection.js";
10
- const D = "table.es-left, table.es-right", Y = [
11
- ".es-hidden",
12
- ".ins-product-td",
13
- "td.esd-cart-items-block",
14
- "td.esd-browsed-items-block",
15
- "td.esd-purchased-items-block"
16
- ].join(", ");
17
- function h(r) {
18
- const t = Number(r.getAttribute("width"));
19
- return Number.isFinite(t) && t > 0 ? t : 0;
20
- }
21
- function P(r) {
22
- return Array.from(r.children).filter((t) => t.tagName === "TBODY").flatMap((t) => Array.from(t.children)).flatMap((t) => Array.from(t.children).filter((e) => e.tagName === "TD"));
23
- }
24
- function z(r) {
25
- var e, i;
26
- let t = (e = r.parentElement) == null ? void 0 : e.closest("table");
27
- for (; t; ) {
28
- const o = h(t);
29
- if (o)
30
- return o;
31
- t = (i = t.parentElement) == null ? void 0 : i.closest("table");
32
- }
33
- return 0;
34
- }
35
- function k(r) {
36
- var a, c;
37
- const t = (c = (a = r.parentElement) == null ? void 0 : a.parentElement) == null ? void 0 : c.parentElement, e = t == null ? void 0 : t.parentElement;
38
- if (!t || !e || !t.matches(D) || !h(r))
39
- return !1;
40
- const i = P(t), o = i.some((l) => !l.matches(Y) && h(l));
41
- if (!i.includes(r) || o)
42
- return !1;
43
- const u = Array.from(e.children).filter((l) => l.matches(D)).reduce((l, d) => l + Math.max(0, ...P(d).map(h)), 0), n = z(e);
44
- return n > 0 && u <= n;
45
- }
46
- function j() {
1
+ var B = Object.defineProperty;
2
+ var v = (n, t, e) => t in n ? B(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
+ var M = (n, t, e) => v(n, typeof t != "symbol" ? t + "" : t, e);
4
+ import { BLOCK_ID as R } from "../../extensions/Blocks/Items/block.js";
5
+ import { hasZeroWidthDeclaration as L, withoutZeroWidth as x } from "../../extensions/Blocks/Items/constants/cardWidth.js";
6
+ import { ItemInCartOptions as h, DefaultConfigValues as b, SETTINGS_ENUMS as _ } from "../../extensions/Blocks/Items/enums/settingsEnums.js";
7
+ import { getDefaultTemplate as V } from "../../extensions/Blocks/Items/template.js";
8
+ import { useTemplateStore as O } from "../../stores/template.js";
9
+ import { protectLiquid as H, restoreLiquid as $ } from "../../utils/liquidProtection.js";
10
+ function F() {
47
11
  return String(Date.now() + Math.floor(Math.random() * 1e3));
48
12
  }
49
- function R(r) {
50
- return r ? {
51
- CartItems: p.ITEMS_TYPE.CART_ITEMS,
52
- BrowsedItems: p.ITEMS_TYPE.BROWSED_ITEMS,
53
- PurchasedItems: p.ITEMS_TYPE.PURCHASED_ITEMS,
54
- CART_ITEMS: p.ITEMS_TYPE.CART_ITEMS,
55
- BROWSED_ITEMS: p.ITEMS_TYPE.BROWSED_ITEMS,
56
- PURCHASED_ITEMS: p.ITEMS_TYPE.PURCHASED_ITEMS
57
- }[r] || p.ITEMS_TYPE.CART_ITEMS : p.ITEMS_TYPE.CART_ITEMS;
13
+ function D(n) {
14
+ return n ? {
15
+ CartItems: _.ITEMS_TYPE.CART_ITEMS,
16
+ BrowsedItems: _.ITEMS_TYPE.BROWSED_ITEMS,
17
+ PurchasedItems: _.ITEMS_TYPE.PURCHASED_ITEMS,
18
+ CART_ITEMS: _.ITEMS_TYPE.CART_ITEMS,
19
+ BROWSED_ITEMS: _.ITEMS_TYPE.BROWSED_ITEMS,
20
+ PURCHASED_ITEMS: _.ITEMS_TYPE.PURCHASED_ITEMS
21
+ }[n] || _.ITEMS_TYPE.CART_ITEMS : _.ITEMS_TYPE.CART_ITEMS;
58
22
  }
59
- function J(r) {
60
- return r.classList.contains("esd-browsed-items-block") ? p.ITEMS_TYPE.BROWSED_ITEMS : r.classList.contains("esd-purchased-items-block") ? p.ITEMS_TYPE.PURCHASED_ITEMS : p.ITEMS_TYPE.CART_ITEMS;
23
+ function U(n) {
24
+ return n.classList.contains("esd-browsed-items-block") ? _.ITEMS_TYPE.BROWSED_ITEMS : n.classList.contains("esd-purchased-items-block") ? _.ITEMS_TYPE.PURCHASED_ITEMS : _.ITEMS_TYPE.CART_ITEMS;
61
25
  }
62
- function q(r) {
63
- var a;
64
- const t = (c, l) => c == null ? l : c === "1" || c === "true", e = (c, l) => c || l, i = r["data-type"] || r["data-source"], o = R(i), u = E[o];
65
- let n = r["data-cart_items_select_control_value"] || ((a = u == null ? void 0 : u[0]) == null ? void 0 : a.value) || S.cartItemsSelectControlValue;
66
- if (n && !n.includes("{{") && /^\d+$/.test(n)) {
67
- const c = parseInt(n) - 1, l = E[o];
68
- l && l[c] && (n = l[c].value);
26
+ function P(n) {
27
+ var o;
28
+ const t = (i, d) => i == null ? d : i === "1" || i === "true", e = (i, d) => i || d, a = n["data-type"] || n["data-source"], r = D(a), u = h[r];
29
+ let c = n["data-cart_items_select_control_value"] || ((o = u == null ? void 0 : u[0]) == null ? void 0 : o.value) || b.cartItemsSelectControlValue;
30
+ if (c && !c.includes("{{") && /^\d+$/.test(c)) {
31
+ const i = parseInt(c) - 1, d = h[r];
32
+ d && d[i] && (c = d[i].value);
69
33
  }
70
34
  return {
71
35
  initialized: !0,
72
- blockInstanceId: e(r["data-block-instance-id"], j()),
73
- source: o,
74
- type: o,
75
- itemsSelectValue: n,
76
- orientation: r["data-card_orientation_control_value"] || p.ORIENTATION.VERTICAL,
77
- nameTrimming: t(r["data-product_name_control_trim"], !0),
78
- priceHideDiscount: t(r["data-product_price_control_nodup"], !0),
79
- priceFormatted: t(r["data-product_price_control_formated"], !0),
80
- priceSinglePrice: t(r["data-product_price_control_single_price"], !1),
36
+ blockInstanceId: e(n["data-block-instance-id"], F()),
37
+ source: r,
38
+ type: r,
39
+ itemsSelectValue: c,
40
+ orientation: n["data-card_orientation_control_value"] || _.ORIENTATION.VERTICAL,
41
+ nameTrimming: t(n["data-product_name_control_trim"], !0),
42
+ priceHideDiscount: t(n["data-product_price_control_nodup"], !0),
43
+ priceFormatted: t(n["data-product_price_control_formated"], !0),
44
+ priceSinglePrice: t(n["data-product_price_control_single_price"], !1),
81
45
  priceCurrencySymbol: e(
82
- r["data-product_price_control_currency_symbol"],
83
- S.productPriceCurrencySymbolControlValue
46
+ n["data-product_price_control_currency_symbol"],
47
+ b.productPriceCurrencySymbolControlValue
84
48
  ),
85
49
  priceCurrencyLocation: e(
86
- r["data-product_price_currency_location"],
87
- S.productPriceCurrencyLocationControlValue
50
+ n["data-product_price_currency_location"],
51
+ b.productPriceCurrencyLocationControlValue
88
52
  ),
89
- priceOrientation: r["data-product_original_price_control_orientation"] || "horizontal",
90
- quantityControlEnabled: t(r["data-product_quantity_control_enabled"], !0),
91
- buttonLink: e(r["data-product_button_link"], S.productButtonLinkControlValue),
92
- imageLink: e(r["data-product_image_link"], S.productImageLinkControlValue),
93
- buttonLabel: e(r["data-product_button_control_label"], "Buy"),
94
- buttonFullWidth: t(r["data-product_button_control_atw"], !0),
95
- imageVisible: t(r["data-product_image_control_enabled"], !0),
96
- nameVisible: t(r["data-product_name_control_enabled"], !0),
97
- quantityVisible: t(r["data-product_quantity_control_enabled"], !0),
98
- priceVisible: t(r["data-product_price_control_enabled"], !0),
99
- originalPriceVisible: t(r["data-product_original_price_control_enabled"], !0),
100
- buttonVisible: t(r["data-product_button_control_enabled"], !0)
53
+ priceOrientation: n["data-product_original_price_control_orientation"] || "horizontal",
54
+ quantityControlEnabled: t(n["data-product_quantity_control_enabled"], !0),
55
+ buttonLink: e(n["data-product_button_link"], b.productButtonLinkControlValue),
56
+ imageLink: e(n["data-product_image_link"], b.productImageLinkControlValue),
57
+ buttonLabel: e(n["data-product_button_control_label"], "Buy"),
58
+ buttonFullWidth: t(n["data-product_button_control_atw"], !0),
59
+ imageVisible: t(n["data-product_image_control_enabled"], !0),
60
+ nameVisible: t(n["data-product_name_control_enabled"], !0),
61
+ quantityVisible: t(n["data-product_quantity_control_enabled"], !0),
62
+ priceVisible: t(n["data-product_price_control_enabled"], !0),
63
+ originalPriceVisible: t(n["data-product_original_price_control_enabled"], !0),
64
+ buttonVisible: t(n["data-product_button_control_enabled"], !0)
101
65
  };
102
66
  }
103
- function Z(r, t) {
67
+ function Y(n, t) {
104
68
  const e = {
105
69
  CART_ITEMS: `{{Abandoned Cart Item (${t}) Image}}`,
106
70
  BROWSED_ITEMS: `{{Browsed Item (${t}) Image}}`,
107
71
  PURCHASED_ITEMS: `{{Purchased Item (${t}) Image}}`
108
72
  };
109
- return e[r] || e.CART_ITEMS;
73
+ return e[n] || e.CART_ITEMS;
110
74
  }
111
- function G(r, t) {
75
+ function W(n, t) {
112
76
  const e = {
113
77
  CART_ITEMS: `{{Abandoned Cart Item (${t}) Url}}`,
114
78
  BROWSED_ITEMS: `{{Browsed Item (${t}) Url}}`,
115
79
  PURCHASED_ITEMS: `{{Purchased Item (${t}) Url}}`
116
80
  };
117
- return e[r] || e.CART_ITEMS;
81
+ return e[n] || e.CART_ITEMS;
118
82
  }
119
- class K {
83
+ class z {
120
84
  constructor() {
121
- w(this, "parser");
85
+ M(this, "parser");
122
86
  this.parser = new DOMParser();
123
87
  }
124
88
  migrate(t) {
125
89
  try {
126
90
  if (!this.containsItemsBlock(t))
127
91
  return this.backfillV2ProductTdAttributes(t);
128
- const e = this.removeJinjaConditionals(t), i = this.parser.parseFromString(e, "text/html"), o = i.querySelectorAll(
92
+ const e = this.removeJinjaConditionals(t), a = this.parser.parseFromString(e, "text/html"), r = a.querySelectorAll(
129
93
  "td.esd-cart-items-block, td.esd-browsed-items-block, td.esd-purchased-items-block"
130
94
  );
131
- if ($().$patch((a) => {
132
- a.migrations = { ...a.migrations, [V]: o.length };
133
- }), o.length === 0)
134
- return console.warn("ItemsBlockMigrator: No blocks found with items block selectors"), this.backfillV2ProductTdAttributes(e);
135
- const n = new Set(Array.from(o).filter(k));
136
- return o.forEach((a) => {
137
- const c = this.extractConfiguration(a), l = W({
138
- orientation: c.orientation,
139
- itemsType: c.itemsType,
140
- itemId: c.itemId,
141
- currencySymbol: c.currencySymbol,
142
- currencyLocation: c.currencyLocation,
143
- formattedPrice: c.formattedPrice,
144
- configBlockAttributes: c.configBlockAttributes,
95
+ return O().$patch((c) => {
96
+ c.migrations = { ...c.migrations, [R]: r.length };
97
+ }), r.length === 0 ? (console.warn("ItemsBlockMigrator: No blocks found with items block selectors"), this.backfillV2ProductTdAttributes(e)) : (r.forEach((c) => {
98
+ const o = this.extractConfiguration(c), i = V({
99
+ orientation: o.orientation,
100
+ itemsType: o.itemsType,
101
+ itemId: o.itemId,
102
+ currencySymbol: o.currencySymbol,
103
+ currencyLocation: o.currencyLocation,
104
+ formattedPrice: o.formattedPrice,
105
+ configBlockAttributes: o.configBlockAttributes,
145
106
  migrate: !0,
146
- nameStyles: c.nameStyles,
147
- buttonStyles: c.buttonStyles,
148
- priceStyles: c.priceStyles,
149
- originalPriceStyles: c.originalPriceStyles,
150
- quantityStyles: c.quantityStyles,
151
- nodeConfig: q(c.configBlockAttributes)
152
- }), s = this.parser.parseFromString(
153
- `<table><tbody><tr>${l}</tr></tbody></table>`,
107
+ nameStyles: o.nameStyles,
108
+ buttonStyles: o.buttonStyles,
109
+ priceStyles: o.priceStyles,
110
+ originalPriceStyles: o.originalPriceStyles,
111
+ quantityStyles: o.quantityStyles,
112
+ nodeConfig: P(o.configBlockAttributes)
113
+ }), l = this.parser.parseFromString(
114
+ `<table><tbody><tr>${i}</tr></tbody></table>`,
154
115
  "text/html"
155
116
  ).querySelector("td");
156
- if (s && a.parentNode) {
157
- const _ = q(c.configBlockAttributes);
158
- s.setAttribute("esd-ext-config", JSON.stringify(_)), s.setAttribute("data-type", _.type);
159
- const m = s.querySelector("esd-config-block");
160
- m && m.remove(), n.has(a) && (s.setAttribute("width", String(h(a))), s.classList.add("esd-container-frame")), a.parentNode.replaceChild(s, a);
117
+ if (l && c.parentNode) {
118
+ const s = P(o.configBlockAttributes);
119
+ l.setAttribute("esd-ext-config", JSON.stringify(s)), l.setAttribute("data-type", s.type);
120
+ const p = l.querySelector("esd-config-block");
121
+ p && p.remove(), c.parentNode.replaceChild(l, c);
161
122
  }
162
- }), this.backfillV2ProductTdAttributes(i.documentElement.outerHTML);
123
+ }), this.backfillV2ProductTdAttributes(a.documentElement.outerHTML));
163
124
  } catch (e) {
164
125
  return console.error("ItemsBlockMigrator failed:", e), t;
165
126
  }
@@ -171,25 +132,25 @@ class K {
171
132
  * - UI styles from product elements (name, price, button, quantity, etc.)
172
133
  */
173
134
  extractConfiguration(t) {
174
- var M;
175
- const e = R(
176
- this.readSelfOrDescendantAttribute(t, "data-type") || J(t)
177
- ), i = this.readSelfOrDescendantAttribute(t, "data-number") || "1", o = parseInt(i) - 1, u = E[e], n = ((M = u == null ? void 0 : u[o]) == null ? void 0 : M.value) || u[0].value, a = this.extractConfigBlockAttributes(t, e, i);
178
- this.applyDomFallbacks(t, a);
179
- const c = t.querySelector('[product-attr="price"]'), l = a["data-product_price_control_currency_symbol"], d = a["data-product_price_currency_location"] || "0", s = a["data-product_price_control_formated"], _ = s !== "false" && s !== "0", A = a["data-card_orientation_control_value"] === "horizontal" ? "horizontal" : "vertical", g = t.querySelector('a[product-attr="name"]'), y = (g == null ? void 0 : g.getAttribute("style")) || void 0, b = t.querySelector('a[product-attr="button"]') ?? t.querySelector('[product-attr="button"]'), I = (b == null ? void 0 : b.getAttribute("style")) || void 0, B = (c == null ? void 0 : c.getAttribute("style")) || void 0, f = t.querySelector("p.original-price") ?? t.querySelector('[product-attr="originalPrice"]'), T = f != null && f.getAttribute("style") ? f : (f == null ? void 0 : f.closest("p")) ?? f, L = (T == null ? void 0 : T.getAttribute("style")) || void 0, C = t.querySelector('[product-attr="quantity"]'), v = (C == null ? void 0 : C.getAttribute("style")) || void 0;
135
+ var C;
136
+ const e = D(
137
+ this.readSelfOrDescendantAttribute(t, "data-type") || U(t)
138
+ ), a = this.readSelfOrDescendantAttribute(t, "data-number") || "1", r = parseInt(a) - 1, u = h[e], c = ((C = u == null ? void 0 : u[r]) == null ? void 0 : C.value) || u[0].value, o = this.extractConfigBlockAttributes(t, e, a);
139
+ this.applyDomFallbacks(t, o);
140
+ const i = t.querySelector('[product-attr="price"]'), d = o["data-product_price_control_currency_symbol"], l = o["data-product_price_currency_location"] || "0", s = o["data-product_price_control_formated"], p = s !== "false" && s !== "0", S = o["data-card_orientation_control_value"] === "horizontal" ? "horizontal" : "vertical", f = t.querySelector('a[product-attr="name"]'), y = (f == null ? void 0 : f.getAttribute("style")) || void 0, g = t.querySelector('a[product-attr="button"]') ?? t.querySelector('[product-attr="button"]'), I = (g == null ? void 0 : g.getAttribute("style")) || void 0, k = (i == null ? void 0 : i.getAttribute("style")) || void 0, m = t.querySelector("p.original-price") ?? t.querySelector('[product-attr="originalPrice"]'), A = m != null && m.getAttribute("style") ? m : (m == null ? void 0 : m.closest("p")) ?? m, q = (A == null ? void 0 : A.getAttribute("style")) || void 0, E = t.querySelector('[product-attr="quantity"]'), w = (E == null ? void 0 : E.getAttribute("style")) || void 0;
180
141
  return {
181
- orientation: A,
142
+ orientation: S,
182
143
  itemsType: e,
183
- itemId: n,
184
- currencySymbol: l,
185
- currencyLocation: d,
186
- formattedPrice: _,
187
- configBlockAttributes: a,
144
+ itemId: c,
145
+ currencySymbol: d,
146
+ currencyLocation: l,
147
+ formattedPrice: p,
148
+ configBlockAttributes: o,
188
149
  nameStyles: y,
189
150
  buttonStyles: I,
190
- priceStyles: B,
191
- originalPriceStyles: L,
192
- quantityStyles: v
151
+ priceStyles: k,
152
+ originalPriceStyles: q,
153
+ quantityStyles: w
193
154
  };
194
155
  }
195
156
  /**
@@ -200,8 +161,8 @@ class K {
200
161
  * card migrates with the boilerplate defaults: caption "Buy", USD, full-width button.
201
162
  */
202
163
  applyDomFallbacks(t, e) {
203
- var A, g;
204
- const i = t.querySelector("esd-config-block"), o = (...y) => !i || y.every((b) => !(i.getAttribute(b) ?? "").trim());
164
+ var S, f;
165
+ const a = t.querySelector("esd-config-block"), r = (...y) => !a || y.every((g) => !(a.getAttribute(g) ?? "").trim());
205
166
  Object.entries({
206
167
  image: '[product-attr="imageSrc"]',
207
168
  name: '[product-attr="name"]',
@@ -209,18 +170,18 @@ class K {
209
170
  original_price: '[product-attr="originalPrice"], p.original-price',
210
171
  quantity: '[product-attr="quantity"]',
211
172
  button: '[product-attr="button"]'
212
- }).forEach(([y, b]) => {
173
+ }).forEach(([y, g]) => {
213
174
  const I = `data-product_${y}_control_enabled`;
214
- o(I) && (e[I] = t.querySelector(b) ? "true" : "false");
215
- }), o("data-card_orientation_control_value") && (e["data-card_orientation_control_value"] = t.querySelector('[colspan="2"]') ? "vertical" : "horizontal");
216
- const n = t.querySelector('a[product-attr="button"]') ?? t.querySelector('[product-attr="button"]'), a = (A = n == null ? void 0 : n.textContent) == null ? void 0 : A.replace(/\s+/g, " ").trim();
217
- a && o("data-product_button_control_label") && (e["data-product_button_control_label"] = a);
218
- const c = (n == null ? void 0 : n.getAttribute("style")) || "";
219
- o("data-product_button_control_atw") && /display:\s*inline/.test(c) && !/(?:^|;)\s*width\s*:\s*100%/.test(c) && (e["data-product_button_control_atw"] = "false");
220
- const l = t.querySelector('[product-attr="imageSrc"]'), d = l ? this.readImageSize(l) : null, s = (d == null ? void 0 : d.height) ?? (d == null ? void 0 : d.width), _ = (d == null ? void 0 : d.width) ?? (d == null ? void 0 : d.height);
221
- s && o("data-product_image_control_image-height") && (e["data-product_image_control_image-height"] = s), _ && o("data-product_image_control_image-width") && (e["data-product_image_control_image-width"] = _), this.applyPriceDomFallbacks(t, e, o);
222
- const m = ((g = t.querySelector('[product-attr="name"]')) == null ? void 0 : g.getAttribute("style")) || "";
223
- o("data-product_name_control_trim") && /white-space:\s*normal/.test(m) && (e["data-product_name_control_trim"] = "0");
175
+ r(I) && (e[I] = t.querySelector(g) ? "true" : "false");
176
+ }), r("data-card_orientation_control_value") && (e["data-card_orientation_control_value"] = t.querySelector('[colspan="2"]') ? "vertical" : "horizontal");
177
+ const c = t.querySelector('a[product-attr="button"]') ?? t.querySelector('[product-attr="button"]'), o = (S = c == null ? void 0 : c.textContent) == null ? void 0 : S.replace(/\s+/g, " ").trim();
178
+ o && r("data-product_button_control_label") && (e["data-product_button_control_label"] = o);
179
+ const i = (c == null ? void 0 : c.getAttribute("style")) || "";
180
+ r("data-product_button_control_atw") && /display:\s*inline/.test(i) && !/(?:^|;)\s*width\s*:\s*100%/.test(i) && (e["data-product_button_control_atw"] = "false");
181
+ const d = t.querySelector('[product-attr="imageSrc"]'), l = d ? this.readImageSize(d) : null, s = (l == null ? void 0 : l.height) ?? (l == null ? void 0 : l.width), p = (l == null ? void 0 : l.width) ?? (l == null ? void 0 : l.height);
182
+ s && r("data-product_image_control_image-height") && (e["data-product_image_control_image-height"] = s), p && r("data-product_image_control_image-width") && (e["data-product_image_control_image-width"] = p), this.applyPriceDomFallbacks(t, e, r);
183
+ const T = ((f = t.querySelector('[product-attr="name"]')) == null ? void 0 : f.getAttribute("style")) || "";
184
+ r("data-product_name_control_trim") && /white-space:\s*normal/.test(T) && (e["data-product_name_control_trim"] = "0");
224
185
  }
225
186
  /**
226
187
  * Carries the price cell's own currency/format attributes into the config attributes when
@@ -229,22 +190,22 @@ class K {
229
190
  * ₺ but reporting USD/before to the settings panel, and the first unrelated price edit wrote
230
191
  * the default back over the real value.
231
192
  */
232
- applyPriceDomFallbacks(t, e, i) {
233
- var l;
234
- const o = t.querySelector('[product-attr="price"]') ?? t.querySelector('[product-attr="originalPrice"]');
235
- if (!o)
193
+ applyPriceDomFallbacks(t, e, a) {
194
+ var d;
195
+ const r = t.querySelector('[product-attr="price"]') ?? t.querySelector('[product-attr="originalPrice"]');
196
+ if (!r)
236
197
  return;
237
- const u = (l = o.getAttribute("data-currency_symbol")) == null ? void 0 : l.trim();
238
- u && i("data-product_price_control_currency_symbol") && (e["data-product_price_control_currency_symbol"] = u);
239
- const n = o.getAttribute("data-curency");
240
- if (n && i("data-product_price_currency_location", "data-product_price_control_curency")) {
241
- const d = n === "after" ? "1" : "0";
242
- e["data-product_price_currency_location"] = d, e["data-product_price_control_curency"] = d;
198
+ const u = (d = r.getAttribute("data-currency_symbol")) == null ? void 0 : d.trim();
199
+ u && a("data-product_price_control_currency_symbol") && (e["data-product_price_control_currency_symbol"] = u);
200
+ const c = r.getAttribute("data-curency");
201
+ if (c && a("data-product_price_currency_location", "data-product_price_control_curency")) {
202
+ const l = c === "after" ? "1" : "0";
203
+ e["data-product_price_currency_location"] = l, e["data-product_price_control_curency"] = l;
243
204
  }
244
- const a = o.getAttribute("data-formated");
245
- a && i("data-product_price_control_formated") && (e["data-product_price_control_formated"] = a);
246
- const c = o.getAttribute("data-single_price");
247
- c && i("data-product_price_control_single_price") && (e["data-product_price_control_single_price"] = c);
205
+ const o = r.getAttribute("data-formated");
206
+ o && a("data-product_price_control_formated") && (e["data-product_price_control_formated"] = o);
207
+ const i = r.getAttribute("data-single_price");
208
+ i && a("data-product_price_control_single_price") && (e["data-product_price_control_single_price"] = i);
248
209
  }
249
210
  /**
250
211
  * Reads an attribute from the block element itself before falling back to a descendant.
@@ -252,8 +213,8 @@ class K {
252
213
  * esd-config-block; when an author deletes the config block only the td's copy survives.
253
214
  */
254
215
  readSelfOrDescendantAttribute(t, e) {
255
- var i;
256
- return t.getAttribute(e) || ((i = t.querySelector(`[${e}]`)) == null ? void 0 : i.getAttribute(e)) || null;
216
+ var a;
217
+ return t.getAttribute(e) || ((a = t.querySelector(`[${e}]`)) == null ? void 0 : a.getAttribute(e)) || null;
257
218
  }
258
219
  /**
259
220
  * Reads the product image's pixel size — `width`/`height` attributes first, then px values
@@ -273,15 +234,15 @@ class K {
273
234
  * to nothing, so only a positive integer counts as an answer.
274
235
  */
275
236
  readImageDimension(t, e) {
276
- var l;
277
- const i = (d) => {
278
- const s = (d ?? "").trim().match(/^(\d+(?:\.\d+)?)(?:px)?$/i), _ = s ? Math.floor(parseFloat(s[1])) : 0;
279
- return _ > 0 ? String(_) : null;
280
- }, o = i((l = t.getAttribute(e)) == null ? void 0 : l.trim());
281
- if (o)
282
- return o;
283
- const u = t.getAttribute("style") || "", n = new RegExp(`(?:^|;)\\s*${e}:\\s*(\\d+(?:\\.\\d+)?)px`), a = new RegExp(`max-${e}:\\s*(\\d+(?:\\.\\d+)?)px`), c = u.match(n) || u.match(a);
284
- return i(c == null ? void 0 : c[1]);
237
+ var d;
238
+ const a = (l) => {
239
+ const s = (l ?? "").trim().match(/^(\d+(?:\.\d+)?)(?:px)?$/i), p = s ? Math.floor(parseFloat(s[1])) : 0;
240
+ return p > 0 ? String(p) : null;
241
+ }, r = a((d = t.getAttribute(e)) == null ? void 0 : d.trim());
242
+ if (r)
243
+ return r;
244
+ const u = t.getAttribute("style") || "", c = new RegExp(`(?:^|;)\\s*${e}:\\s*(\\d+(?:\\.\\d+)?)px`), o = new RegExp(`max-${e}:\\s*(\\d+(?:\\.\\d+)?)px`), i = u.match(c) || u.match(o);
245
+ return a(i == null ? void 0 : i[1]);
285
246
  }
286
247
  /**
287
248
  * Extracts all data-* attributes from the esd-config-block element
@@ -290,27 +251,27 @@ class K {
290
251
  * @param itemsType - The type of items (CART_ITEMS, BROWSED_ITEMS, PURCHASED_ITEMS)
291
252
  * @param itemNumber - The item number (1-based index)
292
253
  */
293
- extractConfigBlockAttributes(t, e, i) {
294
- const o = t.querySelector("esd-config-block"), u = {};
295
- if (o) {
296
- if (Array.from(o.attributes).forEach((a) => {
297
- a.name.startsWith("data-") && (u[a.name] = a.value);
254
+ extractConfigBlockAttributes(t, e, a) {
255
+ const r = t.querySelector("esd-config-block"), u = {};
256
+ if (r) {
257
+ if (Array.from(r.attributes).forEach((o) => {
258
+ o.name.startsWith("data-") && (u[o.name] = o.value);
298
259
  }), u["data-cart_items_select_control_value"]) {
299
- const a = u["data-cart_items_select_control_value"];
300
- if (/^\d+$/.test(a)) {
301
- const c = parseInt(a) - 1, l = E[e];
302
- l && l[c] && (u["data-cart_items_select_control_value"] = l[c].value);
260
+ const o = u["data-cart_items_select_control_value"];
261
+ if (/^\d+$/.test(o)) {
262
+ const i = parseInt(o) - 1, d = h[e];
263
+ d && d[i] && (u["data-cart_items_select_control_value"] = d[i].value);
303
264
  }
304
265
  }
305
266
  if (u["data-product_price_control_curency"]) {
306
- const a = u["data-product_price_control_curency"];
307
- let c = a;
308
- a === "before" ? c = "0" : a === "after" && (c = "1"), u["data-product_price_control_curency"] = c, u["data-product_price_currency_location"] = c;
267
+ const o = u["data-product_price_control_curency"];
268
+ let i = o;
269
+ o === "before" ? i = "0" : o === "after" && (i = "1"), u["data-product_price_control_curency"] = i, u["data-product_price_currency_location"] = i;
309
270
  }
310
271
  (!u["data-product_price_control_currency_symbol"] || u["data-product_price_control_currency_symbol"].trim() === "") && (u["data-product_price_control_currency_symbol"] = "USD");
311
272
  }
312
- const n = { ...this.getDefaultConfigBlockAttributes(), ...u };
313
- return n["data-type"] = e, n["data-source"] = e, n["data-product_image_link"] = Z(e, i), n["data-product_button_link"] = G(e, i), n;
273
+ const c = { ...this.getDefaultConfigBlockAttributes(), ...u };
274
+ return c["data-type"] = e, c["data-source"] = e, c["data-product_image_link"] = Y(e, a), c["data-product_button_link"] = W(e, a), c;
314
275
  }
315
276
  /**
316
277
  * Returns default esd-config-block attributes based on the old template structure
@@ -377,7 +338,6 @@ class K {
377
338
  * no longer emits it; here we heal already-saved templates by removing it so the
378
339
  * cell inherits its column width. width="560" was only ever written alongside
379
340
  * esd-ext-config, so the guard below still catches every affected template.
380
- * A cell that is its column's only width carrier keeps its width and frame.
381
341
  *
382
342
  * Only re-serializes when something actually changed, so healthy templates
383
343
  * (data-type present, no static width) pass through byte-for-byte.
@@ -385,31 +345,29 @@ class K {
385
345
  backfillV2ProductTdAttributes(t) {
386
346
  if (!t.includes("ins-product-td") || !t.includes("esd-ext-config"))
387
347
  return t;
388
- const e = this.parser.parseFromString(F(t), "text/html");
389
- let i = !1;
390
- const o = Array.from(e.querySelectorAll(".ins-product-td")), u = new Set(o.filter(k));
391
- return o.forEach((n) => {
392
- const a = u.has(n);
393
- !a && n.hasAttribute("width") && (n.removeAttribute("width"), i = !0), !a && n.classList.contains("esd-container-frame") && (n.classList.remove("esd-container-frame"), i = !0), n.querySelectorAll("table.ins-product-wrapper").forEach((_) => {
394
- !a && _.hasAttribute("width") && _.getAttribute("width") !== "100%" && (_.setAttribute("width", "100%"), i = !0);
395
- const m = _.getAttribute("style");
396
- m && H(m) && (_.setAttribute("style", N(m)), _.setAttribute("width", "100%"), i = !0);
348
+ const e = this.parser.parseFromString(H(t), "text/html");
349
+ let a = !1;
350
+ return e.querySelectorAll(".ins-product-td").forEach((r) => {
351
+ r.hasAttribute("width") && (r.removeAttribute("width"), a = !0), r.classList.contains("esd-container-frame") && (r.classList.remove("esd-container-frame"), a = !0), r.querySelectorAll("table.ins-product-wrapper").forEach((d) => {
352
+ d.hasAttribute("width") && d.getAttribute("width") !== "100%" && (d.setAttribute("width", "100%"), a = !0);
353
+ const l = d.getAttribute("style");
354
+ l && L(l) && (d.setAttribute("style", x(l)), d.setAttribute("width", "100%"), a = !0);
397
355
  });
398
- const c = n.getAttribute("esd-ext-config");
399
- let l = null;
356
+ const u = r.getAttribute("esd-ext-config");
357
+ let c = null;
400
358
  try {
401
- l = c ? JSON.parse(c) : null;
359
+ c = u ? JSON.parse(u) : null;
402
360
  } catch {
403
361
  }
404
- if (!l || (!n.getAttribute("data-nodup") && typeof l.priceHideDiscount == "boolean" && (n.setAttribute("data-nodup", String(l.priceHideDiscount)), i = !0), n.getAttribute("data-type")))
362
+ if (!c || (!r.getAttribute("data-nodup") && typeof c.priceHideDiscount == "boolean" && (r.setAttribute("data-nodup", String(c.priceHideDiscount)), a = !0), r.getAttribute("data-type")))
405
363
  return;
406
- const d = l.type || l.source;
407
- if (!d)
364
+ const o = c.type || c.source;
365
+ if (!o)
408
366
  return;
409
- n.setAttribute("data-type", d), i = !0;
410
- const s = typeof l.itemsSelectValue == "string" ? l.itemsSelectValue.match(/\((\d+)\)/) : null;
411
- s && n.getAttribute("data-number") !== s[1] && n.setAttribute("data-number", s[1]);
412
- }), i ? U(e.documentElement.outerHTML) : t;
367
+ r.setAttribute("data-type", o), a = !0;
368
+ const i = typeof c.itemsSelectValue == "string" ? c.itemsSelectValue.match(/\((\d+)\)/) : null;
369
+ i && r.getAttribute("data-number") !== i[1] && r.setAttribute("data-number", i[1]);
370
+ }), a ? $(e.documentElement.outerHTML) : t;
413
371
  }
414
372
  /**
415
373
  * Fast check for the presence of any items block (cart / browsed / purchased)
@@ -430,22 +388,22 @@ class K {
430
388
  * contains display condition Jinja scripts that should NOT be removed.
431
389
  */
432
390
  removeJinjaConditionals(t) {
433
- const e = "__ESD_DISPLAY_CONDITIONS_PLACEHOLDER__", i = t.match(/esd-custom-display-conditions="[^"]*"/);
434
- let o = i ? t.replace(i[0], e) : t;
435
- return o = o.replace(
391
+ const e = "__ESD_DISPLAY_CONDITIONS_PLACEHOLDER__", a = t.match(/esd-custom-display-conditions="[^"]*"/);
392
+ let r = a ? t.replace(a[0], e) : t;
393
+ return r = r.replace(
436
394
  /\{%\s*if\s+(ins_apr|browsed_item|purchased_item)_total_product_kind\s*(&gt;|>)\s*\d+\s*%\}/g,
437
395
  ""
438
- ), o = o.replace(
396
+ ), r = r.replace(
439
397
  /\{%\s*if\s+(ins_apr|browsed_item|purchased_item)_price_\d+\s*(!&#61;|!=)\s*\1_originalprice_\d+\s*%\}/g,
440
398
  ""
441
- ), o = o.replace(/\{%\s*endif\s*%\}/g, ""), i && (o = o.replace(e, i[0])), o = o.replace(/\n\s*\n\s*\n/g, `
399
+ ), r = r.replace(/\{%\s*endif\s*%\}/g, ""), a && (r = r.replace(e, a[0])), r = r.replace(/\n\s*\n\s*\n/g, `
442
400
 
443
- `), o;
401
+ `), r;
444
402
  }
445
403
  }
446
- function nt(r) {
447
- return new K().migrate(r);
404
+ function X(n) {
405
+ return new z().migrate(n);
448
406
  }
449
407
  export {
450
- nt as migrateItemsBlock
408
+ X as migrateItemsBlock
451
409
  };
@@ -1,9 +1,9 @@
1
- const o = "3.27.0-beta.aadc015", s = { stripo: { version: "2.83.1" } }, a = {
1
+ const o = "3.27.0-beta.b57163d", s = { stripo: { version: "2.83.1" } }, t = {
2
2
  version: o,
3
3
  guido: s
4
4
  };
5
5
  export {
6
- a as default,
6
+ t as default,
7
7
  s as guido,
8
8
  o as version
9
9
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "3.27.0-beta.aadc015",
3
+ "version": "3.27.0-beta.b57163d",
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",