@useinsider/guido 3.19.0-beta.acb00a2 → 3.19.0-beta.b05a465

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 (66) hide show
  1. package/dist/@types/config/schemas.js +104 -91
  2. package/dist/components/Guido.vue.js +8 -8
  3. package/dist/components/Guido.vue2.js +85 -86
  4. package/dist/components/organisms/base/AuthErrorModal.vue.js +18 -0
  5. package/dist/components/organisms/base/AuthErrorModal.vue2.js +42 -0
  6. package/dist/components/organisms/header/EditorActions.vue.js +4 -4
  7. package/dist/components/organisms/header/EditorActions.vue2.js +23 -25
  8. package/dist/components/wrappers/WpModal.vue.js +1 -1
  9. package/dist/components/wrappers/WpModal.vue2.js +4 -3
  10. package/dist/composables/useActionsApi.js +44 -43
  11. package/dist/composables/useAuthError.js +52 -0
  12. package/dist/composables/useAutoSave.js +11 -11
  13. package/dist/composables/useCodeEditorApi.js +23 -9
  14. package/dist/composables/useCortexBlueprintBridge.js +54 -122
  15. package/dist/composables/useEmailTemplateApplier.js +52 -108
  16. package/dist/composables/useHttp.js +64 -54
  17. package/dist/composables/useLegacyStrategyConversion.js +23 -19
  18. package/dist/composables/useStripo.js +24 -20
  19. package/dist/composables/useToaster.js +17 -15
  20. package/dist/composables/useTranslations.js +3 -2
  21. package/dist/composables/useVersionHistoryApi.js +33 -24
  22. package/dist/composables/validators/useLiquidValidator.js +15 -15
  23. package/dist/config/migrator/index.js +14 -13
  24. package/dist/config/migrator/recommendationMigrator.js +28 -21
  25. package/dist/config/migrator/recommendationPartnerMigrator.js +56 -0
  26. package/dist/enums/extensions/recommendationBlock.js +30 -29
  27. package/dist/extensions/Blocks/Recommendation/block.js +15 -14
  28. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +103 -91
  29. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +45 -38
  30. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +72 -49
  31. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +30 -29
  32. package/dist/extensions/Blocks/Recommendation/utils/captureStyleTemplates.js +72 -70
  33. package/dist/extensions/Blocks/Recommendation/utils/compositionKeys.js +69 -60
  34. package/dist/extensions/Blocks/Recommendation/utils/partnerScope.js +25 -0
  35. package/dist/guido.css +1 -1
  36. package/dist/src/@types/config/schemas.d.ts +16 -0
  37. package/dist/src/components/organisms/base/AuthErrorModal.vue.d.ts +2 -0
  38. package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
  39. package/dist/src/composables/useAuthError.d.ts +12 -0
  40. package/dist/src/composables/useConfig.d.ts +2 -0
  41. package/dist/src/composables/useCortexBlueprintBridge.d.ts +3 -2
  42. package/dist/src/composables/useEmailTemplateApplier.d.ts +5 -18
  43. package/dist/src/composables/useGuidoActions.d.ts +2 -0
  44. package/dist/src/composables/useHttp.d.ts +2 -0
  45. package/dist/src/config/migrator/index.d.ts +2 -1
  46. package/dist/src/config/migrator/recommendationPartnerMigrator.d.ts +19 -0
  47. package/dist/src/enums/extensions/recommendationBlock.d.ts +1 -1
  48. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +3 -0
  49. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +6 -0
  50. package/dist/src/extensions/Blocks/Recommendation/utils/compositionKeys.d.ts +4 -0
  51. package/dist/src/extensions/Blocks/Recommendation/utils/partnerScope.d.ts +33 -0
  52. package/dist/src/mock/cortexChatStore.d.ts +12 -0
  53. package/dist/src/stores/config.d.ts +20 -0
  54. package/dist/src/stores/guido-email-editor.d.ts +10 -20
  55. package/dist/src/stores/onboarding.d.ts +4 -0
  56. package/dist/src/stores/recommendation.d.ts +5 -0
  57. package/dist/src/utils/dateUtil.d.ts +10 -0
  58. package/dist/src/utils/genericUtil.d.ts +3 -0
  59. package/dist/src/utils/stripoEditorApi.d.ts +4 -0
  60. package/dist/static/styles/components/recommendation-strategy.css.js +9 -0
  61. package/dist/static/styles/components/version-history.css.js +2 -6
  62. package/dist/stores/guido-email-editor.js +1 -3
  63. package/dist/stores/onboarding.js +4 -0
  64. package/dist/stores/unsubscribe.js +3 -3
  65. package/dist/utils/stripoEditorApi.js +11 -0
  66. package/package.json +2 -1
