@useinsider/guido 1.0.0-beta.eda3d24 → 1.0.0-beta.ef5e504

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 (95) hide show
  1. package/README.md +21 -133
  2. package/dist/@types/generic.d.ts +1 -2
  3. package/dist/components/Guido.vue.d.ts +2 -5
  4. package/dist/components/Guido.vue.js +6 -6
  5. package/dist/components/Guido.vue2.js +35 -50
  6. package/dist/components/organisms/design-preview/DesktopPreview.vue.d.ts +16 -0
  7. package/dist/components/organisms/design-preview/DesktopPreview.vue.js +22 -0
  8. package/dist/components/organisms/design-preview/DesktopPreview.vue2.js +28 -0
  9. package/dist/components/organisms/design-preview/EmailPreview.vue.d.ts +16 -0
  10. package/dist/components/organisms/design-preview/EmailPreview.vue.js +17 -0
  11. package/dist/components/organisms/design-preview/EmailPreview.vue2.js +37 -0
  12. package/dist/components/organisms/design-preview/EmailView.vue.d.ts +18 -0
  13. package/dist/components/organisms/{email-preview/mobile-preview/ContentView.vue.js → design-preview/EmailView.vue.js} +7 -7
  14. package/dist/components/organisms/design-preview/EmailView.vue2.js +24 -0
  15. package/dist/components/organisms/design-preview/InboxView.vue.d.ts +17 -0
  16. package/dist/components/organisms/design-preview/InboxView.vue.js +19 -0
  17. package/dist/components/organisms/design-preview/InboxView.vue2.js +23 -0
  18. package/dist/components/organisms/design-preview/MobilePreview.vue.d.ts +17 -0
  19. package/dist/components/organisms/design-preview/MobilePreview.vue.js +17 -0
  20. package/dist/components/organisms/design-preview/MobilePreview.vue2.js +22 -0
  21. package/dist/components/organisms/header/AmpErrorModal.vue.d.ts +16 -0
  22. package/dist/components/organisms/header/AmpErrorModal.vue.js +21 -0
  23. package/dist/components/organisms/header/AmpErrorModal.vue2.js +27 -0
  24. package/dist/components/organisms/header/AmpToggle.vue.js +19 -0
  25. package/dist/components/organisms/header/AmpToggle.vue2.js +38 -0
  26. package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
  27. package/dist/components/organisms/header/LeftSlot.vue2.js +8 -10
  28. package/dist/components/organisms/header/MiddleSlot.vue.js +6 -6
  29. package/dist/components/organisms/header/MiddleSlot.vue2.js +18 -17
  30. package/dist/components/organisms/header/RightSlot.vue.js +4 -4
  31. package/dist/components/organisms/header/RightSlot.vue2.js +14 -29
  32. package/dist/components/organisms/header/ViewOptions.vue.js +4 -4
  33. package/dist/components/organisms/header/ViewOptions.vue2.js +8 -10
  34. package/dist/composables/useActionsApi.d.ts +0 -2
  35. package/dist/composables/useActionsApi.js +36 -62
  36. package/dist/composables/useMobileGmailFit.d.ts +5 -0
  37. package/dist/composables/useMobileGmailFit.js +69 -0
  38. package/dist/composables/usePreviewMode.d.ts +4 -3
  39. package/dist/composables/usePreviewMode.js +16 -28
  40. package/dist/composables/useStripo.js +15 -15
  41. package/dist/enums/defaults.js +5 -9
  42. package/dist/enums/gmailMobilePreview.d.ts +7 -0
  43. package/dist/enums/gmailMobilePreview.js +17 -0
  44. package/dist/guido.css +1 -1
  45. package/dist/inbox-mockup.svg +41 -0
  46. package/dist/phone-mockup.svg +31 -0
  47. package/dist/services/stripoApi.js +2 -6
  48. package/dist/stores/editor.d.ts +4 -0
  49. package/dist/stores/editor.js +7 -3
  50. package/package.json +1 -1
  51. package/dist/components/organisms/email-preview/PreviewContainer.vue.d.ts +0 -2
  52. package/dist/components/organisms/email-preview/PreviewContainer.vue.js +0 -19
  53. package/dist/components/organisms/email-preview/PreviewContainer.vue2.js +0 -19
  54. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.d.ts +0 -4
  55. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.js +0 -22
  56. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue2.js +0 -30
  57. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +0 -19
  58. package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +0 -29
  59. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.d.ts +0 -2
  60. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +0 -22
  61. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +0 -31
  62. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.d.ts +0 -2
  63. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +0 -17
  64. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +0 -20
  65. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.d.ts +0 -2
  66. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +0 -18
  67. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +0 -22
  68. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.d.ts +0 -4
  69. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue2.js +0 -23
  70. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.d.ts +0 -4
  71. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +0 -20
  72. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue2.js +0 -21
  73. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.d.ts +0 -2
  74. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +0 -17
  75. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +0 -22
  76. package/dist/components/wrappers/WpModal.vue.d.ts +0 -76
  77. package/dist/components/wrappers/WpModal.vue.js +0 -27
  78. package/dist/components/wrappers/WpModal.vue2.js +0 -22
  79. package/dist/composables/useCodeEditorApi.d.ts +0 -4
  80. package/dist/composables/useCodeEditorApi.js +0 -11
  81. package/dist/composables/useConfig.d.ts +0 -4
  82. package/dist/composables/useConfig.js +0 -7
  83. package/dist/composables/useGuidoActions.d.ts +0 -46
  84. package/dist/composables/useGuidoActions.js +0 -37
  85. package/dist/composables/useProvideInject.d.ts +0 -14
  86. package/dist/composables/useProvideInject.js +0 -17
  87. package/dist/composables/useResponsivePreview.d.ts +0 -5
  88. package/dist/composables/useResponsivePreview.js +0 -86
  89. package/dist/enums/preview.d.ts +0 -13
  90. package/dist/enums/preview.js +0 -23
  91. package/dist/static/assets/inbox-mockup.svg.js +0 -4
  92. package/dist/static/assets/phone-mockup.svg.js +0 -4
  93. package/dist/stores/preview.d.ts +0 -57
  94. package/dist/stores/preview.js +0 -56
  95. /package/dist/components/organisms/{email-preview/amp → header}/AmpToggle.vue.d.ts +0 -0
