@useinsider/guido 1.0.3-beta.4a63a85 → 1.0.3-beta.4cf7c41

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 (210) hide show
  1. package/README.md +3 -140
  2. package/dist/components/Guido.vue.js +1 -1
  3. package/dist/components/Guido.vue2.js +73 -79
  4. package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
  5. package/dist/components/organisms/header/LeftSlot.vue2.js +15 -16
  6. package/dist/components/organisms/header/RightSlot.vue.js +11 -11
  7. package/dist/components/organisms/header/RightSlot.vue2.js +22 -23
  8. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +18 -20
  9. package/dist/composables/useActionsApi.js +24 -33
  10. package/dist/composables/useGuidoActions.js +9 -19
  11. package/dist/composables/useHtmlCompiler.js +13 -15
  12. package/dist/composables/useHtmlValidator.js +35 -36
  13. package/dist/composables/useSave.js +11 -16
  14. package/dist/composables/useStripo.js +67 -64
  15. package/dist/config/compiler/unsubscribeCompilerRules.js +28 -33
  16. package/dist/enums/defaults.js +9 -16
  17. package/dist/enums/extensions/recommendationBlock.js +2 -2
  18. package/dist/enums/onboarding.js +3 -7
  19. package/dist/enums/unsubscribe.js +25 -27
  20. package/dist/extensions/Blocks/Checkbox/block.js +2 -5
  21. package/dist/extensions/Blocks/Checkbox/control.js +14 -15
  22. package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
  23. package/dist/extensions/Blocks/Checkbox/template.js +9 -14
  24. package/dist/extensions/Blocks/CouponBlock/extension.js +2 -2
  25. package/dist/extensions/Blocks/RadioButton/block.js +2 -5
  26. package/dist/extensions/Blocks/RadioButton/control.js +17 -18
  27. package/dist/extensions/Blocks/RadioButton/template.js +9 -18
  28. package/dist/extensions/Blocks/Recommendation/extension.js +4 -4
  29. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +43 -43
  30. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
  31. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +4 -4
  32. package/dist/extensions/Blocks/Unsubscribe/block.js +27 -27
  33. package/dist/extensions/Blocks/common-control.js +110 -174
  34. package/dist/extensions/DynamicContent/dynamic-content-modal.js +19 -25
  35. package/dist/extensions/DynamicContent/dynamic-content.js +33 -128
  36. package/dist/guido.css +1 -1
  37. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +168 -213
  38. package/dist/node_modules/lodash-es/_arrayLikeKeys.js +12 -13
  39. package/dist/node_modules/lodash-es/keysIn.js +3 -3
  40. package/dist/package.json.js +1 -1
  41. package/dist/services/recommendationApi.js +19 -13
  42. package/dist/services/stripoApi.js +1 -1
  43. package/dist/src/@types/generic.d.ts +6 -36
  44. package/dist/src/components/Guido.vue.d.ts +2 -3
  45. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  46. package/dist/src/composables/useActionsApi.d.ts +0 -1
  47. package/dist/src/composables/useGuidoActions.d.ts +0 -9
  48. package/dist/src/enums/onboarding.d.ts +0 -4
  49. package/dist/src/extensions/Blocks/Checkbox/block.d.ts +0 -1
  50. package/dist/src/extensions/Blocks/Checkbox/template.d.ts +1 -1
  51. package/dist/src/extensions/Blocks/RadioButton/block.d.ts +0 -1
  52. package/dist/src/extensions/Blocks/RadioButton/template.d.ts +1 -1
  53. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
  54. package/dist/src/extensions/Blocks/common-control.d.ts +7 -44
  55. package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +2 -9
  56. package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +2 -52
  57. package/dist/src/stores/config.d.ts +2 -9
  58. package/dist/src/stores/dynamic-content.d.ts +3 -3
  59. package/dist/src/stores/editor.d.ts +1 -1
  60. package/dist/src/stores/onboarding.d.ts +1 -335
  61. package/dist/src/stores/preview.d.ts +1 -1
  62. package/dist/src/stores/recommendation.d.ts +1 -1
  63. package/dist/src/stores/save-as-template.d.ts +1 -1
  64. package/dist/src/stores/toaster.d.ts +1 -1
  65. package/dist/src/stores/unsubscribe.d.ts +1 -1
  66. package/dist/src/stores/version-history.d.ts +1 -1
  67. package/dist/src/utils/genericUtil.d.ts +0 -1
  68. package/dist/static/styles/components/narrow-panel.css.js +0 -10
  69. package/dist/static/styles/customEditorStyle.css.js +1 -1
  70. package/dist/stores/config.js +5 -5
  71. package/dist/stores/dynamic-content.js +2 -2
  72. package/dist/stores/editor.js +1 -1
  73. package/dist/stores/onboarding.js +36 -44
  74. package/dist/stores/preview.js +1 -1
  75. package/dist/stores/recommendation.js +3 -3
  76. package/dist/stores/save-as-template.js +2 -2
  77. package/dist/stores/toaster.js +1 -1
  78. package/dist/stores/unsubscribe.js +1 -1
  79. package/dist/stores/version-history.js +4 -4
  80. package/dist/utils/genericUtil.js +8 -18
  81. package/package.json +4 -4
  82. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +0 -21
  83. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +0 -99
  84. package/dist/composables/useBlocksConfig.js +0 -48
  85. package/dist/composables/useTimerClone.js +0 -75
  86. package/dist/config/compiler/itemsCompilerRules.js +0 -14
  87. package/dist/extensions/Blocks/Items/block.js +0 -67
  88. package/dist/extensions/Blocks/Items/controls/button/link.js +0 -68
  89. package/dist/extensions/Blocks/Items/controls/cardComposition.js +0 -193
  90. package/dist/extensions/Blocks/Items/controls/image/link.js +0 -68
  91. package/dist/extensions/Blocks/Items/controls/index.js +0 -217
  92. package/dist/extensions/Blocks/Items/controls/name/trimming.js +0 -70
  93. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +0 -107
  94. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +0 -123
  95. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +0 -76
  96. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +0 -61
  97. package/dist/extensions/Blocks/Items/controls/settingsControl.js +0 -312
  98. package/dist/extensions/Blocks/Items/enums/controlEnums.js +0 -5
  99. package/dist/extensions/Blocks/Items/enums/productEnums.js +0 -273
  100. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -76
  101. package/dist/extensions/Blocks/Items/extension.js +0 -19
  102. package/dist/extensions/Blocks/Items/iconsRegistry.js +0 -32
  103. package/dist/extensions/Blocks/Items/items.css.js +0 -23
  104. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +0 -62
  105. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +0 -60
  106. package/dist/extensions/Blocks/Items/settingsPanel.js +0 -131
  107. package/dist/extensions/Blocks/Items/store/items-block.js +0 -71
  108. package/dist/extensions/Blocks/Items/template.js +0 -189
  109. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  110. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  111. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -67
  112. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -44
  113. package/dist/extensions/Blocks/controlFactories.js +0 -223
  114. package/dist/node_modules/lodash-es/_DataView.js +0 -6
  115. package/dist/node_modules/lodash-es/_Promise.js +0 -6
  116. package/dist/node_modules/lodash-es/_Set.js +0 -6
  117. package/dist/node_modules/lodash-es/_SetCache.js +0 -13
  118. package/dist/node_modules/lodash-es/_WeakMap.js +0 -6
  119. package/dist/node_modules/lodash-es/_arrayFilter.js +0 -10
  120. package/dist/node_modules/lodash-es/_arrayMap.js +0 -8
  121. package/dist/node_modules/lodash-es/_arrayPush.js +0 -8
  122. package/dist/node_modules/lodash-es/_arraySome.js +0 -9
  123. package/dist/node_modules/lodash-es/_baseEach.js +0 -6
  124. package/dist/node_modules/lodash-es/_baseFlatten.js +0 -13
  125. package/dist/node_modules/lodash-es/_baseForOwn.js +0 -8
  126. package/dist/node_modules/lodash-es/_baseGet.js +0 -11
  127. package/dist/node_modules/lodash-es/_baseGetAllKeys.js +0 -9
  128. package/dist/node_modules/lodash-es/_baseHasIn.js +0 -6
  129. package/dist/node_modules/lodash-es/_baseIsEqual.js +0 -8
  130. package/dist/node_modules/lodash-es/_baseIsEqualDeep.js +0 -32
  131. package/dist/node_modules/lodash-es/_baseIsMatch.js +0 -29
  132. package/dist/node_modules/lodash-es/_baseIteratee.js +0 -11
  133. package/dist/node_modules/lodash-es/_baseKeys.js +0 -14
  134. package/dist/node_modules/lodash-es/_baseMap.js +0 -11
  135. package/dist/node_modules/lodash-es/_baseMatches.js +0 -12
  136. package/dist/node_modules/lodash-es/_baseMatchesProperty.js +0 -17
  137. package/dist/node_modules/lodash-es/_baseProperty.js +0 -8
  138. package/dist/node_modules/lodash-es/_basePropertyDeep.js +0 -9
  139. package/dist/node_modules/lodash-es/_baseRange.js +0 -9
  140. package/dist/node_modules/lodash-es/_baseToString.js +0 -18
  141. package/dist/node_modules/lodash-es/_baseTrim.js +0 -8
  142. package/dist/node_modules/lodash-es/_cacheHas.js +0 -6
  143. package/dist/node_modules/lodash-es/_castPath.js +0 -10
  144. package/dist/node_modules/lodash-es/_createBaseEach.js +0 -15
  145. package/dist/node_modules/lodash-es/_createRange.js +0 -11
  146. package/dist/node_modules/lodash-es/_equalArrays.js +0 -40
  147. package/dist/node_modules/lodash-es/_equalByTag.js +0 -45
  148. package/dist/node_modules/lodash-es/_equalObjects.js +0 -36
  149. package/dist/node_modules/lodash-es/_getAllKeys.js +0 -9
  150. package/dist/node_modules/lodash-es/_getMatchData.js +0 -12
  151. package/dist/node_modules/lodash-es/_getSymbols.js +0 -10
  152. package/dist/node_modules/lodash-es/_getTag.js +0 -28
  153. package/dist/node_modules/lodash-es/_hasPath.js +0 -19
  154. package/dist/node_modules/lodash-es/_isFlattenable.js +0 -10
  155. package/dist/node_modules/lodash-es/_isKey.js +0 -12
  156. package/dist/node_modules/lodash-es/_isStrictComparable.js +0 -7
  157. package/dist/node_modules/lodash-es/_mapToArray.js +0 -9
  158. package/dist/node_modules/lodash-es/_matchesStrictComparable.js +0 -8
  159. package/dist/node_modules/lodash-es/_memoizeCapped.js +0 -11
  160. package/dist/node_modules/lodash-es/_nativeKeys.js +0 -5
  161. package/dist/node_modules/lodash-es/_setCacheAdd.js +0 -7
  162. package/dist/node_modules/lodash-es/_setCacheHas.js +0 -6
  163. package/dist/node_modules/lodash-es/_setToArray.js +0 -9
  164. package/dist/node_modules/lodash-es/_stringToPath.js +0 -10
  165. package/dist/node_modules/lodash-es/_toKey.js +0 -10
  166. package/dist/node_modules/lodash-es/_trimmedEndIndex.js +0 -9
  167. package/dist/node_modules/lodash-es/flatMap.js +0 -8
  168. package/dist/node_modules/lodash-es/get.js +0 -8
  169. package/dist/node_modules/lodash-es/hasIn.js +0 -8
  170. package/dist/node_modules/lodash-es/isSymbol.js +0 -9
  171. package/dist/node_modules/lodash-es/keys.js +0 -9
  172. package/dist/node_modules/lodash-es/map.js +0 -11
  173. package/dist/node_modules/lodash-es/property.js +0 -10
  174. package/dist/node_modules/lodash-es/range.js +0 -5
  175. package/dist/node_modules/lodash-es/stubArray.js +0 -6
  176. package/dist/node_modules/lodash-es/toFinite.js +0 -14
  177. package/dist/node_modules/lodash-es/toNumber.js +0 -22
  178. package/dist/node_modules/lodash-es/toString.js +0 -7
  179. package/dist/src/components/organisms/onboarding/ItemsOnboarding.vue.d.ts +0 -2
  180. package/dist/src/composables/useBlocksConfig.d.ts +0 -11
  181. package/dist/src/composables/useTimerClone.d.ts +0 -6
  182. package/dist/src/config/compiler/itemsCompilerRules.d.ts +0 -2
  183. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -27
  184. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -14
  185. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +0 -33
  186. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -14
  187. package/dist/src/extensions/Blocks/Items/controls/index.d.ts +0 -501
  188. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -14
  189. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -19
  190. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -21
  191. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -14
  192. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -13
  193. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -48
  194. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +0 -61
  195. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +0 -162
  196. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +0 -49
  197. package/dist/src/extensions/Blocks/Items/extension.d.ts +0 -2
  198. package/dist/src/extensions/Blocks/Items/iconsRegistry.d.ts +0 -4
  199. package/dist/src/extensions/Blocks/Items/settingsPanel.d.ts +0 -4
  200. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -41
  201. package/dist/src/extensions/Blocks/Items/template.d.ts +0 -24
  202. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  203. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  204. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -44
  205. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  206. package/dist/src/extensions/Blocks/controlFactories.d.ts +0 -312
  207. package/dist/src/utils/environmentUtil.d.ts +0 -5
  208. package/dist/src/utils/pairProductVariables.d.ts +0 -7
  209. package/dist/utils/environmentUtil.js +0 -4
  210. package/dist/utils/pairProductVariables.js +0 -136
