@useinsider/guido 1.0.3-beta.83937b4 → 1.0.3-beta.846c08e

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 (70) hide show
  1. package/README.md +4 -0
  2. package/dist/components/Guido.vue.js +11 -9
  3. package/dist/components/Guido.vue2.js +14 -14
  4. package/dist/components/organisms/onboarding/NewVersionPopup.vue.js +9 -9
  5. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +30 -17
  6. package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +12 -10
  7. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +19 -18
  8. package/dist/composables/useStripo.js +30 -26
  9. package/dist/config/migrator/index.js +7 -6
  10. package/dist/config/migrator/recommendationMigrator.js +293 -0
  11. package/dist/enums/date.js +6 -0
  12. package/dist/enums/defaults.js +1 -0
  13. package/dist/enums/onboarding.js +2 -1
  14. package/dist/extensions/Blocks/Recommendation/block.js +6 -3
  15. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +187 -0
  16. package/dist/extensions/Blocks/Recommendation/constants.js +13 -0
  17. package/dist/extensions/Blocks/Recommendation/control.js +109 -65
  18. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +68 -0
  19. package/dist/extensions/Blocks/Recommendation/controls/index.js +245 -0
  20. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +74 -0
  21. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.js +71 -0
  22. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.js +71 -0
  23. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.js +71 -0
  24. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.js +71 -0
  25. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +188 -0
  26. package/dist/extensions/Blocks/Recommendation/extension.js +15 -6
  27. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +151 -21
  28. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +181 -0
  29. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +189 -0
  30. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +209 -0
  31. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +25 -0
  32. package/dist/extensions/Blocks/common-control.js +125 -43
  33. package/dist/extensions/Blocks/controlFactories.js +223 -0
  34. package/dist/guido.css +1 -1
  35. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +307 -100
  36. package/dist/services/stripoApi.js +1 -1
  37. package/dist/src/@types/generic.d.ts +6 -0
  38. package/dist/src/components/Guido.vue.d.ts +1 -0
  39. package/dist/src/components/organisms/onboarding/NewVersionPopup.vue.d.ts +3 -1
  40. package/dist/src/components/organisms/onboarding/OnboardingWrapper.vue.d.ts +3 -1
  41. package/dist/src/config/migrator/recommendationMigrator.d.ts +1 -0
  42. package/dist/src/enums/date.d.ts +4 -0
  43. package/dist/src/enums/onboarding.d.ts +1 -0
  44. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
  45. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +75 -0
  46. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +83 -0
  47. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +11 -2
  48. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +25 -0
  49. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +64 -0
  50. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +16 -0
  51. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +15 -0
  52. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +15 -0
  53. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +15 -0
  54. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +15 -0
  55. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +60 -0
  56. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  57. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +16 -0
  58. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +52 -0
  59. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  60. package/dist/src/extensions/Blocks/common-control.d.ts +21 -0
  61. package/dist/src/extensions/Blocks/controlFactories.d.ts +91 -0
  62. package/dist/src/stores/config.d.ts +1 -0
  63. package/dist/src/utils/dateUtil.d.ts +21 -0
  64. package/dist/static/styles/components/narrow-panel.css.js +10 -0
  65. package/dist/static/styles/components/wide-panel.css.js +0 -4
  66. package/dist/static/styles/customEditorStyle.css.js +19 -0
  67. package/dist/utils/dateUtil.js +24 -3
  68. package/package.json +2 -2
  69. package/dist/extensions/Blocks/Recommendation/template.js +0 -200
  70. package/dist/src/extensions/Blocks/Recommendation/template.d.ts +0 -6
package/README.md CHANGED
@@ -52,6 +52,7 @@ npm install @useinsider/guido
52
52
  ref="guidoEditor"
53
53
  :template-id="templateId"
54
54
  :user-id="userId"
55
+ :migration-date="migrationDate"
55
56
  :guido-config="guidoConfig"
56
57
  :html="initialHtml"
57
58
  :css="initialCss"
