@useinsider/guido 2.1.0-beta.67fc452 → 2.1.0-beta.9ba2e9d

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 (168) hide show
  1. package/dist/@types/config/schemas.js +17 -17
  2. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +15 -14
  3. package/dist/composables/useActionsApi.js +15 -13
  4. package/dist/composables/useHtmlValidator.js +106 -84
  5. package/dist/composables/useRecommendation.js +54 -21
  6. package/dist/config/compiler/recommendationCompilerRules.js +45 -39
  7. package/dist/config/compiler/utils/recommendationCompilerUtils.js +147 -0
  8. package/dist/config/migrator/itemsBlockMigrator.js +140 -123
  9. package/dist/config/migrator/recommendationMigrator.js +2 -2
  10. package/dist/enums/recommendation.js +16 -15
  11. package/dist/extensions/Blocks/Items/block.js +19 -28
  12. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  13. package/dist/extensions/Blocks/Items/controls/cardComposition.js +124 -85
  14. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  15. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  16. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
  17. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
  18. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
  19. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
  20. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  21. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
  22. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  23. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  24. package/dist/extensions/Blocks/Items/extension.js +8 -9
  25. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  26. package/dist/extensions/Blocks/Items/template.js +181 -175
  27. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  28. package/dist/extensions/Blocks/Recommendation/block.js +130 -9
  29. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  30. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  31. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +65 -0
  32. package/dist/extensions/Blocks/Recommendation/constants/layout.js +20 -0
  33. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +19 -0
  34. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  35. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  36. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +92 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +102 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +209 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +52 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +217 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +70 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +110 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +67 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +286 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +108 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextAfterControl.js → omnibusDiscount/textAfter.js} +16 -14
  52. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextBeforeControl.js → omnibusDiscount/textBefore.js} +16 -14
  53. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextAfterControl.js → omnibusPrice/textAfter.js} +16 -14
  55. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextBeforeControl.js → omnibusPrice/textBefore.js} +14 -12
  56. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +222 -0
  58. package/dist/extensions/Blocks/Recommendation/extension.js +40 -17
  59. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +19 -3
  60. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  61. package/dist/extensions/Blocks/Recommendation/services/configService.js +240 -0
  62. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +21 -10
  63. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +230 -193
  64. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +233 -0
  65. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +251 -0
  66. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +69 -0
  67. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  68. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +174 -0
  69. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +73 -0
  70. package/dist/extensions/Blocks/Recommendation/templates/utils.js +122 -0
  71. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  72. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  73. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +26 -15
  74. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  75. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  76. package/dist/extensions/Blocks/common-control.js +91 -92
  77. package/dist/extensions/Blocks/controlFactories.js +125 -93
  78. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +223 -169
  79. package/dist/package.json.js +1 -1
  80. package/dist/services/recommendationApi.js +10 -9
  81. package/dist/services/templateLibraryApi.js +16 -13
  82. package/dist/src/@types/config/schemas.d.ts +2 -2
  83. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  84. package/dist/src/composables/useRecommendation.d.ts +1 -0
  85. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +17 -0
  86. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  87. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  88. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  89. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  90. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  91. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  92. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  93. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  94. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  95. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  96. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  97. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  98. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  99. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +67 -0
  100. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  101. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +0 -24
  102. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +49 -0
  103. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  104. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +35 -0
  105. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +31 -0
  106. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  107. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  108. package/dist/src/extensions/Blocks/Recommendation/{cardCompositionControl.d.ts → controls/cardComposition/index.d.ts} +23 -3
  109. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  110. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +21 -589
  111. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +37 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +52 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +68 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +42 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +214 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +34 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +83 -0
  131. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  132. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  133. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  134. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +131 -468
  135. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +20 -0
  136. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → grid/migration.d.ts} +11 -4
  137. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +33 -0
  138. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +39 -0
  139. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +8 -0
  140. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +25 -0
  141. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +18 -0
  142. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +57 -0
  143. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  144. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +160 -0
  145. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  146. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  147. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  148. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  149. package/dist/static/styles/customEditorStyle.css.js +25 -2
  150. package/dist/utils/pairProductVariables.js +57 -56
  151. package/dist/utils/templatePreparation.js +15 -14
  152. package/package.json +2 -2
  153. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  154. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -187
  155. package/dist/extensions/Blocks/Recommendation/constants.js +0 -13
  156. package/dist/extensions/Blocks/Recommendation/control.js +0 -336
  157. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
  158. package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -245
  159. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +0 -74
  160. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
  161. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -181
  162. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -189
  163. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -209
  164. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
  165. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -38
  166. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +0 -16
  167. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  168. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -52
