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

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 (60) hide show
  1. package/dist/@types/generic.d.ts +5 -0
  2. package/dist/components/Guido.vue.js +8 -8
  3. package/dist/components/Guido.vue2.js +39 -36
  4. package/dist/components/organisms/email-preview/PreviewContainer.vue.d.ts +2 -0
  5. package/dist/components/organisms/email-preview/PreviewContainer.vue.js +19 -0
  6. package/dist/components/organisms/email-preview/PreviewContainer.vue2.js +19 -0
  7. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.d.ts +4 -0
  8. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.js +22 -0
  9. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue2.js +30 -0
  10. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.d.ts +2 -0
  11. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +19 -0
  12. package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +29 -0
  13. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.d.ts +2 -0
  14. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +22 -0
  15. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +31 -0
  16. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.d.ts +2 -0
  17. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +17 -0
  18. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +20 -0
  19. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.d.ts +2 -0
  20. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +18 -0
  21. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +22 -0
  22. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.d.ts +4 -0
  23. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +19 -0
  24. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue2.js +23 -0
  25. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.d.ts +4 -0
  26. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +20 -0
  27. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue2.js +21 -0
  28. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.d.ts +2 -0
  29. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +17 -0
  30. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +22 -0
  31. package/dist/components/organisms/header/MiddleSlot.vue.js +9 -9
  32. package/dist/components/organisms/header/MiddleSlot.vue2.js +17 -14
  33. package/dist/components/organisms/header/RightSlot.vue.js +4 -4
  34. package/dist/components/organisms/header/RightSlot.vue2.js +23 -22
  35. package/dist/components/organisms/header/ViewOptions.vue.js +8 -8
  36. package/dist/components/organisms/header/ViewOptions.vue2.js +10 -8
  37. package/dist/components/wrappers/WpModal.vue.d.ts +76 -0
  38. package/dist/components/wrappers/WpModal.vue.js +27 -0
  39. package/dist/components/wrappers/WpModal.vue2.js +22 -0
  40. package/dist/composables/useActionsApi.d.ts +2 -0
  41. package/dist/composables/useActionsApi.js +62 -36
  42. package/dist/composables/useCodeEditorApi.d.ts +4 -0
  43. package/dist/composables/useCodeEditorApi.js +11 -0
  44. package/dist/composables/useConfig.d.ts +4 -0
  45. package/dist/composables/useConfig.js +7 -0
  46. package/dist/composables/useDebounce.d.ts +4 -0
  47. package/dist/composables/useDebounce.js +12 -0
  48. package/dist/composables/usePreviewMode.d.ts +5 -0
  49. package/dist/composables/usePreviewMode.js +31 -0
  50. package/dist/composables/useResponsivePreview.d.ts +5 -0
  51. package/dist/composables/useResponsivePreview.js +86 -0
  52. package/dist/enums/defaults.js +9 -5
  53. package/dist/enums/preview.d.ts +13 -0
  54. package/dist/enums/preview.js +23 -0
  55. package/dist/guido.css +1 -1
  56. package/dist/static/assets/inbox-mockup.svg.js +4 -0
  57. package/dist/static/assets/phone-mockup.svg.js +4 -0
  58. package/dist/stores/preview.d.ts +57 -0
  59. package/dist/stores/preview.js +56 -0
  60. package/package.json +1 -1
