@useinsider/guido 1.0.3-beta.e1adf59 → 1.0.3-beta.e32f324

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 (175) hide show
  1. package/README.md +144 -3
  2. package/dist/components/Guido.vue.js +12 -10
  3. package/dist/components/Guido.vue2.js +84 -101
  4. package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
  5. package/dist/components/organisms/header/LeftSlot.vue2.js +16 -15
  6. package/dist/components/organisms/header/RightSlot.vue.js +11 -11
  7. package/dist/components/organisms/header/RightSlot.vue2.js +23 -22
  8. package/dist/components/organisms/onboarding/NewVersionPopup.vue.js +9 -9
  9. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +30 -17
  10. package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +12 -10
  11. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +19 -18
  12. package/dist/composables/useBlocksConfig.js +49 -0
  13. package/dist/composables/useGuidoActions.js +19 -9
  14. package/dist/composables/useHttp.js +52 -89
  15. package/dist/composables/useStripo.js +61 -162
  16. package/dist/config/compiler/unsubscribeCompilerRules.js +33 -28
  17. package/dist/config/migrator/index.js +7 -6
  18. package/dist/config/migrator/recommendationMigrator.js +293 -0
  19. package/dist/enums/date.js +6 -0
  20. package/dist/enums/defaults.js +16 -8
  21. package/dist/enums/onboarding.js +2 -1
  22. package/dist/enums/unsubscribe.js +27 -25
  23. package/dist/extensions/Blocks/Checkbox/control.js +15 -14
  24. package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
  25. package/dist/extensions/Blocks/CouponBlock/extension.js +2 -2
  26. package/dist/extensions/Blocks/RadioButton/control.js +18 -17
  27. package/dist/extensions/Blocks/Recommendation/block.js +6 -3
  28. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +103 -0
  29. package/dist/extensions/Blocks/Recommendation/constants.js +5 -0
  30. package/dist/extensions/Blocks/Recommendation/control.js +69 -40
  31. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  32. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  33. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  34. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  35. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  36. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  65. package/dist/extensions/Blocks/Recommendation/extension.js +42 -7
  66. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +107 -22
  67. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
  68. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +160 -0
  69. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +152 -0
  70. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +180 -0
  71. package/dist/extensions/Blocks/common-control.js +125 -43
  72. package/dist/extensions/DynamicContent/dynamic-content-modal.js +25 -19
  73. package/dist/extensions/DynamicContent/dynamic-content.js +128 -33
  74. package/dist/guido.css +1 -1
  75. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +307 -100
  76. package/dist/package.json.js +1 -1
  77. package/dist/services/stripoApi.js +19 -49
  78. package/dist/src/@types/generic.d.ts +42 -6
  79. package/dist/src/components/Guido.vue.d.ts +4 -3
  80. package/dist/src/components/organisms/onboarding/NewVersionPopup.vue.d.ts +3 -1
  81. package/dist/src/components/organisms/onboarding/OnboardingWrapper.vue.d.ts +3 -1
  82. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  83. package/dist/src/composables/useBlocksConfig.d.ts +11 -0
  84. package/dist/src/composables/useGuidoActions.d.ts +9 -0
  85. package/dist/src/config/migrator/recommendationMigrator.d.ts +1 -0
  86. package/dist/src/enums/date.d.ts +4 -0
  87. package/dist/src/enums/onboarding.d.ts +1 -0
  88. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
  89. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +28 -0
  90. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +51 -0
  91. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +6 -0
  92. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  93. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  94. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  95. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  96. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  97. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  98. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  99. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  100. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  101. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  102. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  103. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  104. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  105. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  106. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  107. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  108. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  109. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  110. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  111. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  126. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
  127. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  128. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +16 -0
  129. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +44 -0
  130. package/dist/src/extensions/Blocks/common-control.d.ts +21 -0
  131. package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +9 -2
  132. package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +52 -2
  133. package/dist/src/stores/config.d.ts +10 -2
  134. package/dist/src/stores/dynamic-content.d.ts +3 -3
  135. package/dist/src/stores/editor.d.ts +1 -1
  136. package/dist/src/stores/onboarding.d.ts +1 -1
  137. package/dist/src/stores/preview.d.ts +1 -1
  138. package/dist/src/stores/recommendation.d.ts +1 -1
  139. package/dist/src/stores/save-as-template.d.ts +1 -1
  140. package/dist/src/stores/toaster.d.ts +1 -1
  141. package/dist/src/stores/unsubscribe.d.ts +1 -1
  142. package/dist/src/stores/version-history.d.ts +1 -1
  143. package/dist/src/utils/dateUtil.d.ts +21 -0
  144. package/dist/src/utils/environmentUtil.d.ts +5 -0
  145. package/dist/src/utils/genericUtil.d.ts +1 -0
  146. package/dist/static/styles/components/narrow-panel.css.js +10 -0
  147. package/dist/static/styles/customEditorStyle.css.js +5 -0
  148. package/dist/stores/config.js +5 -5
  149. package/dist/stores/dynamic-content.js +2 -2
  150. package/dist/stores/editor.js +1 -1
  151. package/dist/stores/onboarding.js +27 -27
  152. package/dist/stores/preview.js +1 -1
  153. package/dist/stores/recommendation.js +3 -3
  154. package/dist/stores/save-as-template.js +2 -2
  155. package/dist/stores/toaster.js +1 -1
  156. package/dist/stores/unsubscribe.js +1 -1
  157. package/dist/stores/version-history.js +4 -4
  158. package/dist/utils/dateUtil.js +24 -3
  159. package/dist/utils/environmentUtil.js +4 -0
  160. package/dist/utils/genericUtil.js +20 -9
  161. package/package.json +3 -3
  162. package/dist/composables/useApiErrorTracking.js +0 -120
  163. package/dist/composables/useErrorTracking.js +0 -98
  164. package/dist/composables/useStripoErrorCategory.js +0 -86
  165. package/dist/composables/useStripoSlackNotifier.js +0 -47
  166. package/dist/extensions/Blocks/Recommendation/template.js +0 -200
  167. package/dist/services/slackNotificationService.js +0 -167
  168. package/dist/services/stripoErrorDeduplicationService.js +0 -91
  169. package/dist/src/composables/useApiErrorTracking.d.ts +0 -26
  170. package/dist/src/composables/useErrorTracking.d.ts +0 -30
  171. package/dist/src/composables/useStripoErrorCategory.d.ts +0 -26
  172. package/dist/src/composables/useStripoSlackNotifier.d.ts +0 -8
  173. package/dist/src/extensions/Blocks/Recommendation/template.d.ts +0 -6
  174. package/dist/src/services/slackNotificationService.d.ts +0 -110
  175. package/dist/src/services/stripoErrorDeduplicationService.d.ts +0 -75
