@useinsider/guido 2.1.0-beta.5e38fec → 2.1.0-beta.5ec7b79
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 +3 -1
- package/dist/composables/useSave.js +16 -12
- package/dist/composables/useStripo.js +59 -57
- package/dist/composables/useStripoEventHandler.js +27 -12
- package/dist/composables/useSyncModuleExtractor.js +33 -0
- package/dist/composables/useVersionHistoryApi.js +1 -1
- package/dist/enums/unsubscribe.js +25 -21
- package/dist/services/stripoApi.js +50 -14
- package/dist/src/@types/events.d.ts +34 -2
- package/dist/src/composables/useSyncModuleExtractor.d.ts +4 -0
- package/dist/src/enums/unsubscribe.d.ts +3 -0
- package/dist/src/mock/api/settings.d.ts +2 -0
- package/dist/src/services/stripoApi.d.ts +5 -0
- package/dist/src/stores/editor.d.ts +23 -0
- package/dist/static/styles/components/notification.css.js +0 -14
- package/dist/static/styles/variables.css.js +0 -1
- package/dist/stores/editor.js +2 -1
- package/package.json +1 -1
- package/dist/config/localePatch/index.js +0 -13
- package/dist/config/localePatch/labels.json.js +0 -7
- package/dist/config/localePatch/toasters.json.js +0 -48
- package/dist/config/localePatch/tooltips.json.js +0 -82
- package/dist/src/config/localePatch/index.d.ts +0 -138
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<a href="https://www.youtube.com/shorts/Y0RwBeMezL4" target="_blank" rel="noopener noreferrer">
|
|
3
|
-
<img width="180"
|
|
3
|
+
<img width="180"
|
|
4
|
+
src="https://web-image.useinsider.com/guido/defaultImageLibrary/iUH0liTK0d2YDsVB5LDN1770169173.jpg"
|
|
5
|
+
alt="Guido logo">
|
|
4
6
|
</a>
|
|
5
7
|
</p>
|
|
6
8
|
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import { useConfig as
|
|
2
|
-
import { useSaveStart as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { useConfig as u } from "./useConfig.js";
|
|
2
|
+
import { useSaveStart as d, useSaveComplete as p } from "./useGuidoActions.js";
|
|
3
|
+
import { useSyncModuleExtractor as f } from "./useSyncModuleExtractor.js";
|
|
4
|
+
import { useStripoApi as v } from "../services/stripoApi.js";
|
|
5
|
+
import { useTemplatePreparation as S } from "../utils/templatePreparation.js";
|
|
6
|
+
import { useHtmlValidator as x } from "./useHtmlValidator.js";
|
|
7
|
+
const E = () => {
|
|
8
|
+
const o = d(), s = p(), { validateHtml: i } = x(), { callbacks: a } = u(), { extractSyncModuleUnsubscribeData: r } = f(), { setSyncModuleUnsubscriptionPages: n } = v();
|
|
9
|
+
return { save: async (l = !1) => {
|
|
8
10
|
var e;
|
|
9
|
-
|
|
10
|
-
const { prepareTemplateDetails:
|
|
11
|
-
if (await
|
|
12
|
-
return
|
|
11
|
+
o();
|
|
12
|
+
const { prepareTemplateDetails: c } = S(), t = await c();
|
|
13
|
+
if (!await i(t.compiledHtml, t.dynamicContentList, !0) || (e = a.value) != null && e.externalValidation && !await a.value.externalValidation(t))
|
|
14
|
+
return;
|
|
15
|
+
const m = r(t.rawHtml);
|
|
16
|
+
return await n(m), l || s(t), t;
|
|
13
17
|
} };
|
|
14
18
|
};
|
|
15
19
|
export {
|
|
16
|
-
|
|
20
|
+
E as useSave
|
|
17
21
|
};
|
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
import { useActionsApi as
|
|
2
|
-
import { useBlocksConfig as
|
|
3
|
-
import { useConfig as
|
|
4
|
-
import { useCustomInterfaceAppearance as
|
|
5
|
-
import { useStripoEventHandler as
|
|
6
|
-
import { useToaster as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import
|
|
13
|
-
import O from "../package.json.js";
|
|
1
|
+
import { useActionsApi as M } from "./useActionsApi.js";
|
|
2
|
+
import { useBlocksConfig as A } from "./useBlocksConfig.js";
|
|
3
|
+
import { useConfig as F } from "./useConfig.js";
|
|
4
|
+
import { useCustomInterfaceAppearance as D } from "./useCustomInterfaceAppearance.js";
|
|
5
|
+
import { useStripoEventHandler as I } from "./useStripoEventHandler.js";
|
|
6
|
+
import { useToaster as U } from "./useToaster.js";
|
|
7
|
+
import { displayConditions as P } from "../enums/displayConditions.js";
|
|
8
|
+
import { useStripoApi as R } from "../services/stripoApi.js";
|
|
9
|
+
import H from "../static/styles/customEditorStyle.css.js";
|
|
10
|
+
import { useEditorStore as S } from "../stores/editor.js";
|
|
11
|
+
import { dynamicContentToMergeTags as O } from "../utils/genericUtil.js";
|
|
12
|
+
import q from "../package.json.js";
|
|
14
13
|
const Z = (c) => {
|
|
15
|
-
const { features: l, template:
|
|
16
|
-
var
|
|
17
|
-
const
|
|
14
|
+
const { features: l, template: C } = F(), { handleError: u } = U(), { getToken: E, getCustomFonts: h, getSyncModulesStatus: w } = R(), { handleEvent: b } = I(), { getStripoBlocksConfig: k } = A(), T = async (i, n = [], r = !1) => {
|
|
15
|
+
var g, f, y;
|
|
16
|
+
const e = S(), { html: p, css: a } = i, { baseBlocks: t, extensions: d } = await k(), m = ((g = l.value) == null ? void 0 : g.displayConditions) ?? !0, _ = ((f = l.value) == null ? void 0 : f.modulesDisabled) ?? !1, B = ((y = C.value) == null ? void 0 : y.forceRecreate) ?? !1;
|
|
18
17
|
window.UIEditor.initEditor(
|
|
19
18
|
document.querySelector("#guido-editor"),
|
|
20
19
|
{
|
|
21
20
|
metadata: c,
|
|
22
|
-
html:
|
|
23
|
-
css:
|
|
24
|
-
forceRecreate:
|
|
21
|
+
html: p,
|
|
22
|
+
css: a,
|
|
23
|
+
forceRecreate: B,
|
|
25
24
|
locale: "en",
|
|
26
25
|
undoButtonSelector: "#guido__undo-button",
|
|
27
26
|
redoButtonSelector: "#guido__redo-button",
|
|
@@ -31,86 +30,89 @@ const Z = (c) => {
|
|
|
31
30
|
customAppearanceMergetags: !0,
|
|
32
31
|
customAppearanceMergetagsBorderColor: "#f1f3fe",
|
|
33
32
|
customAppearanceMergetagsBackgroundColor: "#f1f3fe",
|
|
34
|
-
customViewStyles:
|
|
35
|
-
conditionsEnabled:
|
|
36
|
-
customConditionsEnabled:
|
|
37
|
-
conditionCategories:
|
|
33
|
+
customViewStyles: H,
|
|
34
|
+
conditionsEnabled: m,
|
|
35
|
+
customConditionsEnabled: m,
|
|
36
|
+
conditionCategories: P,
|
|
38
37
|
enableXSSSecurity: !0,
|
|
39
|
-
modulesDisabled:
|
|
38
|
+
modulesDisabled: _,
|
|
39
|
+
syncModulesEnabled: r,
|
|
40
40
|
messageSettingsEnabled: !0,
|
|
41
41
|
displayGmailAnnotations: !0,
|
|
42
42
|
displayHiddenPreheader: !1,
|
|
43
43
|
displayTitle: !1,
|
|
44
44
|
displayUTM: !1,
|
|
45
45
|
selectElementAfterDrop: !0,
|
|
46
|
-
...
|
|
46
|
+
...t ? { baseBlocks: t } : {},
|
|
47
47
|
editorFonts: {
|
|
48
48
|
showDefaultStandardFonts: !0,
|
|
49
49
|
showDefaultNotStandardFonts: !0,
|
|
50
|
-
customFonts:
|
|
50
|
+
customFonts: n
|
|
51
51
|
},
|
|
52
52
|
mergeTags: [
|
|
53
53
|
{
|
|
54
|
-
entries:
|
|
54
|
+
entries: O(c.preselectedDynamicContentList)
|
|
55
55
|
}
|
|
56
56
|
],
|
|
57
|
-
async onTokenRefreshRequest(
|
|
57
|
+
async onTokenRefreshRequest(o) {
|
|
58
58
|
try {
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
} catch (
|
|
62
|
-
u(
|
|
59
|
+
const s = await E();
|
|
60
|
+
o(s);
|
|
61
|
+
} catch (s) {
|
|
62
|
+
u(s, "Failed to refresh token");
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
onTemplateLoaded() {
|
|
66
66
|
try {
|
|
67
|
-
const { importCss:
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
const { importCss: o } = D(), { activateCustomViewStyles: s, updateTimerInClonedTemplate: v } = M();
|
|
68
|
+
o(), s(), v(), c.onReady(), e.isStripoInitialized = !0, e.loadingStatus = !1, setTimeout(() => {
|
|
69
|
+
e.hasChanges = !1;
|
|
70
70
|
}, 1e3);
|
|
71
|
-
} catch (
|
|
72
|
-
u(
|
|
71
|
+
} catch (o) {
|
|
72
|
+
u(o, "Failed to load custom interface appearance");
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
|
-
onCodeEditorVisibilityChanged(
|
|
76
|
-
|
|
75
|
+
onCodeEditorVisibilityChanged(o) {
|
|
76
|
+
e.isCodeEditorOpen = o;
|
|
77
77
|
},
|
|
78
|
-
onEditorVisualModeChanged(
|
|
79
|
-
|
|
78
|
+
onEditorVisualModeChanged(o) {
|
|
79
|
+
e.editorVisualMode = o.toLowerCase();
|
|
80
80
|
},
|
|
81
|
-
onVersionHistoryVisibilityChanged(
|
|
82
|
-
|
|
81
|
+
onVersionHistoryVisibilityChanged(o) {
|
|
82
|
+
e.isVersionHistoryOpen = o;
|
|
83
83
|
},
|
|
84
84
|
onDataChanged() {
|
|
85
|
-
|
|
85
|
+
e.hasChanges = !0;
|
|
86
86
|
},
|
|
87
|
-
onEvent:
|
|
87
|
+
onEvent: b,
|
|
88
88
|
ignoreClickOutsideSelectors: [
|
|
89
89
|
"#guido-dynamic-content-modal",
|
|
90
90
|
".in-on-board-wrapper",
|
|
91
91
|
".in-drawer__container"
|
|
92
92
|
],
|
|
93
|
-
extensions:
|
|
94
|
-
localePatch: I
|
|
93
|
+
extensions: d
|
|
95
94
|
}
|
|
96
95
|
);
|
|
97
|
-
},
|
|
98
|
-
var
|
|
96
|
+
}, V = (i) => new Promise((n, r) => {
|
|
97
|
+
var d;
|
|
99
98
|
if (document.getElementById("UiEditorScript")) {
|
|
100
|
-
i(),
|
|
99
|
+
i(), n();
|
|
101
100
|
return;
|
|
102
101
|
}
|
|
103
|
-
const
|
|
104
|
-
t.id = "UiEditorScript", t.type = "module", t.src =
|
|
105
|
-
i(),
|
|
102
|
+
const e = q.guido, a = `https://email-static.useinsider.com/guido/${(d = e == null ? void 0 : e.stripo) == null ? void 0 : d.version}/UIEditor.js`, t = document.createElement("script");
|
|
103
|
+
t.id = "UiEditorScript", t.type = "module", t.src = a, t.onload = () => {
|
|
104
|
+
i(), n();
|
|
106
105
|
}, t.onerror = () => {
|
|
107
|
-
|
|
106
|
+
r(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
|
|
108
107
|
}, document.body.appendChild(t);
|
|
109
108
|
});
|
|
110
109
|
return { initPlugin: async (i) => {
|
|
111
|
-
await
|
|
112
|
-
const r = await
|
|
113
|
-
|
|
110
|
+
await V(async () => {
|
|
111
|
+
const n = S(), [r, e] = await Promise.all([
|
|
112
|
+
h(),
|
|
113
|
+
w()
|
|
114
|
+
]);
|
|
115
|
+
n.syncModulesEnabled = e, await T(i, r, e);
|
|
114
116
|
});
|
|
115
117
|
} };
|
|
116
118
|
};
|
|
@@ -1,20 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { useStripoApi as i } from "../services/stripoApi.js";
|
|
2
|
+
import { useEditorStore as u } from "../stores/editor.js";
|
|
3
|
+
import { useOnboardingStore as l } from "../stores/onboarding.js";
|
|
4
|
+
import { useUnsubscribeStore as b } from "../stores/unsubscribe.js";
|
|
5
|
+
const v = () => {
|
|
6
|
+
const { updateSyncModule: d, getSyncModule: r } = i(), n = u(), s = b(), a = {
|
|
7
|
+
block_dropped: ({ blockName: e }) => {
|
|
8
|
+
if (e === "BLOCK_TEXT") {
|
|
9
|
+
const o = l(), t = !o.shouldShowOnboarding("textBlockOnboarding"), c = o.isActive("textBlockOnboarding");
|
|
10
|
+
if (t || c)
|
|
8
11
|
return;
|
|
9
|
-
|
|
12
|
+
o.start("textBlockOnboarding");
|
|
10
13
|
}
|
|
14
|
+
},
|
|
15
|
+
module_saved: async (e) => {
|
|
16
|
+
n.syncModulesEnabled && (console.debug("[module_saved] Saved module data:", e), await d(e));
|
|
17
|
+
},
|
|
18
|
+
module_dropped: async (e) => {
|
|
19
|
+
if (!n.syncModulesEnabled)
|
|
20
|
+
return;
|
|
21
|
+
const { moduleId: o } = e, t = await r(o);
|
|
22
|
+
console.debug("[module_dropped] Sync module data:", t), t.unsubscriptionPreferencePages.length && await s.fetchTemplates();
|
|
23
|
+
},
|
|
24
|
+
module_updated: async (e) => {
|
|
25
|
+
n.syncModulesEnabled && (console.debug("[module_updated] Updated module data:", e), await d(e));
|
|
11
26
|
}
|
|
12
27
|
};
|
|
13
|
-
return { handleEvent: async (
|
|
14
|
-
const
|
|
15
|
-
o && await o
|
|
28
|
+
return { handleEvent: async (e, o) => {
|
|
29
|
+
const t = a[e];
|
|
30
|
+
console.debug("Stripo Event: ", e, o), t && await t(o);
|
|
16
31
|
} };
|
|
17
32
|
};
|
|
18
33
|
export {
|
|
19
|
-
|
|
34
|
+
v as useStripoEventHandler
|
|
20
35
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { UNSUBSCRIBE_SYNC_MODULE_TYPES as S } from "../enums/unsubscribe.js";
|
|
2
|
+
import { DATA_ATTRIBUTES as a } from "../extensions/Blocks/Unsubscribe/utils/constants.js";
|
|
3
|
+
import { useEditorStore as d } from "../stores/editor.js";
|
|
4
|
+
const T = ".esd-synchronizable-module", m = '[esd-extension-block-id="unsubscribe-block"]', A = "esd-custom-block-id", M = () => {
|
|
5
|
+
const l = d();
|
|
6
|
+
return { extractSyncModuleUnsubscribeData: (p) => {
|
|
7
|
+
if (!l.syncModulesEnabled)
|
|
8
|
+
return [];
|
|
9
|
+
const E = new DOMParser().parseFromString(p, "text/html").querySelectorAll(T), e = [];
|
|
10
|
+
return E.forEach((r) => {
|
|
11
|
+
const s = r.getAttribute(A);
|
|
12
|
+
if (!s)
|
|
13
|
+
return;
|
|
14
|
+
r.querySelectorAll(m).forEach((o) => {
|
|
15
|
+
const n = o.getAttribute(a.PAGE_LIST), c = o.getAttribute(a.PAGE_TYPE);
|
|
16
|
+
if (!n || !c)
|
|
17
|
+
return;
|
|
18
|
+
const b = parseInt(c), u = S[b];
|
|
19
|
+
if (!u)
|
|
20
|
+
return;
|
|
21
|
+
const i = n.split(",").map((t) => parseInt(t.trim())).filter((t) => !Number.isNaN(t));
|
|
22
|
+
i.length !== 0 && e.push({
|
|
23
|
+
stripoModuleId: s,
|
|
24
|
+
unsubscriptionPreferencePages: i,
|
|
25
|
+
type: u
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}), e;
|
|
29
|
+
} };
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
M as useSyncModuleExtractor
|
|
33
|
+
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { useTranslations as e } from "../composables/useTranslations.js";
|
|
2
2
|
import { getEnvironmentPrefix as R } from "../utils/environmentUtil.js";
|
|
3
|
-
const
|
|
3
|
+
const _ = {
|
|
4
4
|
UNSUBSCRIBE_LINK_TYPE: 1,
|
|
5
5
|
PREFERENCES_LINK_TYPE: 3
|
|
6
|
-
},
|
|
6
|
+
}, I = {
|
|
7
7
|
UNSUBSCRIBE_LINK_REGEX: /{{ins-unsubscribe-link}}/g,
|
|
8
8
|
DATA_OGSB_BUTTON_CSS_REGEX: "\\[data-ogsb\\]\\s*\\.es-button\\.es-button-[0-9]+\\s*\\{(?:[^\\}]*)\\}",
|
|
9
9
|
GLOBAL_UNSUBSCRIBE_LINK_REGEX: /{{ins-global-unsubscribe-link}}/g,
|
|
10
10
|
PREFERENCES_UNSUBSCRIBE_LINK_REGEX: /{{ins-preferences-unsubscribe-link}}/g
|
|
11
|
-
},
|
|
12
|
-
UNSUBSCRIBE_URL: `https://mail.${
|
|
13
|
-
PREFERENCES_URL: `https://mail.${
|
|
14
|
-
},
|
|
11
|
+
}, n = R(), r = {
|
|
12
|
+
UNSUBSCRIBE_URL: `https://mail.${n}.com/user/v1/unsub`,
|
|
13
|
+
PREFERENCES_URL: `https://mail.${n}.com/user/v1/prefs`
|
|
14
|
+
}, B = "iid", i = {
|
|
15
15
|
name: "Global Unsubscribe",
|
|
16
16
|
sendGridId: "G"
|
|
17
17
|
}, C = "/email/unsubscribe-pages", E = {
|
|
@@ -20,6 +20,9 @@ const I = {
|
|
|
20
20
|
SUBSCRIPTION_PREFERENCE_CENTER: 3,
|
|
21
21
|
SUBSCRIPTION_PREFERENCE_CONFIRMATION: 4,
|
|
22
22
|
RESUBSCRIBE: 5
|
|
23
|
+
}, U = {
|
|
24
|
+
[E.GLOBAL_UNSUBSCRIBE]: "custom-unsubscribe",
|
|
25
|
+
[E.SUBSCRIPTION_PREFERENCE_CENTER]: "custom-preferences"
|
|
23
26
|
}, t = {
|
|
24
27
|
[E.GLOBAL_UNSUBSCRIBE]: [
|
|
25
28
|
E.GLOBAL_UNSUBSCRIBE,
|
|
@@ -30,29 +33,30 @@ const I = {
|
|
|
30
33
|
E.SUBSCRIPTION_PREFERENCE_CENTER,
|
|
31
34
|
E.SUBSCRIPTION_PREFERENCE_CONFIRMATION
|
|
32
35
|
]
|
|
33
|
-
},
|
|
34
|
-
const
|
|
36
|
+
}, c = () => {
|
|
37
|
+
const s = e();
|
|
35
38
|
return {
|
|
36
|
-
[E.GLOBAL_UNSUBSCRIBE]:
|
|
37
|
-
[E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]:
|
|
38
|
-
[E.RESUBSCRIBE]:
|
|
39
|
-
[E.SUBSCRIPTION_PREFERENCE_CENTER]:
|
|
40
|
-
[E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]:
|
|
39
|
+
[E.GLOBAL_UNSUBSCRIBE]: s("unsubscription-preference.type-global-unsubscribe"),
|
|
40
|
+
[E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]: s("unsubscription-preference.type-global-unsubscription-confirmation"),
|
|
41
|
+
[E.RESUBSCRIBE]: s("unsubscription-preference.type-resubscribe"),
|
|
42
|
+
[E.SUBSCRIPTION_PREFERENCE_CENTER]: s("unsubscription-preference.type-subscription-preferences-center"),
|
|
43
|
+
[E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]: s("unsubscription-preference.type-subscription-preferences-confirmation")
|
|
41
44
|
};
|
|
42
|
-
},
|
|
45
|
+
}, o = {
|
|
43
46
|
default: "{{ins-unsubscribe-link}}",
|
|
44
47
|
[E.GLOBAL_UNSUBSCRIBE]: "{{ins-global-unsubscribe-link}}",
|
|
45
48
|
[E.SUBSCRIPTION_PREFERENCE_CENTER]: "{{ins-preferences-unsubscribe-link}}"
|
|
46
49
|
};
|
|
47
50
|
export {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
i as DEFAULT_UNSUBSCRIBE_GROUP,
|
|
52
|
+
B as INSIDER_ID,
|
|
53
|
+
I as LINK_REGEXES,
|
|
54
|
+
_ as LINK_TYPES,
|
|
55
|
+
o as MERGE_TAGS,
|
|
53
56
|
E as PAGE_TYPES,
|
|
54
57
|
t as TYPE_COLLECTIONS,
|
|
55
58
|
C as UNSUBSCRIBE_PAGES_LINK,
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
U as UNSUBSCRIBE_SYNC_MODULE_TYPES,
|
|
60
|
+
r as URLS,
|
|
61
|
+
c as getTypeTranslations
|
|
58
62
|
};
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { useHttp as
|
|
2
|
-
import { useToaster as
|
|
1
|
+
import { useHttp as l } from "../composables/useHttp.js";
|
|
2
|
+
import { useToaster as d } from "../composables/useToaster.js";
|
|
3
3
|
import { MAX_DEFAULT_TEMPLATE_ID as p } from "../enums/defaults.js";
|
|
4
|
-
const
|
|
5
|
-
const { get:
|
|
4
|
+
const b = () => {
|
|
5
|
+
const { get: s, post: c } = l(), { handleError: r } = d();
|
|
6
6
|
return {
|
|
7
7
|
getToken: async () => {
|
|
8
8
|
try {
|
|
9
|
-
const t = Number(localStorage.getItem("ins-guido-test-instance")), { data: e } = await
|
|
9
|
+
const t = Number(localStorage.getItem("ins-guido-test-instance")), { data: e } = await s(`/stripo/get-user-token?test=${t}`);
|
|
10
10
|
return e.body.token;
|
|
11
11
|
} catch (t) {
|
|
12
|
-
return
|
|
12
|
+
return r(t, "Failed to fetch token"), "";
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
getCustomFonts: async () => {
|
|
16
16
|
try {
|
|
17
|
-
const { data: t = [] } = await
|
|
17
|
+
const { data: t = [] } = await s("/stripo/get-partner-custom-fonts");
|
|
18
18
|
return t.map((e) => ({
|
|
19
19
|
...e,
|
|
20
20
|
active: !0
|
|
21
21
|
}));
|
|
22
22
|
} catch (t) {
|
|
23
|
-
return
|
|
23
|
+
return r(t, "Failed to fetch custom fonts"), [];
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
getDefaultTemplate: async () => {
|
|
@@ -29,16 +29,52 @@ const y = () => {
|
|
|
29
29
|
css: ""
|
|
30
30
|
};
|
|
31
31
|
try {
|
|
32
|
-
const
|
|
33
|
-
`/stripo/default-template/${
|
|
34
|
-
),
|
|
35
|
-
return !
|
|
32
|
+
const u = new URLSearchParams(window.location.search).get("default-template"), a = u ? parseInt(u) : 0, i = a >= 1 && a <= p ? a : 0, { data: n } = await s(
|
|
33
|
+
`/stripo/default-template/${i}`
|
|
34
|
+
), o = typeof n == "string" ? JSON.parse(n) : n;
|
|
35
|
+
return !o || typeof o != "object" || !("html" in o) || !("css" in o) ? t : o;
|
|
36
36
|
} catch (e) {
|
|
37
|
-
return
|
|
37
|
+
return r(e, "Failed to fetch default template"), t;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
getSyncModulesStatus: async () => {
|
|
41
|
+
try {
|
|
42
|
+
const { data: t } = await s("/newsletter/settings/synchronisation-in-modules-status");
|
|
43
|
+
return t.status;
|
|
44
|
+
} catch (t) {
|
|
45
|
+
return r(t, "Failed to fetch sync modules status"), !1;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
updateSyncModule: async (t) => {
|
|
49
|
+
try {
|
|
50
|
+
return await c(`/stripo/stripo-modules/${t.moduleId}/update`, t), !0;
|
|
51
|
+
} catch (e) {
|
|
52
|
+
return r(e, "Failed to update sync module"), !1;
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
getSyncModule: async (t) => {
|
|
56
|
+
try {
|
|
57
|
+
const { data: e } = await s(`/stripo/stripo-modules/${t}/get`);
|
|
58
|
+
return e;
|
|
59
|
+
} catch (e) {
|
|
60
|
+
return r(e, "Failed to get sync module"), {
|
|
61
|
+
id: 0,
|
|
62
|
+
stripoId: 0,
|
|
63
|
+
unsubscriptionPreferencePages: []
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
setSyncModuleUnsubscriptionPages: async (t) => {
|
|
68
|
+
if (t.length === 0)
|
|
69
|
+
return !0;
|
|
70
|
+
try {
|
|
71
|
+
return await c("/stripo/stripo-modules/set-unsubscription-preference-pages", t), !0;
|
|
72
|
+
} catch (e) {
|
|
73
|
+
return r(e, "Failed to set unsubscription preference pages"), !1;
|
|
38
74
|
}
|
|
39
75
|
}
|
|
40
76
|
};
|
|
41
77
|
};
|
|
42
78
|
export {
|
|
43
|
-
|
|
79
|
+
b as useStripoApi
|
|
44
80
|
};
|
|
@@ -1,6 +1,38 @@
|
|
|
1
|
-
export type StripoEventType = 'save' | 'export' | 'close' | 'autosave' | 'publish' | 'export:requested' | 'export:ready';
|
|
1
|
+
export type StripoEventType = 'save' | 'export' | 'close' | 'autosave' | 'publish' | 'export:requested' | 'export:ready' | 'module_updated' | 'module_dropped';
|
|
2
|
+
export interface ModuleUpdatedParams {
|
|
3
|
+
target: string;
|
|
4
|
+
blockType: string;
|
|
5
|
+
moduleId: number;
|
|
6
|
+
moduleCategory: string | null;
|
|
7
|
+
syncModule: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ModuleDroppedParams {
|
|
10
|
+
target: string;
|
|
11
|
+
blockType: string;
|
|
12
|
+
moduleId: number;
|
|
13
|
+
syncModule: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface SyncModuleUnsubscribePayload {
|
|
16
|
+
stripoModuleId: string;
|
|
17
|
+
unsubscriptionPreferencePages: number[];
|
|
18
|
+
type: string;
|
|
19
|
+
}
|
|
20
|
+
export interface SyncModuleResponse {
|
|
21
|
+
id: number;
|
|
22
|
+
stripoId: number;
|
|
23
|
+
unsubscriptionPreferencePages: UnsubscriptionPreferencePage[];
|
|
24
|
+
}
|
|
25
|
+
export interface UnsubscriptionPreferencePage {
|
|
26
|
+
id: number;
|
|
27
|
+
name: string;
|
|
28
|
+
type: number;
|
|
29
|
+
status: number;
|
|
30
|
+
isVisible: number;
|
|
31
|
+
thumbnail: string;
|
|
32
|
+
createdAt: string;
|
|
33
|
+
}
|
|
2
34
|
export interface EventHandler {
|
|
3
|
-
(params: Record<string,
|
|
35
|
+
(params: Record<string, unknown>): void | Promise<void>;
|
|
4
36
|
}
|
|
5
37
|
export interface EventHandlers {
|
|
6
38
|
[eventType: string]: EventHandler;
|
|
@@ -25,6 +25,9 @@ export declare const PAGE_TYPES: {
|
|
|
25
25
|
SUBSCRIPTION_PREFERENCE_CONFIRMATION: number;
|
|
26
26
|
RESUBSCRIBE: number;
|
|
27
27
|
};
|
|
28
|
+
export declare const UNSUBSCRIBE_SYNC_MODULE_TYPES: {
|
|
29
|
+
[x: number]: string;
|
|
30
|
+
};
|
|
28
31
|
export declare const TYPE_COLLECTIONS: {
|
|
29
32
|
[x: number]: number[];
|
|
30
33
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ModuleUpdatedParams, SyncModuleResponse, SyncModuleUnsubscribePayload } from '@@/Types/events';
|
|
1
2
|
import type { CustomFont, Template } from '@@/Types/stripo';
|
|
2
3
|
export declare const useStripoApi: () => {
|
|
3
4
|
getToken: () => Promise<string>;
|
|
@@ -5,4 +6,8 @@ export declare const useStripoApi: () => {
|
|
|
5
6
|
active: boolean;
|
|
6
7
|
})[]>;
|
|
7
8
|
getDefaultTemplate: () => Promise<Template>;
|
|
9
|
+
getSyncModulesStatus: () => Promise<boolean>;
|
|
10
|
+
updateSyncModule: (params: ModuleUpdatedParams) => Promise<boolean>;
|
|
11
|
+
getSyncModule: (moduleId: number) => Promise<SyncModuleResponse>;
|
|
12
|
+
setSyncModuleUnsubscriptionPages: (payload: SyncModuleUnsubscribePayload[]) => Promise<boolean>;
|
|
8
13
|
};
|
|
@@ -8,6 +8,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
8
8
|
hasChanges: boolean;
|
|
9
9
|
isStripoInitialized: boolean;
|
|
10
10
|
templateId: string;
|
|
11
|
+
syncModulesEnabled: boolean;
|
|
11
12
|
}, {
|
|
12
13
|
isEditorToolbarVisible: (state: {
|
|
13
14
|
loadingStatus: boolean;
|
|
@@ -19,6 +20,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
19
20
|
hasChanges: boolean;
|
|
20
21
|
isStripoInitialized: boolean;
|
|
21
22
|
templateId: string;
|
|
23
|
+
syncModulesEnabled: boolean;
|
|
22
24
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
23
25
|
loadingStatus: boolean;
|
|
24
26
|
isCodeEditorOpen: boolean;
|
|
@@ -29,6 +31,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
29
31
|
hasChanges: boolean;
|
|
30
32
|
isStripoInitialized: boolean;
|
|
31
33
|
templateId: string;
|
|
34
|
+
syncModulesEnabled: boolean;
|
|
32
35
|
}>) => boolean;
|
|
33
36
|
isUndoButtonDisabled: (state: {
|
|
34
37
|
loadingStatus: boolean;
|
|
@@ -40,6 +43,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
40
43
|
hasChanges: boolean;
|
|
41
44
|
isStripoInitialized: boolean;
|
|
42
45
|
templateId: string;
|
|
46
|
+
syncModulesEnabled: boolean;
|
|
43
47
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
44
48
|
loadingStatus: boolean;
|
|
45
49
|
isCodeEditorOpen: boolean;
|
|
@@ -50,6 +54,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
50
54
|
hasChanges: boolean;
|
|
51
55
|
isStripoInitialized: boolean;
|
|
52
56
|
templateId: string;
|
|
57
|
+
syncModulesEnabled: boolean;
|
|
53
58
|
}>) => boolean;
|
|
54
59
|
isRedoButtonDisabled: (state: {
|
|
55
60
|
loadingStatus: boolean;
|
|
@@ -61,6 +66,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
61
66
|
hasChanges: boolean;
|
|
62
67
|
isStripoInitialized: boolean;
|
|
63
68
|
templateId: string;
|
|
69
|
+
syncModulesEnabled: boolean;
|
|
64
70
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
65
71
|
loadingStatus: boolean;
|
|
66
72
|
isCodeEditorOpen: boolean;
|
|
@@ -71,6 +77,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
71
77
|
hasChanges: boolean;
|
|
72
78
|
isStripoInitialized: boolean;
|
|
73
79
|
templateId: string;
|
|
80
|
+
syncModulesEnabled: boolean;
|
|
74
81
|
}>) => boolean;
|
|
75
82
|
isCodeEditorButtonDisabled: (state: {
|
|
76
83
|
loadingStatus: boolean;
|
|
@@ -82,6 +89,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
82
89
|
hasChanges: boolean;
|
|
83
90
|
isStripoInitialized: boolean;
|
|
84
91
|
templateId: string;
|
|
92
|
+
syncModulesEnabled: boolean;
|
|
85
93
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
86
94
|
loadingStatus: boolean;
|
|
87
95
|
isCodeEditorOpen: boolean;
|
|
@@ -92,6 +100,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
92
100
|
hasChanges: boolean;
|
|
93
101
|
isStripoInitialized: boolean;
|
|
94
102
|
templateId: string;
|
|
103
|
+
syncModulesEnabled: boolean;
|
|
95
104
|
}>) => boolean;
|
|
96
105
|
isPreviewButtonDisabled: (state: {
|
|
97
106
|
loadingStatus: boolean;
|
|
@@ -103,6 +112,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
103
112
|
hasChanges: boolean;
|
|
104
113
|
isStripoInitialized: boolean;
|
|
105
114
|
templateId: string;
|
|
115
|
+
syncModulesEnabled: boolean;
|
|
106
116
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
107
117
|
loadingStatus: boolean;
|
|
108
118
|
isCodeEditorOpen: boolean;
|
|
@@ -113,6 +123,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
113
123
|
hasChanges: boolean;
|
|
114
124
|
isStripoInitialized: boolean;
|
|
115
125
|
templateId: string;
|
|
126
|
+
syncModulesEnabled: boolean;
|
|
116
127
|
}>) => boolean;
|
|
117
128
|
isViewOptionsDisabled: (state: {
|
|
118
129
|
loadingStatus: boolean;
|
|
@@ -124,6 +135,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
124
135
|
hasChanges: boolean;
|
|
125
136
|
isStripoInitialized: boolean;
|
|
126
137
|
templateId: string;
|
|
138
|
+
syncModulesEnabled: boolean;
|
|
127
139
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
128
140
|
loadingStatus: boolean;
|
|
129
141
|
isCodeEditorOpen: boolean;
|
|
@@ -134,6 +146,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
134
146
|
hasChanges: boolean;
|
|
135
147
|
isStripoInitialized: boolean;
|
|
136
148
|
templateId: string;
|
|
149
|
+
syncModulesEnabled: boolean;
|
|
137
150
|
}>) => boolean;
|
|
138
151
|
isVersionHistoryButtonDisabled: (state: {
|
|
139
152
|
loadingStatus: boolean;
|
|
@@ -145,6 +158,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
145
158
|
hasChanges: boolean;
|
|
146
159
|
isStripoInitialized: boolean;
|
|
147
160
|
templateId: string;
|
|
161
|
+
syncModulesEnabled: boolean;
|
|
148
162
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
149
163
|
loadingStatus: boolean;
|
|
150
164
|
isCodeEditorOpen: boolean;
|
|
@@ -155,6 +169,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
155
169
|
hasChanges: boolean;
|
|
156
170
|
isStripoInitialized: boolean;
|
|
157
171
|
templateId: string;
|
|
172
|
+
syncModulesEnabled: boolean;
|
|
158
173
|
}>) => boolean;
|
|
159
174
|
isExportButtonDisabled: (state: {
|
|
160
175
|
loadingStatus: boolean;
|
|
@@ -166,6 +181,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
166
181
|
hasChanges: boolean;
|
|
167
182
|
isStripoInitialized: boolean;
|
|
168
183
|
templateId: string;
|
|
184
|
+
syncModulesEnabled: boolean;
|
|
169
185
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
170
186
|
loadingStatus: boolean;
|
|
171
187
|
isCodeEditorOpen: boolean;
|
|
@@ -176,6 +192,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
176
192
|
hasChanges: boolean;
|
|
177
193
|
isStripoInitialized: boolean;
|
|
178
194
|
templateId: string;
|
|
195
|
+
syncModulesEnabled: boolean;
|
|
179
196
|
}>) => boolean;
|
|
180
197
|
isSaveAsButtonDisabled: (state: {
|
|
181
198
|
loadingStatus: boolean;
|
|
@@ -187,6 +204,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
187
204
|
hasChanges: boolean;
|
|
188
205
|
isStripoInitialized: boolean;
|
|
189
206
|
templateId: string;
|
|
207
|
+
syncModulesEnabled: boolean;
|
|
190
208
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
191
209
|
loadingStatus: boolean;
|
|
192
210
|
isCodeEditorOpen: boolean;
|
|
@@ -197,6 +215,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
197
215
|
hasChanges: boolean;
|
|
198
216
|
isStripoInitialized: boolean;
|
|
199
217
|
templateId: string;
|
|
218
|
+
syncModulesEnabled: boolean;
|
|
200
219
|
}>) => boolean;
|
|
201
220
|
isTestButtonDisabled: (state: {
|
|
202
221
|
loadingStatus: boolean;
|
|
@@ -208,6 +227,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
208
227
|
hasChanges: boolean;
|
|
209
228
|
isStripoInitialized: boolean;
|
|
210
229
|
templateId: string;
|
|
230
|
+
syncModulesEnabled: boolean;
|
|
211
231
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
212
232
|
loadingStatus: boolean;
|
|
213
233
|
isCodeEditorOpen: boolean;
|
|
@@ -218,6 +238,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
218
238
|
hasChanges: boolean;
|
|
219
239
|
isStripoInitialized: boolean;
|
|
220
240
|
templateId: string;
|
|
241
|
+
syncModulesEnabled: boolean;
|
|
221
242
|
}>) => boolean;
|
|
222
243
|
isSaveButtonDisabled: (state: {
|
|
223
244
|
loadingStatus: boolean;
|
|
@@ -229,6 +250,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
229
250
|
hasChanges: boolean;
|
|
230
251
|
isStripoInitialized: boolean;
|
|
231
252
|
templateId: string;
|
|
253
|
+
syncModulesEnabled: boolean;
|
|
232
254
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
233
255
|
loadingStatus: boolean;
|
|
234
256
|
isCodeEditorOpen: boolean;
|
|
@@ -239,5 +261,6 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
|
|
|
239
261
|
hasChanges: boolean;
|
|
240
262
|
isStripoInitialized: boolean;
|
|
241
263
|
templateId: string;
|
|
264
|
+
syncModulesEnabled: boolean;
|
|
242
265
|
}>) => boolean;
|
|
243
266
|
}, {}>;
|
|
@@ -17,20 +17,6 @@ ue-notifications-container .alert-message-wrapper {
|
|
|
17
17
|
padding: 16px 24px;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
ue-notifications-container .alert-message-wrapper.info,
|
|
21
|
-
ue-notifications-container .alert-message-wrapper.loader {
|
|
22
|
-
background-color: var(--guido-color-background-toaster-info) !important;
|
|
23
|
-
color: inherit;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
ue-notifications-container ue-caption .caption {
|
|
27
|
-
color: var(--guido-color-white) !important;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
ue-block-thumb-hint {
|
|
31
|
-
text-align: left;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
20
|
ue-notifications-container .alert-message-wrapper .alert-message-main .alert-message-content {
|
|
35
21
|
width: calc(100% - 64px);
|
|
36
22
|
}
|
|
@@ -25,7 +25,6 @@ const o = `:host {
|
|
|
25
25
|
--guido-color-border-onpage-message-error: var(--guido-color-danger-500);
|
|
26
26
|
--guido-color-background-toaster-success: #128745;
|
|
27
27
|
--guido-color-background-toaster-error: var(--guido-color-danger-500);
|
|
28
|
-
--guido-color-background-toaster-info: #2C3546;
|
|
29
28
|
--guido-color-background-toaster-warn: #D37400;
|
|
30
29
|
}
|
|
31
30
|
`;
|
package/dist/stores/editor.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@useinsider/guido",
|
|
3
|
-
"version": "2.1.0-beta.
|
|
3
|
+
"version": "2.1.0-beta.5ec7b79",
|
|
4
4
|
"description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
|
|
5
5
|
"main": "./dist/guido.umd.cjs",
|
|
6
6
|
"module": "./dist/library.js",
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
const e = "Your version has been restored successfully.", o = {
|
|
2
|
-
"The image has been deleted.": "The image has been deleted successfully.",
|
|
3
|
-
"Aim for the drop zone!": "Drag and drop your image inside the upload area to continue.",
|
|
4
|
-
"Image processing": "The image upload is in progress. This may take some time.",
|
|
5
|
-
"Can not get image from an external source.": "The image couldn’t be uploaded from the URL. Check and update your URL to continue.",
|
|
6
|
-
"The selected basic color cannot be added to My Palette. Please choose a different one from the color picker.": "The selected color is already added to My Palette. Pick a different color to add.",
|
|
7
|
-
"Copied to clipboard": "Your Image URL has been copied to clipboard successfully.",
|
|
8
|
-
"The file {fileName} has wrong format {fileFormat}": "Upload a PNG, JPG, JPEG, or GIF image to continue.",
|
|
9
|
-
"The file {fileName} size exceeds the allowed size {maxFileSize}": "Upload an image up to 10 MB to continue.",
|
|
10
|
-
"Image link invalid": "Enter a valid Image Link to continue.",
|
|
11
|
-
"Image upload failed": "Upload a valid image to continue.",
|
|
12
|
-
"Image upload error": "Upload a valid image to continue.",
|
|
13
|
-
"Error message from video service": "The video thumbnail couldn't be loaded. Check and update your Video Link to continue.",
|
|
14
|
-
"Error message from image processing": "The Play Button couldn't be added to the Video Thumbnail right now. You can select another Play Button and try again.",
|
|
15
|
-
"The AI is fine-tuning your result... Please wait! This may take up to 1 minute.": "AI content generation is in progress. This may take some time.",
|
|
16
|
-
"Can not complete AI request. Try again later": "AI content generation couldn't be completed right now. You can reload the editor or wait for a while and try again.",
|
|
17
|
-
"AI is processing your request": "AI content generation is in progress. This may take some time.",
|
|
18
|
-
"Unable to paste text. Limit is 256kB. Please trim it down.": "Add a text to Text Block of up to 256KB to continue.",
|
|
19
|
-
"Banner src included merge tag": "The image upload is in progress. This may take some time.",
|
|
20
|
-
"Module deletion error": "The module couldn't be deleted right now. You can wait for a while and try again.",
|
|
21
|
-
"Module deletion error with action button": "The module couldn't be deleted right now. You can wait for a while and try again.",
|
|
22
|
-
"Block action error": "Your content couldn't added right now. You can wait for a while and try again.",
|
|
23
|
-
history_revert_to_patch: e,
|
|
24
|
-
"There is no connection to the server. Please reload the page or click 'Reconnect' to continue.": "Your server connection is lost. Reload the page to continue.",
|
|
25
|
-
"Reconnecting...": "Server reconnection is in progress. This may take some time.",
|
|
26
|
-
"Failed to load version history. Contact support for assistance.": "Your version couldn't be restored right now. You can wait for a while and try again.",
|
|
27
|
-
"Connection restored": "Server connection has been restored successfully.",
|
|
28
|
-
"Invalid base64 image format. Please replace the image link.": "This image can’t be edited.",
|
|
29
|
-
"Timer update error": "Your action couldn't be undone right now. You can reload the editor or wait for a while and try again.",
|
|
30
|
-
"Cannot edit base64 images": "This image type can't be edited.",
|
|
31
|
-
"Failed to copy URL": "Your Image Link couldn't be copied to clipboard right now. You can wait for a while and try again.",
|
|
32
|
-
"Error message from image service": "The image couldn't be loaded from the URL you entered. Check and update your URL to continue.",
|
|
33
|
-
"Error message from image preload": "The image couldn't be loaded from the URL you entered. Check and update your Image Link to continue.",
|
|
34
|
-
"An error has occurred. Please report the error code to support: {trace_id} and reload the editor. Also, send a bug report with email logs to the development team.": "Your design couldn't be loaded right now. You can reload the page and try again.",
|
|
35
|
-
"The number of requests within your session has been exceeded. Please wait.": "Your requests are being processed. You can wait for a while to take new actions.",
|
|
36
|
-
"An error has occurred. Please report the error code to support.": "Your design couldn't be loaded right now. You can reload the page and try again.",
|
|
37
|
-
"Warning: custom fonts": "Use custom fonts up to 10 to continue.",
|
|
38
|
-
"Image recovery error": "The image couldn't be restored right now. You can wait for a while and try again.",
|
|
39
|
-
"Image moved to trash": "The image has been deleted successfully.",
|
|
40
|
-
"Image delete error": "The image couldn't be deleted right now. You can wait for a while and try again.",
|
|
41
|
-
"The maximum number of users who can simultaneously work with the sheet has been exceeded. Maximum allowed number: {{max_users_per_model}}": "You can’t edit the design right now as the maximum number of users are currently editing it.",
|
|
42
|
-
"The monthly limit of Timer basic block is reached. Please change the subscription pricing plan to activate new quotas": "You've reached your monthly Timer Block limit for your plan. You can upgrade your plan to add new Timer Block items.",
|
|
43
|
-
"The monthly limit of Timer basic block is reached.": "You've reached your monthly Timer Block limit for your plan. You can upgrade your plan to add new Timer Block items."
|
|
44
|
-
};
|
|
45
|
-
export {
|
|
46
|
-
o as default,
|
|
47
|
-
e as history_revert_to_patch
|
|
48
|
-
};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
const e = {
|
|
2
|
-
"Add template/pre-built modules, or structures with containers": "Structures and Modules lets you add templates, pre-built modules or structures with containers.",
|
|
3
|
-
"Allows uploading and editing images": "Image lets you add and edit images.",
|
|
4
|
-
"Allows working on text styles, adding merge tags and lists": "Text lets you edit text styles, add merge tags and lists.",
|
|
5
|
-
"Allows designing buttons of any shape, size, and color": "Button lets you edit the shape, size, and color of the buttons.",
|
|
6
|
-
"Meant to visually separate elements with a horizontal line": "Spacer lets you separate elements with a horizontal line.",
|
|
7
|
-
"Offers 70+ social media icons and chats of different design styles": "Social Networks lets you add social media icons and chat options in different design styles.",
|
|
8
|
-
"Helps taking users from emails to necessary pages on your site": "Menu lets you direct users from emails to the respective website.",
|
|
9
|
-
"Allows adding elements with custom code in emails": "HTML lets you add elements with custom code in emails.",
|
|
10
|
-
"Allows applying filters to images and placing text over them": "Banner lets you apply filters to images and add text over them.",
|
|
11
|
-
"Allows setting thumbnail images & play buttons for videos": "Video lets you set thumbnail images, add video links and play buttons for videos.",
|
|
12
|
-
"Adds a countdown to a specific date. Use the timer in emails for promotions, launches, and events": "Timer lets you add a countdown in your emails for promotions, launches or events.",
|
|
13
|
-
'The "AMP Carousel" block is currently being developed. Switch to the Old version of the Editor to access the full functionality needed to continue working on this email. Please note, that all changes you have already made to this email will be saved and available in the Old version': "Carousel lets you add templates, prebuilt modules or container-based structures via AMP HTML and HTML.",
|
|
14
|
-
'The "AMP Accordion" block is currently being development. Switch to the Old version of the Editor to access the full functionality needed to continue working on this email. Please note, that all changes you have already made to this email will be saved and available in the Old version': "AMP Accordion lets you add a collapsible accordion with customizable sections via AMP HTML.",
|
|
15
|
-
"An AMP Form block lets users collect feedback or run surveys directly in an email. It includes input fields and can be added in the Editor, allowing recipients to respond right from their inbox": "AMP Form Block lets you add input fields to collect feedback or run surveys via AMP HTML.",
|
|
16
|
-
"Will be applied to the entire email": "General Background Color lets you set the background color applied to the entire email.",
|
|
17
|
-
"Background image for the entire email. Some email clients (Windows 10 Mail, Android 4.4, the Gmail app for iOS, and Android for non-Gmail accounts) do not support background images. Thus, we recommend choosing a background color for the entire email similar to the selected image as a fallback.": "Background Image lets you upload an image for the entire email.",
|
|
18
|
-
"Repetition of the email background image. In Outlook for Windows, the image will be repeated in any case, regardless of whether this option is enabled or not. To bypass the Outlook limitation, you need to create an image in a third-party editor of the needed color and size so that it fits the entire background size, apply the required graphics to it, upload it, and center-align it in the email. The dimensions of such a background image should be at least 1,920 pixels in width, and the height should be equal to the height of the email.": "Background Image Repeat lets you enable the repetition of the background image.",
|
|
19
|
-
'The standard width of the email varies between 540-700 pixels. <a href="https://stripo.email/blog/email-template-size-width-height/" target="_blank" aria-label="Read more about the message width in our blog.">Read more here</a>': "Message Content Width lets you set the standard width of the email between 540 and 700 pixels.",
|
|
20
|
-
"Alignment of the email content area ": "Message Alignment lets you set the alignment of the email content area.",
|
|
21
|
-
"Your email will automatically adjust for smaller screens by displaying content in a single column. Side-by-side blocks will be stacked vertically": "Responsive Design lets your email adjust to smaller screens.",
|
|
22
|
-
"Your email will display the desktop version on mobile devices. Mobile-specific settings will be turned off in the Editor": "Note that Responsive Design can only be visible on the desktop version of mobile devices, and mobile settings will also be turned off when Responsive Design is disabled.",
|
|
23
|
-
"Enable the right-to-left (RTL) text direction to build emails easily without coding for recipients using RTL scripts, such as Arabic, Hebrew, Persian, Urdu, etc.": "Right to Left Text Direction lets you build emails in right-to-left (RTL) languages like Arabic, Hebrew, or Persian without coding.",
|
|
24
|
-
"Margins around the email message area": "Message on Desktop lets you set the margins around the message area.",
|
|
25
|
-
"The background image of the stripe. The image will not be displayed in an Outlook app on Windows email clients. We recommend choosing a stripe background color similar to the selected image as a fallback": "Background Image lets you drag and drop or add an image URL as a background image.",
|
|
26
|
-
'We automatically calculate the optimal indentation for your text. It depends on font size and line spacing <a href="https://en.wikipedia.org/wiki/Leading" target="_blank">leading<a/>': "Bottom Space lets you add space automatically depending on font size and line spacing.",
|
|
27
|
-
'Padding in the "Text" block makes space around the added text.': "Padding on Desktop lets you add space around the text in the Text block for desktop.",
|
|
28
|
-
"If an email client doesn't support the non-standard font, a similar standard font will be used instead.": "Note that a similar Safe font will be used instead of the selected font if users' devices don't support it.",
|
|
29
|
-
"This option ensures the most accurate display of your buttons in MS Outlook email clients by inserting a special VML-code. When this option is activated, the email message size can be increased up to kilobyte for each added button.": "Support for Outlook lets you display buttons accurately in Outlook by adding VML code, which may increase your email size.",
|
|
30
|
-
"Outlook for Windows does not have support for a separate button border width setting": "Style is not supported in Outlook for Windows as it doesn't allow separate button border width settings.",
|
|
31
|
-
"Outlook for Windows does not have a support for the border radius property. We recommend enabling the Outlook support option.": "Border is not supported in Outlook for Windows as it doesn't allow the border radius property. We recommend enabling Outlook Support.",
|
|
32
|
-
'The option "hover button styles" (changing colors upon a mouseover) is supported by a limited number of email clients. <a href="{link}" target="_blank">Learn more</a>': "Hover Button Styles can be supported by a limited number of users. For more information, you can visit Academy.",
|
|
33
|
-
"Button padding that makes the space around the button text": "Padding on Desktop lets you set the space around the button text for desktop.",
|
|
34
|
-
"The icon inside the button will not show in Outlook 2002, 2007, 2010, 2013, 2016, 2019 on Windows.": "The Icon won't be visible in Outlook 2002–2019 on Windows.",
|
|
35
|
-
"Margins around the button": "Margins on Desktop lets you set the space around the button.",
|
|
36
|
-
"It only works with CSS styles, so it is not supported by Outlook on Windows. We recommend enabling the Support for Outlook option.": "Border Radius lets you round the corners of the button. Note that it only works with CSS styles, so it's not supported by Outlook on Windows. We recommend enable the Support for Outlook.",
|
|
37
|
-
"Not supported by Outlook on Windows, so we recommend enabling the Support for Outlook option in the General Settings tab.": "Border lets you add an outline around the element. Note that it's not supported by Outlook on Windows. We recommend you enable the Support for Outlook in the General Settings.",
|
|
38
|
-
"Add content to the email, click it, and choose “Save as a module”. Stripes, Structures, and Containers can be saved as a module.": "Make sure you save modules once content is added. Note that Stripes, Structures, and Containers can be saved as a module.",
|
|
39
|
-
"This feature is only supported by Yahoo! Mail, Ukr.net, AOL, Gmail, iCloud Mail, Outlook 2003, Outlook for Mac and macOS Apple Mail": "Rollover Effect is supported by Yahoo Mail, Ukr.net, AOL, Gmail, iCloud Mail, Outlook 2003, Outlook for Mac and Apple Mail.",
|
|
40
|
-
"The aspect ratio of the added image does not match the others. Please replace it to match the {ratio} format": "Note that the aspect ratio of the secondary image doesn't match the aspect ratio of the primary one. Make sure you edit the ratio of the secondary image to ensure the Rollover Effect works properly.",
|
|
41
|
-
"Margins around the image": "Margins on Desktop lets you set the space around the image for desktop view.",
|
|
42
|
-
"The image will automatically adjust to the width of the screen on mobile devices that support it": "Responsive Image lets you adjust the screen width automatically on supported mobile devices.",
|
|
43
|
-
"Images won't be adjusted to the width of the screen on mobile devices, which may lead to poor display of images and content": "Make sure you enable Responsive Image to adjust the width of the screen on mobile devices to display images and content properly.",
|
|
44
|
-
"Make the image to fit to the width of a mobile screen. Please note: It only works on devices that have support for media queries.": "Responsive Image lets you make the image fit the width of a mobile screen. Note that it only works on supported devices.",
|
|
45
|
-
"You have the option of displaying a different image when your countdown timer expires.": "Display a different image when the countdown timer expires.",
|
|
46
|
-
"Margins around the timer": "Margin on Desktop lets you adjust the spacing around the timer on desktop screens.",
|
|
47
|
-
'Not all email clients support the selected link protocol. Check the <a href="https://support.stripo.email/en/articles/5332466-what-are-link-protocols-compatible-with-emails" target="_blank">compatibility guide</a> to learn more about supported clients.': "Note that not all user devices can support the selected link protocol. For more information about supported clients, you can visit Academy.",
|
|
48
|
-
"This forces the accordion to only allow one expanded section at any given time. Expanding one section will cause any other open sections to close.": "Ensure only one accordion section stays open by automatically collapsing the others when a new one is expanded.",
|
|
49
|
-
"Outlook for Windows does not have support for dashed and dotted borders": "Style lets you customize the border style of the element. Note that dashed and dotted borders aren't supported by Outlook on Windows.",
|
|
50
|
-
"Internal padding creates space around containers and blocks": "Padding on Desktop lets you create space around containers and blocks.",
|
|
51
|
-
"Margins around the separator line": "Margins on Desktop let you set the space around the separator line.",
|
|
52
|
-
"Use your own title and alternative text to each icon": "Title and Alternate Text Customization lets you add your own title and alternative text to each icon.",
|
|
53
|
-
"Margins around social network icons": "Margins on Desktop lets you set the space around social network icons.",
|
|
54
|
-
"Makes the menu fit to the container width": "Fit to Container lets you make the menu fit the container width.",
|
|
55
|
-
"Margins around elements formed by custom code": "Margins on Desktop lets you set margins around elements formed by custom code.",
|
|
56
|
-
"Margins around the banner": "Margins on Desktop lets you set margins around the banner.",
|
|
57
|
-
'Creates an anchor for this element. Anchor links in emails are designed to make navigation easier. They help take readers to specific places in the email without the need to scroll. <a href="https://support.stripo.email/en/articles/3174098-how-to-apply-anchor-hyperlinks" target="_blank">Learn more</a> about how it works and how to create one with Stripo.': "Anchor Link lets you create a link that takes users to a specific part of the email without scrolling.",
|
|
58
|
-
'Include the element in the necessary version of the email, or in both. <a target="_blank" href="https://stripo.email/blog/how-to-build-amp-emails-with-stripo/">Learn more about ⚡ HTML (AMP HTML).</a>': "Include In lets you include the element in the selected version of the email or in both versions.",
|
|
59
|
-
"The element will be included in both MIME versions of the email: classic HTML and AMP HTML": "The element will be included in both MIME versions of the email: classic HTML and AMP HTML",
|
|
60
|
-
"The element will be included only in the HTML MIME version of the email message. The item will be hidden in the AMP HTML version": "The element will be included only in the HTML MIME version of the email message. The item will be hidden in the AMP HTML version",
|
|
61
|
-
"The element will be included only in the AMP HTML MIME version of the email message. The item will be hidden in the HTML version": "The element will be included only in the AMP HTML MIME version of the email message. The item will be hidden in the HTML version",
|
|
62
|
-
"This element will not be hidden in email clients which do not support media queries.": "Hide Element on Mobile lets you hide the selected content from appearing on mobile.",
|
|
63
|
-
"The element will be hidden on Yahoo mobile App, as well as in mobile email client which do not support media queries.": "Hide on Desktop lets you hide the element on desktop devices that support media queries.",
|
|
64
|
-
"The element already hidden on Desktop. Activating this option you turning off hidden state for Desktop.": "Note that this element is already hidden on Desktop, it will be visible on desktop when you enable this.",
|
|
65
|
-
"The element already hidden on Mobile. Activating this option you turning off hidden state for Mobile.": "Note that this element is already hidden on mobile, it will be visible on mobile when you enable this.",
|
|
66
|
-
"An anchor link should not exceed more than 150 characters": "Enter an Anchor Link up to 150 characters.",
|
|
67
|
-
"An alternate text should not exceed more than 255 characters": "Enter an Alternate Text up to 255 characters.",
|
|
68
|
-
"A HEX color value should not exceed more than 8 symbols": "Enter a Hex Color value up to 8 characters to continue.",
|
|
69
|
-
"A keyword must have at least 2 characters": "Enter a keyword of 2 or more characters to continue.",
|
|
70
|
-
"Button label should not exceed more than 255 characters": "Enter a button label up to 255 characters to continue.",
|
|
71
|
-
"Link Name should not exceed more than 500 characters": "Enter a Link Name up to 500 characters to continue.",
|
|
72
|
-
"Menu Item Name should not exceed more than 255 characters": "Enter a Menu Item Name up to 255 characters to continue.",
|
|
73
|
-
"It is not possible to upload more than 50 files simultaneously. If possible, please try to complete this over a few iterations.": "Up to 50 files can be added at once.",
|
|
74
|
-
"Please enter a valid link": "Enter a valid link to continue.",
|
|
75
|
-
"The image with the invalid link cannot be saved to the image gallery": "Enter a valid image link to continue.",
|
|
76
|
-
"The data source link is unavailable. Please, make sure there is an access to the data source.": "Enter an accessible Data Source Link to contiue.",
|
|
77
|
-
"The file should not exceed the maximum resolution of {maxImageResolution}px.": "Upload files up to 1024x512 pixels to continue.",
|
|
78
|
-
"The option is disabled because was overridden in the Code editor": "The option is disabled because it was overridden in the Code Editor."
|
|
79
|
-
};
|
|
80
|
-
export {
|
|
81
|
-
e as default
|
|
82
|
-
};
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stripo Editor Translation Overrides
|
|
3
|
-
*
|
|
4
|
-
* Custom translations for Stripo editor UI elements.
|
|
5
|
-
* Translations are stored in JSON files for easier maintenance.
|
|
6
|
-
*
|
|
7
|
-
* Reference: https://email-static.useinsider.com/guido/{version}/assets/i18n/en.json
|
|
8
|
-
* @module config/localePatch
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Combined locale patch for Stripo editor initialization.
|
|
12
|
-
* Merges labels, tooltips, and toasters into a single object.
|
|
13
|
-
*/
|
|
14
|
-
export declare const localePatch: {
|
|
15
|
-
en: {
|
|
16
|
-
"The image has been deleted.": string;
|
|
17
|
-
"Aim for the drop zone!": string;
|
|
18
|
-
"Image processing": string;
|
|
19
|
-
"Can not get image from an external source.": string;
|
|
20
|
-
"The selected basic color cannot be added to My Palette. Please choose a different one from the color picker.": string;
|
|
21
|
-
"Copied to clipboard": string;
|
|
22
|
-
"The file {fileName} has wrong format {fileFormat}": string;
|
|
23
|
-
"The file {fileName} size exceeds the allowed size {maxFileSize}": string;
|
|
24
|
-
"Image link invalid": string;
|
|
25
|
-
"Image upload failed": string;
|
|
26
|
-
"Image upload error": string;
|
|
27
|
-
"Error message from video service": string;
|
|
28
|
-
"Error message from image processing": string;
|
|
29
|
-
"The AI is fine-tuning your result... Please wait! This may take up to 1 minute.": string;
|
|
30
|
-
"Can not complete AI request. Try again later": string;
|
|
31
|
-
"AI is processing your request": string;
|
|
32
|
-
"Unable to paste text. Limit is 256kB. Please trim it down.": string;
|
|
33
|
-
"Banner src included merge tag": string;
|
|
34
|
-
"Module deletion error": string;
|
|
35
|
-
"Module deletion error with action button": string;
|
|
36
|
-
"Block action error": string;
|
|
37
|
-
history_revert_to_patch: string;
|
|
38
|
-
"There is no connection to the server. Please reload the page or click 'Reconnect' to continue.": string;
|
|
39
|
-
"Reconnecting...": string;
|
|
40
|
-
"Failed to load version history. Contact support for assistance.": string;
|
|
41
|
-
"Connection restored": string;
|
|
42
|
-
"Invalid base64 image format. Please replace the image link.": string;
|
|
43
|
-
"Timer update error": string;
|
|
44
|
-
"Cannot edit base64 images": string;
|
|
45
|
-
"Failed to copy URL": string;
|
|
46
|
-
"Error message from image service": string;
|
|
47
|
-
"Error message from image preload": string;
|
|
48
|
-
"An error has occurred. Please report the error code to support: {trace_id} and reload the editor. Also, send a bug report with email logs to the development team.": string;
|
|
49
|
-
"The number of requests within your session has been exceeded. Please wait.": string;
|
|
50
|
-
"An error has occurred. Please report the error code to support.": string;
|
|
51
|
-
"Warning: custom fonts": string;
|
|
52
|
-
"Image recovery error": string;
|
|
53
|
-
"Image moved to trash": string;
|
|
54
|
-
"Image delete error": string;
|
|
55
|
-
"The maximum number of users who can simultaneously work with the sheet has been exceeded. Maximum allowed number: {{max_users_per_model}}": string;
|
|
56
|
-
"The monthly limit of Timer basic block is reached. Please change the subscription pricing plan to activate new quotas": string;
|
|
57
|
-
"The monthly limit of Timer basic block is reached.": string;
|
|
58
|
-
"Add template/pre-built modules, or structures with containers": string;
|
|
59
|
-
"Allows uploading and editing images": string;
|
|
60
|
-
"Allows working on text styles, adding merge tags and lists": string;
|
|
61
|
-
"Allows designing buttons of any shape, size, and color": string;
|
|
62
|
-
"Meant to visually separate elements with a horizontal line": string;
|
|
63
|
-
"Offers 70+ social media icons and chats of different design styles": string;
|
|
64
|
-
"Helps taking users from emails to necessary pages on your site": string;
|
|
65
|
-
"Allows adding elements with custom code in emails": string;
|
|
66
|
-
"Allows applying filters to images and placing text over them": string;
|
|
67
|
-
"Allows setting thumbnail images & play buttons for videos": string;
|
|
68
|
-
"Adds a countdown to a specific date. Use the timer in emails for promotions, launches, and events": string;
|
|
69
|
-
"The \"AMP Carousel\" block is currently being developed. Switch to the Old version of the Editor to access the full functionality needed to continue working on this email. Please note, that all changes you have already made to this email will be saved and available in the Old version": string;
|
|
70
|
-
"The \"AMP Accordion\" block is currently being development. Switch to the Old version of the Editor to access the full functionality needed to continue working on this email. Please note, that all changes you have already made to this email will be saved and available in the Old version": string;
|
|
71
|
-
"An AMP Form block lets users collect feedback or run surveys directly in an email. It includes input fields and can be added in the Editor, allowing recipients to respond right from their inbox": string;
|
|
72
|
-
"Will be applied to the entire email": string;
|
|
73
|
-
"Background image for the entire email. Some email clients (Windows 10 Mail, Android 4.4, the Gmail app for iOS, and Android for non-Gmail accounts) do not support background images. Thus, we recommend choosing a background color for the entire email similar to the selected image as a fallback.": string;
|
|
74
|
-
"Repetition of the email background image. In Outlook for Windows, the image will be repeated in any case, regardless of whether this option is enabled or not. To bypass the Outlook limitation, you need to create an image in a third-party editor of the needed color and size so that it fits the entire background size, apply the required graphics to it, upload it, and center-align it in the email. The dimensions of such a background image should be at least 1,920 pixels in width, and the height should be equal to the height of the email.": string;
|
|
75
|
-
"The standard width of the email varies between 540-700 pixels. <a href=\"https://stripo.email/blog/email-template-size-width-height/\" target=\"_blank\" aria-label=\"Read more about the message width in our blog.\">Read more here</a>": string;
|
|
76
|
-
"Alignment of the email content area ": string;
|
|
77
|
-
"Your email will automatically adjust for smaller screens by displaying content in a single column. Side-by-side blocks will be stacked vertically": string;
|
|
78
|
-
"Your email will display the desktop version on mobile devices. Mobile-specific settings will be turned off in the Editor": string;
|
|
79
|
-
"Enable the right-to-left (RTL) text direction to build emails easily without coding for recipients using RTL scripts, such as Arabic, Hebrew, Persian, Urdu, etc.": string;
|
|
80
|
-
"Margins around the email message area": string;
|
|
81
|
-
"The background image of the stripe. The image will not be displayed in an Outlook app on Windows email clients. We recommend choosing a stripe background color similar to the selected image as a fallback": string;
|
|
82
|
-
"We automatically calculate the optimal indentation for your text. It depends on font size and line spacing <a href=\"https://en.wikipedia.org/wiki/Leading\" target=\"_blank\">leading<a/>": string;
|
|
83
|
-
"Padding in the \"Text\" block makes space around the added text.": string;
|
|
84
|
-
"If an email client doesn't support the non-standard font, a similar standard font will be used instead.": string;
|
|
85
|
-
"This option ensures the most accurate display of your buttons in MS Outlook email clients by inserting a special VML-code. When this option is activated, the email message size can be increased up to kilobyte for each added button.": string;
|
|
86
|
-
"Outlook for Windows does not have support for a separate button border width setting": string;
|
|
87
|
-
"Outlook for Windows does not have a support for the border radius property. We recommend enabling the Outlook support option.": string;
|
|
88
|
-
"The option \"hover button styles\" (changing colors upon a mouseover) is supported by a limited number of email clients. <a href=\"{link}\" target=\"_blank\">Learn more</a>": string;
|
|
89
|
-
"Button padding that makes the space around the button text": string;
|
|
90
|
-
"The icon inside the button will not show in Outlook 2002, 2007, 2010, 2013, 2016, 2019 on Windows.": string;
|
|
91
|
-
"Margins around the button": string;
|
|
92
|
-
"It only works with CSS styles, so it is not supported by Outlook on Windows. We recommend enabling the Support for Outlook option.": string;
|
|
93
|
-
"Not supported by Outlook on Windows, so we recommend enabling the Support for Outlook option in the General Settings tab.": string;
|
|
94
|
-
"Add content to the email, click it, and choose \u201CSave as a module\u201D. Stripes, Structures, and Containers can be saved as a module.": string;
|
|
95
|
-
"This feature is only supported by Yahoo! Mail, Ukr.net, AOL, Gmail, iCloud Mail, Outlook 2003, Outlook for Mac and macOS Apple Mail": string;
|
|
96
|
-
"The aspect ratio of the added image does not match the others. Please replace it to match the {ratio} format": string;
|
|
97
|
-
"Margins around the image": string;
|
|
98
|
-
"The image will automatically adjust to the width of the screen on mobile devices that support it": string;
|
|
99
|
-
"Images won't be adjusted to the width of the screen on mobile devices, which may lead to poor display of images and content": string;
|
|
100
|
-
"Make the image to fit to the width of a mobile screen. Please note: It only works on devices that have support for media queries.": string;
|
|
101
|
-
"You have the option of displaying a different image when your countdown timer expires.": string;
|
|
102
|
-
"Margins around the timer": string;
|
|
103
|
-
"Not all email clients support the selected link protocol. Check the <a href=\"https://support.stripo.email/en/articles/5332466-what-are-link-protocols-compatible-with-emails\" target=\"_blank\">compatibility guide</a> to learn more about supported clients.": string;
|
|
104
|
-
"This forces the accordion to only allow one expanded section at any given time. Expanding one section will cause any other open sections to close.": string;
|
|
105
|
-
"Outlook for Windows does not have support for dashed and dotted borders": string;
|
|
106
|
-
"Internal padding creates space around containers and blocks": string;
|
|
107
|
-
"Margins around the separator line": string;
|
|
108
|
-
"Use your own title and alternative text to each icon": string;
|
|
109
|
-
"Margins around social network icons": string;
|
|
110
|
-
"Makes the menu fit to the container width": string;
|
|
111
|
-
"Margins around elements formed by custom code": string;
|
|
112
|
-
"Margins around the banner": string;
|
|
113
|
-
"Creates an anchor for this element. Anchor links in emails are designed to make navigation easier. They help take readers to specific places in the email without the need to scroll. <a href=\"https://support.stripo.email/en/articles/3174098-how-to-apply-anchor-hyperlinks\" target=\"_blank\">Learn more</a> about how it works and how to create one with Stripo.": string;
|
|
114
|
-
"Include the element in the necessary version of the email, or in both. <a target=\"_blank\" href=\"https://stripo.email/blog/how-to-build-amp-emails-with-stripo/\">Learn more about \u26A1 HTML (AMP HTML).</a>": string;
|
|
115
|
-
"The element will be included in both MIME versions of the email: classic HTML and AMP HTML": string;
|
|
116
|
-
"The element will be included only in the HTML MIME version of the email message. The item will be hidden in the AMP HTML version": string;
|
|
117
|
-
"The element will be included only in the AMP HTML MIME version of the email message. The item will be hidden in the HTML version": string;
|
|
118
|
-
"This element will not be hidden in email clients which do not support media queries.": string;
|
|
119
|
-
"The element will be hidden on Yahoo mobile App, as well as in mobile email client which do not support media queries.": string;
|
|
120
|
-
"The element already hidden on Desktop. Activating this option you turning off hidden state for Desktop.": string;
|
|
121
|
-
"The element already hidden on Mobile. Activating this option you turning off hidden state for Mobile.": string;
|
|
122
|
-
"An anchor link should not exceed more than 150 characters": string;
|
|
123
|
-
"An alternate text should not exceed more than 255 characters": string;
|
|
124
|
-
"A HEX color value should not exceed more than 8 symbols": string;
|
|
125
|
-
"A keyword must have at least 2 characters": string;
|
|
126
|
-
"Button label should not exceed more than 255 characters": string;
|
|
127
|
-
"Link Name should not exceed more than 500 characters": string;
|
|
128
|
-
"Menu Item Name should not exceed more than 255 characters": string;
|
|
129
|
-
"It is not possible to upload more than 50 files simultaneously. If possible, please try to complete this over a few iterations.": string;
|
|
130
|
-
"Please enter a valid link": string;
|
|
131
|
-
"The image with the invalid link cannot be saved to the image gallery": string;
|
|
132
|
-
"The data source link is unavailable. Please, make sure there is an access to the data source.": string;
|
|
133
|
-
"The file should not exceed the maximum resolution of {maxImageResolution}px.": string;
|
|
134
|
-
"The option is disabled because was overridden in the Code editor": string;
|
|
135
|
-
"Global Styles & Layout": string;
|
|
136
|
-
"Structures & Modules": string;
|
|
137
|
-
};
|
|
138
|
-
};
|