@useinsider/guido 2.1.0-beta.7d0f92a → 2.1.0-beta.7ffef92

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 (62) hide show
  1. package/README.md +36 -0
  2. package/dist/@types/config/schemas.js +70 -65
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +69 -58
  5. package/dist/components/organisms/extensions/recommendation/FilterItem.vue.js +11 -13
  6. package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +55 -24
  7. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.js +3 -3
  8. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +34 -21
  9. package/dist/components/organisms/extensions/recommendation/Filters.vue.js +9 -9
  10. package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +44 -35
  11. package/dist/composables/useBlocksConfig.js +26 -16
  12. package/dist/composables/useHtmlValidator.js +107 -119
  13. package/dist/config/compiler/utils/recommendationCompilerUtils.js +27 -22
  14. package/dist/config/migrator/itemsBlockMigrator.js +101 -97
  15. package/dist/enums/defaults.js +8 -4
  16. package/dist/extensions/Blocks/Recommendation/block.js +26 -23
  17. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +27 -26
  18. package/dist/extensions/Blocks/Recommendation/constants/layout.js +6 -4
  19. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +12 -10
  20. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +124 -72
  21. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +87 -37
  22. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +138 -117
  23. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
  24. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +179 -133
  25. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +25 -30
  26. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +27 -30
  27. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +20 -25
  28. package/dist/extensions/Blocks/Recommendation/templates/utils.js +43 -31
  29. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +8 -8
  30. package/dist/extensions/Blocks/Recommendation/validation/filterSchema.js +29 -0
  31. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  32. package/dist/guido.css +1 -1
  33. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +257 -187
  34. package/dist/services/recommendationApi.js +11 -9
  35. package/dist/services/stripoApi.js +20 -17
  36. package/dist/src/@types/config/schemas.d.ts +8 -0
  37. package/dist/src/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +1 -0
  38. package/dist/src/components/organisms/extensions/recommendation/Filters.vue.d.ts +15 -1
  39. package/dist/src/composables/useConfig.d.ts +4 -0
  40. package/dist/src/enums/defaults.d.ts +4 -0
  41. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +2 -2
  42. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +6 -0
  43. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +4 -0
  44. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +17 -1
  45. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +22 -4
  46. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +9 -2
  47. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
  48. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +25 -2
  49. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +1 -1
  50. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +2 -0
  51. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +12 -3
  52. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +6 -0
  53. package/dist/src/extensions/Blocks/Recommendation/validation/filterSchema.d.ts +15 -0
  54. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  55. package/dist/src/stores/config.d.ts +36 -0
  56. package/dist/static/styles/components/notification.css.js +1 -0
  57. package/dist/static/styles/components/version-history.css.js +10 -2
  58. package/dist/static/styles/components/wide-panel.css.js +18 -2
  59. package/dist/static/styles/customEditorStyle.css.js +10 -9
  60. package/dist/static/templates/empty/index.html.js +74 -0
  61. package/dist/static/templates/empty/style.css.js +779 -0
  62. package/package.json +1 -1
