@useinsider/guido 3.16.0 → 3.17.0-beta.3e9d6e7

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 (88) hide show
  1. package/README.md +1 -0
  2. package/dist/@types/config/schemas.js +12 -6
  3. package/dist/components/Guido.vue.js +6 -6
  4. package/dist/components/Guido.vue2.js +63 -61
  5. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +18 -0
  6. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +67 -0
  7. package/dist/components/organisms/extensions/recommendation/StrategyInfoBox.vue.js +20 -0
  8. package/dist/components/organisms/extensions/recommendation/StrategyInfoBox.vue2.js +55 -0
  9. package/dist/composables/useCustomInterfaceAppearance.js +19 -16
  10. package/dist/composables/useRecommendation.js +43 -35
  11. package/dist/composables/useStripo.js +30 -29
  12. package/dist/config/migrator/itemsBlockMigrator.js +1 -1
  13. package/dist/config/migrator/recommendationMigrator.js +6 -4
  14. package/dist/enums/date.js +4 -3
  15. package/dist/enums/extensions/recommendationBlock.js +25 -23
  16. package/dist/enums/recommendation.js +17 -17
  17. package/dist/extensions/Blocks/Items/enums/productEnums.js +45 -45
  18. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +13 -11
  19. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +37 -26
  20. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +115 -87
  21. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +132 -0
  22. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +198 -51
  23. package/dist/extensions/Blocks/Recommendation/utils/productIds.js +6 -0
  24. package/dist/extensions/Blocks/common-control.js +22 -19
  25. package/dist/guido.css +1 -1
  26. package/dist/node_modules/@useinsider/design-system-organisms/dist/index-Dc9AygoZ.js +526 -0
  27. package/dist/node_modules/@useinsider/design-system-organisms/dist/index.js +9345 -0
  28. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InAccordion.js +174 -0
  29. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InBasicTextInput.js +381 -0
  30. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InBox.js +236 -0
  31. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InBulkActions.js +70 -0
  32. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InButton.js +350 -0
  33. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InButtonV2.js +371 -0
  34. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InCheckBox.js +152 -0
  35. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InChips.js +141 -0
  36. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InCustomDropDown.js +1047 -0
  37. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InDataTableV2.js +96050 -0
  38. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InDatePicker.js +2042 -0
  39. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InDrawer.js +166 -0
  40. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InDropDown.js +1098 -0
  41. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InIcons.js +55 -0
  42. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InInfoBox.js +265 -0
  43. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InLinks.js +184 -0
  44. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InLoading.js +50 -0
  45. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InModals.js +453 -0
  46. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InNoData.js +145 -0
  47. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InOnPageMessage.js +176 -0
  48. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InProgress.js +266 -0
  49. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InRadioButton.js +114 -0
  50. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InSegments.js +200 -0
  51. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InSelect.js +451 -0
  52. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InSkeleton.js +49 -0
  53. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InStatusText.js +119 -0
  54. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InTabs.js +4309 -0
  55. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InTagsText.js +129 -0
  56. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InTextInput.js +503 -0
  57. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InToasts.js +253 -0
  58. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InToggle.js +107 -0
  59. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InTooltip.js +134 -0
  60. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/InTooltipV2.js +464 -0
  61. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/chunks/_commonjsHelpers.BItOPCY9.js +28 -0
  62. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/chunks/_plugin-vue2_normalizer.WQT2Fc8L.js +23 -0
  63. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/chunks/clickOutside.qP9M0QCm.js +29 -0
  64. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/chunks/helpers.CgHNyjAJ.js +109 -0
  65. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/chunks/index.Bw_06igr.js +2339 -0
  66. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/chunks/localLocalesMixin.DYMhydo2.js +16 -0
  67. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/chunks/useLocalLocales.Ckuhy7d-.js +17 -0
  68. package/dist/node_modules/@useinsider/design-system-organisms/node_modules/@useinsider/design-system-vue/dist/chunks/vue-property-decorator.BtlM7Epa.js +188 -0
  69. package/dist/services/recommendationApi.js +77 -28
  70. package/dist/src/@types/config/schemas.d.ts +12 -0
  71. package/dist/src/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.d.ts +3 -0
  72. package/dist/src/components/organisms/extensions/recommendation/StrategyInfoBox.vue.d.ts +24 -0
  73. package/dist/src/composables/useConfig.d.ts +2 -0
  74. package/dist/src/composables/useRecommendation.d.ts +1 -0
  75. package/dist/src/enums/extensions/recommendationBlock.d.ts +2 -0
  76. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +12 -3
  77. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +37 -0
  78. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +210 -10
  79. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +6 -0
  80. package/dist/src/extensions/Blocks/Recommendation/utils/productIds.d.ts +6 -0
  81. package/dist/src/extensions/Blocks/common-control.d.ts +4 -1
  82. package/dist/src/mock/api/recommendation-strategies.d.ts +43 -0
  83. package/dist/src/services/recommendationApi.d.ts +4 -1
  84. package/dist/src/stores/config.d.ts +18 -0
  85. package/dist/static/styles/components/recommendation-strategy.css.js +171 -0
  86. package/dist/utils/dateUtil.js +23 -10
  87. package/dist/utils/templatePreparation.js +37 -34
  88. package/package.json +2 -1