@@ -1,76 +1,77 @@
1
- import { defineComponent as re, defineAsyncComponent as m, ref as x, computed as p, watch as W, onMounted as se, onUnmounted as ae } from "vue";
2
- import { useCortexBlueprintBridge as ie } from "../composables/useCortexBlueprintBridge.js";
3
- import { useEditorLock as ce } from "../composables/useEditorLock.js";
4
- import { provideGuidoActions as de } from "../composables/useGuidoActions.js";
5
- import { useGuidoStateBridge as me } from "../composables/useGuidoStateBridge.js";
6
- import { usePartner as le } from "../composables/usePartner.js";
7
- import { useStripo as ue } from "../composables/useStripo.js";
8
- import { useTimerClone as pe } from "../composables/useTimerClone.js";
1
+ import { defineComponent as ae, defineAsyncComponent as m, ref as x, computed as u, watch as W, onMounted as se, onUnmounted as ie } from "vue";
2
+ import { useCortexBlueprintBridge as ce } from "../composables/useCortexBlueprintBridge.js";
3
+ import { useEditorLock as de } from "../composables/useEditorLock.js";
4
+ import { provideGuidoActions as me } from "../composables/useGuidoActions.js";
5
+ import { useGuidoStateBridge as le } from "../composables/useGuidoStateBridge.js";
6
+ import { usePartner as ue } from "../composables/usePartner.js";
7
+ import { useStripo as pe } from "../composables/useStripo.js";
8
+ import { useTimerClone as fe } from "../composables/useTimerClone.js";
9
9
  import { migrate as G } from "../config/migrator/index.js";
10
- import { ModuleFolderDefaults as z } from "../enums/defaults.js";
11
- import { RIBBON_SELECTOR as fe } from "../enums/onboarding.js";
12
- import { useRecommendationExtensionStore as E } from "../extensions/Blocks/Recommendation/store/recommendation.js";
13
- import ye from "./organisms/AutoSaveController.vue.js";
14
- import ge from "./organisms/base/Toaster.vue.js";
15
- import ve from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
16
- import Se from "./organisms/header/HeaderWrapper.vue.js";
17
- import he from "./organisms/LoadingWrapper.vue.js";
18
- import be from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
19
- import Ee from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
20
- import { useStripoApi as we } from "../services/stripoApi.js";
21
- import { useConfigStore as Ce } from "../stores/config.js";
22
- import { useDynamicContentStore as De } from "../stores/dynamic-content.js";
23
- import { useEditorStore as w } from "../stores/editor.js";
24
- import { usePreviewStore as ke } from "../stores/preview.js";
25
- import { useTemplateStore as Fe } from "../stores/template.js";
10
+ import { ModuleFolderDefaults as H } from "../enums/defaults.js";
11
+ import { RIBBON_SELECTOR as ye } from "../enums/onboarding.js";
12
+ import { useRecommendationExtensionStore as h } from "../extensions/Blocks/Recommendation/store/recommendation.js";
13
+ import ge from "./organisms/AutoSaveController.vue.js";
14
+ import Se from "./organisms/base/AuthErrorModal.vue.js";
15
+ import ve from "./organisms/base/Toaster.vue.js";
16
+ import be from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
17
+ import he from "./organisms/header/HeaderWrapper.vue.js";
18
+ import Ee from "./organisms/LoadingWrapper.vue.js";
19
+ import we from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
20
+ import Ce from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
21
+ import { useStripoApi as De } from "../services/stripoApi.js";
22
+ import { useConfigStore as ke } from "../stores/config.js";
23
+ import { useDynamicContentStore as Fe } from "../stores/dynamic-content.js";
24
+ import { useEditorStore as $ } from "../stores/editor.js";
25
+ import { usePreviewStore as Me } from "../stores/preview.js";
26
+ import { useTemplateStore as Re } from "../stores/template.js";
26
27
  import { useUnsubscribeStore as Te } from "../stores/unsubscribe.js";
