@useinsider/guido 1.0.3-beta.bedc181 → 1.0.3-beta.bee0e85

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.
package/README.md CHANGED
@@ -600,9 +600,6 @@ Create a `.env` file with the following variables: (You can get env variables fr
600
600
  VITE_STRIPO_PLUGIN_ID=your_plugin_id
601
601
  VITE_STRIPO_SECRET_KEY=your_secret_key
602
602
  VITE_STRIPO_ROLE=your_role
603
-
604
- # Playwright Test Configuration (Optional - for local debugging only)
605
- HEADED=false # Set to 'true' to run tests with visible browser
606
603
  ```
607
604
 
608
605
  ### Project Structure
@@ -12,7 +12,7 @@ var t = function() {
12
12
  n,
13
13
  !1,
14
14
  null,
15
- "48a9b534"
15
+ "98181b5a"
16
16
  );
17
17
  const v = s.exports;
18
18
  export {
@@ -1,24 +1,23 @@
1
- import { defineComponent as z, defineAsyncComponent as L, ref as K, computed as W, watch as j, onMounted as q, onUnmounted as J } from "vue";
2
- import { provideGuidoActions as Q } from "../composables/useGuidoActions.js";
3
- import { usePartner as V } from "../composables/usePartner.js";
4
- import { useStripo as X } from "../composables/useStripo.js";
5
- import { useTimerClone as Y } from "../composables/useTimerClone.js";
6
- import { migrate as _ } from "../config/migrator/index.js";
7
- import { DefaultUsername as Z, DefaultMessageType as $, DefaultGuidoConfig as ee } from "../enums/defaults.js";
8
- import oe from "./organisms/base/Toaster.vue.js";
9
- import te from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
10
- import ne from "./organisms/header/HeaderWrapper.vue.js";
11
- import re from "./organisms/LoadingWrapper.vue.js";
12
- import ie from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
13
- import se from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
14
- import { useStripoApi as ae } from "../services/stripoApi.js";
15
- import { useConfigStore as ce } from "../stores/config.js";
16
- import { useDynamicContentStore as me } from "../stores/dynamic-content.js";
17
- import { useEditorStore as de } from "../stores/editor.js";
18
- import { usePreviewStore as le } from "../stores/preview.js";
19
- import { useUnsubscribeStore as ue } from "../stores/unsubscribe.js";
20
- import pe from "../node_modules/lodash-es/merge.js";
21
- const Ae = /* @__PURE__ */ z({
1
+ import { defineComponent as O, defineAsyncComponent as I, ref as z, computed as U, watch as B, onMounted as K, onUnmounted as j } from "vue";
2
+ import { provideGuidoActions as q } from "../composables/useGuidoActions.js";
3
+ import { usePartner as J } from "../composables/usePartner.js";
4
+ import { useStripo as Q } from "../composables/useStripo.js";
5
+ import { migrate as L } from "../config/migrator/index.js";
6
+ import { DefaultUsername as V, DefaultMessageType as X, DefaultGuidoConfig as Y } from "../enums/defaults.js";
7
+ import Z from "./organisms/base/Toaster.vue.js";
8
+ import $ from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
9
+ import ee from "./organisms/header/HeaderWrapper.vue.js";
10
+ import oe from "./organisms/LoadingWrapper.vue.js";
11
+ import te from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
12
+ import ne from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
13
+ import { useStripoApi as re } from "../services/stripoApi.js";
14
+ import { useConfigStore as ie } from "../stores/config.js";
15
+ import { useDynamicContentStore as se } from "../stores/dynamic-content.js";
16
+ import { useEditorStore as ae } from "../stores/editor.js";
17
+ import { usePreviewStore as ce } from "../stores/preview.js";
18
+ import { useUnsubscribeStore as me } from "../stores/unsubscribe.js";
19
+ import de from "../node_modules/lodash-es/merge.js";
20
+ const Ue = /* @__PURE__ */ O({
22
21
  __name: "Guido",
23
22
  props: {
24
23
  templateId: null,
@@ -33,34 +32,34 @@ const Ae = /* @__PURE__ */ z({
33
32
  templateConfig: null
34
33
  },
35
34
  emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
36
- setup(A, { expose: N, emit: o }) {
37
- const u = A, F = L(
35
+ setup(W, { expose: _, emit: o }) {
36
+ const u = W, A = I(
38
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
39
- ), H = L(
38
+ ), N = I(
40
39
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
41
- ), p = K(), i = me(), g = ue(), f = ce(), s = de(), O = le(), n = W(() => s.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: R } = V(), h = () => {
40
+ ), p = z(), i = se(), g = me(), f = ie(), s = ae(), F = ce(), n = U(() => s.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: H } = J(), b = () => {
42
41
  var e;
43
42
  return (e = p.value) == null ? void 0 : e.handleSave(!0);
44
43
  }, {
45
44
  templateId: a,
46
- userId: b,
47
- guidoConfig: C,
45
+ userId: C,
46
+ guidoConfig: h,
48
47
  templateConfig: t,
49
48
  html: r = "",
50
49
  css: S = "",
51
50
  partnerName: c = y(),
52
51
  productType: m = v(),
53
- messageType: w = $,
54
- username: D = Z
52
+ messageType: w = X,
53
+ username: D = V
55
54
  } = u, d = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
56
- s.templateId = a, window.GuidoConfig = pe(ee, C), window.GuidoConfig.partner = {
55
+ s.templateId = a, window.GuidoConfig = de(Y, h), window.GuidoConfig.partner = {
57
56
  partnerName: c,
58
57
  productType: m,
59
58
  messageType: w
60
59
  }, f.templateConfig = t;
61
- const { initPlugin: T } = X({
60
+ const { initPlugin: E } = Q({
62
61
  emailId: a,
63
- userId: b,
62
+ userId: C,
64
63
  username: D,
65
64
  partnerName: c,
66
65
  productType: m,
@@ -68,11 +67,11 @@ const Ae = /* @__PURE__ */ z({
68
67
  onReady: () => {
69
68
  console.debug("guido:ready"), o("ready");
70
69
  }
71
- }), { getDefaultTemplate: E } = ae(), { cloneTimersOnSave: k, hasTimerBlocks: P } = Y(), x = W(() => {
70
+ }), { getDefaultTemplate: T } = re(), R = U(() => {
72
71
  var e;
73
72
  return !((e = window.GuidoConfig) != null && e.useHeader);
74
73
  });
75
- Q({
74
+ q({
76
75
  onBack: () => {
77
76
  console.debug("guido:back"), o("back");
78
77
  },
@@ -86,50 +85,50 @@ const Ae = /* @__PURE__ */ z({
86
85
  console.debug("guido:test-email:click"), o("test-email:click");
87
86
  }
88
87
  });
89
- const G = (e) => {
88
+ const P = (e) => {
90
89
  console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
91
- }, I = () => {
90
+ }, k = () => {
92
91
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
93
92
  };
94
- j(() => n.value, () => {
93
+ B(() => n.value, () => {
95
94
  o("on-change", n.value);
96
95
  });
97
96
  const l = (e) => {
98
- const U = e, { attribute: B, position: M } = U.detail;
99
- console.debug("dynamic-content:open", U.detail), o("dynamic-content:open", B, M);
97
+ const G = e, { attribute: x, position: M } = G.detail;
98
+ console.debug("dynamic-content:open", G.detail), o("dynamic-content:open", x, M);
100
99
  };
101
- return q(async () => {
100
+ return K(async () => {
102
101
  console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
103
102
  try {
104
103
  g.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
105
104
  let e = {
106
- html: r && await _(r),
105
+ html: r && await L(r),
107
106
  css: S,
108
107
  forceRecreate: !0
109
108
  // TODO: It should be false for old templates. We will communicate with Stripo
110
109
  };
111
- e.html || (e = await E(), e.html = await _(e.html)), P(e.html) && (e.html = await k(e.html)), await T(e), i.selectedDynamicContentList = d;
110
+ e.html || (e = await T(), e.html = await L(e.html)), await E(e), i.selectedDynamicContentList = d;
112
111
  } catch (e) {
113
112
  console.error("Failed to initialize Stripo editor:", e);
114
113
  }
115
114
  document.addEventListener("dynamic-content:open", l);
116
- }), J(() => {
115
+ }), j(() => {
117
116
  document.removeEventListener("dynamic-content:open", l);
118
117
  try {
119
118
  window.UIEditor.removeEditor();
120
119
  } catch {
121
120
  console.debug("Failed to remove Stripo editor: No editor found");
122
121
  }
123
- }), N({
122
+ }), _({
124
123
  dynamicContent: {
125
- insert: G,
126
- close: I
124
+ insert: P,
125
+ close: k
127
126
  },
128
127
  hasChanges: n,
129
- saveSilent: h
130
- }), { __sfc: !0, PreviewContainer: F, OnboardingWrapper: H, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: u, configStore: f, editorStore: s, previewStore: O, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: R, saveSilent: h, templateId: a, userId: b, guidoConfig: C, templateConfig: t, html: r, css: S, partnerName: c, productType: m, messageType: w, username: D, preselectedDynamicContentList: d, emit: o, initPlugin: T, getDefaultTemplate: E, cloneTimersOnSave: k, hasTimerBlocks: P, noHeader: x, insertDynamicContent: G, closeDynamicContent: I, handleDynamicContentOpen: l, Toaster: oe, FilterSelectionDrawer: te, HeaderWrapper: ne, LoadingWrapper: re, SaveAsTemplateDrawer: ie, UnsubscribeWrapper: se };
128
+ saveSilent: b
129
+ }), { __sfc: !0, PreviewContainer: A, OnboardingWrapper: N, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: u, configStore: f, editorStore: s, previewStore: F, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: H, saveSilent: b, templateId: a, userId: C, guidoConfig: h, templateConfig: t, html: r, css: S, partnerName: c, productType: m, messageType: w, username: D, preselectedDynamicContentList: d, emit: o, initPlugin: E, getDefaultTemplate: T, noHeader: R, insertDynamicContent: P, closeDynamicContent: k, handleDynamicContentOpen: l, Toaster: Z, FilterSelectionDrawer: $, HeaderWrapper: ee, LoadingWrapper: oe, SaveAsTemplateDrawer: te, UnsubscribeWrapper: ne };
131
130
  }
132
131
  });
133
132
  export {
134
- Ae as default
133
+ Ue as default
135
134
  };
@@ -1,18 +1,18 @@
1
- import t from "./LoadingWrapper.vue2.js";
1
+ import o from "./LoadingWrapper.vue2.js";
2
2
  /* empty css */
3
- import a from "../../_virtual/_plugin-vue2_normalizer.js";
3
+ import t from "../../_virtual/_plugin-vue2_normalizer.js";
4
4
  var s = function() {
5
- var r = this, e = r._self._c, o = r._self._setupProxy;
6
- return o.editorStore.loadingStatus ? e("div", { staticClass: "guido-loading__wrapper p-a l-0 z-4 d-f a-i-c j-c-c w-1 f-g-1 b-c-36" }, [e(o.InLoading, { attrs: { "color-class": "i-c-7", size: "32" } })], 1) : r._e();
7
- }, n = [], _ = /* @__PURE__ */ a(
8
- t,
5
+ var r = this, e = r._self._c, a = r._self._setupProxy;
6
+ return a.editorStore.loadingStatus ? e("div", { staticClass: "guido-loading__wrapper p-a l-0 z-4 d-f a-i-c j-c-c w-1 f-g-1 b-c-36" }, [e(a.InLoading, { attrs: { "color-class": "i-c-7", size: "32" } })], 1) : r._e();
7
+ }, n = [], _ = /* @__PURE__ */ t(
8
+ o,
9
9
  s,
10
10
  n,
11
11
  !1,
12
12
  null,
13
- "dced5582"
13
+ "a76c193e"
14
14
  );
15
- const l = _.exports;
15
+ const d = _.exports;
16
16
  export {
17
- l as default
17
+ d as default
18
18
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent as H, ref as p, computed as _ } from "vue";
1
+ import { defineComponent as H, ref as m, computed as _ } from "vue";
2
2
  import { useConfig as h } from "../../../composables/useConfig.js";
3
3
  import { useExport as V } from "../../../composables/useExport.js";
4
4
  import { useTestEmailClick as x } from "../../../composables/useGuidoActions.js";
@@ -10,25 +10,25 @@ import { getTooltipOptions as O } from "../../../utils/tooltipUtils.js";
10
10
  import { InButtonV2 as A } from "@useinsider/design-system-vue";
11
11
  const J = /* @__PURE__ */ H({
12
12
  __name: "RightSlot",
13
- setup(k, { expose: m }) {
14
- const { config: c } = h(), { exportHtml: r } = V(), { save: n } = E(), { openVersionHistory: i, closeVersionHistory: a } = w(), t = C(), o = T(), e = p(!1), s = p(!1), u = x(), f = () => {
15
- if (t.isVersionHistoryOpen) {
13
+ setup(k, { expose: c }) {
14
+ const { config: u } = h(), { exportHtml: r } = V(), { save: n } = E(), { openVersionHistory: i, closeVersionHistory: a } = w(), o = C(), t = T(), e = m(!1), s = m(!1), f = x(), v = () => {
15
+ if (o.isVersionHistoryOpen) {
16
16
  a();
17
17
  return;
18
18
  }
19
19
  i();
20
- }, v = async () => {
20
+ }, d = async () => {
21
21
  e.value = !0, await r(), e.value = !1;
22
- }, d = () => {
23
- t.isSaveAsTemplateDrawerOpen = !0;
24
- }, y = _(() => t.isVersionHistoryOpen ? o("newsletter.close-version-history") : o("newsletter.version-history")), l = async (S) => {
25
- s.value = !0, t.loadingStatus = !0;
26
- const g = await n(S);
27
- return s.value = !1, t.loadingStatus = !1, g;
22
+ }, y = () => {
23
+ o.isSaveAsTemplateDrawerOpen = !0;
24
+ }, S = _(() => o.isVersionHistoryOpen ? t("newsletter.close-version-history") : t("newsletter.version-history")), l = async (p) => {
25
+ s.value = !0, o.loadingStatus = !0;
26
+ const g = await n(p);
27
+ return s.value = !1, p && (o.loadingStatus = !1), g;
28
28
  };
29
- return m({
29
+ return c({
30
30
  handleSave: l
31
- }), { __sfc: !0, config: c, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: t, trans: o, isExporting: e, isSaving: s, testEmailClick: u, handleVersionHistory: f, handleExport: v, handleSaveAs: d, versionHistoryTooltipText: y, handleSave: l, getTooltipOptions: O, InButtonV2: A };
31
+ }), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: o, trans: t, isExporting: e, isSaving: s, testEmailClick: f, handleVersionHistory: v, handleExport: d, handleSaveAs: y, versionHistoryTooltipText: S, handleSave: l, getTooltipOptions: O, InButtonV2: A };
32
32
  }
33
33
  });
34
34
  export {
@@ -1,6 +1,6 @@
1
- import { useToaster as w } from "./useToaster.js";
2
- const S = () => {
3
- const { handleError: l } = w(), m = (e = {}) => new Promise((t, a) => {
1
+ import { useToaster as g } from "./useToaster.js";
2
+ const A = () => {
3
+ const { handleError: l } = g(), n = (t = {}) => new Promise((e, a) => {
4
4
  const i = { ...{
5
5
  minimize: !0,
6
6
  utmEntity: {
@@ -20,72 +20,60 @@ const S = () => {
20
20
  forceAmp: !1,
21
21
  resetDataSavedFlag: !1,
22
22
  disableLineHeightsReplace: !0
23
- }, ...e }, s = {
24
- callback: (n, p, c, d, u) => {
25
- n ? a(n) : t({
26
- html: p,
27
- ampHtml: c,
28
- ampErrors: d,
29
- displayConditions: u
23
+ }, ...t }, m = {
24
+ callback: (s, c, p, u, d) => {
25
+ s ? a(s) : e({
26
+ html: c,
27
+ ampHtml: p,
28
+ ampErrors: u,
29
+ displayConditions: d
30
30
  });
31
31
  },
32
32
  ...i
33
33
  };
34
- window.StripoEditorApi.actionsApi.compileEmail(s);
34
+ window.StripoEditorApi.actionsApi.compileEmail(m);
35
35
  });
36
36
  return {
37
- getCompiledEmail: m,
38
- getTemplateData: () => new Promise((e) => {
39
- const t = ({ html: a, css: o, width: i, height: r, utmParams: s, syncModulesIds: n }) => e({
37
+ getCompiledEmail: n,
38
+ getTemplateData: () => new Promise((t) => {
39
+ const e = ({ html: a, css: o, width: i, height: r, utmParams: m, syncModulesIds: s }) => t({
40
40
  html: a,
41
41
  css: o,
42
42
  width: i,
43
43
  height: r,
44
- utmParams: s,
45
- syncModulesIds: n
44
+ utmParams: m,
45
+ syncModulesIds: s
46
46
  });
47
- window.StripoEditorApi.actionsApi.getTemplateData(t);
47
+ window.StripoEditorApi.actionsApi.getTemplateData(e);
48
48
  }),
49
- activateCustomViewStyles: (e = !0) => {
50
- window.StripoEditorApi.actionsApi.activateCustomViewStyles(e);
49
+ activateCustomViewStyles: (t = !0) => {
50
+ window.StripoEditorApi.actionsApi.activateCustomViewStyles(t);
51
51
  },
52
- getPreviewData: async (e) => {
52
+ getPreviewData: async (t) => {
53
53
  try {
54
54
  const {
55
- html: t,
55
+ html: e,
56
56
  displayConditions: a,
57
57
  ampHtml: o = "",
58
58
  ampErrors: i = []
59
- } = await m({ minimize: !1, resetDataSavedFlag: !1, ...e });
59
+ } = await n({ minimize: !1, resetDataSavedFlag: !1, ...t });
60
60
  return {
61
- html: t,
61
+ html: e,
62
62
  ampHtml: o,
63
63
  ampErrors: i,
64
64
  displayConditions: a
65
65
  };
66
- } catch (t) {
67
- return l(t, "Error loading preview"), {
66
+ } catch (e) {
67
+ return l(e, "Error loading preview"), {
68
68
  html: "",
69
69
  ampHtml: "",
70
70
  ampErrors: [],
71
71
  displayConditions: []
72
72
  };
73
73
  }
74
- },
75
- updateTimerInClonedTemplate: () => new Promise((e) => {
76
- try {
77
- window.StripoEditorApi.actionsApi.updateTimerInClonedTemplate((t, a) => {
78
- t ? (l(t, "Failed to update timer in cloned template"), e(null)) : e(a || null);
79
- });
80
- } catch (t) {
81
- l(t, "Failed to call updateTimerInClonedTemplate"), e(null);
82
- }
83
- }),
84
- updateHtmlAndCss: (e, t) => {
85
- window.StripoEditorApi.actionsApi.updateHtmlAndCss(e, t);
86
74
  }
87
75
  };
88
76
  };
89
77
  export {
90
- S as useActionsApi
78
+ A as useActionsApi
91
79
  };
@@ -1,19 +1,19 @@
1
- import { useActionsApi as b } from "./useActionsApi.js";
2
- import { useBlocksConfig as k } from "./useBlocksConfig.js";
3
- import { useConfig as T } from "./useConfig.js";
1
+ import { useActionsApi as w } from "./useActionsApi.js";
2
+ import { useBlocksConfig as b } from "./useBlocksConfig.js";
3
+ import { useConfig as k } from "./useConfig.js";
4
4
  import { useCustomInterfaceAppearance as V } from "./useCustomInterfaceAppearance.js";
5
5
  import { useStripoEventHandler as _ } from "./useStripoEventHandler.js";
6
6
  import { useToaster as B } from "./useToaster.js";
7
- import { displayConditions as A } from "../enums/displayConditions.js";
8
- import { useStripoApi as F } from "../services/stripoApi.js";
9
- import v from "../static/styles/customEditorStyle.css.js";
10
- import { useEditorStore as I } from "../stores/editor.js";
11
- import { dynamicContentToMergeTags as M } from "../utils/genericUtil.js";
12
- import U from "../package.json.js";
13
- const N = (c) => {
14
- const { config: l } = T(), { handleError: u } = B(), { getToken: f, getCustomFonts: y } = F(), { handleEvent: S } = _(), { getStripoBlocksConfig: C } = k(), E = async (i, r = []) => {
7
+ import { displayConditions as T } from "../enums/displayConditions.js";
8
+ import { useStripoApi as A } from "../services/stripoApi.js";
9
+ import F from "../static/styles/customEditorStyle.css.js";
10
+ import { useEditorStore as M } from "../stores/editor.js";
11
+ import { dynamicContentToMergeTags as U } from "../utils/genericUtil.js";
12
+ import v from "../package.json.js";
13
+ const J = (c) => {
14
+ const { config: u } = k(), { handleError: l } = B(), { getToken: f, getCustomFonts: y } = A(), { handleEvent: S } = _(), { getStripoBlocksConfig: C } = b(), E = async (i, r = []) => {
15
15
  var m, g;
16
- const e = I(), { html: n, css: p, forceRecreate: a } = i, { baseBlocks: t, extensions: d } = await C();
16
+ const t = M(), { html: n, css: p, forceRecreate: a } = i, { baseBlocks: e, extensions: d } = await C();
17
17
  window.UIEditor.initEditor(
18
18
  document.querySelector("#guido-editor"),
19
19
  {
@@ -30,10 +30,10 @@ const N = (c) => {
30
30
  customAppearanceMergetags: !0,
31
31
  customAppearanceMergetagsBorderColor: "#f1f3fe",
32
32
  customAppearanceMergetagsBackgroundColor: "#f1f3fe",
33
- customViewStyles: v,
34
- conditionsEnabled: ((m = l.features) == null ? void 0 : m.displayConditions) ?? !0,
35
- customConditionsEnabled: ((g = l.features) == null ? void 0 : g.displayConditions) ?? !0,
36
- conditionCategories: A,
33
+ customViewStyles: F,
34
+ conditionsEnabled: ((m = u.features) == null ? void 0 : m.displayConditions) ?? !0,
35
+ customConditionsEnabled: ((g = u.features) == null ? void 0 : g.displayConditions) ?? !0,
36
+ conditionCategories: T,
37
37
  enableXSSSecurity: !0,
38
38
  messageSettingsEnabled: !0,
39
39
  displayGmailAnnotations: !0,
@@ -41,7 +41,7 @@ const N = (c) => {
41
41
  displayTitle: !1,
42
42
  displayUTM: !1,
43
43
  selectElementAfterDrop: !0,
44
- ...t ? { baseBlocks: t } : {},
44
+ ...e ? { baseBlocks: e } : {},
45
45
  editorFonts: {
46
46
  showDefaultStandardFonts: !0,
47
47
  showDefaultNotStandardFonts: !0,
@@ -49,7 +49,7 @@ const N = (c) => {
49
49
  },
50
50
  mergeTags: [
51
51
  {
52
- entries: M(c.preselectedDynamicContentList)
52
+ entries: U(c.preselectedDynamicContentList)
53
53
  }
54
54
  ],
55
55
  async onTokenRefreshRequest(o) {
@@ -57,30 +57,30 @@ const N = (c) => {
57
57
  const s = await f();
58
58
  o(s);
59
59
  } catch (s) {
60
- u(s, "Failed to refresh token");
60
+ l(s, "Failed to refresh token");
61
61
  }
62
62
  },
63
63
  onTemplateLoaded() {
64
64
  try {
65
- const { importCss: o } = V(), { activateCustomViewStyles: s, updateTimerInClonedTemplate: w } = b();
66
- o(), s(), w(), c.onReady(), e.isStripoInitialized = !0, e.loadingStatus = !1, setTimeout(() => {
67
- e.hasChanges = !1;
65
+ const { importCss: o } = V(), { activateCustomViewStyles: s } = w();
66
+ o(), s(), c.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
67
+ t.hasChanges = !1;
68
68
  }, 1e3);
69
69
  } catch (o) {
70
- u(o, "Failed to load custom interface appearance");
70
+ l(o, "Failed to load custom interface appearance");
71
71
  }
72
72
  },
73
73
  onCodeEditorVisibilityChanged(o) {
74
- e.isCodeEditorOpen = o;
74
+ t.isCodeEditorOpen = o;
75
75
  },
76
76
  onEditorVisualModeChanged(o) {
77
- e.editorVisualMode = o.toLowerCase();
77
+ t.editorVisualMode = o.toLowerCase();
78
78
  },
79
79
  onVersionHistoryVisibilityChanged(o) {
80
- e.isVersionHistoryOpen = o;
80
+ t.isVersionHistoryOpen = o;
81
81
  },
82
82
  onDataChanged() {
83
- e.hasChanges = !0;
83
+ t.hasChanges = !0;
84
84
  },
85
85
  onEvent: S,
86
86
  ignoreClickOutsideSelectors: [
@@ -91,18 +91,18 @@ const N = (c) => {
91
91
  extensions: d
92
92
  }
93
93
  );
94
- }, h = (i) => new Promise((r, e) => {
94
+ }, h = (i) => new Promise((r, t) => {
95
95
  var d;
96
96
  if (document.getElementById("UiEditorScript")) {
97
97
  i(), r();
98
98
  return;
99
99
  }
100
- const n = U.guido, a = `https://email-static.useinsider.com/guido/${(d = n == null ? void 0 : n.stripo) == null ? void 0 : d.version}/UIEditor.js`, t = document.createElement("script");
101
- t.id = "UiEditorScript", t.type = "module", t.src = a, t.onload = () => {
100
+ const n = v.guido, a = `https://email-static.useinsider.com/guido/${(d = n == null ? void 0 : n.stripo) == null ? void 0 : d.version}/UIEditor.js`, e = document.createElement("script");
101
+ e.id = "UiEditorScript", e.type = "module", e.src = a, e.onload = () => {
102
102
  i(), r();
103
- }, t.onerror = () => {
104
- e(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
105
- }, document.body.appendChild(t);
103
+ }, e.onerror = () => {
104
+ t(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
105
+ }, document.body.appendChild(e);
106
106
  });
107
107
  return { initPlugin: async (i) => {
108
108
  await h(async () => {
@@ -112,5 +112,5 @@ const N = (c) => {
112
112
  } };
113
113
  };
114
114
  export {
115
- N as useStripo
115
+ J as useStripo
116
116
  };
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- .gap-16[data-v-6562e38c],.gap-16[data-v-1ccb6d4a]{gap:16px}[data-v-0502bceb] .in-button-v2__wrapper{line-height:0}[data-v-b5997368] .in-segments-wrapper .in-tooltip-wrapper__box{text-align:left}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history-wrapper[data-v-52a77eec]{gap:8px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.guido-loading__wrapper[data-v-dced5582]{height:100%;top:75px}.guido-editor__wrapper[data-v-48a9b534],.guido-editor__container[data-v-48a9b534]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-48a9b534]{height:calc(100vh - 75px)}[data-v-70835920] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-a86fc486]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-a86fc486]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-a86fc486]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-a86fc486]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-a86fc486]{object-fit:cover;transform:scale(1)}[data-v-dd57102d] .guido__verion-history-view-option-selection-desktop svg,[data-v-dd57102d] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-dd57102d] .in-segments-wrapper__button_selected,[data-v-dd57102d] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-7a09985c]{gap:16px}[data-v-c2adc57d] .in-progress-wrapper__progress p span:last-child{display:none!important}.desktop-preview-container[data-v-2dd60b0c],[data-v-2dd60b0c] .desktop-preview-container .in-container{min-height:720px!important;height:100%}.cropped-text[data-v-f20b3a9b]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-v-d3c52b44] .vueperslides__bullets,[data-v-dd1a237a] .vueperslides__bullets{pointer-events:none!important}[data-v-dd1a237a] .vueperslides__parallax-wrapper{height:110px!important}[data-v-a408dcea] .vueperslides__bullets{pointer-events:none!important}[data-v-a408dcea] .vueperslides__parallax-wrapper{height:110px!important}
1
+ .gap-16[data-v-6562e38c],.gap-16[data-v-1ccb6d4a]{gap:16px}[data-v-0502bceb] .in-button-v2__wrapper{line-height:0}[data-v-b5997368] .in-segments-wrapper .in-tooltip-wrapper__box{text-align:left}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history-wrapper[data-v-52a77eec]{gap:8px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.guido-loading__wrapper[data-v-a76c193e]{top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-98181b5a]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-98181b5a]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-98181b5a]{height:calc(100vh - 75px)}[data-v-70835920] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-a86fc486]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-a86fc486]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-a86fc486]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-a86fc486]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-a86fc486]{object-fit:cover;transform:scale(1)}[data-v-dd57102d] .guido__verion-history-view-option-selection-desktop svg,[data-v-dd57102d] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-dd57102d] .in-segments-wrapper__button_selected,[data-v-dd57102d] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-7a09985c]{gap:16px}[data-v-c2adc57d] .in-progress-wrapper__progress p span:last-child{display:none!important}.desktop-preview-container[data-v-2dd60b0c],[data-v-2dd60b0c] .desktop-preview-container .in-container{min-height:720px!important;height:100%}.cropped-text[data-v-f20b3a9b]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-v-d3c52b44] .vueperslides__bullets,[data-v-dd1a237a] .vueperslides__bullets{pointer-events:none!important}[data-v-dd1a237a] .vueperslides__parallax-wrapper{height:110px!important}[data-v-a408dcea] .vueperslides__bullets{pointer-events:none!important}[data-v-a408dcea] .vueperslides__parallax-wrapper{height:110px!important}
@@ -5,6 +5,4 @@ export declare const useActionsApi: () => {
5
5
  getTemplateData: () => Promise<TemplateData>;
6
6
  activateCustomViewStyles: (isActive?: boolean) => void;
7
7
  getPreviewData: (options?: CompileEmailOptions) => Promise<CompiledEmailResult>;
8
- updateTimerInClonedTemplate: () => Promise<string | null>;
9
- updateHtmlAndCss: (html: string, css: string) => void;
10
8
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "1.0.3-beta.bedc181",
3
+ "version": "1.0.3-beta.bee0e85",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",
@@ -1,53 +0,0 @@
1
- import { useActionsApi as f } from "./useActionsApi.js";
2
- import { useHttp as w } from "./useHttp.js";
3
- import { useToaster as H } from "./useToaster.js";
4
- import { useStripoApi as y } from "../services/stripoApi.js";
5
- const O = () => {
6
- const { handleError: c } = H(), { getToken: u } = y(), { post: d } = w(), { updateHtmlAndCss: l } = f(), s = (t) => /esd-timer-id="(\d+)"/.test(t), i = async (t, e) => {
7
- try {
8
- return (await d(
9
- "https://plugins.stripo.email/api/v1/timers/clone",
10
- { html: t },
11
- {
12
- headers: {
13
- "ES-PLUGIN-AUTH": `Bearer ${e}`,
14
- "Content-Type": "application/json"
15
- }
16
- }
17
- )).data.html;
18
- } catch (r) {
19
- return c(r, "Failed to clone timer IDs"), null;
20
- }
21
- };
22
- return {
23
- hasTimerBlocks: s,
24
- cloneTimersInHtml: i,
25
- cloneTimersOnSave: async (t) => {
26
- if (!s(t))
27
- return t;
28
- const e = await u();
29
- return e && await i(t, e) || t;
30
- },
31
- updateTimersOnLoad: async (t) => {
32
- var e, r, o, m;
33
- try {
34
- const n = (r = (e = window.UIEditor) == null ? void 0 : e.getHtml) == null ? void 0 : r.call(e);
35
- if (!n || !s(n))
36
- return;
37
- const p = await t();
38
- if (!p)
39
- return;
40
- const a = await i(n, p);
41
- if (!a || a === n)
42
- return;
43
- const T = ((m = (o = window.UIEditor) == null ? void 0 : o.getCss) == null ? void 0 : m.call(o)) || "";
44
- l(a, T);
45
- } catch (n) {
46
- c(n, "Failed to update timer blocks");
47
- }
48
- }
49
- };
50
- };
51
- export {
52
- O as useTimerClone
53
- };
@@ -1,6 +0,0 @@
1
- export declare const useTimerClone: () => {
2
- hasTimerBlocks: (html: string) => boolean;
3
- cloneTimersInHtml: (html: string, authToken: string) => Promise<string | null>;
4
- cloneTimersOnSave: (html: string) => Promise<string>;
5
- updateTimersOnLoad: (getTokenFn: () => Promise<string>) => Promise<void>;
6
- };