@useinsider/guido 3.19.0 → 3.20.0-beta.7b31fec

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 +21 -3
  2. package/dist/@types/config/schemas.js +59 -51
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +70 -68
  5. package/dist/components/organisms/base/Toaster.vue2.js +13 -12
  6. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +13 -11
  7. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +78 -57
  8. package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js +18 -0
  9. package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue2.js +25 -0
  10. package/dist/components/organisms/extensions/recommendation/RemoveStrategyModal.vue2.js +28 -42
  11. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +28 -24
  12. package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.js +21 -0
  13. package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue2.js +46 -0
  14. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +21 -0
  15. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +47 -0
  16. package/dist/composables/useCustomInterfaceAppearance.js +65 -51
  17. package/dist/composables/useHtmlValidator.js +87 -82
  18. package/dist/composables/useLegacyStrategyConversion.js +61 -0
  19. package/dist/composables/useRecommendation.js +40 -35
  20. package/dist/composables/useStripo.js +30 -30
  21. package/dist/composables/useToaster.js +14 -20
  22. package/dist/enums/extensions/recommendationBlock.js +49 -33
  23. package/dist/extensions/Blocks/Recommendation/block.js +61 -42
  24. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +21 -20
  25. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +100 -94
  26. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +130 -55
  27. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +74 -74
  28. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +273 -92
  29. package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.js +42 -0
  30. package/dist/extensions/Blocks/Recommendation/utils/nodeConfigWriter.js +26 -16
  31. package/dist/extensions/Blocks/Recommendation/utils/strategyCommit.js +24 -0
  32. package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +21 -12
  33. package/dist/guido.css +1 -1
  34. package/dist/services/recommendationApi.js +46 -37
  35. package/dist/src/@types/config/schemas.d.ts +16 -0
  36. package/dist/src/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.d.ts +2 -0
  37. package/dist/src/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.d.ts +2 -0
  38. package/dist/src/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.d.ts +2 -0
  39. package/dist/src/composables/useConfig.d.ts +4 -0
  40. package/dist/src/composables/useLegacyStrategyConversion.d.ts +3 -0
  41. package/dist/src/enums/extensions/recommendationBlock.d.ts +7 -1
  42. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +10 -0
  43. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +1 -0
  44. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
  45. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +2 -0
  46. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +10 -0
  47. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +7 -2
  48. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +162 -1
  49. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.d.ts +32 -0
  50. package/dist/src/extensions/Blocks/Recommendation/utils/strategyCommit.d.ts +14 -0
  51. package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +4 -0
  52. package/dist/src/services/recommendationApi.d.ts +2 -1
  53. package/dist/src/stores/config.d.ts +322 -0
  54. package/dist/src/stores/onboarding.d.ts +808 -10
  55. package/dist/static/assets/icons/filled-arrow-rising.svg.js +5 -0
  56. package/dist/static/assets/icons/line-info.svg.js +5 -0
  57. package/dist/static/styles/components/recommendation-strategy.css.js +104 -9
  58. package/dist/static/styles/components/skeleton.css.js +23 -0
  59. package/dist/stores/config.js +74 -60
  60. package/dist/stores/onboarding.js +46 -36
  61. package/dist/utils/templatePreparation.js +55 -55
  62. package/package.json +1 -1
@@ -87,21 +87,21 @@ function j(e, t = {}) {
87
87
  documentModifier: o,
88
88
  products: r,
89
89
  layout: s,
90
- composition: i
90
+ composition: l
91
91
  } = e;
92
92
  if (!n || !("querySelector" in n))
93
93
  return !1;
94
- const u = s ?? P(n), l = y.getConfig(n);
95
- if (u === "list" || !l.mobileLayoutEnabled)
94
+ const u = s ?? P(n), i = y.getConfig(n);
95
+ if (u === "list" || !i.mobileLayoutEnabled)
96
96
  return te({ currentNode: n, documentModifier: o });