27
- import { readTrackFloor as H } from "../utils/linkTrackingIds.js";
28
- const tt = /* @__PURE__ */ re({
28
+ import { readTrackFloor as z } from "../utils/linkTrackingIds.js";
29
+ const rt = /* @__PURE__ */ ae({
29
30
  __name: "Guido",
30
31
  props: {
31
32
  config: null,
32
33
  ready: { type: Boolean, default: !0 }
33
34
  },
34
35
  emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
35
- setup($, { expose: q, emit: r }) {
36
- const a = $, K = m(
36
+ setup(q, { expose: K, emit: r }) {
37
+ const s = q, V = m(
37
38
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
38
- ), V = m(
39
- () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
40
39
  ), j = m(
41
- () => import("./organisms/extensions/recommendation/AssignStrategyDrawer.vue.js")
40
+ () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
42
41
  ), J = m(
43
- () => import("./organisms/extensions/recommendation/RemoveStrategyModal.vue.js")
42
+ () => import("./organisms/extensions/recommendation/AssignStrategyDrawer.vue.js")
44
43
  ), Q = m(
44
+ () => import("./organisms/extensions/recommendation/RemoveStrategyModal.vue.js")
45
+ ), X = m(
45
46
  () => import("./organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js")
46
- ), C = x(), f = x(), y = De(), D = Te(), o = Ce();
47
- a.ready && o.init(a.config);
48
- const c = w(), X = ke(), l = p(() => c.hasChanges), { isTestPartner: Y } = le(), k = () => {
47
+ ), E = x(), p = x(), f = Fe(), w = Te(), o = ke();
48
+ s.ready && o.init(s.config);
49
+ const c = $(), Y = Me(), l = u(() => c.hasChanges), { isTestPartner: Z } = ue(), C = () => {
49
50
  var t;
50
- return (t = C.value) == null ? void 0 : t.handleSave(!0);
51
- }, F = (t) => {
51
+ return (t = E.value) == null ? void 0 : t.handleSave(!0);
52
+ }, D = (t) => {
52
53
  c.loadingStatus = t;
53
54
  };
54
- ie(), me();
55
- const g = () => {
55
+ ce(), le();
56
+ const y = () => {
56
57
  var t, e;
57
58
  return {
58
59
  emailId: o.templateId,
59
60
  userId: o.userId,
60
61
  username: o.username,
61
62
  partnerName: o.partnerName,
62
- savedModulesFolderName: ((t = o.editor) == null ? void 0 : t.savedModulesFolderName) || z.SAVED_MODULES,
63
- defaultModulesFolderName: ((e = o.editor) == null ? void 0 : e.defaultModulesFolderName) || z.DEFAULT_MODULES
63
+ savedModulesFolderName: ((t = o.editor) == null ? void 0 : t.savedModulesFolderName) || H.SAVED_MODULES,
64
+ defaultModulesFolderName: ((e = o.editor) == null ? void 0 : e.defaultModulesFolderName) || H.DEFAULT_MODULES
64
65
  };
65
- }, { initPlugin: T, preloadRuntime: I } = ue(), { runExclusive: M, beginMount: R, isCurrentMount: v } = ce();
66
- let u = 0;
67
- const { getDefaultTemplate: L } = we(), { cloneTimersOnSave: B, hasTimerBlocks: U } = pe(), Z = p(() => {
66
+ }, { initPlugin: k, preloadRuntime: F } = pe(), { runExclusive: M, beginMount: R, isCurrentMount: T } = de();
67
+ let g = 0;
68
+ const { getDefaultTemplate: I } = De(), { cloneTimersOnSave: L, hasTimerBlocks: U } = fe(), ee = u(() => {
68
69
  var t;
69
70
  return !((t = o.ui) != null && t.showHeader);
70
- }), ee = p(() => o.isFeatureEnabled("reusableRecommendationStrategy")), te = p(
71
- () => !!E().recommendationConfigs.strategyId
71
+ }), te = u(() => o.isFeatureEnabled("reusableRecommendationStrategy")), oe = u(
72
+ () => !!h().recommendationConfigs.strategyId
72
73
  );
73
- de({
74
+ me({
74
75
  onBack: () => {
75
76
  console.debug("guido:back"), r("back");
76
77
  },
@@ -78,7 +79,7 @@ const tt = /* @__PURE__ */ re({
78
79
  console.debug("guido:save:start"), r("save:start");
79
80
  },
80
81
  onSaveComplete: (t) => {
81
- const e = { ...t, metadata: g() };
82
+ const e = { ...t, metadata: y() };
82
83
  console.debug("guido:save:complete", e), r("save:complete", e);
83
84
  },
84
85
  onTestEmailClick: () => {
@@ -86,85 +87,83 @@ const tt = /* @__PURE__ */ re({
86
87
  }
87
88
  });
88
89
  const A = (t) => {
89
- console.debug("dynamic-content:close", t), y.setSelectedDynamicContent(t), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: t }));
90
- }, P = () => {
90
+ console.debug("dynamic-content:close", t), f.setSelectedDynamicContent(t), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: t }));
91
+ }, B = () => {
91
92
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
92
93
  };
93
94
  W(() => l.value, () => {
94
95
  r("on-change", l.value);
95
96
  });
96
97
  const S = (t) => {
97
- const e = t, { attribute: s, position: d } = e.detail;
98
- console.debug("dynamic-content:open", e.detail), r("dynamic-content:open", s, d);
98
+ const e = t, { attribute: a, position: d } = e.detail;
99
+ console.debug("dynamic-content:open", e.detail), r("dynamic-content:open", a, d);
99
100
  };
100
101
  let i = null;
101
- const h = () => {
102
+ const v = () => {
102
103
  var e;
103
- const t = document.querySelector(fe);
104
- (e = f.value) == null || e.style.setProperty("--ribbon-offset", `${(t == null ? void 0 : t.offsetHeight) ?? 0}px`);
104
+ const t = document.querySelector(ye);
105
+ (e = p.value) == null || e.style.setProperty("--ribbon-offset", `${(t == null ? void 0 : t.offsetHeight) ?? 0}px`);
105
106
  }, b = async () => {
106
107
  var t;
107
108
  try {
108
- o.initialized || o.init(a.config), c.templateId = o.templateId;
109
- const e = o.template, s = (e == null ? void 0 : e.html) || "", d = (e == null ? void 0 : e.css) || "", _ = (e == null ? void 0 : e.preselectedDynamicContent) || [];
110
- D.selectedUnsubscribePages = (e == null ? void 0 : e.selectedUnsubscribePages) || [];
111
- const N = ((t = e == null ? void 0 : e.migration) == null ? void 0 : t.recommendationConfigs) ?? {}, O = o.isFeatureEnabled("linkTrackingIds");
109
+ o.initialized || o.init(s.config), c.templateId = o.templateId;
110
+ const e = o.template, a = (e == null ? void 0 : e.html) || "", d = (e == null ? void 0 : e.css) || "", N = (e == null ? void 0 : e.preselectedDynamicContent) || [];
111
+ w.selectedUnsubscribePages = (e == null ? void 0 : e.selectedUnsubscribePages) || [];
112
+ const P = ((t = e == null ? void 0 : e.migration) == null ? void 0 : t.recommendationConfigs) ?? {}, _ = o.isFeatureEnabled("linkTrackingIds"), O = {
113
+ partnerName: o.partnerName,
114
+ campaignUrls: e == null ? void 0 : e.recommendationCampaignUrls,
115
+ rrsEnabled: o.isFeatureEnabled("reusableRecommendationStrategy")
116
+ };
112
117
  let n = {
113
- html: s && await G(s, N),
118
+ html: a && await G(a, P, O),
114
119
  css: d
115
120
  };
116
- n.html || (n = await L(), n.html = await G(n.html, N));
117
- const oe = O ? H(n.html, (e == null ? void 0 : e.trackIdCounter) || 0) : 0;
118
- U(n.html) && (n.html = await B(n.html)), O && (c.trackIdSessionFloor = Math.max(oe, H(n.html)));
119
- const ne = {
120
- preselectedDynamicContentList: _,
121
+ n.html || (n = await I(), n.html = await G(n.html, P, O));
122
+ const ne = _ ? z(n.html, (e == null ? void 0 : e.trackIdCounter) || 0) : 0;
123
+ U(n.html) && (n.html = await L(n.html)), _ && (c.trackIdSessionFloor = Math.max(ne, z(n.html)));
124
+ const re = {
125
+ preselectedDynamicContentList: N,
121
126
  onReady: () => {
122
127
  console.debug("guido:ready"), r("ready");
123
128
  }
124
129
  };
125
- u = R(), await T(n, g(), ne), y.selectedDynamicContentList = _;
130
+ g = R(), await k(n, y(), re), f.selectedDynamicContentList = N;
126
131
  } catch (e) {
127
132
  console.error("Failed to initialize Stripo editor:", e);
128
133
  }
129
134
  };
130
135
  return se(async () => {
131
136
  var e;
132
- console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), E().$reset(), w().$reset(), Fe().$reset(), h();
133
- const t = (e = f.value) == null ? void 0 : e.parentElement;
134
- if (t && (i = new ResizeObserver(h), i.observe(t)), I(), a.ready)
137
+ console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), h().$reset(), $().$reset(), Re().$reset(), v();
138
+ const t = (e = p.value) == null ? void 0 : e.parentElement;
139
+ if (t && (i = new ResizeObserver(v), i.observe(t)), F(), s.ready)
135
140
  await b();
136
141
  else {
137
- const s = W(() => a.ready, (d) => {
138
- d && (s(), b());
142
+ const a = W(() => s.ready, (d) => {
143
+ d && (a(), b());
139
144
  });
140
145
  }
141
146
  document.addEventListener("dynamic-content:open", S);
142
- }), ae(() => {
143
- if (i == null || i.disconnect(), document.removeEventListener("dynamic-content:open", S), E().disposeStrategyPageReturn(), v(u))
144
- try {
145
- w().isStripoInitialized = !1;
146
- } catch (t) {
147
- console.debug("Failed to close the editor readiness gate on unmount", t);
148
- }
149
- M(async () => {
150
- if (v(u))
147
+ }), ie(() => {
148
+ i == null || i.disconnect(), document.removeEventListener("dynamic-content:open", S), h().disposeStrategyPageReturn(), M(async () => {
149
+ if (T(g))
151
150
  try {
152
151
  window.UIEditor.removeEditor();
153
152
  } catch {
154
153
  console.debug("Failed to remove Stripo editor: No editor found");
155
154
  }
156
155
  }), o.reset();
157
- }), q({
156
+ }), K({
158
157
  dynamicContent: {
159
158
  insert: A,
160
- close: P
159
+ close: B
161
160
  },
162
161
  hasChanges: l,
163
- saveSilent: k,
164
- setLoading: F
165
- }), { __sfc: !0, PreviewContainer: K, OnboardingWrapper: V, AssignStrategyDrawer: j, RemoveStrategyModal: J, LegacyStrategyUpdatedModal: Q, headerWrapperRef: C, wrapperRef: f, dynamicContentStore: y, unsubscribeStore: D, props: a, configStore: o, editorStore: c, previewStore: X, hasChanges: l, isTestPartner: Y, saveSilent: k, setLoading: F, emit: r, buildMetadata: g, initPlugin: T, preloadRuntime: I, runExclusive: M, beginMount: R, isCurrentMount: v, mountGeneration: u, getDefaultTemplate: L, cloneTimersOnSave: B, hasTimerBlocks: U, noHeader: Z, isRrsEnabled: ee, hasAssignedStrategy: te, insertDynamicContent: A, closeDynamicContent: P, handleDynamicContentOpen: S, ribbonObserver: i, updateRibbonOffset: h, startEditor: b, AutoSaveController: ye, Toaster: ge, FilterSelectionDrawer: ve, HeaderWrapper: Se, LoadingWrapper: he, SaveAsTemplateDrawer: be, UnsubscribeWrapper: Ee };
162
+ saveSilent: C,
163
+ setLoading: D
164
+ }), { __sfc: !0, PreviewContainer: V, OnboardingWrapper: j, AssignStrategyDrawer: J, RemoveStrategyModal: Q, LegacyStrategyUpdatedModal: X, headerWrapperRef: E, wrapperRef: p, dynamicContentStore: f, unsubscribeStore: w, props: s, configStore: o, editorStore: c, previewStore: Y, hasChanges: l, isTestPartner: Z, saveSilent: C, setLoading: D, emit: r, buildMetadata: y, initPlugin: k, preloadRuntime: F, runExclusive: M, beginMount: R, isCurrentMount: T, mountGeneration: g, getDefaultTemplate: I, cloneTimersOnSave: L, hasTimerBlocks: U, noHeader: ee, isRrsEnabled: te, hasAssignedStrategy: oe, insertDynamicContent: A, closeDynamicContent: B, handleDynamicContentOpen: S, ribbonObserver: i, updateRibbonOffset: v, startEditor: b, AutoSaveController: ge, AuthErrorModal: Se, Toaster: ve, FilterSelectionDrawer: be, HeaderWrapper: he, LoadingWrapper: Ee, SaveAsTemplateDrawer: we, UnsubscribeWrapper: Ce };
166
165
  }
167
166
  });
168
167
  export {
169
- tt as default
168
+ rt as default
170
169
  };
@@ -0,0 +1,18 @@
1
+ import e from "./AuthErrorModal.vue2.js";
2
+ /* empty css */
3
+ import s from "../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var a = function() {
5
+ var o = this, r = o._self._c, t = o._self._setupProxy;
6
+ return t.authError ? r("div", { staticClass: "auth-error-modal" }, [r(t.WpModal, { attrs: { id: "guido__auth-error-modal", state: "warning", "close-button-status": !1, "close-on-outside-click": !1, "footer-button-options": t.footerButtonOptions, title: t.title }, on: { close: t.dismiss, "primary-action": t.recover } }, [r("p", [o._v(o._s(t.message))])])], 1) : o._e();
7
+ }, n = [], i = /* @__PURE__ */ s(
8
+ e,
9
+ a,
10
+ n,
11
+ !1,
12
+ null,
13
+ "b4d7ae51"
14
+ );
15
+ const m = i.exports;
16
+ export {
17
+ m as default
18
+ };
@@ -0,0 +1,42 @@
1
+ import { defineComponent as c, computed as n } from "vue";
2
+ import p from "../../wrappers/WpModal.vue.js";
3
+ import { useAuthError as d } from "../../../composables/useAuthError.js";
4
+ import { useTranslations as m } from "../../../composables/useTranslations.js";
5
+ const _ = /* @__PURE__ */ c({
6
+ __name: "AuthErrorModal",
7
+ setup(v) {
8
+ const e = m(), { authError: t } = d(), r = n(() => {
9
+ var o;
10
+ return ((o = t.value) == null ? void 0 : o.status) === 419 && t.value.data !== null;
11
+ }), s = n(() => {
12
+ var o;
13
+ return ((o = t.value) == null ? void 0 : o.status) === 419 && t.value.data === null;
14
+ }), i = n(() => r.value ? e("integration-hub.reload-this-page") : e("action-builder.session-expired")), u = n(() => r.value ? e("auth.error-occurred-refresh") : s.value ? e("settings.session-on-another-device") : e("journey-builder.login-session-expired")), l = n(() => ({
15
+ primaryButton: {
16
+ type: "primary",
17
+ labelText: r.value ? e("integration-hub.reload") : e("journey-builder.login-popup-button")
18
+ },
19
+ cancelOrBackButton: {
20
+ type: "secondary",
21
+ styling: "ghost",
22
+ labelText: e("settings.cancel")
23
+ }
24
+ })), a = () => {
25
+ if (r.value) {
26
+ window.location.reload();
27
+ return;
28
+ }
29
+ window.location.replace("/");
30
+ };
31
+ return { __sfc: !0, trans: e, authError: t, isPageExpired: r, isTakenOver: s, title: i, message: u, footerButtonOptions: l, recover: a, dismiss: () => {
32
+ if (r.value) {
33
+ t.value = null;
34
+ return;
35
+ }
36
+ a();
37
+ }, WpModal: p };
38
+ }
39
+ });
40
+ export {
41
+ _ as default
42
+ };
@@ -9,15 +9,15 @@ var u = function() {
9
9
  } } }), e(t.MigrationConfirmModal, { ref: "migrationModalRef", on: { confirm: function(r) {
10
10
  return t.executeSave(!1);
11
11
  } } })], 1);
