@useinsider/guido 3.10.0-beta.dfe1fa6 → 3.10.0-beta.f40b5d9

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,30 +1,29 @@
1
- import { useActionsApi as U } from "./useActionsApi.js";
2
- import { useBlocksConfig as R } from "./useBlocksConfig.js";
3
- import { useConfig as x } from "./useConfig.js";
4
- import { useCustomInterfaceAppearance as O } from "./useCustomInterfaceAppearance.js";
5
- import { useFullStoryBridge as q } from "./useFullStoryBridge.js";
6
- import { useStripoEventHandler as H } from "./useStripoEventHandler.js";
7
- import { useStripoNotifications as N } from "./useStripoNotifications.js";
8
- import { useToaster as z } from "./useToaster.js";
9
- import { localePatch as L } from "../config/i18n/index.js";
1
+ import { useActionsApi as I } from "./useActionsApi.js";
2
+ import { useBlocksConfig as U } from "./useBlocksConfig.js";
3
+ import { useConfig as R } from "./useConfig.js";
4
+ import { useCustomInterfaceAppearance as x } from "./useCustomInterfaceAppearance.js";
5
+ import { useFullStoryBridge as O } from "./useFullStoryBridge.js";
6
+ import { useStripoEventHandler as q } from "./useStripoEventHandler.js";
7
+ import { useToaster as H } from "./useToaster.js";
8
+ import { localePatch as z } from "../config/i18n/index.js";
10
9
  import { en as h } from "../config/i18n/en/index.js";
11
- import { ToasterTypeOptions as $ } from "../enums/toaster.js";
12
- import { useStripoApi as G } from "../services/stripoApi.js";
13
- import J from "../static/styles/customEditorStyle.css.js";
10
+ import { ToasterTypeOptions as L } from "../enums/toaster.js";
11
+ import { useStripoApi as $ } from "../services/stripoApi.js";
12
+ import G from "../static/styles/customEditorStyle.css.js";
14
13
  import { useEditorStore as E } from "../stores/editor.js";