97
- const c = A(), a = $(r, c.recommendationProducts), f = i ?? U(n, c.filterList), p = `<td><table class="ins-recommendation-product-container ins-recommendation-mobile-container" width="100%" cellpadding="0" cellspacing="0" border="0">${k(a, u, {
98
- productsPerRow: l.mobileCardsInRow,
97
+ const c = A(), a = $(r, c.recommendationProducts), f = l ?? U(n, c.filterList), p = `<td><table class="ins-recommendation-product-container ins-recommendation-mobile-container" width="100%" cellpadding="0" cellspacing="0" border="0">${k(a, u, {
98
+ productsPerRow: i.mobileCardsInRow,
99
99
  composition: f,
100
100
  filterList: c.filterList,
101
- priceInline: !l.priceMovedToNextLine,
101
+ priceInline: !i.priceMovedToNextLine,
102
102
  // Match the initial render's gutter so a regeneration never changes block height (SD-143023, #386).
103
- cellPadding: v(l.mobileColumnSpacing),
104
- rowSpacingPx: l.mobileRowSpacing,
103
+ cellPadding: v(i.mobileColumnSpacing),
104
+ rowSpacingPx: i.mobileRowSpacing,
105
105
  ...t
106
106
  })}</table></td>`, E = n.querySelector(w);
107
107
  return E ? (o.modifyHtml(E).setInnerHtml(p), !0) : (re(n, o, p), !1);
@@ -115,17 +115,17 @@ function ie(e, t = {}) {
115
115
  documentModifier: o,
116
116
  products: r,
117
117
  layout: s,
118
- composition: i
118
+ composition: l
119
119
  } = e;
120
120
  if (!n || !("querySelector" in n))
121
121
  return !1;
122
122
  const u = n.querySelector(L) ?? n.querySelector(W);
123
123
  if (!u)
124
124
  return !1;
125
- const l = A(), c = $(r, l.recommendationProducts), { cardsInRow: a } = y.getConfig(n), f = i ?? U(n, l.filterList), d = s ?? P(n), p = y.getConfig(n), E = k(c, d, {
125
+ const i = A(), c = $(r, i.recommendationProducts), { cardsInRow: a } = y.getConfig(n), f = l ?? U(n, i.filterList), d = s ?? P(n), p = y.getConfig(n), E = k(c, d, {
126
126
  productsPerRow: a,
127
127
  composition: f,
128
- filterList: l.filterList,
128
+ filterList: i.filterList,
129
129
  priceInline: !p.priceMovedToNextLine,
130
130
  // Match the initial render's gutter so a regeneration never changes block height (SD-143023, #386).
131
131
  cellPadding: v(p.columnSpacing),
@@ -151,14 +151,14 @@ function ce(e, t, n) {
151
151
  const r = o.getAttribute(R);
152
152
  if (!r)
153
153
  return !1;
154
- const s = A(), i = r.split(",").filter(Boolean), u = D(i, o, s.filterList), l = [], c = u.join(",") !== i.join(",");
155
- c && l.push([R, u.join(",")]);
154
+ const s = A(), l = r.split(",").filter(Boolean), u = D(l, o, s.filterList), i = [], c = u.join(",") !== l.join(",");
155
+ c && i.push([R, u.join(",")]);
156
156
  const a = le(
157
157
  o.getAttribute(q)
158
158
  ), f = a && z(a, o, s.filterList);
159
- if (a && f && f.join(",") !== a.join(",") && l.push([q, JSON.stringify(f)]), l.length === 0)
159
+ if (a && f && f.join(",") !== a.join(",") && i.push([q, JSON.stringify(f)]), i.length === 0)
160
160
  return !1;
161
- if (l.forEach(([d, p]) => {
161
+ if (i.forEach(([d, p]) => {
162
162
  t.modifyHtml(o).setAttribute(d, p);
163
163
  }), c && y.hasConfig(e)) {
164
164
  const d = {
@@ -176,20 +176,20 @@ function Te(e) {
176
176
  afterRegenerate: o,
177
177
  products: r,
178
178
  layout: s,
179
- composition: i,
179
+ composition: l,
180
180
  skipStylePreservation: u
181
181
  } = e;
182
182
  if (!t)
183
- return;
184
- const l = u ? {} : x(t), c = {
183
+ return !1;
184
+ const i = u ? {} : x(t), c = {
185
185
  currentNode: t,
186
186
  documentModifier: n,
187
187
  products: r,
188
188
  layout: s,
189
- composition: i
189
+ composition: l
190
190
  };
191
- let a = ie(c, l);
192
- a = j(c, l) || a, a && (ce(t, n, i), n.apply(new S("Regenerate products with styles"))), o == null || o();
191
+ let a = ie(c, i);
192
+ return a = j(c, i) || a, a && (ce(t, n, l), n.apply(new S("Regenerate products with styles"))), o == null || o(), a;
193
193
  }
194
194
  function Re(e, t) {
195
195
  return e.length === t ? e : e.length > t ? e.slice(0, t) : [...e, ...H(t - e.length)];
@@ -213,28 +213,28 @@ function T(e, t = "price") {
213
213
  });
214
214
  }
215
215
  function ue(e) {
216
- var s, i;
217
- const t = F(), n = ((s = e.original_price) == null ? void 0 : s[t.code]) ?? Object.values(e.original_price ?? {})[0] ?? 0, o = ((i = e.price) == null ? void 0 : i[t.code]) ?? Object.values(e.price ?? {})[0] ?? 0, r = n > 0 ? Math.round((n - o) / n * 100) : 0;
216
+ var s, l;
217
+ const t = F(), n = ((s = e.original_price) == null ? void 0 : s[t.code]) ?? Object.values(e.original_price ?? {})[0] ?? 0, o = ((l = e.price) == null ? void 0 : l[t.code]) ?? Object.values(e.price ?? {})[0] ?? 0, r = n > 0 ? Math.round((n - o) / n * 100) : 0;
218
218
  return r > 0 ? `-${r}%` : "0%";
219
219
  }
220
220
  function K(e) {
221
- const { documentModifier: t, product: n, priceEl: o, oldPriceEl: r, omnibusPriceEl: s, omnibusDiscountEl: i } = e;
221
+ const { documentModifier: t, product: n, priceEl: o, oldPriceEl: r, omnibusPriceEl: s, omnibusDiscountEl: l } = e;
222
222
  let u = !1;
223
223
  if (o && "querySelector" in o) {
224
- const l = o.querySelector("strong") ?? o.querySelector("p"), c = T(n, "price");
225
- b(t, l ?? null, c) && (u = !0);
224
+ const i = o.querySelector("strong") ?? o.querySelector("p"), c = T(n, "price");
225
+ b(t, i ?? null, c) && (u = !0);
226
226
  }
227
227
  if (r && "querySelector" in r) {
228
- const l = r.querySelector("strong") ?? r.querySelector("p"), c = T(n, "original_price");
229
- b(t, l ?? null, c) && (u = !0), t.modifyHtml(r).setAttribute("data-same-price", String(Q(n))), u = !0;
228
+ const i = r.querySelector("strong") ?? r.querySelector("p"), c = T(n, "original_price");
229
+ b(t, i ?? null, c) && (u = !0), t.modifyHtml(r).setAttribute("data-same-price", String(Q(n))), u = !0;
230
230
  }
231
231
  if (s && "querySelector" in s) {
232
- const l = s.querySelector(".omnibus-price-value") ?? null, c = T(n, "original_price");
233
- b(t, l, c) && (u = !0);
232
+ const i = s.querySelector(".omnibus-price-value") ?? null, c = T(n, "original_price");
233
+ b(t, i, c) && (u = !0);
234
234
  }
235
- if (i && "querySelector" in i) {
236
- const l = i.querySelector(".omnibus-discount-value") ?? null, c = ue(n);
237
- b(t, l, c) && (u = !0);
235
+ if (l && "querySelector" in l) {
236
+ const i = l.querySelector(".omnibus-discount-value") ?? null, c = ue(n);
237
+ b(t, i, c) && (u = !0);
238
238
  }
239
239
  return u;
240
240
  }
@@ -245,9 +245,9 @@ function se(e) {
245
245
  imageEl: o,
246
246
  nameEl: r,
247
247
  priceEl: s,
248
- oldPriceEl: i,
248
+ oldPriceEl: l,
249
249
  omnibusPriceEl: u,
250
- omnibusDiscountEl: l,
250
+ omnibusDiscountEl: i,
251
251
  buttonEl: c
252
252
  } = e;
253
253
  let a = !1;
@@ -265,9 +265,9 @@ function se(e) {
265
265
  documentModifier: t,
266
266
  product: n,
267
267
  priceEl: s,
268
- oldPriceEl: i,
268
+ oldPriceEl: l,
269
269
  omnibusPriceEl: u,
270
- omnibusDiscountEl: l
270
+ omnibusDiscountEl: i
271
271
  }) && (a = !0), c && "querySelector" in c) {
272
272
  const f = c.querySelector("a.es-button") || c.querySelector("a");
273
273
  f && (t.modifyHtml(f).setAttribute("href", n.url), a = !0);
@@ -296,19 +296,19 @@ function fe(e, t, n) {
296
296
  if (o.length === 0)
297
297
  return !1;
298
298
  const r = /* @__PURE__ */ new Map();
299
- o.forEach((i) => {
300
- if (!("getAttribute" in i))
299
+ o.forEach((l) => {
300
+ if (!("getAttribute" in l))
301
301
  return;
302
- const u = i.getAttribute(Y);
302
+ const u = l.getAttribute(Y);
303
303
  if (!u)
304
304
  return;
305
- const l = r.get(u) ?? [];
306
- l.push(i), r.set(u, l);
305
+ const i = r.get(u) ?? [];
306
+ i.push(l), r.set(u, i);
307
307
  });
308
308
  let s = !1;
309
- return r.forEach((i, u) => {
310
- const l = Math.min(i.length, n.length);
311
- i.slice(0, l).forEach((c, a) => {
309
+ return r.forEach((l, u) => {
310
+ const i = Math.min(l.length, n.length);
311
+ l.slice(0, i).forEach((c, a) => {
312
312
  if (!("querySelector" in c))
313
313
  return;
314
314
  const f = ae(u, n[a]);
@@ -328,11 +328,11 @@ function O(e, t, n) {
328
328
  `[esd-extension-block-id="${m.NAME}"]`
329
329
  ), s = e.querySelectorAll(
330
330
  `[esd-extension-block-id="${m.PRICE}"]`
331
- ), i = e.querySelectorAll(
331
+ ), l = e.querySelectorAll(
332
332
  `[esd-extension-block-id="${m.OLD_PRICE}"]`
333
333
  ), u = e.querySelectorAll(
334
334
  `[esd-extension-block-id="${m.OMNIBUS_PRICE}"]`
335
- ), l = e.querySelectorAll(
335
+ ), i = e.querySelectorAll(
336
336
  `[esd-extension-block-id="${m.OMNIBUS_DISCOUNT}"]`
337
337
  ), c = e.querySelectorAll(
338
338
  `[esd-extension-block-id="${m.BUTTON}"]`
@@ -345,9 +345,9 @@ function O(e, t, n) {
345
345
  imageEl: o[d] ?? null,
346
346
  nameEl: r[d] ?? null,
347
347
  priceEl: s[d] ?? null,
348
- oldPriceEl: i[d] ?? null,
348
+ oldPriceEl: l[d] ?? null,
349
349
  omnibusPriceEl: u[d] ?? null,
350
- omnibusDiscountEl: l[d] ?? null,
350
+ omnibusDiscountEl: i[d] ?? null,
351
351
  buttonEl: c[d] ?? null
352
352
  });
353
353
  f = f || p;
@@ -355,28 +355,28 @@ function O(e, t, n) {
355
355
  return fe(e, t, n) && (f = !0), f;
356
356
  }
357
357
  function qe(e) {
358
- const { currentNode: t, documentModifier: n, products: o } = e;
358
+ const { currentNode: t, documentModifier: n, products: o, onApplied: r } = e;
359
359
  if (!t || !("querySelectorAll" in t))
360
360
  return !1;
361
- const r = V(t);
362
- if (!("querySelectorAll" in r) || r.querySelectorAll(
361
+ const s = V(t);
362
+ if (!("querySelectorAll" in s) || s.querySelectorAll(
363
363
  `[esd-extension-block-id="${m.IMAGE}"]`
364
364
  ).length !== o.length)
365
365
  return !1;
366
- let i = O(r, n, o);
367
- const u = P(t), l = y.getConfig(t);
368
- if (u !== "list" && l.mobileLayoutEnabled && "querySelector" in t) {
369
- const c = t.querySelector(N);
370
- if (c) {
371
- const a = O(
372
- c,
366
+ let u = O(s, n, o);
367
+ const i = P(t), c = y.getConfig(t);
368
+ if (i !== "list" && c.mobileLayoutEnabled && "querySelector" in t) {
369
+ const a = t.querySelector(N);
370
+ if (a) {
371
+ const f = O(
372
+ a,
373
373
  n,
374
374
  o
375
375
  );
376
- i = i || a;
376
+ u = u || f;
377
377
  }
378
378
  }
379
- return i && n.apply(new S("Updated product content in-place")), !0;
379
+ return u && (n.apply(new S("Updated product content in-place")), r == null || r()), !0;
380
380
  }
381
381
  function _(e, t, n) {
382
382
  if (!("querySelectorAll" in e))
@@ -387,10 +387,10 @@ function _(e, t, n) {
387
387
  `[esd-extension-block-id="${m.OLD_PRICE}"]`
388
388
  ), s = e.querySelectorAll(
389
389
  `[esd-extension-block-id="${m.OMNIBUS_PRICE}"]`
390
- ), i = e.querySelectorAll(
390
+ ), l = e.querySelectorAll(
391
391
  `[esd-extension-block-id="${m.OMNIBUS_DISCOUNT}"]`
392
392
  ), u = Math.min(o.length, n.length);
393
- let l = !1;
393
+ let i = !1;
394
394
  for (let c = 0; c < u; c++)
395
395
  K({
396
396
  documentModifier: t,
@@ -398,9 +398,9 @@ function _(e, t, n) {
398
398
  priceEl: o[c] ?? null,
399
399
  oldPriceEl: r[c] ?? null,
400
400
  omnibusPriceEl: s[c] ?? null,
401
- omnibusDiscountEl: i[c] ?? null
402
- }) && (l = !0);
403
- return l;
401
+ omnibusDiscountEl: l[c] ?? null
402
+ }) && (i = !0);
403
+ return i;
404
404
  }
405
405
  function Me(e) {
406
406
  const { currentNode: t, documentModifier: n } = e;
@@ -412,25 +412,25 @@ function Me(e) {
412
412
  if (r.length === 0)
413
413
  return !1;
414
414
  const s = V(t);
415
- let i = _(s, n, r);
416
- const u = P(t), l = y.getConfig(t);
417
- if (u !== "list" && l.mobileLayoutEnabled && "querySelector" in t) {
415
+ let l = _(s, n, r);
416
+ const u = P(t), i = y.getConfig(t);
417
+ if (u !== "list" && i.mobileLayoutEnabled && "querySelector" in t) {
418
418
  const c = t.querySelector(N);
419
419
  if (c) {
420
420
  const a = _(c, n, r);
421
- i = i || a;
421
+ l = l || a;
422
422
  }
423
423
  }
424
- return i && n.apply(new S("Updated price formatting in-place")), i;
424
+ return l && n.apply(new S("Updated price formatting in-place")), l;
425
425
  }
426
426
  function he(e) {
427
427
  const { currentNode: t, documentModifier: n, currency: o } = e, r = C(t);
428
428
  if (!r)
429
429
  return;
430
- const s = o.alignment === "before" ? "0" : "1", i = (u, l) => {
431
- n.modifyHtml(r).setAttribute(u, l);
430
+ const s = o.alignment === "before" ? "0" : "1", l = (u, i) => {
431
+ n.modifyHtml(r).setAttribute(u, i);
432
432
  };
433
- i(g.CURRENCY, o.code), i(g.SYMBOL, o.symbol), i(g.ALIGNMENT, s), i(g.THOUSAND_SEPARATOR, o.thousandSeparator), i(g.DECIMAL_SEPARATOR, o.decimalSeparator), i(g.DECIMAL_COUNT, o.decimalCount.toString()), n.apply(new S("Update currency attributes"));
433
+ l(g.CURRENCY, o.code), l(g.SYMBOL, o.symbol), l(g.ALIGNMENT, s), l(g.THOUSAND_SEPARATOR, o.thousandSeparator), l(g.DECIMAL_SEPARATOR, o.decimalSeparator), l(g.DECIMAL_COUNT, o.decimalCount.toString()), n.apply(new S("Update currency attributes"));
434
434
  }
435
435
  export {
436
436
  Re as adjustProductsToSize,