@useinsider/guido 2.0.0-beta.a716078 → 2.0.0-beta.abf145c
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/dist/@types/config/schemas.js +53 -39
- package/dist/components/Guido.vue.js +3 -3
- package/dist/components/Guido.vue2.js +57 -59
- package/dist/components/organisms/base/Toaster.vue.js +6 -6
- package/dist/components/organisms/email-preview/PreviewContainer.vue.js +3 -3
- package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.js +8 -8
- package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue2.js +17 -13
- package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +7 -8
- package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +14 -12
- package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.js +18 -0
- package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue2.js +15 -0
- package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +10 -14
- package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +14 -22
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +7 -7
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
- package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +11 -10
- package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +12 -10
- package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +11 -10
- package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +15 -14
- package/dist/components/organisms/header/EditorActions.vue.js +20 -0
- package/dist/components/organisms/header/EditorActions.vue2.js +41 -0
- package/dist/components/organisms/header/EditorToolbar.vue.js +18 -0
- package/dist/components/organisms/header/EditorToolbar.vue2.js +17 -0
- package/dist/components/organisms/header/HeaderWrapper.vue.js +6 -5
- package/dist/components/organisms/header/LeftSlot.vue.js +11 -11
- package/dist/components/organisms/header/LeftSlot.vue2.js +11 -12
- package/dist/components/organisms/header/MiddleSlot.vue.js +10 -10
- package/dist/components/organisms/header/MiddleSlot.vue2.js +11 -15
- package/dist/components/organisms/header/RightSlot.vue.js +11 -14
- package/dist/components/organisms/header/RightSlot.vue2.js +13 -30
- package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +15 -15
- package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +1 -1
- package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +20 -19
- package/dist/composables/useConfig.js +29 -27
- package/dist/composables/useSave.js +13 -11
- package/dist/enums/academy.js +8 -0
- package/dist/enums/onboarding.js +1 -2
- package/dist/enums/unsubscribe.js +20 -21
- package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
- package/dist/extensions/Blocks/common-control.js +6 -7
- package/dist/guido.css +1 -1
- package/dist/src/@types/config/index.d.ts +2 -2
- package/dist/src/@types/config/schemas.d.ts +26 -0
- package/dist/src/@types/config/types.d.ts +7 -1
- package/dist/src/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.d.ts +2 -0
- package/dist/src/components/organisms/header/EditorActions.vue.d.ts +4 -0
- package/dist/src/components/organisms/header/EditorToolbar.vue.d.ts +2 -0
- package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
- package/dist/src/composables/useConfig.d.ts +6 -0
- package/dist/src/enums/academy.d.ts +12 -0
- package/dist/src/enums/onboarding.d.ts +0 -1
- package/dist/src/enums/unsubscribe.d.ts +0 -1
- package/dist/src/extensions/Blocks/common-control.d.ts +1 -1
- package/dist/src/stores/config.d.ts +147 -1
- package/dist/static/assets/desktop/desktop-mockup-center.svg.js +4 -0
- package/dist/static/assets/desktop/desktop-mockup-left.svg.js +4 -0
- package/dist/static/assets/desktop/desktop-mockup-right.svg.js +4 -0
- package/dist/static/assets/mobile/email-mockup.svg.js +4 -0
- package/dist/static/assets/mobile/inbox-mockup.svg.js +4 -0
- package/dist/static/styles/components/button.css.js +1 -1
- package/dist/stores/config.js +7 -0
- package/package.json +1 -1
- package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +0 -17
- package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +0 -20
- package/dist/static/assets/inbox-mockup.svg.js +0 -4
- package/dist/static/assets/phone-mockup.svg.js +0 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { object as o, number as
|
|
2
|
-
const
|
|
1
|
+
import { object as o, number as b, optional as e, string as t, pipe as u, picklist as n, custom as d, boolean as c, array as a, minLength as p, literal as r, variant as S } from "../../node_modules/valibot/dist/index.js";
|
|
2
|
+
const m = {
|
|
3
3
|
/** Promotional/marketing emails */
|
|
4
4
|
PROMOTIONAL: 1,
|
|
5
5
|
/** Transactional/system emails */
|
|
@@ -13,22 +13,22 @@ const i = {
|
|
|
13
13
|
UNSUBSCRIBE_PAGES: 97
|
|
14
14
|
}, h = o({
|
|
15
15
|
/** Unique identifier for the template being edited */
|
|
16
|
-
templateId:
|
|
16
|
+
templateId: u(
|
|
17
17
|
t(),
|
|
18
|
-
|
|
18
|
+
p(1, "templateId is required")
|
|
19
19
|
),
|
|
20
20
|
/** Unique identifier for the user editing the template */
|
|
21
|
-
userId:
|
|
21
|
+
userId: u(
|
|
22
22
|
t(),
|
|
23
|
-
|
|
23
|
+
p(1, "userId is required")
|
|
24
24
|
),
|
|
25
25
|
/** Optional variation ID for A/B testing */
|
|
26
26
|
variationId: e(t())
|
|
27
27
|
}), k = o({
|
|
28
28
|
/** Partner/organization name (required) */
|
|
29
|
-
name:
|
|
29
|
+
name: u(
|
|
30
30
|
t(),
|
|
31
|
-
|
|
31
|
+
p(1, "partner.name is required")
|
|
32
32
|
),
|
|
33
33
|
/** Product type identifier */
|
|
34
34
|
productType: e(
|
|
@@ -41,8 +41,8 @@ const i = {
|
|
|
41
41
|
),
|
|
42
42
|
/** Message type (promotional or transactional) */
|
|
43
43
|
messageType: e(
|
|
44
|
-
n([
|
|
45
|
-
|
|
44
|
+
n([m.PROMOTIONAL, m.TRANSACTIONAL]),
|
|
45
|
+
m.PROMOTIONAL
|
|
46
46
|
),
|
|
47
47
|
/** Display name for the current user */
|
|
48
48
|
username: e(t(), "Guido User")
|
|
@@ -71,29 +71,29 @@ const i = {
|
|
|
71
71
|
[]
|
|
72
72
|
),
|
|
73
73
|
/** Selected unsubscribe page IDs */
|
|
74
|
-
selectedUnsubscribePages: e(a(
|
|
74
|
+
selectedUnsubscribePages: e(a(b()), []),
|
|
75
75
|
/** Force recreate template in Stripo storage (use true when updating externally modified templates) */
|
|
76
76
|
forceRecreate: e(c(), !1)
|
|
77
|
-
}),
|
|
77
|
+
}), f = o({
|
|
78
78
|
/** Sender display name */
|
|
79
79
|
senderName: e(t(), ""),
|
|
80
80
|
/** Email subject line */
|
|
81
81
|
subject: e(t(), "")
|
|
82
|
-
}),
|
|
82
|
+
}), C = o({
|
|
83
83
|
/** Locale for the editor UI */
|
|
84
84
|
locale: e(t(), "en"),
|
|
85
85
|
/** Path to translations object */
|
|
86
86
|
translationsPath: e(t(), "window.trans.en"),
|
|
87
87
|
/** Migration date for template compatibility */
|
|
88
|
-
migrationDate: e(
|
|
88
|
+
migrationDate: e(b(), 1759696858),
|
|
89
89
|
/** Email header settings */
|
|
90
|
-
emailHeader: e(
|
|
91
|
-
}),
|
|
90
|
+
emailHeader: e(f, { senderName: "", subject: "" })
|
|
91
|
+
}), I = o({
|
|
92
92
|
/** Whether to show the header bar */
|
|
93
93
|
showHeader: e(c(), !0),
|
|
94
94
|
/** Custom label for back button (if shown) */
|
|
95
95
|
backButtonLabel: e(t())
|
|
96
|
-
}),
|
|
96
|
+
}), T = o({
|
|
97
97
|
/** Enable dynamic content insertion */
|
|
98
98
|
dynamicContent: e(c(), !0),
|
|
99
99
|
/** Enable save as template functionality */
|
|
@@ -108,7 +108,7 @@ const i = {
|
|
|
108
108
|
unsubscribe: e(c(), !0),
|
|
109
109
|
/** Disable modules panel in the editor */
|
|
110
110
|
modulesDisabled: e(c(), !1)
|
|
111
|
-
}),
|
|
111
|
+
}), A = n([
|
|
112
112
|
"amp-accordion",
|
|
113
113
|
"amp-carousel",
|
|
114
114
|
"amp-form-controls",
|
|
@@ -133,7 +133,7 @@ const i = {
|
|
|
133
133
|
]), E = o({
|
|
134
134
|
/** Default blocks to exclude from the editor */
|
|
135
135
|
excludeDefaults: e(
|
|
136
|
-
a(
|
|
136
|
+
a(A),
|
|
137
137
|
[]
|
|
138
138
|
),
|
|
139
139
|
/** Custom blocks to include in the editor */
|
|
@@ -147,7 +147,7 @@ const i = {
|
|
|
147
147
|
/** Human-readable description */
|
|
148
148
|
description: e(t()),
|
|
149
149
|
/** Priority for rule ordering (lower = earlier) */
|
|
150
|
-
priority:
|
|
150
|
+
priority: b()
|
|
151
151
|
}), N = o({
|
|
152
152
|
...l.entries,
|
|
153
153
|
type: r("replace"),
|
|
@@ -175,21 +175,32 @@ const i = {
|
|
|
175
175
|
...l.entries,
|
|
176
176
|
type: r("custom"),
|
|
177
177
|
/** Custom processor function */
|
|
178
|
-
processor:
|
|
179
|
-
(
|
|
178
|
+
processor: d(
|
|
179
|
+
(i) => typeof i == "function",
|
|
180
180
|
"processor must be a function"
|
|
181
181
|
)
|
|
182
|
-
}),
|
|
182
|
+
}), x = S("type", [
|
|
183
183
|
N,
|
|
184
184
|
O,
|
|
185
185
|
L,
|
|
186
186
|
v
|
|
187
|
-
]),
|
|
187
|
+
]), B = o({
|
|
188
188
|
/** Custom compiler rules to apply */
|
|
189
|
-
customRules: e(a(
|
|
189
|
+
customRules: e(a(x), []),
|
|
190
190
|
/** Skip default compiler rules */
|
|
191
191
|
ignoreDefaultRules: e(c(), !1)
|
|
192
|
-
}),
|
|
192
|
+
}), P = o({
|
|
193
|
+
/**
|
|
194
|
+
* External validation handler called before save completes.
|
|
195
|
+
* Return false to cancel the save operation.
|
|
196
|
+
*/
|
|
197
|
+
externalValidation: e(
|
|
198
|
+
d(
|
|
199
|
+
(i) => typeof i == "function",
|
|
200
|
+
"externalValidation must be a function"
|
|
201
|
+
)
|
|
202
|
+
)
|
|
203
|
+
}), D = o({
|
|
193
204
|
// Required sections
|
|
194
205
|
/** Identity configuration (required) */
|
|
195
206
|
identity: h,
|
|
@@ -199,35 +210,38 @@ const i = {
|
|
|
199
210
|
/** Template content and presets */
|
|
200
211
|
template: e(R, {}),
|
|
201
212
|
/** Editor settings */
|
|
202
|
-
editor: e(
|
|
213
|
+
editor: e(C, {}),
|
|
203
214
|
/** UI configuration */
|
|
204
|
-
ui: e(
|
|
215
|
+
ui: e(I, {}),
|
|
205
216
|
/** Feature toggles */
|
|
206
|
-
features: e(
|
|
217
|
+
features: e(T, {}),
|
|
207
218
|
/** Block configuration */
|
|
208
219
|
blocks: e(E, {}),
|
|
209
220
|
/** Compiler configuration */
|
|
210
|
-
compiler: e(
|
|
221
|
+
compiler: e(B, {}),
|
|
222
|
+
/** Callbacks and event handlers */
|
|
223
|
+
callbacks: e(P, {})
|
|
211
224
|
});
|
|
212
225
|
export {
|
|
213
226
|
E as BlocksSchema,
|
|
214
|
-
|
|
215
|
-
|
|
227
|
+
P as CallbacksSchema,
|
|
228
|
+
x as CompilerRuleSchema,
|
|
229
|
+
B as CompilerSchema,
|
|
216
230
|
g as CustomBlockTypeSchema,
|
|
217
231
|
v as CustomRuleSchema,
|
|
218
|
-
|
|
232
|
+
A as DefaultBlockTypeSchema,
|
|
219
233
|
y as DynamicContentSchema,
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
234
|
+
C as EditorSchema,
|
|
235
|
+
f as EmailHeaderSchema,
|
|
236
|
+
T as FeaturesSchema,
|
|
237
|
+
D as GuidoConfigSchema,
|
|
224
238
|
h as IdentitySchema,
|
|
225
|
-
|
|
239
|
+
m as MessageType,
|
|
226
240
|
k as PartnerSchema,
|
|
227
241
|
s as ProductType,
|
|
228
242
|
O as RegexRuleSchema,
|
|
229
243
|
L as RemoveRuleSchema,
|
|
230
244
|
N as ReplaceRuleSchema,
|
|
231
245
|
R as TemplateSchema,
|
|
232
|
-
|
|
246
|
+
I as UISchema
|
|
233
247
|
};
|
|
@@ -1,55 +1,54 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { provideGuidoActions as
|
|
3
|
-
import { usePartner as
|
|
4
|
-
import { useStripo as
|
|
5
|
-
import { useTimerClone as
|
|
6
|
-
import { migrate as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import { useStripoApi as
|
|
14
|
-
import { useConfigStore as
|
|
15
|
-
import { useDynamicContentStore as
|
|
16
|
-
import { useEditorStore as
|
|
17
|
-
import { usePreviewStore as
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
const Pe = /* @__PURE__ */ q({
|
|
1
|
+
import { defineComponent as B, defineAsyncComponent as P, ref as N, computed as U, watch as R, onMounted as z, onUnmounted as K } from "vue";
|
|
2
|
+
import { provideGuidoActions as M } from "../composables/useGuidoActions.js";
|
|
3
|
+
import { usePartner as j } from "../composables/usePartner.js";
|
|
4
|
+
import { useStripo as q } from "../composables/useStripo.js";
|
|
5
|
+
import { useTimerClone as J } from "../composables/useTimerClone.js";
|
|
6
|
+
import { migrate as W } from "../config/migrator/index.js";
|
|
7
|
+
import Q from "./organisms/base/Toaster.vue.js";
|
|
8
|
+
import V from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
9
|
+
import X from "./organisms/header/HeaderWrapper.vue.js";
|
|
10
|
+
import Y from "./organisms/LoadingWrapper.vue.js";
|
|
11
|
+
import Z from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
12
|
+
import $ from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
13
|
+
import { useStripoApi as ee } from "../services/stripoApi.js";
|
|
14
|
+
import { useConfigStore as oe } from "../stores/config.js";
|
|
15
|
+
import { useDynamicContentStore as te } from "../stores/dynamic-content.js";
|
|
16
|
+
import { useEditorStore as ne } from "../stores/editor.js";
|
|
17
|
+
import { usePreviewStore as re } from "../stores/preview.js";
|
|
18
|
+
import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
|
|
19
|
+
const Ee = /* @__PURE__ */ B({
|
|
21
20
|
__name: "Guido",
|
|
22
21
|
props: {
|
|
23
22
|
config: null
|
|
24
23
|
},
|
|
25
24
|
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
26
|
-
setup(
|
|
27
|
-
const
|
|
25
|
+
setup(_, { expose: I, emit: t }) {
|
|
26
|
+
const l = _, L = P(
|
|
28
27
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
29
|
-
),
|
|
28
|
+
), A = P(
|
|
30
29
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
31
|
-
), p =
|
|
32
|
-
n.init(
|
|
33
|
-
const
|
|
30
|
+
), p = N(), c = te(), u = se(), n = oe();
|
|
31
|
+
n.init(l.config);
|
|
32
|
+
const i = ne(), F = re(), r = U(() => i.hasChanges), { isTestPartner: G } = j(), v = () => {
|
|
34
33
|
var e;
|
|
35
34
|
return (e = p.value) == null ? void 0 : e.handleSave(!0);
|
|
36
|
-
}, { templateId:
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
emailId:
|
|
40
|
-
userId:
|
|
41
|
-
username:
|
|
42
|
-
partnerName:
|
|
43
|
-
productType:
|
|
44
|
-
preselectedDynamicContentList:
|
|
35
|
+
}, { templateId: a, userId: y, partnerName: h, productType: b, username: f, template: o } = n, s = (o == null ? void 0 : o.html) || "", g = (o == null ? void 0 : o.css) || "", m = (o == null ? void 0 : o.preselectedDynamicContent) || [];
|
|
36
|
+
i.templateId = a;
|
|
37
|
+
const { initPlugin: S } = q({
|
|
38
|
+
emailId: a,
|
|
39
|
+
userId: y,
|
|
40
|
+
username: f,
|
|
41
|
+
partnerName: h,
|
|
42
|
+
productType: b,
|
|
43
|
+
preselectedDynamicContentList: m,
|
|
45
44
|
onReady: () => {
|
|
46
45
|
console.debug("guido:ready"), t("ready");
|
|
47
46
|
}
|
|
48
|
-
}), { getDefaultTemplate:
|
|
47
|
+
}), { getDefaultTemplate: w } = ee(), { cloneTimersOnSave: C, hasTimerBlocks: D } = J(), H = U(() => {
|
|
49
48
|
var e;
|
|
50
49
|
return !((e = n.ui) != null && e.showHeader);
|
|
51
50
|
});
|
|
52
|
-
|
|
51
|
+
M({
|
|
53
52
|
onBack: () => {
|
|
54
53
|
console.debug("guido:back"), t("back");
|
|
55
54
|
},
|
|
@@ -63,50 +62,49 @@ const Pe = /* @__PURE__ */ q({
|
|
|
63
62
|
console.debug("guido:test-email:click"), t("test-email:click");
|
|
64
63
|
}
|
|
65
64
|
});
|
|
66
|
-
const
|
|
67
|
-
console.debug("dynamic-content:close", e),
|
|
68
|
-
},
|
|
65
|
+
const E = (e) => {
|
|
66
|
+
console.debug("dynamic-content:close", e), c.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
|
|
67
|
+
}, k = () => {
|
|
69
68
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
70
69
|
};
|
|
71
|
-
|
|
70
|
+
R(() => r.value, () => {
|
|
72
71
|
t("on-change", r.value);
|
|
73
72
|
});
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
console.debug("dynamic-content:open",
|
|
73
|
+
const d = (e) => {
|
|
74
|
+
const T = e, { attribute: O, position: x } = T.detail;
|
|
75
|
+
console.debug("dynamic-content:open", T.detail), t("dynamic-content:open", O, x);
|
|
77
76
|
};
|
|
78
|
-
return
|
|
77
|
+
return z(async () => {
|
|
79
78
|
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
|
|
80
79
|
try {
|
|
81
|
-
|
|
80
|
+
u.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
|
|
82
81
|
let e = {
|
|
83
|
-
html: s && await
|
|
84
|
-
css:
|
|
82
|
+
html: s && await W(s),
|
|
83
|
+
css: g
|
|
85
84
|
};
|
|
86
|
-
e.html || (e = await
|
|
85
|
+
e.html || (e = await w(), e.html = await W(e.html)), D(e.html) && (e.html = await C(e.html)), await S(e), c.selectedDynamicContentList = m;
|
|
87
86
|
} catch (e) {
|
|
88
87
|
console.error("Failed to initialize Stripo editor:", e);
|
|
89
88
|
}
|
|
90
|
-
document.addEventListener("dynamic-content:open",
|
|
91
|
-
}),
|
|
92
|
-
|
|
93
|
-
c.value && (y.hideToaster(), (e = document.querySelector("#guido__toaster")) == null || e.remove()), c.value = !1, document.removeEventListener("dynamic-content:open", l);
|
|
89
|
+
document.addEventListener("dynamic-content:open", d);
|
|
90
|
+
}), K(() => {
|
|
91
|
+
document.removeEventListener("dynamic-content:open", d);
|
|
94
92
|
try {
|
|
95
93
|
window.UIEditor.removeEditor();
|
|
96
94
|
} catch {
|
|
97
95
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
98
96
|
}
|
|
99
97
|
n.reset();
|
|
100
|
-
}),
|
|
98
|
+
}), I({
|
|
101
99
|
dynamicContent: {
|
|
102
|
-
insert:
|
|
103
|
-
close:
|
|
100
|
+
insert: E,
|
|
101
|
+
close: k
|
|
104
102
|
},
|
|
105
103
|
hasChanges: r,
|
|
106
|
-
saveSilent:
|
|
107
|
-
}), { __sfc: !0, PreviewContainer:
|
|
104
|
+
saveSilent: v
|
|
105
|
+
}), { __sfc: !0, PreviewContainer: L, OnboardingWrapper: A, headerWrapperRef: p, dynamicContentStore: c, unsubscribeStore: u, props: l, configStore: n, editorStore: i, previewStore: F, hasChanges: r, isTestPartner: G, saveSilent: v, templateId: a, userId: y, partnerName: h, productType: b, username: f, templateConfig: o, html: s, css: g, preselectedDynamicContentList: m, emit: t, initPlugin: S, getDefaultTemplate: w, cloneTimersOnSave: C, hasTimerBlocks: D, noHeader: H, insertDynamicContent: E, closeDynamicContent: k, handleDynamicContentOpen: d, Toaster: Q, FilterSelectionDrawer: V, HeaderWrapper: X, LoadingWrapper: Y, SaveAsTemplateDrawer: Z, UnsubscribeWrapper: $ };
|
|
108
106
|
}
|
|
109
107
|
});
|
|
110
108
|
export {
|
|
111
|
-
|
|
109
|
+
Ee as default
|
|
112
110
|
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from "./Toaster.vue2.js";
|
|
2
2
|
import s from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
3
3
|
var r = function() {
|
|
4
|
-
var o = this,
|
|
5
|
-
return
|
|
4
|
+
var o = this, n = o._self._c, t = o._self._setupProxy;
|
|
5
|
+
return n(t.InToasts, { attrs: { "action-buttons-config": t.actionButtonsConfig, status: t.store.status, text: t.store.text, type: t.store.type }, on: { actionButtonClick0: t.handleActionClick } });
|
|
6
6
|
}, a = [], _ = /* @__PURE__ */ s(
|
|
7
|
-
|
|
7
|
+
e,
|
|
8
8
|
r,
|
|
9
9
|
a,
|
|
10
10
|
!1,
|
|
11
11
|
null,
|
|
12
12
|
null
|
|
13
13
|
);
|
|
14
|
-
const
|
|
14
|
+
const l = _.exports;
|
|
15
15
|
export {
|
|
16
|
-
|
|
16
|
+
l as default
|
|
17
17
|
};
|
|
@@ -2,7 +2,7 @@ import s from "./PreviewContainer.vue2.js";
|
|
|
2
2
|
import t from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
3
3
|
var i = function() {
|
|
4
4
|
var o = this, r = o._self._c, e = o._self._setupProxy;
|
|
5
|
-
return e.previewStore.isLoaded ? r("div", { staticClass: "d-f f-d-c h-1 b-c-5 bor-r-2
|
|
5
|
+
return e.previewStore.isLoaded ? r("div", { staticClass: "d-f f-d-c h-1 b-c-5 bor-r-2" }, [r("div", { staticClass: "f-g-1 d-f p-5 o-a g-4 min-h-600" }, [r(e.DesktopPreview, { staticClass: "f-g-1 min-w-0" }), r(e.MobilePreview, { staticClass: "f-0 min-w-a" })], 1), e.previewStore.isAMPErrorModalVisible ? r(e.AmpErrorModal, { on: { close: function(_) {
|
|
6
6
|
return e.previewStore.closeErrorModal();
|
|
7
7
|
} } }) : o._e()], 1) : o._e();
|
|
8
8
|
}, n = [], a = /* @__PURE__ */ t(
|
|
@@ -13,7 +13,7 @@ var i = function() {
|
|
|
13
13
|
null,
|
|
14
14
|
null
|
|
15
15
|
);
|
|
16
|
-
const
|
|
16
|
+
const d = a.exports;
|
|
17
17
|
export {
|
|
18
|
-
|
|
18
|
+
d as default
|
|
19
19
|
};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import
|
|
1
|
+
import i from "./AmpErrorModal.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import a from "../../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
4
|
var n = function() {
|
|
5
5
|
var e = this, r = e._self._c, t = e._self._setupProxy;
|
|
6
|
-
return r(t.WpModal, { attrs: { id: "amp-error-modal", size: "
|
|
6
|
+
return r(t.WpModal, { attrs: { id: "amp-error-modal", size: "small", description: t.ampValidationDescription, "footer-button-options": t.footerButtonOptions, title: t.trans("email-editor.amp-validation-title") }, on: { close: function(o) {
|
|
7
7
|
return t.emit("close");
|
|
8
|
-
}, "primary-action": t.handleFixInCodeEditor } }, [r("div", { staticClass: "d-f f-d-c" }, [r("div", { staticClass: "mb-3" }, [r("div", { staticClass: "l-s-5 f-s-1 f-w-600 t-c-55 t-t-u" }, [e._v(" " + e._s(t.errorCountText) + " ")])]), r("div", { staticClass: "d-f f-d-c g-13
|
|
9
|
-
return r(t.InOnPageMessage, { key:
|
|
8
|
+
}, "primary-action": t.handleFixInCodeEditor } }, [r("div", { staticClass: "d-f f-d-c" }, [r("div", { staticClass: "mb-3" }, [r("div", { staticClass: "l-s-5 f-s-1 f-w-600 t-c-55 t-t-u" }, [e._v(" " + e._s(t.errorCountText) + " ")])]), r("div", { staticClass: "d-f f-d-c g-13 error-list" }, e._l(t.previewStore.ampErrors, function(o, s) {
|
|
9
|
+
return r(t.InOnPageMessage, { key: s, attrs: { icon: "filled-error-box", size: "small", type: "alert", text: o } });
|
|
10
10
|
}), 1)])]);
|
|
11
|
-
}, l = [],
|
|
12
|
-
|
|
11
|
+
}, l = [], c = /* @__PURE__ */ a(
|
|
12
|
+
i,
|
|
13
13
|
n,
|
|
14
14
|
l,
|
|
15
15
|
!1,
|
|
16
16
|
null,
|
|
17
|
-
"
|
|
17
|
+
"a00b5f5f"
|
|
18
18
|
);
|
|
19
|
-
const _ =
|
|
19
|
+
const _ = c.exports;
|
|
20
20
|
export {
|
|
21
21
|
_ as default
|
|
22
22
|
};
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
import { useCodeEditorApi as
|
|
1
|
+
import { defineComponent as m, ref as c, computed as d } from "vue";
|
|
2
|
+
import l from "../../../wrappers/WpModal.vue.js";
|
|
3
|
+
import { useCodeEditorApi as f } from "../../../../composables/useCodeEditorApi.js";
|
|
4
4
|
import { usePreviewMode as u } from "../../../../composables/usePreviewMode.js";
|
|
5
|
-
import { useTranslations as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
5
|
+
import { useTranslations as _ } from "../../../../composables/useTranslations.js";
|
|
6
|
+
import { ACADEMY_LINKS as M } from "../../../../enums/academy.js";
|
|
7
|
+
import { usePreviewStore as y } from "../../../../stores/preview.js";
|
|
8
|
+
import { InOnPageMessage as E } from "@useinsider/design-system-vue";
|
|
9
|
+
const O = /* @__PURE__ */ m({
|
|
9
10
|
__name: "AmpErrorModal",
|
|
10
11
|
emits: ["close"],
|
|
11
|
-
setup(
|
|
12
|
-
const o =
|
|
12
|
+
setup(g, { emit: e }) {
|
|
13
|
+
const o = _(), { closePreviewMode: r } = u(), { openCodeEditor: t } = f(), i = y(), n = c({
|
|
13
14
|
cancelOrBackButton: {
|
|
14
15
|
type: "secondary",
|
|
15
16
|
labelText: o("campaign-builder.cancel"),
|
|
@@ -19,12 +20,15 @@ const P = /* @__PURE__ */ p({
|
|
|
19
20
|
type: "primary",
|
|
20
21
|
labelText: o("email-editor.amp-validation-fix")
|
|
21
22
|
}
|
|
22
|
-
}),
|
|
23
|
+
}), a = () => {
|
|
23
24
|
e("close"), r(), t();
|
|
24
|
-
},
|
|
25
|
-
|
|
25
|
+
}, s = o(
|
|
26
|
+
"email-editor.amp-validation-description",
|
|
27
|
+
{ academyLink: M.AMP_FOR_EMAILS }
|
|
28
|
+
), p = d(() => `${o("products.errors")}(${i.ampErrors.length})`);
|
|
29
|
+
return { __sfc: !0, emit: e, trans: o, closePreviewMode: r, openCodeEditor: t, previewStore: i, footerButtonOptions: n, handleFixInCodeEditor: a, ampValidationDescription: s, errorCountText: p, WpModal: l, InOnPageMessage: E };
|
|
26
30
|
}
|
|
27
31
|
});
|
|
28
32
|
export {
|
|
29
|
-
|
|
33
|
+
O as default
|
|
30
34
|
};
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import o from "./AmpToggle.vue2.js";
|
|
2
|
-
/* empty css */
|
|
3
2
|
import n from "../../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
-
var
|
|
3
|
+
var a = function() {
|
|
5
4
|
var r = this, t = r._self._c, e = r._self._setupProxy;
|
|
6
|
-
return t("div", [t("div", { staticClass: "d-f a-i-c ml-3" }, [t(e.InSegments, { attrs: { id: "guido__amp-toggle", "segment-list": e.segmentList, selected: e.previewStore.emailFormat }, on: { click: e.handleFormatChange } }), e.previewStore.showAMPErrorButton ? t(e.InButtonV2, { staticClass: "ml-
|
|
5
|
+
return t("div", [t("div", { staticClass: "d-f a-i-c ml-3" }, [t(e.InSegments, { attrs: { id: "guido__amp-toggle", "with-icon": "", "segment-list": e.segmentList, selected: e.previewStore.emailFormat }, on: { click: e.handleFormatChange } }), e.previewStore.showAMPErrorButton ? t(e.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__amp-error-button", "left-icon": "filled-amp", type: "danger", "label-text": e.trans("email-editor.check-amp-errors", { count: e.previewStore.ampErrors.length }) }, on: { click: function(m) {
|
|
7
6
|
return e.previewStore.openErrorModal();
|
|
8
7
|
} } }) : r._e()], 1)]);
|
|
9
|
-
},
|
|
8
|
+
}, i = [], s = /* @__PURE__ */ n(
|
|
10
9
|
o,
|
|
11
|
-
s,
|
|
12
10
|
a,
|
|
11
|
+
i,
|
|
13
12
|
!1,
|
|
14
13
|
null,
|
|
15
|
-
|
|
14
|
+
null
|
|
16
15
|
);
|
|
17
|
-
const
|
|
16
|
+
const p = s.exports;
|
|
18
17
|
export {
|
|
19
|
-
|
|
18
|
+
p as default
|
|
20
19
|
};
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useTranslations as
|
|
3
|
-
import { usePreviewStore as
|
|
1
|
+
import { defineComponent as n, computed as i } from "vue";
|
|
2
|
+
import { useTranslations as m } from "../../../../composables/useTranslations.js";
|
|
3
|
+
import { usePreviewStore as r } from "../../../../stores/preview.js";
|
|
4
4
|
import { InButtonV2 as s, InSegments as l } from "@useinsider/design-system-vue";
|
|
5
|
-
const _ = /* @__PURE__ */
|
|
5
|
+
const _ = /* @__PURE__ */ n({
|
|
6
6
|
__name: "AmpToggle",
|
|
7
7
|
setup(p) {
|
|
8
|
-
const
|
|
8
|
+
const e = r(), t = m(), o = i(() => [
|
|
9
9
|
{
|
|
10
|
-
text:
|
|
11
|
-
value: "html"
|
|
10
|
+
text: t("dynamic-creatives.html"),
|
|
11
|
+
value: "html",
|
|
12
|
+
icon: "line-code"
|
|
12
13
|
},
|
|
13
14
|
{
|
|
14
|
-
text:
|
|
15
|
+
text: t("email-editor.amp-html"),
|
|
15
16
|
value: "AMP",
|
|
16
|
-
|
|
17
|
+
icon: "filled-amp",
|
|
18
|
+
tooltipText: e.hasAMP ? "" : t("email-editor.preview-amp-unavailable-tooltip"),
|
|
17
19
|
position: "bottom",
|
|
18
20
|
align: "center",
|
|
19
|
-
disable: !
|
|
21
|
+
disable: !e.hasAMP
|
|
20
22
|
}
|
|
21
23
|
]);
|
|
22
|
-
return { __sfc: !0, previewStore:
|
|
23
|
-
|
|
24
|
+
return { __sfc: !0, previewStore: e, trans: t, segmentList: o, handleFormatChange: (a) => {
|
|
25
|
+
e.setEmailFormat(a);
|
|
24
26
|
}, InSegments: l, InButtonV2: s };
|
|
25
27
|
}
|
|
26
28
|
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import r from "./DesktopBrowserHeader.vue2.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import o from "../../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
+
var a = function() {
|
|
5
|
+
var t = this, e = t._self._c, s = t._self._setupProxy;
|
|
6
|
+
return e("div", { staticClass: "desktop-browser-header d-f w-1 f-sh-0" }, [e("img", { staticClass: "desktop-browser-header__left f-sh-0", attrs: { alt: "", src: s.desktopMockupLeft } }), e("div", { staticClass: "desktop-browser-header__center f-g-1", style: s.centerBackgroundStyle }), e("img", { staticClass: "desktop-browser-header__right f-sh-0", attrs: { alt: "", src: s.desktopMockupRight } })]);
|
|
7
|
+
}, _ = [], c = /* @__PURE__ */ o(
|
|
8
|
+
r,
|
|
9
|
+
a,
|
|
10
|
+
_,
|
|
11
|
+
!1,
|
|
12
|
+
null,
|
|
13
|
+
"d86c5af5"
|
|
14
|
+
);
|
|
15
|
+
const p = c.exports;
|
|
16
|
+
export {
|
|
17
|
+
p as default
|
|
18
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineComponent as e, computed as o } from "vue";
|
|
2
|
+
import t from "../../../../static/assets/desktop/desktop-mockup-center.svg.js";
|
|
3
|
+
import r from "../../../../static/assets/desktop/desktop-mockup-left.svg.js";
|
|
4
|
+
import p from "../../../../static/assets/desktop/desktop-mockup-right.svg.js";
|
|
5
|
+
const k = /* @__PURE__ */ e({
|
|
6
|
+
__name: "DesktopBrowserHeader",
|
|
7
|
+
setup(n) {
|
|
8
|
+
return { __sfc: !0, centerBackgroundStyle: o(() => ({
|
|
9
|
+
backgroundImage: `url("${t}")`
|
|
10
|
+
})), desktopMockupLeft: r, desktopMockupRight: p };
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
export {
|
|
14
|
+
k as default
|
|
15
|
+
};
|