@@ -1,4 +1,4 @@
1
- import { object as o, number as b, optional as e, string as t, pipe as u, picklist as n, custom as d, boolean as c, array as a, minLength as p, literal as r, variant as S } from "../../node_modules/valibot/dist/index.js";
1
+ import { object as o, number as b, optional as e, string as t, pipe as u, picklist as n, custom as d, boolean as c, array as a, minLength as p, literal as r, variant as k } from "../../node_modules/valibot/dist/index.js";
2
2
  const m = {
3
3
  /** Promotional/marketing emails */
4
4
  PROMOTIONAL: 1,
@@ -11,7 +11,7 @@ const m = {
11
11
  ARCHITECT: 49,
12
12
  /** Unsubscribe page builder */
13
13
  UNSUBSCRIBE_PAGES: 97
14
- }, h = o({
14
+ }, S = o({
15
15
  /** Unique identifier for the template being edited */
16
16
  templateId: u(
17
17
  t(),
@@ -24,7 +24,7 @@ const m = {
24
24
  ),
25
25
  /** Optional variation ID for A/B testing */
26
26
  variationId: e(t())
27
- }), k = o({
27
+ }), h = o({
28
28
  /** Partner/organization name (required) */
29
29
  name: u(
30
30
  t(),
@@ -83,7 +83,7 @@ const m = {
83
83
  /** Locale for the editor UI */
84
84
  locale: e(t(), "en"),
85
85
  /** Path to translations object */
86
- translationsPath: e(t(), "window.trans.en"),
86
+ translationsPath: e(t(), "window.trans[Object.keys(window.trans)[0]]"),
87
87
  /** Migration date for template compatibility */
88
88
  migrationDate: e(b(), 1759696858),
89
89
  /** Email header settings */
@@ -130,7 +130,7 @@ const m = {
130
130
  "unsubscribe-block",
131
131
  "coupon-block",
132
132
  "items-block"
133
- ]), E = o({
133
+ ]), O = o({
134
134
  /** Default blocks to exclude from the editor */
135
135
  excludeDefaults: e(
136
136
  a(A),
@@ -148,7 +148,7 @@ const m = {
148
148
  description: e(t()),
149
149
  /** Priority for rule ordering (lower = earlier) */
150
150
  priority: b()
151
- }), N = o({
151
+ }), E = o({
152
152
  ...l.entries,
153
153
  type: r("replace"),
154
154
  /** String to search for */
@@ -157,7 +157,7 @@ const m = {
157
157
  replacement: t(),
158
158
  /** Replace all occurrences (default: false) */
159
159
  replaceAll: e(c())
160
- }), O = o({
160
+ }), N = o({
161
161
  ...l.entries,
162
162
  type: r("regex"),
163
163
  /** Regex pattern string */
@@ -179,9 +179,9 @@ const m = {
179
179
  (i) => typeof i == "function",
180
180
  "processor must be a function"
181
181
  )
182
- }), x = S("type", [
182
+ }), x = k("type", [
183
+ E,
183
184
  N,
184
- O,
185
185
  L,
186
186
  v
187
187
  ]), B = o({
@@ -203,9 +203,9 @@ const m = {
203
203
  }), D = o({
204
204
  // Required sections
205
205
  /** Identity configuration (required) */
206
- identity: h,
206
+ identity: S,
207
207
  /** Partner configuration (required) */
208
- partner: k,
208
+ partner: h,
209
209
  // Optional sections (with defaults)
210
210
  /** Template content and presets */
211
211
  template: e(R, {}),
@@ -216,14 +216,14 @@ const m = {
216
216
  /** Feature toggles */
217
217
  features: e(T, {}),
218
218
  /** Block configuration */
219
- blocks: e(E, {}),
219
+ blocks: e(O, {}),
220
220
  /** Compiler configuration */
221
221
  compiler: e(B, {}),
222
222
  /** Callbacks and event handlers */
223
223
  callbacks: e(P, {})
224
224
  });
225
225
  export {
226
- E as BlocksSchema,
226
+ O as BlocksSchema,
227
227
  P as CallbacksSchema,
228
228
  x as CompilerRuleSchema,
229
229
  B as CompilerSchema,
@@ -235,13 +235,13 @@ export {
235
235
  f as EmailHeaderSchema,
236
236
  T as FeaturesSchema,
237
237
  D as GuidoConfigSchema,
238
- h as IdentitySchema,
238
+ S as IdentitySchema,
239
239
  m as MessageType,
240
- k as PartnerSchema,
240
+ h as PartnerSchema,
241
241
  s as ProductType,
242
- O as RegexRuleSchema,
242
+ N as RegexRuleSchema,
243
243
  L as RemoveRuleSchema,
244
- N as ReplaceRuleSchema,
244
+ E as ReplaceRuleSchema,
245
245
  R as TemplateSchema,
246
246
  I as UISchema
247
247
  };
@@ -1,16 +1,16 @@
1
1
  import { defineComponent as n, ref as a, computed as l } from "vue";
2
2
  import i from "../../../wrappers/WpDrawer.vue.js";
3
- import { useTranslations as p } from "../../../../composables/useTranslations.js";
4
- import { useRecommendationExtensionStore as c } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
3
+ import { useTranslations as c } from "../../../../composables/useTranslations.js";
4
+ import { useRecommendationExtensionStore as p } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
5
  import u from "./Filters.vue.js";
6
- const b = /* @__PURE__ */ n({
6
+ const v = /* @__PURE__ */ n({
7
7
  __name: "FilterSelectionDrawer",
8
- setup(m) {
9
- const t = p(), o = c(), e = a(!1), s = l(() => ({
8
+ setup(f) {
9
+ const r = c(), t = p(), e = a(!1), s = l(() => ({
10
10
  primaryButton: {
11
11
  styling: "solid",
12
12
  type: "primary",
13
- labelText: t(
13
+ labelText: r(
14
14
  e.value ? "unsubscription-preference.selecting-type" : "products.select-and-continue"
15
15
  ),
16
16
  loadingStatus: e.value,
@@ -19,19 +19,20 @@ const b = /* @__PURE__ */ n({
19
19
  cancelOrBackButton: {
20
20
  styling: "ghost",
21
21
  type: "secondary",
22
- labelText: t("products.cancel"),
22
+ labelText: r("products.cancel"),
23
23
  disabledStatus: e.value
24
24
  }
25
- })), r = () => {
26
- o.filterSelectionDrawerStatus = !1;
25
+ })), o = () => {
26
+ t.closeFilterDrawer();
27
27
  };
28
- return { __sfc: !0, trans: t, store: o, isApplying: e, footerButtonGroupOptions: s, closeModal: r, applyFilter: () => {
29
- e.value = !0, setTimeout(() => {
30
- console.debug("Filter applied!"), r(), o.generateFilterQuery();
31
- }, 2e3);
28
+ return { __sfc: !0, trans: r, store: t, isApplying: e, footerButtonGroupOptions: s, closeModal: o, applyFilter: () => {
29
+ e.value = !0, t.patchCurrentBlockConfig(
30
+ { filters: t.recommendationConfigs.filters },
31
+ { triggerRefetch: !0 }
32
+ ), o(), e.value = !1;
32
33
  }, WpDrawer: i, Filters: u };
33
34
  }
34
35
  });
35
36
  export {
36
- b as default
37
+ v as default
37
38
  };
@@ -1,6 +1,6 @@
1
1
  import { useToaster as w } from "./useToaster.js";
2
2
  const v = () => {
3
- const { handleError: l } = w(), r = (t = {}) => new Promise((e, a) => {
3
+ const { handleError: n } = w(), m = (t = {}) => new Promise((e, a) => {
4
4
  const o = { ...{
5
5
  minimize: !0,
6
6
  utmEntity: {
@@ -21,9 +21,9 @@ const v = () => {
21
21
  resetDataSavedFlag: !1,
22
22
  disableLineHeightsReplace: !0
23
23
  }, ...t }, s = {
24
- callback: (n, p, d, c, u) => {
25
- n ? a(n) : e({
26
- html: p,
24
+ callback: (l, r, d, c, u) => {
25
+ l ? a(l) : e({
26
+ html: r,
27
27
  ampHtml: d,
28
28
  ampErrors: c,
29
29
  displayConditions: u
@@ -34,15 +34,15 @@ const v = () => {
34
34
  window.StripoEditorApi.actionsApi.compileEmail(s);
35
35
  });
36
36
  return {
37
- getCompiledEmail: r,
37
+ getCompiledEmail: m,
38
38
  getTemplateData: () => new Promise((t) => {
39
- const e = ({ html: a, css: i, width: o, height: m, utmParams: s, syncModulesIds: n }) => t({
39
+ const e = ({ html: a, css: i, width: o, height: p, utmParams: s, syncModulesIds: l }) => t({
40
40
  html: a,
41
41
  css: i,
42
42
  width: o,
43
- height: m,
43
+ height: p,
44
44
  utmParams: s,
45
- syncModulesIds: n
45
+ syncModulesIds: l
46
46
  });
47
47
  window.StripoEditorApi.actionsApi.getTemplateData(e);
48
48
  }),
@@ -56,7 +56,7 @@ const v = () => {
56
56
  displayConditions: a,
57
57
  ampHtml: i = "",
58
58
  ampErrors: o = []
59
- } = await r({ minimize: !1, resetDataSavedFlag: !1, ...t });
59
+ } = await m({ minimize: !1, resetDataSavedFlag: !1, ...t });
60
60
  return {
61
61
  html: e,
62
62
  ampHtml: i,
@@ -64,7 +64,7 @@ const v = () => {
64
64
  displayConditions: a
65
65
  };
66
66
  } catch (e) {
67
- return l(e, "Error loading preview"), {
67
+ return n(e, "Error loading preview"), {
68
68
  html: "",
69
69
  ampHtml: "",
70
70
  ampErrors: [],
@@ -80,17 +80,19 @@ const v = () => {
80
80
  }
81
81
  try {
82
82
  window.StripoEditorApi.actionsApi.updateTimerInClonedTemplate((i, o) => {
83
- i ? (l(i, "Failed to update timer in cloned template"), t(null)) : t(o || null);
83
+ i ? (n(i, "Failed to update timer in cloned template"), t(null)) : t(o || null);
84
84
  });
85
85
  } catch (i) {
86
- l(i, "Failed to call updateTimerInClonedTemplate"), t(null);
86
+ n(i, "Failed to call updateTimerInClonedTemplate"), t(null);
87
87
  }
88
88
  }),
89
89
  updateHtmlAndCss: (t, e) => {
90
90
  window.StripoEditorApi.actionsApi.updateHtmlAndCss(t, e);
91
91
  },
92
92
  editorSave: () => {
93
- window.StripoEditorApi.actionsApi.save();
93
+ window.StripoEditorApi.actionsApi.save((t) => {
94
+ t && n(t, "Failed to save template");
95
+ });
94
96
  }
95
97
  };
96
98
  };
@@ -1,149 +1,171 @@
1
1
  import { useConfig as D } from "./useConfig.js";
2
- import { TemplateTypes as H } from "../enums/defaults.js";
3
- import { DISPLAY_CONDITIONS_REGEX as P, DISPLAY_CONDITIONS_EXCEPTIONS_REGEX as R, CampaignCouldNotBeSavedKey as _, CanNotMakeAnyChangesForRunningKey as G } from "../enums/html-validator.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
4
  import { ToasterTypeOptions as l } from "../enums/toaster.js";
5
- import { itemsBlockDynamicVariables as $ } from "../extensions/Blocks/Items/enums/productEnums.js";
6
- import { useRecommendationStore as j } from "../stores/recommendation.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";
7
8
  import { base64EncodeWithSpecialChars as q } from "../utils/base64.js";
8
- import { useHttp as M } from "./useHttp.js";
9
- import { useToaster as X } from "./useToaster.js";
10
- import { useTranslations as z } from "./useTranslations.js";
11
- const oe = () => {
12
- var d, f;
13
- const { showToaster: c } = X(), { post: h } = M(), { config: v } = D(), a = z(), m = j(), u = ((f = (d = v.value) == null ? void 0 : d.partner) == null ? void 0 : f.messageType) === H.transactional, C = async (e) => {
14
- const t = await h(
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
+ });
28
+ }
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
33
  "/newsletter/template-library/check-template-html-body",
16
34
  { html: q(e) }
17
- ), { status: n, message: r } = t.data;
18
- return n || c({
35
+ ), { status: n, message: c } = t.data;
36
+ return n || a({
19
37
  type: l.Alert,
20
- message: n === void 0 ? r : a("newsletter.invalid-url-link-for-toaster")
21
- }), a(_), r === a(G) && c({
38
+ message: n === void 0 ? c : i("newsletter.invalid-url-link-for-toaster")
39
+ }), i(M), c === i($) && a({
22
40
  type: l.Alert,
23
- message: a("newsletter.already-in-progress")
41
+ message: i("newsletter.already-in-progress")
24
42
  }), n;
25
- }, w = (e) => !["if", "endif", "else", "elif", "now"].includes(e.toLowerCase()), S = (e) => ["if", "endif"].includes(e.toLowerCase()), b = (e, s) => {
43
+ }, b = (e) => !["if", "endif", "else", "elif", "now"].includes(e.toLowerCase()), S = (e) => ["if", "endif"].includes(e.toLowerCase()), w = (e, s) => {
26
44
  const t = e.match(/({%(.*?)%})/g);
27
45
  let n = !0;
28
- return t !== null && !u && t.forEach((r) => {
29
- const i = r.slice(2, -2).trim().match(/(".*?"|[^"\s]+)(?=\s*|\s*$)/g);
30
- if (i && i.length > 0) {
31
- const [o] = i;
32
- w(o) && !s.includes(o) && (c({
46
+ return t !== null && !m && t.forEach((c) => {
47
+ const o = c.slice(2, -2).trim().match(/(".*?"|[^"\s]+)(?=\s*|\s*$)/g);
48
+ if (o && o.length > 0) {
49
+ const [r] = o;
50
+ b(r) && !s.includes(r) && (a({
33
51
  type: l.Warning,
34
- message: a("custom-fields.invalid-custom-fields")
52
+ message: i("custom-fields.invalid-custom-fields")
35
53
  }), n = !1);
36
54
  }
37
55
  }), n;
38
56
  }, E = async (e, s, t) => {
39
- const n = t ? await C(e) : !0;
40
- return b(e, s) && n;
41
- }, A = (e) => e.length > 0 ? !0 : (c({
57
+ const n = t ? await u(e) : !0;
58
+ return w(e, s) && n;
59
+ }, A = (e) => e.length > 0 ? !0 : (a({
42
60
  type: l.Warning,
43
- message: a("newsletter.html-content-is-empty")
44
- }), !1), x = (e) => {
61
+ message: i("newsletter.html-content-is-empty")
62
+ }), !1), k = (e) => {
45
63
  const s = (e.match(/{/gm) || []).length, t = (e.match(/}/gm) || []).length;
46
- return s > t && c({
64
+ return s > t && a({
47
65
  type: l.Warning,
48
- message: a("custom-fields.missing-closing-braces")
49
- }), s < t && c({
66
+ message: i("custom-fields.missing-closing-braces")
67
+ }), s < t && a({
50
68
  type: l.Warning,
51
- message: a("custom-fields.missing-opening-braces")
69
+ message: i("custom-fields.missing-opening-braces")
52
70
  }), s === t;
53
- }, k = (e) => {
71
+ }, x = (e) => {
54
72
  const s = e.match(/{{\s*(\w+\s+((\w+\|\w+)|(\w+)))\s*}}/gm) === null;
55
- return s || c({
73
+ return s || a({
56
74
  type: l.Warning,
57
- message: a("custom-fields.invalid-custom-fields")
75
+ message: i("custom-fields.invalid-custom-fields")
58
76
  }), s;
59
77
  }, T = (e, s) => {
60
78
  const t = e.match(/{{([a-zA-Z0-9_\s]*)}}/gm);
61
- if (t && !u) {
62
- const n = new Set(s.map((i) => i.toLowerCase())), r = [];
63
- if (t.forEach((i) => {
64
- const o = i.slice(2, -2).trim().toLowerCase();
65
- (!n.has(o) || o === "") && r.push(o);
66
- }), r.length > 0) {
67
- const i = `
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
86
  <ul>
69
- ${r.map((o) => `<li>${o}</li>`).join("")}
87
+ ${c.map((r) => `<li>${r}</li>`).join("")}
70
88
  </ul>
71
89
  `;
72
- return c({
90
+ return a({
73
91
  type: l.Alert,
74
- message: a("custom-fields.invalid-custom-fields") + i
92
+ message: i("custom-fields.invalid-custom-fields") + o
75
93
  }), !1;
76
94
  }
77
95
  }
78
96
  return !0;
79
- }, F = (e) => {
97
+ }, I = (e) => {
80
98
  const s = e.match(/{%(.*?)%}/g), t = [];
81
99
  let n = !0;
82
- if (s && s.forEach((r) => {
83
- const i = r.match(P), o = r.match(R), V = (i == null ? void 0 : i.join("")) || "";
84
- (!i || r !== V) && !o && (c({
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({
85
103
  type: l.Alert,
86
- message: a("newsletter.display-conditions-invalid-syntax")
87
- }), n = !1), i && i.forEach((g) => {
88
- g.trim() === "=" && (c({
104
+ message: i("newsletter.display-conditions-invalid-syntax")
105
+ }), n = !1), o && o.forEach((h) => {
106
+ h.trim() === "=" && (a({
89
107
  type: l.Alert,
90
- message: a("custom-conditions.wrong-equality-operators")
108
+ message: i("custom-conditions.wrong-equality-operators")
91
109
  }), n = !1);
92
- const p = g.match(/^[a-zA-Z]*$/g);
93
- p && p.forEach((y) => {
94
- S(y) && t.push(y);
110
+ const C = h.match(/^[a-zA-Z]*$/g);
111
+ C && C.forEach((v) => {
112
+ S(v) && t.push(v);
95
113
  });
96
114
  });
97
115
  }), t.length) {
98
- const r = t.filter((o) => o === "if"), i = t.filter((o) => o === "endif");
99
- r.length !== i.length && (c({
116
+ const c = t.filter((r) => r === "if"), o = t.filter((r) => r === "endif");
117
+ c.length !== o.length && (a({
100
118
  type: l.Alert,
101
- message: a("custom-conditions.missing-if-endif-tag")
119
+ message: i("custom-conditions.missing-if-endif-tag")
102
120
  }), n = !1);
103
121
  }
104
122
  return n;
105
- }, I = (e) => {
123
+ }, F = (e) => {
106
124
  const s = (e.match(/{% /gm) || []).length, t = (e.match(/ %}/gm) || []).length, n = s === t;
107
- return n || c({
125
+ return n || a({
108
126
  type: l.Warning,
109
- message: a("custom-conditions.no-space-after-braces")
127
+ message: i("custom-conditions.no-space-after-braces")
110
128
  }), n;
111
- }, W = (e) => (e.match(/({%(.*?)%})/g) || []).filter((t) => t.includes("if")).map((t) => (t.match(/{{.*}}/gm) || []).length).reduce((t, n) => t + n, 0) > 0 ? (c({
129
+ }, _ = (e) => (e.match(/({%(.*?)%})/g) || []).filter((t) => t.includes("if")).map((t) => (t.match(/{{.*}}/gm) || []).length).reduce((t, n) => t + n, 0) > 0 ? (a({
112
130
  type: l.Warning,
113
- message: a("custom-conditions.no-braces-inside-if-tag")
114
- }), !1) : !0, L = () => m.recommendationConfigs && Object.values(m.recommendationConfigs).find((s) => s.filters.find((t) => t.value === "")) !== void 0 ? (c({
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({
115
133
  type: l.Alert,
116
- message: a("newsletter.fill-all-necessary-fields")
117
- }), !1) : !0, N = (e) => {
134
+ message: i("newsletter.fill-all-necessary-fields")
135
+ }), !1) : !0, O = (e) => {
118
136
  const s = /src="[^"]*\.(svg|pst)"/gm;
119
- return e.match(s) === null ? !0 : (c({
137
+ return e.match(s) === null ? !0 : (a({
120
138
  type: l.Alert,
121
- message: a("newsletter.invalid-image-type")
139
+ message: i("newsletter.invalid-image-type")
122
140
  }), !1);
123
- }, O = (e) => {
141
+ }, W = (e) => {
124
142
  const n = new DOMParser().parseFromString(e, "text/html").querySelectorAll(".checkbox-block-v2");
125
- return Array.from(n).find((i) => {
126
- var o;
127
- return !((o = i.id) != null && o.trim());
128
- }) ? (c({
143
+ return Array.from(n).find((o) => {
144
+ var r;
145
+ return !((r = o.id) != null && r.trim());
146
+ }) ? (a({
129
147
  type: l.Alert,
130
- message: a("unsubscribe-templates.select-checkbox-groups")
148
+ message: i("unsubscribe-templates.select-checkbox-groups")
131
149
  }), !1) : !0;
132
- }, B = (e) => {
150
+ }, R = (e) => {
133
151
  const n = new DOMParser().parseFromString(e, "text/html").querySelectorAll(".radio-button-v2");
134
- return Array.from(n).find((i) => {
135
- var o;
136
- return !((o = i.id) != null && o.trim());
137
- }) ? (c({
152
+ return Array.from(n).find((o) => {
153
+ var r;
154
+ return !((r = o.id) != null && r.trim());
155
+ }) ? (a({
138
156
  type: l.Alert,
139
- message: a("unsubscribe-templates.select-radio-button-groups")
157
+ message: i("unsubscribe-templates.select-radio-button-groups")
140
158
  }), !1) : !0;
141
159
  };
142
160
  return { validateHtml: async (e, s, t = !1) => {
143
- const n = [...s.map((i) => i.value), ...$];
144
- return await E(e, n, t) && A(e) && x(e) && k(e) && T(e, n) && F(e) && I(e) && W(e) && L() && N(e) && O(e) && B(e);
161
+ const n = [
162
+ ...s.map((o) => o.value),
163
+ ...P,
164
+ ...Y()
165
+ ];
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);
145
167
  } };
146
168
  };
147
169
  export {
148
- oe as useHtmlValidator
170
+ le as useHtmlValidator
149
171
  };
@@ -1,27 +1,60 @@
1
- import { MinDeviceViewport as r, DefaultPadding as c } from "../enums/recommendation.js";
2
- const m = () => ({
1
+ import { RecommendationFeedSourceMaps as g, URLS as p } from "../enums/extensions/recommendationBlock.js";
2
+ import { MinDeviceViewport as R, DefaultPadding as b } from "../enums/recommendation.js";
3
+ import { useRecommendationExtensionStore as l } from "../extensions/Blocks/Recommendation/store/recommendation.js";
4
+ import { generateCompleteFilterQuery as x } from "../extensions/Blocks/Recommendation/utils/filterUtil.js";
5
+ import { useConfigStore as C } from "../stores/config.js";
6
+ const N = () => ({
3
7
  calculateCardWidth: ({
4
- mobileLeftPadding: e,
5
- mobileRightPadding: a,
6
- cardsInRow: n,
7
- unresponsive: i
8
+ mobileLeftPadding: i,
9
+ mobileRightPadding: n,
10
+ cardsInRow: o,
11
+ unresponsive: a
8
12
  }) => {
9
- const t = i ? n : 1, o = e + a + (t - 1) * c;
10
- return (r - o) / t;
13
+ const r = a ? o : 1, e = i + n + (r - 1) * b;
14
+ return (R - e) / r;
11
15
  },
12
- getRecommendationCampaignData: (e) => (console.debug(e), {
13
- textTrimming: !1,
14
- orientation: "vertical",
15
- mobileLeftPadding: 0,
16
- mobileRightPadding: 0,
17
- cardsInRow: 2,
18
- unresponsive: !1,
19
- priceBeforeTextValue: "",
20
- priceAfterTextValue: "",
21
- discountBeforeTextValue: "",
22
- discountAfterTextValue: ""
23
- })
16
+ getRecommendationCampaignData: (i) => {
17
+ const n = l(), o = Number(i), a = n.blockStates[o];
18
+ if (!a)
19
+ return {
20
+ textTrimming: !1,
21
+ orientation: "vertical",
22
+ mobileLeftPadding: 0,
23
+ mobileRightPadding: 0,
24
+ cardsInRow: 2,
25
+ unresponsive: !1,
26
+ priceBeforeTextValue: "",
27
+ priceAfterTextValue: "",
28
+ discountBeforeTextValue: "",
29
+ discountAfterTextValue: ""
30
+ };
31
+ const { recommendationConfigs: r } = a, e = r.orientation === "grid" ? "vertical" : "horizontal";
32
+ return {
33
+ textTrimming: r.textTrimming,
34
+ orientation: e,
35
+ mobileLeftPadding: 0,
36
+ mobileRightPadding: 0,
37
+ cardsInRow: r.cardsInRow,
38
+ unresponsive: r.unresponsive,
39
+ priceBeforeTextValue: "",
40
+ priceAfterTextValue: "",
41
+ discountBeforeTextValue: "",
42
+ discountAfterTextValue: ""
43
+ };
44
+ },
45
+ buildCampaignUrl: (i) => {
46
+ var d;
47
+ const n = l(), o = C(), a = Number(i), r = n.blockStates[a];
48
+ if (!r)
49
+ return "";
50
+ const { recommendationConfigs: e } = r, u = ((d = g.find((s) => s.key === e.strategy)) == null ? void 0 : d.path) || "", t = new URLSearchParams();
51
+ t.set("locale", e.language), t.set("currency", e.currencySettings.value), 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}");
52
+ const f = e.filters.filter((s) => s.isValid), c = x(f);
53
+ c && t.set("filter", c), e.shuffleProducts && t.set("shuffle", "true");
54
+ const m = `${p.RECOMMENDATION_API_URL}/v2/${u}?${t.toString()}`;
55
+ return n.recommendationCampaignUrls[i] = m, m;
56
+ }
24
57
  });
25
58
  export {
26
- m as useRecommendation
59
+ N as useRecommendation
27
60
  };