12
- }, p = [], c = /* @__PURE__ */ d(
12
+ }, c = [], p = /* @__PURE__ */ d(
13
13
  l,
14
14
  u,
15
- p,
15
+ c,
16
16
  !1,
17
17
  null,
18
- "1ca6baf0"
18
+ "c61cc8ea"
19
19
  );
20
- const v = c.exports;
20
+ const v = p.exports;
21
21
  export {
22
22
  v as default
23
23
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent as q, ref as l, computed as w } from "vue";
1
+ import { defineComponent as q, ref as n, computed as x } from "vue";
2
2
  import { useActionsApi as b } from "../../../composables/useActionsApi.js";
3
3
  import { useConfig as k } from "../../../composables/useConfig.js";
4
4
  import { useExport as B } from "../../../composables/useExport.js";
@@ -17,48 +17,46 @@ import { storeToRefs as Q } from "pinia";
17
17
  import U from "./MigrationConfirmModal.vue.js";
18
18
  const ft = /* @__PURE__ */ q({
19
19
  __name: "EditorActions",
20
- setup(W, { expose: x }) {
21
- const { config: m, isFeatureEnabled: c } = k(), { exportHtml: p } = B(), { save: u } = R(), { openVersionHistory: f, closeVersionHistory: d } = P(), { getCompiledEmail: v } = b(), { compileHtml: y } = L(), { validateLiquidSyntax: g } = j(), { handleError: r } = z(), e = G(), h = J(), { hasMigrations: H } = Q(h), s = I(), i = l(!1), a = l(!1), S = l(), V = D(), _ = () => {
20
+ setup(W, { expose: w }) {
21
+ const { config: l, isFeatureEnabled: m } = k(), { exportHtml: c } = B(), { save: p } = R(), { openVersionHistory: u, closeVersionHistory: f } = P(), { getCompiledEmail: d } = b(), { compileHtml: v } = L(), { validateLiquidSyntax: y } = j(), { handleError: r } = z(), e = G(), g = J(), { hasMigrations: S } = Q(g), s = I(), i = n(!1), a = n(!1), H = n(), h = D(), _ = () => {
22
22
  if (e.isVersionHistoryOpen) {
23
- d();
23
+ f();
24
24
  return;
25
25
  }
26
- f();
26
+ u();
27
27
  }, C = async () => {
28
- i.value = !0, await p(), i.value = !1;
28
+ i.value = !0, await c(), i.value = !1;
29
29
  }, A = () => {
30
30
  e.isSaveAsTemplateDrawerOpen = !0;
31
- }, M = w(() => e.isVersionHistoryOpen ? s("newsletter.close-version-history") : s("newsletter.version-history")), O = w(
31
+ }, M = x(() => e.isVersionHistoryOpen ? s("newsletter.close-version-history") : s("newsletter.version-history")), O = x(
32
32
  () => {
33
33
  var t, o;
34
- return ((o = (t = m.value) == null ? void 0 : t.features) == null ? void 0 : o.versionHistory) && !e.isPreviewModeOpen;
34
+ return ((o = (t = l.value) == null ? void 0 : t.features) == null ? void 0 : o.versionHistory) && !e.isPreviewModeOpen;
35
35
  }
36
- ), E = async (t) => {
36
+ ), V = async (t) => {
37
37
  a.value = !0, t || (e.loadingStatus = !0);
38
38
  let o;
39
39
  try {
40
- o = await u(t);
41
- } catch (n) {
42
- if (t)
43
- throw n;
44
- r(n, "Failed to save template");
40
+ o = await p(t);
41
+ } catch (T) {
42
+ r(T, "Failed to save template");
45
43
  } finally {
46
44
  a.value = !1, !t && !o && (e.loadingStatus = !1);
47
45
  }
48
46
  return o;
49
- }, T = (t) => {
47
+ }, E = (t) => {
50
48
  var o;
51
- if (!t && H.value) {
52
- (o = S.value) == null || o.open();
49
+ if (!t && S.value) {
50
+ (o = H.value) == null || o.open();
53
51
  return;
54
52
  }
55
- return E(t);
53
+ return V(t);
56
54
  }, F = async () => {
57
- if (c("liquidSyntax")) {
55
+ if (m("liquidSyntax")) {
58
56
  e.loadingStatus = !0;
59
57
  try {
60
- const { html: t } = await v({ minimize: !0, resetDataSavedFlag: !1 }), { compiledHtml: o } = y(t);
61
- if (!await g(o))
58
+ const { html: t } = await d({ minimize: !0, resetDataSavedFlag: !1 }), { compiledHtml: o } = v(t);
59
+ if (!await y(o))
62
60
  return;
63
61
  } catch (t) {
64
62
  r(t, "Failed to prepare test email");
@@ -67,11 +65,11 @@ const ft = /* @__PURE__ */ q({
67
65
  e.loadingStatus = !1;
68
66
  }
69
67
  }
70
- V();
68
+ h();
71
69
  };
72
- return x({
73
- handleSave: T
74
- }), { __sfc: !0, config: m, isFeatureEnabled: c, exportHtml: p, save: u, openVersionHistory: f, closeVersionHistory: d, getCompiledEmail: v, compileHtml: y, validateLiquidSyntax: g, handleError: r, editorStore: e, templateStore: h, hasMigrations: H, trans: s, isExporting: i, isSaving: a, migrationModalRef: S, testEmailClick: V, handleVersionHistory: _, handleExport: C, handleSaveAs: A, versionHistoryTooltipText: M, isVersionHistoryButtonVisible: O, executeSave: E, handleSave: T, handleTestEmail: F, getTooltipOptions: K, InButtonV2: N, MigrationConfirmModal: U };
70
+ return w({
71
+ handleSave: E
72
+ }), { __sfc: !0, config: l, isFeatureEnabled: m, exportHtml: c, save: p, openVersionHistory: u, closeVersionHistory: f, getCompiledEmail: d, compileHtml: v, validateLiquidSyntax: y, handleError: r, editorStore: e, templateStore: g, hasMigrations: S, trans: s, isExporting: i, isSaving: a, migrationModalRef: H, testEmailClick: h, handleVersionHistory: _, handleExport: C, handleSaveAs: A, versionHistoryTooltipText: M, isVersionHistoryButtonVisible: O, executeSave: V, handleSave: E, handleTestEmail: F, getTooltipOptions: K, InButtonV2: N, MigrationConfirmModal: U };
75
73
  }
76
74
  });
77
75
  export {
@@ -2,7 +2,7 @@ import r from "./WpModal.vue2.js";
2
2
  import s from "../../_virtual/_plugin-vue2_normalizer.js";
3
3
  var i = function() {
4
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) {
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, state: t.state, "title-text": t.title }, on: { cancelOrBackButtonEvent: function(n) {
6
6
  return e.emit("close");
7
7
  }, onCloseEvent: function(n) {
8
8
  return e.emit("close");
@@ -1,11 +1,12 @@
1
1
  import { defineComponent as e } from "vue";
2
2
  import { InModalV2 as o } from "@useinsider/design-system-vue";
3
- const u = /* @__PURE__ */ e({
3
+ const n = /* @__PURE__ */ e({
4
4
  __name: "WpModal",
5
5
  props: {
6
6
  id: null,
7
7
  title: null,
8
8
  description: { default: "" },
9
+ state: { default: "default" },
9
10
  size: { default: "small" },
10
11
  footerButtonOptions: { default: void 0 },
11
12
  closeButtonStatus: { type: Boolean, default: !0 },
@@ -13,10 +14,10 @@ const u = /* @__PURE__ */ e({
13
14
  footerStatus: { type: Boolean, default: !0 }
14
15
  },
15
16
  emits: ["close", "primary-action", "secondary-action"],
16
- setup(l, { emit: t }) {
17
+ setup(a, { emit: t }) {
17
18
  return { __sfc: !0, emit: t, InModalV2: o };
18
19
  }
19
20
  });
20
21
  export {
21
- u as default
22
+ n as default
22
23
  };
@@ -1,22 +1,23 @@
1
- import { filterAmpErrors as v } from "../utils/ampErrorFilter.js";
2
- import { useToaster as y } from "./useToaster.js";
3
- const D = 1e4, T = 3e4, p = (n, l, w) => new Promise((A, s) => {
4
- const c = setTimeout(
5
- () => s(new Error(`${n} did not report completion within ${l}ms`)),
1
+ import { filterAmpErrors as y } from "../utils/ampErrorFilter.js";
2
+ import { getEditorApi as s } from "../utils/stripoEditorApi.js";
3
+ import { useToaster as D } from "./useToaster.js";
4
+ const h = 1e4, T = 3e4, r = (n, l, A) => new Promise((C, p) => {
5
+ const f = setTimeout(
6
+ () => p(new Error(`${n} did not report completion within ${l}ms`)),
6
7
  l
7
- ), d = (r) => (t) => {
8
- clearTimeout(c), r(t);
9
- };
8
+ ), c = (t) => (e) => {
9
+ clearTimeout(f), t(e);
10
+ }, d = c(p);
10
11
  try {
11
- w(d(A), d(s));
12
- } catch (r) {
13
- clearTimeout(c), s(r instanceof Error ? r : new Error(String(r)));
12
+ A(c(C), d);
13
+ } catch (t) {
14
+ d(t);
14
15
  }
15
- }), I = () => {
16
- const { handleError: n } = y(), l = (t = {}) => p(
16
+ }), P = () => {
17
+ const { handleError: n } = D(), l = (t = {}) => r(
17
18
  "compileEmail",
18
19
  T,
19
- (e, a) => {
20
+ (e, i) => {
20
21
  const o = { ...{
21
22
  minimize: !0,
22
23
  utmEntity: {
@@ -37,52 +38,52 @@ const D = 1e4, T = 3e4, p = (n, l, w) => new Promise((A, s) => {
37
38
  resetDataSavedFlag: !1,
38
39
  disableLineHeightsReplace: !0
39
40
  }, ...t }, u = {
40
- callback: (m, C, f, S, g) => {
41
- m ? a(m) : e({
42
- html: C,
43
- ampHtml: f,
44
- ampErrors: v(S ?? []),
45
- displayConditions: g
41
+ callback: (m, g, w, S, v) => {
42
+ m ? i(m) : e({
43
+ html: g,
44
+ ampHtml: w,
45
+ ampErrors: y(S ?? []),
46
+ displayConditions: v
46
47
  });
47
48
  },
48
49
  ...o
49
50
  };
50
- window.StripoEditorApi.actionsApi.compileEmail(u);
51
+ s().actionsApi.compileEmail(u);
51
52
  }
52
53
  );
53
54
  return {
54
55
  getCompiledEmail: l,
55
- getTemplateData: () => p(
56
+ getTemplateData: () => r(
56
57
  "getTemplateData",
57
58
  T,
58
59
  (t) => {
59
- const e = ({ html: a, css: i, width: o, height: E, utmParams: u, syncModulesIds: m }) => t({
60
- html: a,
61
- css: i,
60
+ const e = ({ html: i, css: a, width: o, height: E, utmParams: u, syncModulesIds: m }) => t({
61
+ html: i,
62
+ css: a,
62
63
  width: o,
63
64
  height: E,
64
65
  utmParams: u,
65
66
  syncModulesIds: m
66
67
  });
67
- window.StripoEditorApi.actionsApi.getTemplateData(e);
68
+ s().actionsApi.getTemplateData(e);
68
69
  }
69
70
  ),
70
71
  activateCustomViewStyles: (t = !0) => {
71
- window.StripoEditorApi.actionsApi.activateCustomViewStyles(t);
72
+ s().actionsApi.activateCustomViewStyles(t);
72
73
  },
73
74
  getPreviewData: async (t) => {
74
75
  try {
75
76
  const {
76
77
  html: e,
77
- displayConditions: a,
78
- ampHtml: i = "",
78
+ displayConditions: i,
79
+ ampHtml: a = "",
79
80
  ampErrors: o = []
80
81
  } = await l({ minimize: !1, resetDataSavedFlag: !1, ...t });
81
82
  return {
82
83
  html: e,
83
- ampHtml: i,
84
+ ampHtml: a,
84
85
  ampErrors: o,
85
- displayConditions: a
86
+ displayConditions: i
86
87
  };
87
88
  } catch (e) {
88
89
  return n(e, "Error loading preview"), {
@@ -94,30 +95,30 @@ const D = 1e4, T = 3e4, p = (n, l, w) => new Promise((A, s) => {
94
95
  }
95
96
  },
96
97
  updateTimerInClonedTemplate: () => new Promise((t) => {
97
- var e, a;
98
- if (typeof ((a = (e = window.StripoEditorApi) == null ? void 0 : e.actionsApi) == null ? void 0 : a.updateTimerInClonedTemplate) != "function") {
98
+ var e, i;
99
+ if (typeof ((i = (e = window.StripoEditorApi) == null ? void 0 : e.actionsApi) == null ? void 0 : i.updateTimerInClonedTemplate) != "function") {
99
100
  t(null);
100
101
  return;
101
102
  }
102
103
  try {
103
- window.StripoEditorApi.actionsApi.updateTimerInClonedTemplate((i, o) => {
104
- i ? (n(i, "Failed to update timer in cloned template"), t(null)) : t(o || null);
104
+ window.StripoEditorApi.actionsApi.updateTimerInClonedTemplate((a, o) => {
105
+ a ? (n(a, "Failed to update timer in cloned template"), t(null)) : t(o || null);
105
106
  });
106
- } catch (i) {
107
- n(i, "Failed to call updateTimerInClonedTemplate"), t(null);
107
+ } catch (a) {
108
+ n(a, "Failed to call updateTimerInClonedTemplate"), t(null);
108
109
  }
109
110
  }),
110
111
  updateHtmlAndCss: (t, e) => {
111
- const { actionsApi: a } = window.StripoEditorApi;
112
- return p("updateHtmlAndCss", D, (i) => {
113
- a.updateHtmlAndCss(t, e, () => i());
112
+ const { actionsApi: i } = s();
113
+ return r("updateHtmlAndCss", h, (a) => {
114
+ i.updateHtmlAndCss(t, e, () => a());
114
115
  });
115
116
  },
116
- editorSave: () => p(
117
+ editorSave: () => r(
117
118
  "save",
118
119
  T,
119
120
  (t) => {
120
- window.StripoEditorApi.actionsApi.save((e) => {
121
+ s().actionsApi.save((e) => {
121
122
  if (e) {
122
123
  n(e, "Failed to save template"), t(!1);
123
124
  return;
@@ -129,5 +130,5 @@ const D = 1e4, T = 3e4, p = (n, l, w) => new Promise((A, s) => {
129
130
  };
130
131
  };
131
132
  export {
132
- I as useActionsApi
133
+ P as useActionsApi
133
134
  };