@@ -0,0 +1,23 @@
1
+ import { defineComponent as r, computed as n } from "vue";
2
+ import { useTranslations as i } from "../../../composables/useTranslations.js";
3
+ import { InIcons as c } from "@useinsider/design-system-vue";
4
+ const f = /* @__PURE__ */ r({
5
+ __name: "InboxView",
6
+ props: {
7
+ emailData: null
8
+ },
9
+ emits: ["open-email"],
10
+ setup(o) {
11
+ const t = o, s = i(), a = n(() => {
12
+ var e;
13
+ return ((e = t.emailData) == null ? void 0 : e.senderName) || `(${s("settings.sender-name")})`;
14
+ }), m = n(() => {
15
+ var e;
16
+ return ((e = t.emailData) == null ? void 0 : e.subject) || s("newsletter.subject");
17
+ });
18
+ return { __sfc: !0, props: t, trans: s, senderName: a, subject: m, InIcons: c };
19
+ }
20
+ });
21
+ export {
22
+ f as default
23
+ };
@@ -0,0 +1,17 @@
1
+ import type { EmailData } from '@@/Types/generic';
2
+ interface Props {
3
+ emailHtml: string;
4
+ isAmp: boolean;
5
+ emailData?: EmailData;
6
+ }
7
+ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<Props>, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<Props>>>, {}>;
8
+ export default _default;
9
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
10
+ type __VLS_TypePropsToOption<T> = {
11
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
12
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
13
+ } : {
14
+ type: import('vue').PropType<T[K]>;
15
+ required: true;
16
+ };
17
+ };
@@ -0,0 +1,17 @@
1
+ import e from "./MobilePreview.vue2.js";
2
+ import o from "../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var i = function() {
4
+ var t = this, s = t._self._c, a = t._self._setupProxy;
5
+ return s("div", { staticClass: "d-f j-c-c p-4" }, [s("div", { staticClass: "p-r w-35-s h-26-s" }, [s("img", { staticClass: "w-1 h-1 d-b p-e-n", attrs: { alt: a.mockupAlt, src: a.mockupImage } }), s("div", { staticClass: "p-a l-3 w-21-s h-24-s o-h", style: { top: a.phoneScreenTopMargin } }, [a.showInbox ? s(a.InboxView, { attrs: { "email-data": a.props.emailData }, on: { "open-email": a.openEmail } }) : s(a.EmailView, { attrs: { "email-html": t.emailHtml, "is-amp": t.isAmp }, on: { "back-to-inbox": a.backToInbox } })], 1)])]);
6
+ }, n = [], r = /* @__PURE__ */ o(
7
+ e,
8
+ i,
9
+ n,
10
+ !1,
11
+ null,
12
+ null
13
+ );
14
+ const c = r.exports;
15
+ export {
16
+ c as default
17
+ };
@@ -0,0 +1,22 @@
1
+ import { defineComponent as c, ref as u, computed as e } from "vue";
2
+ import r from "./EmailView.vue.js";
3
+ import i from "./InboxView.vue.js";
4
+ const b = /* @__PURE__ */ c({
5
+ __name: "MobilePreview",
6
+ props: {
7
+ emailHtml: null,
8
+ isAmp: { type: Boolean },
9
+ emailData: null
10
+ },
11
+ setup(n) {
12
+ const p = n, o = u(!1), m = e(() => o.value ? "/inbox-mockup.svg" : "/phone-mockup.svg"), t = e(() => o.value ? "Inbox mockup" : "Phone mockup"), a = () => {
13
+ o.value = !1;
14
+ }, l = () => {
15
+ o.value = !0;
16
+ }, s = e(() => o.value ? "88px" : "44px");
17
+ return { __sfc: !0, props: p, showInbox: o, mockupImage: m, mockupAlt: t, openEmail: a, backToInbox: l, phoneScreenTopMargin: s, EmailView: r, InboxView: i };
18
+ }
19
+ });
20
+ export {
21
+ b as default
22
+ };
@@ -0,0 +1,16 @@
1
+ interface Props {
2
+ errors: string[];
3
+ }
4
+ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<Props>, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
5
+ close: () => void;
6
+ }, string, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<Props>>>, {}>;
7
+ export default _default;
8
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
9
+ type __VLS_TypePropsToOption<T> = {
10
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
11
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
12
+ } : {
13
+ type: import('vue').PropType<T[K]>;
14
+ required: true;
15
+ };
16
+ };
@@ -0,0 +1,21 @@
1
+ import n from "./AmpErrorModal.vue2.js";
2
+ import a from "../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var i = function() {
4
+ var e = this, o = e._self._c, t = e._self._setupProxy;
5
+ return o(t.InModalV2, { attrs: { id: "amp-error-modal", "close-button-status": "", "close-on-outside-click": "", "description-status": "", "footer-status": "", status: "", size: "medium", "description-text": t.trans("email.amp-validation-description"), "footer-button-group-options": t.footerButtonOptions, "title-text": t.trans("email.amp-validation-title") }, on: { cancelOrBackButtonEvent: t.handleClose, onCloseEvent: t.handleClose, primaryButtonEvent: t.handleFixInCodeEditor }, scopedSlots: e._u([{ key: "contentSlot", fn: function() {
6
+ return [o("div", { staticClass: "d-f f-d-c" }, [o("div", { staticClass: "mb-3" }, [o("div", { staticClass: "l-s-5 f-s-1 f-w-600 t-c-55 t-t-u" }, [e._v(" " + e._s(`${t.trans("products.errors")}(${t.errorCount})`) + " ")])]), o("div", { staticClass: "d-f f-d-c g-13 max-h-21-s o-y-a", staticStyle: { gap: "16px" } }, e._l(t.props.errors, function(s, r) {
7
+ return o(t.InOnPageMessage, { key: r, attrs: { icon: "filled-error-box", size: "medium", type: "alert", text: s } });
8
+ }), 1)])];
9
+ }, proxy: !0 }]) });
10
+ }, l = [], c = /* @__PURE__ */ a(
11
+ n,
12
+ i,
13
+ l,
14
+ !1,
15
+ null,
16
+ null
17
+ );
18
+ const f = c.exports;
19
+ export {
20
+ f as default
21
+ };
@@ -0,0 +1,27 @@
1
+ import { defineComponent as m } from "vue";
2
+ import { usePreviewMode as f } from "../../../composables/usePreviewMode.js";
3
+ import { useTranslations as u } from "../../../composables/useTranslations.js";
4
+ import { useEditorStore as E } from "../../../stores/editor.js";
5
+ import { InOnPageMessage as w, InModalV2 as A } from "@useinsider/design-system-vue";
6
+ const v = /* @__PURE__ */ m({
7
+ __name: "AmpErrorModal",
8
+ props: {
9
+ errors: null
10
+ },
11
+ emits: ["close"],
12
+ setup(a, { emit: o }) {
13
+ const r = a, p = r.errors.length, e = u(), t = E(), { disablePreviewUI: i } = f(), d = () => {
14
+ o("close");
15
+ }, l = () => {
16
+ var n, s;
17
+ o("close"), t.isPreviewModeOpen = !1, (s = (n = window.StripoEditorApi) == null ? void 0 : n.codeEditorApi) != null && s.openCodeEditor ? (i(), window.StripoEditorApi.codeEditorApi.openCodeEditor()) : console.error("StripoEditorApi codeEditorApi not available");
18
+ }, c = {
19
+ primaryButton: { type: "primary", labelText: e("email.amp-validation-fix") },
20
+ cancelOrBackButton: { type: "secondary", labelText: e("campaign-builder.cancel"), styling: "ghost" }
21
+ };
22
+ return { __sfc: !0, props: r, emit: o, errorCount: p, trans: e, editorStore: t, disablePreviewUI: i, handleClose: d, handleFixInCodeEditor: l, footerButtonOptions: c, InModalV2: A, InOnPageMessage: w };
23
+ }
24
+ });
25
+ export {
26
+ v as default
27
+ };
@@ -0,0 +1,19 @@
1
+ import o from "./AmpToggle.vue2.js";
2
+ import s from "../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var a = function() {
4
+ var e = this, t = e._self._c, r = e._self._setupProxy;
5
+ return r.editorStore.isPreviewModeOpen ? t("div", [t("div", { staticClass: "d-f a-i-c ml-3" }, [t(r.InSegments, { attrs: { id: "guido__amp-toggle", "segment-list": r.segmentList, selected: r.editorStore.emailFormat }, on: { click: r.handleFormatChange } }), r.editorStore.emailFormat === "amp" && r.hasAMPErrors ? t(r.InButtonV2, { staticClass: "ml-2 d-f a-i-c b-c-11 b-c-h-11 t-c-4 t-c-h-4 i-c-4 bor-w-1 bor-s-s bor-c-11", attrs: { id: "guido__amp-error-button", "left-icon": "line-error-box", type: "danger", "label-text-status": !1 }, on: { click: r.handleErrorClick } }) : e._e()], 1), r.showErrorModal ? t(r.AmpErrorModal, { attrs: { errors: r.editorStore.ampErrors || [] }, on: { close: function(c) {
6
+ r.showErrorModal = !1;
7
+ } } }) : e._e()], 1) : e._e();
8
+ }, n = [], i = /* @__PURE__ */ s(
9
+ o,
10
+ a,
11
+ n,
12
+ !1,
13
+ null,
14
+ null
15
+ );
16
+ const _ = i.exports;
17
+ export {
18
+ _ as default
19
+ };
@@ -0,0 +1,38 @@
1
+ import { defineComponent as i, ref as p, computed as t, watch as c } from "vue";
2
+ import { usePreviewMode as d } from "../../../composables/usePreviewMode.js";
3
+ import { useEditorStore as u } from "../../../stores/editor.js";
4
+ import { InButtonV2 as M, InSegments as f } from "@useinsider/design-system-vue";
5
+ import h from "./AmpErrorModal.vue.js";
6
+ const C = /* @__PURE__ */ i({
7
+ __name: "AmpToggle",
8
+ setup(E) {
9
+ const o = u(), { compile: a } = d(), m = p(!1), r = t(() => !!o.ampHtml), l = t(() => !!(o.ampErrors && o.ampErrors.length > 0)), s = t(() => [
10
+ { text: "HTML", value: "html" },
11
+ {
12
+ text: "AMP HTML",
13
+ value: "amp",
14
+ tooltipText: r.value ? "" : "AMP HTML Preview isn’t available as no AMP blocks found in your Email Design.",
15
+ position: "bottom",
16
+ align: "center",
17
+ disable: !r.value
18
+ }
19
+ ]), n = async () => {
20
+ try {
21
+ const e = await a();
22
+ o.ampHtml = e.ampHtml ?? null, o.ampErrors = e.ampErrors ?? null, o.emailFormat = e.ampHtml ? "amp" : "html";
23
+ } catch (e) {
24
+ console.error("Failed to compile for AMP:", e);
25
+ }
26
+ };
27
+ return c([() => o.editorVisualMode, () => o.isPreviewModeOpen], () => {
28
+ o.isPreviewModeOpen && n();
29
+ }, { immediate: !0 }), { __sfc: !0, editorStore: o, compile: a, showErrorModal: m, hasAMP: r, hasAMPErrors: l, segmentList: s, updateAmpData: n, handleFormatChange: (e) => {
30
+ o.emailFormat = e;
31
+ }, handleErrorClick: () => {
32
+ m.value = !0;
33
+ }, InSegments: f, InButtonV2: M, AmpErrorModal: h };
34
+ }
35
+ });
36
+ export {
37
+ C as default
38
+ };
@@ -1,11 +1,11 @@
1
- import n from "./LeftSlot.vue2.js";
1
+ import r from "./LeftSlot.vue2.js";
2
2
  import o from "../../../_virtual/_plugin-vue2_normalizer.js";
