@useinsider/guido 2.1.0-beta.25c1ef4 → 2.1.0-beta.28741ae

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 (61) hide show
  1. package/README.md +1 -3
  2. package/dist/components/organisms/header/EditorActions.vue.js +10 -8
  3. package/dist/components/organisms/header/EditorActions.vue2.js +40 -31
  4. package/dist/components/organisms/header/MigrationConfirmModal.vue.js +17 -0
  5. package/dist/components/organisms/header/MigrationConfirmModal.vue2.js +41 -0
  6. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +1 -1
  7. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +19 -19
  8. package/dist/composables/useSave.js +12 -16
  9. package/dist/composables/useStripo.js +57 -59
  10. package/dist/composables/useStripoEventHandler.js +12 -27
  11. package/dist/composables/useVersionHistoryApi.js +1 -1
  12. package/dist/config/i18n/en/index.js +11 -0
  13. package/dist/config/i18n/en/labels.json.js +12 -0
  14. package/dist/config/i18n/en/toasters.json.js +56 -0
  15. package/dist/config/i18n/en/tooltips.json.js +82 -0
  16. package/dist/config/i18n/index.js +7 -0
  17. package/dist/config/migrator/itemsBlockMigrator.js +136 -134
  18. package/dist/config/migrator/recommendationMigrator.js +42 -40
  19. package/dist/enums/unsubscribe.js +21 -25
  20. package/dist/extensions/Blocks/Items/block.js +45 -25
  21. package/dist/extensions/Blocks/Items/iconsRegistry.js +6 -5
  22. package/dist/extensions/Blocks/Items/items.css.js +48 -0
  23. package/dist/extensions/Blocks/Recommendation/block.js +49 -29
  24. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +4 -3
  25. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +48 -0
  26. package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
  27. package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
  28. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
  29. package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
  30. package/dist/extensions/Blocks/common-control.js +12 -4
  31. package/dist/extensions/Blocks/common-icons.js +39 -0
  32. package/dist/guido.css +1 -1
  33. package/dist/services/stripoApi.js +19 -55
  34. package/dist/src/@types/events.d.ts +2 -34
  35. package/dist/src/components/Guido.vue.d.ts +1 -1
  36. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  37. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  38. package/dist/src/components/organisms/header/MigrationConfirmModal.vue.d.ts +6 -0
  39. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  40. package/dist/src/components/wrappers/WpModal.vue.d.ts +2 -2
  41. package/dist/src/config/i18n/en/index.d.ts +1 -0
  42. package/dist/src/config/i18n/index.d.ts +16 -0
  43. package/dist/src/enums/unsubscribe.d.ts +0 -3
  44. package/dist/src/extensions/Blocks/Items/block.d.ts +1 -0
  45. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
  46. package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -0
  47. package/dist/src/extensions/Blocks/common-control.d.ts +5 -0
  48. package/dist/src/extensions/Blocks/common-icons.d.ts +1 -0
  49. package/dist/src/services/stripoApi.d.ts +0 -5
  50. package/dist/src/stores/editor.d.ts +0 -23
  51. package/dist/src/stores/template.d.ts +3 -0
  52. package/dist/static/styles/components/notification.css.js +18 -0
  53. package/dist/static/styles/components/tools.css.js +6 -2
  54. package/dist/static/styles/variables.css.js +2 -0
  55. package/dist/stores/editor.js +1 -2
  56. package/dist/stores/template.js +9 -0
  57. package/dist/stores/unsubscribe.js +37 -34
  58. package/package.json +1 -1
  59. package/dist/composables/useSyncModuleExtractor.js +0 -33
  60. package/dist/src/composables/useSyncModuleExtractor.d.ts +0 -4
  61. package/dist/src/mock/api/settings.d.ts +0 -2
package/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://www.youtube.com/shorts/Y0RwBeMezL4" target="_blank" rel="noopener noreferrer">
3
- <img width="180"
4
- src="https://web-image.useinsider.com/guido/defaultImageLibrary/iUH0liTK0d2YDsVB5LDN1770169173.jpg"
5
- alt="Guido logo">
3
+ <img width="180" src="./public/guido.png" alt="Guido logo">
6
4
  </a>
7
5
  </p>
8
6
 
@@ -1,21 +1,23 @@
1
1
  import l from "./EditorActions.vue2.js";
2
2
  /* empty css */