@@ -1,21 +1,22 @@
1
- import { getRecommendationFeedSourceMaps as I, URLS as R } from "../enums/extensions/recommendationBlock.js";
2
- import { MinDeviceViewport as C, DefaultPadding as b } from "../enums/recommendation.js";
1
+ import { getRecommendationFeedSourceMaps as y, URLS as I } from "../enums/extensions/recommendationBlock.js";
2
+ import { MinDeviceViewport as C, DefaultPadding as R } from "../enums/recommendation.js";
3
3
  import { useRecommendationExtensionStore as l } from "../extensions/Blocks/Recommendation/store/recommendation.js";
4
- import { generateCompleteFilterQuery as h } from "../extensions/Blocks/Recommendation/utils/filterUtil.js";
5
- import { getPartnerRecommendationParams as y } from "../extensions/Blocks/Recommendation/utils/partnerCustomizations.js";
6
- import { useConfigStore as x } from "../stores/config.js";
7
- const k = () => ({
4
+ import { generateCompleteFilterQuery as b } from "../extensions/Blocks/Recommendation/utils/filterUtil.js";
5
+ import { getPartnerRecommendationParams as h } from "../extensions/Blocks/Recommendation/utils/partnerCustomizations.js";
6
+ import { sanitizeProductIds as x } from "../extensions/Blocks/Recommendation/utils/productIds.js";
7
+ import { useConfigStore as P } from "../stores/config.js";
8
+ const B = () => ({
8
9
  calculateCardWidth: ({
9
10
  mobileLeftPadding: a,
10
- mobileRightPadding: s,
11
- cardsInRow: c,
11
+ mobileRightPadding: c,
12
+ cardsInRow: s,
12
13
  unresponsive: o
13
14
  }) => {
14
- const r = o ? c : 1, e = a + s + (r - 1) * b;
15
- return (C - e) / r;
15
+ const n = o ? s : 1, e = a + c + (n - 1) * R;
16
+ return (C - e) / n;
16
17
  },
17
18
  getRecommendationCampaignData: (a) => {
18
- const s = l(), c = Number(a), o = s.blockStates[c];
19
+ const c = l(), s = Number(a), o = c.blockStates[s];
19
20
  if (!o)
20
21
  return {
21
22
  textTrimming: !1,
@@ -29,49 +30,56 @@ const k = () => ({
29
30
  discountBeforeTextValue: "",
30
31
  discountAfterTextValue: ""
31
32
  };
32
- const { recommendationConfigs: r } = o, e = r.orientation === "grid" ? "vertical" : "horizontal";
33
+ const { recommendationConfigs: n } = o, e = n.orientation === "grid" ? "vertical" : "horizontal";
33
34
  return {
34
- textTrimming: r.textTrimming,
35
+ textTrimming: n.textTrimming,
35
36
  orientation: e,
36
37
  mobileLeftPadding: 0,
37
38
  mobileRightPadding: 0,
38
- cardsInRow: r.cardsInRow,
39
- unresponsive: r.unresponsive,
39
+ cardsInRow: n.cardsInRow,
40
+ unresponsive: n.unresponsive,
40
41
  priceBeforeTextValue: "",
41
42
  priceAfterTextValue: "",
42
43
  discountBeforeTextValue: "",
43
44
  discountAfterTextValue: ""
44
45
  };
45
46
  },
46
- buildCampaignUrl: (a, s) => {
47
+ buildCampaignUrl: (a, c) => {
47
48
  var m;
48
- const c = l(), o = x(), r = Number(a);
49
+ const s = l(), o = P(), n = Number(a);
49
50
  let e;
50
- if (s)
51
- e = s;
51
+ if (c)
52
+ e = c;
52
53
  else {
53
- const i = c.blockStates[r];
54
+ const i = s.blockStates[n];
54
55
  if (!i)
55
56
  return "";
56
- const { recommendationConfigs: n } = i;
57
+ const { recommendationConfigs: r } = i;
57
58
  e = {
58
- strategy: n.strategy,
59
- language: n.language,
60
- currencyCode: n.currencySettings.value,
61
- size: n.size,
62
- productIds: n.productIds,
63
- filters: n.filters,
64
- 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
65
67
  };
66
68
  }
67
- const f = ((m = I().find((i) => i.key === e.strategy)) == null ? void 0 : m.path) || "", t = new URLSearchParams();
68
- t.set("locale", e.language), t.set("currency", e.currencyCode), t.set("partnerName", o.partnerName), t.set("size", e.size), t.set("details", "true"), t.set("campaignId", o.variationId), e.strategy === "manualMerchandising" ? t.set("productId", e.productIds.join(",")) : e.strategy === "similarViewed" && t.set("productId", "{itemId}"), e.strategy === "userBased" && t.set("userId", "{user_id}");
69
- const g = e.filters.filter((i) => i.isValid), d = h(g);
70
- d && t.set("filter", d), e.shuffleProducts && t.set("shuffle", "true"), Object.entries(y(o.partnerName, e.strategy)).forEach(([i, n]) => t.set(i, n));
71
- const p = decodeURIComponent(t.toString()), u = `${R.RECOMMENDATION_API_URL}/v2/${f}?${p}`;
72
- return c.recommendationCampaignUrls[a] = u, u;
69
+ if (e.strategyId)
70
+ return s.recommendationCampaignUrls[a] = {
71
+ strategyId: e.strategyId,
72
+ locale: e.language,
73
+ currency: e.currencyCode
74
+ }, "";
75
+ const f = ((m = y().find((i) => i.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", o.partnerName), t.set("size", e.size), t.set("details", "true"), t.set("campaignId", o.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 g = e.filters.filter((i) => i.isValid), d = b(g);
78
+ d && t.set("filter", d), e.shuffleProducts && t.set("shuffle", "true"), Object.entries(h(o.partnerName, e.strategy)).forEach(([i, r]) => t.set(i, r));
79
+ const p = decodeURIComponent(t.toString()), u = `${I.RECOMMENDATION_API_URL}/v2/${f}?${p}`;
80
+ return s.recommendationCampaignUrls[a] = u, u;
73
81
  }
74
82
  });
75
83
  export {
76
- k as useRecommendation
84
+ B as useRecommendation
77
85
  };
@@ -16,22 +16,22 @@ import { useEditorStore as b } from "../stores/editor.js";
16
16
  import { buildMergeTagEntries as W, flattenDynamicContentList as Y } from "../utils/genericUtil.js";
17
17
  import Z from "../package.json.js";
18
18
  let n = null;
19
- const Ct = () => {
20
- const { features: c, template: u, isFeatureEnabled: m } = q(), { handleError: p, showToaster: k } = G(), { getToken: T, getCustomFonts: v, getSyncModulesStatus: B } = K(), { handleEvent: F } = z(), { handleModuleAdd: M } = j(), { getStripoBlocksConfig: A } = O(), { getStripoNotifications: V } = $(), f = () => n || (n = new Promise((i, s) => {
19
+ const Ce = () => {
20
+ const { features: c, template: u, isFeatureEnabled: m } = q(), { handleError: p, showToaster: k } = G(), { getToken: M, getCustomFonts: T, getSyncModulesStatus: v } = K(), { handleEvent: B } = z(), { handleModuleAdd: F } = j(), { getStripoBlocksConfig: A } = O(), { getStripoNotifications: V } = $(), f = () => n || (n = new Promise((i, s) => {
21
21
  var l;
22
22
  if (document.getElementById("UiEditorScript")) {
23
23
  i();
24
24
  return;
25
25
  }
26
- const o = Z.guido, r = `https://email-static.useinsider.com/guido/${(l = o == null ? void 0 : o.stripo) == null ? void 0 : l.version}/UIEditor.js`, t = document.createElement("script");
27
- t.id = "UiEditorScript", t.type = "module", t.src = r, t.onload = () => i(), t.onerror = () => {
28
- t.remove(), s(new Error(`Failed to load Stripo UIEditor script from S3: ${r}`));
29
- }, document.body.appendChild(t);
26
+ const o = Z.guido, r = `https://email-static.useinsider.com/guido/${(l = o == null ? void 0 : o.stripo) == null ? void 0 : l.version}/UIEditor.js`, e = document.createElement("script");
27
+ e.id = "UiEditorScript", e.type = "module", e.src = r, e.onload = () => i(), e.onerror = () => {
28
+ e.remove(), s(new Error(`Failed to load Stripo UIEditor script from S3: ${r}`));
29
+ }, document.body.appendChild(e);
30
30
  }), n.catch(() => {
31
31
  n = null;
32
32
  }), n), _ = async (i, s, o, a = [], r = !1) => {
33
33
  var y, E, h, C;
34
- const t = b(), { html: l, css: D } = i, { baseBlocks: g, extensions: R } = await A(), S = ((y = c.value) == null ? void 0 : y.displayConditions) ?? !0, P = ((E = c.value) == null ? void 0 : E.modulesDisabled) ?? !1, U = ((h = u.value) == null ? void 0 : h.forceRecreate) ?? !1;
34
+ const e = b(), { html: l, css: D } = i, { baseBlocks: g, extensions: R } = await A(), S = ((y = c.value) == null ? void 0 : y.displayConditions) ?? !0, P = ((E = c.value) == null ? void 0 : E.modulesDisabled) ?? !1, U = ((h = u.value) == null ? void 0 : h.forceRecreate) ?? !1;
35
35
  await window.UIEditor.initEditor(
36
36
  document.querySelector("#guido-editor"),
37
37
  {
@@ -57,6 +57,7 @@ const Ct = () => {
57
57
  messageSettingsEnabled: !0,
58
58
  displayGmailAnnotations: !0,
59
59
  displayHiddenPreheader: !1,
60
+ keepModuleStylesEnabled: !0,
60
61
  displayTitle: !1,
61
62
  displayUTM: !1,
62
63
  selectElementAfterDrop: !0,
@@ -77,38 +78,38 @@ const Ct = () => {
77
78
  )
78
79
  }
79
80
  ],
80
- async onTokenRefreshRequest(e) {
81
+ async onTokenRefreshRequest(t) {
81
82
  try {
82
- const d = await T();
83
- e(d);
83
+ const d = await M();
84
+ t(d);
84
85
  } catch (d) {
85
86
  p(d, "Failed to refresh token");
86
87
  }
87
88
  },
88
89
  onTemplateLoaded() {
89
90
  try {
90
- const { importCss: e } = H(), { activateCustomViewStyles: d, updateTimerInClonedTemplate: I } = L(), { injectFullStory: x } = N();
91
- e(), d(), x(), I(), o.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
92
- t.hasChanges = !1;
91
+ const { importCss: t } = H(), { activateCustomViewStyles: d, updateTimerInClonedTemplate: I } = L(), { injectFullStory: x } = N();
92
+ t(), d(), x(), I(), o.onReady(), e.isStripoInitialized = !0, e.loadingStatus = !1, setTimeout(() => {
93
+ e.hasChanges = !1;
93
94
  }, 1e3);
94
- } catch (e) {
95
- p(e, "Failed to load custom interface appearance");
95
+ } catch (t) {
96
+ p(t, "Failed to load custom interface appearance");
96
97
  }
97
98
  },
98
- onCodeEditorVisibilityChanged(e) {
99
- t.isCodeEditorOpen = e;
99
+ onCodeEditorVisibilityChanged(t) {
100
+ e.isCodeEditorOpen = t;
100
101
  },
101
- onEditorVisualModeChanged(e) {
102
- t.editorVisualMode = e.toLowerCase();
102
+ onEditorVisualModeChanged(t) {
103
+ e.editorVisualMode = t.toLowerCase();
103
104
  },
104
- onVersionHistoryVisibilityChanged(e) {
105
- t.isVersionHistoryOpen = e;
105
+ onVersionHistoryVisibilityChanged(t) {
106
+ e.isVersionHistoryOpen = t;
106
107
  },
107
108
  onDataChanged() {
108
- t.hasChanges = !0;
109
+ e.hasChanges = !0;
109
110
  },
110
- onEvent: F,
111
- onModuleAdd: M,
111
+ onEvent: B,
112
+ onModuleAdd: F,
112
113
  notifications: V(),
113
114
  ignoreClickOutsideSelectors: [
114
115
  "#guido-dynamic-content-modal",
@@ -124,11 +125,11 @@ const Ct = () => {
124
125
  const a = b();
125
126
  try {
126
127
  await f();
127
- const [r, t] = await Promise.all([
128
- v(),
129
- B()
128
+ const [r, e] = await Promise.all([
129
+ T(),
130
+ v()
130
131
  ]);
131
- a.syncModulesEnabled = t, await _(i, s, o, r, t);
132
+ a.syncModulesEnabled = e, await _(i, s, o, r, e);
132
133
  } catch {
133
134
  a.loadingStatus = !1, k({
134
135
  type: X.Error,
@@ -145,5 +146,5 @@ const Ct = () => {
145
146
  } };
146
147
  };
147
148
  export {
148
- Ct as useStripo
149
+ Ce as useStripo
149
150
  };
@@ -381,7 +381,7 @@ class H {
381
381
  * Supports all block types by detecting prefix and using appropriate type:
382
382
  *
383
383
  * Examples:
384
- * - {{ins_apr_img_1}} → https://s3.../img_1.jpeg (CART_ITEMS)
384
+ * - {{ins_apr_img_1}} → https://web-image.useinsider.com/.../img_1.jpeg (CART_ITEMS)
385
385
  * - {{browsed_item_name_2}} → 'Set of Sprite Yoga Straps' (BROWSED_ITEMS)
386
386
  * - {{purchased_item_formattedprice_5}} → '1,490.49' (PURCHASED_ITEMS)
387
387
  */
@@ -1,6 +1,6 @@
1
1
  import { BlockId as f } from "../../enums/block.js";
2
- import { useTemplateStore as b } from "../../stores/template.js";
3
- import { mapComposition as y } from "./recommendation/compositionMapper.js";
2
+ import { useTemplateStore as y } from "../../stores/template.js";
3
+ import { mapComposition as b } from "./recommendation/compositionMapper.js";
4
4
  import { extractCurrencyFromBlock as v, extractTitleText as C, extractCardBgColor as M, isPartnerManagedBlock as S } from "./recommendation/extractors.js";
5
5
  import { buildBlockHtml as w } from "./recommendation/htmlBuilder.js";
6
6
  import { parseRecommendationId as x, parseLegacyConfig as R } from "./recommendation/parseLegacyConfig.js";
@@ -20,8 +20,10 @@ function B(i, t, a) {
20
20
  ), !1;
21
21
  const n = a[String(o)] ?? {
22
22
  currencySettings: v(t)
23
- }, c = T(n, r, o), e = y((d = r.composition) == null ? void 0 : d.variables), l = C(t), g = M(t), p = {
23
+ }, c = T(n, r, o), e = b((d = r.composition) == null ? void 0 : d.variables), l = C(t), g = M(t), p = {
24
24
  ...c,
25
+ // Legacy blocks predate RRS — never strategy-backed.
26
+ strategyId: "",
25
27
  composition: e.composition,
26
28
  visibility: e.visibility,
27
29
  textTrimming: e.anyTextTrimming
@@ -56,7 +58,7 @@ function B(i, t, a) {
56
58
  function q(i, t = {}) {
57
59
  const a = new DOMParser(), o = a.parseFromString(i, "text/html"), r = Array.from(o.querySelectorAll(h));
58
60
  try {
59
- b().$patch((e) => {
61
+ y().$patch((e) => {
60
62
  e.migrations = {
61
63
  ...e.migrations,
62
64
  [f.Recommendation]: r.length
@@ -1,5 +1,6 @@
1
- const t = "tr-TR", L = "default";
1
+ const t = "tr-TR", T = "default", L = "UTC";
2
2
  export {
3
- L as DEFAULT,
4
- t as DEFAULT_LOCALE
3
+ T as DEFAULT,
4
+ t as DEFAULT_LOCALE,
5
+ L as DEFAULT_TZ
5
6
  };
@@ -2,10 +2,11 @@ import { useTranslations as r } from "../../composables/useTranslations.js";
2
2
  const l = {
3
3
  RECOMMENDATION_API_URL: "https://recommendationv2.api.useinsider.com",
4
4
  // Relative path → same-origin as the embedding inone dashboard.
5
- PRODUCT_ATTRIBUTES_PATH: "/product-attributes/get-attributes"
6
- }, c = {
5
+ PRODUCT_ATTRIBUTES_PATH: "/product-attributes/get-attributes",
6
+ RECOMMENDATION_STRATEGIES_PATH: "/api/recommendation-strategies"
7
+ }, c = "[sr_strategies.status][=][active]*[sr_strategies.suitable_channels][~][EMAIL]", d = {
7
8
  CLIENT_ID: "clientId"
8
- }, d = () => {
9
+ }, m = () => {
9
10
  const e = r();
10
11
  return [
11
12
  {
@@ -69,14 +70,14 @@ const l = {
69
70
  path: "top-sellers"
70
71
  }
71
72
  ];
72
- }, m = ["discount", "omnibus_price", "omnibus_discount", "price", "original_price"], p = [
73
+ }, p = ["discount", "omnibus_price", "omnibus_discount", "price", "original_price"], v = [
73
74
  { text: "before the amount", value: "0" },
74
75
  { text: "after the amount", value: "1" }
75
- ], v = [
76
+ ], h = [
76
77
  { text: "dot(.)", value: "." },
77
78
  { text: "comma(,)", value: "," },
78
79
  { text: "space( )", value: " " }
79
- ], h = [
80
+ ], x = [
80
81
  { text: "0", value: "0" },
81
82
  { text: "1", value: "1" },
82
83
  { text: "2", value: "2" },
@@ -88,54 +89,55 @@ const l = {
88
89
  { text: "contains", value: "~" },
89
90
  { text: "does not contain", value: "!~" },
90
91
  { text: "any of", value: a }
91
- ], n = [
92
+ ], s = [
92
93
  { text: "is exactly", value: "=" },
93
94
  { text: "is not exactly", value: "!==" },
94
95
  { text: "contains", value: "~" },
95
96
  { text: "does not contain", value: "!~" },
96
97
  { text: "any of", value: a }
97
- ], o = [
98
+ ], n = [
98
99
  { text: "is equal to", value: "=" },
99
100
  { text: "is greater than", value: ">" },
100
101
  { text: "is less than", value: "<" }
101
- ], s = [
102
+ ], o = [
102
103
  { text: "is equal to", value: "=" },
103
104
  { text: "after", value: ">" },
104
105
  { text: "before", value: "<" }
105
106
  ], i = [
106
107
  { text: "true", value: "==" },
107
108
  { text: "false", value: "!=" }
108
- ], x = (e) => {
109
+ ], b = (e) => {
109
110
  if (!e)
110
111
  return t;
111
112
  switch (e) {
112
113
  case "Boolean":
113
114
  return i;
114
115
  case "Date":
115
- return s;
116
- case "Number":
117
116
  return o;
117
+ case "Number":
118
+ return n;
118
119
  case "String":
119
120
  return t;
120
121
  case "Strings":
121
- return n;
122
+ return s;
122
123
  default:
123
124
  return t;
124
125
  }
125
126
  };
126
127
  export {
127
128
  a as OP_ANY_OF,
128
- m as PriceAttributes,
129
- c as QUERY_PARAMS,
129
+ p as PriceAttributes,
130
+ d as QUERY_PARAMS,
131
+ c as RRS_ACTIVE_EMAIL_FILTER,
130
132
  l as URLS,
131
- h as currencyDecimalCounts,
132
- p as currencyLocationMaps,
133
- v as currencyOperators,
134
- x as getOperatorOptions,
135
- d as getRecommendationFeedSourceMaps,
136
- n as operatorOptionsForArrayOfStrings,
133
+ x as currencyDecimalCounts,
134
+ v as currencyLocationMaps,
135
+ h as currencyOperators,
136
+ b as getOperatorOptions,
137
+ m as getRecommendationFeedSourceMaps,
138
+ s as operatorOptionsForArrayOfStrings,
137
139
  i as operatorOptionsForBooleans,
138
- s as operatorOptionsForDates,
139
- o as operatorOptionsForNumbers,
140
+ o as operatorOptionsForDates,
141
+ n as operatorOptionsForNumbers,
140
142
  t as operatorOptionsForStrings
141
143
  };
@@ -1,15 +1,15 @@
1
- const e = 20, s = 320, t = "vertical", m = {
1
+ const e = 20, t = 320, s = "vertical", m = {
2
2
  CART_ABANDONMENT: {
3
- ins_apr_img_1: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_1.png",
4
- ins_apr_img_2: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_2.png",
5
- ins_apr_img_3: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_3.png",
6
- ins_apr_img_4: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_4.png"
3
+ ins_apr_img_1: "https://web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_1.png",
4
+ ins_apr_img_2: "https://web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_2.png",
5
+ ins_apr_img_3: "https://web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_3.png",
6
+ ins_apr_img_4: "https://web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_4.png"
7
7
  },
8
8
  BROWSE_ABANDONMENT: {
9
- browsed_item_img_1: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_1.jpg",
10
- browsed_item_img_2: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_2.jpg",
11
- browsed_item_img_3: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_3.jpg",
12
- browsed_item_img_4: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_4.jpg"
9
+ browsed_item_img_1: "https://web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_1.jpg",
10
+ browsed_item_img_2: "https://web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_2.jpg",
11
+ browsed_item_img_3: "https://web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_3.jpg",
12
+ browsed_item_img_4: "https://web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_4.jpg"
13
13
  }
14
14
  }, i = {
15
15
  DISCOUNT: "discount",
@@ -23,7 +23,7 @@ const e = 20, s = 320, t = "vertical", m = {
23
23
  },
24
24
  ELSE: "{% else %}",
25
25
  END_IF: "{% endif %}"
26
- }, a = {
26
+ }, n = {
27
27
  ID: /recommendation-id="(.*?)"/gi,
28
28
  ATTRIBUTE_PARAGRAPH: /<p[^>]*?product-attr="(discount|omnibus_discount|omnibus_price)"[^>]*>[\S\s]*?<\/p>/gm,
29
29
  ATTRIBUTE_PARAGRAPH_START_TAG: /<p[^>]*?product-attr="(discount|omnibus_discount|omnibus_price)"[^>]*>/gm,
@@ -31,9 +31,9 @@ const e = 20, s = 320, t = "vertical", m = {
31
31
  CUSTOM_FIELD: /{{(?:reco_)?[0-9]+_[0-8]_(discount|omnibus_discount|omnibus_price)}}/gm,
32
32
  CUSTOM_FIELD_INDEXES_PART: /{{(?:reco_)?[0-9]+_[0-8]_/gm,
33
33
  CUSTOM_FIELD_NAME_PART: /_(discount|omnibus_discount|omnibus_price)}}/gm
34
- }, n = {
35
- PARAGRAPH_END_TAG: "</p>"
36
34
  }, o = {
35
+ PARAGRAPH_END_TAG: "</p>"
36
+ }, a = {
37
37
  REGULAR_NAME_HEIGHT: ".ext-product-name.ins-vertical p { height:90px!important;",
38
38
  TRIMMED_NAME_HEIGHT: ".ext-product-name.ins-vertical p { height:18px!important;",
39
39
  ELLIPSIS: "text-overflow:ellipsis!important; white-space:nowrap!important;",
@@ -47,11 +47,11 @@ const e = 20, s = 320, t = "vertical", m = {
47
47
  export {
48
48
  i as ATTRIBUTES,
49
49
  _ as CONDITIONS,
50
- o as CSS,
50
+ a as CSS,
51
51
  m as DUMMY_IMAGE_MAPPINGS,
52
52
  e as DefaultPadding,
53
- n as HTML,
54
- s as MinDeviceViewport,
55
- a as REGEX,
56
- t as VerticalOrientation
53
+ o as HTML,
54
+ t as MinDeviceViewport,
55
+ n as REGEX,
56
+ s as VerticalOrientation
57
57
  };
@@ -1,44 +1,44 @@
1
- import _ from "../../../../node_modules/lodash-es/flatMap.js";
2
- import E from "../../../../node_modules/lodash-es/range.js";
3
- const T = '<td align="center" class="ins-product-td items-block items-block-v2">', a = { PAIRS_FOR_EXTENSION: {
1
+ import E from "../../../../node_modules/lodash-es/flatMap.js";
2
+ import s from "../../../../node_modules/lodash-es/range.js";
3
+ const t = '<td align="center" class="ins-product-td items-block items-block-v2">', r = { PAIRS_FOR_EXTENSION: {
4
4
  imageSrc: {
5
5
  CART_ITEMS: {
6
6
  ATTR: "ins_apr_img",
7
7
  DEFAULT: [
8
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_1.jpeg",
9
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_2.webp",
10
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_3.jpeg",
11
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_4.jpeg",
12
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_5.jpeg",
13
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_6.jpeg",
14
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_7.jpeg",
15
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_8.jpeg"
8
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_1.jpeg",
9
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_2.webp",
10
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_3.jpeg",
11
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_4.jpeg",
12
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_5.jpeg",
13
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_6.jpeg",
14
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_7.jpeg",
15
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_8.jpeg"
16
16
  ]
17
17
  },
18
18
  BROWSED_ITEMS: {
19
19
  ATTR: "browsed_item_img",
20
20
  DEFAULT: [
21
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_1.jpeg",
22
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_2.webp",
23
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_3.jpeg",
24
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_4.jpeg",
25
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_5.jpeg",
26
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_6.jpeg",
27
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_7.jpeg",
28
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_8.jpeg"
21
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_1.jpeg",
22
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_2.webp",
23
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_3.jpeg",
24
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_4.jpeg",
25
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_5.jpeg",
26
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_6.jpeg",
27
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_7.jpeg",
28
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_8.jpeg"
29
29
  ]
30
30
  },
31
31
  PURCHASED_ITEMS: {
32
32
  ATTR: "purchased_item_img",
33
33
  DEFAULT: [
34
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_1.jpeg",
35
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_2.webp",
36
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_3.jpeg",
37
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_4.jpeg",
38
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_5.jpeg",
39
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_6.jpeg",
40
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_7.jpeg",
41
- "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_8.jpeg"
34
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_1.jpeg",
35
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_2.webp",
36
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_3.jpeg",
37
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_4.jpeg",
38
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_5.jpeg",
39
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_6.jpeg",
40
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_7.jpeg",
41
+ "https://web-image.useinsider.com/email-assets/dummyImages/products/ins_apr_img_8.jpeg"
42
42
  ]
43
43
  }
44
44
  },
@@ -211,27 +211,27 @@ const T = '<td align="center" class="ins-product-td items-block items-block-v2">
211
211
  }
212
212
  }
213
213
  } };
214
- function m(e, s = 8) {
215
- return E(1, s + 1).map((i) => `${e}_${i}`);
214
+ function a(e, i = 8) {
215
+ return s(1, i + 1).map((_) => `${e}_${_}`);
216
216
  }
217
- function r() {
218
- const { PAIRS_FOR_EXTENSION: e } = a, s = [];
219
- return s.push(
217
+ function R() {
218
+ const { PAIRS_FOR_EXTENSION: e } = r, i = [];
219
+ return i.push(
220
220
  e.imageSrc.CART_ITEMS.ATTR,
221
221
  e.imageSrc.BROWSED_ITEMS.ATTR,
222
222
  e.imageSrc.PURCHASED_ITEMS.ATTR
223
- ), s.push(
223
+ ), i.push(
224
224
  e.name.CART_ITEMS.ATTR,
225
225
  e.name.CART_ITEMS.HREF,
226
226
  e.name.BROWSED_ITEMS.ATTR,
227
227
  e.name.BROWSED_ITEMS.HREF,
228
228
  e.name.PURCHASED_ITEMS.ATTR,
229
229
  e.name.PURCHASED_ITEMS.HREF
230
- ), s.push(
230
+ ), i.push(
231
231
  e.quantity.CART_ITEMS.ATTR,
232
232
  e.quantity.BROWSED_ITEMS.ATTR,
233
233
  e.quantity.PURCHASED_ITEMS.ATTR
234
- ), s.push(
234
+ ), i.push(
235
235
  e.price.CART_ITEMS.PRICE,
236
236
  e.price.CART_ITEMS.PRICE_FORMATTED,
237
237
  e.price.CART_ITEMS.SINGLE_PRICE,
@@ -247,7 +247,7 @@ function r() {
247
247
  e.price.PURCHASED_ITEMS.SINGLE_PRICE,
248
248
  e.price.PURCHASED_ITEMS.SINGLE_PRICE_FORMATTED,
249
249
  e.price.PURCHASED_ITEMS.CURRENCY
250
- ), s.push(
250
+ ), i.push(
251
251
  e.originalPrice.CART_ITEMS.PRICE,
252
252
  e.originalPrice.CART_ITEMS.PRICE_FORMATTED,
253
253
  e.originalPrice.CART_ITEMS.SINGLE_PRICE,
@@ -263,22 +263,22 @@ function r() {
263
263
  e.originalPrice.PURCHASED_ITEMS.SINGLE_PRICE,
264
264
  e.originalPrice.PURCHASED_ITEMS.SINGLE_PRICE_FORMATTED,
265
265
  e.originalPrice.PURCHASED_ITEMS.CURRENCY
266
- ), s.push(
266
+ ), i.push(
267
267
  e.button.CART_ITEMS.HREF,
268
268
  e.button.BROWSED_ITEMS.HREF,
269
269
  e.button.PURCHASED_ITEMS.HREF
270
- ), s.push(
270
+ ), i.push(
271
271
  e.itemLink.CART_ITEMS.HREF,
272
272
  e.itemLink.BROWSED_ITEMS.HREF,
273
273
  e.itemLink.PURCHASED_ITEMS.HREF
274
- ), s;
274
+ ), i;
275
275
  }
276
- const o = _(
277
- r(),
278
- (e) => m(e)
276
+ const p = E(
277
+ R(),
278
+ (e) => a(e)
279
279
  );
280
280
  export {
281
- o as itemsBlockDynamicVariables,
282
- a as productPairs,
283
- T as templateFirstLine
281
+ p as itemsBlockDynamicVariables,
282
+ r as productPairs,
283
+ t as templateFirstLine
284
284
  };