@useinsider/guido 3.19.0-beta.892c3ca → 3.19.0-beta.9fe04f1
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 +0 -1
- package/dist/@types/config/schemas.js +118 -107
- package/dist/components/Guido.vue.js +9 -9
- package/dist/components/Guido.vue2.js +77 -69
- package/dist/components/organisms/AutoSaveController.vue2.js +8 -9
- package/dist/components/organisms/base/AuthErrorModal.vue.js +18 -0
- package/dist/components/organisms/base/AuthErrorModal.vue2.js +42 -0
- package/dist/components/organisms/header/EditorActions.vue.js +2 -2
- package/dist/components/organisms/header/EditorActions.vue2.js +55 -90
- package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
- package/dist/components/organisms/header/LeftSlot.vue2.js +12 -16
- package/dist/components/wrappers/WpDrawer.vue.js +7 -9
- package/dist/components/wrappers/WpDrawer.vue2.js +1 -1
- package/dist/components/wrappers/WpModal.vue.js +1 -1
- package/dist/components/wrappers/WpModal.vue2.js +4 -3
- package/dist/composables/useAuthError.js +52 -0
- package/dist/composables/useCortexBlueprintBridge.js +122 -54
- package/dist/composables/useEmailTemplateApplier.js +106 -50
- package/dist/composables/useHtmlCompiler.js +26 -37
- package/dist/composables/useHtmlValidator.js +0 -2
- package/dist/composables/useHttp.js +64 -54
- package/dist/composables/useLegacyStrategyConversion.js +23 -19
- package/dist/composables/useSave.js +45 -90
- package/dist/composables/useStripo.js +24 -20
- package/dist/composables/useToaster.js +17 -15
- package/dist/composables/validators/useCouponBlockValidator.js +21 -24
- package/dist/composables/validators/useLiquidValidator.js +15 -15
- package/dist/composables/validators/useUnsubscribeBlockValidator.js +27 -34
- package/dist/config/migrator/index.js +14 -13
- package/dist/config/migrator/recommendationPartnerMigrator.js +50 -0
- package/dist/enums/extensions/recommendationBlock.js +30 -29
- package/dist/extensions/Blocks/Recommendation/block.js +15 -14
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +45 -38
- package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +72 -49
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +30 -29
- package/dist/extensions/Blocks/Recommendation/utils/partnerScope.js +25 -0
- package/dist/guido.css +1 -1
- package/dist/src/@types/config/schemas.d.ts +16 -4
- package/dist/src/components/Guido.vue.d.ts +1 -17
- package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -17
- package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -17
- package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -17
- package/dist/src/components/wrappers/WpDrawer.vue.d.ts +3 -4
- package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
- package/dist/src/composables/useAuthError.d.ts +12 -0
- package/dist/src/composables/useConfig.d.ts +2 -2
- package/dist/src/composables/useCortexBlueprintBridge.d.ts +2 -3
- package/dist/src/composables/useEmailTemplateApplier.d.ts +18 -5
- package/dist/src/composables/useHtmlValidator.d.ts +0 -21
- package/dist/src/composables/useHttp.d.ts +2 -0
- package/dist/src/composables/useSave.d.ts +1 -6
- package/dist/src/composables/validators/useCouponBlockValidator.d.ts +0 -3
- package/dist/src/composables/validators/useUnsubscribeBlockValidator.d.ts +0 -10
- package/dist/src/config/migrator/index.d.ts +2 -1
- package/dist/src/config/migrator/recommendationPartnerMigrator.d.ts +19 -0
- package/dist/src/enums/extensions/recommendationBlock.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +6 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/partnerScope.d.ts +33 -0
- package/dist/src/stores/config.d.ts +20 -32
- package/dist/src/stores/guido-email-editor.d.ts +20 -10
- package/dist/src/utils/templatePreparation.d.ts +0 -30
- package/dist/static/styles/components/recommendation-strategy.css.js +9 -0
- package/dist/stores/config.js +67 -84
- package/dist/stores/guido-email-editor.js +3 -1
- package/dist/utils/templatePreparation.js +36 -39
- package/package.json +1 -1
- package/dist/components/organisms/validation/ValidationErrorDrawer.vue.js +0 -20
- package/dist/components/organisms/validation/ValidationErrorDrawer.vue2.js +0 -49
- package/dist/composables/useSaveValidation.js +0 -282
- package/dist/composables/useSaveValidationRollout.js +0 -9
- package/dist/enums/save-validation.js +0 -4
- package/dist/src/@types/save-validation.d.ts +0 -19
- package/dist/src/composables/useSaveValidation.d.ts +0 -6
- package/dist/src/composables/useSaveValidationRollout.d.ts +0 -3
- package/dist/src/enums/save-validation.d.ts +0 -27
- package/dist/src/stores/save-validation.d.ts +0 -22
- package/dist/stores/save-validation.js +0 -30
- /package/dist/src/components/organisms/{validation/ValidationErrorDrawer.vue.d.ts → base/AuthErrorModal.vue.d.ts} +0 -0
|
@@ -1,77 +1,75 @@
|
|
|
1
|
-
import { defineComponent as ae, defineAsyncComponent as m, ref as
|
|
1
|
+
import { defineComponent as ae, defineAsyncComponent as m, ref as W, computed as p, watch as G, onMounted as se, onUnmounted as ie } from "vue";
|
|
2
2
|
import { useCortexBlueprintBridge as ce } from "../composables/useCortexBlueprintBridge.js";
|
|
3
3
|
import { useEditorLock as de } from "../composables/useEditorLock.js";
|
|
4
4
|
import { provideGuidoActions as me } from "../composables/useGuidoActions.js";
|
|
5
5
|
import { useGuidoStateBridge as le } from "../composables/useGuidoStateBridge.js";
|
|
6
6
|
import { usePartner as ue } from "../composables/usePartner.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
7
|
+
import { useStripo as pe } from "../composables/useStripo.js";
|
|
8
|
+
import { useTimerClone as fe } from "../composables/useTimerClone.js";
|
|
9
|
+
import { migrate as z } from "../config/migrator/index.js";
|
|
10
|
+
import { ModuleFolderDefaults as H } from "../enums/defaults.js";
|
|
11
|
+
import { RIBBON_SELECTOR as ye } from "../enums/onboarding.js";
|
|
12
|
+
import { useRecommendationExtensionStore as E } 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
16
|
import be from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
17
17
|
import he from "./organisms/header/HeaderWrapper.vue.js";
|
|
18
18
|
import Ee from "./organisms/LoadingWrapper.vue.js";
|
|
19
19
|
import we from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
20
20
|
import Ce from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
21
|
-
import De from "
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import { useTemplateStore as Ie } from "../stores/template.js";
|
|
29
|
-
import { useUnsubscribeStore as Le } from "../stores/unsubscribe.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 w } from "../stores/editor.js";
|
|
25
|
+
import { usePreviewStore as Me } from "../stores/preview.js";
|
|
26
|
+
import { useTemplateStore as Re } from "../stores/template.js";
|
|
27
|
+
import { useUnsubscribeStore as Te } from "../stores/unsubscribe.js";
|
|
30
28
|
import { readTrackFloor as $ } from "../utils/linkTrackingIds.js";
|
|
31
|
-
const
|
|
29
|
+
const rt = /* @__PURE__ */ ae({
|
|
32
30
|
__name: "Guido",
|
|
33
31
|
props: {
|
|
34
32
|
config: null,
|
|
35
33
|
ready: { type: Boolean, default: !0 }
|
|
36
34
|
},
|
|
37
35
|
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
38
|
-
setup(
|
|
39
|
-
const s =
|
|
36
|
+
setup(q, { expose: K, emit: r }) {
|
|
37
|
+
const s = q, V = m(
|
|
40
38
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
41
|
-
), K = m(
|
|
42
|
-
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
43
39
|
), j = m(
|
|
44
|
-
() => import("./organisms/
|
|
40
|
+
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
45
41
|
), J = m(
|
|
46
|
-
() => import("./organisms/extensions/recommendation/
|
|
42
|
+
() => import("./organisms/extensions/recommendation/AssignStrategyDrawer.vue.js")
|
|
47
43
|
), Q = m(
|
|
44
|
+
() => import("./organisms/extensions/recommendation/RemoveStrategyModal.vue.js")
|
|
45
|
+
), X = m(
|
|
48
46
|
() => import("./organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js")
|
|
49
|
-
),
|
|
47
|
+
), C = W(), f = W(), y = Fe(), D = Te(), o = ke();
|
|
50
48
|
s.ready && o.init(s.config);
|
|
51
|
-
const c =
|
|
49
|
+
const c = w(), Y = Me(), l = p(() => c.hasChanges), { isTestPartner: Z } = ue(), k = () => {
|
|
52
50
|
var t;
|
|
53
|
-
return (t =
|
|
54
|
-
},
|
|
51
|
+
return (t = C.value) == null ? void 0 : t.handleSave(!0);
|
|
52
|
+
}, F = (t) => {
|
|
55
53
|
c.loadingStatus = t;
|
|
56
54
|
};
|
|
57
55
|
ce(), le();
|
|
58
|
-
const
|
|
56
|
+
const g = () => {
|
|
59
57
|
var t, e;
|
|
60
58
|
return {
|
|
61
59
|
emailId: o.templateId,
|
|
62
60
|
userId: o.userId,
|
|
63
61
|
username: o.username,
|
|
64
62
|
partnerName: o.partnerName,
|
|
65
|
-
savedModulesFolderName: ((t = o.editor) == null ? void 0 : t.savedModulesFolderName) ||
|
|
66
|
-
defaultModulesFolderName: ((e = o.editor) == null ? void 0 : e.defaultModulesFolderName) ||
|
|
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
|
|
67
65
|
};
|
|
68
|
-
}, { initPlugin:
|
|
69
|
-
let
|
|
70
|
-
const { getDefaultTemplate:
|
|
66
|
+
}, { initPlugin: M, preloadRuntime: R } = pe(), { runExclusive: T, beginMount: I, isCurrentMount: S } = de();
|
|
67
|
+
let u = 0;
|
|
68
|
+
const { getDefaultTemplate: L } = De(), { cloneTimersOnSave: U, hasTimerBlocks: A } = fe(), ee = p(() => {
|
|
71
69
|
var t;
|
|
72
70
|
return !((t = o.ui) != null && t.showHeader);
|
|
73
|
-
}), te =
|
|
74
|
-
() => !!
|
|
71
|
+
}), te = p(() => o.isFeatureEnabled("reusableRecommendationStrategy")), oe = p(
|
|
72
|
+
() => !!E().recommendationConfigs.strategyId
|
|
75
73
|
);
|
|
76
74
|
me({
|
|
77
75
|
onBack: () => {
|
|
@@ -81,19 +79,19 @@ const ct = /* @__PURE__ */ ae({
|
|
|
81
79
|
console.debug("guido:save:start"), r("save:start");
|
|
82
80
|
},
|
|
83
81
|
onSaveComplete: (t) => {
|
|
84
|
-
const e = { ...t, metadata:
|
|
82
|
+
const e = { ...t, metadata: g() };
|
|
85
83
|
console.debug("guido:save:complete", e), r("save:complete", e);
|
|
86
84
|
},
|
|
87
85
|
onTestEmailClick: () => {
|
|
88
86
|
console.debug("guido:test-email:click"), r("test-email:click");
|
|
89
87
|
}
|
|
90
88
|
});
|
|
91
|
-
const
|
|
92
|
-
console.debug("dynamic-content:close", t),
|
|
93
|
-
},
|
|
89
|
+
const B = (t) => {
|
|
90
|
+
console.debug("dynamic-content:close", t), y.setSelectedDynamicContent(t), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: t }));
|
|
91
|
+
}, N = () => {
|
|
94
92
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
95
93
|
};
|
|
96
|
-
|
|
94
|
+
G(() => l.value, () => {
|
|
97
95
|
r("on-change", l.value);
|
|
98
96
|
});
|
|
99
97
|
const v = (t) => {
|
|
@@ -101,67 +99,77 @@ const ct = /* @__PURE__ */ ae({
|
|
|
101
99
|
console.debug("dynamic-content:open", e.detail), r("dynamic-content:open", a, d);
|
|
102
100
|
};
|
|
103
101
|
let i = null;
|
|
104
|
-
const
|
|
102
|
+
const b = () => {
|
|
105
103
|
var e;
|
|
106
|
-
const t = document.querySelector(
|
|
107
|
-
(e =
|
|
108
|
-
},
|
|
104
|
+
const t = document.querySelector(ye);
|
|
105
|
+
(e = f.value) == null || e.style.setProperty("--ribbon-offset", `${(t == null ? void 0 : t.offsetHeight) ?? 0}px`);
|
|
106
|
+
}, h = async () => {
|
|
109
107
|
var t;
|
|
110
108
|
try {
|
|
111
109
|
o.initialized || o.init(s.config), c.templateId = o.templateId;
|
|
112
110
|
const e = o.template, a = (e == null ? void 0 : e.html) || "", d = (e == null ? void 0 : e.css) || "", P = (e == null ? void 0 : e.preselectedDynamicContent) || [];
|
|
113
|
-
|
|
114
|
-
const _ = ((t = e == null ? void 0 : e.migration) == null ? void 0 : t.recommendationConfigs) ?? {},
|
|
111
|
+
D.selectedUnsubscribePages = (e == null ? void 0 : e.selectedUnsubscribePages) || [];
|
|
112
|
+
const _ = ((t = e == null ? void 0 : e.migration) == null ? void 0 : t.recommendationConfigs) ?? {}, O = o.isFeatureEnabled("linkTrackingIds"), x = {
|
|
113
|
+
partnerName: o.partnerName,
|
|
114
|
+
campaignUrls: e == null ? void 0 : e.recommendationCampaignUrls,
|
|
115
|
+
rrsEnabled: o.isFeatureEnabled("reusableRecommendationStrategy")
|
|
116
|
+
};
|
|
115
117
|
let n = {
|
|
116
|
-
html: a && await
|
|
118
|
+
html: a && await z(a, _, x),
|
|
117
119
|
css: d
|
|
118
120
|
};
|
|
119
|
-
n.html || (n = await
|
|
120
|
-
const ne =
|
|
121
|
-
|
|
121
|
+
n.html || (n = await L(), n.html = await z(n.html, _, x));
|
|
122
|
+
const ne = O ? $(n.html, (e == null ? void 0 : e.trackIdCounter) || 0) : 0;
|
|
123
|
+
A(n.html) && (n.html = await U(n.html)), O && (c.trackIdSessionFloor = Math.max(ne, $(n.html)));
|
|
122
124
|
const re = {
|
|
123
125
|
preselectedDynamicContentList: P,
|
|
124
126
|
onReady: () => {
|
|
125
127
|
console.debug("guido:ready"), r("ready");
|
|
126
128
|
}
|
|
127
129
|
};
|
|
128
|
-
|
|
130
|
+
u = I(), await M(n, g(), re), y.selectedDynamicContentList = P;
|
|
129
131
|
} catch (e) {
|
|
130
132
|
console.error("Failed to initialize Stripo editor:", e);
|
|
131
133
|
}
|
|
132
134
|
};
|
|
133
135
|
return se(async () => {
|
|
134
136
|
var e;
|
|
135
|
-
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"),
|
|
136
|
-
const t = (e =
|
|
137
|
-
if (t && (i = new ResizeObserver(
|
|
138
|
-
await
|
|
137
|
+
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), E().$reset(), w().$reset(), Re().$reset(), b();
|
|
138
|
+
const t = (e = f.value) == null ? void 0 : e.parentElement;
|
|
139
|
+
if (t && (i = new ResizeObserver(b), i.observe(t)), R(), s.ready)
|
|
140
|
+
await h();
|
|
139
141
|
else {
|
|
140
|
-
const a =
|
|
141
|
-
d && (a(),
|
|
142
|
+
const a = G(() => s.ready, (d) => {
|
|
143
|
+
d && (a(), h());
|
|
142
144
|
});
|
|
143
145
|
}
|
|
144
146
|
document.addEventListener("dynamic-content:open", v);
|
|
145
147
|
}), ie(() => {
|
|
146
|
-
i == null || i.disconnect(), document.removeEventListener("dynamic-content:open", v),
|
|
147
|
-
|
|
148
|
+
if (i == null || i.disconnect(), document.removeEventListener("dynamic-content:open", v), E().disposeStrategyPageReturn(), S(u))
|
|
149
|
+
try {
|
|
150
|
+
w().isStripoInitialized = !1;
|
|
151
|
+
} catch (t) {
|
|
152
|
+
console.debug("Failed to close the editor readiness gate on unmount", t);
|
|
153
|
+
}
|
|
154
|
+
T(async () => {
|
|
155
|
+
if (S(u))
|
|
148
156
|
try {
|
|
149
157
|
window.UIEditor.removeEditor();
|
|
150
158
|
} catch {
|
|
151
159
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
152
160
|
}
|
|
153
161
|
}), o.reset();
|
|
154
|
-
}),
|
|
162
|
+
}), K({
|
|
155
163
|
dynamicContent: {
|
|
156
|
-
insert:
|
|
157
|
-
close:
|
|
164
|
+
insert: B,
|
|
165
|
+
close: N
|
|
158
166
|
},
|
|
159
167
|
hasChanges: l,
|
|
160
|
-
saveSilent:
|
|
161
|
-
setLoading:
|
|
162
|
-
}), { __sfc: !0, PreviewContainer:
|
|
168
|
+
saveSilent: k,
|
|
169
|
+
setLoading: F
|
|
170
|
+
}), { __sfc: !0, PreviewContainer: V, OnboardingWrapper: j, AssignStrategyDrawer: J, RemoveStrategyModal: Q, LegacyStrategyUpdatedModal: X, headerWrapperRef: C, wrapperRef: f, dynamicContentStore: y, unsubscribeStore: D, props: s, configStore: o, editorStore: c, previewStore: Y, hasChanges: l, isTestPartner: Z, saveSilent: k, setLoading: F, emit: r, buildMetadata: g, initPlugin: M, preloadRuntime: R, runExclusive: T, beginMount: I, isCurrentMount: S, mountGeneration: u, getDefaultTemplate: L, cloneTimersOnSave: U, hasTimerBlocks: A, noHeader: ee, isRrsEnabled: te, hasAssignedStrategy: oe, insertDynamicContent: B, closeDynamicContent: N, handleDynamicContentOpen: v, ribbonObserver: i, updateRibbonOffset: b, startEditor: h, AutoSaveController: ge, AuthErrorModal: Se, Toaster: ve, FilterSelectionDrawer: be, HeaderWrapper: he, LoadingWrapper: Ee, SaveAsTemplateDrawer: we, UnsubscribeWrapper: Ce };
|
|
163
171
|
}
|
|
164
172
|
});
|
|
165
173
|
export {
|
|
166
|
-
|
|
174
|
+
rt as default
|
|
167
175
|
};
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useAutoSave as
|
|
3
|
-
import { useSave as
|
|
4
|
-
|
|
5
|
-
const v = /* @__PURE__ */ r({
|
|
1
|
+
import { defineComponent as t } from "vue";
|
|
2
|
+
import { useAutoSave as r } from "../../composables/useAutoSave.js";
|
|
3
|
+
import { useSave as s } from "../../composables/useSave.js";
|
|
4
|
+
const f = /* @__PURE__ */ t({
|
|
6
5
|
__name: "AutoSaveController",
|
|
7
|
-
setup(
|
|
8
|
-
const { save: e
|
|
9
|
-
return
|
|
6
|
+
setup(a) {
|
|
7
|
+
const { save: e } = s(), o = () => e(!1, !0);
|
|
8
|
+
return r(o), { __sfc: !0, save: e, backgroundSave: o };
|
|
10
9
|
}
|
|
11
10
|
});
|
|
12
11
|
export {
|
|
13
|
-
|
|
12
|
+
f as default
|
|
14
13
|
};
|
|
@@ -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
|
+
};
|
|
@@ -4,7 +4,7 @@ import d from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
|
4
4
|
var u = function() {
|
|
5
5
|
var s, i, n, a;
|
|
6
6
|
var o = this, e = o._self._c, t = o._self._setupProxy;
|
|
7
|
-
return e("div", { staticClass: "d-f editor-actions" }, [t.isVersionHistoryButtonVisible ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : o._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = (s = t.config) == null ? void 0 : s.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : o._e(), (a = (n = t.config) == null ? void 0 : n.features) != null && a.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button", { staticPosition: "bottom right" }), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.handleTestEmail } }) : o._e(), t.editorStore.isPreviewModeOpen ? o._e() : e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "
|
|
7
|
+
return e("div", { staticClass: "d-f editor-actions" }, [t.isVersionHistoryButtonVisible ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : o._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = (s = t.config) == null ? void 0 : s.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : o._e(), (a = (n = t.config) == null ? void 0 : n.features) != null && a.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button", { staticPosition: "bottom right" }), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.handleTestEmail } }) : o._e(), t.editorStore.isPreviewModeOpen ? o._e() : e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(r) {
|
|
8
8
|
return t.handleSave(!1);
|
|
9
9
|
} } }), e(t.MigrationConfirmModal, { ref: "migrationModalRef", on: { confirm: function(r) {
|
|
10
10
|
return t.executeSave(!1);
|
|
@@ -15,7 +15,7 @@ var u = function() {
|
|
|
15
15
|
c,
|
|
16
16
|
!1,
|
|
17
17
|
null,
|
|
18
|
-
"
|
|
18
|
+
"c61cc8ea"
|
|
19
19
|
);
|
|
20
20
|
const v = p.exports;
|
|
21
21
|
export {
|
|
@@ -1,112 +1,77 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useActionsApi as
|
|
3
|
-
import { useConfig as
|
|
4
|
-
import { useExport as
|
|
5
|
-
import { useTestEmailClick as
|
|
6
|
-
import { useHtmlCompiler as
|
|
7
|
-
import { useSave as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
|
|
19
|
-
import { getTooltipOptions as it } from "../../../utils/tooltipUtils.js";
|
|
20
|
-
import { InButtonV2 as st } from "@useinsider/design-system-vue";
|
|
21
|
-
import { storeToRefs as at } from "pinia";
|
|
22
|
-
import nt from "./MigrationConfirmModal.vue.js";
|
|
23
|
-
const bt = /* @__PURE__ */ I({
|
|
1
|
+
import { defineComponent as q, ref as n, computed as x } from "vue";
|
|
2
|
+
import { useActionsApi as b } from "../../../composables/useActionsApi.js";
|
|
3
|
+
import { useConfig as k } from "../../../composables/useConfig.js";
|
|
4
|
+
import { useExport as B } from "../../../composables/useExport.js";
|
|
5
|
+
import { useTestEmailClick as D } from "../../../composables/useGuidoActions.js";
|
|
6
|
+
import { useHtmlCompiler as L } from "../../../composables/useHtmlCompiler.js";
|
|
7
|
+
import { useSave as R } from "../../../composables/useSave.js";
|
|
8
|
+
import { useToaster as z } from "../../../composables/useToaster.js";
|
|
9
|
+
import { useTranslations as I } from "../../../composables/useTranslations.js";
|
|
10
|
+
import { useVersionHistoryApi as P } from "../../../composables/useVersionHistoryApi.js";
|
|
11
|
+
import { useLiquidValidator as j } from "../../../composables/validators/useLiquidValidator.js";
|
|
12
|
+
import { useEditorStore as G } from "../../../stores/editor.js";
|
|
13
|
+
import { useTemplateStore as J } from "../../../stores/template.js";
|
|
14
|
+
import { getTooltipOptions as K } from "../../../utils/tooltipUtils.js";
|
|
15
|
+
import { InButtonV2 as N } from "@useinsider/design-system-vue";
|
|
16
|
+
import { storeToRefs as Q } from "pinia";
|
|
17
|
+
import U from "./MigrationConfirmModal.vue.js";
|
|
18
|
+
const ft = /* @__PURE__ */ q({
|
|
24
19
|
__name: "EditorActions",
|
|
25
|
-
setup(
|
|
26
|
-
const { config:
|
|
27
|
-
if (
|
|
28
|
-
|
|
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
|
+
if (e.isVersionHistoryOpen) {
|
|
23
|
+
f();
|
|
29
24
|
return;
|
|
30
25
|
}
|
|
31
|
-
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
},
|
|
26
|
+
u();
|
|
27
|
+
}, C = async () => {
|
|
28
|
+
i.value = !0, await c(), i.value = !1;
|
|
29
|
+
}, A = () => {
|
|
30
|
+
e.isSaveAsTemplateDrawerOpen = !0;
|
|
31
|
+
}, M = x(() => e.isVersionHistoryOpen ? s("newsletter.close-version-history") : s("newsletter.version-history")), O = x(
|
|
37
32
|
() => {
|
|
38
|
-
var t,
|
|
39
|
-
return ((
|
|
33
|
+
var t, o;
|
|
34
|
+
return ((o = (t = l.value) == null ? void 0 : t.features) == null ? void 0 : o.versionHistory) && !e.isPreviewModeOpen;
|
|
40
35
|
}
|
|
41
|
-
),
|
|
42
|
-
|
|
43
|
-
let
|
|
36
|
+
), V = async (t) => {
|
|
37
|
+
a.value = !0, t || (e.loadingStatus = !0);
|
|
38
|
+
let o;
|
|
44
39
|
try {
|
|
45
|
-
|
|
46
|
-
} catch (
|
|
47
|
-
|
|
40
|
+
o = await p(t);
|
|
41
|
+
} catch (T) {
|
|
42
|
+
r(T, "Failed to save template");
|
|
48
43
|
} finally {
|
|
49
|
-
|
|
44
|
+
a.value = !1, !t && !o && (e.loadingStatus = !1);
|
|
50
45
|
}
|
|
51
|
-
return
|
|
52
|
-
},
|
|
53
|
-
var
|
|
54
|
-
if (!t &&
|
|
55
|
-
(
|
|
46
|
+
return o;
|
|
47
|
+
}, E = (t) => {
|
|
48
|
+
var o;
|
|
49
|
+
if (!t && S.value) {
|
|
50
|
+
(o = H.value) == null || o.open();
|
|
56
51
|
return;
|
|
57
52
|
}
|
|
58
|
-
return
|
|
59
|
-
},
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return await y();
|
|
63
|
-
} catch (t) {
|
|
64
|
-
return console.warn("Test-path validation failed; sending without the drawer.", t), [];
|
|
65
|
-
} finally {
|
|
66
|
-
o.loadingStatus = !1;
|
|
67
|
-
}
|
|
68
|
-
}, M = async () => {
|
|
69
|
-
const t = await m();
|
|
70
|
-
t.length && H.open(t, "test");
|
|
71
|
-
}, z = async () => {
|
|
72
|
-
if (i.value) {
|
|
73
|
-
if ((await m()).length) {
|
|
74
|
-
S({
|
|
75
|
-
type: $.Error,
|
|
76
|
-
message: r("email-editor.validation-errors-found"),
|
|
77
|
-
actionButton: {
|
|
78
|
-
text: r("email-editor.check-errors"),
|
|
79
|
-
onClick: () => {
|
|
80
|
-
M();
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
autoHide: !1
|
|
84
|
-
});
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
l();
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
if (f("liquidSyntax")) {
|
|
91
|
-
o.loadingStatus = !0;
|
|
53
|
+
return V(t);
|
|
54
|
+
}, F = async () => {
|
|
55
|
+
if (m("liquidSyntax")) {
|
|
56
|
+
e.loadingStatus = !0;
|
|
92
57
|
try {
|
|
93
|
-
const { html: t } = await
|
|
94
|
-
if (!await
|
|
58
|
+
const { html: t } = await d({ minimize: !0, resetDataSavedFlag: !1 }), { compiledHtml: o } = v(t);
|
|
59
|
+
if (!await y(o))
|
|
95
60
|
return;
|
|
96
61
|
} catch (t) {
|
|
97
|
-
|
|
62
|
+
r(t, "Failed to prepare test email");
|
|
98
63
|
return;
|
|
99
64
|
} finally {
|
|
100
|
-
|
|
65
|
+
e.loadingStatus = !1;
|
|
101
66
|
}
|
|
102
67
|
}
|
|
103
|
-
|
|
68
|
+
h();
|
|
104
69
|
};
|
|
105
|
-
return
|
|
106
|
-
handleSave:
|
|
107
|
-
}), { __sfc: !0, config:
|
|
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 };
|
|
108
73
|
}
|
|
109
74
|
});
|
|
110
75
|
export {
|
|
111
|
-
|
|
76
|
+
ft as default
|
|
112
77
|
};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import o from "./LeftSlot.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import
|
|
4
|
-
var
|
|
3
|
+
import a from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
+
var n = function() {
|
|
5
5
|
var e = this, s = e._self._c, t = e._self._setupProxy;
|
|
6
6
|
return s("div", { staticClass: "d-f a-i-c" }, [s(t.InButtonV2, { attrs: { id: "guido__back-button", "left-icon": "line-arrow-left", styling: "ghost", type: "secondary", "disabled-status": t.isBackButtonDisabled, "label-text": t.backButtonLabel, "skeleton-sizing": { width: 150, height: 26 }, "skeleton-status": t.editorStore.loadingStatus }, on: { click: t.handleBackClick } })], 1);
|
|
7
|
-
}, i = [], r = /* @__PURE__ */
|
|
7
|
+
}, i = [], r = /* @__PURE__ */ a(
|
|
8
8
|
o,
|
|
9
|
-
|
|
9
|
+
n,
|
|
10
10
|
i,
|
|
11
11
|
!1,
|
|
12
12
|
null,
|
|
13
|
-
"
|
|
13
|
+
"73199fa4"
|
|
14
14
|
);
|
|
15
15
|
const f = r.exports;
|
|
16
16
|
export {
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as l, computed as p, ref as d } from "vue";
|
|
2
2
|
import { useConfig as k } from "../../../composables/useConfig.js";
|
|
3
3
|
import { useBack as B } from "../../../composables/useGuidoActions.js";
|
|
4
4
|
import { usePreviewMode as b } from "../../../composables/usePreviewMode.js";
|
|
5
5
|
import { useTranslations as v } from "../../../composables/useTranslations.js";
|
|
6
6
|
import { useVersionHistoryApi as _ } from "../../../composables/useVersionHistoryApi.js";
|
|
7
|
-
import { useEditorStore as
|
|
7
|
+
import { useEditorStore as V } from "../../../stores/editor.js";
|
|
8
8
|
import { InButtonV2 as w } from "@useinsider/design-system-vue";
|
|
9
|
-
import { useDebounceFn as
|
|
10
|
-
const D = /* @__PURE__ */
|
|
9
|
+
import { useDebounceFn as y } from "../../../node_modules/@vueuse/shared/index.js";
|
|
10
|
+
const D = /* @__PURE__ */ l({
|
|
11
11
|
__name: "LeftSlot",
|
|
12
12
|
setup(C) {
|
|
13
|
-
const e =
|
|
14
|
-
var u,
|
|
15
|
-
return e.isVersionHistoryOpen || e.isPreviewModeOpen ? o("email-editor.back-to-editor") : (
|
|
16
|
-
}), r = d(!1),
|
|
13
|
+
const e = V(), i = B(), { closeVersionHistory: n } = _(), { closePreviewMode: s } = b(), o = v(), { config: t } = k(), f = p(() => {
|
|
14
|
+
var u, m;
|
|
15
|
+
return e.isVersionHistoryOpen || e.isPreviewModeOpen ? o("email-editor.back-to-editor") : (m = (u = t.value) == null ? void 0 : u.ui) != null && m.backButtonLabel ? t.value.ui.backButtonLabel : o("email-editor.back-to-design");
|
|
16
|
+
}), r = d(!1), c = () => {
|
|
17
17
|
if (e.isVersionHistoryOpen) {
|
|
18
18
|
n();
|
|
19
19
|
return;
|
|
@@ -23,15 +23,11 @@ const D = /* @__PURE__ */ m({
|
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
i();
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
await a();
|
|
29
|
-
} finally {
|
|
30
|
-
r.value = !1;
|
|
31
|
-
}
|
|
26
|
+
}, a = y(() => {
|
|
27
|
+
c(), r.value = !1;
|
|
32
28
|
}, 500);
|
|
33
|
-
return { __sfc: !0, editorStore: e, handleBack: i, closeVersionHistory: n, closePreviewMode: s, trans: o, config: t, backButtonLabel:
|
|
34
|
-
r.value = !0,
|
|
29
|
+
return { __sfc: !0, editorStore: e, handleBack: i, closeVersionHistory: n, closePreviewMode: s, trans: o, config: t, backButtonLabel: f, isBackButtonDisabled: r, executeBackAction: c, debouncedBackAction: a, handleBackClick: () => {
|
|
30
|
+
r.value = !0, a();
|
|
35
31
|
}, InButtonV2: w };
|
|
36
32
|
}
|
|
37
33
|
});
|