@useinsider/guido 3.18.2-beta.ec25841 → 3.18.2-beta.eedafd2

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 (81) hide show
  1. package/README.md +1 -0
  2. package/dist/@types/config/schemas.js +28 -26
  3. package/dist/components/Guido.vue.js +6 -6
  4. package/dist/components/Guido.vue2.js +72 -70
  5. package/dist/components/organisms/AutoSaveController.vue2.js +9 -8
  6. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +11 -13
  7. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +52 -70
  8. package/dist/components/organisms/extensions/recommendation/RemoveStrategyModal.vue2.js +37 -23
  9. package/dist/components/organisms/header/EditorActions.vue.js +2 -2
  10. package/dist/components/organisms/header/EditorActions.vue2.js +86 -56
  11. package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
  12. package/dist/components/organisms/header/LeftSlot.vue2.js +16 -12
  13. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +18 -20
  14. package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue2.js +34 -34
  15. package/dist/components/organisms/validation/ValidationErrorDrawer.vue.js +20 -0
  16. package/dist/components/organisms/validation/ValidationErrorDrawer.vue2.js +48 -0
  17. package/dist/components/wrappers/WpDrawer.vue.js +9 -7
  18. package/dist/components/wrappers/WpDrawer.vue2.js +1 -1
  19. package/dist/composables/useCustomInterfaceAppearance.js +46 -56
  20. package/dist/composables/useHtmlCompiler.js +37 -26
  21. package/dist/composables/useHtmlValidator.js +81 -84
  22. package/dist/composables/useHttp.js +24 -22
  23. package/dist/composables/useRecommendation.js +35 -40
  24. package/dist/composables/useSave.js +90 -45
  25. package/dist/composables/useSaveValidation.js +279 -0
  26. package/dist/composables/useSaveValidationRollout.js +9 -0
  27. package/dist/composables/useStripo.js +30 -30
  28. package/dist/composables/validators/useCouponBlockValidator.js +24 -21
  29. package/dist/composables/validators/useUnsubscribeBlockValidator.js +34 -27
  30. package/dist/enums/extensions/recommendationBlock.js +31 -38
  31. package/dist/enums/save-validation.js +4 -0
  32. package/dist/extensions/Blocks/Recommendation/block.js +39 -43
  33. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +20 -21
  34. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +33 -38
  35. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +52 -84
  36. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +78 -168
  37. package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +12 -21
  38. package/dist/guido.css +1 -1
  39. package/dist/services/templateLibraryApi.js +17 -14
  40. package/dist/src/@types/config/schemas.d.ts +4 -0
  41. package/dist/src/@types/save-validation.d.ts +19 -0
  42. package/dist/src/components/Guido.vue.d.ts +17 -1
  43. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +17 -1
  44. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +17 -1
  45. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +17 -1
  46. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +4 -3
  47. package/dist/src/composables/useConfig.d.ts +2 -0
  48. package/dist/src/composables/useHtmlValidator.d.ts +21 -0
  49. package/dist/src/composables/useSave.d.ts +6 -1
  50. package/dist/src/composables/useSaveValidation.d.ts +6 -0
  51. package/dist/src/composables/useSaveValidationRollout.d.ts +3 -0
  52. package/dist/src/composables/validators/useCouponBlockValidator.d.ts +3 -0
  53. package/dist/src/composables/validators/useUnsubscribeBlockValidator.d.ts +10 -0
  54. package/dist/src/enums/extensions/recommendationBlock.d.ts +0 -2
  55. package/dist/src/enums/save-validation.d.ts +27 -0
  56. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +0 -1
  57. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
  58. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -2
  59. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +0 -9
  60. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +3 -73
  61. package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +0 -4
  62. package/dist/src/stores/config.d.ts +30 -0
  63. package/dist/src/stores/onboarding.d.ts +0 -377
  64. package/dist/src/stores/save-validation.d.ts +22 -0
  65. package/dist/src/utils/genericUtil.d.ts +6 -0
  66. package/dist/src/utils/liquidDynamicContent.d.ts +20 -0
  67. package/dist/src/utils/templatePreparation.d.ts +30 -0
  68. package/dist/static/styles/components/recommendation-strategy.css.js +4 -34
  69. package/dist/stores/config.js +39 -22
  70. package/dist/stores/onboarding.js +36 -41
  71. package/dist/stores/save-validation.js +30 -0
  72. package/dist/utils/genericUtil.js +63 -54
  73. package/dist/utils/liquidDynamicContent.js +15 -0
  74. package/dist/utils/templatePreparation.js +63 -59
  75. package/package.json +1 -1
  76. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +0 -21
  77. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +0 -47
  78. package/dist/extensions/Blocks/Recommendation/utils/strategyDetach.js +0 -19
  79. package/dist/src/extensions/Blocks/Recommendation/utils/strategyDetach.d.ts +0 -12
  80. package/dist/static/styles/components/skeleton.css.js +0 -23
  81. /package/dist/src/components/organisms/{onboarding/RecommendationStrategyOnboarding.vue.d.ts → validation/ValidationErrorDrawer.vue.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { useConfig as V } from "./useConfig.js";
2
2
  import { getIgnoredRecommendationBlockIds as M } from "../config/compiler/utils/recommendationIgnoreUtils.js";
3
3
  import { TemplateTypes as W } from "../enums/defaults.js";
4
- import { DISPLAY_CONDITIONS_REGEX as G, DISPLAY_CONDITIONS_EXCEPTIONS_REGEX as H, CampaignCouldNotBeSavedKey as K, CanNotMakeAnyChangesForRunningKey as P, DATA_ATTRIBUTE_REGEX as X, DYNAMIC_CONTENT_TAG_REGEX as Y, ALLOWED_DYNAMIC_SYSTEM_TOKENS as $, VALID_DYNAMIC_VARIABLE_REGEX as U } from "../enums/html-validator.js";
4
+ import { DISPLAY_CONDITIONS_REGEX as G, DISPLAY_CONDITIONS_EXCEPTIONS_REGEX as H, CampaignCouldNotBeSavedKey as P, CanNotMakeAnyChangesForRunningKey as X, DATA_ATTRIBUTE_REGEX as $, DYNAMIC_CONTENT_TAG_REGEX as K, ALLOWED_DYNAMIC_SYSTEM_TOKENS as Y, VALID_DYNAMIC_VARIABLE_REGEX as U } from "../enums/html-validator.js";
5
5
  import { ToasterTypeOptions as c } from "../enums/toaster.js";
6
6
  import { BLOCK_ROOT_SELECTOR as j } from "../extensions/Blocks/Checkbox/constants/selectors.js";
7
7
  import { itemsBlockDynamicVariables as q } from "../extensions/Blocks/Items/enums/productEnums.js";
@@ -9,58 +9,58 @@ import { BLOCK_ROOT_SELECTOR as z } from "../extensions/Blocks/RadioButton/const
9
9
  import { RECOMMENDATION_VARIABLE_BUILTIN_ATTRIBUTES as Z } from "../extensions/Blocks/Recommendation/constants/selectors.js";
10
10
  import { useRecommendationExtensionStore as J } from "../extensions/Blocks/Recommendation/store/recommendation.js";
11
11
  import { filterToProductAttrValue as Q } from "../extensions/Blocks/Recommendation/utils/compositionKeys.js";
12
- import { STRATEGY_FIELD_KEY as ee, RecommendationAssignStrategyKey as te, RecommendationRequiredFieldsKey as ne } from "../extensions/Blocks/Recommendation/validation/requiredFields.js";
13
- import { useRecommendationStore as se } from "../stores/recommendation.js";
14
- import { base64EncodeWithSpecialChars as re } from "../utils/base64.js";
15
- import { computed as oe } from "vue";
16
- import { useHttp as ie } from "./useHttp.js";
17
- import { useToaster as ae } from "./useToaster.js";
18
- import { useTranslations as ce } from "./useTranslations.js";
19
- const le = /recommendation-id="(\d+)"/g;
20
- function me(s) {
21
- return [...s.matchAll(le)].map((m) => m[1]);
12
+ import { RecommendationRequiredFieldsKey as ee } from "../extensions/Blocks/Recommendation/validation/requiredFields.js";
13
+ import { useRecommendationStore as te } from "../stores/recommendation.js";
14
+ import { base64EncodeWithSpecialChars as ne } from "../utils/base64.js";
15
+ import { computed as se } from "vue";
16
+ import { useHttp as re } from "./useHttp.js";
17
+ import { useToaster as oe } from "./useToaster.js";
18
+ import { useTranslations as ie } from "./useTranslations.js";
19
+ const ae = /recommendation-id="(\d+)"/g;
20
+ function ce(s) {
21
+ return [...s.matchAll(ae)].map((l) => l[1]);
22
22
  }
23
- function ue(s, m) {
24
- return m.some((f) => s.startsWith(`${f}_`));
23
+ function me(s, l) {
24
+ return l.some((f) => s.startsWith(`${f}_`));
25
25
  }
26
- const de = /^(\d+)_\d+_(.+)$/;
27
- function fe(s) {
28
- const m = s.match(de);
29
- return m ? { recoId: m[1], attribute: m[2] } : null;
26
+ const le = /^(\d+)_\d+_(.+)$/;
27
+ function ue(s) {
28
+ const l = s.match(le);
29
+ return l ? { recoId: l[1], attribute: l[2] } : null;
30
30
  }
31
- function ge(s) {
32
- const m = new Set(Z);
31
+ function de(s) {
32
+ const l = new Set(Z);
33
33
  return Object.values(s).forEach((f) => {
34
- m.add(Q(f).toLowerCase());
35
- }), m;
34
+ l.add(Q(f).toLowerCase());
35
+ }), l;
36
36
  }
37
- function pe(s, m, f, o, d) {
37
+ function fe(s, l, f, o, d) {
38
38
  const u = s.match(/{{([a-zA-Z0-9_.\s]*)}}/gm);
39
39
  if (!u)
40
40
  return [];
41
- const p = new Set(m.map((C) => C.toLowerCase())), E = [];
41
+ const g = new Set(l.map((C) => C.toLowerCase())), E = [];
42
42
  return u.forEach((C) => {
43
- const g = C.slice(2, -2).trim().toLowerCase();
44
- if (g !== "" && p.has(g))
43
+ const p = C.slice(2, -2).trim().toLowerCase();
44
+ if (p !== "" && g.has(p))
45
45
  return;
46
- const y = fe(g);
47
- if (y && o.has(y.recoId)) {
48
- if (!d || d.has(y.attribute))
46
+ const h = ue(p);
47
+ if (h && o.has(h.recoId)) {
48
+ if (!d || d.has(h.attribute))
49
49
  return;
50
- E.push(g);
50
+ E.push(p);
51
51
  return;
52
52
  }
53
- ue(g, f) || g.includes(".") || E.push(g);
53
+ me(p, f) || p.includes(".") || E.push(p);
54
54
  }), E;
55
55
  }
56
- function Ee(s) {
57
- return (s.replace(X, "$1").match(Y) ?? []).filter((o) => {
58
- const d = o.slice(2, -2), u = d.indexOf("|"), p = (u === -1 ? d : d.slice(0, u)).trim();
59
- return $.includes(p) ? !1 : U.test(p) ? u !== -1 && d.slice(u + 1).trim() === "" : !0;
56
+ function pe(s) {
57
+ return (s.replace($, "$1").match(K) ?? []).filter((o) => {
58
+ const d = o.slice(2, -2), u = d.indexOf("|"), g = (u === -1 ? d : d.slice(0, u)).trim();
59
+ return Y.includes(g) ? !1 : U.test(g) ? u !== -1 && d.slice(u + 1).trim() === "" : !0;
60
60
  });
61
61
  }
62
- const ke = () => {
63
- const { showToaster: s } = ae(), { post: m } = ie(), { config: f } = V(), o = ce(), d = se(), u = J(), p = oe(
62
+ const De = () => {
63
+ const { showToaster: s } = oe(), { post: l } = re(), { config: f } = V(), o = ie(), d = te(), u = J(), g = se(
64
64
  () => {
65
65
  var e, t;
66
66
  return ((t = (e = f.value) == null ? void 0 : e.partner) == null ? void 0 : t.messageType) === W.transactional;
@@ -73,27 +73,27 @@ const ke = () => {
73
73
  } catch {
74
74
  return null;
75
75
  }
76
- return ge(u.filterList);
76
+ return de(u.filterList);
77
77
  }, C = async (e) => {
78
- const n = await m(
78
+ const n = await l(
79
79
  "/newsletter/template-library/check-template-html-body",
80
- { html: re(e) }
80
+ { html: ne(e) }
81
81
  ), { status: r, message: a } = n.data;
82
82
  return r || s({
83
83
  type: c.Error,
84
84
  message: r === void 0 ? a : o("newsletter.invalid-url-link-for-toaster")
85
- }), o(K), a === o(P) && s({
85
+ }), o(P), a === o(X) && s({
86
86
  type: c.Error,
87
87
  message: o("newsletter.already-in-progress")
88
88
  }), r;
89
- }, g = (e) => !["if", "endif", "else", "elif", "now"].includes(e.toLowerCase()), y = (e) => ["if", "endif"].includes(e.toLowerCase()), I = (e, t) => {
89
+ }, p = (e) => !["if", "endif", "else", "elif", "now"].includes(e.toLowerCase()), h = (e) => ["if", "endif"].includes(e.toLowerCase()), T = (e, t) => {
90
90
  const n = e.match(/({%(.*?)%})/g);
91
91
  let r = !0;
92
- return n !== null && !p.value && n.forEach((a) => {
92
+ return n !== null && !g.value && n.forEach((a) => {
93
93
  const i = a.slice(2, -2).trim().match(/(".*?"|[^"\s]+)(?=\s*|\s*$)/g);
94
94
  if (i && i.length > 0) {
95
- const [l] = i;
96
- g(l) && !t.includes(l) && (s({
95
+ const [m] = i;
96
+ p(m) && !t.includes(m) && (s({
97
97
  type: c.Warning,
98
98
  message: o("custom-fields.invalid-custom-fields")
99
99
  }), r = !1);
@@ -101,11 +101,11 @@ const ke = () => {
101
101
  }), r;
102
102
  }, R = async (e, t, n) => {
103
103
  const r = n ? await C(e) : !0;
104
- return I(e, t) && r;
105
- }, A = (e) => e.length > 0 ? !0 : (s({
104
+ return T(e, t) && r;
105
+ }, b = (e) => e.length > 0 ? !0 : (s({
106
106
  type: c.Warning,
107
107
  message: o("newsletter.html-content-is-empty")
108
- }), !1), _ = (e) => {
108
+ }), !1), A = (e) => {
109
109
  const t = (e.match(/{/gm) || []).length, n = (e.match(/}/gm) || []).length;
110
110
  return t > n && s({
111
111
  type: c.Warning,
@@ -114,26 +114,26 @@ const ke = () => {
114
114
  type: c.Warning,
115
115
  message: o("custom-fields.missing-opening-braces")
116
116
  }), t === n;
117
- }, b = (e) => {
118
- const t = Ee(e).length === 0;
117
+ }, _ = (e) => {
118
+ const t = pe(e).length === 0;
119
119
  return t || s({
120
120
  type: c.Warning,
121
121
  message: o("custom-fields.invalid-custom-fields")
122
122
  }), t;
123
123
  }, O = (e, t, n, r) => {
124
- if (p.value)
124
+ if (g.value)
125
125
  return !0;
126
- const a = pe(
126
+ const a = fe(
127
127
  e,
128
128
  t,
129
- me(e),
129
+ ce(e),
130
130
  n,
131
131
  r
132
132
  );
133
133
  if (a.length > 0) {
134
134
  const i = `
135
135
  <ul>
136
- ${a.map((l) => `<li>${l}</li>`).join("")}
136
+ ${a.map((m) => `<li>${m}</li>`).join("")}
137
137
  </ul>
138
138
  `;
139
139
  return s({
@@ -146,22 +146,22 @@ const ke = () => {
146
146
  const t = e.match(/{%(.*?)%}/g), n = [];
147
147
  let r = !0;
148
148
  if (t && t.forEach((a) => {
149
- const i = a.match(G), l = a.match(H), v = (i == null ? void 0 : i.join("")) || "";
150
- (!i || a !== v) && !l && (s({
149
+ const i = a.match(G), m = a.match(H), v = (i == null ? void 0 : i.join("")) || "";
150
+ (!i || a !== v) && !m && (s({
151
151
  type: c.Error,
152
152
  message: o("newsletter.display-conditions-invalid-syntax")
153
- }), r = !1), i && i.forEach((h) => {
154
- h.trim() === "=" && (s({
153
+ }), r = !1), i && i.forEach((y) => {
154
+ y.trim() === "=" && (s({
155
155
  type: c.Error,
156
156
  message: o("custom-conditions.wrong-equality-operators")
157
157
  }), r = !1);
158
- const S = h.match(/^[a-zA-Z]*$/g);
159
- S && S.forEach((T) => {
160
- y(T) && n.push(T);
158
+ const I = y.match(/^[a-zA-Z]*$/g);
159
+ I && I.forEach((S) => {
160
+ h(S) && n.push(S);
161
161
  });
162
162
  });
163
163
  }), n.length) {
164
- const a = n.filter((l) => l === "if"), i = n.filter((l) => l === "endif");
164
+ const a = n.filter((m) => m === "if"), i = n.filter((m) => m === "endif");
165
165
  a.length !== i.length && (s({
166
166
  type: c.Error,
167
167
  message: o("custom-conditions.missing-if-endif-tag")
@@ -177,28 +177,23 @@ const ke = () => {
177
177
  }, N = (e) => (e.match(/({%(.*?)%})/g) || []).filter((n) => n.includes("if")).map((n) => (n.match(/{{.*}}/gm) || []).length).reduce((n, r) => n + r, 0) > 0 ? (s({
178
178
  type: c.Warning,
179
179
  message: o("custom-conditions.no-braces-inside-if-tag")
180
- }), !1) : !0, B = () => {
181
- if (!u.hasInvalidBlock())
182
- return !0;
183
- const e = u.invalidBlockFields().includes(ee);
184
- return s({
185
- type: e ? c.Warning : c.Error,
186
- message: o(e ? te : ne)
187
- }), !1;
188
- }, x = () => d.recommendationConfigs && Object.values(d.recommendationConfigs).find((t) => t.filters.find((n) => n.value === "")) !== void 0 ? (s({
180
+ }), !1) : !0, B = () => u.hasInvalidBlock() ? (s({
181
+ type: c.Error,
182
+ message: o(ee)
183
+ }), !1) : !0, x = () => d.recommendationConfigs && Object.values(d.recommendationConfigs).find((t) => t.filters.find((n) => n.value === "")) !== void 0 ? (s({
189
184
  type: c.Error,
190
185
  message: o("newsletter.fill-all-necessary-fields")
191
- }), !1) : !0, F = (e) => {
186
+ }), !1) : !0, D = (e) => {
192
187
  const t = /src="[^"]*\.(svg|pst)"/gm;
193
188
  return e.match(t) === null ? !0 : (s({
194
189
  type: c.Error,
195
190
  message: o("newsletter.invalid-image-type")
196
191
  }), !1);
197
- }, D = (e) => {
192
+ }, F = (e) => {
198
193
  const r = new DOMParser().parseFromString(e, "text/html").querySelectorAll(j);
199
194
  return Array.from(r).find((i) => {
200
- var l;
201
- return !((l = i.id) != null && l.trim());
195
+ var m;
196
+ return !((m = i.id) != null && m.trim());
202
197
  }) ? (s({
203
198
  type: c.Error,
204
199
  message: o("unsubscribe-templates.select-checkbox-groups")
@@ -206,26 +201,28 @@ const ke = () => {
206
201
  }, k = (e) => {
207
202
  const r = new DOMParser().parseFromString(e, "text/html").querySelectorAll(z);
208
203
  return Array.from(r).find((i) => {
209
- var l;
210
- return !((l = i.id) != null && l.trim());
204
+ var m;
205
+ return !((m = i.id) != null && m.trim());
211
206
  }) ? (s({
212
207
  type: c.Error,
213
208
  message: o("unsubscribe-templates.select-radio-button-groups")
214
209
  }), !1) : !0;
215
210
  };
216
211
  return { validateHtml: async (e, t, n = !1) => {
217
- var v, h;
212
+ var v, y;
218
213
  const r = [
219
- ...t.map((S) => S.value),
214
+ ...t.map((I) => I.value),
220
215
  ...q,
221
- ...((h = (v = f.value) == null ? void 0 : v.template) == null ? void 0 : h.customFieldAttributes) ?? []
216
+ ...((y = (v = f.value) == null ? void 0 : v.template) == null ? void 0 : y.customFieldAttributes) ?? []
222
217
  ], a = M(e), i = await E(a);
223
- return await R(e, r, n) && A(e) && _(e) && b(e) && O(e, r, a, i) && w(e) && L(e) && N(e) && B() && x() && F(e) && D(e) && k(e);
218
+ return await R(e, r, n) && b(e) && A(e) && _(e) && O(e, r, a, i) && w(e) && L(e) && N(e) && B() && x() && D(e) && F(e) && k(e);
224
219
  } };
225
220
  };
226
221
  export {
227
- ge as buildPartnerAttributeNameSet,
228
- pe as findInvalidCustomFields,
229
- fe as parseRecommendationVariable,
230
- ke as useHtmlValidator
222
+ de as buildPartnerAttributeNameSet,
223
+ fe as findInvalidCustomFields,
224
+ pe as getInvalidDynamicContentTags,
225
+ ce as getRecommendationBlockIds,
226
+ ue as parseRecommendationVariable,
227
+ De as useHtmlValidator
231
228
  };
@@ -1,14 +1,16 @@
1
- import { getCsrfToken as H } from "../utils/genericUtil.js";
2
- import { ref as p, computed as T } from "vue";
3
- const k = (b = {}) => {
4
- const h = p(!1), a = p(null), u = p(null), g = T(() => h.value), y = T(() => a.value !== null), v = {
1
+ import { getCsrfToken as O } from "../utils/genericUtil.js";
2
+ import { ref as m, computed as T } from "vue";
3
+ const X = (b = {}) => {
4
+ const p = m(!1), a = m(null), u = m(null), g = T(() => p.value), y = T(() => a.value !== null), v = {
5
5
  baseURL: "",
6
6
  timeout: 1e4,
7
7
  retry: 0,
8
8
  retryDelay: 1e3,
9
9
  headers: {
10
10
  "Content-Type": "application/json",
11
- "X-CSRF-TOKEN": H()
11
+ "X-CSRF-TOKEN": O(),
12
+ Accept: "application/json",
13
+ "X-Requested-With": "XMLHttpRequest"
12
14
  },
13
15
  ...b
14
16
  }, w = (e, s) => {
@@ -22,22 +24,22 @@ const k = (b = {}) => {
22
24
  }, e);
23
25
  }), x = (e) => new Promise((s) => {
24
26
  setTimeout(s, e);
25
- }), i = async (e, s, t, D = {}) => {
26
- a.value = null, h.value = !0, u.value = new AbortController();
27
- const n = { ...v, ...D }, L = w(s, n.baseURL), c = {
27
+ }), i = async (e, s, t, L = {}) => {
28
+ a.value = null, p.value = !0, u.value = new AbortController();
29
+ const n = { ...v, ...L }, D = w(s, n.baseURL), c = {
28
30
  method: e,
29
31
  headers: { ...n.headers },
30
32
  signal: u.value.signal,
31
33
  ...n
32
34
  };
33
35
  t && ["POST", "PUT", "PATCH"].includes(e) && (t instanceof FormData ? (delete c.headers["Content-Type"], c.body = t) : c.body = JSON.stringify(t));
34
- const E = async (m = 0) => {
36
+ const E = async (h = 0) => {
35
37
  try {
36
- const o = [fetch(L, c)];
38
+ const o = [fetch(D, c)];
37
39
  n.timeout && o.push(P(n.timeout));
38
40
  const r = await Promise.race(o);
39
41
  if (!r.ok) {
40
- const O = `HTTP Error: ${r.status} ${r.statusText}`, d = new Error(O);
42
+ const H = `HTTP Error: ${r.status} ${r.statusText}`, d = new Error(H);
41
43
  throw d.status = r.status, d.statusText = r.statusText, d.response = r, d;
42
44
  }
43
45
  let f;
@@ -50,19 +52,19 @@ const k = (b = {}) => {
50
52
  };
51
53
  } catch (o) {
52
54
  const r = o instanceof Error && o.name === "AbortError";
53
- if (m < (n.retry || 0) && !r)
54
- return await x(n.retryDelay || 1e3), E(m + 1);
55
+ if (h < (n.retry || 0) && !r)
56
+ return await x(n.retryDelay || 1e3), E(h + 1);
55
57
  throw o instanceof Error ? o.name === "AbortError" ? a.value = { message: "Request was cancelled" } : a.value = { message: o.message } : a.value = o, o;
56
58
  }
57
59
  };
58
60
  try {
59
61
  return await E();
60
62
  } finally {
61
- h.value = !1, u.value = null;
63
+ p.value = !1, u.value = null;
62
64
  }
63
- }, C = (e, s) => i("GET", e, void 0, s), $ = (e, s, t) => i("POST", e, s, t), R = (e, s, t) => i("PUT", e, s, t), U = (e, s, t) => i("PATCH", e, s, t), A = (e, s) => i("DELETE", e, void 0, s), W = (e) => {
65
+ }, C = (e, s) => i("GET", e, void 0, s), R = (e, s, t) => i("POST", e, s, t), $ = (e, s, t) => i("PUT", e, s, t), q = (e, s, t) => i("PATCH", e, s, t), A = (e, s) => i("DELETE", e, void 0, s), U = (e) => {
64
66
  u.value && u.value.abort(e);
65
- }, q = () => {
67
+ }, W = () => {
66
68
  a.value = null;
67
69
  };
68
70
  return {
@@ -73,14 +75,14 @@ const k = (b = {}) => {
73
75
  // Methods
74
76
  request: i,
75
77
  get: C,
76
- post: $,
77
- put: R,
78
- patch: U,
78
+ post: R,
79
+ put: $,
80
+ patch: q,
79
81
  delete: A,
80
- cancel: W,
81
- clearError: q
82
+ cancel: U,
83
+ clearError: W
82
84
  };
83
85
  };
84
86
  export {
85
- k as useHttp
87
+ X as useHttp
86
88
  };
@@ -1,23 +1,23 @@
1
1
  import { getRecommendationFeedSourceMaps as y, URLS as I } from "../enums/extensions/recommendationBlock.js";
2
2
  import { MinDeviceViewport as C, DefaultPadding as R } from "../enums/recommendation.js";
3
- import { useRecommendationExtensionStore as g } from "../extensions/Blocks/Recommendation/store/recommendation.js";
3
+ import { useRecommendationExtensionStore as l } from "../extensions/Blocks/Recommendation/store/recommendation.js";
4
4
  import { generateCompleteFilterQuery as b } from "../extensions/Blocks/Recommendation/utils/filterUtil.js";
5
5
  import { getPartnerRecommendationParams as h } from "../extensions/Blocks/Recommendation/utils/partnerCustomizations.js";
6
6
  import { sanitizeProductIds as x } from "../extensions/Blocks/Recommendation/utils/productIds.js";
7
7
  import { useConfigStore as P } from "../stores/config.js";
8
8
  const B = () => ({
9
9
  calculateCardWidth: ({
10
- mobileLeftPadding: s,
10
+ mobileLeftPadding: i,
11
11
  mobileRightPadding: c,
12
- cardsInRow: o,
13
- unresponsive: a
12
+ cardsInRow: s,
13
+ unresponsive: n
14
14
  }) => {
15
- const i = a ? o : 1, e = s + c + (i - 1) * R;
16
- return (C - e) / i;
15
+ const o = n ? s : 1, e = i + c + (o - 1) * R;
16
+ return (C - e) / o;
17
17
  },
18
- getRecommendationCampaignData: (s) => {
19
- const c = g(), o = Number(s), a = c.blockStates[o];
20
- if (!a)
18
+ getRecommendationCampaignData: (i) => {
19
+ const c = l(), s = Number(i), n = c.blockStates[s];
20
+ if (!n)
21
21
  return {
22
22
  textTrimming: !1,
23
23
  orientation: "vertical",
@@ -30,59 +30,54 @@ const B = () => ({
30
30
  discountBeforeTextValue: "",
31
31
  discountAfterTextValue: ""
32
32
  };
33
- const { recommendationConfigs: i } = a, e = i.orientation === "grid" ? "vertical" : "horizontal";
33
+ const { recommendationConfigs: o } = n, e = o.orientation === "grid" ? "vertical" : "horizontal";
34
34
  return {
35
- textTrimming: i.textTrimming,
35
+ textTrimming: o.textTrimming,
36
36
  orientation: e,
37
37
  mobileLeftPadding: 0,
38
38
  mobileRightPadding: 0,
39
- cardsInRow: i.cardsInRow,
40
- unresponsive: i.unresponsive,
39
+ cardsInRow: o.cardsInRow,
40
+ unresponsive: o.unresponsive,
41
41
  priceBeforeTextValue: "",
42
42
  priceAfterTextValue: "",
43
43
  discountBeforeTextValue: "",
44
44
  discountAfterTextValue: ""
45
45
  };
46
46
  },
47
- buildCampaignUrl: (s, c) => {
48
- var l;
49
- const o = g(), a = P(), i = Number(s);
47
+ buildCampaignUrl: (i, c) => {
48
+ var m;
49
+ const s = l(), n = P(), o = Number(i);
50
50
  let e;
51
51
  if (c)
52
52
  e = c;
53
53
  else {
54
- const r = o.blockStates[i];
55
- if (!r)
54
+ const a = s.blockStates[o];
55
+ if (!a)
56
56
  return "";
57
- const { recommendationConfigs: n } = r;
57
+ const { recommendationConfigs: r } = a;
58
58
  e = {
59
- strategy: n.strategy,
60
- strategyId: n.strategyId,
61
- language: n.language,
62
- currencyCode: n.currencySettings.value,
63
- size: n.size,
64
- productIds: n.productIds,
65
- filters: n.filters,
66
- shuffleProducts: n.shuffleProducts
59
+ strategy: r.strategy,
60
+ strategyId: r.strategyId,
61
+ language: r.language,
62
+ currencyCode: r.currencySettings.value,
63
+ size: r.size,
64
+ productIds: r.productIds,
65
+ filters: r.filters,
66
+ shuffleProducts: r.shuffleProducts
67
67
  };
68
68
  }
69
- if (e.strategyId && a.isFeatureEnabled("reusableRecommendationStrategy"))
70
- return o.recommendationCampaignUrls[s] = {
69
+ if (e.strategyId && n.isFeatureEnabled("reusableRecommendationStrategy"))
70
+ return s.recommendationCampaignUrls[i] = {
71
71
  strategyId: e.strategyId,
72
72
  locale: e.language,
73
73
  currency: e.currencyCode
74
74
  }, "";
75
- const d = ((l = y().find((r) => r.key === e.strategy)) == null ? void 0 : l.path) || "";
76
- if (!d) {
77
- const r = { ...o.recommendationCampaignUrls };
78
- return delete r[s], o.recommendationCampaignUrls = r, "";
79
- }
80
- const t = new URLSearchParams();
81
- t.set("locale", e.language), t.set("currency", e.currencyCode), t.set("partnerName", a.partnerName), t.set("size", e.size), t.set("details", "true"), t.set("campaignId", a.variationId), e.strategy === "manualMerchandising" ? t.set("productId", x(e.productIds)) : e.strategy === "similarViewed" && t.set("productId", "{itemId}"), e.strategy === "userBased" && t.set("userId", "{user_id}");
82
- const f = e.filters.filter((r) => r.isValid), m = b(f);
83
- m && t.set("filter", m), e.shuffleProducts && t.set("shuffle", "true"), Object.entries(h(a.partnerName, e.strategy)).forEach(([r, n]) => t.set(r, n));
84
- const p = decodeURIComponent(t.toString()), u = `${I.RECOMMENDATION_API_URL}/v2/${d}?${p}`;
85
- return o.recommendationCampaignUrls[s] = u, u;
75
+ const g = ((m = y().find((a) => a.key === e.strategy)) == null ? void 0 : m.path) || "", t = new URLSearchParams();
76
+ t.set("locale", e.language), t.set("currency", e.currencyCode), t.set("partnerName", n.partnerName), t.set("size", e.size), t.set("details", "true"), t.set("campaignId", n.variationId), e.strategy === "manualMerchandising" ? t.set("productId", x(e.productIds)) : e.strategy === "similarViewed" && t.set("productId", "{itemId}"), e.strategy === "userBased" && t.set("userId", "{user_id}");
77
+ const f = e.filters.filter((a) => a.isValid), d = b(f);
78
+ d && t.set("filter", d), e.shuffleProducts && t.set("shuffle", "true"), Object.entries(h(n.partnerName, e.strategy)).forEach(([a, r]) => t.set(a, r));
79
+ const p = decodeURIComponent(t.toString()), u = `${I.RECOMMENDATION_API_URL}/v2/${g}?${p}`;
80
+ return s.recommendationCampaignUrls[i] = u, u;
86
81
  }
87
82
  });
88
83
  export {