3
- var r = function() {
4
- var e = this, s = e._self._c, t = e._self._setupProxy;
5
- return s("div", { staticClass: "d-f a-i-c" }, [s(t.InButtonV2, { staticClass: "p-2", attrs: { id: "guido__back-button", "label-text": "Back", "left-icon": "line-arrow-left", styling: "text", type: "secondary" }, on: { click: t.handleBack } }), t.editorStore.isVersionHistoryOpen ? s(t.RestoreButton, { staticClass: "ml-3" }) : e._e()], 1);
3
+ var n = function() {
4
+ var t = this, e = t._self._c, s = t._self._setupProxy;
5
+ return e("div", { staticClass: "d-f a-i-c" }, [e(s.InButtonV2, { staticClass: "p-2", attrs: { id: "guido__back-button", "label-text": "Back", "left-icon": "line-arrow-left", styling: "text", type: "secondary" } }), s.editorStore.isVersionHistoryOpen ? e(s.RestoreButton, { staticClass: "ml-3" }) : t._e()], 1);
6
6
  }, a = [], i = /* @__PURE__ */ o(
7
- n,
8
7
  r,
8
+ n,
9
9
  a,
10
10
  !1,
11
11
  null,
@@ -1,15 +1,13 @@
1
- import { defineComponent as r } from "vue";
2
- import { useBack as e } from "../../../composables/useGuidoActions.js";
3
- import { useEditorStore as m } from "../../../stores/editor.js";
4
- import { InButtonV2 as n } from "@useinsider/design-system-vue";
5
- import s from "./version-history/RestoreButton.vue.js";
6
- const c = /* @__PURE__ */ r({
1
+ import { defineComponent as t } from "vue";
2
+ import { useEditorStore as o } from "../../../stores/editor.js";
3
+ import { InButtonV2 as r } from "@useinsider/design-system-vue";
4
+ import e from "./version-history/RestoreButton.vue.js";
5
+ const _ = /* @__PURE__ */ t({
7
6
  __name: "LeftSlot",
8
- setup(f) {
9
- const o = m(), t = e();
10
- return { __sfc: !0, editorStore: o, handleBack: t, InButtonV2: n, RestoreButton: s };
7
+ setup(m) {
8
+ return { __sfc: !0, editorStore: o(), InButtonV2: r, RestoreButton: e };
11
9
  }
12
10
  });
13
11
  export {
14
- c as default
12
+ _ as default
15
13
  };
@@ -1,17 +1,17 @@
1
- import i from "./MiddleSlot.vue2.js";
2
- import s from "../../../_virtual/_plugin-vue2_normalizer.js";
1
+ import s from "./MiddleSlot.vue2.js";
2
+ import i from "../../../_virtual/_plugin-vue2_normalizer.js";
3
3
  var n = function() {
4
4
  var o = this, e = o._self._c, t = o._self._setupProxy;
5
- return t.editorStore.isVersionHistoryOpen ? e("div", { staticClass: "d-f" }, [e(t.VersionHistory), e(t.VersionHistoryViewOptions)], 1) : e("div", { staticClass: "d-f" }, [e(t.InButtonV2, { attrs: { id: "guido__undo-button", "left-icon": "line-undo", styling: "ghost", type: "secondary", "disabled-status": t.previewStore.isPreviewModeOpen, "label-text-status": !1 } }), e(t.InButtonV2, { attrs: { id: "guido__redo-button", "left-icon": "line-redo", styling: "ghost", type: "secondary", "disabled-status": t.previewStore.isPreviewModeOpen, "label-text-status": !1 } }), e(t.InButtonV2, { attrs: { id: "guido__code-button", "data-testid": "Code Editor", "left-icon": "line-code", styling: "ghost", "tooltip-text": "Code Editor", type: "secondary", "disabled-status": t.previewStore.isPreviewModeOpen, "label-text-status": !1, "selected-status": t.editorStore.isCodeEditorOpen, "tooltip-options": t.getTooltipOptions("guido__code-button") } }), e(t.InButtonV2, { attrs: { id: "guido__preview-button", "left-icon": "line-show-on", styling: "ghost", type: "secondary", "label-text-status": !1, "selected-status": t.previewStore.isPreviewModeOpen, "tooltip-options": t.getTooltipOptions("guido__preview-button"), "tooltip-text": t.previewTooltipText }, on: { click: t.handlePreviewToggle } }), e(t.ViewOptions, { staticClass: "ml-3" }), t.previewStore.isPreviewModeOpen ? e(t.AmpToggle) : o._e()], 1);
6
- }, r = [], d = /* @__PURE__ */ s(
7
- i,
5
+ return t.editorStore.isVersionHistoryOpen ? e("div", { staticClass: "d-f" }, [e(t.VersionHistory), e(t.VersionHistoryViewOptions)], 1) : e("div", { staticClass: "d-f" }, [e(t.InButtonV2, { attrs: { id: "guido__undo-button", "left-icon": "line-undo", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isPreviewModeOpen, "label-text-status": !1 } }), e(t.InButtonV2, { attrs: { id: "guido__redo-button", "left-icon": "line-redo", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isPreviewModeOpen, "label-text-status": !1 } }), e(t.InButtonV2, { attrs: { id: "guido__code-button", "data-testid": "Code Editor", "left-icon": "line-code", styling: "ghost", "tooltip-text": "Code Editor", type: "secondary", "disabled-status": t.editorStore.isPreviewModeOpen, "label-text-status": !1, "selected-status": t.editorStore.isCodeEditorOpen, "tooltip-options": t.getTooltipOptions("guido__code-button") } }), e(t.InButtonV2, { attrs: { id: "guido__preview-button", "left-icon": "line-show-on", styling: "ghost", type: "secondary", "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__preview-button"), "tooltip-text": t.editorStore.isPreviewModeOpen ? t.trans("newsletter.close-email-preview") : t.trans("newsletter.email-preview") }, on: { click: t.handlePreviewClick } }), e(t.ViewOptions, { staticClass: "ml-3" }), e(t.AmpToggle)], 1);
6
+ }, r = [], l = /* @__PURE__ */ i(
7
+ s,
8
8
  n,
9
9
  r,
10
10
  !1,
11
11
  null,
12
12
  null
13
13
  );
14
- const u = d.exports;
14
+ const u = l.exports;
15
15
  export {
16
16
  u as default
17
17
  };
@@ -1,25 +1,26 @@
1
- import { defineComponent as p, computed as m } from "vue";
2
- import { usePreviewMode as l } from "../../../composables/usePreviewMode.js";
3
- import { useTranslations as c } from "../../../composables/useTranslations.js";
4
- import a from "../email-preview/amp/AmpToggle.vue.js";
5
- import { useEditorStore as d } from "../../../stores/editor.js";
6
- import { usePreviewStore as f } from "../../../stores/preview.js";
7
- import { InButtonV2 as w } from "@useinsider/design-system-vue";
8
- import v from "./version-history/VersionHistory.vue.js";
9
- import u from "./version-history/ViewOptions.vue.js";
10
- import P from "./ViewOptions.vue.js";
11
- const B = /* @__PURE__ */ p({
1
+ import { defineComponent as s } from "vue";
2
+ import { usePreviewMode as n } from "../../../composables/usePreviewMode.js";
3
+ import { useTranslations as p } from "../../../composables/useTranslations.js";
4
+ import { useEditorStore as m } from "../../../stores/editor.js";
5
+ import { InButtonV2 as l } from "@useinsider/design-system-vue";
6
+ import a from "./AmpToggle.vue.js";
7
+ import f from "./version-history/VersionHistory.vue.js";
8
+ import d from "./version-history/ViewOptions.vue.js";
9
+ import c from "./ViewOptions.vue.js";
10
+ const y = /* @__PURE__ */ s({
12
11
  __name: "MiddleSlot",
13
- setup(g) {
14
- const r = d(), e = c(), o = f(), { openPreviewMode: t, closePreviewMode: i } = l(), s = m(() => o.isPreviewModeOpen ? e("newsletter.close-email-preview") : e("newsletter.email-preview"));
15
- return { __sfc: !0, editorStore: r, trans: e, previewStore: o, openPreviewMode: t, closePreviewMode: i, previewTooltipText: s, getTooltipOptions: (n) => ({
16
- id: `${n}-tooltip`,
12
+ setup(w) {
13
+ const o = m(), t = p(), { enablePreviewUI: e, disablePreviewUI: i } = n();
14
+ return { __sfc: !0, editorStore: o, trans: t, enablePreviewUI: e, disablePreviewUI: i, handlePreviewClick: () => {
15
+ o.isPreviewModeOpen = !o.isPreviewModeOpen, o.isPreviewModeOpen ? e() : i();
16
+ }, getTooltipOptions: (r) => ({
17
+ id: `${r}-tooltip`,
17
18
  dynamicPosition: !1,
18
19
  staticPosition: "bottom center",
19
20
  iconStatus: !1
20
- }), handlePreviewToggle: () => o.isPreviewModeOpen ? i() : t(), AmpToggle: a, InButtonV2: w, VersionHistory: v, VersionHistoryViewOptions: u, ViewOptions: P };
21
+ }), InButtonV2: l, AmpToggle: a, VersionHistory: f, VersionHistoryViewOptions: d, ViewOptions: c };
21
22
  }
22
23
  });
23
24
  export {
24
- B as default
25
+ y as default
25
26
  };
@@ -2,16 +2,16 @@ import o from "./RightSlot.vue2.js";
2
2
  import i from "../../../_virtual/_plugin-vue2_normalizer.js";
3
3
  var n = function() {
4
4
  var s = this, e = s._self._c, t = s._self._setupProxy;
5
- return e("div", { staticClass: "d-f" }, [e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.previewStore.isPreviewModeOpen, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen }, on: { click: t.handleVersionHistory } }), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryOpen, "label-text-status": !1 }, on: { click: t.exportHtml } }), e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryOpen, "label-text-status": !1 } }), e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryOpen, "label-text-status": !1 } }), e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": t.isSaveButtonDisabled }, on: { click: t.handleSave } })], 1);
6
- }, a = [], r = /* @__PURE__ */ i(
5
+ return e("div", { staticClass: "d-f" }, [e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isPreviewModeOpen, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen }, on: { click: t.handleVersionHistory } }), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryOpen, "label-text-status": !1 }, on: { click: t.exportHtml } }), e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryOpen, "label-text-status": !1 } }), e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryOpen, "label-text-status": !1 } }), e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": t.editorStore.isVersionHistoryOpen || t.editorStore.isPreviewModeOpen } })], 1);
6
+ }, r = [], a = /* @__PURE__ */ i(
7
7
  o,
8
8
  n,
9
- a,
9
+ r,
10
10
  !1,
11
11
  null,
12
12
  null
13
13
  );