@@ -74,6 +75,7 @@ export default {
74
75
  return {
75
76
  templateId: 'template-123',
76
77
  userId: 'user-456',
78
+ migrationDate: 1699488000,
77
79
  initialHtml: '<p>Initial HTML content</p>',
78
80
  initialCss: 'p { color: #333; }',
79
81
  guidoConfig: {
@@ -147,6 +149,7 @@ export default {
147
149
  | `templateId` | `string` | ✅ | - | Unique identifier for the email template |
148
150
  | `userId` | `string` | ✅ | - | Unique identifier for the user |
149
151
  | `guidoConfig` | `GuidoConfig` | ✅ | - | Configuration object for the editor |
152
+ | `migrationDate` | `number` | ✅ | - | Stripo migration date in Unix timestamp (seconds). Retrieved from backend `/partner-settings` endpoint as `migrationDate`. Used for onboarding process |
150
153
  | `partnerName` | `string` | ⚪ | From URL host | Partner identifier |
151
154
  | `productType` | `string` | ⚪ | From URL path | Product type identifier |
152
155
  | `username` | `string` | ⚪ | `'Guido User'` | Display name for the user |
@@ -163,6 +166,7 @@ export default {
163
166
  | `save:complete` | `Omit<Template, 'forceRecreate'>` | Fired when template is successfully saved |
164
167
  | `on-change` | void | It Fires once for managing leave modal etc. |
165
168
  | `ready` | void | Fired when the editor is ready and template is loaded |
169
+ | `onboarding-finished` | void | Fired when the onboarding popup is dismissed or completed, allowing parent applications to track onboarding state |
166
170
 
167
171
  ### Guido Exposed Methods
168
172
  ```typescript
@@ -1,18 +1,20 @@
1
- import a from "./Guido.vue2.js";
1
+ import i from "./Guido.vue2.js";
2
2
  /* empty css */
3
- import i from "../_virtual/_plugin-vue2_normalizer.js";
3
+ import a from "../_virtual/_plugin-vue2_normalizer.js";
4
4
  var t = function() {
5
5
  var o = this, r = o._self._c, e = o._self._setupProxy;
6
- return r("div", { staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : o._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.FilterSelectionDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
7
- }, s = [], d = /* @__PURE__ */ i(
8
- a,
6
+ return r("div", { staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : o._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.FilterSelectionDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(_) {
7
+ return e.emit("onboarding:finished");
8
+ } } }), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
9
+ }, n = [], s = /* @__PURE__ */ a(
10
+ i,
9
11
  t,
10
- s,
12
+ n,
11
13
  !1,
12
14
  null,
13
- "e8d51dec"
15
+ "3c910a93"
14
16
  );
15
- const l = d.exports;
17
+ const v = s.exports;
16
18
  export {
17
- l as default
19
+ v as default
18
20
  };
@@ -15,8 +15,8 @@ import { useConfigStore as te } from "../stores/config.js";
15
15
  import { useDynamicContentStore as ne } from "../stores/dynamic-content.js";
16
16
  import { useEditorStore as re } from "../stores/editor.js";
17
17
  import { usePreviewStore as ae } from "../stores/preview.js";
18
- import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
19
- import ie from "../node_modules/lodash-es/merge.js";
18
+ import { useUnsubscribeStore as ie } from "../stores/unsubscribe.js";
19
+ import se from "../node_modules/lodash-es/merge.js";
20
20
  const Ge = /* @__PURE__ */ R({
21
21
  __name: "Guido",
22
22
  props: {
@@ -31,39 +31,39 @@ const Ge = /* @__PURE__ */ R({
31
31
  guidoConfig: null,
32
32
  templateConfig: null
33
33
  },
34
- emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready"],
34
+ emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"],
35
35
  setup(_, { expose: L, emit: t }) {
36
36
  const u = _, k = I(
37
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
38
38
  ), A = I(
39
39
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
40
- ), l = x(), a = ne(), p = se(), g = te(), s = re(), N = ae(), n = U(() => s.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
40
+ ), l = x(), a = ne(), p = ie(), g = te(), i = re(), N = ae(), n = U(() => i.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
41
41
  var e;
42
42
  return (e = l.value) == null ? void 0 : e.handleSave(!0);
43
43
  }, {
44
- templateId: i,
44
+ templateId: s,
45
45
  userId: b,
46
46
  guidoConfig: C,
47
47
  templateConfig: o,
48
48
  html: r = "",
49
49
  css: h = "",
50
50
  partnerName: c = f(),
51
- productType: m = y(),
51
+ productType: d = y(),
52
52
  messageType: S = J,
53
53
  username: w = q
54
- } = u, d = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
- s.templateId = i, window.GuidoConfig = ie(Q, C), window.GuidoConfig.partner = {
54
+ } = u, m = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
+ i.templateId = s, window.GuidoConfig = se(Q, C), window.GuidoConfig.partner = {
56
56
  partnerName: c,
57
- productType: m,
57
+ productType: d,
58
58
  messageType: S
59
59
  }, g.templateConfig = o;
60
60
  const { initPlugin: D } = j({
61
- emailId: i,
61
+ emailId: s,
62
62
  userId: b,
63
63
  username: w,
64
64
  partnerName: c,
65
- productType: m,
66
- preselectedDynamicContentList: d,
65
+ productType: d,
66
+ preselectedDynamicContentList: m,
67
67
  onReady: () => {
68
68
  console.debug("guido:ready"), t("ready");
69
69
  }
@@ -99,7 +99,7 @@ const Ge = /* @__PURE__ */ R({
99
99
  forceRecreate: !0
100
100
  // TODO: It should be false for old templates. We will communicate with Stripo
101
101
  };
102
- e.html || (e = await T(), e.html = await W(e.html)), await D(e), a.selectedDynamicContentList = d;
102
+ e.html || (e = await T(), e.html = await W(e.html)), await D(e), a.selectedDynamicContentList = m;
103
103
  } catch (e) {
104
104
  console.error("Failed to initialize Stripo editor:", e);
105
105
  }
@@ -120,7 +120,7 @@ const Ge = /* @__PURE__ */ R({
120
120
  },
121
121
  hasChanges: n,
122
122
  saveSilent: v
123
- }), { __sfc: !0, PreviewContainer: k, OnboardingWrapper: A, headerWrapperRef: l, dynamicContentStore: a, unsubscribeStore: p, props: u, configStore: g, editorStore: s, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: v, templateId: i, userId: b, guidoConfig: C, templateConfig: o, html: r, css: h, partnerName: c, productType: m, messageType: S, username: w, preselectedDynamicContentList: d, emit: t, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
123
+ }), { __sfc: !0, PreviewContainer: k, OnboardingWrapper: A, headerWrapperRef: l, dynamicContentStore: a, unsubscribeStore: p, props: u, configStore: g, editorStore: i, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: v, templateId: s, userId: b, guidoConfig: C, templateConfig: o, html: r, css: h, partnerName: c, productType: d, messageType: S, username: w, preselectedDynamicContentList: m, emit: t, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
124
124
  }
125
125
  });
126
126
  export {
@@ -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
  };
@@ -1,23 +1,23 @@
1
- import { useActionsApi as y } from "./useActionsApi.js";
1
+ import { useActionsApi as C } from "./useActionsApi.js";
2
2
  import { useBlocksConfig as E } from "./useBlocksConfig.js";
3
- import { useCustomInterfaceAppearance as w } from "./useCustomInterfaceAppearance.js";
4
- import { useStripoEventHandler as h } from "./useStripoEventHandler.js";
3
+ import { useCustomInterfaceAppearance as h } from "./useCustomInterfaceAppearance.js";
4
+ import { useStripoEventHandler as w } from "./useStripoEventHandler.js";
5
5
  import { useToaster as b } from "./useToaster.js";
6
6
  import { displayConditions as k } from "../enums/displayConditions.js";
7
7
  import { useStripoApi as B } from "../services/stripoApi.js";
8
8
  import V from "../static/styles/customEditorStyle.css.js";
9
9
  import { useEditorStore as _ } from "../stores/editor.js";
10
- import { dynamicContentToMergeTags as F } from "../utils/genericUtil.js";
10
+ import { dynamicContentToMergeTags as T } from "../utils/genericUtil.js";
11
11
  import A from "../package.json.js";
12
- const L = (d) => {
13
- const { handleError: u } = b(), { getToken: p, getCustomFonts: m } = B(), { handleEvent: g } = h(), { getStripoBlocksConfig: f } = E(), S = async (r, i = []) => {
14
- const t = _(), { html: n, css: l, forceRecreate: a } = r, { baseBlocks: e, extensions: c } = await f();
12
+ const L = (c) => {
13
+ const { handleError: l } = b(), { getToken: p, getCustomFonts: m } = B(), { handleEvent: g } = w(), { getStripoBlocksConfig: f } = E(), S = async (i, r = []) => {
14
+ const t = _(), { html: n, css: u, forceRecreate: a } = i, { baseBlocks: e, extensions: d } = await f();
15
15
  window.UIEditor.initEditor(
16
16
  document.querySelector("#guido-editor"),
17
17
  {
18
- metadata: d,
18
+ metadata: c,
19
19
  html: n,
20
- css: l,
20
+ css: u,
21
21
  forceRecreate: a,
22
22
  locale: "en",
23
23
  undoButtonSelector: "#guido__undo-button",
@@ -33,17 +33,21 @@ const L = (d) => {
33
33
  customConditionsEnabled: !0,
34
34
  conditionCategories: k,
35
35
  enableXSSSecurity: !0,
36
- messageSettingsEnabled: !1,
36
+ messageSettingsEnabled: !0,
37
+ displayGmailAnnotations: !0,
38
+ displayHiddenPreheader: !1,
39
+ displayTitle: !1,
40
+ displayUTM: !1,
37
41
  selectBlockAfterDropFromSettingsPanel: !0,
38
42
  ...e ? { baseBlocks: e } : {},
39
43
  editorFonts: {
40
44
  showDefaultStandardFonts: !0,
41
45
  showDefaultNotStandardFonts: !0,
42
- customFonts: i
46
+ customFonts: r
43
47
  },
44
48
  mergeTags: [
45
49
  {
46
- entries: F(d.preselectedDynamicContentList)
50
+ entries: T(c.preselectedDynamicContentList)
47
51
  }
48
52
  ],
49
53
  async onTokenRefreshRequest(o) {
@@ -51,17 +55,17 @@ const L = (d) => {
51
55
  const s = await p();
52
56
  o(s);
53
57
  } catch (s) {
54
- u(s, "Failed to refresh token");
58
+ l(s, "Failed to refresh token");
55
59
  }
56
60
  },
57
61
  onTemplateLoaded() {
58
62
  try {
59
- const { importCss: o } = w(), { activateCustomViewStyles: s } = y();
60
- o(), s(), d.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
63
+ const { importCss: o } = h(), { activateCustomViewStyles: s } = C();
64
+ o(), s(), c.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
61
65
  t.hasChanges = !1;
62
66
  }, 1e3);
63
67
  } catch (o) {
64
- u(o, "Failed to load custom interface appearance");
68
+ l(o, "Failed to load custom interface appearance");
65
69
  }
66
70
  },
67
71
  onCodeEditorVisibilityChanged(o) {
@@ -82,26 +86,26 @@ const L = (d) => {
82
86
  ".in-on-board-wrapper",
83
87
  ".in-drawer__container"
84
88
  ],
85
- extensions: c
89
+ extensions: d
86
90
  }
87
91
  );
88
- }, C = (r) => new Promise((i, t) => {
89
- var c;
92
+ }, y = (i) => new Promise((r, t) => {
93
+ var d;
90
94
  if (document.getElementById("UiEditorScript")) {
91
- r(), i();
95
+ i(), r();
92
96
  return;
93
97
  }
94
- const n = A.guido, a = `https://email-static.useinsider.com/guido/${(c = n == null ? void 0 : n.stripo) == null ? void 0 : c.version}/UIEditor.js`, e = document.createElement("script");
98
+ const n = A.guido, a = `https://email-static.useinsider.com/guido/${(d = n == null ? void 0 : n.stripo) == null ? void 0 : d.version}/UIEditor.js`, e = document.createElement("script");
95
99
  e.id = "UiEditorScript", e.type = "module", e.src = a, e.onload = () => {
96
- r(), i();
100
+ i(), r();
97
101
  }, e.onerror = () => {
98
102
  t(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
99
103
  }, document.body.appendChild(e);
100
104
  });
101
- return { initPlugin: async (r) => {
102
- await C(async () => {
103
- const i = await m();
104
- await S(r, i);
105
+ return { initPlugin: async (i) => {
106
+ await y(async () => {
107
+ const r = await m();
108
+ await S(i, r);
105
109
  });
106
110
  } };
107
111
  };
@@ -1,11 +1,12 @@
1
- import { migrateCheckbox as o } from "./checkboxMigrator.js";
2
- import { migrateCouponBlock as m } from "./couponBlockMigrator.js";
1
+ import { migrateCheckbox as m } from "./checkboxMigrator.js";
2
+ import { migrateCouponBlock as o } from "./couponBlockMigrator.js";
3
3
  import { migrateRadioButton as i } from "./radioButtonMigrator.js";
4
- import { migrateUnsubscribe as e } from "./unsubscribeMigrator.js";
5
- const c = async (t) => {
4
+ import { migrateRecommendation as e } from "./recommendationMigrator.js";
5
+ import { migrateUnsubscribe as a } from "./unsubscribeMigrator.js";
6
+ const s = async (t) => {
6
7
  let r = t;
7
- return r = o(r), r = i(r), r = await e(r), r = m(r), r;
8
+ return r = m(r), r = i(r), r = await a(r), r = o(r), r = e(r), r;
8
9
  };
9
10
  export {
10
- c as migrate
11
+ s as migrate
11
12
  };