@useinsider/guido 3.1.1-beta.b962371 → 3.1.1-beta.b9b0a65

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 (37) hide show
  1. package/dist/components/Guido.vue.js +4 -4
  2. package/dist/components/Guido.vue2.js +91 -81
  3. package/dist/components/organisms/header/EditorActions.vue.js +2 -2
  4. package/dist/components/organisms/header/EditorActions.vue2.js +51 -36
  5. package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +51 -31
  6. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +1 -1
  7. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +23 -22
  8. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +1 -1
  9. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +37 -39
  10. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +3 -3
  11. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +30 -41
  12. package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +15 -14
  13. package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue2.js +18 -17
  14. package/dist/composables/useRibbonOffset.js +21 -0
  15. package/dist/composables/validators/useLiquidValidator.js +34 -28
  16. package/dist/config/compiler/recommendationCompilerRules.js +158 -44
  17. package/dist/config/compiler/utils/recommendationCompilerUtils.js +49 -46
  18. package/dist/enums/extensions/recommendationBlock.js +14 -11
  19. package/dist/enums/onboarding.js +7 -2
  20. package/dist/enums/recommendation.js +2 -2
  21. package/dist/guido.css +1 -1
  22. package/dist/services/recommendationApi.js +15 -15
  23. package/dist/services/stripoApi.js +9 -9
  24. package/dist/services/templateLibraryApi.js +48 -46
  25. package/dist/src/@types/generic.d.ts +0 -1
  26. package/dist/src/@types/save-as-template.d.ts +1 -0
  27. package/dist/src/composables/useRibbonOffset.d.ts +4 -0
  28. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +1 -1
  29. package/dist/src/enums/extensions/recommendationBlock.d.ts +3 -0
  30. package/dist/src/enums/onboarding.d.ts +6 -0
  31. package/dist/src/services/templateLibraryApi.d.ts +1 -1
  32. package/dist/src/stores/onboarding.d.ts +4 -0
  33. package/dist/static/styles/base.css.js +7 -2
  34. package/dist/stores/onboarding.js +4 -0
  35. package/dist/utils/templatePreparation.js +34 -25
  36. package/dist/utils/tooltipUtils.js +4 -5
  37. package/package.json +2 -2