14
- const c = r.exports;
14
+ const c = a.exports;
15
15
  export {
16
16
  c as default
17
17
  };
@@ -1,36 +1,21 @@
1
- import { defineComponent as u, computed as f } from "vue";
2
- import { useActionsApi as d } from "../../../composables/useActionsApi.js";
3
- import { useExport as S } from "../../../composables/useExport.js";
4
- import { useSaveStart as v, useSaveComplete as y } from "../../../composables/useGuidoActions.js";
5
- import { useVersionHistoryApi as _ } from "../../../composables/useVersionHistoryApi.js";
6
- import { useEditorStore as H } from "../../../stores/editor.js";
7
- import { usePreviewStore as V } from "../../../stores/preview.js";
8
- import { InButtonV2 as h } from "@useinsider/design-system-vue";
9
- const b = /* @__PURE__ */ u({
1
+ import { defineComponent as s } from "vue";
2
+ import { useExport as i } from "../../../composables/useExport.js";
3
+ import { useVersionHistoryApi as n } from "../../../composables/useVersionHistoryApi.js";
4
+ import { useEditorStore as p } from "../../../stores/editor.js";
5
+ import { InButtonV2 as m } from "@useinsider/design-system-vue";
6
+ const d = /* @__PURE__ */ s({
10
7
  __name: "RightSlot",
11
- setup(w) {
12
- const { exportHtml: p } = S(), { getCompiledEmail: e } = d(), r = v(), s = y(), { openVersionHistory: i, closeVersionHistory: n } = _(), o = H(), m = V(), a = () => {
13
- if (o.isVersionHistoryOpen) {
14
- n();
8
+ setup(f) {
9
+ const { exportHtml: e } = i(), { openVersionHistory: o, closeVersionHistory: r } = n(), t = p();
10
+ return { __sfc: !0, exportHtml: e, openVersionHistory: o, closeVersionHistory: r, editorStore: t, handleVersionHistory: () => {
11
+ if (t.isVersionHistoryOpen) {
12
+ r();
15
13
  return;
16
14
  }
17
- i();
18
- }, c = async () => {
19
- r();
20
- try {
21
- const { html: t } = await e();
22
- s({
23
- html: t || "",
24
- css: ""
25
- // CSS is embedded in HTML from Stripo
26
- });
27
- } catch (t) {
28
- console.error("Failed to get template data for save:", t);
29
- }
30
- }, l = f(() => o.isVersionHistoryOpen || m.isPreviewModeOpen);
31
- return { __sfc: !0, exportHtml: p, getCompiledEmail: e, saveStart: r, saveComplete: s, openVersionHistory: i, closeVersionHistory: n, editorStore: o, previewStore: m, handleVersionHistory: a, handleSave: c, isSaveButtonDisabled: l, InButtonV2: h };
15
+ o();
16
+ }, InButtonV2: m };
32
17
  }
33
18
  });
34
19
  export {
35
- b as default
20
+ d as default
36
21
  };
@@ -3,16 +3,16 @@ import r from "./ViewOptions.vue2.js";
3
3
  import i from "../../../_virtual/_plugin-vue2_normalizer.js";
4
4
  var s = function() {
5
5
  var t = this, o = t._self._c, e = t._self._setupProxy;
6
- return o(e.InSegments, { attrs: { id: "guido__view-option-selection", "with-icon": "", disable: e.previewStore.isPreviewModeOpen, "segment-list": e.segmentList, selected: e.editorStore.editorVisualMode } });
6
+ return o(e.InSegments, { attrs: { id: "guido__view-option-selection", "with-icon": "", disable: e.editorStore.isPreviewModeOpen, "segment-list": e.segmentList, selected: e.editorStore.editorVisualMode } });
7
7
  }, n = [], _ = /* @__PURE__ */ i(
8
8
  r,
9
9
  s,
10
10
  n,
11
11
  !1,
12
12
  null,
13
- "c4fe2637"
13
+ "f90d31ea"
14
14
  );
15
- const d = _.exports;
15
+ const l = _.exports;
16
16
  export {
17
- d as default
17
+ l as default
18
18
  };
@@ -1,17 +1,15 @@
1
- import { defineComponent as r } from "vue";
2
- import { useEditorStore as i } from "../../../stores/editor.js";
3
- import { usePreviewStore as n } from "../../../stores/preview.js";
4
- import { InSegments as s } from "@useinsider/design-system-vue";
5
- const _ = /* @__PURE__ */ r({
1
+ import { defineComponent as e } from "vue";
2
+ import { useEditorStore as t } from "../../../stores/editor.js";
3
+ import { InSegments as o } from "@useinsider/design-system-vue";
4
+ const u = /* @__PURE__ */ e({
6
5
  __name: "ViewOptions",
7
- setup(m) {
8
- const e = i(), t = [
6
+ setup(n) {
7
+ return { __sfc: !0, editorStore: t(), segmentList: [
9
8
  { text: "", icon: "line-desktop", value: "desktop" },
10
9
  { text: "", icon: "line-menu-mobileapp", value: "mobile" }
11
- ], o = n();
12
- return { __sfc: !0, editorStore: e, segmentList: t, previewStore: o, InSegments: s };
10
+ ], InSegments: o };
13
11
  }
14
12
  });
15
13
  export {
16
- _ as default
14
+ u as default
17
15
  };
@@ -1,7 +1,5 @@
1
- import type { CompileEmailOptions } from '@@/Types/actions-api';
2
1
  import { GetCompiledEmailOptions, CompiledEmailResult } from '@@/Types/actions-api';
3
2
  export declare const useActionsApi: () => {
4
3
  getCompiledEmail: (options?: GetCompiledEmailOptions) => Promise<CompiledEmailResult>;
5
4
  activateCustomViewStyles: (isActive?: boolean) => void;
6
- getPreviewData: (options?: CompileEmailOptions) => Promise<CompiledEmailResult>;
7
5
  };
@@ -1,64 +1,38 @@
1
- import { useToaster as d } from "./useToaster.js";
2
- const E = () => {
3
- const { handleError: m } = d(), s = (t = {}) => new Promise((e, a) => {
4
- const i = { ...{
5
- minimize: !0,
6
- utmEntity: {
7
- utmSource: "",
8
- utmMedium: "",
9
- utmCampaign: "",
10
- utmContent: "",
11
- utmTerm: "",
12
- customUtms: [
13
- {
14
- name1: "val1",
15
- name2: "val2"
16
- }
17
- ]
18
- },
19
- mergeTags: ["Tag1", "Tag2"],
20
- forseAmp: !1,
21
- resetDataSavedFlag: !1,
22
- disableLineHeightsReplace: !0
23
- }, ...t }, n = {
24
- callback: (r, l, c, p, u) => {
25
- r ? a(r) : e({
26
- html: l,
27
- ampHtml: c,
28
- ampErrors: p,
29
- displayConditions: u
30
- });
31
- },
32
- ...i
33
- };
34
- window.StripoEditorApi.actionsApi.compileEmail(n);
35
- });
36
- return { getCompiledEmail: s, activateCustomViewStyles: (t = !0) => {
37
- window.StripoEditorApi.actionsApi.activateCustomViewStyles(t);
38
- }, getPreviewData: async (t) => {
39
- try {
40
- const {
41
- html: e,
42
- displayConditions: a,
43
- ampHtml: o = "",
44
- ampErrors: i = []
45
- } = await s({ minimize: !1, resetDataSavedFlag: !1, ...t });
46
- return {
47
- html: e,
48
- ampHtml: o,
49
- ampErrors: i,
50
- displayConditions: a
51
- };
52
- } catch (e) {
53
- return m(e, "Error loading preview"), {
54
- html: "",
55
- ampHtml: "",
56
- ampErrors: [],
57
- displayConditions: []
58
- };
59
- }
60
- } };
61
- };
1
+ const g = () => ({ getCompiledEmail: (t = {}) => new Promise((i, a) => {
2
+ const s = { ...{
3
+ minimize: !0,
4
+ utmEntity: {
5
+ utmSource: "",
6
+ utmMedium: "",
7
+ utmCampaign: "",
8
+ utmContent: "",
9
+ utmTerm: "",
10
+ customUtms: [
11
+ {
12
+ name1: "val1",
13
+ name2: "val2"
14
+ }
15
+ ]
16
+ },
17
+ mergeTags: ["Tag1", "Tag2"],
18
+ forseAmp: !1,
19
+ resetDataSavedFlag: !1,
20
+ disableLineHeightsReplace: !0
21
+ }, ...t }, o = {
22
+ callback: (e, m, l, n, c) => {
23
+ e ? a(e) : i({
24
+ html: m,
25
+ ampHtml: l,
26
+ ampErrors: n,
27
+ displayConditions: c
28
+ });
29
+ },
30
+ ...s
31
+ };
32
+ window.StripoEditorApi.actionsApi.compileEmail(o);
33
+ }), activateCustomViewStyles: (t = !0) => {
34
+ window.StripoEditorApi.actionsApi.activateCustomViewStyles(t);
35
+ } });
62
36
  export {
63
- E as useActionsApi
37
+ g as useActionsApi
64
38
  };
@@ -0,0 +1,5 @@
1
+ export declare const useMobileGmailFit: () => {
2
+ setupMobileGmailFit: (iframe: HTMLIFrameElement) => void;
3
+ tearDownMobileGmailFit: (iframe: HTMLIFrameElement) => void;
4
+ hasResponsiveMetaViewport: (doc: Document) => boolean;
5
+ };