@@ -1,17 +1,17 @@
1
- import s from "./NewVersionPopup.vue2.js";
1
+ import t from "./NewVersionPopup.vue2.js";
2
2
  import n from "../../../_virtual/_plugin-vue2_normalizer.js";
3
- var r = function() {
4
- var e = this, t = e._self._c, o = e._self._setupProxy;
5
- return o.isVisible ? t(o.WpModal, { attrs: { id: "guido__new-version-popup", "close-on-outside-click": !1, "footer-button-options": o.footerButtonOptions, title: o.trans("email-editor.onboarding-title") }, on: { close: o.handleClose, "primary-action": o.handleDiscoverNow, "secondary-action": o.handleRemindLater } }, [t("div", { staticClass: "d-f f-d-c" }, [t("img", { staticClass: "w-1 h-1 d-b p-e-n mb-5", attrs: { src: o.onboardingImageSvg } }), t("p", { staticClass: "f-s-2 f-w-400", domProps: { innerHTML: e._s(o.trans("email-editor.onboarding-description")) } })])]) : e._e();
6
- }, i = [], a = /* @__PURE__ */ n(
7
- s,
8
- r,
3
+ var i = function() {
4
+ var e = this, s = e._self._c, o = e._self._setupProxy;
5
+ return o.isVisible ? s(o.WpModal, { attrs: { id: "guido__new-version-popup", size: "medium", "close-on-outside-click": !1, "footer-button-options": o.footerButtonOptions, title: o.popupTitle }, on: { close: o.handleClose, "primary-action": o.handleDiscoverNow, "secondary-action": o.handleRemindLater } }, [s("div", { staticClass: "d-f f-d-c" }, [s("img", { staticClass: "w-1 h-1 d-b p-e-n mb-5", attrs: { src: o.onboardingImageSvg } }), s("p", { staticClass: "f-s-2 f-w-400", domProps: { innerHTML: e._s(o.popupDescription) } })])]) : e._e();
6
+ }, r = [], a = /* @__PURE__ */ n(
7
+ t,
9
8
  i,
9
+ r,
10
10
  !1,
11
11
  null,
12
12
  null
13
13
  );
14
- const p = a.exports;
14
+ const _ = a.exports;
15
15
  export {
16
- p as default
16
+ _ as default
17
17
  };
@@ -1,30 +1,43 @@
1
- import { defineComponent as s, ref as r } from "vue";
2
- import a from "../../wrappers/WpModal.vue.js";
3
- import { useTranslations as i } from "../../../composables/useTranslations.js";
4
- import l from "../../../static/assets/onboarding-img.svg.js";
5
- import { useOnboardingStore as m } from "../../../stores/onboarding.js";
6
- const w = /* @__PURE__ */ s({
1
+ import { defineComponent as g, ref as b, computed as o } from "vue";
2
+ import v from "../../wrappers/WpModal.vue.js";
3
+ import { useConfig as D } from "../../../composables/useConfig.js";
4
+ import { useTranslations as h } from "../../../composables/useTranslations.js";
5
+ import { ACADEMY_LINK as l } from "../../../enums/onboarding.js";
6
+ import y from "../../../static/assets/onboarding-img.svg.js";
7
+ import { useOnboardingStore as _ } from "../../../stores/onboarding.js";
8
+ import { isAfterDate as C, formatShortDate as L } from "../../../utils/dateUtil.js";
9
+ const I = /* @__PURE__ */ g({
7
10
  __name: "NewVersionPopup",
8
- setup(p) {
9
- const n = i(), e = m(), o = r(!0), t = r({
11
+ emits: ["onboarding-finished"],
12
+ setup(w, { emit: a }) {
13
+ const e = h(), t = _(), s = b(!0), { config: p } = D(), i = o(() => p.migrationDate), n = o(() => C(i.value || 0)), d = o(() => L(
14
+ i.value
15
+ )), m = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-title") : e("email-editor.onboarding-title")), c = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-description", {
16
+ sunsetDate: d.value,
17
+ academyLink: l
18
+ }) : e("email-editor.onboarding-description", {
19
+ academyLink: l
20
+ })), u = o(() => n.value ? e("products.cancel") : e("products.remind-me-later")), f = o(() => ({
10
21
  primaryButton: {
11
22
  type: "primary",
12
- labelText: n("left-menu.discover-now")
23
+ labelText: e("left-menu.discover-now")
13
24
  },
14
25
  secondaryButton: {
15
26
  type: "subtle-primary",
16
- labelText: n("products.remind-me-later")
27
+ labelText: u.value
17
28
  }
18
- });
19
- return { __sfc: !0, trans: n, onboardingStore: e, isVisible: o, footerButtonOptions: t, handleDiscoverNow: () => {
20
- e.onDiscoverNowClicked(), o.value = !1;
29
+ })), r = () => {
30
+ s.value = !1, a("onboarding-finished");
31
+ };
32
+ return { __sfc: !0, emit: a, trans: e, onboardingStore: t, isVisible: s, config: p, migrationDate: i, isAfterMigrationDate: n, formattedSunsetDate: d, popupTitle: m, popupDescription: c, secondaryButtonLabel: u, footerButtonOptions: f, closePopup: r, handleDiscoverNow: () => {
33
+ t.onDiscoverNowClicked(), r();
21
34
  }, handleRemindLater: () => {
22
- e.onRemindMeLater(), o.value = !1;
35
+ t.onRemindMeLater(), r();
23
36
  }, handleClose: () => {
24
- e.onNewVersionPopupClose(), o.value = !1;
25
- }, WpModal: a, onboardingImageSvg: l };
37
+ t.onNewVersionPopupClose(), r();
38
+ }, WpModal: v, onboardingImageSvg: y };
26
39
  }
27
40
  });
28
41
  export {
29
- w as default
42
+ I as default
30
43
  };
@@ -1,19 +1,21 @@
1
- import o from "./OnboardingWrapper.vue2.js";
2
- import _ from "../../../_virtual/_plugin-vue2_normalizer.js";
1
+ import t from "./OnboardingWrapper.vue2.js";
2
+ import i from "../../../_virtual/_plugin-vue2_normalizer.js";
3
3
  var s = function() {
4
- var n = this, e = n._self._c, t = n._self._setupProxy;
5
- return e("div", n._l(t.visibleOnboardings, function(r) {
6
- return e(r.component, { key: r.type, tag: "component" });
4
+ var n = this, e = n._self._c, r = n._self._setupProxy;
5
+ return e("div", n._l(r.visibleOnboardings, function(o) {
6
+ return e(o.component, { key: o.type, tag: "component", on: { "onboarding-finished": function(p) {
7
+ return r.emit("onboarding-finished");
8
+ } } });
7
9
  }), 1);
8
- }, a = [], p = /* @__PURE__ */ _(
9
- o,
10
+ }, _ = [], a = /* @__PURE__ */ i(
11
+ t,
10
12
  s,
11
- a,
13
+ _,
12
14
  !1,
13
15
  null,
14
16
  null
15
17
  );
16
- const m = p.exports;
18
+ const d = a.exports;
17
19
  export {
18
- m as default
20
+ d as default
19
21
  };
@@ -1,24 +1,25 @@
1
- import { defineComponent as g, computed as e, onMounted as b, watch as t } from "vue";
2
- import { usePartner as O } from "../../../composables/usePartner.js";
3
- import { useEditorStore as u } from "../../../stores/editor.js";
4
- import { useOnboardingStore as v } from "../../../stores/onboarding.js";
5
- import { usePreviewStore as l } from "../../../stores/preview.js";
6
- import y from "./AMPOnboarding.vue.js";
7
- import S from "./GenericOnboarding.vue.js";
1
+ import { defineComponent as b, computed as e, onMounted as O, watch as t } from "vue";
2
+ import { usePartner as u } from "../../../composables/usePartner.js";
3
+ import { useEditorStore as v } from "../../../stores/editor.js";
4
+ import { useOnboardingStore as l } from "../../../stores/onboarding.js";
5
+ import { usePreviewStore as y } from "../../../stores/preview.js";
6
+ import S from "./AMPOnboarding.vue.js";
7
+ import h from "./GenericOnboarding.vue.js";
8
8
  import w from "./NewVersionPopup.vue.js";
9
9
  import P from "./TextBlockOnboarding.vue.js";
10
- import h from "./VersionHistoryOnboarding.vue.js";
11
- const E = /* @__PURE__ */ g({
10
+ import _ from "./VersionHistoryOnboarding.vue.js";
11
+ const F = /* @__PURE__ */ b({
12
12
  __name: "OnboardingWrapper",
13
- setup(_) {
14
- const o = v(), r = u(), s = l(), { isTestPartner: a } = O(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
13
+ emits: ["onboarding-finished"],
14
+ setup(A, { emit: f }) {
15
+ const o = l(), r = v(), s = y(), { isTestPartner: a } = u(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
15
16
  { type: "newVersionPopup", component: w },
16
- { type: "genericOnboarding", component: S },
17
+ { type: "genericOnboarding", component: h },
17
18
  { type: "textBlockOnboarding", component: P },
18
- { type: "versionHistoryOnboarding", component: h },
19
- { type: "ampOnboarding", component: y }
20
- ], c = (n) => d.value || !p.value ? !1 : n === "newVersionPopup" ? o.shouldShowOnboarding(n) : o.isActive(n), f = e(() => m.filter((n) => c(n.type)));
21
- return b(async () => {
19
+ { type: "versionHistoryOnboarding", component: _ },
20
+ { type: "ampOnboarding", component: S }
21
+ ], c = (n) => d.value || !p.value ? !1 : n === "newVersionPopup" ? o.shouldShowOnboarding(n) : o.isActive(n), g = e(() => m.filter((n) => c(n.type)));
22
+ return O(async () => {
22
23
  await o.fetchUserModalState();
23
24
  }), t(
24
25
  () => r.isVersionHistoryOpen,
@@ -35,9 +36,9 @@ const E = /* @__PURE__ */ g({
35
36
  (n) => {
36
37
  !n && o.isActive("ampOnboarding") && o.close("ampOnboarding");
37
38
  }
38
- ), { __sfc: !0, onboardingStore: o, editorStore: r, previewStore: s, isTestPartner: a, isStripoReady: p, isTestPartnerActive: d, onboardingConfigs: m, shouldShow: c, visibleOnboardings: f };
39
+ ), { __sfc: !0, emit: f, onboardingStore: o, editorStore: r, previewStore: s, isTestPartner: a, isStripoReady: p, isTestPartnerActive: d, onboardingConfigs: m, shouldShow: c, visibleOnboardings: g };
39
40
  }
40
41
  });
41
42
  export {
42
- E as default
43
+ F as default
43
44
  };
@@ -0,0 +1,49 @@
1
+ const l = {
2
+ "amp-accordion": "ampAccordionEnabled",
3
+ "amp-carousel": "ampCarouselEnabled",
4
+ "amp-form-controls": "ampFormControlsEnabled",
5
+ "banner-block": "bannerEnabled",
6
+ "button-block": "buttonEnabled",
7
+ "html-block": "htmlEnabled",
8
+ "image-block": "imageEnabled",
9
+ "menu-block": "menuEnabled",
10
+ "social-block": "socialNetEnabled",
11
+ "spacer-block": "spacerEnabled",
12
+ "text-block": "textEnabled",
13
+ "timer-block": "timerEnabled",
14
+ "video-block": "videoEnabled"
15
+ }, c = {
16
+ "dynamic-content": () => import("../extensions/DynamicContent/extension.js"),
17
+ "checkbox-block": () => import("../extensions/Blocks/Checkbox/extension.js"),
18
+ "radio-button-block": () => import("../extensions/Blocks/RadioButton/extension.js"),
19
+ "recommendation-block": () => import("../extensions/Blocks/Recommendation/extension.js"),
20
+ "unsubscribe-block": () => import("../extensions/Blocks/Unsubscribe/extension.js"),
21
+ "coupon-block": () => import("../extensions/Blocks/CouponBlock/extension.js"),
22
+ "items-block": null
23
+ // TODO: Add ItemsBlock extension when available
24
+ }, a = (n) => {
25
+ if (!n || !n.length)
26
+ return {};
27
+ const o = {};
28
+ return n.forEach((e) => {
29
+ const t = l[e];
30
+ t && (o[t] = !1);
31
+ }), o;
32
+ }, r = async (n) => !n || !n.length ? [] : (await Promise.all(
33
+ n.map(async (e) => {
34
+ const t = c[e];
35
+ return t ? (await t()).default : null;
36
+ })
37
+ )).filter((e) => e !== null), s = () => ({
38
+ getStripoBlocksConfig: async () => {
39
+ var e;
40
+ const o = (e = window.GuidoConfig) == null ? void 0 : e.blocks;
41
+ return {
42
+ baseBlocks: a(o == null ? void 0 : o.excludeDefaults),
43
+ extensions: await r(o == null ? void 0 : o.includeCustoms)
44
+ };
45
+ }
46
+ });
47
+ export {
48
+ s as useBlocksConfig
49
+ };
@@ -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"), a = Symbol.for("guido.save.complete"), s = (e) => {
3
- o(r, e.onBack), o(n, e.onSaveStart), o(a, e.onSaveComplete);
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);
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"), a = Symb
9
9
  "useBack: No back handler provided. Make sure Guido component is in the component tree."
10
10
  );
11
11
  }
12
- }, d = () => {
12
+ }, l = () => {
13
13
  try {
14
14
  return t(n);
15
15
  } catch {
@@ -17,21 +17,31 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), a = Symb
17
17
  "useSaveStart: No save start handler provided. Make sure Guido component is in the component tree."
18
18
  );
19
19
  }
20
- }, i = () => {
20
+ }, d = () => {
21
21
  try {
22
- return t(a);
22
+ return t(c);
23
23
  } catch {
24
24
  throw new Error(
25
25
  "useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
26
26
  );
27
27
  }
28
+ }, m = () => {
29
+ try {
30
+ return t(a);
31
+ } catch {
32
+ throw new Error(
33
+ "useTestEmailClick: No test email click handler provided. Make sure Guido component is in the component tree."
34
+ );
35
+ }
28
36
  };
29
37
  export {
30
38
  r as BACK_KEY,
31
- a as SAVE_COMPLETE_KEY,
39
+ c as SAVE_COMPLETE_KEY,
32
40
  n as SAVE_START_KEY,
33
- s as provideGuidoActions,
41
+ a as TEST_EMAIL_CLICK_KEY,
42
+ i as provideGuidoActions,
34
43
  u as useBack,
35
- i as useSaveComplete,
36
- d as useSaveStart
44
+ d as useSaveComplete,
45
+ l as useSaveStart,
46
+ m as useTestEmailClick
37
47
  };
@@ -1,123 +1,86 @@
1
- import { getCsrfToken as S } from "../utils/genericUtil.js";
2
- import { ref as h, computed as w } from "vue";
3
- let b;
4
- const g = async () => {
5
- if (!b)
6
- try {
7
- const { useApiErrorTracking: E } = await import("./useApiErrorTracking.js");
8
- b = E();
9
- } catch {
10
- }
11
- return b;
12
- }, M = (E = {}) => {
13
- const d = h(!1), i = h(null), l = h(null), P = w(() => d.value), k = w(() => i.value !== null), v = {
1
+ import { getCsrfToken as H } from "../utils/genericUtil.js";
2
+ import { ref as p, computed as T } from "vue";
3
+ const k = (b = {}) => {
4
+ const h = p(!1), a = p(null), u = p(null), g = T(() => h.value), y = T(() => a.value !== null), v = {
14
5
  baseURL: "",
15
6
  timeout: 1e4,
16
7
  retry: 0,
17
8
  retryDelay: 1e3,
18
9
  headers: {
19
10
  "Content-Type": "application/json",
20
- "X-CSRF-TOKEN": S()
11
+ "X-CSRF-TOKEN": H()
21
12
  },
22
- ...E
23
- }, C = (t, s) => {
24
- if (t.startsWith("http://") || t.startsWith("https://"))
25
- return t;
26
- const e = s || v.baseURL || "";
27
- return e.endsWith("/") && t.startsWith("/") ? `${e}${t.slice(1)}` : e.endsWith("/") || t.startsWith("/") ? `${e}${t}` : `${e}/${t}`;
28
- }, A = (t) => new Promise((s, e) => {
13
+ ...b
14
+ }, w = (e, s) => {
15
+ if (e.startsWith("http://") || e.startsWith("https://"))
16
+ return e;
17
+ const t = s || v.baseURL || "";
18
+ return t.endsWith("/") && e.startsWith("/") ? `${t}${e.slice(1)}` : t.endsWith("/") || e.startsWith("/") ? `${t}${e}` : `${t}/${e}`;
19
+ }, P = (e) => new Promise((s, t) => {
29
20
  setTimeout(() => {
30
- e(new Error("Request timeout"));
31
- }, t);
32
- }), $ = (t) => new Promise((s) => {
33
- setTimeout(() => {
34
- s();
35
- }, t);
36
- }), c = async (t, s, e, L = {}) => {
37
- i.value = null, d.value = !0, l.value = new AbortController();
38
- const n = { ...v, ...L }, T = C(s, n.baseURL), m = {
39
- method: t,
21
+ t(new Error("Request timeout"));
22
+ }, e);
23
+ }), x = (e) => new Promise((s) => {
24
+ setTimeout(s, e);
25
+ }), i = async (e, s, t, D = {}) => {
26
+ a.value = null, h.value = !0, u.value = new AbortController();
27
+ const n = { ...v, ...D }, L = w(s, n.baseURL), c = {
28
+ method: e,
40
29
  headers: { ...n.headers },
41
- signal: l.value.signal,
30
+ signal: u.value.signal,
42
31
  ...n
43
32
  };
44
- e && ["POST", "PUT", "PATCH"].includes(t) && (e instanceof FormData ? (delete m.headers["Content-Type"], m.body = e) : m.body = JSON.stringify(e));
45
- const y = async (f = 0) => {
33
+ t && ["POST", "PUT", "PATCH"].includes(e) && (t instanceof FormData ? (delete c.headers["Content-Type"], c.body = t) : c.body = JSON.stringify(t));
34
+ const E = async (m = 0) => {
46
35
  try {
47
- const o = [fetch(T, m)];
48
- n.timeout && o.push(A(n.timeout));
36
+ const o = [fetch(L, c)];
37
+ n.timeout && o.push(P(n.timeout));
49
38
  const r = await Promise.race(o);
50
39
  if (!r.ok) {
51
- const O = `HTTP Error: ${r.status} ${r.statusText}`, p = new Error(O);
52
- p.status = r.status, p.statusText = r.statusText, p.response = r;
53
- const x = await g();
54
- throw x && x.captureHttpError(p, T, {
55
- method: t,
56
- statusCode: r.status,
57
- statusText: r.statusText
58
- }), p;
40
+ const O = `HTTP Error: ${r.status} ${r.statusText}`, d = new Error(O);
41
+ throw d.status = r.status, d.statusText = r.statusText, d.response = r, d;
59
42
  }
60
- let a;
61
- const u = r.headers.get("content-type");
62
- return u != null && u.includes("application/json") ? a = await r.json() : u != null && u.includes("text/") ? a = await r.text() : a = await r.blob(), {
63
- data: a,
43
+ let f;
44
+ const l = r.headers.get("content-type");
45
+ return l != null && l.includes("application/json") ? f = await r.json() : l != null && l.includes("text/") ? f = await r.text() : f = await r.blob(), {
46
+ data: f,
64
47
  status: r.status,
65
48
  statusText: r.statusText,
66
49
  headers: r.headers
67
50
  };
68
51
  } catch (o) {
69
52
  const r = o instanceof Error && o.name === "AbortError";
70
- if (f < (n.retry || 0) && !r)
71
- return await $(n.retryDelay || 1e3), y(f + 1);
72
- if (o instanceof Error)
73
- if (o.name === "AbortError")
74
- i.value = { message: "Request was cancelled" };
75
- else {
76
- i.value = { message: o.message };
77
- const a = await g();
78
- a && a.captureNetworkError(o, T, {
79
- method: t,
80
- attemptNumber: f + 1,
81
- timeoutMs: n.timeout
82
- });
83
- }
84
- else {
85
- i.value = o;
86
- const a = await g();
87
- a && o instanceof Error && a.captureNetworkError(o, T, {
88
- method: t,
89
- attemptNumber: f + 1
90
- });
91
- }
92
- throw o;
53
+ if (m < (n.retry || 0) && !r)
54
+ return await x(n.retryDelay || 1e3), E(m + 1);
55
+ throw o instanceof Error ? o.name === "AbortError" ? a.value = { message: "Request was cancelled" } : a.value = { message: o.message } : a.value = o, o;
93
56
  }
94
57
  };
95
58
  try {
96
- return await y();
59
+ return await E();
97
60
  } finally {
98
- d.value = !1, l.value = null;
61
+ h.value = !1, u.value = null;
99
62
  }
100
- }, R = (t, s) => c("GET", t, void 0, s), U = (t, s, e) => c("POST", t, s, e), N = (t, s, e) => c("PUT", t, s, e), W = (t, s, e) => c("PATCH", t, s, e), q = (t, s) => c("DELETE", t, void 0, s), D = (t) => {
101
- l.value && l.value.abort(t);
102
- }, H = () => {
103
- i.value = null;
63
+ }, C = (e, s) => i("GET", e, void 0, s), $ = (e, s, t) => i("POST", e, s, t), R = (e, s, t) => i("PUT", e, s, t), U = (e, s, t) => i("PATCH", e, s, t), A = (e, s) => i("DELETE", e, void 0, s), W = (e) => {
64
+ u.value && u.value.abort(e);
65
+ }, q = () => {
66
+ a.value = null;
104
67
  };
105
68
  return {
106
69
  // State
107
- loading: P,
108
- error: w(() => i.value),
109
- hasError: k,
70
+ loading: g,
71
+ error: T(() => a.value),
72
+ hasError: y,
110
73
  // Methods
111
- request: c,
112
- get: R,
113
- post: U,
114
- put: N,
115
- patch: W,
116
- delete: q,
117
- cancel: D,
118
- clearError: H
74
+ request: i,
75
+ get: C,
76
+ post: $,
77
+ put: R,
78
+ patch: U,
79
+ delete: A,
80
+ cancel: W,
81
+ clearError: q
119
82
  };
120
83
  };
121
84
  export {
122
- M as useHttp
85
+ k as useHttp
123
86
  };