@@ -1,171 +1,159 @@
1
- import { useConfig as D } from "./useConfig.js";
2
- import { TemplateTypes as L } from "../enums/defaults.js";
3
- import { DISPLAY_CONDITIONS_REGEX as V, DISPLAY_CONDITIONS_EXCEPTIONS_REGEX as H, CampaignCouldNotBeSavedKey as M, CanNotMakeAnyChangesForRunningKey as $ } from "../enums/html-validator.js";
4
- import { ToasterTypeOptions as l } from "../enums/toaster.js";
5
- import { itemsBlockDynamicVariables as P } from "../extensions/Blocks/Items/enums/productEnums.js";
6
- import { useRecommendationExtensionStore as j } from "../extensions/Blocks/Recommendation/store/recommendation.js";
7
- import { useRecommendationStore as G } from "../stores/recommendation.js";
8
- import { base64EncodeWithSpecialChars as q } from "../utils/base64.js";
9
- import { useHttp as z } from "./useHttp.js";
10
- import { useToaster as U } from "./useToaster.js";
11
- import { useTranslations as X } from "./useTranslations.js";
12
- const K = [
13
- "img",
14
- "url",
15
- "name",
16
- "price",
17
- "currency",
18
- "original_price",
19
- "omnibus_price",
20
- "omnibus_discount"
21
- ];
22
- function Y() {
23
- const a = j();
24
- return Object.keys(a.blockStates).flatMap((d) => {
25
- const f = a.blockStates[Number(d)], i = parseInt(f.recommendationConfigs.size) || 10;
26
- return Array.from({ length: i }, (m, u) => u).flatMap((m) => K.map((u) => `${d}_${m}_${u}`));
27
- });
1
+ import { useConfig as L } from "./useConfig.js";
2
+ import { TemplateTypes as V } from "../enums/defaults.js";
3
+ import { DISPLAY_CONDITIONS_REGEX as _, DISPLAY_CONDITIONS_EXCEPTIONS_REGEX as H, CampaignCouldNotBeSavedKey as P, CanNotMakeAnyChangesForRunningKey as G } from "../enums/html-validator.js";
4
+ import { ToasterTypeOptions as c } from "../enums/toaster.js";
5
+ import { itemsBlockDynamicVariables as M } from "../extensions/Blocks/Items/enums/productEnums.js";
6
+ import { useRecommendationStore as $ } from "../stores/recommendation.js";
7
+ import { base64EncodeWithSpecialChars as X } from "../utils/base64.js";
8
+ import { useHttp as j } from "./useHttp.js";
9
+ import { useToaster as q } from "./useToaster.js";
10
+ import { useTranslations as z } from "./useTranslations.js";
11
+ const K = /recommendation-id="(\d+)"/g;
12
+ function U(i) {
13
+ return [...i.matchAll(K)].map((u) => u[1]);
28
14
  }
29
- const le = () => {
30
- var p, y;
31
- const { showToaster: a } = U(), { post: d } = z(), { config: f } = D(), i = X(), g = G(), m = ((y = (p = f.value) == null ? void 0 : p.partner) == null ? void 0 : y.messageType) === L.transactional, u = async (e) => {
32
- const t = await d(
15
+ function Y(i, u) {
16
+ return u.some((d) => i.startsWith(`${d}_`));
17
+ }
18
+ const ce = () => {
19
+ var y, h;
20
+ const { showToaster: i } = q(), { post: u } = j(), { config: d } = L(), r = z(), g = $(), p = ((h = (y = d.value) == null ? void 0 : y.partner) == null ? void 0 : h.messageType) === V.transactional, w = async (e) => {
21
+ const t = await u(
33
22
  "/newsletter/template-library/check-template-html-body",
34
- { html: q(e) }
35
- ), { status: n, message: c } = t.data;
36
- return n || a({
37
- type: l.Alert,
38
- message: n === void 0 ? c : i("newsletter.invalid-url-link-for-toaster")
39
- }), i(M), c === i($) && a({
40
- type: l.Alert,
41
- message: i("newsletter.already-in-progress")
23
+ { html: X(e) }
24
+ ), { status: n, message: l } = t.data;
25
+ return n || i({
26
+ type: c.Alert,
27
+ message: n === void 0 ? l : r("newsletter.invalid-url-link-for-toaster")
28
+ }), r(P), l === r(G) && i({
29
+ type: c.Alert,
30
+ message: r("newsletter.already-in-progress")
42
31
  }), n;
43
- }, b = (e) => !["if", "endif", "else", "elif", "now"].includes(e.toLowerCase()), S = (e) => ["if", "endif"].includes(e.toLowerCase()), w = (e, s) => {
32
+ }, b = (e) => !["if", "endif", "else", "elif", "now"].includes(e.toLowerCase()), S = (e) => ["if", "endif"].includes(e.toLowerCase()), E = (e, s) => {
44
33
  const t = e.match(/({%(.*?)%})/g);
45
34
  let n = !0;
46
- return t !== null && !m && t.forEach((c) => {
47
- const o = c.slice(2, -2).trim().match(/(".*?"|[^"\s]+)(?=\s*|\s*$)/g);
35
+ return t !== null && !p && t.forEach((l) => {
36
+ const o = l.slice(2, -2).trim().match(/(".*?"|[^"\s]+)(?=\s*|\s*$)/g);
48
37
  if (o && o.length > 0) {
49
- const [r] = o;
50
- b(r) && !s.includes(r) && (a({
51
- type: l.Warning,
52
- message: i("custom-fields.invalid-custom-fields")
38
+ const [a] = o;
39
+ b(a) && !s.includes(a) && (i({
40
+ type: c.Warning,
41
+ message: r("custom-fields.invalid-custom-fields")
53
42
  }), n = !1);
54
43
  }
55
44
  }), n;
56
- }, E = async (e, s, t) => {
57
- const n = t ? await u(e) : !0;
58
- return w(e, s) && n;
59
- }, A = (e) => e.length > 0 ? !0 : (a({
60
- type: l.Warning,
61
- message: i("newsletter.html-content-is-empty")
45
+ }, A = async (e, s, t) => {
46
+ const n = t ? await w(e) : !0;
47
+ return E(e, s) && n;
48
+ }, I = (e) => e.length > 0 ? !0 : (i({
49
+ type: c.Warning,
50
+ message: r("newsletter.html-content-is-empty")
62
51
  }), !1), k = (e) => {
63
52
  const s = (e.match(/{/gm) || []).length, t = (e.match(/}/gm) || []).length;
64
- return s > t && a({
65
- type: l.Warning,
66
- message: i("custom-fields.missing-closing-braces")
67
- }), s < t && a({
68
- type: l.Warning,
69
- message: i("custom-fields.missing-opening-braces")
53
+ return s > t && i({
54
+ type: c.Warning,
55
+ message: r("custom-fields.missing-closing-braces")
56
+ }), s < t && i({
57
+ type: c.Warning,
58
+ message: r("custom-fields.missing-opening-braces")
70
59
  }), s === t;
71
60
  }, x = (e) => {
72
61
  const s = e.match(/{{\s*(\w+\s+((\w+\|\w+)|(\w+)))\s*}}/gm) === null;
73
- return s || a({
74
- type: l.Warning,
75
- message: i("custom-fields.invalid-custom-fields")
62
+ return s || i({
63
+ type: c.Warning,
64
+ message: r("custom-fields.invalid-custom-fields")
76
65
  }), s;
77
66
  }, T = (e, s) => {
78
67
  const t = e.match(/{{([a-zA-Z0-9_\s]*)}}/gm);
79
- if (t && !m) {
80
- const n = new Set(s.map((o) => o.toLowerCase())), c = [];
81
- if (t.forEach((o) => {
82
- const r = o.slice(2, -2).trim().toLowerCase();
83
- (!n.has(r) || r === "") && c.push(r);
84
- }), c.length > 0) {
85
- const o = `
68
+ if (t && !p) {
69
+ const n = new Set(s.map((a) => a.toLowerCase())), l = U(e), o = [];
70
+ if (t.forEach((a) => {
71
+ const m = a.slice(2, -2).trim().toLowerCase();
72
+ (!n.has(m) || m === "") && !Y(m, l) && o.push(m);
73
+ }), o.length > 0) {
74
+ const a = `
86
75
  <ul>
87
- ${c.map((r) => `<li>${r}</li>`).join("")}
76
+ ${o.map((m) => `<li>${m}</li>`).join("")}
88
77
  </ul>
89
78
  `;
90
- return a({
91
- type: l.Alert,
92
- message: i("custom-fields.invalid-custom-fields") + o
79
+ return i({
80
+ type: c.Alert,
81
+ message: r("custom-fields.invalid-custom-fields") + a
93
82
  }), !1;
94
83
  }
95
84
  }
96
85
  return !0;
97
- }, I = (e) => {
86
+ }, F = (e) => {
98
87
  const s = e.match(/{%(.*?)%}/g), t = [];
99
88
  let n = !0;
100
- if (s && s.forEach((c) => {
101
- const o = c.match(V), r = c.match(H), B = (o == null ? void 0 : o.join("")) || "";
102
- (!o || c !== B) && !r && (a({
103
- type: l.Alert,
104
- message: i("newsletter.display-conditions-invalid-syntax")
105
- }), n = !1), o && o.forEach((h) => {
106
- h.trim() === "=" && (a({
107
- type: l.Alert,
108
- message: i("custom-conditions.wrong-equality-operators")
89
+ if (s && s.forEach((l) => {
90
+ const o = l.match(_), a = l.match(H), m = (o == null ? void 0 : o.join("")) || "";
91
+ (!o || l !== m) && !a && (i({
92
+ type: c.Alert,
93
+ message: r("newsletter.display-conditions-invalid-syntax")
94
+ }), n = !1), o && o.forEach((f) => {
95
+ f.trim() === "=" && (i({
96
+ type: c.Alert,
97
+ message: r("custom-conditions.wrong-equality-operators")
109
98
  }), n = !1);
110
- const C = h.match(/^[a-zA-Z]*$/g);
111
- C && C.forEach((v) => {
112
- S(v) && t.push(v);
99
+ const v = f.match(/^[a-zA-Z]*$/g);
100
+ v && v.forEach((C) => {
101
+ S(C) && t.push(C);
113
102
  });
114
103
  });
115
104
  }), t.length) {
116
- const c = t.filter((r) => r === "if"), o = t.filter((r) => r === "endif");
117
- c.length !== o.length && (a({
118
- type: l.Alert,
119
- message: i("custom-conditions.missing-if-endif-tag")
105
+ const l = t.filter((a) => a === "if"), o = t.filter((a) => a === "endif");
106
+ l.length !== o.length && (i({
107
+ type: c.Alert,
108
+ message: r("custom-conditions.missing-if-endif-tag")
120
109
  }), n = !1);
121
110
  }
122
111
  return n;
123
- }, F = (e) => {
112
+ }, W = (e) => {
124
113
  const s = (e.match(/{% /gm) || []).length, t = (e.match(/ %}/gm) || []).length, n = s === t;
125
- return n || a({
126
- type: l.Warning,
127
- message: i("custom-conditions.no-space-after-braces")
114
+ return n || i({
115
+ type: c.Warning,
116
+ message: r("custom-conditions.no-space-after-braces")
128
117
  }), n;
129
- }, _ = (e) => (e.match(/({%(.*?)%})/g) || []).filter((t) => t.includes("if")).map((t) => (t.match(/{{.*}}/gm) || []).length).reduce((t, n) => t + n, 0) > 0 ? (a({
130
- type: l.Warning,
131
- message: i("custom-conditions.no-braces-inside-if-tag")
132
- }), !1) : !0, N = () => g.recommendationConfigs && Object.values(g.recommendationConfigs).find((s) => s.filters.find((t) => t.value === "")) !== void 0 ? (a({
133
- type: l.Alert,
134
- message: i("newsletter.fill-all-necessary-fields")
135
- }), !1) : !0, O = (e) => {
118
+ }, N = (e) => (e.match(/({%(.*?)%})/g) || []).filter((t) => t.includes("if")).map((t) => (t.match(/{{.*}}/gm) || []).length).reduce((t, n) => t + n, 0) > 0 ? (i({
119
+ type: c.Warning,
120
+ message: r("custom-conditions.no-braces-inside-if-tag")
121
+ }), !1) : !0, O = () => g.recommendationConfigs && Object.values(g.recommendationConfigs).find((s) => s.filters.find((t) => t.value === "")) !== void 0 ? (i({
122
+ type: c.Alert,
123
+ message: r("newsletter.fill-all-necessary-fields")
124
+ }), !1) : !0, B = (e) => {
136
125
  const s = /src="[^"]*\.(svg|pst)"/gm;
137
- return e.match(s) === null ? !0 : (a({
138
- type: l.Alert,
139
- message: i("newsletter.invalid-image-type")
126
+ return e.match(s) === null ? !0 : (i({
127
+ type: c.Alert,
128
+ message: r("newsletter.invalid-image-type")
140
129
  }), !1);
141
- }, W = (e) => {
130
+ }, R = (e) => {
142
131
  const n = new DOMParser().parseFromString(e, "text/html").querySelectorAll(".checkbox-block-v2");
143
132
  return Array.from(n).find((o) => {
144
- var r;
145
- return !((r = o.id) != null && r.trim());
146
- }) ? (a({
147
- type: l.Alert,
148
- message: i("unsubscribe-templates.select-checkbox-groups")
133
+ var a;
134
+ return !((a = o.id) != null && a.trim());
135
+ }) ? (i({
136
+ type: c.Alert,
137
+ message: r("unsubscribe-templates.select-checkbox-groups")
149
138
  }), !1) : !0;
150
- }, R = (e) => {
139
+ }, D = (e) => {
151
140
  const n = new DOMParser().parseFromString(e, "text/html").querySelectorAll(".radio-button-v2");
152
141
  return Array.from(n).find((o) => {
153
- var r;
154
- return !((r = o.id) != null && r.trim());
155
- }) ? (a({
156
- type: l.Alert,
157
- message: i("unsubscribe-templates.select-radio-button-groups")
142
+ var a;
143
+ return !((a = o.id) != null && a.trim());
144
+ }) ? (i({
145
+ type: c.Alert,
146
+ message: r("unsubscribe-templates.select-radio-button-groups")
158
147
  }), !1) : !0;
159
148
  };
160
149
  return { validateHtml: async (e, s, t = !1) => {
161
150
  const n = [
162
151
  ...s.map((o) => o.value),
163
- ...P,
164
- ...Y()
152
+ ...M
165
153
  ];
166
- return await E(e, n, t) && A(e) && k(e) && x(e) && T(e, n) && I(e) && F(e) && _(e) && N() && O(e) && W(e) && R(e);
154
+ return await A(e, n, t) && I(e) && k(e) && x(e) && T(e, n) && F(e) && W(e) && N(e) && O() && B(e) && R(e) && D(e);
167
155
  } };
168
156
  };
169
157
  export {
170
- le as useHtmlValidator
158
+ ce as useHtmlValidator
171
159
  };
@@ -1,13 +1,13 @@
1
- import { useRecommendation as S } from "../../../composables/useRecommendation.js";
1
+ import { useRecommendation as _ } from "../../../composables/useRecommendation.js";
2
2
  function b(e, u, r, o) {
3
- const s = `{{${e}_${u}_${r}}}`, t = `{{${e}_${u}_currency}}`;
4
- return o === "before" ? `${t} ${s}` : `${s} ${t}`;
3
+ const n = `{{${e}_${u}_${r}}}`, t = `{{${e}_${u}_currency}}`;
4
+ return o === "before" ? `${t} ${n}` : `${n} ${t}`;
5
5
  }
6
- function p(e, u, r, o, s) {
6
+ function p(e, u, r, o, n) {
7
7
  switch (u) {
8
8
  case "productImage": {
9
9
  const t = e.querySelector("img");
10
- t && t.setAttribute("src", `{{${r}_${o}_img}}`);
10
+ t && (t.setAttribute("src", `{{${r}_${o}_image_url}}`), t.setAttribute("alt", `{{${r}_${o}_name}}`));
11
11
  const c = e.querySelector("a");
12
12
  c && c.setAttribute("href", `{{${r}_${o}_url}}`);
13
13
  break;
@@ -24,7 +24,7 @@ function p(e, u, r, o, s) {
24
24
  const t = e.querySelector("p");
25
25
  if (t) {
26
26
  const c = t.querySelector("strong") || t;
27
- c.textContent = b(r, o, "price", s);
27
+ c.textContent = b(r, o, "price", n);
28
28
  }
29
29
  break;
30
30
  }
@@ -36,7 +36,7 @@ function p(e, u, r, o, s) {
36
36
  r,
37
37
  o,
38
38
  "original_price",
39
- s
39
+ n
40
40
  ), t.setAttribute("product-attr", "discount");
41
41
  }
42
42
  break;
@@ -67,22 +67,22 @@ function p(e, u, r, o, s) {
67
67
  }
68
68
  }
69
69
  function $(e, u, r) {
70
- e.querySelectorAll(".recommendation-product-row").forEach((s, t) => {
71
- s.querySelectorAll("[data-attribute-type]").forEach((n) => {
72
- const i = n.getAttribute("data-attribute-type") || "", a = n.querySelectorAll(".attribute-cell");
70
+ e.querySelectorAll(".recommendation-product-row").forEach((n, t) => {
71
+ n.querySelectorAll("[data-attribute-type]").forEach((s) => {
72
+ const i = s.getAttribute("data-attribute-type") || "", a = s.querySelectorAll(".attribute-cell");
73
73
  a.length > 0 ? a.forEach((l) => {
74
74
  p(l, i, u, t, r);
75
- }) : p(n, i, u, t, r);
75
+ }) : p(s, i, u, t, r);
76
76
  });
77
77
  });
78
78
  }
79
- function _(e, u, r) {
79
+ function S(e, u, r) {
80
80
  const o = e.querySelectorAll(".recommendation-product-row");
81
81
  if (!o.length)
82
82
  return;
83
- const [s] = o, t = s.querySelector("[data-attribute-type]"), c = t ? t.querySelectorAll(".attribute-cell").length : 1;
84
- o.forEach((n, i) => {
85
- n.querySelectorAll("[data-attribute-type]").forEach((l) => {
83
+ const [n] = o, t = n.querySelector("[data-attribute-type]"), c = t ? t.querySelectorAll(".attribute-cell").length : 1;
84
+ o.forEach((s, i) => {
85
+ s.querySelectorAll("[data-attribute-type]").forEach((l) => {
86
86
  const f = l.getAttribute("data-attribute-type") || "";
87
87
  l.querySelectorAll(".attribute-cell").forEach((y, m) => {
88
88
  const A = i * c + m;
@@ -91,11 +91,16 @@ function _(e, u, r) {
91
91
  });
92
92
  });
93
93
  }
94
- function q(e, u) {
95
- const r = e.getAttribute("data-layout") || "grid", o = e.getAttribute("currency-alignment") || "after";
96
- r === "list" ? $(e, u, o) : _(e, u, o);
94
+ function q(e, u, r) {
95
+ e.querySelectorAll(".ins-recommendation-product-container").forEach((n) => {
96
+ S(n, u, r);
97
+ });
97
98
  }
98
99
  function d(e, u) {
100
+ const r = e.getAttribute("data-layout") || "grid", o = e.getAttribute("currency-alignment") || "after";
101
+ r === "list" ? $(e, u, o) : q(e, u, o);
102
+ }
103
+ function h(e, u) {
99
104
  const r = e.match(/<!DOCTYPE[^>]*>/i);
100
105
  return (r ? `${r[0]}
101
106
  ` : "") + u.documentElement.outerHTML;
@@ -104,11 +109,11 @@ function w(e) {
104
109
  const u = e.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), r = new DOMParser().parseFromString(u, "text/html"), o = r.querySelectorAll(".ins-recommendation-v3-block-v2");
105
110
  if (!o.length)
106
111
  return e;
107
- const { buildCampaignUrl: s } = S();
112
+ const { buildCampaignUrl: n } = _();
108
113
  return o.forEach((c) => {
109
- const n = c.getAttribute("recommendation-id");
110
- n && (s(n), q(c, n));
111
- }), d(u, r).replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
114
+ const s = c.getAttribute("recommendation-id");
115
+ s && (n(s), d(c, s));
116
+ }), h(u, r).replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
112
117
  }
113
118
  export {
114
119
  b as formatPriceVariable,