@useinsider/guido 1.4.4 → 2.0.0-beta.2d132c0
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 +295 -664
- package/dist/@types/config/defaults.js +44 -0
- package/dist/@types/config/schemas.js +229 -0
- package/dist/@types/config/validator.js +56 -0
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +61 -81
- package/dist/components/organisms/base/Toaster.vue.js +6 -6
- package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +13 -13
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +6 -6
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
- package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +5 -5
- package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue2.js +13 -13
- package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
- package/dist/components/organisms/header/LeftSlot.vue2.js +18 -15
- package/dist/components/organisms/header/RightSlot.vue.js +10 -10
- package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +22 -19
- package/dist/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.js +4 -4
- package/dist/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue2.js +8 -8
- package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +3 -3
- package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +17 -17
- package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue.js +10 -10
- package/dist/composables/useActionsApi.js +42 -25
- package/dist/composables/useBlocksConfig.js +23 -20
- package/dist/composables/useConfig.js +51 -5
- package/dist/composables/useHtmlCompiler.js +20 -19
- package/dist/composables/useHtmlValidator.js +41 -41
- package/dist/composables/usePartner.js +19 -9
- package/dist/composables/useStripo.js +32 -32
- package/dist/composables/useTimerClone.js +53 -0
- package/dist/composables/useTranslations.js +3 -2
- package/dist/config/compiler/unsubscribeCompilerRules.js +1 -1
- package/dist/enums/defaults.js +4 -67
- package/dist/enums/unsubscribe.js +23 -20
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +12 -11
- package/dist/guido.css +1 -1
- package/dist/library.js +12 -2
- package/dist/node_modules/lodash-es/_arrayLikeKeys.js +10 -10
- package/dist/node_modules/valibot/dist/index.js +476 -103
- package/dist/services/stripoApi.js +13 -14
- package/dist/services/templateLibraryApi.js +18 -18
- package/dist/src/@types/config/defaults.d.ts +68 -0
- package/dist/src/@types/config/index.d.ts +14 -0
- package/dist/src/@types/config/schemas.d.ts +505 -0
- package/dist/src/@types/config/types.d.ts +142 -0
- package/dist/src/@types/config/validator.d.ts +119 -0
- package/dist/src/@types/generic.d.ts +4 -45
- package/dist/src/components/Guido.vue.d.ts +13 -12
- package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
- package/dist/src/composables/useActionsApi.d.ts +2 -0
- package/dist/src/composables/useConfig.d.ts +184 -2
- package/dist/src/composables/usePartner.d.ts +8 -0
- package/dist/src/composables/useTimerClone.d.ts +6 -0
- package/dist/src/enums/defaults.d.ts +5 -6
- package/dist/src/enums/unsubscribe.d.ts +5 -1
- package/dist/src/library.d.ts +3 -1
- package/dist/src/stores/config.d.ts +1547 -102
- package/dist/stores/config.js +141 -9
- package/package.json +1 -1
- package/dist/node_modules/lodash-es/_apply.js +0 -16
- package/dist/node_modules/lodash-es/_assignMergeValue.js +0 -8
- package/dist/node_modules/lodash-es/_assignValue.js +0 -10
- package/dist/node_modules/lodash-es/_baseAssignValue.js +0 -12
- package/dist/node_modules/lodash-es/_baseCreate.js +0 -17
- package/dist/node_modules/lodash-es/_baseKeysIn.js +0 -15
- package/dist/node_modules/lodash-es/_baseMerge.js +0 -20
- package/dist/node_modules/lodash-es/_baseMergeDeep.js +0 -31
- package/dist/node_modules/lodash-es/_baseRest.js +0 -9
- package/dist/node_modules/lodash-es/_baseSetToString.js +0 -14
- package/dist/node_modules/lodash-es/_cloneArrayBuffer.js +0 -8
- package/dist/node_modules/lodash-es/_cloneBuffer.js +0 -9
- package/dist/node_modules/lodash-es/_cloneTypedArray.js +0 -8
- package/dist/node_modules/lodash-es/_copyArray.js +0 -9
- package/dist/node_modules/lodash-es/_copyObject.js +0 -14
- package/dist/node_modules/lodash-es/_createAssigner.js +0 -15
- package/dist/node_modules/lodash-es/_defineProperty.js +0 -11
- package/dist/node_modules/lodash-es/_getPrototype.js +0 -5
- package/dist/node_modules/lodash-es/_initCloneObject.js +0 -9
- package/dist/node_modules/lodash-es/_nativeKeysIn.js +0 -10
- package/dist/node_modules/lodash-es/_overRest.js +0 -15
- package/dist/node_modules/lodash-es/_safeGet.js +0 -7
- package/dist/node_modules/lodash-es/_setToString.js +0 -6
- package/dist/node_modules/lodash-es/_shortOut.js +0 -16
- package/dist/node_modules/lodash-es/constant.js +0 -8
- package/dist/node_modules/lodash-es/isArrayLikeObject.js +0 -8
- package/dist/node_modules/lodash-es/isPlainObject.js +0 -16
- package/dist/node_modules/lodash-es/keysIn.js +0 -9
- package/dist/node_modules/lodash-es/merge.js +0 -8
- package/dist/node_modules/lodash-es/toPlainObject.js +0 -8
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ProductType as a, MessageType as o } from "./schemas.js";
|
|
2
|
+
a.EMAIL;
|
|
3
|
+
o.PROMOTIONAL;
|
|
4
|
+
const e = [
|
|
5
|
+
"alfredtesting",
|
|
6
|
+
"electio",
|
|
7
|
+
"eurekatest",
|
|
8
|
+
"gachapontestpart",
|
|
9
|
+
"gluautomation1",
|
|
10
|
+
"gluautomation2",
|
|
11
|
+
"gluautomation3",
|
|
12
|
+
"gluautomation4",
|
|
13
|
+
"inone",
|
|
14
|
+
"inshoppingcart",
|
|
15
|
+
"krakentest",
|
|
16
|
+
"leeroy",
|
|
17
|
+
"newsletteruat",
|
|
18
|
+
"ozaspava",
|
|
19
|
+
"piratesquad",
|
|
20
|
+
"qaautomation1",
|
|
21
|
+
"qaautomation2",
|
|
22
|
+
"qaautomation3",
|
|
23
|
+
"qaautomation4",
|
|
24
|
+
"roiautomation",
|
|
25
|
+
"seleniumautomation",
|
|
26
|
+
"seleniumautomation1",
|
|
27
|
+
"seleniumautomation2",
|
|
28
|
+
"seleniumautomation3",
|
|
29
|
+
"shopbagg",
|
|
30
|
+
"shopifytest",
|
|
31
|
+
"singlepageqa",
|
|
32
|
+
"testqa",
|
|
33
|
+
"vikingsankara",
|
|
34
|
+
"stripoeditorlivetest"
|
|
35
|
+
];
|
|
36
|
+
function n(t) {
|
|
37
|
+
return e.includes(t);
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
o as MessageType,
|
|
41
|
+
a as ProductType,
|
|
42
|
+
e as TEST_PARTNERS,
|
|
43
|
+
n as isTestPartner
|
|
44
|
+
};
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { object as o, number as p, optional as e, string as t, pipe as m, picklist as n, boolean as c, array as a, minLength as u, literal as r, custom as d, variant as S } from "../../node_modules/valibot/dist/index.js";
|
|
2
|
+
const i = {
|
|
3
|
+
/** Promotional/marketing emails */
|
|
4
|
+
PROMOTIONAL: 1,
|
|
5
|
+
/** Transactional/system emails */
|
|
6
|
+
TRANSACTIONAL: 2
|
|
7
|
+
}, s = {
|
|
8
|
+
/** Standard email campaigns */
|
|
9
|
+
EMAIL: 60,
|
|
10
|
+
/** Architect journey builder */
|
|
11
|
+
ARCHITECT: 49,
|
|
12
|
+
/** Unsubscribe page builder */
|
|
13
|
+
UNSUBSCRIBE_PAGES: 97
|
|
14
|
+
}, h = o({
|
|
15
|
+
/** Unique identifier for the template being edited */
|
|
16
|
+
templateId: m(
|
|
17
|
+
t(),
|
|
18
|
+
u(1, "templateId is required")
|
|
19
|
+
),
|
|
20
|
+
/** Unique identifier for the user editing the template */
|
|
21
|
+
userId: m(
|
|
22
|
+
t(),
|
|
23
|
+
u(1, "userId is required")
|
|
24
|
+
),
|
|
25
|
+
/** Optional variation ID for A/B testing */
|
|
26
|
+
variationId: e(t())
|
|
27
|
+
}), k = o({
|
|
28
|
+
/** Partner/organization name (required) */
|
|
29
|
+
name: m(
|
|
30
|
+
t(),
|
|
31
|
+
u(1, "partner.name is required")
|
|
32
|
+
),
|
|
33
|
+
/** Product type identifier */
|
|
34
|
+
productType: e(
|
|
35
|
+
n([
|
|
36
|
+
s.EMAIL,
|
|
37
|
+
s.ARCHITECT,
|
|
38
|
+
s.UNSUBSCRIBE_PAGES
|
|
39
|
+
]),
|
|
40
|
+
s.EMAIL
|
|
41
|
+
),
|
|
42
|
+
/** Message type (promotional or transactional) */
|
|
43
|
+
messageType: e(
|
|
44
|
+
n([i.PROMOTIONAL, i.TRANSACTIONAL]),
|
|
45
|
+
i.PROMOTIONAL
|
|
46
|
+
),
|
|
47
|
+
/** Display name for the current user */
|
|
48
|
+
username: e(t(), "Guido User")
|
|
49
|
+
}), y = o({
|
|
50
|
+
/** Display text for the dynamic content */
|
|
51
|
+
text: t(),
|
|
52
|
+
/** Template variable value (e.g., {{username}}) */
|
|
53
|
+
value: t(),
|
|
54
|
+
/** Fallback value if variable is empty */
|
|
55
|
+
fallback: e(t()),
|
|
56
|
+
/** Optional formatting options */
|
|
57
|
+
format: e(
|
|
58
|
+
o({
|
|
59
|
+
key: t(),
|
|
60
|
+
value: t()
|
|
61
|
+
})
|
|
62
|
+
)
|
|
63
|
+
}), R = o({
|
|
64
|
+
/** Initial HTML content */
|
|
65
|
+
html: e(t(), ""),
|
|
66
|
+
/** Initial CSS content */
|
|
67
|
+
css: e(t(), ""),
|
|
68
|
+
/** Preselected dynamic content items */
|
|
69
|
+
preselectedDynamicContent: e(
|
|
70
|
+
a(y),
|
|
71
|
+
[]
|
|
72
|
+
),
|
|
73
|
+
/** Selected unsubscribe page IDs */
|
|
74
|
+
selectedUnsubscribePages: e(a(p()), [])
|
|
75
|
+
}), C = o({
|
|
76
|
+
/** Sender display name */
|
|
77
|
+
senderName: e(t(), ""),
|
|
78
|
+
/** Email subject line */
|
|
79
|
+
subject: e(t(), "")
|
|
80
|
+
}), I = o({
|
|
81
|
+
/** Locale for the editor UI */
|
|
82
|
+
locale: e(t(), "en"),
|
|
83
|
+
/** Path to translations object */
|
|
84
|
+
translationsPath: e(t(), "window.trans.en"),
|
|
85
|
+
/** Migration date for template compatibility */
|
|
86
|
+
migrationDate: e(p(), 1759696858),
|
|
87
|
+
/** Email header settings */
|
|
88
|
+
emailHeader: e(C, { senderName: "", subject: "" })
|
|
89
|
+
}), T = o({
|
|
90
|
+
/** Whether to show the header bar */
|
|
91
|
+
showHeader: e(c(), !0),
|
|
92
|
+
/** Custom label for back button (if shown) */
|
|
93
|
+
backButtonLabel: e(t())
|
|
94
|
+
}), A = o({
|
|
95
|
+
/** Enable dynamic content insertion */
|
|
96
|
+
dynamicContent: e(c(), !0),
|
|
97
|
+
/** Enable save as template functionality */
|
|
98
|
+
saveAsTemplate: e(c(), !0),
|
|
99
|
+
/** Enable version history */
|
|
100
|
+
versionHistory: e(c(), !0),
|
|
101
|
+
/** Enable test message sending */
|
|
102
|
+
testMessage: e(c(), !0),
|
|
103
|
+
/** Enable display conditions */
|
|
104
|
+
displayConditions: e(c(), !0),
|
|
105
|
+
/** Enable unsubscribe block */
|
|
106
|
+
unsubscribe: e(c(), !0)
|
|
107
|
+
}), f = n([
|
|
108
|
+
"amp-accordion",
|
|
109
|
+
"amp-carousel",
|
|
110
|
+
"amp-form-controls",
|
|
111
|
+
"banner-block",
|
|
112
|
+
"button-block",
|
|
113
|
+
"html-block",
|
|
114
|
+
"image-block",
|
|
115
|
+
"menu-block",
|
|
116
|
+
"social-block",
|
|
117
|
+
"spacer-block",
|
|
118
|
+
"text-block",
|
|
119
|
+
"timer-block",
|
|
120
|
+
"video-block"
|
|
121
|
+
]), g = n([
|
|
122
|
+
"dynamic-content",
|
|
123
|
+
"checkbox-block",
|
|
124
|
+
"radio-button-block",
|
|
125
|
+
"recommendation-block",
|
|
126
|
+
"unsubscribe-block",
|
|
127
|
+
"coupon-block",
|
|
128
|
+
"items-block"
|
|
129
|
+
]), E = o({
|
|
130
|
+
/** Default blocks to exclude from the editor */
|
|
131
|
+
excludeDefaults: e(
|
|
132
|
+
a(f),
|
|
133
|
+
[]
|
|
134
|
+
),
|
|
135
|
+
/** Custom blocks to include in the editor */
|
|
136
|
+
includeCustoms: e(
|
|
137
|
+
a(g),
|
|
138
|
+
[]
|
|
139
|
+
)
|
|
140
|
+
}), l = o({
|
|
141
|
+
/** Unique identifier for the rule */
|
|
142
|
+
id: t(),
|
|
143
|
+
/** Human-readable description */
|
|
144
|
+
description: e(t()),
|
|
145
|
+
/** Priority for rule ordering (lower = earlier) */
|
|
146
|
+
priority: p()
|
|
147
|
+
}), N = o({
|
|
148
|
+
...l.entries,
|
|
149
|
+
type: r("replace"),
|
|
150
|
+
/** String to search for */
|
|
151
|
+
search: t(),
|
|
152
|
+
/** Replacement string */
|
|
153
|
+
replacement: t(),
|
|
154
|
+
/** Replace all occurrences (default: false) */
|
|
155
|
+
replaceAll: e(c())
|
|
156
|
+
}), O = o({
|
|
157
|
+
...l.entries,
|
|
158
|
+
type: r("regex"),
|
|
159
|
+
/** Regex pattern string */
|
|
160
|
+
pattern: t(),
|
|
161
|
+
/** Replacement string (supports $1, $2, etc.) */
|
|
162
|
+
replacement: t(),
|
|
163
|
+
/** Regex flags (e.g., 'gi') */
|
|
164
|
+
flags: e(t())
|
|
165
|
+
}), L = o({
|
|
166
|
+
...l.entries,
|
|
167
|
+
type: r("remove"),
|
|
168
|
+
/** Strings or patterns to remove */
|
|
169
|
+
targets: a(t())
|
|
170
|
+
}), v = o({
|
|
171
|
+
...l.entries,
|
|
172
|
+
type: r("custom"),
|
|
173
|
+
/** Custom processor function */
|
|
174
|
+
processor: d(
|
|
175
|
+
(b) => typeof b == "function",
|
|
176
|
+
"processor must be a function"
|
|
177
|
+
)
|
|
178
|
+
}), B = S("type", [
|
|
179
|
+
N,
|
|
180
|
+
O,
|
|
181
|
+
L,
|
|
182
|
+
v
|
|
183
|
+
]), P = o({
|
|
184
|
+
/** Custom compiler rules to apply */
|
|
185
|
+
customRules: e(a(B), []),
|
|
186
|
+
/** Skip default compiler rules */
|
|
187
|
+
ignoreDefaultRules: e(c(), !1)
|
|
188
|
+
}), x = o({
|
|
189
|
+
// Required sections
|
|
190
|
+
/** Identity configuration (required) */
|
|
191
|
+
identity: h,
|
|
192
|
+
/** Partner configuration (required) */
|
|
193
|
+
partner: k,
|
|
194
|
+
// Optional sections (with defaults)
|
|
195
|
+
/** Template content and presets */
|
|
196
|
+
template: e(R, {}),
|
|
197
|
+
/** Editor settings */
|
|
198
|
+
editor: e(I, {}),
|
|
199
|
+
/** UI configuration */
|
|
200
|
+
ui: e(T, {}),
|
|
201
|
+
/** Feature toggles */
|
|
202
|
+
features: e(A, {}),
|
|
203
|
+
/** Block configuration */
|
|
204
|
+
blocks: e(E, {}),
|
|
205
|
+
/** Compiler configuration */
|
|
206
|
+
compiler: e(P, {})
|
|
207
|
+
});
|
|
208
|
+
export {
|
|
209
|
+
E as BlocksSchema,
|
|
210
|
+
B as CompilerRuleSchema,
|
|
211
|
+
P as CompilerSchema,
|
|
212
|
+
g as CustomBlockTypeSchema,
|
|
213
|
+
v as CustomRuleSchema,
|
|
214
|
+
f as DefaultBlockTypeSchema,
|
|
215
|
+
y as DynamicContentSchema,
|
|
216
|
+
I as EditorSchema,
|
|
217
|
+
C as EmailHeaderSchema,
|
|
218
|
+
A as FeaturesSchema,
|
|
219
|
+
x as GuidoConfigSchema,
|
|
220
|
+
h as IdentitySchema,
|
|
221
|
+
i as MessageType,
|
|
222
|
+
k as PartnerSchema,
|
|
223
|
+
s as ProductType,
|
|
224
|
+
O as RegexRuleSchema,
|
|
225
|
+
L as RemoveRuleSchema,
|
|
226
|
+
N as ReplaceRuleSchema,
|
|
227
|
+
R as TemplateSchema,
|
|
228
|
+
T as UISchema
|
|
229
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { safeParse as n } from "../../node_modules/valibot/dist/index.js";
|
|
2
|
+
import { GuidoConfigSchema as o } from "./schemas.js";
|
|
3
|
+
function i(s) {
|
|
4
|
+
return s.map((r) => {
|
|
5
|
+
var e;
|
|
6
|
+
return `[${((e = r.path) == null ? void 0 : e.map((a) => a.key).join(".")) || "root"}] ${r.message}`;
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
function c(s) {
|
|
10
|
+
return s.map((r) => {
|
|
11
|
+
var t;
|
|
12
|
+
return {
|
|
13
|
+
path: ((t = r.path) == null ? void 0 : t.map((e) => e.key).join(".")) || "root",
|
|
14
|
+
message: r.message
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function u(s) {
|
|
19
|
+
const r = n(o, s);
|
|
20
|
+
return r.success ? {
|
|
21
|
+
success: !0,
|
|
22
|
+
data: r.output
|
|
23
|
+
} : {
|
|
24
|
+
success: !1,
|
|
25
|
+
errors: i(r.issues)
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function p(s) {
|
|
29
|
+
var t;
|
|
30
|
+
const r = u(s);
|
|
31
|
+
if (!r.success)
|
|
32
|
+
throw new Error(
|
|
33
|
+
`Invalid GuidoConfig:
|
|
34
|
+
${(t = r.errors) == null ? void 0 : t.join(`
|
|
35
|
+
`)}`
|
|
36
|
+
);
|
|
37
|
+
return r.data;
|
|
38
|
+
}
|
|
39
|
+
function m(s) {
|
|
40
|
+
const r = u(s);
|
|
41
|
+
return r.success ? r.data : (console.error("[Guido] Invalid configuration:", r.errors), null);
|
|
42
|
+
}
|
|
43
|
+
function d(s) {
|
|
44
|
+
const r = n(o, s);
|
|
45
|
+
return r.success ? [] : c(r.issues);
|
|
46
|
+
}
|
|
47
|
+
function g(s) {
|
|
48
|
+
return n(o, s).success;
|
|
49
|
+
}
|
|
50
|
+
export {
|
|
51
|
+
d as getValidationErrors,
|
|
52
|
+
g as isValidConfig,
|
|
53
|
+
p as parseConfig,
|
|
54
|
+
m as parseConfigSafe,
|
|
55
|
+
u as validateConfig
|
|
56
|
+
};
|
|
@@ -1,134 +1,114 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { provideGuidoActions as
|
|
1
|
+
import { defineComponent as q, defineAsyncComponent as U, ref as W, computed as I, watch as z, onMounted as K, onUnmounted as M } from "vue";
|
|
2
|
+
import { provideGuidoActions as j } from "../composables/useGuidoActions.js";
|
|
3
3
|
import { usePartner as J } from "../composables/usePartner.js";
|
|
4
4
|
import { useStripo as Q } from "../composables/useStripo.js";
|
|
5
|
+
import { useTimerClone as V } from "../composables/useTimerClone.js";
|
|
5
6
|
import { migrate as L } from "../config/migrator/index.js";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { useEditorStore as ae } from "../stores/editor.js";
|
|
7
|
+
import X from "./organisms/base/Toaster.vue.js";
|
|
8
|
+
import Y from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
9
|
+
import Z from "./organisms/header/HeaderWrapper.vue.js";
|
|
10
|
+
import $ from "./organisms/LoadingWrapper.vue.js";
|
|
11
|
+
import ee from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
12
|
+
import oe from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
13
|
+
import { useStripoApi as te } from "../services/stripoApi.js";
|
|
14
|
+
import { useConfigStore as ne } from "../stores/config.js";
|
|
15
|
+
import { useDynamicContentStore as re } from "../stores/dynamic-content.js";
|
|
16
|
+
import { useEditorStore as se } from "../stores/editor.js";
|
|
17
17
|
import { usePreviewStore as ce } from "../stores/preview.js";
|
|
18
|
-
import {
|
|
19
|
-
import
|
|
20
|
-
const
|
|
18
|
+
import { useToasterStore as ie } from "../stores/toaster.js";
|
|
19
|
+
import { useUnsubscribeStore as ae } from "../stores/unsubscribe.js";
|
|
20
|
+
const Pe = /* @__PURE__ */ q({
|
|
21
21
|
__name: "Guido",
|
|
22
22
|
props: {
|
|
23
|
-
|
|
24
|
-
userId: null,
|
|
25
|
-
messageType: null,
|
|
26
|
-
partnerName: null,
|
|
27
|
-
productType: null,
|
|
28
|
-
username: null,
|
|
29
|
-
html: null,
|
|
30
|
-
css: null,
|
|
31
|
-
guidoConfig: null,
|
|
32
|
-
templateConfig: null
|
|
23
|
+
config: null
|
|
33
24
|
},
|
|
34
25
|
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
35
|
-
setup(
|
|
36
|
-
const u =
|
|
26
|
+
setup(A, { expose: R, emit: t }) {
|
|
27
|
+
const u = A, F = U(
|
|
37
28
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
38
|
-
),
|
|
29
|
+
), G = U(
|
|
39
30
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
40
|
-
), p =
|
|
31
|
+
), p = W(), i = re(), v = ae(), f = ie(), n = ne();
|
|
32
|
+
n.init(u.config);
|
|
33
|
+
const a = se(), H = ce(), r = I(() => a.hasChanges), { isTestPartner: O } = J(), y = () => {
|
|
41
34
|
var e;
|
|
42
35
|
return (e = p.value) == null ? void 0 : e.handleSave(!0);
|
|
43
|
-
}, {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
productType: m = v(),
|
|
52
|
-
messageType: w = X,
|
|
53
|
-
username: D = V
|
|
54
|
-
} = u, d = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
|
|
55
|
-
s.templateId = a, window.GuidoConfig = de(Y, h), window.GuidoConfig.partner = {
|
|
56
|
-
partnerName: c,
|
|
57
|
-
productType: m,
|
|
58
|
-
messageType: w
|
|
59
|
-
}, f.templateConfig = t;
|
|
60
|
-
const { initPlugin: E } = Q({
|
|
61
|
-
emailId: a,
|
|
62
|
-
userId: C,
|
|
63
|
-
username: D,
|
|
64
|
-
partnerName: c,
|
|
65
|
-
productType: m,
|
|
36
|
+
}, { templateId: m, userId: h, partnerName: b, productType: g, username: S, template: o } = n, s = (o == null ? void 0 : o.html) || "", w = (o == null ? void 0 : o.css) || "", d = (o == null ? void 0 : o.preselectedDynamicContent) || [];
|
|
37
|
+
a.templateId = m;
|
|
38
|
+
const c = W(!1), { initPlugin: C } = Q({
|
|
39
|
+
emailId: m,
|
|
40
|
+
userId: h,
|
|
41
|
+
username: S,
|
|
42
|
+
partnerName: b,
|
|
43
|
+
productType: g,
|
|
66
44
|
preselectedDynamicContentList: d,
|
|
67
45
|
onReady: () => {
|
|
68
|
-
console.debug("guido:ready"),
|
|
46
|
+
console.debug("guido:ready"), t("ready");
|
|
69
47
|
}
|
|
70
|
-
}), { getDefaultTemplate: T } =
|
|
48
|
+
}), { getDefaultTemplate: D } = te(), { cloneTimersOnSave: E, hasTimerBlocks: T } = V(), x = I(() => {
|
|
71
49
|
var e;
|
|
72
|
-
return !((e =
|
|
50
|
+
return !((e = n.ui) != null && e.showHeader);
|
|
73
51
|
});
|
|
74
|
-
|
|
52
|
+
j({
|
|
75
53
|
onBack: () => {
|
|
76
|
-
console.debug("guido:back"),
|
|
54
|
+
console.debug("guido:back"), t("back");
|
|
77
55
|
},
|
|
78
56
|
onSaveStart: () => {
|
|
79
|
-
console.debug("guido:save:start"),
|
|
57
|
+
console.debug("guido:save:start"), t("save:start");
|
|
80
58
|
},
|
|
81
59
|
onSaveComplete: (e) => {
|
|
82
|
-
console.debug("guido:save:complete", e),
|
|
60
|
+
console.debug("guido:save:complete", e), t("save:complete", e);
|
|
83
61
|
},
|
|
84
62
|
onTestEmailClick: () => {
|
|
85
|
-
console.debug("guido:test-email:click"),
|
|
63
|
+
console.debug("guido:test-email:click"), t("test-email:click");
|
|
86
64
|
}
|
|
87
65
|
});
|
|
88
|
-
const
|
|
66
|
+
const k = (e) => {
|
|
89
67
|
console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
|
|
90
|
-
},
|
|
68
|
+
}, _ = () => {
|
|
91
69
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
92
70
|
};
|
|
93
|
-
|
|
94
|
-
|
|
71
|
+
z(() => r.value, () => {
|
|
72
|
+
t("on-change", r.value);
|
|
95
73
|
});
|
|
96
74
|
const l = (e) => {
|
|
97
|
-
const
|
|
98
|
-
console.debug("dynamic-content:open",
|
|
75
|
+
const P = e, { attribute: B, position: N } = P.detail;
|
|
76
|
+
console.debug("dynamic-content:open", P.detail), t("dynamic-content:open", B, N);
|
|
99
77
|
};
|
|
100
78
|
return K(async () => {
|
|
101
79
|
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
|
|
102
80
|
try {
|
|
103
|
-
|
|
81
|
+
v.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
|
|
104
82
|
let e = {
|
|
105
|
-
html:
|
|
106
|
-
css:
|
|
83
|
+
html: s && await L(s),
|
|
84
|
+
css: w,
|
|
107
85
|
forceRecreate: !0
|
|
108
86
|
// TODO: It should be false for old templates. We will communicate with Stripo
|
|
109
87
|
};
|
|
110
|
-
e.html || (e = await
|
|
88
|
+
e.html || (e = await D(), e.html = await L(e.html)), T(e.html) && (e.html = await E(e.html)), await C(e), i.selectedDynamicContentList = d;
|
|
111
89
|
} catch (e) {
|
|
112
90
|
console.error("Failed to initialize Stripo editor:", e);
|
|
113
91
|
}
|
|
114
|
-
document.addEventListener("dynamic-content:open", l);
|
|
115
|
-
}),
|
|
116
|
-
|
|
92
|
+
document.addEventListener("dynamic-content:open", l), c.value = !0;
|
|
93
|
+
}), M(() => {
|
|
94
|
+
var e;
|
|
95
|
+
c.value && (f.hideToaster(), (e = document.querySelector("#guido__toaster")) == null || e.remove()), c.value = !1, document.removeEventListener("dynamic-content:open", l);
|
|
117
96
|
try {
|
|
118
97
|
window.UIEditor.removeEditor();
|
|
119
98
|
} catch {
|
|
120
99
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
121
100
|
}
|
|
122
|
-
|
|
101
|
+
n.reset();
|
|
102
|
+
}), R({
|
|
123
103
|
dynamicContent: {
|
|
124
|
-
insert:
|
|
125
|
-
close:
|
|
104
|
+
insert: k,
|
|
105
|
+
close: _
|
|
126
106
|
},
|
|
127
|
-
hasChanges:
|
|
128
|
-
saveSilent:
|
|
129
|
-
}), { __sfc: !0, PreviewContainer:
|
|
107
|
+
hasChanges: r,
|
|
108
|
+
saveSilent: y
|
|
109
|
+
}), { __sfc: !0, PreviewContainer: F, OnboardingWrapper: G, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: v, toasterStore: f, props: u, configStore: n, editorStore: a, previewStore: H, hasChanges: r, isTestPartner: O, saveSilent: y, templateId: m, userId: h, partnerName: b, productType: g, username: S, templateConfig: o, html: s, css: w, preselectedDynamicContentList: d, editorReady: c, emit: t, initPlugin: C, getDefaultTemplate: D, cloneTimersOnSave: E, hasTimerBlocks: T, noHeader: x, insertDynamicContent: k, closeDynamicContent: _, handleDynamicContentOpen: l, Toaster: X, FilterSelectionDrawer: Y, HeaderWrapper: Z, LoadingWrapper: $, SaveAsTemplateDrawer: ee, UnsubscribeWrapper: oe };
|
|
130
110
|
}
|
|
131
111
|
});
|
|
132
112
|
export {
|
|
133
|
-
|
|
113
|
+
Pe as default
|
|
134
114
|
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import n 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, e = o._self._c, t = o._self._setupProxy;
|
|
5
|
+
return e(t.InToasts, { attrs: { id: "guido__toaster", "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
|
+
n,
|
|
8
8
|
r,
|
|
9
9
|
a,
|
|
10
10
|
!1,
|
|
11
11
|
null,
|
|
12
12
|
null
|
|
13
13
|
);
|
|
14
|
-
const
|
|
14
|
+
const f = _.exports;
|
|
15
15
|
export {
|
|
16
|
-
|
|
16
|
+
f as default
|
|
17
17
|
};
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useConfig as
|
|
3
|
-
import { useTranslations as
|
|
4
|
-
import { InIcons as
|
|
5
|
-
const
|
|
1
|
+
import { defineComponent as i, computed as s } from "vue";
|
|
2
|
+
import { useConfig as c } from "../../../../composables/useConfig.js";
|
|
3
|
+
import { useTranslations as d } from "../../../../composables/useTranslations.js";
|
|
4
|
+
import { InIcons as u } from "@useinsider/design-system-vue";
|
|
5
|
+
const g = /* @__PURE__ */ i({
|
|
6
6
|
__name: "EmailHeaderInfo",
|
|
7
7
|
setup(f) {
|
|
8
|
-
const { config:
|
|
9
|
-
var e;
|
|
10
|
-
return ((e = t.emailHeader) == null ? void 0 :
|
|
11
|
-
}),
|
|
12
|
-
var e;
|
|
13
|
-
return ((e = t.emailHeader) == null ? void 0 :
|
|
8
|
+
const { config: n } = c(), r = d(), a = s(() => {
|
|
9
|
+
var e, t, o;
|
|
10
|
+
return ((o = (t = (e = n.value) == null ? void 0 : e.editor) == null ? void 0 : t.emailHeader) == null ? void 0 : o.senderName) || r("settings.sender-name");
|
|
11
|
+
}), m = s(() => {
|
|
12
|
+
var e, t, o;
|
|
13
|
+
return ((o = (t = (e = n.value) == null ? void 0 : e.editor) == null ? void 0 : t.emailHeader) == null ? void 0 : o.subject) || r("email-editor.default-subject");
|
|
14
14
|
});
|
|
15
|
-
return { __sfc: !0, config:
|
|
15
|
+
return { __sfc: !0, config: n, trans: r, senderName: a, subject: m, InIcons: u };
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
export {
|
|
19
|
-
|
|
19
|
+
g as default
|
|
20
20
|
};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import i from "./EmailSizeIndicator.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import
|
|
4
|
-
var
|
|
3
|
+
import o from "../../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
+
var r = function() {
|
|
5
5
|
var s = this, e = s._self._c, t = s._self._setupProxy;
|
|
6
|
-
return e("div", { staticClass: "d-f a-i-c j-c-c" }, [e(t.InProgress, { staticClass: "min-w-15-s", attrs: { id: "email-size-progress", "description-status": "", "description-position": "left", description: t.htmlSize, "max-value": t.MAX_EMAIL_SIZE_IN_KB, type: t.progress.type, value: t.progress.value } }), e(t.
|
|
7
|
-
}, a = [], n = /* @__PURE__ */
|
|
6
|
+
return e("div", { staticClass: "d-f a-i-c j-c-c" }, [e(t.InProgress, { staticClass: "min-w-15-s", attrs: { id: "email-size-progress", "description-status": "", "description-position": "left", description: t.htmlSize, "max-value": t.MAX_EMAIL_SIZE_IN_KB, type: t.progress.type, value: t.progress.value } }), e(t.InTooltipV2, { attrs: { id: "email-size-tooltip", "icon-status": "", "static-position": "bottom center", "dynamic-position": !1, text: t.trans("email-editor.preview-design-size-tooltip") } })], 1);
|
|
7
|
+
}, a = [], n = /* @__PURE__ */ o(
|
|
8
8
|
i,
|
|
9
|
-
|
|
9
|
+
r,
|
|
10
10
|
a,
|
|
11
11
|
!1,
|
|
12
12
|
null,
|
|
13
|
-
"
|
|
13
|
+
"eb2f9f20"
|
|
14
14
|
);
|
|
15
15
|
const m = n.exports;
|
|
16
16
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as c, ref as n, computed as l, watch as u } from "vue";
|
|
2
2
|
import { useTranslations as p } from "../../../../composables/useTranslations.js";
|
|
3
3
|
import { usePreviewStore as _ } from "../../../../stores/preview.js";
|
|
4
|
-
import {
|
|
4
|
+
import { InTooltipV2 as v, InProgress as f } from "@useinsider/design-system-vue";
|
|
5
5
|
const S = /* @__PURE__ */ c({
|
|
6
6
|
__name: "EmailSizeIndicator",
|
|
7
7
|
setup(w) {
|
|
@@ -17,7 +17,7 @@ const S = /* @__PURE__ */ c({
|
|
|
17
17
|
}, i = p();
|
|
18
18
|
return u(() => t.previewHtml, () => {
|
|
19
19
|
r();
|
|
20
|
-
}, { immediate: !0 }), { __sfc: !0, previewStore: t, MAX_EMAIL_SIZE_IN_KB: o, htmlKB: e, progress: s, htmlSize: a, calculateProgress: r, trans: i, InProgress: f,
|
|
20
|
+
}, { immediate: !0 }), { __sfc: !0, previewStore: t, MAX_EMAIL_SIZE_IN_KB: o, htmlKB: e, progress: s, htmlSize: a, calculateProgress: r, trans: i, InProgress: f, InTooltipV2: v };
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
export {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import e from "./InboxView.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import
|
|
4
|
-
var
|
|
3
|
+
import r from "../../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
+
var a = function() {
|
|
5
5
|
var s = this, t = s._self._c, c = s._self._setupProxy;
|
|
6
6
|
return t("div", { staticClass: "p-y-13 p-x-3 bor-b-w-1 bor-b-s-s bor-b-c-50 cur-p b-c-4 b-c-h-5 p-3", on: { click: function(_) {
|
|
7
7
|
return c.emit("open-email");
|
|
8
8
|
} } }, [t("div", { staticClass: "d-f j-c-s-b a-i-c w-1" }, [t("div", { staticClass: "f-g-1 min-w-0-s" }, [t("div", { staticClass: "f-s-1 f-w-600 t-c-53 l-h-1 mb-12 cropped-text" }, [s._v(" " + s._s(c.senderName) + " ")]), t("div", { staticClass: "f-s-12 f-w-400 t-c-55 l-h-1 cropped-text" }, [s._v(" " + s._s(c.subject) + " ")])]), t("div", { staticClass: "f-sh-0 ml-2 f-s-12 f-w-400 t-c-55 l-h-1" }, [s._v(" " + s._s(c.trans("product-catalog.today")) + " ")]), t(c.InIcons, { staticClass: "i-c-52", attrs: { name: "line-chevron-right" } })], 1)]);
|
|
9
|
-
}, i = [], n = /* @__PURE__ */
|
|
9
|
+
}, i = [], n = /* @__PURE__ */ r(
|
|
10
10
|
e,
|
|
11
|
-
|
|
11
|
+
a,
|
|
12
12
|
i,
|
|
13
13
|
!1,
|
|
14
14
|
null,
|
|
15
|
-
"
|
|
15
|
+
"4b876c1b"
|
|
16
16
|
);
|
|
17
17
|
const m = n.exports;
|
|
18
18
|
export {
|