@@ -1,17 +1,17 @@
1
- import s from "./MiddleSlot.vue2.js";
2
- import i from "../../../_virtual/_plugin-vue2_normalizer.js";
1
+ import i from "./MiddleSlot.vue2.js";
2
+ import s from "../../../_virtual/_plugin-vue2_normalizer.js";
3
3
  var n = function() {
4
- var e = this, o = e._self._c, t = e._self._setupProxy;
5
- return t.editorStore.isVersionHistoryOpen ? o("div", { staticClass: "d-f" }, [o(t.VersionHistory), o(t.VersionHistoryViewOptions)], 1) : o("div", { staticClass: "d-f" }, [o(t.InButtonV2, { attrs: { id: "guido__undo-button", "left-icon": "line-undo", styling: "ghost", type: "secondary", "label-text-status": !1 } }), o(t.InButtonV2, { attrs: { id: "guido__redo-button", "left-icon": "line-redo", styling: "ghost", type: "secondary", "label-text-status": !1 } }), o(t.InButtonV2, { attrs: { id: "guido__code-button", "data-testid": "Code Editor", "left-icon": "line-code", styling: "ghost", "tooltip-text": "Code Editor", type: "secondary", "label-text-status": !1, "selected-status": t.editorStore.isCodeEditorOpen, "tooltip-options": t.getTooltipOptions("guido__code-button") } }), o(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.trans("newsletter.email-preview") } }), o(t.ViewOptions, { staticClass: "ml-3" })], 1);
6
- }, l = [], r = /* @__PURE__ */ i(
7
- s,
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,
8
8
  n,
9
- l,
9
+ r,
10
10
  !1,
11
11
  null,
12
12
  null
13
13
  );
14
- const p = r.exports;
14
+ const u = d.exports;
15
15
  export {
16
- p as default
16
+ u as default
17
17
  };