@@ -1,6 +1,6 @@
1
- import { useToaster as w } from "./useToaster.js";
1
+ import { useToaster as g } from "./useToaster.js";
2
2
  const A = () => {
3
- const { handleError: l } = w(), s = (e = {}) => new Promise((t, a) => {
3
+ const { handleError: l } = g(), n = (t = {}) => new Promise((e, a) => {
4
4
  const i = { ...{
5
5
  minimize: !0,
6
6
  utmEntity: {
@@ -17,16 +17,16 @@ const A = () => {
17
17
  ]
18
18
  },
19
19
  mergeTags: ["Tag1", "Tag2"],
20
- forceAmp: !1,
20
+ forseAmp: !1,
21
21
  resetDataSavedFlag: !1,
22
22
  disableLineHeightsReplace: !0
23
- }, ...e }, m = {
24
- callback: (n, p, c, d, u) => {
25
- n ? a(n) : t({
26
- html: p,
27
- ampHtml: c,
28
- ampErrors: d,
29
- displayConditions: u
23
+ }, ...t }, m = {
24
+ callback: (s, c, p, u, d) => {
25
+ s ? a(s) : e({
26
+ html: c,
27
+ ampHtml: p,
28
+ ampErrors: u,
29
+ displayConditions: d
30
30
  });
31
31
  },
32
32
  ...i
@@ -34,53 +34,44 @@ const A = () => {
34
34
  window.StripoEditorApi.actionsApi.compileEmail(m);
35
35
  });
36
36
  return {
37
- getCompiledEmail: s,
38
- getTemplateData: () => new Promise((e) => {
39
- const t = ({ html: a, css: o, width: i, height: r, utmParams: m, syncModulesIds: n }) => e({
37
+ getCompiledEmail: n,
38
+ getTemplateData: () => new Promise((t) => {
39
+ const e = ({ html: a, css: o, width: i, height: r, utmParams: m, syncModulesIds: s }) => t({
40
40
  html: a,
41
41
  css: o,
42
42
  width: i,
43
43
  height: r,
44
44
  utmParams: m,
45
- syncModulesIds: n
45
+ syncModulesIds: s
46
46
  });
47
- window.StripoEditorApi.actionsApi.getTemplateData(t);
47
+ window.StripoEditorApi.actionsApi.getTemplateData(e);
48
48
  }),
49
- activateCustomViewStyles: (e = !0) => {
50
- window.StripoEditorApi.actionsApi.activateCustomViewStyles(e);
49
+ activateCustomViewStyles: (t = !0) => {
50
+ window.StripoEditorApi.actionsApi.activateCustomViewStyles(t);
51
51
  },
52
- getPreviewData: async (e) => {
52
+ getPreviewData: async (t) => {
53
53
  try {
54
54
  const {
55
- html: t,
55
+ html: e,
56
56
  displayConditions: a,
57
57
  ampHtml: o = "",
58
58
  ampErrors: i = []
59
- } = await s({ minimize: !1, resetDataSavedFlag: !1, ...e });
59
+ } = await n({ minimize: !1, resetDataSavedFlag: !1, ...t });
60
60
  return {
61
- html: t,
61
+ html: e,
62
62
  ampHtml: o,
63
63
  ampErrors: i,
64
64
  displayConditions: a
65
65
  };
66
- } catch (t) {
67
- return l(t, "Error loading preview"), {
66
+ } catch (e) {
67
+ return l(e, "Error loading preview"), {
68
68
  html: "",
69
69
  ampHtml: "",
70
70
  ampErrors: [],
71
71
  displayConditions: []
72
72
  };
73
73
  }
74
- },
75
- updateTimerInClonedTemplate: () => new Promise((e) => {
76
- try {
77
- window.StripoEditorApi.actionsApi.updateTimerInClonedTemplate((t, a) => {
78
- t ? (l(t, "Failed to update timer in cloned template"), e(null)) : e(a || null);
79
- });
80
- } catch (t) {
81
- l(t, "Failed to call updateTimerInClonedTemplate"), e(null);
82
- }
83
- })
74
+ }
84
75
  };
85
76
  };
86
77
  export {
@@ -1,6 +1,6 @@
1
1
  import { provideValue as o, useInjectedValue as t } from "./useProvideInject.js";
2
- const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symbol.for("guido.save.complete"), a = Symbol.for("guido.test.email.click"), i = (e) => {
3
- o(r, e.onBack), o(n, e.onSaveStart), o(c, e.onSaveComplete), o(a, e.onTestEmailClick);
2
+ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), a = Symbol.for("guido.save.complete"), s = (e) => {
3
+ o(r, e.onBack), o(n, e.onSaveStart), o(a, e.onSaveComplete);
4
4
  }, u = () => {
5
5
  try {
6
6
  return t(r);
@@ -9,7 +9,7 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symb
9
9
  "useBack: No back handler provided. Make sure Guido component is in the component tree."
10
10
  );
11
11
  }
12
- }, l = () => {
12
+ }, d = () => {
13
13
  try {
14
14
  return t(n);
15
15
  } catch {
@@ -17,31 +17,21 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symb
17
17
  "useSaveStart: No save start handler provided. Make sure Guido component is in the component tree."
18
18
  );
19
19
  }
20
- }, d = () => {
21
- try {
22
- return t(c);
23
- } catch {
24
- throw new Error(
25
- "useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
26
- );
27
- }
28
- }, m = () => {
20
+ }, i = () => {
29
21
  try {
30
22
  return t(a);
31
23
  } catch {
32
24
  throw new Error(
33
- "useTestEmailClick: No test email click handler provided. Make sure Guido component is in the component tree."
25
+ "useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
34
26
  );
35
27
  }
36
28
  };
37
29
  export {
38
30
  r as BACK_KEY,
39
- c as SAVE_COMPLETE_KEY,
31
+ a as SAVE_COMPLETE_KEY,
40
32
  n as SAVE_START_KEY,
41
- a as TEST_EMAIL_CLICK_KEY,
42
- i as provideGuidoActions,
33
+ s as provideGuidoActions,
43
34
  u as useBack,
44
- d as useSaveComplete,
45
- l as useSaveStart,
46
- m as useTestEmailClick
35
+ i as useSaveComplete,
36
+ d as useSaveStart
47
37
  };
@@ -1,27 +1,25 @@
1
1
  import { defaultHtmlCompilerRules as t } from "../config/compiler/htmlCompilerRules.js";
2
- import { itemsCompilerRules as p } from "../config/compiler/itemsCompilerRules.js";
3
- import { outlookCompilerRules as s } from "../config/compiler/outlookCompilerRules.js";
4
- import { recommendationCompilerRules as u } from "../config/compiler/recommendationCompilerRules.js";
5
- import { socialCompilerRules as n } from "../config/compiler/socialCompilerRules.js";
6
- import { unsubscribeCompilerRules as c } from "../config/compiler/unsubscribeCompilerRules.js";
7
- import { createHtmlCompiler as f } from "../utils/htmlCompiler.js";
8
- import { useConfig as R } from "./useConfig.js";
9
- const x = () => {
10
- const { config: e } = R(), m = e.htmlCompilerRules || [], l = [
2
+ import { outlookCompilerRules as p } from "../config/compiler/outlookCompilerRules.js";
3
+ import { recommendationCompilerRules as s } from "../config/compiler/recommendationCompilerRules.js";
4
+ import { socialCompilerRules as u } from "../config/compiler/socialCompilerRules.js";
5
+ import { unsubscribeCompilerRules as n } from "../config/compiler/unsubscribeCompilerRules.js";
6
+ import { createHtmlCompiler as c } from "../utils/htmlCompiler.js";
7
+ import { useConfig as f } from "./useConfig.js";
8
+ const h = () => {
9
+ const { config: e } = f(), l = e.htmlCompilerRules || [], m = [
11
10
  ...!!e.ignoreDefaultHtmlCompilerRules ? [] : t,
12
- ...u,
13
- ...c,
14
- ...p,
15
11
  ...s,
16
12
  ...n,
17
- ...m.map((o, i) => ({
13
+ ...p,
14
+ ...u,
15
+ ...l.map((o, i) => ({
18
16
  ...o,
19
17
  priority: o.priority + 1e3 + i
20
18
  // Ensure additional rules run after default rules
21
19
  }))
22
- ], r = f(l);
20
+ ], r = c(m);
23
21
  return { compileHtml: (o) => r.compile(o) };
24
22
  };
25
23
  export {
26
- x as useHtmlCompiler
24
+ h as useHtmlCompiler
27
25
  };
@@ -1,19 +1,18 @@
1
- import { useConfig as V } from "./useConfig.js";
2
- import { TemplateTypes as D } from "../enums/defaults.js";
3
- import { DISPLAY_CONDITIONS_REGEX as H, DISPLAY_CONDITIONS_EXCEPTIONS_REGEX as P, CampaignCouldNotBeSavedKey as R, CanNotMakeAnyChangesForRunningKey as _ } from "../enums/html-validator.js";
1
+ import { useConfig as H } from "./useConfig.js";
2
+ import { TemplateTypes as V } from "../enums/defaults.js";
3
+ import { DISPLAY_CONDITIONS_REGEX as D, DISPLAY_CONDITIONS_EXCEPTIONS_REGEX as P, CampaignCouldNotBeSavedKey as R, CanNotMakeAnyChangesForRunningKey as _ } from "../enums/html-validator.js";
4
4
  import { ToasterTypeOptions as l } from "../enums/toaster.js";
5
- import { itemsBlockDynamicVariables as G } from "../extensions/Blocks/Items/enums/productEnums.js";
6
- import { useRecommendationStore as $ } from "../stores/recommendation.js";
7
- import { base64EncodeWithSpecialChars as j } from "../utils/base64.js";
8
- import { useHttp as q } from "./useHttp.js";
9
- import { useToaster as M } from "./useToaster.js";
10
- import { useTranslations as X } from "./useTranslations.js";
11
- const ie = () => {
5
+ import { useRecommendationStore as G } from "../stores/recommendation.js";
6
+ import { base64EncodeWithSpecialChars as $ } from "../utils/base64.js";
7
+ import { useHttp as j } from "./useHttp.js";
8
+ import { useToaster as q } from "./useToaster.js";
9
+ import { useTranslations as M } from "./useTranslations.js";
10
+ const se = () => {
12
11
  var d;
13
- const { showToaster: c } = M(), { post: y } = q(), { config: h } = V(), a = X(), m = $(), u = ((d = h.partner) == null ? void 0 : d.messageType) === D.transactional, v = async (e) => {
12
+ const { showToaster: c } = q(), { post: y } = j(), { config: h } = H(), a = M(), m = G(), u = ((d = h.partner) == null ? void 0 : d.messageType) === V.transactional, v = async (e) => {
14
13
  const t = await y(
15
14
  "/newsletter/template-library/check-template-html-body",
16
- { html: j(e) }
15
+ { html: $(e) }
17
16
  ), { status: n, message: r } = t.data;
18
17
  return n || c({
19
18
  type: l.Alert,
@@ -26,10 +25,10 @@ const ie = () => {
26
25
  const t = e.match(/({%(.*?)%})/g);
27
26
  let n = !0;
28
27
  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
- C(o) && !s.includes(o) && (c({
28
+ const o = r.slice(2, -2).trim().match(/(".*?"|[^"\s]+)(?=\s*|\s*$)/g);
29
+ if (o && o.length > 0) {
30
+ const [i] = o;
31
+ C(i) && !s.includes(i) && (c({
33
32
  type: l.Warning,
34
33
  message: a("custom-fields.invalid-custom-fields")
35
34
  }), n = !1);
@@ -59,19 +58,19 @@ const ie = () => {
59
58
  }, k = (e, s) => {
60
59
  const t = e.match(/{{([a-zA-Z0-9_\s]*)}}/gm);
61
60
  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);
61
+ const n = new Set(s.map((o) => o.toLowerCase())), r = [];
62
+ if (t.forEach((o) => {
63
+ const i = o.slice(2, -2).trim().toLowerCase();
64
+ (!n.has(i) || i === "") && r.push(i);
66
65
  }), r.length > 0) {
67
- const i = `
66
+ const o = `
68
67
  <ul>
69
- ${r.map((o) => `<li>${o}</li>`).join("")}
68
+ ${r.map((i) => `<li>${i}</li>`).join("")}
70
69
  </ul>
71
70
  `;
72
71
  return c({
73
72
  type: l.Alert,
74
- message: a("custom-fields.invalid-custom-fields") + i
73
+ message: a("custom-fields.invalid-custom-fields") + o
75
74
  }), !1;
76
75
  }
77
76
  }
@@ -80,11 +79,11 @@ const ie = () => {
80
79
  const s = e.match(/{%(.*?)%}/g), t = [];
81
80
  let n = !0;
82
81
  if (s && s.forEach((r) => {
83
- const i = r.match(H), o = r.match(P), B = (i == null ? void 0 : i.join("")) || "";
84
- (!i || r !== B) && !o && (c({
82
+ const o = r.match(D), i = r.match(P), B = (o == null ? void 0 : o.join("")) || "";
83
+ (!o || r !== B) && !i && (c({
85
84
  type: l.Alert,
86
85
  message: a("newsletter.display-conditions-invalid-syntax")
87
- }), n = !1), i && i.forEach((f) => {
86
+ }), n = !1), o && o.forEach((f) => {
88
87
  f.trim() === "=" && (c({
89
88
  type: l.Alert,
90
89
  message: a("custom-conditions.wrong-equality-operators")
@@ -95,8 +94,8 @@ const ie = () => {
95
94
  });
96
95
  });
97
96
  }), t.length) {
98
- const r = t.filter((o) => o === "if"), i = t.filter((o) => o === "endif");
99
- r.length !== i.length && (c({
97
+ const r = t.filter((i) => i === "if"), o = t.filter((i) => i === "endif");
98
+ r.length !== o.length && (c({
100
99
  type: l.Alert,
101
100
  message: a("custom-conditions.missing-if-endif-tag")
102
101
  }), n = !1);
@@ -122,28 +121,28 @@ const ie = () => {
122
121
  }), !1);
123
122
  }, N = (e) => {
124
123
  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());
124
+ return Array.from(n).find((o) => {
125
+ var i;
126
+ return !((i = o.id) != null && i.trim());
128
127
  }) ? (c({
129
128
  type: l.Alert,
130
129
  message: a("unsubscribe-templates.select-checkbox-groups")
131
130
  }), !1) : !0;
132
131
  }, O = (e) => {
133
132
  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());
133
+ return Array.from(n).find((o) => {
134
+ var i;
135
+ return !((i = o.id) != null && i.trim());
137
136
  }) ? (c({
138
137
  type: l.Alert,
139
138
  message: a("unsubscribe-templates.select-radio-button-groups")
140
139
  }), !1) : !0;
141
140
  };
142
141
  return { validateHtml: async (e, s, t = !1) => {
143
- const n = [...s.map((i) => i.value), ...G];
142
+ const n = s.map((o) => o.value);
144
143
  return await b(e, n, t) && E(e) && A(e) && x(e) && k(e, n) && T(e) && F(e) && I(e) && W() && L(e) && N(e) && O(e);
145
144
  } };
146
145
  };
147
146
  export {
148
- ie as useHtmlValidator
147
+ se as useHtmlValidator
149
148
  };
@@ -1,20 +1,15 @@
1
- import { useSaveStart as l, useSaveComplete as c } from "./useGuidoActions.js";
2
- import { useTemplatePreparation as d } from "../utils/templatePreparation.js";
3
- import { useHtmlValidator as p } from "./useHtmlValidator.js";
4
- import { useTimerClone as u } from "./useTimerClone.js";
5
- const g = () => {
6
- const t = l(), a = c(), { validateHtml: r } = p(), { cloneTimersOnSave: i } = u();
7
- return { save: async (s = !1) => {
8
- t();
9
- const { prepareTemplateDetails: o } = d(), e = await o();
10
- if (!await r(e.compiledHtml, e.dynamicContentList, !0))
11
- return;
12
- const m = e.rawHtml.match(/esd-timer-id="(\d+)"/g);
13
- e.rawHtml = await i(e.rawHtml);
14
- const n = e.rawHtml.match(/esd-timer-id="(\d+)"/g);
15
- return console.debug("[SAVE] Timer IDs - Original:", m, "New:", n), s || a(e), e;
1
+ import { useSaveStart as i, useSaveComplete as m } from "./useGuidoActions.js";
2
+ import { useTemplatePreparation as n } from "../utils/templatePreparation.js";
3
+ import { useHtmlValidator as l } from "./useHtmlValidator.js";
4
+ const f = () => {
5
+ const e = i(), a = m(), { validateHtml: s } = l();
6
+ return { save: async (o = !1) => {
7
+ e();
8
+ const { prepareTemplateDetails: r } = n(), t = await r();
9
+ if (await s(t.compiledHtml, t.dynamicContentList, !0))
10
+ return o || a(t), t;
16
11
  } };
17
12
  };
18
13
  export {
19
- g as useSave
14
+ f as useSave
20
15
  };
@@ -1,27 +1,29 @@
1
- import { useActionsApi as V } from "./useActionsApi.js";
2
- import { useBlocksConfig as _ } from "./useBlocksConfig.js";
3
- import { useConfig as A } from "./useConfig.js";
4
- import { useCustomInterfaceAppearance as B } from "./useCustomInterfaceAppearance.js";
5
- import { useStripoEventHandler as v } from "./useStripoEventHandler.js";
6
- import { useTimerClone as F } from "./useTimerClone.js";
7
- import { useToaster as I } from "./useToaster.js";
8
- import { displayConditions as M } from "../enums/displayConditions.js";
9
- import { useStripoApi as U } from "../services/stripoApi.js";
10
- import D from "../static/styles/customEditorStyle.css.js";
11
- import { useEditorStore as P } from "../stores/editor.js";
12
- import { dynamicContentToMergeTags as H } from "../utils/genericUtil.js";
13
- import O from "../package.json.js";
14
- const Y = (c) => {
15
- const { config: u } = A(), { handleError: p } = I(), { getToken: m, getCustomFonts: C } = U(), { handleEvent: S } = v(), { getStripoBlocksConfig: E } = _(), w = async (i, r = []) => {
16
- var g, y;
17
- const e = P(), { html: s, css: f, forceRecreate: a } = i, { baseBlocks: t, extensions: d } = await E();
1
+ import { useActionsApi as f } from "./useActionsApi.js";
2
+ import { useCustomInterfaceAppearance as E } from "./useCustomInterfaceAppearance.js";
3
+ import { useStripoEventHandler as S } from "./useStripoEventHandler.js";
4
+ import { useToaster as C } from "./useToaster.js";
5
+ import { displayConditions as y } from "../enums/displayConditions.js";
6
+ import h from "../extensions/Blocks/Checkbox/extension.js";
7
+ import w from "../extensions/Blocks/CouponBlock/extension.js";
8
+ import b from "../extensions/Blocks/RadioButton/extension.js";
9
+ import V from "../extensions/Blocks/Recommendation/extension.js";
10
+ import _ from "../extensions/Blocks/Unsubscribe/extension.js";
11
+ import k from "../extensions/DynamicContent/extension.js";
12
+ import { useStripoApi as B } from "../services/stripoApi.js";
13
+ import x from "../static/styles/customEditorStyle.css.js";
14
+ import { useEditorStore as F } from "../stores/editor.js";
15
+ import { dynamicContentToMergeTags as A } from "../utils/genericUtil.js";
16
+ import T from "../package.json.js";
17
+ const G = (a) => {
18
+ const { handleError: d } = C(), { getToken: u, getCustomFonts: m } = B(), { handleEvent: p } = S(), l = (r, i = []) => {
19
+ const t = F(), { html: n, css: c, forceRecreate: s } = r;
18
20
  window.UIEditor.initEditor(
19
21
  document.querySelector("#guido-editor"),
20
22
  {
21
- metadata: c,
22
- html: s,
23
- css: f,
24
- forceRecreate: a,
23
+ metadata: a,
24
+ html: n,
25
+ css: c,
26
+ forceRecreate: s,
25
27
  locale: "en",
26
28
  undoButtonSelector: "#guido__undo-button",
27
29
  redoButtonSelector: "#guido__redo-button",
@@ -31,88 +33,89 @@ const Y = (c) => {
31
33
  customAppearanceMergetags: !0,
32
34
  customAppearanceMergetagsBorderColor: "#f1f3fe",
33
35
  customAppearanceMergetagsBackgroundColor: "#f1f3fe",
34
- customViewStyles: D,
35
- conditionsEnabled: ((g = u.features) == null ? void 0 : g.displayConditions) ?? !0,
36
- customConditionsEnabled: ((y = u.features) == null ? void 0 : y.displayConditions) ?? !0,
37
- conditionCategories: M,
36
+ customViewStyles: x,
37
+ conditionsEnabled: !0,
38
+ customConditionsEnabled: !0,
39
+ conditionCategories: y,
38
40
  enableXSSSecurity: !0,
39
- messageSettingsEnabled: !0,
40
- displayGmailAnnotations: !0,
41
- displayHiddenPreheader: !1,
42
- displayTitle: !1,
43
- displayUTM: !1,
44
- selectElementAfterDrop: !0,
45
- ...t ? { baseBlocks: t } : {},
41
+ messageSettingsEnabled: !1,
42
+ selectBlockAfterDropFromSettingsPanel: !0,
46
43
  editorFonts: {
47
44
  showDefaultStandardFonts: !0,
48
45
  showDefaultNotStandardFonts: !0,
49
- customFonts: r
46
+ customFonts: i
50
47
  },
51
48
  mergeTags: [
52
49
  {
53
- entries: H(c.preselectedDynamicContentList)
50
+ entries: A(a.preselectedDynamicContentList)
54
51
  }
55
52
  ],
56
53
  async onTokenRefreshRequest(o) {
57
54
  try {
58
- const n = await m();
59
- o(n);
60
- } catch (n) {
61
- p(n, "Failed to refresh token");
55
+ const e = await u();
56
+ o(e);
57
+ } catch (e) {
58
+ d(e, "Failed to refresh token");
62
59
  }
63
60
  },
64
61
  onTemplateLoaded() {
65
- var o, n;
66
62
  try {
67
- const { importCss: l } = B(), { activateCustomViewStyles: T, updateTimerInClonedTemplate: b } = V(), { updateTimersOnLoad: k } = F();
68
- l(), T(), typeof ((n = (o = window.StripoEditorApi) == null ? void 0 : o.actionsApi) == null ? void 0 : n.updateTimerInClonedTemplate) == "function" ? b() : k(m), c.onReady(), e.isStripoInitialized = !0, e.loadingStatus = !1, setTimeout(() => {
69
- e.hasChanges = !1;
63
+ const { importCss: o } = E(), { activateCustomViewStyles: e } = f();
64
+ o(), e(), a.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
65
+ t.hasChanges = !1;
70
66
  }, 1e3);
71
- } catch (l) {
72
- p(l, "Failed to load custom interface appearance");
67
+ } catch (o) {
68
+ d(o, "Failed to load custom interface appearance");
73
69
  }
74
70
  },
75
71
  onCodeEditorVisibilityChanged(o) {
76
- e.isCodeEditorOpen = o;
72
+ t.isCodeEditorOpen = o;
77
73
  },
78
74
  onEditorVisualModeChanged(o) {
79
- e.editorVisualMode = o.toLowerCase();
75
+ t.editorVisualMode = o.toLowerCase();
80
76
  },
81
77
  onVersionHistoryVisibilityChanged(o) {
82
- e.isVersionHistoryOpen = o;
78
+ t.isVersionHistoryOpen = o;
83
79
  },
84
80
  onDataChanged() {
85
- e.hasChanges = !0;
81
+ t.hasChanges = !0;
86
82
  },
87
- onEvent: S,
83
+ onEvent: p,
88
84
  ignoreClickOutsideSelectors: [
89
85
  "#guido-dynamic-content-modal",
90
86
  ".in-on-board-wrapper",
91
87
  ".in-drawer__container"
92
88
  ],
93
- extensions: d
89
+ extensions: [
90
+ k,
91
+ h,
92
+ b,
93
+ V,
94
+ _,
95
+ w
96
+ ]
94
97
  }
95
98
  );
96
- }, h = (i) => new Promise((r, e) => {
97
- var d;
99
+ }, g = (r) => new Promise((i, t) => {
100
+ var e;
98
101
  if (document.getElementById("UiEditorScript")) {
99
- i(), r();
102
+ r(), i();
100
103
  return;
101
104
  }
102
- const s = O.guido, a = `https://email-static.useinsider.com/guido/${(d = s == null ? void 0 : s.stripo) == null ? void 0 : d.version}/UIEditor.js`, t = document.createElement("script");
103
- t.id = "UiEditorScript", t.type = "module", t.src = a, t.onload = () => {
104
- i(), r();
105
- }, t.onerror = () => {
106
- e(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
107
- }, document.body.appendChild(t);
105
+ const n = T.guido, s = `https://email-static.useinsider.com/guido/${(e = n == null ? void 0 : n.stripo) == null ? void 0 : e.version}/UIEditor.js`, o = document.createElement("script");
106
+ o.id = "UiEditorScript", o.type = "module", o.src = s, o.onload = () => {
107
+ r(), i();
108
+ }, o.onerror = () => {
109
+ t(new Error(`Failed to load Stripo UIEditor script from S3: ${s}`));
110
+ }, document.body.appendChild(o);
108
111
  });
109
- return { initPlugin: async (i) => {
110
- await h(async () => {
111
- const r = await C();
112
- await w(i, r);
112
+ return { initPlugin: async (r) => {
113
+ await g(async () => {
114
+ const i = await m();
115
+ l(r, i);
113
116
  });
114
117
  } };
115
118
  };
116
119
  export {
117
- Y as useStripo
120
+ G as useStripo
118
121
  };
@@ -1,41 +1,36 @@
1
- import { usePartner as N } from "../../composables/usePartner.js";
2
- import { LINK_REGEXES as l, LINK_TYPES as g, INSIDER_ID as f, URLS as S } from "../../enums/unsubscribe.js";
3
- import { parsePageList as U } from "../../extensions/Blocks/Unsubscribe/utils/utils.js";
4
- import { useConfigStore as B } from "../../stores/config.js";
5
- import { useDynamicContentStore as y } from "../../stores/dynamic-content.js";
6
- import { useUnsubscribeStore as L } from "../../stores/unsubscribe.js";
7
- const D = [
1
+ import { usePartner as U } from "../../composables/usePartner.js";
2
+ import { LINK_REGEXES as l, LINK_TYPES as b, URLS as f } from "../../enums/unsubscribe.js";
3
+ import { parsePageList as B } from "../../extensions/Blocks/Unsubscribe/utils/utils.js";
4
+ import { useConfigStore as N } from "../../stores/config.js";
5
+ import { useUnsubscribeStore as I } from "../../stores/unsubscribe.js";
6
+ const T = [
8
7
  {
9
8
  id: "add-unsubscribe-link-values",
10
9
  description: "Adding unsubscribe link values",
11
10
  type: "custom",
12
11
  processor: (t) => {
13
- const { getPartnerName: i } = N(), c = B(), n = y(), u = L(), a = c.getVariationId;
14
- if (!a)
12
+ const { getPartnerName: i } = U(), a = N(), n = I(), u = a.getVariationId;
13
+ if (!u)
15
14
  return t;
16
- let e = t;
17
- const r = `/${i()}/email/${a}?user={{iid}}`;
18
- return new DOMParser().parseFromString(e, "text/html").querySelectorAll(".unsubscribe-block-v2[data-unsubscribe-page-list]").forEach((p) => {
19
- var b;
20
- const m = p.getAttribute("data-unsubscribe-page-list");
21
- if (!m)
15
+ let o = t;
16
+ const e = `/${i()}/email/${u}?user={{iid}}`;
17
+ return new DOMParser().parseFromString(o, "text/html").querySelectorAll(".unsubscribe-block-v2[data-unsubscribe-page-list]").forEach((p) => {
18
+ var g;
19
+ const d = p.getAttribute("data-unsubscribe-page-list");
20
+ if (!d)
22
21
  return;
23
- const R = U(m), d = ((b = u.templates) == null ? void 0 : b.filter(
24
- (o) => R.includes(o.id)
25
- )) ?? [], _ = d.some((o) => o.type === g.UNSUBSCRIBE_LINK_TYPE), I = d.some((o) => o.type === g.PREFERENCES_LINK_TYPE), E = p.outerHTML;
22
+ const S = B(d), m = ((g = n.templates) == null ? void 0 : g.filter(
23
+ (c) => S.includes(c.id)
24
+ )) ?? [], R = m.some((c) => c.type === b.UNSUBSCRIBE_LINK_TYPE), _ = m.some((c) => c.type === b.PREFERENCES_LINK_TYPE), E = p.outerHTML;
26
25
  let s = E;
27
- _ && (n.selectedDynamicContentList.push({
28
- text: f,
29
- value: f,
30
- fallback: ""
31
- }), s = s.replace(
26
+ R && (s = s.replace(
32
27
  l.GLOBAL_UNSUBSCRIBE_LINK_REGEX,
33
- S.UNSUBSCRIBE_URL + r
34
- )), I && (s = s.replace(
28
+ f.UNSUBSCRIBE_URL + e
29
+ )), _ && (s = s.replace(
35
30
  l.PREFERENCES_UNSUBSCRIBE_LINK_REGEX,
36
- S.PREFERENCES_URL + r
37
- )), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""), e = e.replace(E, s);
38
- }), e;
31
+ f.PREFERENCES_URL + e
32
+ )), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""), o = o.replace(E, s);
33
+ }), o;
39
34
  },
40
35
  priority: 60
41
36
  },
@@ -61,16 +56,16 @@ const D = [
61
56
  type: "custom",
62
57
  processor: (t) => {
63
58
  let i = t;
64
- const c = i.match(/<a[^>]+>(.*?)<\/a>/gm);
65
- return c && c.forEach((n) => {
59
+ const a = i.match(/<a[^>]+>(.*?)<\/a>/gm);
60
+ return a && a.forEach((n) => {
66
61
  if (n.includes("insEmail=1"))
67
62
  return;
68
63
  if (n.match(/<a\s+(?:[^>]*?\s+)?href=(["'`”])(.*?)\1\s+(?:[^>]*?\s+)?universal=(["'`”])true\3/gm)) {
69
- const a = n.replace(/href=(["'`”])(.*?)\1/gm, (e) => {
64
+ const o = n.replace(/href=(["'`”])(.*?)\1/gm, (e) => {
70
65
  const r = e.slice(6, e.length - 1).trim();
71
66
  return e.includes("?") || e.includes("#") ? r.slice(-1) === "&" ? e.replace(r, `${r}insEmail=1`) : e.replace(r, `${r}&insEmail=1`) : e.replace(r, `${r}?insEmail=1`);
72
67
  });
73
- i = i.replace(n, a);
68
+ i = i.replace(n, o);
74
69
  }
75
70
  }), i;
76
71
  },
@@ -78,5 +73,5 @@ const D = [
78
73
  }
79
74
  ];
80
75
  export {
81
- D as unsubscribeCompilerRules
76
+ T as unsubscribeCompilerRules
82
77
  };