@useinsider/guido 3.11.0-beta.181af4d → 3.11.0-beta.1fde696
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@types/config/schemas.js +59 -52
- package/dist/components/organisms/header/AutoSaveToggle.vue.js +22 -0
- package/dist/components/organisms/header/AutoSaveToggle.vue2.js +19 -0
- package/dist/components/organisms/header/EditorActions.vue.js +11 -11
- package/dist/components/organisms/header/EditorActions.vue2.js +50 -34
- package/dist/components/organisms/header/HeaderWrapper.vue.js +3 -3
- package/dist/components/organisms/header/HeaderWrapper.vue2.js +0 -2
- package/dist/components/organisms/header/MiddleSlot.vue.js +4 -4
- package/dist/components/organisms/header/MiddleSlot.vue2.js +7 -8
- package/dist/components/organisms/header/RightSlot.vue.js +8 -8
- package/dist/components/organisms/header/RightSlot.vue2.js +15 -15
- package/dist/components/organisms/header/version-history/VersionHistory.vue.js +1 -1
- package/dist/composables/useModuleDynamicContentRepair.js +36 -0
- package/dist/composables/useStripo.js +62 -59
- package/dist/config/i18n/en/labels.json.js +0 -17
- package/dist/guido.css +1 -1
- package/dist/node_modules/@vueuse/shared/index.js +28 -40
- package/dist/src/@types/config/schemas.d.ts +36 -4
- package/dist/src/composables/useActionsApi.d.ts +2 -2
- package/dist/src/composables/useConfig.d.ts +18 -2
- package/dist/src/composables/useHtmlValidator.test.d.ts +1 -0
- package/dist/src/composables/useModuleDynamicContentRepair.d.ts +18 -0
- package/dist/src/config/compiler/utils/recommendationIgnoreUtils.test.d.ts +1 -0
- package/dist/src/stores/config.d.ts +162 -18
- package/dist/src/stores/editor.d.ts +0 -105
- package/dist/src/stores/version-history.d.ts +1 -1
- package/dist/src/utils/dynamicContentConverter.d.ts +31 -0
- package/dist/src/utils/genericUtil.d.ts +7 -0
- package/dist/src/utils/timeUtil.d.ts +0 -10
- package/dist/stores/editor.js +1 -5
- package/dist/utils/dynamicContentConverter.js +33 -0
- package/dist/utils/genericUtil.js +26 -19
- package/dist/utils/timeUtil.js +17 -6
- package/package.json +1 -5
- package/dist/components/organisms/header/AutoSaveStatus.vue.js +0 -17
- package/dist/components/organisms/header/AutoSaveStatus.vue2.js +0 -21
- package/dist/components/organisms/header/EditorActionsMenu.vue.js +0 -20
- package/dist/components/organisms/header/EditorActionsMenu.vue2.js +0 -39
- package/dist/components/organisms/header/accessibility/AccessibilityToolbar.vue.js +0 -18
- package/dist/components/organisms/header/accessibility/AccessibilityToolbar.vue2.js +0 -37
- package/dist/components/organisms/header/accessibility/ColorVisionSelect.vue.js +0 -24
- package/dist/components/organisms/header/accessibility/ColorVisionSelect.vue2.js +0 -48
- package/dist/composables/useAccessibilityApi.js +0 -31
- package/dist/node_modules/@vueuse/core/index.js +0 -102
- package/dist/src/components/organisms/header/EditorActionsMenu.vue.d.ts +0 -2
- package/dist/src/components/organisms/header/accessibility/AccessibilityToolbar.vue.d.ts +0 -2
- package/dist/src/components/organisms/header/accessibility/ColorVisionSelect.vue.d.ts +0 -2
- package/dist/src/composables/useAccessibilityApi.d.ts +0 -15
- /package/dist/src/components/organisms/header/{AutoSaveStatus.vue.d.ts → AutoSaveToggle.vue.d.ts} +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useConfig as D } from "./useConfig.js";
|
|
2
|
+
import { useToaster as T } from "./useToaster.js";
|
|
3
|
+
import { useTranslations as g } from "./useTranslations.js";
|
|
4
|
+
import { ToasterTypeOptions as C } from "../enums/toaster.js";
|
|
5
|
+
import { buildDynamicContentLookup as h, convertModuleDynamicContent as O } from "../utils/dynamicContentConverter.js";
|
|
6
|
+
const M = "dynamic-content.unresolved-attributes-on-drop", A = () => {
|
|
7
|
+
const { template: i, isFeatureEnabled: p } = D(), { showToaster: a } = T(), m = g();
|
|
8
|
+
return { handleModuleAdd: (n, e) => {
|
|
9
|
+
var s, c, l;
|
|
10
|
+
try {
|
|
11
|
+
if ((n == null ? void 0 : n.action) !== "ADD" && (n == null ? void 0 : n.action) !== "COPY")
|
|
12
|
+
return;
|
|
13
|
+
const o = h(((s = i.value) == null ? void 0 : s.availableDynamicContent) ?? []);
|
|
14
|
+
if (o.size === 0)
|
|
15
|
+
return;
|
|
16
|
+
const t = (c = e == null ? void 0 : e.getTargetNode) == null ? void 0 : c.call(e), r = (l = t == null ? void 0 : t.getOuterHTML) == null ? void 0 : l.call(t);
|
|
17
|
+
if (!t || typeof r != "string")
|
|
18
|
+
return;
|
|
19
|
+
const { html: u, unresolved: y } = O(
|
|
20
|
+
r,
|
|
21
|
+
o,
|
|
22
|
+
p("liquidSyntax")
|
|
23
|
+
);
|
|
24
|
+
u !== r && e.modifyHtml(t).replaceWith(u), y.length > 0 && a({
|
|
25
|
+
type: C.Warning,
|
|
26
|
+
message: m(M)
|
|
27
|
+
});
|
|
28
|
+
} catch (o) {
|
|
29
|
+
console.error("Failed to repair dynamic content on module add:", o);
|
|
30
|
+
}
|
|
31
|
+
} };
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
M as UNRESOLVED_DYNAMIC_CONTENT_ON_DROP_KEY,
|
|
35
|
+
A as useModuleDynamicContentRepair
|
|
36
|
+
};
|
|
@@ -1,44 +1,45 @@
|
|
|
1
|
-
import { useActionsApi as
|
|
2
|
-
import { useBlocksConfig as
|
|
3
|
-
import { useConfig as
|
|
4
|
-
import { useCustomInterfaceAppearance as
|
|
5
|
-
import { useFullStoryBridge as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import { useActionsApi as x } from "./useActionsApi.js";
|
|
2
|
+
import { useBlocksConfig as O } from "./useBlocksConfig.js";
|
|
3
|
+
import { useConfig as q } from "./useConfig.js";
|
|
4
|
+
import { useCustomInterfaceAppearance as H } from "./useCustomInterfaceAppearance.js";
|
|
5
|
+
import { useFullStoryBridge as N } from "./useFullStoryBridge.js";
|
|
6
|
+
import { useModuleDynamicContentRepair as z } from "./useModuleDynamicContentRepair.js";
|
|
7
|
+
import { useStripoEventHandler as L } from "./useStripoEventHandler.js";
|
|
8
|
+
import { useStripoNotifications as $ } from "./useStripoNotifications.js";
|
|
9
|
+
import { useToaster as G } from "./useToaster.js";
|
|
10
|
+
import { localePatch as J } from "../config/i18n/index.js";
|
|
11
|
+
import { en as C } from "../config/i18n/en/index.js";
|
|
12
|
+
import { ToasterTypeOptions as X } from "../enums/toaster.js";
|
|
13
|
+
import { useStripoApi as j } from "../services/stripoApi.js";
|
|
14
|
+
import K from "../static/styles/customEditorStyle.css.js";
|
|
15
|
+
import { useEditorStore as w } from "../stores/editor.js";
|
|
16
|
+
import { buildMergeTagEntries as Q } from "../utils/genericUtil.js";
|
|
17
|
+
import W from "../package.json.js";
|
|
18
|
+
const ye = (b, l) => {
|
|
19
|
+
const { features: c, template: u, isFeatureEnabled: m } = q(), { handleError: p, showToaster: k } = G(), { getToken: v, getCustomFonts: T, getSyncModulesStatus: B } = j(), { handleEvent: F } = L(), { handleModuleAdd: M } = z(), { getStripoBlocksConfig: A } = O(), { getStripoNotifications: V } = $(), _ = async (s, i = [], r = !1) => {
|
|
20
|
+
var S, y, h, E;
|
|
21
|
+
const e = w(), { html: f, css: a } = s, { baseBlocks: t, extensions: d } = await A(), g = ((S = c.value) == null ? void 0 : S.displayConditions) ?? !0, P = ((y = c.value) == null ? void 0 : y.modulesDisabled) ?? !1, I = ((h = u.value) == null ? void 0 : h.forceRecreate) ?? !1;
|
|
21
22
|
await window.UIEditor.initEditor(
|
|
22
23
|
document.querySelector("#guido-editor"),
|
|
23
24
|
{
|
|
24
|
-
metadata:
|
|
25
|
-
html:
|
|
25
|
+
metadata: b,
|
|
26
|
+
html: f,
|
|
26
27
|
css: a,
|
|
27
|
-
forceRecreate:
|
|
28
|
+
forceRecreate: I,
|
|
28
29
|
locale: "en",
|
|
29
30
|
undoButtonSelector: "#guido__undo-button",
|
|
30
31
|
redoButtonSelector: "#guido__redo-button",
|
|
31
32
|
mobileViewButtonSelector: ".guido__view-option-selection-mobile",
|
|
32
33
|
desktopViewButtonSelector: ".guido__view-option-selection-desktop",
|
|
33
34
|
codeEditorButtonSelector: "#guido__code-button",
|
|
34
|
-
customAppearanceMergetags: !
|
|
35
|
+
customAppearanceMergetags: !m("liquidSyntax"),
|
|
35
36
|
customAppearanceMergetagsBorderColor: "#f1f3fe",
|
|
36
37
|
customAppearanceMergetagsBackgroundColor: "#f1f3fe",
|
|
37
|
-
customViewStyles:
|
|
38
|
-
conditionsEnabled:
|
|
39
|
-
customConditionsEnabled:
|
|
38
|
+
customViewStyles: K,
|
|
39
|
+
conditionsEnabled: g,
|
|
40
|
+
customConditionsEnabled: g,
|
|
40
41
|
enableXSSSecurity: !0,
|
|
41
|
-
modulesDisabled:
|
|
42
|
+
modulesDisabled: P,
|
|
42
43
|
syncModulesEnabled: r,
|
|
43
44
|
messageSettingsEnabled: !0,
|
|
44
45
|
displayGmailAnnotations: !0,
|
|
@@ -56,43 +57,45 @@ const fo = (C, l) => {
|
|
|
56
57
|
},
|
|
57
58
|
mergeTags: [
|
|
58
59
|
{
|
|
59
|
-
entries:
|
|
60
|
+
entries: Q(
|
|
60
61
|
l.preselectedDynamicContentList,
|
|
61
|
-
u
|
|
62
|
+
((E = u.value) == null ? void 0 : E.availableDynamicContent) ?? [],
|
|
63
|
+
m("liquidSyntax")
|
|
62
64
|
)
|
|
63
65
|
}
|
|
64
66
|
],
|
|
65
|
-
async onTokenRefreshRequest(
|
|
67
|
+
async onTokenRefreshRequest(o) {
|
|
66
68
|
try {
|
|
67
|
-
const n = await
|
|
68
|
-
|
|
69
|
+
const n = await v();
|
|
70
|
+
o(n);
|
|
69
71
|
} catch (n) {
|
|
70
|
-
|
|
72
|
+
p(n, "Failed to refresh token");
|
|
71
73
|
}
|
|
72
74
|
},
|
|
73
75
|
onTemplateLoaded() {
|
|
74
76
|
try {
|
|
75
|
-
const { importCss:
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
const { importCss: o } = H(), { activateCustomViewStyles: n, updateTimerInClonedTemplate: R } = x(), { injectFullStory: U } = N();
|
|
78
|
+
o(), n(), U(), R(), l.onReady(), e.isStripoInitialized = !0, e.loadingStatus = !1, setTimeout(() => {
|
|
79
|
+
e.hasChanges = !1;
|
|
78
80
|
}, 1e3);
|
|
79
|
-
} catch (
|
|
80
|
-
|
|
81
|
+
} catch (o) {
|
|
82
|
+
p(o, "Failed to load custom interface appearance");
|
|
81
83
|
}
|
|
82
84
|
},
|
|
83
|
-
onCodeEditorVisibilityChanged(
|
|
84
|
-
|
|
85
|
+
onCodeEditorVisibilityChanged(o) {
|
|
86
|
+
e.isCodeEditorOpen = o;
|
|
85
87
|
},
|
|
86
|
-
onEditorVisualModeChanged(
|
|
87
|
-
|
|
88
|
+
onEditorVisualModeChanged(o) {
|
|
89
|
+
e.editorVisualMode = o.toLowerCase();
|
|
88
90
|
},
|
|
89
|
-
onVersionHistoryVisibilityChanged(
|
|
90
|
-
|
|
91
|
+
onVersionHistoryVisibilityChanged(o) {
|
|
92
|
+
e.isVersionHistoryOpen = o;
|
|
91
93
|
},
|
|
92
94
|
onDataChanged() {
|
|
93
|
-
|
|
95
|
+
e.hasChanges = !0;
|
|
94
96
|
},
|
|
95
97
|
onEvent: F,
|
|
98
|
+
onModuleAdd: M,
|
|
96
99
|
notifications: V(),
|
|
97
100
|
ignoreClickOutsideSelectors: [
|
|
98
101
|
"#guido-dynamic-content-modal",
|
|
@@ -100,16 +103,16 @@ const fo = (C, l) => {
|
|
|
100
103
|
".in-drawer__container"
|
|
101
104
|
],
|
|
102
105
|
extensions: d,
|
|
103
|
-
localePatch:
|
|
106
|
+
localePatch: J
|
|
104
107
|
}
|
|
105
108
|
);
|
|
106
|
-
},
|
|
109
|
+
}, D = (s) => new Promise((i, r) => {
|
|
107
110
|
var d;
|
|
108
111
|
if (document.getElementById("UiEditorScript")) {
|
|
109
112
|
Promise.resolve(s()).then(i, r);
|
|
110
113
|
return;
|
|
111
114
|
}
|
|
112
|
-
const
|
|
115
|
+
const e = W.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");
|
|
113
116
|
t.id = "UiEditorScript", t.type = "module", t.src = a, t.onload = () => {
|
|
114
117
|
Promise.resolve(s()).then(i, r);
|
|
115
118
|
}, t.onerror = () => {
|
|
@@ -117,21 +120,21 @@ const fo = (C, l) => {
|
|
|
117
120
|
}, document.body.appendChild(t);
|
|
118
121
|
});
|
|
119
122
|
return { initPlugin: async (s) => {
|
|
120
|
-
const i =
|
|
123
|
+
const i = w();
|
|
121
124
|
try {
|
|
122
|
-
await
|
|
123
|
-
const [r,
|
|
124
|
-
|
|
125
|
+
await D(async () => {
|
|
126
|
+
const [r, e] = await Promise.all([
|
|
127
|
+
T(),
|
|
125
128
|
B()
|
|
126
129
|
]);
|
|
127
|
-
i.syncModulesEnabled =
|
|
130
|
+
i.syncModulesEnabled = e, await _(s, r, e);
|
|
128
131
|
});
|
|
129
132
|
} catch {
|
|
130
|
-
i.loadingStatus = !1,
|
|
131
|
-
type:
|
|
132
|
-
message:
|
|
133
|
+
i.loadingStatus = !1, k({
|
|
134
|
+
type: X.Error,
|
|
135
|
+
message: C["An error has occurred. Please report the error code to support."],
|
|
133
136
|
actionButton: {
|
|
134
|
-
text:
|
|
137
|
+
text: C["Reload page"],
|
|
135
138
|
onClick: () => window.location.reload()
|
|
136
139
|
}
|
|
137
140
|
});
|
|
@@ -139,5 +142,5 @@ const fo = (C, l) => {
|
|
|
139
142
|
} };
|
|
140
143
|
};
|
|
141
144
|
export {
|
|
142
|
-
|
|
145
|
+
ye as useStripo
|
|
143
146
|
};
|
|
@@ -5,23 +5,6 @@ const e = "Items", o = {
|
|
|
5
5
|
Items: e,
|
|
6
6
|
"This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.": "This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.",
|
|
7
7
|
"This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly.": "This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly.",
|
|
8
|
-
"email-editor.a11y-hide-images": "Hide images",
|
|
9
|
-
"email-editor.a11y-show-images": "Show images",
|
|
10
|
-
"email-editor.cvd-none": "No Color Deficiency",
|
|
11
|
-
"email-editor.cvd-protanopia": "Protanopia",
|
|
12
|
-
"email-editor.cvd-protanopia-description": "Causes red-green confusion and makes reds appear darker.",
|
|
13
|
-
"email-editor.cvd-deuteranopia": "Deuteranopia",
|
|
14
|
-
"email-editor.cvd-deuteranopia-description": "Causes red-green confusion.",
|
|
15
|
-
"email-editor.cvd-tritanopia": "Tritanopia",
|
|
16
|
-
"email-editor.cvd-tritanopia-description": "Causes blue-yellow confusion.",
|
|
17
|
-
"email-editor.cvd-achromatopsia": "Achromatopsia",
|
|
18
|
-
"email-editor.cvd-achromatopsia-description": "Causes complete color blindness.",
|
|
19
|
-
"email-editor.more-actions": "More actions",
|
|
20
|
-
"email-editor.preferences": "Preferences",
|
|
21
|
-
"email-editor.actions": "Actions",
|
|
22
|
-
"email-editor.accessibility-test": "Accessibility Test",
|
|
23
|
-
"email-editor.autosaved-at-today": "Autosaved at {time}, Today",
|
|
24
|
-
"email-editor.autosaved-at-date": "Autosaved at {date}",
|
|
25
8
|
"Pixel Tracking Opt-in": "Pixel Tracking Opt-in",
|
|
26
9
|
"OPT-IN SELECTION": "OPT-IN SELECTION",
|
|
27
10
|
"UNSUBSCRIBE GROUPS": "UNSUBSCRIBE GROUPS"
|
package/dist/guido.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-73199fa4] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{display:none!important}.
|
|
1
|
+
.gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-73199fa4] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{display:none!important}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-64c52560]{gap:8px}.version-history__toolbar[data-v-64c52560]{gap:4px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-82128f7d]{gap:4px}.header-wrapper[data-v-5c02dcc7]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-50dac6de]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-50dac6de]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-50dac6de]{height:calc(100vh - 75px - var(--ribbon-offset))}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-91a26acd]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-91a26acd]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-91a26acd]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-91a26acd]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-91a26acd]{object-fit:cover;transform:scale(1)}[data-v-b9a93c6e] .guido__verion-history-view-option-selection-desktop svg,[data-v-b9a93c6e] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-b9a93c6e] .in-segments-wrapper__button_selected,[data-v-b9a93c6e] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-06afaecb]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-06afaecb]{min-height:504px}.iframe-wrapper[data-v-cbafc185]{width:258px}.iframe-scaled[data-v-cbafc185]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-7419ae06] .vueperslides__bullets,[data-v-796d193b] .vueperslides__bullets{pointer-events:none!important}[data-v-796d193b] .vueperslides__parallax-wrapper{height:110px!important}[data-v-cadfc82d] .vueperslides__bullets{pointer-events:none!important}[data-v-cadfc82d] .vueperslides__parallax-wrapper{height:110px!important}
|
|
@@ -1,57 +1,45 @@
|
|
|
1
1
|
import "../../vue-demi/lib/index.js";
|
|
2
|
-
import { unref as p
|
|
3
|
-
function
|
|
4
|
-
return w() ? (m(t), !0) : !1;
|
|
5
|
-
}
|
|
6
|
-
function a(t) {
|
|
2
|
+
import { unref as p } from "vue";
|
|
3
|
+
function f(t) {
|
|
7
4
|
return typeof t == "function" ? t() : p(t);
|
|
8
5
|
}
|
|
9
|
-
const g = typeof window < "u" && typeof document < "u";
|
|
10
6
|
typeof WorkerGlobalScope < "u" && globalThis instanceof WorkerGlobalScope;
|
|
11
|
-
const
|
|
12
|
-
}
|
|
13
|
-
function h() {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
function v(t, n) {
|
|
18
|
-
function o(...e) {
|
|
19
|
-
return new Promise((r, i) => {
|
|
20
|
-
Promise.resolve(t(() => n.apply(this, e), { fn: n, thisArg: this, args: e })).then(r).catch(i);
|
|
7
|
+
const m = () => {
|
|
8
|
+
};
|
|
9
|
+
function h(t, n) {
|
|
10
|
+
function r(...e) {
|
|
11
|
+
return new Promise((i, o) => {
|
|
12
|
+
Promise.resolve(t(() => n.apply(this, e), { fn: n, thisArg: this, args: e })).then(i).catch(o);
|
|
21
13
|
});
|
|
22
14
|
}
|
|
23
|
-
return
|
|
15
|
+
return r;
|
|
24
16
|
}
|
|
25
|
-
function
|
|
26
|
-
let
|
|
27
|
-
const
|
|
28
|
-
clearTimeout(u),
|
|
17
|
+
function T(t, n = {}) {
|
|
18
|
+
let r, e, i = m;
|
|
19
|
+
const o = (u) => {
|
|
20
|
+
clearTimeout(u), i(), i = m;
|
|
29
21
|
};
|
|
30
22
|
return (u) => {
|
|
31
|
-
const
|
|
32
|
-
return
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
},
|
|
36
|
-
e &&
|
|
37
|
-
},
|
|
23
|
+
const a = f(t), l = f(n.maxWait);
|
|
24
|
+
return r && o(r), a <= 0 || l !== void 0 && l <= 0 ? (e && (o(e), e = null), Promise.resolve(u())) : new Promise((c, s) => {
|
|
25
|
+
i = n.rejectOnCancel ? s : c, l && !e && (e = setTimeout(() => {
|
|
26
|
+
r && o(r), e = null, c(u());
|
|
27
|
+
}, l)), r = setTimeout(() => {
|
|
28
|
+
e && o(e), e = null, c(u());
|
|
29
|
+
}, a);
|
|
38
30
|
});
|
|
39
31
|
};
|
|
40
32
|
}
|
|
41
|
-
function
|
|
42
|
-
return
|
|
43
|
-
|
|
33
|
+
function P(t, n = 200, r = {}) {
|
|
34
|
+
return h(
|
|
35
|
+
T(n, r),
|
|
44
36
|
t
|
|
45
37
|
);
|
|
46
38
|
}
|
|
47
39
|
export {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
f as noop,
|
|
54
|
-
a as toValue,
|
|
55
|
-
T as tryOnScopeDispose,
|
|
56
|
-
A as useDebounceFn
|
|
40
|
+
h as createFilterWrapper,
|
|
41
|
+
T as debounceFilter,
|
|
42
|
+
m as noop,
|
|
43
|
+
f as toValue,
|
|
44
|
+
P as useDebounceFn
|
|
57
45
|
};
|
|
@@ -227,6 +227,24 @@ export declare const TemplateSchema: v.ObjectSchema<{
|
|
|
227
227
|
readonly value: v.StringSchema<undefined>;
|
|
228
228
|
}, undefined>, undefined>;
|
|
229
229
|
}, undefined>, undefined>, readonly []>;
|
|
230
|
+
/**
|
|
231
|
+
* Full set of dynamic-content items the account offers (label + token).
|
|
232
|
+
* Used as the label→token map that repairs label-form placeholders
|
|
233
|
+
* (e.g. `{{ Phone Number }}`) in dropped saved modules.
|
|
234
|
+
*/
|
|
235
|
+
readonly availableDynamicContent: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
236
|
+
/** Display text for the dynamic content */
|
|
237
|
+
readonly text: v.StringSchema<undefined>;
|
|
238
|
+
/** Template variable value (e.g., {{username}}) */
|
|
239
|
+
readonly value: v.StringSchema<undefined>;
|
|
240
|
+
/** Fallback value if variable is empty */
|
|
241
|
+
readonly fallback: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
242
|
+
/** Optional formatting options */
|
|
243
|
+
readonly format: v.OptionalSchema<v.ObjectSchema<{
|
|
244
|
+
readonly key: v.StringSchema<undefined>;
|
|
245
|
+
readonly value: v.StringSchema<undefined>;
|
|
246
|
+
}, undefined>, undefined>;
|
|
247
|
+
}, undefined>, undefined>, readonly []>;
|
|
230
248
|
/** Valid custom field attribute names from the partner's categorized fields */
|
|
231
249
|
readonly customFieldAttributes: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
|
|
232
250
|
/** Selected unsubscribe page IDs */
|
|
@@ -354,8 +372,6 @@ export declare const FeaturesSchema: v.ObjectSchema<{
|
|
|
354
372
|
readonly liquidSyntax: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
355
373
|
/** Enable autosave (3-min interval + tab-hide). User toggles on/off from the header. */
|
|
356
374
|
readonly autosave: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
357
|
-
/** Enable the Stripo Accessibility Checker control in the editor toolbar. */
|
|
358
|
-
readonly accessibilityTesting: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
359
375
|
}, undefined>;
|
|
360
376
|
/**
|
|
361
377
|
* Default block types available in Stripo
|
|
@@ -624,6 +640,24 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
|
|
|
624
640
|
readonly value: v.StringSchema<undefined>;
|
|
625
641
|
}, undefined>, undefined>;
|
|
626
642
|
}, undefined>, undefined>, readonly []>;
|
|
643
|
+
/**
|
|
644
|
+
* Full set of dynamic-content items the account offers (label + token).
|
|
645
|
+
* Used as the label→token map that repairs label-form placeholders
|
|
646
|
+
* (e.g. `{{ Phone Number }}`) in dropped saved modules.
|
|
647
|
+
*/
|
|
648
|
+
readonly availableDynamicContent: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
649
|
+
/** Display text for the dynamic content */
|
|
650
|
+
readonly text: v.StringSchema<undefined>;
|
|
651
|
+
/** Template variable value (e.g., {{username}}) */
|
|
652
|
+
readonly value: v.StringSchema<undefined>;
|
|
653
|
+
/** Fallback value if variable is empty */
|
|
654
|
+
readonly fallback: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
655
|
+
/** Optional formatting options */
|
|
656
|
+
readonly format: v.OptionalSchema<v.ObjectSchema<{
|
|
657
|
+
readonly key: v.StringSchema<undefined>;
|
|
658
|
+
readonly value: v.StringSchema<undefined>;
|
|
659
|
+
}, undefined>, undefined>;
|
|
660
|
+
}, undefined>, undefined>, readonly []>;
|
|
627
661
|
/** Valid custom field attribute names from the partner's categorized fields */
|
|
628
662
|
readonly customFieldAttributes: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
|
|
629
663
|
/** Selected unsubscribe page IDs */
|
|
@@ -736,8 +770,6 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
|
|
|
736
770
|
readonly liquidSyntax: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
737
771
|
/** Enable autosave (3-min interval + tab-hide). User toggles on/off from the header. */
|
|
738
772
|
readonly autosave: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
739
|
-
/** Enable the Stripo Accessibility Checker control in the editor toolbar. */
|
|
740
|
-
readonly accessibilityTesting: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
741
773
|
}, undefined>, {}>;
|
|
742
774
|
/** Block configuration */
|
|
743
775
|
readonly blocks: v.OptionalSchema<v.ObjectSchema<{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CompileEmailOptions } from '@@/Types/
|
|
2
|
-
import { GetCompiledEmailOptions, CompiledEmailResult, TemplateData } from '@@/Types/
|
|
1
|
+
import type { CompileEmailOptions } from '@@/Types/actions-api';
|
|
2
|
+
import { GetCompiledEmailOptions, CompiledEmailResult, TemplateData } from '@@/Types/actions-api';
|
|
3
3
|
export declare const useActionsApi: () => {
|
|
4
4
|
getCompiledEmail: (options?: GetCompiledEmailOptions) => Promise<CompiledEmailResult>;
|
|
5
5
|
getTemplateData: () => Promise<TemplateData>;
|
|
@@ -34,6 +34,15 @@ export declare const useConfig: () => {
|
|
|
34
34
|
value: string;
|
|
35
35
|
} | undefined;
|
|
36
36
|
}[];
|
|
37
|
+
availableDynamicContent: {
|
|
38
|
+
text: string;
|
|
39
|
+
value: string;
|
|
40
|
+
fallback?: string | undefined;
|
|
41
|
+
format?: {
|
|
42
|
+
key: string;
|
|
43
|
+
value: string;
|
|
44
|
+
} | undefined;
|
|
45
|
+
}[];
|
|
37
46
|
customFieldAttributes: string[];
|
|
38
47
|
selectedUnsubscribePages: number[];
|
|
39
48
|
forceRecreate: boolean;
|
|
@@ -93,7 +102,6 @@ export declare const useConfig: () => {
|
|
|
93
102
|
modulesDisabled: boolean;
|
|
94
103
|
liquidSyntax: boolean;
|
|
95
104
|
autosave: boolean;
|
|
96
|
-
accessibilityTesting: boolean;
|
|
97
105
|
};
|
|
98
106
|
blocks: {
|
|
99
107
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -163,6 +171,15 @@ export declare const useConfig: () => {
|
|
|
163
171
|
value: string;
|
|
164
172
|
} | undefined;
|
|
165
173
|
}[];
|
|
174
|
+
availableDynamicContent: {
|
|
175
|
+
text: string;
|
|
176
|
+
value: string;
|
|
177
|
+
fallback?: string | undefined;
|
|
178
|
+
format?: {
|
|
179
|
+
key: string;
|
|
180
|
+
value: string;
|
|
181
|
+
} | undefined;
|
|
182
|
+
}[];
|
|
166
183
|
customFieldAttributes: string[];
|
|
167
184
|
selectedUnsubscribePages: number[];
|
|
168
185
|
forceRecreate: boolean;
|
|
@@ -222,7 +239,6 @@ export declare const useConfig: () => {
|
|
|
222
239
|
modulesDisabled: boolean;
|
|
223
240
|
liquidSyntax: boolean;
|
|
224
241
|
autosave: boolean;
|
|
225
|
-
accessibilityTesting: boolean;
|
|
226
242
|
} | null>;
|
|
227
243
|
blocks: import("vue").ComputedRef<{
|
|
228
244
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ModuleAddData, ModuleModifier } from '@@/Types/stripo';
|
|
2
|
+
/**
|
|
3
|
+
* Host-registered translation key for the "some attributes could not be
|
|
4
|
+
* converted" toaster. Guido resolves it against the host's `window.trans.en`;
|
|
5
|
+
* the copy is registered host-side.
|
|
6
|
+
*/
|
|
7
|
+
export declare const UNRESOLVED_DYNAMIC_CONTENT_ON_DROP_KEY = "dynamic-content.unresolved-attributes-on-drop";
|
|
8
|
+
/**
|
|
9
|
+
* Repairs label-form dynamic-content tokens in saved modules as they are dropped
|
|
10
|
+
* or copied into the editor. Saved modules serialize merge-tag chips by their
|
|
11
|
+
* display label (`{{ Phone Number }}`); this maps them back to their canonical
|
|
12
|
+
* token (`{{phone_number}}`) using the account's dynamic-content list.
|
|
13
|
+
*
|
|
14
|
+
* Wired into Stripo via the `onModuleAdd` init callback (see `useStripo`).
|
|
15
|
+
*/
|
|
16
|
+
export declare const useModuleDynamicContentRepair: () => {
|
|
17
|
+
handleModuleAdd: (data: ModuleAddData, modifier: ModuleModifier) => void;
|
|
18
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|