3
- import r from "../../../_virtual/_plugin-vue2_normalizer.js";
4
- var d = function() {
3
+ import d from "../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var u = function() {
5
5
  var s, i, n, a;
6
- var e = this, o = e._self._c, t = e._self._setupProxy;
7
- return o("div", { staticClass: "d-f editor-actions" }, [t.isVersionHistoryButtonVisible ? o(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : e._e(), o(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = (s = t.config) == null ? void 0 : s.features) != null && i.saveAsTemplate ? o(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : e._e(), (a = (n = t.config) == null ? void 0 : n.features) != null && a.testMessage ? o(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button", { staticPosition: "bottom right" }), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.testEmailClick } }) : e._e(), t.editorStore.isPreviewModeOpen ? e._e() : o(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(_) {
6
+ var o = this, e = o._self._c, t = o._self._setupProxy;
7
+ return e("div", { staticClass: "d-f editor-actions" }, [t.isVersionHistoryButtonVisible ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : o._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = (s = t.config) == null ? void 0 : s.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : o._e(), (a = (n = t.config) == null ? void 0 : n.features) != null && a.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button", { staticPosition: "bottom right" }), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.testEmailClick } }) : o._e(), t.editorStore.isPreviewModeOpen ? o._e() : e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(r) {
8
8
  return t.handleSave(!1);
9
+ } } }), e(t.MigrationConfirmModal, { ref: "migrationModalRef", on: { confirm: function(r) {
10
+ return t.executeSave(!1);
9
11
  } } })], 1);
10
- }, u = [], p = /* @__PURE__ */ r(
12
+ }, p = [], c = /* @__PURE__ */ d(
11
13
  l,
12
- d,
13
14
  u,
15
+ p,
14
16
  !1,
15
17
  null,
16
- "17dd4d8b"
18
+ "c2f87f0a"
17
19
  );
18
- const v = p.exports;
20
+ const v = c.exports;
19
21
  export {
20
22
  v as default
21
23
  };
@@ -1,41 +1,50 @@
1
- import { defineComponent as g, ref as u, computed as f } from "vue";
2
- import { useConfig as E } from "../../../composables/useConfig.js";
3
- import { useExport as h } from "../../../composables/useExport.js";
4
- import { useTestEmailClick as w } from "../../../composables/useGuidoActions.js";
5
- import { useSave as x } from "../../../composables/useSave.js";
6
- import { useTranslations as T } from "../../../composables/useTranslations.js";
7
- import { useVersionHistoryApi as O } from "../../../composables/useVersionHistoryApi.js";
8
- import { useEditorStore as A } from "../../../stores/editor.js";
9
- import { getTooltipOptions as C } from "../../../utils/tooltipUtils.js";
10
- import { InButtonV2 as k } from "@useinsider/design-system-vue";
11
- const J = /* @__PURE__ */ g({
1
+ import { defineComponent as T, ref as n, computed as a } from "vue";
2
+ import { useConfig as w } from "../../../composables/useConfig.js";
3
+ import { useExport as O } from "../../../composables/useExport.js";
4
+ import { useTestEmailClick as C } from "../../../composables/useGuidoActions.js";
5
+ import { useSave as M } from "../../../composables/useSave.js";
6
+ import { useTranslations as A } from "../../../composables/useTranslations.js";
7
+ import { useVersionHistoryApi as b } from "../../../composables/useVersionHistoryApi.js";
8
+ import { useEditorStore as k } from "../../../stores/editor.js";
9
+ import { useTemplateStore as B } from "../../../stores/template.js";
10
+ import { getTooltipOptions as j } from "../../../utils/tooltipUtils.js";
11
+ import { InButtonV2 as D } from "@useinsider/design-system-vue";
12
+ import I from "./MigrationConfirmModal.vue.js";
13
+ const X = /* @__PURE__ */ T({
12
14
  __name: "EditorActions",
13
- setup(B, { expose: v }) {
14
- const { config: n } = E(), { exportHtml: a } = h(), { save: l } = x(), { openVersionHistory: p, closeVersionHistory: c } = O(), o = A(), s = T(), r = u(!1), i = u(!1), d = w(), y = () => {
15
- if (o.isVersionHistoryOpen) {
16
- c();
15
+ setup(P, { expose: H }) {
16
+ const { config: m } = w(), { exportHtml: l } = O(), { save: p } = M(), { openVersionHistory: c, closeVersionHistory: u } = b(), e = k(), f = B(), s = A(), r = n(!1), i = n(!1), v = n(), S = C(), d = a(() => Object.values(f.migrations).some((o) => o > 0)), V = () => {
17
+ if (e.isVersionHistoryOpen) {
18
+ u();
17
19
  return;
18
20
  }
19
- p();
20
- }, H = async () => {
21
- r.value = !0, await a(), r.value = !1;
22
- }, V = () => {
23
- o.isSaveAsTemplateDrawerOpen = !0;
24
- }, S = f(() => o.isVersionHistoryOpen ? s("newsletter.close-version-history") : s("newsletter.version-history")), _ = f(
21
+ c();
22
+ }, _ = async () => {
23
+ r.value = !0, await l(), r.value = !1;
24
+ }, h = () => {
25
+ e.isSaveAsTemplateDrawerOpen = !0;
26
+ }, x = a(() => e.isVersionHistoryOpen ? s("newsletter.close-version-history") : s("newsletter.version-history")), E = a(
25
27
  () => {
26
- var t, e;
27
- return ((e = (t = n.value) == null ? void 0 : t.features) == null ? void 0 : e.versionHistory) && !o.isPreviewModeOpen;
28
+ var o, t;
29
+ return ((t = (o = m.value) == null ? void 0 : o.features) == null ? void 0 : t.versionHistory) && !e.isPreviewModeOpen;
28
30
  }
29
- ), m = async (t) => {
30
- i.value = !0, o.loadingStatus = !0;
31
- const e = await l(t);
32
- return i.value = !1, (t || !e) && (o.loadingStatus = !1), e;
31
+ ), y = async (o) => {
32
+ i.value = !0, e.loadingStatus = !0;
33
+ const t = await p(o);
34
+ return i.value = !1, (o || !t) && (e.loadingStatus = !1), t;
35
+ }, g = (o) => {
36
+ var t;
37
+ if (!o && d.value) {
38
+ (t = v.value) == null || t.open();
39
+ return;
40
+ }
41
+ y(o);
33
42
  };
34
- return v({
35
- handleSave: m
36
- }), { __sfc: !0, config: n, exportHtml: a, save: l, openVersionHistory: p, closeVersionHistory: c, editorStore: o, trans: s, isExporting: r, isSaving: i, testEmailClick: d, handleVersionHistory: y, handleExport: H, handleSaveAs: V, versionHistoryTooltipText: S, isVersionHistoryButtonVisible: _, handleSave: m, getTooltipOptions: C, InButtonV2: k };
43
+ return H({
44
+ handleSave: g
45
+ }), { __sfc: !0, config: m, exportHtml: l, save: p, openVersionHistory: c, closeVersionHistory: u, editorStore: e, templateStore: f, trans: s, isExporting: r, isSaving: i, migrationModalRef: v, testEmailClick: S, hasMigrations: d, handleVersionHistory: V, handleExport: _, handleSaveAs: h, versionHistoryTooltipText: x, isVersionHistoryButtonVisible: E, executeSave: y, handleSave: g, getTooltipOptions: j, InButtonV2: D, MigrationConfirmModal: I };
37
46
  }
38
47
  });
39
48
  export {
40
- J as default
49
+ X as default
41
50
  };
@@ -0,0 +1,17 @@
1
+ import r from "./MigrationConfirmModal.vue2.js";
2
+ import i from "../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var n = function() {
4
+ var o = this, s = o._self._c, e = o._self._setupProxy;
5
+ return e.isVisible ? s(e.WpModal, { attrs: { id: "migration-confirm-modal", size: "X-small", "close-on-outside-click": !1, "footer-button-options": e.footerButtonOptions, title: e.trans("email-editor.migration-confirm-save") }, on: { close: e.close, "primary-action": e.handleConfirm } }, [s("p", [o._v(" " + o._s(e.confirmMessage.prefix)), s("strong", [o._v(o._s(e.blockNames))]), o._v(o._s(e.confirmMessage.suffix) + " ")])]) : o._e();
6
+ }, t = [], a = /* @__PURE__ */ i(
7
+ r,
8
+ n,
9
+ t,
10
+ !1,
11
+ null,
12
+ null
13
+ );
14
+ const m = a.exports;
15
+ export {
16
+ m as default
17
+ };
@@ -0,0 +1,41 @@
1
+ import { defineComponent as _, ref as a, computed as c } from "vue";
2
+ import x from "../../wrappers/WpModal.vue.js";
3
+ import { useTranslations as y } from "../../../composables/useTranslations.js";
4
+ import { useTemplateStore as k } from "../../../stores/template.js";
5
+ const C = /* @__PURE__ */ _({
6
+ __name: "MigrationConfirmModal",
7
+ emits: ["confirm"],
8
+ setup(h, { expose: l, emit: m }) {
9
+ const t = a(!1), n = k(), e = y(), f = a({
10
+ cancelOrBackButton: {
11
+ type: "secondary",
12
+ labelText: e("campaign-builder.cancel"),
13
+ styling: "ghost"
14
+ },
15
+ primaryButton: {
16
+ type: "primary",
17
+ labelText: e("email-editor.migration-confirm-save")
18
+ }
19
+ }), p = c(() => {
20
+ const i = n.migrations["recommendation-block"] > 0, o = n.migrations["items-block"] > 0;
21
+ if (i && o) {
22
+ const g = e("email-recommendation.recommendation"), b = e("email-items.items");
23
+ return `${g} ${e("campaign-builder.or")} ${b}`;
24
+ }
25
+ return e(o ? "email-items.items" : "email-recommendation.recommendation");
26
+ }), u = c(() => {
27
+ const [i, o] = e("email-editor.migration-confirm-message").split("{blockNames}");
28
+ return { prefix: i || "", suffix: o || "" };
29
+ }), r = () => {
30
+ t.value = !0;
31
+ }, s = () => {
32
+ t.value = !1;
33
+ }, d = () => {
34
+ s(), m("confirm");
35
+ };
36
+ return l({ open: r }), { __sfc: !0, emit: m, isVisible: t, templateStore: n, trans: e, footerButtonOptions: f, blockNames: p, confirmMessage: u, open: r, close: s, handleConfirm: d, WpModal: x };
37
+ }
38
+ });
39
+ export {
40
+ C as default
41
+ };
@@ -16,7 +16,7 @@ var o = function() {
16
16
  i,
17
17
  !1,
18
18
  null,
19
- "a86fc486"
19
+ "df672485"
20
20
  );
21
21
  const _ = c.exports;
22
22
  export {
@@ -1,15 +1,15 @@
1
- import { defineComponent as f, ref as y, computed as n, watch as T } from "vue";
2
- import g from "../../wrappers/WpDrawer.vue.js";
3
- import { useToaster as S } from "../../../composables/useToaster.js";
4
- import { useTranslations as v } from "../../../composables/useTranslations.js";
5
- import { ToasterTypeOptions as B } from "../../../enums/toaster.js";
1
+ import { defineComponent as g, ref as y, computed as n, watch as S } from "vue";
2
+ import T from "../../wrappers/WpDrawer.vue.js";
3
+ import { useToaster as v } from "../../../composables/useToaster.js";
4
+ import { useTranslations as B } from "../../../composables/useTranslations.js";
5
+ import { ToasterTypeOptions as C } from "../../../enums/toaster.js";
6
6
  import { useUnsubscribeStore as w } from "../../../stores/unsubscribe.js";
7
- import { InContainer as C } from "@useinsider/design-system-vue";
8
- import h from "./UnsubscribeBreadcrumb.vue.js";
9
- const E = /* @__PURE__ */ f({
7
+ import { InContainer as h } from "@useinsider/design-system-vue";
8
+ import U from "./UnsubscribeBreadcrumb.vue.js";
9
+ const F = /* @__PURE__ */ g({
10
10
  __name: "UnsubscribePageSelection",
11
- setup(_) {
12
- const s = v(), e = w(), { showToaster: a } = S(), o = y(!1), c = n(() => e.isActiveTypeLastInCollection ? o.value ? s("unsubscription-preference.applying-changes") : s("statistics.apply") : s("products.select-and-continue")), i = n(() => e.pageSelectionUpdateStatus && e.isActiveTypeFirstInCollection ? s("products.cancel") : s("newsletter.back")), p = n(() => ({
11
+ setup(P) {
12
+ const s = B(), e = w(), { showToaster: a } = v(), o = y(!1), c = n(() => e.isActiveTypeLastInCollection ? o.value ? s("unsubscription-preference.applying-changes") : s("statistics.apply") : s("products.select-and-continue")), i = n(() => e.pageSelectionUpdateStatus && e.isActiveTypeFirstInCollection ? s("products.cancel") : s("newsletter.back")), u = n(() => ({
13
13
  primaryButton: {
14
14
  styling: "solid",
15
15
  type: "primary",
@@ -23,28 +23,28 @@ const E = /* @__PURE__ */ f({
23
23
  labelText: i.value,
24
24
  disabledStatus: o.value
25
25
  }
26
- })), u = (t) => e.getSelectedTemplateByActiveType === t ? "bor-w-3 bor-s-s bor-c-7" : "bor-w-1 bor-s-s bor-c-6", r = (t) => {
26
+ })), p = (t) => e.getSelectedTemplateByActiveType === t ? "bor-w-3 bor-s-s bor-c-7" : "bor-w-1 bor-s-s bor-c-6", r = (t) => {
27
27
  e.pageSelectionDrawerStatus = !1, t && setTimeout(() => {
28
28
  t();
29
29
  }, 500);
30
- }, m = () => {
30
+ }, d = () => {
31
31
  if (e.isActiveTypeFirstInCollection) {
32
32
  r(), e.pageSelectionUpdateStatus || (e.typeSelectionDrawerStatus = !0);
33
33
  return;
34
34
  }
35
35
  e.setPreviousType();
36
- }, d = () => {
36
+ }, m = () => {
37
37
  if (e.isActiveTypeLastInCollection) {
38
38
  o.value = !0;
39
- const t = e.selectedCollectionType, l = e.getSelectedTemplatesByCollection(t);
40
- e.addUnsubscribePages(l), document.dispatchEvent(new CustomEvent("unsubscribe:select", {
39
+ const t = e.selectedCollectionType, l = e.getSelectedTemplatesByCollection(t), f = e.getSelectedUnsubscribePagesByCollection(t);
40
+ e.removeUnsubscribePages(f), e.addUnsubscribePages(l), document.dispatchEvent(new CustomEvent("unsubscribe:select", {
41
41
  detail: {
42
42
  collectionType: t,
43
43
  selectedPages: l
44
44
  }
45
45
  })), r(() => {
46
46
  o.value = !1, a({
47
- type: B.Success,
47
+ type: C.Success,
48
48
  message: s("global-unsubscribe.pages-were-attached")
49
49
  });
50
50
  });
@@ -54,11 +54,11 @@ const E = /* @__PURE__ */ f({
54
54
  }, b = (t) => {
55
55
  e.setSelectedTemplate(t);
56
56
  };
57
- return T(() => e.pageSelectionDrawerStatus, (t) => {
57
+ return S(() => e.pageSelectionDrawerStatus, (t) => {
58
58
  t && e.pageSelectionUpdateStatus && e.fetchTemplates();
59
- }), { __sfc: !0, trans: s, unsubscribeStore: e, showToaster: a, isApplying: o, getPrimaryButtonText: c, getCancelOrBackButtonText: i, footerButtonGroupOptions: p, getBorderClass: u, closeModal: r, handleBack: m, handleSave: d, selectTemplate: b, WpDrawer: g, InContainer: C, UnsubscribeBreadcrumb: h };
59
+ }), { __sfc: !0, trans: s, unsubscribeStore: e, showToaster: a, isApplying: o, getPrimaryButtonText: c, getCancelOrBackButtonText: i, footerButtonGroupOptions: u, getBorderClass: p, closeModal: r, handleBack: d, handleSave: m, selectTemplate: b, WpDrawer: T, InContainer: h, UnsubscribeBreadcrumb: U };
60
60
  }
61
61
  });
62
62
  export {
63
- E as default
63
+ F as default
64
64
  };
@@ -1,21 +1,17 @@
1
- import { useConfig as u } from "./useConfig.js";
2
- import { useSaveStart as d, useSaveComplete as p } from "./useGuidoActions.js";
3
- import { useSyncModuleExtractor as f } from "./useSyncModuleExtractor.js";
4
- import { useStripoApi as v } from "../services/stripoApi.js";
5
- import { useTemplatePreparation as S } from "../utils/templatePreparation.js";
6
- import { useHtmlValidator as x } from "./useHtmlValidator.js";
7
- const E = () => {
8
- const o = d(), s = p(), { validateHtml: i } = x(), { callbacks: a } = u(), { extractSyncModuleUnsubscribeData: r } = f(), { setSyncModuleUnsubscriptionPages: n } = v();
9
- return { save: async (l = !1) => {
1
+ import { useConfig as l } from "./useConfig.js";
2
+ import { useSaveStart as m, useSaveComplete as c } from "./useGuidoActions.js";
3
+ import { useTemplatePreparation as d } from "../utils/templatePreparation.js";
4
+ import { useHtmlValidator as p } from "./useHtmlValidator.js";
5
+ const w = () => {
6
+ const i = m(), s = c(), { validateHtml: o } = p(), { callbacks: a } = l();
7
+ return { save: async (r = !1) => {
10
8
  var e;
11
- o();
12
- const { prepareTemplateDetails: c } = S(), t = await c();
13
- if (!await i(t.compiledHtml, t.dynamicContentList, !0) || (e = a.value) != null && e.externalValidation && !await a.value.externalValidation(t))
14
- return;
15
- const m = r(t.rawHtml);
16
- return await n(m), l || s(t), t;
9
+ i();
10
+ const { prepareTemplateDetails: n } = d(), t = await n();
11
+ if (await o(t.compiledHtml, t.dynamicContentList, !0) && !((e = a.value) != null && e.externalValidation && !await a.value.externalValidation(t)))
12
+ return r || s(t), t;
17
13
  } };
18
14
  };
19
15
  export {
20
- E as useSave
16
+ w as useSave
21
17
  };
@@ -1,26 +1,27 @@
1
- import { useActionsApi as M } from "./useActionsApi.js";
2
- import { useBlocksConfig as A } from "./useBlocksConfig.js";
3
- import { useConfig as F } from "./useConfig.js";
4
- import { useCustomInterfaceAppearance as D } from "./useCustomInterfaceAppearance.js";
5
- import { useStripoEventHandler as I } from "./useStripoEventHandler.js";
6
- import { useToaster as U } from "./useToaster.js";
7
- import { displayConditions as P } from "../enums/displayConditions.js";
8
- import { useStripoApi as R } from "../services/stripoApi.js";
9
- import H from "../static/styles/customEditorStyle.css.js";
10
- import { useEditorStore as S } from "../stores/editor.js";
11
- import { dynamicContentToMergeTags as O } from "../utils/genericUtil.js";
12
- import q from "../package.json.js";
1
+ import { useActionsApi as _ } from "./useActionsApi.js";
2
+ import { useBlocksConfig as B } from "./useBlocksConfig.js";
3
+ import { useConfig as v } from "./useConfig.js";
4
+ import { useCustomInterfaceAppearance as A } from "./useCustomInterfaceAppearance.js";
5
+ import { useStripoEventHandler as F } from "./useStripoEventHandler.js";
6
+ import { useToaster as D } from "./useToaster.js";
7
+ import { localePatch as I } from "../config/i18n/index.js";
8
+ import { displayConditions as M } from "../enums/displayConditions.js";
9
+ import { useStripoApi as U } from "../services/stripoApi.js";
10
+ import P from "../static/styles/customEditorStyle.css.js";
11
+ import { useEditorStore as R } from "../stores/editor.js";
12
+ import { dynamicContentToMergeTags as H } from "../utils/genericUtil.js";
13
+ import O from "../package.json.js";
13
14
  const Z = (c) => {
14
- const { features: l, template: C } = F(), { handleError: u } = U(), { getToken: E, getCustomFonts: h, getSyncModulesStatus: w } = R(), { handleEvent: b } = I(), { getStripoBlocksConfig: k } = A(), T = async (i, n = [], r = !1) => {
15
- var g, f, y;
16
- const e = S(), { html: p, css: a } = i, { baseBlocks: t, extensions: d } = await k(), m = ((g = l.value) == null ? void 0 : g.displayConditions) ?? !0, _ = ((f = l.value) == null ? void 0 : f.modulesDisabled) ?? !1, B = ((y = C.value) == null ? void 0 : y.forceRecreate) ?? !1;
15
+ const { features: l, template: y } = v(), { handleError: u } = D(), { getToken: C, getCustomFonts: S } = U(), { handleEvent: E } = F(), { getStripoBlocksConfig: h } = B(), w = async (i, r = []) => {
16
+ var m, f, g;
17
+ const o = R(), { html: n, css: p } = i, { baseBlocks: s, extensions: t } = await h(), a = ((m = l.value) == null ? void 0 : m.displayConditions) ?? !0, k = ((f = l.value) == null ? void 0 : f.modulesDisabled) ?? !1, T = ((g = y.value) == null ? void 0 : g.forceRecreate) ?? !1;
17
18
  window.UIEditor.initEditor(
18
19
  document.querySelector("#guido-editor"),
19
20
  {
20
21
  metadata: c,
21
- html: p,
22
- css: a,
23
- forceRecreate: B,
22
+ html: n,
23
+ css: p,
24
+ forceRecreate: T,
24
25
  locale: "en",
25
26
  undoButtonSelector: "#guido__undo-button",
26
27
  redoButtonSelector: "#guido__redo-button",
@@ -30,89 +31,86 @@ const Z = (c) => {
30
31
  customAppearanceMergetags: !0,
31
32
  customAppearanceMergetagsBorderColor: "#f1f3fe",
32
33
  customAppearanceMergetagsBackgroundColor: "#f1f3fe",
33
- customViewStyles: H,
34
- conditionsEnabled: m,
35
- customConditionsEnabled: m,
36
- conditionCategories: P,
34
+ customViewStyles: P,
35
+ conditionsEnabled: a,
36
+ customConditionsEnabled: a,
37
+ conditionCategories: M,
37
38
  enableXSSSecurity: !0,
38
- modulesDisabled: _,
39
- syncModulesEnabled: r,
39
+ modulesDisabled: k,
40
40
  messageSettingsEnabled: !0,
41
41
  displayGmailAnnotations: !0,
42
42
  displayHiddenPreheader: !1,
43
43
  displayTitle: !1,
44
44
  displayUTM: !1,
45
45
  selectElementAfterDrop: !0,
46
- ...t ? { baseBlocks: t } : {},
46
+ ...s ? { baseBlocks: s } : {},
47
47
  editorFonts: {
48
48
  showDefaultStandardFonts: !0,
49
49
  showDefaultNotStandardFonts: !0,
50
- customFonts: n
50
+ customFonts: r
51
51
  },
52
52
  mergeTags: [
53
53
  {
54
- entries: O(c.preselectedDynamicContentList)
54
+ entries: H(c.preselectedDynamicContentList)
55
55
  }
56
56
  ],
57
- async onTokenRefreshRequest(o) {
57
+ async onTokenRefreshRequest(e) {
58
58
  try {
59
- const s = await E();
60
- o(s);
61
- } catch (s) {
62
- u(s, "Failed to refresh token");
59
+ const d = await C();
60
+ e(d);
61
+ } catch (d) {
62
+ u(d, "Failed to refresh token");
63
63
  }
64
64
  },
65
65
  onTemplateLoaded() {
66
66
  try {
67
- const { importCss: o } = D(), { activateCustomViewStyles: s, updateTimerInClonedTemplate: v } = M();
68
- o(), s(), v(), c.onReady(), e.isStripoInitialized = !0, e.loadingStatus = !1, setTimeout(() => {
69
- e.hasChanges = !1;
67
+ const { importCss: e } = A(), { activateCustomViewStyles: d, updateTimerInClonedTemplate: V } = _();
68
+ e(), d(), V(), c.onReady(), o.isStripoInitialized = !0, o.loadingStatus = !1, setTimeout(() => {
69
+ o.hasChanges = !1;
70
70
  }, 1e3);
71
- } catch (o) {
72
- u(o, "Failed to load custom interface appearance");
71
+ } catch (e) {
72
+ u(e, "Failed to load custom interface appearance");
73
73
  }
74
74
  },
75
- onCodeEditorVisibilityChanged(o) {
76
- e.isCodeEditorOpen = o;
75
+ onCodeEditorVisibilityChanged(e) {
76
+ o.isCodeEditorOpen = e;
77
77
  },
78
- onEditorVisualModeChanged(o) {
79
- e.editorVisualMode = o.toLowerCase();
78
+ onEditorVisualModeChanged(e) {
79
+ o.editorVisualMode = e.toLowerCase();
80
80
  },
81
- onVersionHistoryVisibilityChanged(o) {
82
- e.isVersionHistoryOpen = o;
81
+ onVersionHistoryVisibilityChanged(e) {
82
+ o.isVersionHistoryOpen = e;
83
83
  },
84
84
  onDataChanged() {
85
- e.hasChanges = !0;
85
+ o.hasChanges = !0;
86
86
  },
87
- onEvent: b,
87
+ onEvent: E,
88
88
  ignoreClickOutsideSelectors: [
89
89
  "#guido-dynamic-content-modal",
90
90
  ".in-on-board-wrapper",
91
91
  ".in-drawer__container"
92
92
  ],
93
- extensions: d
93
+ extensions: t,
94
+ localePatch: I
94
95
  }
95
96
  );
96
- }, V = (i) => new Promise((n, r) => {
97
- var d;
97
+ }, b = (i) => new Promise((r, o) => {
98
+ var a;
98
99
  if (document.getElementById("UiEditorScript")) {
99
- i(), n();
100
+ i(), r();
100
101
  return;
101
102
  }
102
- const e = q.guido, a = `https://email-static.useinsider.com/guido/${(d = e == null ? void 0 : e.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(), n();
103
+ const n = O.guido, s = `https://email-static.useinsider.com/guido/${(a = n == null ? void 0 : n.stripo) == null ? void 0 : a.version}/UIEditor.js`, t = document.createElement("script");
104
+ t.id = "UiEditorScript", t.type = "module", t.src = s, t.onload = () => {
105
+ i(), r();
105
106
  }, t.onerror = () => {
106
- r(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
107
+ o(new Error(`Failed to load Stripo UIEditor script from S3: ${s}`));
107
108
  }, document.body.appendChild(t);
108
109
  });
109
110
  return { initPlugin: async (i) => {
110
- await V(async () => {
111
- const n = S(), [r, e] = await Promise.all([
112
- h(),
113
- w()
114
- ]);
115
- n.syncModulesEnabled = e, await T(i, r, e);
111
+ await b(async () => {
112
+ const r = await S();
113
+ await w(i, r);
116
114
  });
117
115
  } };
118
116
  };
@@ -1,35 +1,20 @@
1
- import { useStripoApi as i } from "../services/stripoApi.js";
2
- import { useEditorStore as u } from "../stores/editor.js";
3
- import { useOnboardingStore as l } from "../stores/onboarding.js";
4
- import { useUnsubscribeStore as b } from "../stores/unsubscribe.js";
5
- const v = () => {
6
- const { updateSyncModule: d, getSyncModule: r } = i(), n = u(), s = b(), a = {
7
- block_dropped: ({ blockName: e }) => {
8
- if (e === "BLOCK_TEXT") {
9
- const o = l(), t = !o.shouldShowOnboarding("textBlockOnboarding"), c = o.isActive("textBlockOnboarding");
10
- if (t || c)
1
+ import { useOnboardingStore as i } from "../stores/onboarding.js";
2
+ const c = () => {
3
+ const e = {
4
+ block_dropped: ({ blockName: t }) => {
5
+ if (t === "BLOCK_TEXT") {
6
+ const n = i(), o = !n.shouldShowOnboarding("textBlockOnboarding"), r = n.isActive("textBlockOnboarding");
7
+ if (o || r)
11
8
  return;
12
- o.start("textBlockOnboarding");
9
+ n.start("textBlockOnboarding");
13
10
  }
14
- },
15
- module_saved: async (e) => {
16
- n.syncModulesEnabled && (console.debug("[module_saved] Saved module data:", e), await d(e));
17
- },
18
- module_dropped: async (e) => {
19
- if (!n.syncModulesEnabled)
20
- return;
21
- const { moduleId: o } = e, t = await r(o);
22
- console.debug("[module_dropped] Sync module data:", t), t.unsubscriptionPreferencePages.length && await s.fetchTemplates();
23
- },
24
- module_updated: async (e) => {
25
- n.syncModulesEnabled && (console.debug("[module_updated] Updated module data:", e), await d(e));
26
11
  }
27
12
  };
28
- return { handleEvent: async (e, o) => {
29
- const t = a[e];
30
- console.debug("Stripo Event: ", e, o), t && await t(o);
13
+ return { handleEvent: async (t, n) => {
14
+ const o = e[t];
15
+ o && await o(n);
31
16
  } };
32
17
  };
33
18
  export {
34
- v as useStripoEventHandler
19
+ c as useStripoEventHandler
35
20
  };
@@ -35,7 +35,7 @@ const S = () => {
35
35
  () => {
36
36
  s({
37
37
  type: t.Success,
38
- message: `${e} patch restored successfully.`
38
+ message: "Your version has been restored successfully."
39
39
  });
40
40
  },
41
41
  (o) => {
@@ -0,0 +1,11 @@
1
+ import o from "./labels.json.js";
2
+ import t from "./toasters.json.js";
3
+ import r from "./tooltips.json.js";
4
+ const e = {
5
+ ...o,
6
+ ...r,
7
+ ...t
8
+ };
9
+ export {
10
+ e as en
11
+ };
@@ -0,0 +1,12 @@
1
+ const e = "Items", o = {
2
+ "Global Styles & Layout": "Global Styles and Layout",
3
+ "Structures & Modules": "Structures and Modules",
4
+ "Recommendation Block": "Recommendation",
5
+ Items: e,
6
+ "This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.": "This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.",
7
+ "This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly.": "This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly."
8
+ };
9
+ export {
10
+ e as Items,
11
+ o as default
12
+ };