@@ -3,7 +3,7 @@ import i from "./Guido.vue2.js";
3
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, { on: { "onboarding-finished": function(_) {
6
+ return r("div", { ref: "wrapperRef", 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(p) {
7
7
  return e.emit("onboarding:finished");
8
8
  } } }), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
9
9
  }, n = [], s = /* @__PURE__ */ a(
@@ -12,9 +12,9 @@ var t = function() {
12
12
  n,
13
13
  !1,
14
14
  null,
15
- "a26d7792"
15
+ "25780af6"
16
16
  );
17
- const v = s.exports;
17
+ const u = s.exports;
18
18
  export {
19
- v as default
19
+ u as default
20
20
  };
@@ -1,121 +1,131 @@
1
- import { defineComponent as K, defineAsyncComponent as _, ref as V, computed as P, watch as j, onMounted as q, onUnmounted as J } from "vue";
2
- import { provideGuidoActions as Q } from "../composables/useGuidoActions.js";
3
- import { usePartner as X } from "../composables/usePartner.js";
4
- import { useStripo as Y } from "../composables/useStripo.js";
5
- import { useTimerClone as Z } from "../composables/useTimerClone.js";
6
- import { migrate as A } from "../config/migrator/index.js";
7
- import { ModuleFolderDefaults as N } from "../enums/defaults.js";
8
- import $ from "./organisms/base/Toaster.vue.js";
9
- import ee from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
10
- import oe from "./organisms/header/HeaderWrapper.vue.js";
11
- import te from "./organisms/LoadingWrapper.vue.js";
12
- import ne from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
13
- import se from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
14
- import { useStripoApi as re } from "../services/stripoApi.js";
15
- import { useConfigStore as ce } from "../stores/config.js";
16
- import { useDynamicContentStore as ae } from "../stores/dynamic-content.js";
17
- import { useEditorStore as ie } from "../stores/editor.js";
18
- import { usePreviewStore as me } from "../stores/preview.js";
19
- import { useUnsubscribeStore as de } from "../stores/unsubscribe.js";
20
- const Me = /* @__PURE__ */ K({
1
+ import { defineComponent as j, defineAsyncComponent as R, ref as A, computed as I, watch as J, onMounted as Q, onUnmounted as X } from "vue";
2
+ import { provideGuidoActions as Y } from "../composables/useGuidoActions.js";
3
+ import { usePartner as Z } from "../composables/usePartner.js";
4
+ import { useStripo as ee } from "../composables/useStripo.js";
5
+ import { useTimerClone as te } from "../composables/useTimerClone.js";
6
+ import { migrate as W } from "../config/migrator/index.js";
7
+ import { ModuleFolderDefaults as B } from "../enums/defaults.js";
8
+ import { RIBBON_SELECTOR as oe } from "../enums/onboarding.js";
9
+ import ne from "./organisms/base/Toaster.vue.js";
10
+ import se from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
11
+ import re from "./organisms/header/HeaderWrapper.vue.js";
12
+ import ce from "./organisms/LoadingWrapper.vue.js";
13
+ import ae from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
14
+ import ie from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
15
+ import { useStripoApi as me } from "../services/stripoApi.js";
16
+ import { useConfigStore as de } from "../stores/config.js";
17
+ import { useDynamicContentStore as le } from "../stores/dynamic-content.js";
18
+ import { useEditorStore as ue } from "../stores/editor.js";
19
+ import { usePreviewStore as pe } from "../stores/preview.js";
20
+ import { useUnsubscribeStore as fe } from "../stores/unsubscribe.js";
21
+ const Re = /* @__PURE__ */ j({
21
22
  __name: "Guido",
22
23
  props: {
23
24
  config: null
24
25
  },
25
26
  emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
26
- setup(W, { expose: I, emit: t }) {
27
- const v = W, O = _(
27
+ setup(H, { expose: x, emit: s }) {
28
+ const b = H, G = R(
28
29
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
29
- ), G = _(
30
+ ), z = R(
30
31
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
31
- ), h = V(), i = ae(), y = de(), s = ce();
32
- s.init(v.config);
33
- const m = ie(), H = me(), c = P(() => m.hasChanges), { isTestPartner: x } = X(), f = () => {
32
+ ), S = A(), d = A(), l = le(), g = fe(), a = de();
33
+ a.init(b.config);
34
+ const u = ue(), q = pe(), i = I(() => u.hasChanges), { isTestPartner: K } = Z(), w = () => {
34
35
  var e;
35
- return (e = h.value) == null ? void 0 : e.handleSave(!0);
36
+ return (e = S.value) == null ? void 0 : e.handleSave(!0);
36
37
  }, {
37
- templateId: d,
38
- userId: b,
39
- partnerName: S,
40
- username: g,
41
- template: o,
42
- editor: n
43
- } = s, a = (o == null ? void 0 : o.html) || "", D = (o == null ? void 0 : o.css) || "", l = (o == null ? void 0 : o.preselectedDynamicContent) || [], w = (n == null ? void 0 : n.savedModulesFolderName) || N.SAVED_MODULES, E = (n == null ? void 0 : n.defaultModulesFolderName) || N.DEFAULT_MODULES;
44
- m.templateId = d;
45
- const u = {
46
- emailId: d,
47
- userId: b,
48
- username: g,
49
- partnerName: S,
50
- savedModulesFolderName: w,
51
- defaultModulesFolderName: E
52
- }, C = {
53
- preselectedDynamicContentList: l,
38
+ templateId: p,
39
+ userId: E,
40
+ partnerName: D,
41
+ username: C,
42
+ template: t,
43
+ editor: r
44
+ } = a, m = (t == null ? void 0 : t.html) || "", T = (t == null ? void 0 : t.css) || "", f = (t == null ? void 0 : t.preselectedDynamicContent) || [], k = (r == null ? void 0 : r.savedModulesFolderName) || B.SAVED_MODULES, F = (r == null ? void 0 : r.defaultModulesFolderName) || B.DEFAULT_MODULES;
45
+ u.templateId = p;
46
+ const v = {
47
+ emailId: p,
48
+ userId: E,
49
+ username: C,
50
+ partnerName: D,
51
+ savedModulesFolderName: k,
52
+ defaultModulesFolderName: F
53
+ }, L = {
54
+ preselectedDynamicContentList: f,
54
55
  onReady: () => {
55
- console.debug("guido:ready"), t("ready");
56
+ console.debug("guido:ready"), s("ready");
56
57
  }
57
- }, { initPlugin: T } = Y(u, C), { getDefaultTemplate: k } = re(), { cloneTimersOnSave: F, hasTimerBlocks: U } = Z(), B = P(() => {
58
+ }, { initPlugin: U } = ee(v, L), { getDefaultTemplate: _ } = me(), { cloneTimersOnSave: M, hasTimerBlocks: O } = te(), V = I(() => {
58
59
  var e;
59
- return !((e = s.ui) != null && e.showHeader);
60
+ return !((e = a.ui) != null && e.showHeader);
60
61
  });
61
- Q({
62
+ Y({
62
63
  onBack: () => {
63
- console.debug("guido:back"), t("back");
64
+ console.debug("guido:back"), s("back");
64
65
  },
65
66
  onSaveStart: () => {
66
- console.debug("guido:save:start"), t("save:start");
67
+ console.debug("guido:save:start"), s("save:start");
67
68
  },
68
69
  onSaveComplete: (e) => {
69
- const r = { ...e, metadata: u };
70
- console.debug("guido:save:complete", r), t("save:complete", r);
70
+ const n = { ...e, metadata: v };
71
+ console.debug("guido:save:complete", n), s("save:complete", n);
71
72
  },
72
73
  onTestEmailClick: () => {
73
- console.debug("guido:test-email:click"), t("test-email:click");
74
+ console.debug("guido:test-email:click"), s("test-email:click");
74
75
  }
75
76
  });
76
- const L = (e) => {
77
- console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
78
- }, M = () => {
77
+ const P = (e) => {
78
+ console.debug("dynamic-content:close", e), l.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
79
+ }, N = () => {
79
80
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
80
81
  };
81
- j(() => c.value, () => {
82
- t("on-change", c.value);
82
+ J(() => i.value, () => {
83
+ s("on-change", i.value);
83
84
  });
84
- const p = (e) => {
85
- const r = e, { attribute: R, position: z } = r.detail;
86
- console.debug("dynamic-content:open", r.detail), t("dynamic-content:open", R, z);
85
+ const y = (e) => {
86
+ const n = e, { attribute: o, position: $ } = n.detail;
87
+ console.debug("dynamic-content:open", n.detail), s("dynamic-content:open", o, $);
87
88
  };
88
- return q(async () => {
89
- console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
89
+ let c = null;
90
+ const h = () => {
91
+ var n;
92
+ const e = document.querySelector(oe);
93
+ (n = d.value) == null || n.style.setProperty("--ribbon-offset", `${(e == null ? void 0 : e.offsetHeight) ?? 0}px`);
94
+ };
95
+ return Q(async () => {
96
+ var n;
97
+ console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), h();
98
+ const e = (n = d.value) == null ? void 0 : n.parentElement;
99
+ e && (c = new ResizeObserver(h), c.observe(e));
90
100
  try {
91
- y.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
92
- let e = {
93
- html: a && await A(a),
94
- css: D
101
+ g.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
102
+ let o = {
103
+ html: m && await W(m),
104
+ css: T
95
105
  };
96
- e.html || (e = await k(), e.html = await A(e.html)), U(e.html) && (e.html = await F(e.html)), await T(e), i.selectedDynamicContentList = l;
97
- } catch (e) {
98
- console.error("Failed to initialize Stripo editor:", e);
106
+ o.html || (o = await _(), o.html = await W(o.html)), O(o.html) && (o.html = await M(o.html)), await U(o), l.selectedDynamicContentList = f;
107
+ } catch (o) {
108
+ console.error("Failed to initialize Stripo editor:", o);
99
109
  }
100
- document.addEventListener("dynamic-content:open", p);
101
- }), J(() => {
102
- document.removeEventListener("dynamic-content:open", p);
110
+ document.addEventListener("dynamic-content:open", y);
111
+ }), X(() => {
112
+ c == null || c.disconnect(), document.removeEventListener("dynamic-content:open", y);
103
113
  try {
104
114
  window.UIEditor.removeEditor();
105
115
  } catch {
106
116
  console.debug("Failed to remove Stripo editor: No editor found");
107
117
  }
108
- s.reset();
109
- }), I({
118
+ a.reset();
119
+ }), x({
110
120
  dynamicContent: {
111
- insert: L,
112
- close: M
121
+ insert: P,
122
+ close: N
113
123
  },
114
- hasChanges: c,
115
- saveSilent: f
116
- }), { __sfc: !0, PreviewContainer: O, OnboardingWrapper: G, headerWrapperRef: h, dynamicContentStore: i, unsubscribeStore: y, props: v, configStore: s, editorStore: m, previewStore: H, hasChanges: c, isTestPartner: x, saveSilent: f, templateId: d, userId: b, partnerName: S, username: g, templateConfig: o, editorConfig: n, html: a, css: D, preselectedDynamicContentList: l, savedModulesFolderName: w, defaultModulesFolderName: E, emit: t, metadata: u, options: C, initPlugin: T, getDefaultTemplate: k, cloneTimersOnSave: F, hasTimerBlocks: U, noHeader: B, insertDynamicContent: L, closeDynamicContent: M, handleDynamicContentOpen: p, Toaster: $, FilterSelectionDrawer: ee, HeaderWrapper: oe, LoadingWrapper: te, SaveAsTemplateDrawer: ne, UnsubscribeWrapper: se };
124
+ hasChanges: i,
125
+ saveSilent: w
126
+ }), { __sfc: !0, PreviewContainer: G, OnboardingWrapper: z, headerWrapperRef: S, wrapperRef: d, dynamicContentStore: l, unsubscribeStore: g, props: b, configStore: a, editorStore: u, previewStore: q, hasChanges: i, isTestPartner: K, saveSilent: w, templateId: p, userId: E, partnerName: D, username: C, templateConfig: t, editorConfig: r, html: m, css: T, preselectedDynamicContentList: f, savedModulesFolderName: k, defaultModulesFolderName: F, emit: s, metadata: v, options: L, initPlugin: U, getDefaultTemplate: _, cloneTimersOnSave: M, hasTimerBlocks: O, noHeader: V, insertDynamicContent: P, closeDynamicContent: N, handleDynamicContentOpen: y, ribbonObserver: c, updateRibbonOffset: h, Toaster: ne, FilterSelectionDrawer: se, HeaderWrapper: re, LoadingWrapper: ce, SaveAsTemplateDrawer: ae, UnsubscribeWrapper: ie };
117
127
  }
118
128
  });
119
129
  export {
120
- Me as default
130
+ Re as default
121
131
  };
@@ -4,7 +4,7 @@ import d from "../../../_virtual/_plugin-vue2_normalizer.js";
4
4
  var u = function() {
5
5
  var s, i, n, a;
6
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) {
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.handleTestEmail } }) : 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
9
  } } }), e(t.MigrationConfirmModal, { ref: "migrationModalRef", on: { confirm: function(r) {
10
10
  return t.executeSave(!1);
@@ -15,7 +15,7 @@ var u = function() {
15
15
  p,
16
16
  !1,
17
17
  null,
18
- "acff76a8"
18
+ "4e2a4adb"
19
19
  );
20
20
  const v = c.exports;
21
21
  export {
@@ -1,51 +1,66 @@
1
- import { defineComponent as E, ref as n, computed as g } from "vue";
2
- import { useConfig as w } from "../../../composables/useConfig.js";
3
- import { useExport as C } from "../../../composables/useExport.js";
4
- import { useTestEmailClick as M } from "../../../composables/useGuidoActions.js";
5
- import { useSave as O } from "../../../composables/useSave.js";
6
- import { useTranslations as A } from "../../../composables/useTranslations.js";
7
- import { useVersionHistoryApi as k } from "../../../composables/useVersionHistoryApi.js";
8
- import { useEditorStore as B } from "../../../stores/editor.js";
9
- import { useTemplateStore as R } from "../../../stores/template.js";
10
- import { getTooltipOptions as b } from "../../../utils/tooltipUtils.js";
11
- import { InButtonV2 as D } from "@useinsider/design-system-vue";
12
- import { storeToRefs as I } from "pinia";
13
- import P from "./MigrationConfirmModal.vue.js";
14
- const Z = /* @__PURE__ */ E({
1
+ import { defineComponent as O, ref as n, computed as h } from "vue";
2
+ import { useActionsApi as q } from "../../../composables/useActionsApi.js";
3
+ import { useConfig as b } from "../../../composables/useConfig.js";
4
+ import { useExport as k } from "../../../composables/useExport.js";
5
+ import { useTestEmailClick as B } from "../../../composables/useGuidoActions.js";
6
+ import { useHtmlCompiler as D } from "../../../composables/useHtmlCompiler.js";
7
+ import { useSave as F } from "../../../composables/useSave.js";
8
+ import { useTranslations as L } from "../../../composables/useTranslations.js";
9
+ import { useVersionHistoryApi as R } from "../../../composables/useVersionHistoryApi.js";
10
+ import { useLiquidValidator as z } from "../../../composables/validators/useLiquidValidator.js";
11
+ import { useEditorStore as I } from "../../../stores/editor.js";
12
+ import { useTemplateStore as P } from "../../../stores/template.js";
13
+ import { getTooltipOptions as j } from "../../../utils/tooltipUtils.js";
14
+ import { InButtonV2 as G } from "@useinsider/design-system-vue";
15
+ import { storeToRefs as J } from "pinia";
16
+ import K from "./MigrationConfirmModal.vue.js";
17
+ const ut = /* @__PURE__ */ O({
15
18
  __name: "EditorActions",
16
- setup(j, { expose: H }) {
17
- const { config: a } = w(), { exportHtml: m } = C(), { save: p } = O(), { openVersionHistory: l, closeVersionHistory: u } = k(), e = B(), c = R(), { hasMigrations: f } = I(c), r = A(), s = n(!1), i = n(!1), v = n(), S = M(), V = () => {
19
+ setup(N, { expose: x }) {
20
+ const { config: a, isFeatureEnabled: l } = b(), { exportHtml: m } = k(), { save: u } = F(), { openVersionHistory: c, closeVersionHistory: p } = R(), { getCompiledEmail: f } = q(), { compileHtml: d } = D(), { validateLiquidSyntax: v } = z(), e = I(), y = P(), { hasMigrations: S } = J(y), s = L(), i = n(!1), r = n(!1), g = n(), H = B(), T = () => {
18
21
  if (e.isVersionHistoryOpen) {
19
- u();
22
+ p();
20
23
  return;
21
24
  }
22
- l();
23
- }, T = async () => {
24
- s.value = !0, await m(), s.value = !1;
25
+ c();
26
+ }, w = async () => {
27
+ i.value = !0, await m(), i.value = !1;
25
28
  }, _ = () => {
26
29
  e.isSaveAsTemplateDrawerOpen = !0;
27
- }, h = g(() => e.isVersionHistoryOpen ? r("newsletter.close-version-history") : r("newsletter.version-history")), x = g(
30
+ }, C = h(() => e.isVersionHistoryOpen ? s("newsletter.close-version-history") : s("newsletter.version-history")), A = h(
28
31
  () => {
29
- var o, t;
30
- return ((t = (o = a.value) == null ? void 0 : o.features) == null ? void 0 : t.versionHistory) && !e.isPreviewModeOpen;
32
+ var t, o;
33
+ return ((o = (t = a.value) == null ? void 0 : t.features) == null ? void 0 : o.versionHistory) && !e.isPreviewModeOpen;
31
34
  }
32
- ), d = async (o) => {
33
- i.value = !0, e.loadingStatus = !0;
34
- const t = await p(o);
35
- return i.value = !1, (o || !t) && (e.loadingStatus = !1), t;
36
- }, y = (o) => {
37
- var t;
38
- if (!o && f.value) {
39
- (t = v.value) == null || t.open();
35
+ ), V = async (t) => {
36
+ r.value = !0, e.loadingStatus = !0;
37
+ const o = await u(t);
38
+ return r.value = !1, (t || !o) && (e.loadingStatus = !1), o;
39
+ }, E = (t) => {
40
+ var o;
41
+ if (!t && S.value) {
42
+ (o = g.value) == null || o.open();
40
43
  return;
41
44
  }
42
- return d(o);
45
+ return V(t);
46
+ }, M = async () => {
47
+ if (l("liquidSyntax")) {
48
+ e.loadingStatus = !0;
49
+ try {
50
+ const { html: t } = await f({ minimize: !0, resetDataSavedFlag: !1 }), { compiledHtml: o } = d(t);
51
+ if (!await v(o))
52
+ return;
53
+ } finally {
54
+ e.loadingStatus = !1;
55
+ }
56
+ }
57
+ H();
43
58
  };
44
- return H({
45
- handleSave: y
46
- }), { __sfc: !0, config: a, exportHtml: m, save: p, openVersionHistory: l, closeVersionHistory: u, editorStore: e, templateStore: c, hasMigrations: f, trans: r, isExporting: s, isSaving: i, migrationModalRef: v, testEmailClick: S, handleVersionHistory: V, handleExport: T, handleSaveAs: _, versionHistoryTooltipText: h, isVersionHistoryButtonVisible: x, executeSave: d, handleSave: y, getTooltipOptions: b, InButtonV2: D, MigrationConfirmModal: P };
59
+ return x({
60
+ handleSave: E
61
+ }), { __sfc: !0, config: a, isFeatureEnabled: l, exportHtml: m, save: u, openVersionHistory: c, closeVersionHistory: p, getCompiledEmail: f, compileHtml: d, validateLiquidSyntax: v, editorStore: e, templateStore: y, hasMigrations: S, trans: s, isExporting: i, isSaving: r, migrationModalRef: g, testEmailClick: H, handleVersionHistory: T, handleExport: w, handleSaveAs: _, versionHistoryTooltipText: C, isVersionHistoryButtonVisible: A, executeSave: V, handleSave: E, handleTestEmail: M, getTooltipOptions: j, InButtonV2: G, MigrationConfirmModal: K };
47
62
  }
48
63
  });
49
64
  export {
50
- Z as default
65
+ ut as default
51
66
  };
@@ -1,37 +1,57 @@
1
- import { defineComponent as p, computed as e, watch as m } from "vue";
2
- import { useTranslations as g } from "../../../composables/useTranslations.js";
3
- import { useOnboardingStore as u } from "../../../stores/onboarding.js";
4
- import { InOnboard as b } from "@useinsider/design-system-vue";
5
- const O = /* @__PURE__ */ p({
1
+ import { defineComponent as u, computed as d, watch as b, nextTick as f } from "vue";
2
+ import { useTranslations as C } from "../../../composables/useTranslations.js";
3
+ import { HEADER_SELECTOR as O, AMP_TOGGLE_BUTTON_SELECTOR as _, AMP_TOGGLE_WRAPPER_SELECTOR as T, POPOVER_LEFT_OFFSET as g, POPOVER_TOP_GAP as E } from "../../../enums/onboarding.js";
4
+ import { useOnboardingStore as x } from "../../../stores/onboarding.js";
5
+ import { InOnboard as P } from "@useinsider/design-system-vue";
6
+ const G = /* @__PURE__ */ u({
6
7
  __name: "AMPOnboarding",
7
- setup(l) {
8
- const i = g(), o = u(), r = e(() => `${window.innerWidth / 2 - 110}px`), a = e(() => [
9
- {
10
- classes: "guido-amp-onboarding",
11
- left: r.value,
12
- top: "70px",
13
- position: "Top Center",
14
- title: i("email-editor.onboarding-amp-title"),
15
- description: i("email-editor.onboarding-amp-description"),
16
- imageSource: "",
17
- backButtonClick: () => {
18
- },
19
- nextButtonType: "text",
20
- nextButtonText: i("action-builder.ok"),
21
- nextButtonClick: () => void o.close("ampOnboarding")
22
- }
23
- ]), d = e(() => o.onboardings.ampOnboarding.config.length > 0 && o.onboardings.ampOnboarding.isActive), s = () => {
24
- var n, t;
25
- (t = (n = o.getAmpCurrentCard) == null ? void 0 : n.nextButtonClick) == null || t.call(n);
26
- }, c = () => {
27
- var n, t;
28
- (t = (n = o.getAmpCurrentCard) == null ? void 0 : n.backButtonClick) == null || t.call(n);
8
+ setup(R) {
9
+ const e = C(), o = x(), r = () => {
10
+ const t = document.querySelector(O), n = document.querySelector(_), c = n == null ? void 0 : n.closest(T);
11
+ if (!c || !t)
12
+ return {
13
+ left: `${((t == null ? void 0 : t.offsetWidth) ?? window.innerWidth) / 2 - g}px`,
14
+ top: "68px"
15
+ };
16
+ const s = t.getBoundingClientRect(), i = c.getBoundingClientRect();
17
+ return {
18
+ left: `${i.left - s.left + i.width / 2 - g}px`,
19
+ top: `${i.bottom - s.top + E}px`
20
+ };
21
+ }, a = d(() => {
22
+ const { left: t, top: n } = r();
23
+ return [
24
+ {
25
+ classes: "guido-amp-onboarding",
26
+ left: t,
27
+ top: n,
28
+ position: "Top Center",
29
+ title: e("email-editor.onboarding-amp-title"),
30
+ description: e("email-editor.onboarding-amp-description"),
31
+ imageSource: "",
32
+ backButtonClick: () => {
33
+ },
34
+ nextButtonType: "text",
35
+ nextButtonText: e("action-builder.ok"),
36
+ nextButtonClick: () => void o.close("ampOnboarding")
37
+ }
38
+ ];
39
+ }), l = d(() => o.onboardings.ampOnboarding.config.length > 0 && o.onboardings.ampOnboarding.isActive), p = () => {
40
+ var t, n;
41
+ (n = (t = o.getAmpCurrentCard) == null ? void 0 : t.nextButtonClick) == null || n.call(t);
42
+ }, m = () => {
43
+ var t, n;
44
+ (n = (t = o.getAmpCurrentCard) == null ? void 0 : t.backButtonClick) == null || n.call(t);
29
45
  };
30
- return m(() => o.onboardings.ampOnboarding.isActive, (n) => {
31
- n && o.setConfig("ampOnboarding", a.value);
32
- }, { immediate: !0 }), { __sfc: !0, trans: i, onboardingStore: o, centerLeft: r, onboardingCardsConfig: a, isVisible: d, handleNext: s, handleBack: c, InOnboard: b };
46
+ return b(
47
+ () => o.onboardings.ampOnboarding.isActive,
48
+ async (t) => {
49
+ t && (await f(), o.setConfig("ampOnboarding", a.value));
50
+ },
51
+ { immediate: !0 }
52
+ ), { __sfc: !0, trans: e, onboardingStore: o, getTogglePosition: r, onboardingCardsConfig: a, isVisible: l, handleNext: p, handleBack: m, InOnboard: P };
33
53
  }
34
54
  });
35
55
  export {
36
- O as default
56
+ G as default
37
57
  };
@@ -13,7 +13,7 @@ var l = function() {
13
13
  p,
14
14
  !1,
15
15
  null,
16
- "29b9af29"
16
+ "7419ae06"
17
17
  );
18
18
  const S = _.exports;
19
19
  export {
@@ -1,23 +1,24 @@
1
- import { defineComponent as l, computed as i, watch as b } from "vue";
2
- import { useTranslations as x } from "../../../composables/useTranslations.js";
3
- import { SERVICE_HOVER_SELECTORS as m } from "../../../enums/onboarding.js";
4
- import { useOnboardingStore as k } from "../../../stores/onboarding.js";
5
- import { InOnboard as f } from "@useinsider/design-system-vue";
6
- const S = /* @__PURE__ */ l({
1
+ import { defineComponent as l, computed as r, watch as m } from "vue";
2
+ import { useRibbonOffset as x } from "../../../composables/useRibbonOffset.js";
3
+ import { useTranslations as f } from "../../../composables/useTranslations.js";
4
+ import { SERVICE_HOVER_SELECTORS as k } from "../../../enums/onboarding.js";
5
+ import { useOnboardingStore as B } from "../../../stores/onboarding.js";
6
+ import { InOnboard as C } from "@useinsider/design-system-vue";
7
+ const y = /* @__PURE__ */ l({
7
8
  __name: "GenericOnboarding",
8
- setup(B) {
9
- const e = x(), o = k(), r = i(() => `${window.innerWidth / 2 - 160}px`), c = () => {
9
+ setup(T) {
10
+ const e = f(), o = B(), { getTopPosition: i } = x(), s = r(() => `${window.innerWidth / 2 - 146}px`), c = () => {
10
11
  const t = document.querySelector("ui-editor");
11
- t != null && t.shadowRoot && m.forEach((n) => {
12
- var d;
13
- const a = (d = t.shadowRoot) == null ? void 0 : d.querySelector(n);
14
- a && a.classList.add("hover");
12
+ t != null && t.shadowRoot && k.forEach((n) => {
13
+ var g;
14
+ const d = (g = t.shadowRoot) == null ? void 0 : g.querySelector(n);
15
+ d && d.classList.add("hover");
15
16
  });
16
- }, s = i(() => [
17
+ }, a = r(() => [
17
18
  {
18
19
  classes: "guido-onboarding-blocks",
19
20
  left: "90px",
20
- top: "90px",
21
+ top: i(90),
21
22
  position: "Left Top",
22
23
  title: e("email-editor.onboarding-blocks-title"),
23
24
  description: e("email-editor.onboarding-blocks-description"),
@@ -51,8 +52,8 @@ const S = /* @__PURE__ */ l({
51
52
  },
52
53
  {
53
54
  classes: "guido-onboarding-preview",
54
- left: r.value,
55
- top: "90px",
55
+ left: s.value,
56
+ top: i(68),
56
57
  position: "Top Center",
57
58
  title: e("email-editor.onboarding-preview-title"),
58
59
  description: e("email-editor.onboarding-preview-description"),
@@ -66,18 +67,18 @@ const S = /* @__PURE__ */ l({
66
67
  o.close("genericOnboarding");
67
68
  }
68
69
  }
69
- ]), g = i(() => o.onboardings.genericOnboarding.config.length > 0 && o.onboardings.genericOnboarding.isActive), p = () => {
70
+ ]), p = r(() => o.onboardings.genericOnboarding.config.length > 0 && o.onboardings.genericOnboarding.isActive), u = () => {
70
71
  var t, n;
71
72
  (n = (t = o.getGenericCurrentCard) == null ? void 0 : t.nextButtonClick) == null || n.call(t);
72
- }, u = () => {
73
+ }, b = () => {
73
74
  var t, n;
74
75
  (n = (t = o.getGenericCurrentCard) == null ? void 0 : t.backButtonClick) == null || n.call(t);
75
76
  };
76
- return b(() => o.onboardings.genericOnboarding.isActive, (t) => {
77
- t && o.setConfig("genericOnboarding", s.value);
78
- }, { immediate: !0 }), { __sfc: !0, trans: e, onboardingStore: o, centerLeft: r, addHoverToServiceElements: c, onboardingCardsConfig: s, isVisible: g, handleNext: p, handleBack: u, InOnboard: f };
77
+ return m(() => o.onboardings.genericOnboarding.isActive, (t) => {
78
+ t && o.setConfig("genericOnboarding", a.value);
79
+ }, { immediate: !0 }), { __sfc: !0, trans: e, onboardingStore: o, getTopPosition: i, centerLeft: s, addHoverToServiceElements: c, onboardingCardsConfig: a, isVisible: p, handleNext: u, handleBack: b, InOnboard: C };
79
80
  }
80
81
  });
81
82
  export {
82
- S as default
83
+ y as default
83
84
  };
@@ -13,7 +13,7 @@ var l = function() {
13
13
  c,
14
14
  !1,
15
15
  null,
16
- "dd1a237a"
16
+ "796d193b"
17
17
  );
18
18
  const I = p.exports;
19
19
  export {