15
- import { dynamicContentToMergeTags as X } from "../utils/genericUtil.js";
16
- import j from "../package.json.js";
17
- const fo = (C, l) => {
18
- const { features: c, template: w, isFeatureEnabled: u } = x(), { handleError: m, showToaster: b } = z(), { getToken: T, getCustomFonts: k, getSyncModulesStatus: B } = G(), { handleEvent: F } = H(), { getStripoBlocksConfig: v } = R(), { getStripoNotifications: V } = N(), _ = async (s, i = [], r = !1) => {
14
+ import { dynamicContentToMergeTags as J } from "../utils/genericUtil.js";
15
+ import N from "../package.json.js";
16
+ const ce = (C, l) => {
17
+ const { features: c, template: w, isFeatureEnabled: u } = R(), { handleError: m, showToaster: b } = H(), { getToken: k, getCustomFonts: T, getSyncModulesStatus: B } = $(), { handleEvent: F } = q(), { getStripoBlocksConfig: v } = U(), V = async (s, r = [], i = !1) => {
19
18
  var g, S, y;
20
- const o = E(), { html: p, css: a } = s, { baseBlocks: t, extensions: d } = await v(), f = ((g = c.value) == null ? void 0 : g.displayConditions) ?? !0, M = ((S = c.value) == null ? void 0 : S.modulesDisabled) ?? !1, P = ((y = w.value) == null ? void 0 : y.forceRecreate) ?? !1;
19
+ const e = E(), { html: p, css: a } = s, { baseBlocks: o, extensions: d } = await v(), f = ((g = c.value) == null ? void 0 : g.displayConditions) ?? !0, A = ((S = c.value) == null ? void 0 : S.modulesDisabled) ?? !1, M = ((y = w.value) == null ? void 0 : y.forceRecreate) ?? !1;
21
20
  await window.UIEditor.initEditor(
22
21
  document.querySelector("#guido-editor"),
23
22
  {
24
23
  metadata: C,
25
24
  html: p,
26
25
  css: a,
27
- forceRecreate: P,
26
+ forceRecreate: M,
28
27
  locale: "en",
29
28
  undoButtonSelector: "#guido__undo-button",
30
29
  redoButtonSelector: "#guido__redo-button",
@@ -34,101 +33,101 @@ const fo = (C, l) => {
34
33
  customAppearanceMergetags: !u("liquidSyntax"),
35
34
  customAppearanceMergetagsBorderColor: "#f1f3fe",
36
35
  customAppearanceMergetagsBackgroundColor: "#f1f3fe",
37
- customViewStyles: J,
36
+ customViewStyles: G,
38
37
  conditionsEnabled: f,
39
38
  customConditionsEnabled: f,
40
39
  enableXSSSecurity: !0,
41
- modulesDisabled: M,
42
- syncModulesEnabled: r,
40
+ modulesDisabled: A,
41
+ syncModulesEnabled: i,
43
42
  messageSettingsEnabled: !0,
44
43
  displayGmailAnnotations: !0,
45
44
  displayHiddenPreheader: !1,
45
+ keepModuleStylesEnabled: !0,
46
46
  displayTitle: !1,
47
47
  displayUTM: !1,
48
48
  selectElementAfterDrop: !0,
49
49
  sameFontSizeForOutlook: !0,
50
50
  allowedScriptSourceDomains: "https://email-static.useinsider.com https://edge.fullstory.com https://rs.fullstory.com",
51
- ...t ? { baseBlocks: t } : {},
51
+ ...o ? { baseBlocks: o } : {},
52
52
  editorFonts: {
53
53
  showDefaultStandardFonts: !0,
54
54
  showDefaultNotStandardFonts: !0,
55
- customFonts: i
55
+ customFonts: r
56
56
  },
57
57
  mergeTags: [
58
58
  {
59
- entries: X(
59
+ entries: J(
60
60
  l.preselectedDynamicContentList,
61
61
  u("liquidSyntax")
62
62
  )
63
63
  }
64
64
  ],
65
- async onTokenRefreshRequest(e) {
65
+ async onTokenRefreshRequest(t) {
66
66
  try {
67
- const n = await T();
68
- e(n);
67
+ const n = await k();
68
+ t(n);
69
69
  } catch (n) {
70
70
  m(n, "Failed to refresh token");
71
71
  }
72
72
  },
73
73
  onTemplateLoaded() {
74
74
  try {
75
- const { importCss: e } = O(), { activateCustomViewStyles: n, updateTimerInClonedTemplate: D } = U(), { injectFullStory: I } = q();
76
- e(), n(), I(), D(), l.onReady(), o.isStripoInitialized = !0, o.loadingStatus = !1, setTimeout(() => {
77
- o.hasChanges = !1;
75
+ const { importCss: t } = x(), { activateCustomViewStyles: n, updateTimerInClonedTemplate: P } = I(), { injectFullStory: D } = O();
76
+ t(), n(), D(), P(), l.onReady(), e.isStripoInitialized = !0, e.loadingStatus = !1, setTimeout(() => {
77
+ e.hasChanges = !1;
78
78
  }, 1e3);
79
- } catch (e) {
80
- m(e, "Failed to load custom interface appearance");
79
+ } catch (t) {
80
+ m(t, "Failed to load custom interface appearance");
81
81
  }
82
82
  },
83
- onCodeEditorVisibilityChanged(e) {
84
- o.isCodeEditorOpen = e;
83
+ onCodeEditorVisibilityChanged(t) {
84
+ e.isCodeEditorOpen = t;
85
85
  },
86
- onEditorVisualModeChanged(e) {
87
- o.editorVisualMode = e.toLowerCase();
86
+ onEditorVisualModeChanged(t) {
87
+ e.editorVisualMode = t.toLowerCase();
88
88
  },
89
- onVersionHistoryVisibilityChanged(e) {
90
- o.isVersionHistoryOpen = e;
89
+ onVersionHistoryVisibilityChanged(t) {
90
+ e.isVersionHistoryOpen = t;
91
91
  },
92
92
  onDataChanged() {
93
- o.hasChanges = !0;
93
+ e.hasChanges = !0;
94
94
  },
95
95
  onEvent: F,
96
- notifications: V(),
97
96
  ignoreClickOutsideSelectors: [
98
97
  "#guido-dynamic-content-modal",
99
98
  ".in-on-board-wrapper",
100
99
  ".in-drawer__container"
101
100
  ],
102
101
  extensions: d,
103
- localePatch: L
102
+ localePatch: z
104
103
  }
105
104
  );
106
- }, A = (s) => new Promise((i, r) => {
105
+ }, _ = (s) => new Promise((r, i) => {
107
106
  var d;
108
107
  if (document.getElementById("UiEditorScript")) {
109
- Promise.resolve(s()).then(i, r);
108
+ Promise.resolve(s()).then(r, i);
110
109
  return;
111
110
  }
112
- const o = j.guido, a = `https://email-static.useinsider.com/guido/${(d = o == null ? void 0 : o.stripo) == null ? void 0 : d.version}/UIEditor.js`, t = document.createElement("script");
113
- t.id = "UiEditorScript", t.type = "module", t.src = a, t.onload = () => {
114
- Promise.resolve(s()).then(i, r);
115
- }, t.onerror = () => {
116
- r(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
117
- }, document.body.appendChild(t);
111
+ const e = N.guido, a = `https://email-static.useinsider.com/guido/${(d = e == null ? void 0 : e.stripo) == null ? void 0 : d.version}/UIEditor.js`, o = document.createElement("script");
112
+ o.id = "UiEditorScript", o.type = "module", o.src = a, o.onload = () => {
113
+ Promise.resolve(s()).then(r, i);
114
+ }, o.onerror = () => {
115
+ i(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
116
+ }, document.body.appendChild(o);
118
117
  });
119
118
  return { initPlugin: async (s) => {
120
- const i = E();
119
+ const r = E();
121
120
  try {
122
- await A(async () => {
123
- const [r, o] = await Promise.all([
124
- k(),
121
+ await _(async () => {
122
+ const [i, e] = await Promise.all([
123
+ T(),
125
124
  B()
126
125
  ]);
127
- i.syncModulesEnabled = o, await _(s, r, o);
126
+ r.syncModulesEnabled = e, await V(s, i, e);
128
127
  });
129
128
  } catch {
130
- i.loadingStatus = !1, b({
131
- type: $.Error,
129
+ r.loadingStatus = !1, b({
130
+ type: L.Alert,
132
131
  message: h["An error has occurred. Please report the error code to support."],
133
132
  actionButton: {
134
133
  text: h["Reload page"],
@@ -139,5 +138,5 @@ const fo = (C, l) => {
139
138
  } };
140
139
  };
141
140
  export {
142
- fo as useStripo
141
+ ce as useStripo
143
142
  };
@@ -1,29 +1,29 @@
1
1
  import { ToasterTypeOptions as T } from "../enums/toaster.js";
2
2
  import { useToasterStore as c } from "../stores/toaster.js";
3
- import { watch as u, nextTick as f } from "vue";
3
+ import { watch as u, nextTick as l } from "vue";
4
4
  const p = () => {
5
- const o = c();
6
- let t = null;
5
+ const t = c();
6
+ let o = null;
7
7
  const s = () => {
8
- t && (clearTimeout(t), t = null);
8
+ o && (clearTimeout(o), o = null);
9
9
  };
10
10
  function r(e = { message: "" }) {
11
- s(), o.hideToaster(), f(() => {
12
- o.showToaster(e);
11
+ s(), t.hideToaster(), l(() => {
12
+ t.showToaster(e);
13
13
  });
14
14
  }
15
15
  function i() {
16
- s(), o.hideToaster();
16
+ s(), t.hideToaster();
17
17
  }
18
18
  function n(e, a) {
19
19
  const m = e instanceof Error ? e.message : String(e);
20
- r({ type: T.Error, message: `${a}: ${m}` });
20
+ r({ type: T.Alert, message: `${a}: ${m}` });
21
21
  }
22
22
  return u(
23
- () => o.shouldAutoHide,
23
+ () => t.shouldAutoHide,
24
24
  (e) => {
25
- s(), e && (t = setTimeout(() => {
26
- o.hideToaster(), s();
25
+ s(), e && (o = setTimeout(() => {
26
+ t.hideToaster(), s();
27
27
  }, 6e3));
28
28
  }
29
29
  ), { showToaster: r, hideToaster: i, handleError: n };
@@ -24,7 +24,7 @@ const S = () => {
24
24
  window.StripoEditorApi.versionHistoryApi.previewVersion(e, (o) => {
25
25
  const r = o instanceof Error ? o.message : String(o);
26
26
  s({
27
- type: t.Error,
27
+ type: t.Alert,
28
28
  message: `Error compiling email: ${r}`
29
29
  });
30
30
  });
@@ -41,7 +41,7 @@ const S = () => {
41
41
  (o) => {
42
42
  const r = o instanceof Error ? o.message : String(o);
43
43
  s({
44
- type: t.Error,
44
+ type: t.Alert,
45
45
  message: `Error compiling email: ${r}`
46
46
  });
47
47
  }
@@ -31,7 +31,7 @@ const v = () => {
31
31
  }), !1) : !0;
32
32
  } catch {
33
33
  return e({
34
- type: a.Error,
34
+ type: a.Alert,
35
35
  message: s("journey-builder.liquid-validation-failed")
36
36
  }), !1;
37
37
  }
@@ -1,8 +1,8 @@
1
1
  import { ToasterTypeOptions as i } from "../../enums/toaster.js";
2
2
  import { PAGE_TYPES as u } from "../../enums/unsubscribe.js";
3
3
  import { UNSUBSCRIBE_BLOCK_SELECTOR as l, DATA_ATTRIBUTES as a } from "../../extensions/Blocks/Unsubscribe/utils/constants.js";
4
- import { useToaster as E } from "../useToaster.js";
5
- import { useTranslations as m } from "../useTranslations.js";
4
+ import { useToaster as m } from "../useToaster.js";
5
+ import { useTranslations as E } from "../useTranslations.js";
6
6
  const T = [
7
7
  {
8
8
  pageType: u.GLOBAL_UNSUBSCRIBE,
@@ -13,23 +13,23 @@ const T = [
13
13
  messageKey: "unsubscription-preference.duplicate-pref-center"
14
14
  }
15
15
  ], g = "unsubscription-preference.duplicate-both", b = "unsubscription-preference.select-page-to-continue", P = () => {
16
- const { showToaster: c } = E(), p = m();
16
+ const { showToaster: c } = m(), p = E();
17
17
  return { validateUnsubscribeBlockUniqueness: (n) => {
18
- const o = new DOMParser().parseFromString(n, "text/html"), r = /* @__PURE__ */ new Map();
18
+ const o = new DOMParser().parseFromString(n, "text/html"), s = /* @__PURE__ */ new Map();
19
19
  o.querySelectorAll(l).forEach((e) => {
20
- const s = Number(e.getAttribute(a.PAGE_TYPE));
21
- r.set(s, (r.get(s) ?? 0) + 1);
20
+ const r = Number(e.getAttribute(a.PAGE_TYPE));
21
+ s.set(r, (s.get(r) ?? 0) + 1);
22
22
  });
23
- const t = T.filter((e) => (r.get(e.pageType) ?? 0) > 1).map((e) => e.messageKey);
23
+ const t = T.filter((e) => (s.get(e.pageType) ?? 0) > 1).map((e) => e.messageKey);
24
24
  return t.length ? (c({
25
- type: i.Error,
25
+ type: i.Alert,
26
26
  message: p(t.length > 1 ? g : t[0])
27
27
  }), !1) : !0;
28
28
  }, validateUnsubscribeBlockHasTemplate: (n) => {
29
29
  const o = new DOMParser().parseFromString(n, "text/html");
30
30
  return Array.from(o.querySelectorAll(l)).some((t) => {
31
- const e = t.getAttribute(a.PAGE_TYPE), s = t.getAttribute(a.PAGE_LIST);
32
- return !e || !s;
31
+ const e = t.getAttribute(a.PAGE_TYPE), r = t.getAttribute(a.PAGE_LIST);
32
+ return !e || !r;
33
33
  }) ? (c({
34
34
  type: i.Warning,
35
35
  message: p(b)
@@ -1,30 +1,30 @@
1
- import { useConfig as C } from "../../../composables/useConfig.js";
2
- import { useRecommendation as E } from "../../../composables/useRecommendation.js";
3
- import { CSS_CLASS_RECO_BUTTON as q } from "../../../extensions/Blocks/Recommendation/constants/selectors.js";
4
- import { useRecommendationExtensionStore as w } from "../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
- import { isIgnoredRecommendationBlock as P } from "./recommendationIgnoreUtils.js";
6
- function R(t, r, e, o, s = "") {
7
- const i = `{{${s}${t}_${r}_${e}}}`, n = `{{${s}${t}_${r}_currency}}`;
8
- return o === "before" ? `${n} ${i}` : `${i} ${n}`;
9
- }
10
- function y(t) {
1
+ import { useConfig as _ } from "../../../composables/useConfig.js";
2
+ import { useRecommendation as q } from "../../../composables/useRecommendation.js";
3
+ import { CSS_CLASS_RECO_BUTTON as C } from "../../../extensions/Blocks/Recommendation/constants/selectors.js";
4
+ import { useRecommendationExtensionStore as E } from "../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
+ import { isIgnoredRecommendationBlock as w } from "./recommendationIgnoreUtils.js";
6
+ function P(t, r, e, n, s = "") {
7
+ const c = `{{${s}${t}_${r}_${e}}}`, o = `{{${s}${t}_${r}_currency}}`;
8
+ return n === "before" ? `${o} ${c}` : `${c} ${o}`;
9
+ }
10
+ function m(t) {
11
11
  let r = t;
12
12
  for (; r.children.length === 1; )
13
13
  [r] = r.children;
14
14
  return r;
15
15
  }
16
- function A(t, r, e, o, s, i) {
16
+ function b(t, r, e, n, s, c) {
17
17
  switch (r) {
18
18
  case "productImage": {
19
- const n = t.querySelector("img");
20
- n && (n.setAttribute("src", `{{${i}${e}_${o}_image_url}}`), n.setAttribute("alt", `{{${i}${e}_${o}_name}}`));
21
- const c = t.querySelector("a");
22
- c && (c.setAttribute("href", `{{${i}${e}_${o}_url}}`), c.classList.add(q));
19
+ const o = t.querySelector("img");
20
+ o && (o.setAttribute("src", `{{${c}${e}_${n}_image_url}}`), o.setAttribute("alt", `{{${c}${e}_${n}_name}}`));
21
+ const i = t.querySelector("a");
22
+ i && (i.setAttribute("href", `{{${c}${e}_${n}_url}}`), i.classList.add(C));
23
23
  break;
24
24
  }
25
25
  case "productName": {
26
- const n = t.querySelector("p");
27
- n && (y(n).textContent = `{{${i}${e}_${o}_name}}`);
26
+ const o = t.querySelector("p");
27
+ o && (m(o).textContent = `{{${c}${e}_${n}_name}}`);
28
28
  break;
29
29
  }
30
30
  // Inline mode ("Move to next line" OFF) merges BOTH prices into one row
@@ -32,176 +32,145 @@ function A(t, r, e, o, s, i) {
32
32
  // substitute by cell content, not by the row's anchor (SD-145161).
33
33
  case "productPrice":
34
34
  case "productOldPrice": {
35
- const n = (l, d) => {
36
- l && (y(l).textContent = R(
35
+ const o = (d, l) => {
36
+ d && (m(d).textContent = P(
37
37
  e,
38
- o,
39
- d,
38
+ n,
39
+ l,
40
40
  s,
41
- i
41
+ c
42
42
  ));
43
- }, c = t.querySelector(".product-price p"), a = t.querySelector(".product-old-price p"), u = !c && !a ? t.querySelector("p") : null;
44
- n(c ?? (r === "productPrice" ? u : null), "price"), n(a ?? (r === "productOldPrice" ? u : null), "original_price");
43
+ }, i = t.querySelector(".product-price p"), a = t.querySelector(".product-old-price p"), u = !i && !a ? t.querySelector("p") : null;
44
+ o(i ?? (r === "productPrice" ? u : null), "price"), o(a ?? (r === "productOldPrice" ? u : null), "original_price");
45
45
  break;
46
46
  }
47
47
  case "productButton": {
48
- const n = t.querySelector("a");
49
- n && n.setAttribute("href", `{{${i}${e}_${o}_url}}`);
48
+ const o = t.querySelector("a");
49
+ o && o.setAttribute("href", `{{${c}${e}_${n}_url}}`);
50
50
  break;
51
51
  }
52
52
  case "productOmnibusPrice": {
53
- const n = t.querySelector(".omnibus-price-value");
54
- if (n) {
55
- n.textContent = `{{${i}${e}_${o}_omnibus_price}}`;
56
- const c = n.closest("p");
57
- c && (c.setAttribute("product-attr", "omnibus_price"), c.setAttribute("composition", "true"));
53
+ const o = t.querySelector(".omnibus-price-value");
54
+ if (o) {
55
+ o.textContent = `{{${c}${e}_${n}_omnibus_price}}`;
56
+ const i = o.closest("p");
57
+ i && (i.setAttribute("product-attr", "omnibus_price"), i.setAttribute("composition", "true"));
58
58
  }
59
59
  break;
60
60
  }
61
61
  case "productOmnibusDiscount": {
62
- const n = t.querySelector(".omnibus-discount-value");
63
- if (n) {
64
- n.textContent = `{{${i}${e}_${o}_omnibus_discount}}`;
65
- const c = n.closest("p");
66
- c && (c.setAttribute("product-attr", "omnibus_discount"), c.setAttribute("composition", "true"));
62
+ const o = t.querySelector(".omnibus-discount-value");
63
+ if (o) {
64
+ o.textContent = `{{${c}${e}_${n}_omnibus_discount}}`;
65
+ const i = o.closest("p");
66
+ i && (i.setAttribute("product-attr", "omnibus_discount"), i.setAttribute("composition", "true"));
67
67
  }
68
68
  break;
69
69
  }
70
70
  default: {
71
- const n = t.getAttribute("product-attr") ? t : t.querySelector("[product-attr]");
72
- if (n) {
73
- const c = n.getAttribute("product-attr"), a = n.querySelector("p");
74
- a && (y(a).textContent = `{{${i}${e}_${o}_${c}}}`);
71
+ const o = t.getAttribute("product-attr") ? t : t.querySelector("[product-attr]");
72
+ if (o) {
73
+ const i = o.getAttribute("product-attr"), a = o.querySelector("p");
74
+ a && (m(a).textContent = `{{${c}${e}_${n}_${i}}}`);
75
75
  }
76
76
  break;
77
77
  }
78
78
  }
79
79
  }
80
- const B = "name";
81
- function S(t, r, e, o) {
82
- const s = `${o}${r}_${e}_${B}`;
83
- return {
84
- open: t.createComment(`{% if ${s} and ${s} != "" %}`),
85
- close: t.createComment("{% endif %}")
86
- };
87
- }
88
- function L(t, r, e) {
89
- return S(t, r, 0, e);
90
- }
91
- function N(t, r, e, o) {
92
- if (!t.innerHTML.includes("{{"))
93
- return;
94
- const { open: s, close: i } = S(t.ownerDocument, r, e, o);
95
- t.insertBefore(s, t.firstChild), t.appendChild(i);
96
- }
97
- function T(t, r, e, o) {
98
- var n, c;
99
- if (!t.innerHTML.includes("{{"))
100
- return;
101
- const { open: s, close: i } = S(t.ownerDocument, r, e, o);
102
- (n = t.parentNode) == null || n.insertBefore(s, t), (c = t.parentNode) == null || c.insertBefore(i, t.nextSibling);
103
- }
104
- function v(t, r, e, o) {
105
- t.querySelectorAll(".recommendation-product-row").forEach((i, n) => {
106
- i.querySelectorAll("[data-attribute-type]").forEach((a) => {
107
- const u = a.getAttribute("data-attribute-type") || "", l = a.querySelectorAll(".attribute-cell");
108
- l.length > 0 ? l.forEach((d) => {
109
- A(d, u, r, n, e, o);
110
- }) : A(a, u, r, n, e, o);
111
- }), T(i, r, n, o);
80
+ function R(t, r, e, n) {
81
+ t.querySelectorAll(".recommendation-product-row").forEach((c, o) => {
82
+ c.querySelectorAll("[data-attribute-type]").forEach((a) => {
83
+ const u = a.getAttribute("data-attribute-type") || "", d = a.querySelectorAll(".attribute-cell");
84
+ d.length > 0 ? d.forEach((l) => {
85
+ b(l, u, r, o, e, n);
86
+ }) : b(a, u, r, o, e, n);
87
+ });
112
88
  });
113
89
  }
114
- function O(t, r, e, o) {
90
+ function W(t, r, e, n) {
115
91
  const s = t.querySelectorAll(".recommendation-product-row");
116
92
  if (!s.length)
117
93
  return;
118
- const [i] = s, n = i.querySelector("[data-attribute-type]"), c = n ? n.querySelectorAll(".attribute-cell").length : 1;
94
+ const [c] = s, o = c.querySelector("[data-attribute-type]"), i = o ? o.querySelectorAll(".attribute-cell").length : 1;
119
95
  s.forEach((a, u) => {
120
- a.querySelectorAll("[data-attribute-type]").forEach((d) => {
121
- const p = d.getAttribute("data-attribute-type") || "";
122
- d.querySelectorAll(".attribute-cell").forEach((m, f) => {
123
- const h = u * c + f;
124
- A(m, p, r, h, e, o), N(m, r, h, o);
96
+ a.querySelectorAll("[data-attribute-type]").forEach((l) => {
97
+ const p = l.getAttribute("data-attribute-type") || "";
98
+ l.querySelectorAll(".attribute-cell").forEach(($, S) => {
99
+ const g = u * i + S;
100
+ b($, p, r, g, e, n);
125
101
  });
126
102
  });
127
103
  });
128
104
  }
129
- function W(t, r, e, o) {
130
- t.querySelectorAll(".ins-recommendation-product-container").forEach((i) => {
131
- O(i, r, e, o);
105
+ function v(t, r, e, n) {
106
+ t.querySelectorAll(".ins-recommendation-product-container").forEach((c) => {
107
+ W(c, r, e, n);
132
108
  });
133
109
  }
134
- function D(t, r, e) {
135
- const o = t.getAttribute("data-layout") || "grid", s = t.getAttribute("currency-alignment") || "after";
136
- o === "list" ? v(t, r, s, e) : W(t, r, s, e);
110
+ function O(t, r, e) {
111
+ const n = t.getAttribute("data-layout") || "grid", s = t.getAttribute("currency-alignment") || "after";
112
+ n === "list" ? R(t, r, s, e) : v(t, r, s, e);
137
113
  }
138
- function $(t, r, e) {
139
- const o = new RegExp(`${r}\\s*:\\s*(\\d+)\\s*px`, "i"), s = t.match(o);
114
+ function f(t, r, e) {
115
+ const n = new RegExp(`${r}\\s*:\\s*(\\d+)\\s*px`, "i"), s = t.match(n);
140
116
  return s ? parseInt(s[1]) : e;
141
117
  }
142
- function _(t) {
118
+ function y(t) {
143
119
  const r = t.trim();
144
120
  return r.endsWith("%") ? parseFloat(r) < 100 : /^\d+(?:\.\d+)?(?:px)?$/.test(r) && parseInt(r) > 0;
145
121
  }
146
- function g(t) {
122
+ function A(t) {
147
123
  const r = t.getAttribute("width");
148
- if (r && _(r))
124
+ if (r && y(r))
149
125
  return r.trim();
150
126
  const e = (t.getAttribute("style") || "").match(/(?:^|[;\s])width\s*:\s*(\d+(?:\.\d+)?(?:px|%))/i);
151
- return e && _(e[1]) ? e[1] : null;
127
+ return e && y(e[1]) ? e[1] : null;
152
128
  }
153
129
  function M(t, r) {
154
130
  let e = t.parentElement;
155
131
  for (; e && e !== r; ) {
156
- if (e.tagName === "TD" && g(e))
132
+ if (e.tagName === "TD" && A(e))
157
133
  return e;
158
134
  e = e.parentElement;
159
135
  }
160
136
  return null;
161
137
  }
162
- function G(t) {
163
- const r = t.getAttribute("style") || "", e = $(r, "width", 600), o = $(r, "padding", 0) * 2, s = Math.max(0, e - o);
164
- s !== 0 && t.querySelectorAll("img.adapt-img").forEach((i) => {
165
- if (i.hasAttribute("width"))
138
+ function T(t) {
139
+ const r = t.getAttribute("style") || "", e = f(r, "width", 600), n = f(r, "padding", 0) * 2, s = Math.max(0, e - n);
140
+ s !== 0 && t.querySelectorAll("img.adapt-img").forEach((c) => {
141
+ if (c.hasAttribute("width"))
166
142
  return;
167
- const n = M(i, t);
168
- if (!n)
143
+ const o = M(c, t);
144
+ if (!o)
169
145
  return;
170
- const c = g(n), a = $(n.getAttribute("style") || "", "padding", 0) * 2, u = c.endsWith("%") ? Math.floor(s * parseFloat(c) / 100) : parseInt(c), l = Math.max(1, u - a);
171
- i.setAttribute("width", String(l));
172
- const d = i.getAttribute("style") || "";
173
- if (!/\bwidth\s*:\s*\d/i.test(d)) {
174
- const p = d && !d.trim().endsWith(";") ? "; " : "";
175
- i.setAttribute("style", `${d}${p}width: ${l}px`);
146
+ const i = A(o), a = f(o.getAttribute("style") || "", "padding", 0) * 2, u = i.endsWith("%") ? Math.floor(s * parseFloat(i) / 100) : parseInt(i), d = Math.max(1, u - a);
147
+ c.setAttribute("width", String(d));
148
+ const l = c.getAttribute("style") || "";
149
+ if (!/\bwidth\s*:\s*\d/i.test(l)) {
150
+ const p = l && !l.trim().endsWith(";") ? "; " : "";
151
+ c.setAttribute("style", `${l}${p}width: ${d}px`);
176
152
  }
177
153
  });
178
154
  }
179
- function H(t, r) {
155
+ function B(t, r) {
180
156
  const e = t.match(/<!DOCTYPE[^>]*>/i);
181
157
  return (e ? `${e[0]}
182
158
  ` : "") + r.documentElement.outerHTML;
183
159
  }
184
- function Y(t) {
185
- const r = t.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), e = new DOMParser().parseFromString(r, "text/html"), o = e.querySelectorAll(".recommendation-block-v2");
186
- if (!o.length)
160
+ function G(t) {
161
+ const r = t.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), e = new DOMParser().parseFromString(r, "text/html"), n = e.querySelectorAll(".recommendation-block-v2");
162
+ if (!n.length)
187
163
  return t;
188
- const { buildCampaignUrl: s } = E(), i = w();
189
- i.recommendationCampaignUrls = {};
190
- const { isFeatureEnabled: n } = C(), c = n("liquidSyntax") ? "reco_" : "";
191
- return o.forEach((u) => {
192
- var d, p, b, m;
193
- const l = u.getAttribute("recommendation-id");
194
- if (l) {
195
- if ((d = u.parentNode) == null || d.insertBefore(e.createComment("REC_START"), u), (p = u.parentNode) == null || p.insertBefore(e.createComment("REC_END"), u.nextSibling), u.querySelectorAll('[data-visibility="0"]').forEach((f) => f.remove()), s(l), !P(u)) {
196
- D(u, l, c);
197
- const { open: f, close: h } = L(e, l, c);
198
- (b = u.parentNode) == null || b.insertBefore(f, u), (m = u.parentNode) == null || m.insertBefore(h, u.nextSibling);
199
- }
200
- G(u);
201
- }
202
- }), H(r, e).replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
164
+ const { buildCampaignUrl: s } = q(), c = E();
165
+ c.recommendationCampaignUrls = {};
166
+ const { isFeatureEnabled: o } = _(), i = o("liquidSyntax") ? "reco_" : "";
167
+ return n.forEach((u) => {
168
+ var l, p;
169
+ const d = u.getAttribute("recommendation-id");
170
+ d && ((l = u.parentNode) == null || l.insertBefore(e.createComment("REC_START"), u), (p = u.parentNode) == null || p.insertBefore(e.createComment("REC_END"), u.nextSibling), u.querySelectorAll('[data-visibility="0"]').forEach((h) => h.remove()), s(d), w(u) || O(u, d, i), T(u));
171
+ }), B(r, e).replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
203
172
  }
204
173
  export {
205
- R as formatPriceVariable,
206
- Y as prepareRecommendationBlocks
174
+ P as formatPriceVariable,
175
+ G as prepareRecommendationBlocks
207
176
  };
@@ -1,4 +1,4 @@
1
- var n = /* @__PURE__ */ ((r) => (r.Success = "success", r.Warning = "warning", r.Error = "error", r.Info = "information", r))(n || {});
1
+ var c = /* @__PURE__ */ ((r) => (r.Success = "success", r.Warning = "warning", r.Alert = "alert", r.Dark = "dark", r))(c || {});
2
2
  export {
3
- n as ToasterTypeOptions
3
+ c as ToasterTypeOptions
4
4
  };