@@ -1,22 +1,25 @@
1
- import { defineComponent as r } from "vue";
2
- import { useTranslations as s } from "../../../composables/useTranslations.js";
3
- import { useEditorStore as n } from "../../../stores/editor.js";
4
- import { InButtonV2 as e } from "@useinsider/design-system-vue";
5
- import m from "./version-history/VersionHistory.vue.js";
6
- import p from "./version-history/ViewOptions.vue.js";
7
- import f from "./ViewOptions.vue.js";
8
- const y = /* @__PURE__ */ r({
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({
9
12
  __name: "MiddleSlot",
10
- setup(a) {
11
- const o = n(), t = s();
12
- return { __sfc: !0, editorStore: o, trans: t, getTooltipOptions: (i) => ({
13
- id: `${i}-tooltip`,
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`,
14
17
  dynamicPosition: !1,
15
18
  staticPosition: "bottom center",
16
19
  iconStatus: !1
17
- }), InButtonV2: e, VersionHistory: m, VersionHistoryViewOptions: p, ViewOptions: f };
20
+ }), handlePreviewToggle: () => o.isPreviewModeOpen ? i() : t(), AmpToggle: a, InButtonV2: w, VersionHistory: v, VersionHistoryViewOptions: u, ViewOptions: P };
18
21
  }
19
22
  });
20
23
  export {
21
- y as default
24
+ B as default
22
25
  };
@@ -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", "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 }, on: { click: t.handleSave } })], 1);
6
- }, r = [], a = /* @__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.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(
7
7
  o,
8
8
  n,
9
- r,
9
+ a,
10
10
  !1,
11
11
  null,
12
12
  null
13
13
  );
14
- const c = a.exports;
14
+ const c = r.exports;
15
15
  export {
16
16
  c as default
17
17
  };
@@ -1,35 +1,36 @@
1
- import { defineComponent as m } from "vue";
2
- import { useActionsApi as p } from "../../../composables/useActionsApi.js";
3
- import { useExport as c } from "../../../composables/useExport.js";
4
- import { useSaveStart as l, useSaveComplete as f } from "../../../composables/useGuidoActions.js";
5
- import { useVersionHistoryApi as u } from "../../../composables/useVersionHistoryApi.js";
6
- import { useEditorStore as d } from "../../../stores/editor.js";
7
- import { InButtonV2 as S } from "@useinsider/design-system-vue";
8
- const E = /* @__PURE__ */ m({
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({
9
10
  __name: "RightSlot",
10
- setup(h) {
11
- const { exportHtml: a } = c(), { getCompiledEmail: t } = p(), e = l(), r = f(), { openVersionHistory: s, closeVersionHistory: n } = u(), i = d();
12
- return { __sfc: !0, exportHtml: a, getCompiledEmail: t, saveStart: e, saveComplete: r, openVersionHistory: s, closeVersionHistory: n, editorStore: i, handleVersionHistory: () => {
13
- if (i.isVersionHistoryOpen) {
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
14
  n();
15
15
  return;
16
16
  }
17
- s();
18
- }, handleSave: async () => {
19
- e();
17
+ i();
18
+ }, c = async () => {
19
+ r();
20
20
  try {
21
- const { html: o } = await t();
22
- r({
23
- html: o || "",
21
+ const { html: t } = await e();
22
+ s({
23
+ html: t || "",
24
24
  css: ""
25
25
  // CSS is embedded in HTML from Stripo
26
26
  });
27
- } catch (o) {
28
- console.error("Failed to get template data for save:", o);
27
+ } catch (t) {
28
+ console.error("Failed to get template data for save:", t);
29
29
  }
30
- }, InButtonV2: S };
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 };
31
32
  }
32
33
  });
33
34
  export {
34
- E as default
35
+ b as default
35
36
  };
@@ -1,18 +1,18 @@
1
1
  import r from "./ViewOptions.vue2.js";
2
2
  /* empty css */
3
- import s from "../../../_virtual/_plugin-vue2_normalizer.js";
4
- var n = function() {
3
+ import i from "../../../_virtual/_plugin-vue2_normalizer.js";
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": "", "segment-list": e.segmentList, selected: e.editorStore.editorVisualMode } });
7
- }, i = [], _ = /* @__PURE__ */ s(
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 } });
7
+ }, n = [], _ = /* @__PURE__ */ i(
8
8
  r,
9
+ s,
9
10
  n,
10
- i,
11
11
  !1,
12
12
  null,
13
- "0fff376c"
13
+ "c4fe2637"
14
14
  );
15
- const l = _.exports;
15
+ const d = _.exports;
16
16
  export {
17
- l as default
17
+ d as default
18
18
  };
@@ -1,15 +1,17 @@
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({
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({
5
6
  __name: "ViewOptions",
6
- setup(n) {
7
- return { __sfc: !0, editorStore: t(), segmentList: [
7
+ setup(m) {
8
+ const e = i(), t = [
8
9
  { text: "", icon: "line-desktop", value: "desktop" },
9
10
  { text: "", icon: "line-menu-mobileapp", value: "mobile" }
10
- ], InSegments: o };
11
+ ], o = n();
12
+ return { __sfc: !0, editorStore: e, segmentList: t, previewStore: o, InSegments: s };
11
13
  }
12
14
  });
13
15
  export {
14
- u as default
16
+ _ as default
15
17
  };
@@ -0,0 +1,76 @@
1
+ interface FooterButtonGroup {
2
+ primaryButton?: {
3
+ type: string;
4
+ labelText: string;
5
+ disabledStatus?: boolean;
6
+ };
7
+ cancelOrBackButton?: {
8
+ type: string;
9
+ labelText: string;
10
+ styling: string;
11
+ };
12
+ }
13
+ type __VLS_Props = {
14
+ id: string;
15
+ title: string;
16
+ description?: string;
17
+ size?: 'small' | 'medium' | 'large';
18
+ footerButtonOptions?: FooterButtonGroup;
19
+ closeButtonStatus?: boolean;
20
+ closeOnOutsideClick?: boolean;
21
+ footerStatus?: boolean;
22
+ };
23
+ declare var __VLS_13: {};
24
+ type __VLS_Slots = {} & {
25
+ default?: (props: typeof __VLS_13) => any;
26
+ };
27
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
28
+ description: string;
29
+ size: string;
30
+ footerButtonOptions: undefined;
31
+ closeButtonStatus: boolean;
32
+ closeOnOutsideClick: boolean;
33
+ footerStatus: boolean;
34
+ }>, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
35
+ close: () => void;
36
+ "primary-action": () => void;
37
+ "secondary-action": () => void;
38
+ }, string, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
39
+ description: string;
40
+ size: string;
41
+ footerButtonOptions: undefined;
42
+ closeButtonStatus: boolean;
43
+ closeOnOutsideClick: boolean;
44
+ footerStatus: boolean;
45
+ }>>>, {
46
+ size: "small" | "medium" | "large";
47
+ description: string;
48
+ footerButtonOptions: FooterButtonGroup;
49
+ closeButtonStatus: boolean;
50
+ closeOnOutsideClick: boolean;
51
+ footerStatus: boolean;
52
+ }>;
53
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
54
+ export default _default;
55
+ type __VLS_WithDefaults<P, D> = {
56
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
57
+ default: D[K];
58
+ }> : P[K];
59
+ };
60
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
61
+ type __VLS_TypePropsToOption<T> = {
62
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
63
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
64
+ } : {
65
+ type: import('vue').PropType<T[K]>;
66
+ required: true;
67
+ };
68
+ };
69
+ type __VLS_WithSlots<T, S> = T & {
70
+ new (): {
71
+ $scopedSlots: S;
72
+ };
73
+ };
74
+ type __VLS_PrettifyLocal<T> = {
75
+ [K in keyof T]: T[K];
76
+ } & {};
@@ -0,0 +1,27 @@
1
+ import r from "./WpModal.vue2.js";
2
+ import s from "../../_virtual/_plugin-vue2_normalizer.js";
3
+ var i = function() {
4
+ var t = this, o = t._self._c, e = t._self._setupProxy;
5
+ return o(e.InModalV2, { attrs: { id: t.id, "description-status": "", status: "", "close-button-status": t.closeButtonStatus, "close-on-outside-click": t.closeOnOutsideClick, "description-text": t.description, "footer-button-group-options": t.footerButtonOptions, "footer-status": t.footerStatus, size: t.size, "title-text": t.title }, on: { cancelOrBackButtonEvent: function(n) {
6
+ return e.emit("close");
7
+ }, onCloseEvent: function(n) {
8
+ return e.emit("close");
9
+ }, primaryButtonEvent: function(n) {
10
+ return e.emit("primary-action");
11
+ }, secondaryButtonEvent: function(n) {
12
+ return e.emit("secondary-action");
13
+ } }, scopedSlots: t._u([{ key: "contentSlot", fn: function() {
14
+ return [t._t("default")];
15
+ }, proxy: !0 }], null, !0) });
16
+ }, u = [], c = /* @__PURE__ */ s(
17
+ r,
18
+ i,
19
+ u,
20
+ !1,
21
+ null,
22
+ null
23
+ );
24
+ const p = c.exports;
25
+ export {
26
+ p as default
27
+ };
@@ -0,0 +1,22 @@
1
+ import { defineComponent as e } from "vue";
2
+ import { InModalV2 as o } from "@useinsider/design-system-vue";
3
+ const u = /* @__PURE__ */ e({
4
+ __name: "WpModal",
5
+ props: {
6
+ id: null,
7
+ title: null,
8
+ description: { default: "" },
9
+ size: { default: "small" },
10
+ footerButtonOptions: { default: void 0 },
11
+ closeButtonStatus: { type: Boolean, default: !0 },
12
+ closeOnOutsideClick: { type: Boolean, default: !0 },
13
+ footerStatus: { type: Boolean, default: !0 }
14
+ },
15
+ emits: ["close", "primary-action", "secondary-action"],
16
+ setup(l, { emit: t }) {
17
+ return { __sfc: !0, emit: t, InModalV2: o };
18
+ }
19
+ });
20
+ export {
21
+ u as default
22
+ };
@@ -1,5 +1,7 @@
1
+ import type { CompileEmailOptions } from '@@/Types/actions-api';
1
2
  import { GetCompiledEmailOptions, CompiledEmailResult } from '@@/Types/actions-api';
2
3
  export declare const useActionsApi: () => {
3
4
  getCompiledEmail: (options?: GetCompiledEmailOptions) => Promise<CompiledEmailResult>;
4
5
  activateCustomViewStyles: (isActive?: boolean) => void;
6
+ getPreviewData: (options?: CompileEmailOptions) => Promise<CompiledEmailResult>;
5
7
  };
@@ -1,38 +1,64 @@
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
- } });
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
+ };
36
62
  export {
37
- g as useActionsApi
63
+ E as useActionsApi
38
64
  };
@@ -0,0 +1,4 @@
1
+ export declare const useCodeEditorApi: () => {
2
+ openCodeEditor: () => void;
3
+ closeCodeEditor: () => void;
4
+ };
@@ -0,0 +1,11 @@
1
+ const i = () => ({
2
+ openCodeEditor: () => {
3
+ window.StripoEditorApi.codeEditorApi.openCodeEditor();
4
+ },
5
+ closeCodeEditor: () => {
6
+ window.StripoEditorApi.codeEditorApi.closeCodeEditor();
7
+ }
8
+ });
9
+ export {
10
+ i as useCodeEditorApi
11
+ };
@@ -0,0 +1,4 @@
1
+ import type { GuidoConfig } from '@@/Types/generic';
2
+ export declare const useConfig: () => {
3
+ config: GuidoConfig;
4
+ };
@@ -0,0 +1,7 @@
1
+ import { DefaultGuidoConfig as o } from "../enums/defaults.js";
2
+ const t = () => ({
3
+ config: typeof window > "u" ? o : window.GuidoConfig || o
4
+ });
5
+ export {
6
+ t as useConfig
7
+ };
@@ -0,0 +1,4 @@
1
+ export declare const useDebounce: () => {
2
+ debounce: (fn: () => void, ms?: number) => void;
3
+ clearDebounce: () => void;
4
+ };
@@ -0,0 +1,12 @@
1
+ import { ref as c } from "vue";
2
+ const r = () => {
3
+ const e = c(void 0);
4
+ return { debounce: (o, u = 150) => {
5
+ e.value && window.clearTimeout(e.value), e.value = window.setTimeout(o, u);
6
+ }, clearDebounce: () => {
7
+ e.value && (window.clearTimeout(e.value), e.value = void 0);
8
+ } };
9
+ };
10
+ export {
11
+ r as useDebounce
12
+ };
@@ -0,0 +1,5 @@
1
+ export declare const usePreviewMode: () => {
2
+ closePreviewMode: () => void;
3
+ openPreviewMode: () => void;
4
+ loadPreviewData: () => Promise<void>;
5
+ };
@@ -0,0 +1,31 @@
1
+ import { useEditorStore as n } from "../stores/editor.js";
2
+ import { usePreviewStore as m } from "../stores/preview.js";
3
+ import { useActionsApi as p } from "./useActionsApi.js";
4
+ import { useCodeEditorApi as l } from "./useCodeEditorApi.js";
5
+ const E = () => {
6
+ const i = n(), e = m(), { closeCodeEditor: s } = l(), { getPreviewData: a } = p(), r = () => {
7
+ e.isPreviewModeOpen = !1, e.resetState();
8
+ };
9
+ return {
10
+ closePreviewMode: r,
11
+ openPreviewMode: () => {
12
+ i.isCodeEditorOpen && s(), e.isPreviewModeOpen = !0;
13
+ },
14
+ loadPreviewData: async () => {
15
+ if (!(e.isLoading || e.isLoaded)) {
16
+ e.isLoading = !0;
17
+ try {
18
+ const { html: o, ampHtml: t, ampErrors: d } = await a();
19
+ e.templateHtml = o || "", e.ampHtml = t || "", e.ampErrors = d || [], e.setEmailFormat(t ? "AMP" : "html"), e.isLoaded = !0;
20
+ } catch (o) {
21
+ console.error("Failed to load preview data:", o), r();
22
+ } finally {
23
+ e.isLoading = !1;
24
+ }
25
+ }
26
+ }
27
+ };
28
+ };
29
+ export {
30
+ E as usePreviewMode
31
+ };
@@ -0,0 +1,5 @@
1
+ export declare const useResponsivePreview: () => {
2
+ setupResponsivePreview: (iframe: HTMLIFrameElement) => void;
3
+ tearDownEmailResponsiveFit: (iframe: HTMLIFrameElement) => void;
4
+ hasResponsiveMetaViewport: (doc: Document) => boolean;
5
+ };
@@ -0,0 +1,86 @@
1
+ import { useDebounce as p } from "./useDebounce.js";
2
+ import { ResponsivePreviewRegex as c, ResponsivePreviewSelectors as v, ResponsivePreviewConfig as a } from "../enums/preview.js";
3
+ let i = null, l = null;
4
+ const { debounce: y } = p(), h = (t) => {
5
+ if (!t)
6
+ return null;
7
+ const e = t.match(c.TABLE_WIDTH);
8
+ if (!e)
9
+ return null;
10
+ const n = Number(e[1]);
11
+ return Number.isNaN(n) ? null : n;
12
+ }, w = (t) => Array.from(t.querySelectorAll("table[width]")).reduce((e, n) => {
13
+ const o = h(n.getAttribute("width"));
14
+ return o && o > e ? o : e;
15
+ }, 0), f = (t) => Array.from(t.querySelectorAll('[style*="width"]')).reduce((e, n) => {
16
+ const r = (n.getAttribute("style") || "").match(c.INLINE_WIDTH);
17
+ if (!r)
18
+ return e;
19
+ const s = Number(r[1]);
20
+ return !Number.isNaN(s) && s > e ? s : e;
21
+ }, 0), W = (t) => v.CONTAINERS.reduce((e, n) => {
22
+ const o = t.querySelector(n);
23
+ if (!o)
24
+ return e;
25
+ const r = Math.max(o.offsetWidth, o.scrollWidth);
26
+ return r > e ? r : e;
27
+ }, 0), E = (t) => {
28
+ const e = {
29
+ maxTableWidth: w(t),
30
+ maxInlineWidth: f(t),
31
+ maxContainerWidth: W(t)
32
+ }, { maxTableWidth: n, maxInlineWidth: o, maxContainerWidth: r } = e;
33
+ return Math.max(n, o, r) || a.DEFAULT_WIDTH;
34
+ }, b = (t) => {
35
+ const { documentElement: e, body: n } = t;
36
+ e.style.setProperty("overflow-x", "visible", "important"), n.style.setProperty("visibility", "visible", "important");
37
+ }, g = (t) => {
38
+ const { documentElement: e, body: n } = t;
39
+ e.style.removeProperty("transform"), e.style.removeProperty("transform-origin"), e.style.removeProperty("height"), n.style.removeProperty("overflow-x");
40
+ }, S = (t) => {
41
+ const { targetWidth: e, deviceWidth: n, minScale: o, maxScale: r } = t, s = n / e;
42
+ return Math.min(Math.max(s, o), r);
43
+ }, P = (t, e) => {
44
+ const n = E(t), o = S({
45
+ targetWidth: n,
46
+ deviceWidth: e,
47
+ minScale: a.MIN_SCALE,
48
+ maxScale: 1
49
+ }), { documentElement: r, body: s } = t;
50
+ r.style.setProperty("height", "100%", "important"), r.style.setProperty("transform", `scale(${o})`, "important"), r.style.setProperty("transform-origin", "top left", "important"), s.style.setProperty("overflow-x", "hidden", "important");
51
+ }, u = (t) => {
52
+ const e = t.querySelector('meta[name="viewport"]');
53
+ if (!e)
54
+ return !1;
55
+ const n = e.getAttribute("content") || "";
56
+ return c.META_VIEWPORT.test(n);
57
+ }, R = (t) => t.clientWidth || t.getBoundingClientRect().width || 375, d = (t) => {
58
+ const e = t.contentWindow;
59
+ l && e && e.removeEventListener("resize", l), i && window.removeEventListener("resize", i), l = null, i = null;
60
+ }, x = (t, e) => {
61
+ const n = t.contentWindow;
62
+ if (!n)
63
+ return;
64
+ d(t);
65
+ const o = () => y(e, a.RESIZE_DEBOUNCE_MS);
66
+ l = o, n.addEventListener("resize", l), i = o, window.addEventListener("resize", i);
67
+ }, M = () => ({
68
+ setupResponsivePreview: (n) => {
69
+ const o = n.contentDocument, r = n.contentWindow;
70
+ if (!o || !r)
71
+ return;
72
+ b(o);
73
+ const s = () => {
74
+ const m = R(n);
75
+ u(o) ? g(o) : P(o, m);
76
+ };
77
+ s(), x(n, s);
78
+ },
79
+ tearDownEmailResponsiveFit: (n) => {
80
+ d(n);
81
+ },
82
+ hasResponsiveMetaViewport: u
83
+ });
84
+ export {
85
+ M as useResponsivePreview
86
+ };