@useinsider/guido 3.11.0-beta.b9b7d29 → 3.11.0-beta.c237b25
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 +49 -40
- package/dist/components/Guido.vue.js +3 -3
- package/dist/components/Guido.vue2.js +41 -41
- package/dist/components/organisms/header/EditorActions.vue.js +1 -1
- package/dist/components/organisms/header/HeaderWrapper.vue.js +3 -3
- package/dist/components/organisms/header/HeaderWrapper.vue2.js +2 -0
- package/dist/components/organisms/header/version-history/VersionHistory.vue.js +1 -1
- package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +23 -20
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +11 -12
- package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +5 -5
- package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +2 -2
- package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +3 -3
- package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +9 -9
- package/dist/composables/useModuleDynamicContentRepair.js +36 -0
- package/dist/composables/useStripo.js +62 -59
- package/dist/enums/academy.js +1 -1
- package/dist/enums/date.js +4 -3
- package/dist/enums/onboarding.js +12 -21
- package/dist/guido.css +1 -1
- package/dist/src/@types/config/schemas.d.ts +36 -0
- package/dist/src/composables/useConfig.d.ts +18 -0
- package/dist/src/composables/useModuleDynamicContentRepair.d.ts +18 -0
- package/dist/src/enums/academy.d.ts +3 -3
- package/dist/src/enums/onboarding.d.ts +0 -3
- package/dist/src/stores/config.d.ts +162 -0
- package/dist/src/utils/dynamicContentConverter.d.ts +27 -0
- package/dist/src/utils/genericUtil.d.ts +7 -0
- package/dist/stores/onboarding.js +11 -14
- package/dist/utils/dateUtil.js +23 -10
- package/dist/utils/dynamicContentConverter.js +31 -0
- package/dist/utils/genericUtil.js +26 -19
- package/package.json +10 -1
- package/dist/src/composables/useHtmlValidator.test.d.ts +0 -1
- package/dist/src/config/compiler/utils/recommendationIgnoreUtils.test.d.ts +0 -1
|
@@ -2,15 +2,15 @@ import n from "./UnsubscribeTypeSelection.vue2.js";
|
|
|
2
2
|
/* empty css */
|
|
3
3
|
import o from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
4
|
var i = function() {
|
|
5
|
-
var
|
|
6
|
-
return s(
|
|
5
|
+
var t = this, s = t._self._c, e = t._self._setupProxy;
|
|
6
|
+
return s(e.WpDrawer, { attrs: { id: "unsubscribe-modal", "description-status": "", "description-text": e.descriptionText, "footer-button-group-options": e.footerButtonGroupOptions, status: e.unsubscribeStore.typeSelectionDrawerStatus, "title-text": e.trans("unsubscription-preference.select-unsubscribe-page-title") }, on: { cancelOrBackButtonEvent: e.closeModal, onCloseEvent: e.closeModal, primaryButtonEvent: e.selectCollection } }, [s(e.InSegments, { staticClass: "w-1", attrs: { "with-icon": "", align: "vertical", disable: e.isSelecting, "segment-list": e.segmentList, selected: e.selectedCollection, "skeleton-sizing": { width: 495, height: 180 }, "skeleton-status": e.skeletonStatus }, on: { click: e.changeCollection } })], 1);
|
|
7
7
|
}, r = [], c = /* @__PURE__ */ o(
|
|
8
8
|
n,
|
|
9
9
|
i,
|
|
10
10
|
r,
|
|
11
11
|
!1,
|
|
12
12
|
null,
|
|
13
|
-
"
|
|
13
|
+
"b9a93c6e"
|
|
14
14
|
);
|
|
15
15
|
const _ = c.exports;
|
|
16
16
|
export {
|
|
@@ -10,10 +10,10 @@ import { InSegments as L } from "@useinsider/design-system-vue";
|
|
|
10
10
|
const W = /* @__PURE__ */ _({
|
|
11
11
|
__name: "UnsubscribeTypeSelection",
|
|
12
12
|
setup(k) {
|
|
13
|
-
const t = N(), { showToaster: d } = w(), e = G(), n = b(!1), o = b(!0), r = b(l.GLOBAL_UNSUBSCRIBE),
|
|
13
|
+
const t = N(), { showToaster: d } = w(), e = G(), n = b(!1), o = b(!0), r = b(l.GLOBAL_UNSUBSCRIBE), y = t(
|
|
14
14
|
"unsubscription-preference.select-unsubscribe-page-description",
|
|
15
15
|
{ action: `<a href="${D.GLOBAL_UNSUBSCRIBE}" target="_blank">${t("ds-rules.visit-academy")}</a>` }
|
|
16
|
-
),
|
|
16
|
+
), T = f(() => [
|
|
17
17
|
{
|
|
18
18
|
description: t("unsubscription-preference.type-global-unsubscribe-description"),
|
|
19
19
|
icon: "line-contact-global-unsub-page",
|
|
@@ -31,7 +31,7 @@ const W = /* @__PURE__ */ _({
|
|
|
31
31
|
disable: e.isSubscriptionPreferencesCenterDisabled,
|
|
32
32
|
tooltipText: e.isSubscriptionPreferencesCenterDisabled ? t("unsubscription-preference.pref-center-added") : ""
|
|
33
33
|
}
|
|
34
|
-
]),
|
|
34
|
+
]), S = f(
|
|
35
35
|
() => e.isGlobalUnsubscribeDisabled && e.isSubscriptionPreferencesCenterDisabled
|
|
36
36
|
), C = f(() => ({
|
|
37
37
|
primaryButton: {
|
|
@@ -41,7 +41,7 @@ const W = /* @__PURE__ */ _({
|
|
|
41
41
|
n.value ? "unsubscription-preference.selecting-type" : "products.select-and-continue"
|
|
42
42
|
),
|
|
43
43
|
loadingStatus: n.value,
|
|
44
|
-
disabledStatus:
|
|
44
|
+
disabledStatus: S.value,
|
|
45
45
|
skeletonStatus: o.value,
|
|
46
46
|
skeletonSizing: { width: 168, height: 40 }
|
|
47
47
|
},
|
|
@@ -53,12 +53,12 @@ const W = /* @__PURE__ */ _({
|
|
|
53
53
|
skeletonStatus: o.value,
|
|
54
54
|
skeletonSizing: { width: 78, height: 40 }
|
|
55
55
|
}
|
|
56
|
-
})),
|
|
57
|
-
e.typeSelectionDrawerStatus = !1, document.dispatchEvent(new CustomEvent("unsubscribe:cancel", {
|
|
56
|
+
})), g = (s) => {
|
|
57
|
+
e.typeSelectionDrawerStatus && (e.typeSelectionDrawerStatus = !1, document.dispatchEvent(new CustomEvent("unsubscribe:cancel", {
|
|
58
58
|
detail: { blockId: e.pendingBlockId }
|
|
59
59
|
})), s && setTimeout(() => {
|
|
60
60
|
s();
|
|
61
|
-
}, 500);
|
|
61
|
+
}, 500));
|
|
62
62
|
}, E = (s) => {
|
|
63
63
|
r.value = s;
|
|
64
64
|
}, m = () => {
|
|
@@ -98,14 +98,14 @@ const W = /* @__PURE__ */ _({
|
|
|
98
98
|
}), !1;
|
|
99
99
|
}, B = async () => {
|
|
100
100
|
if (n.value = !0, await e.fetchTemplates(!0), e.setCollection(r.value), !m()) {
|
|
101
|
-
n.value = !1,
|
|
101
|
+
n.value = !1, g();
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
104
|
n.value = !1, e.typeSelectionDrawerStatus = !1, e.pageSelectionDrawerStatus = !0;
|
|
105
105
|
};
|
|
106
106
|
return v(() => e.typeSelectionDrawerStatus, (s) => {
|
|
107
107
|
s && (o.value = !0, r.value = l.GLOBAL_UNSUBSCRIBE, e.isGlobalUnsubscribeDisabled && (r.value = e.isSubscriptionPreferencesCenterDisabled ? 0 : l.SUBSCRIPTION_PREFERENCE_CENTER), o.value = !1);
|
|
108
|
-
}), { __sfc: !0, trans: t, showToaster: d, unsubscribeStore: e, isSelecting: n, skeletonStatus: o, selectedCollection: r, descriptionText:
|
|
108
|
+
}), { __sfc: !0, trans: t, showToaster: d, unsubscribeStore: e, isSelecting: n, skeletonStatus: o, selectedCollection: r, descriptionText: y, segmentList: T, hasNoSelectableType: S, footerButtonGroupOptions: C, closeModal: g, changeCollection: E, validateTemplates: m, selectCollection: B, WpDrawer: U, InSegments: L };
|
|
109
109
|
}
|
|
110
110
|
});
|
|
111
111
|
export {
|
|
@@ -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
|
};
|
package/dist/enums/academy.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e = "https://academy.insiderone.com", o = {
|
|
1
|
+
const e = "https://academy.insiderone.com/", o = {
|
|
2
2
|
EMAIL_EDITOR: `${e}/docs/email-drag-and-drop-editor`,
|
|
3
3
|
GLOBAL_UNSUBSCRIBE: `${e}/docs/global-unsubscribe-preference-center`,
|
|
4
4
|
AMP_FOR_EMAILS: `${e}/docs/amp-for-emails`
|
package/dist/enums/date.js
CHANGED
package/dist/enums/onboarding.js
CHANGED
|
@@ -1,26 +1,17 @@
|
|
|
1
|
-
const e =
|
|
2
|
-
"newVersionPopup",
|
|
3
|
-
"genericOnboarding",
|
|
4
|
-
"textBlockOnboarding",
|
|
5
|
-
"versionHistoryOnboarding",
|
|
6
|
-
"ampOnboarding",
|
|
7
|
-
"itemsOnboarding"
|
|
8
|
-
], o = [
|
|
1
|
+
const e = [
|
|
9
2
|
".service-element.stacked-panel-item.ng-tns-c1014751574-3.level-bottom-0.ng-star-inserted",
|
|
10
3
|
".service-element.stacked-panel-item.ng-tns-c1014751574-3.level-bottom-1.ng-star-inserted",
|
|
11
4
|
".service-element.stacked-panel-item.ng-tns-c1014751574-3.level-bottom-2.ng-star-inserted"
|
|
12
|
-
],
|
|
5
|
+
], t = "ui-editor", n = 'button[role="tab"][aria-label="Card Composition"]', s = 'button[role="tab"][aria-label="Settings"]', E = ".in-ribbons-wrapper", o = ".guido__amp-toggle-html", a = ".in-segments-wrapper", O = '[data-testid="guido-header"]', _ = 158, i = 10;
|
|
13
6
|
export {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
E as SETTINGS_TAB_SELECTOR,
|
|
25
|
-
s as UI_EDITOR_SELECTOR
|
|
7
|
+
o as AMP_TOGGLE_BUTTON_SELECTOR,
|
|
8
|
+
a as AMP_TOGGLE_WRAPPER_SELECTOR,
|
|
9
|
+
n as CARD_COMPOSITION_TAB_SELECTOR,
|
|
10
|
+
O as HEADER_SELECTOR,
|
|
11
|
+
_ as POPOVER_LEFT_OFFSET,
|
|
12
|
+
i as POPOVER_TOP_GAP,
|
|
13
|
+
E as RIBBON_SELECTOR,
|
|
14
|
+
e as SERVICE_HOVER_SELECTORS,
|
|
15
|
+
s as SETTINGS_TAB_SELECTOR,
|
|
16
|
+
t as UI_EDITOR_SELECTOR
|
|
26
17
|
};
|
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}.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-
|
|
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-fad98586]{gap:8px}.version-history__toolbar[data-v-fad98586]{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-6e711fd7]{gap:4px}.header-wrapper[data-v-d11dd577]{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}
|
|
@@ -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 */
|
|
@@ -622,6 +640,24 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
|
|
|
622
640
|
readonly value: v.StringSchema<undefined>;
|
|
623
641
|
}, undefined>, undefined>;
|
|
624
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 []>;
|
|
625
661
|
/** Valid custom field attribute names from the partner's categorized fields */
|
|
626
662
|
readonly customFieldAttributes: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
|
|
627
663
|
/** Selected unsubscribe page IDs */
|
|
@@ -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;
|
|
@@ -162,6 +171,15 @@ export declare const useConfig: () => {
|
|
|
162
171
|
value: string;
|
|
163
172
|
} | undefined;
|
|
164
173
|
}[];
|
|
174
|
+
availableDynamicContent: {
|
|
175
|
+
text: string;
|
|
176
|
+
value: string;
|
|
177
|
+
fallback?: string | undefined;
|
|
178
|
+
format?: {
|
|
179
|
+
key: string;
|
|
180
|
+
value: string;
|
|
181
|
+
} | undefined;
|
|
182
|
+
}[];
|
|
165
183
|
customFieldAttributes: string[];
|
|
166
184
|
selectedUnsubscribePages: number[];
|
|
167
185
|
forceRecreate: boolean;
|
|
@@ -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
|
+
};
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* for easy maintenance and domain migration.
|
|
6
6
|
*/
|
|
7
7
|
export declare const ACADEMY_LINKS: {
|
|
8
|
-
readonly EMAIL_EDITOR: "https://academy.insiderone.com
|
|
9
|
-
readonly GLOBAL_UNSUBSCRIBE: "https://academy.insiderone.com
|
|
10
|
-
readonly AMP_FOR_EMAILS: "https://academy.insiderone.com
|
|
8
|
+
readonly EMAIL_EDITOR: "https://academy.insiderone.com//docs/email-drag-and-drop-editor";
|
|
9
|
+
readonly GLOBAL_UNSUBSCRIBE: "https://academy.insiderone.com//docs/global-unsubscribe-preference-center";
|
|
10
|
+
readonly AMP_FOR_EMAILS: "https://academy.insiderone.com//docs/amp-for-emails";
|
|
11
11
|
};
|
|
12
12
|
export type AcademyLinkKey = keyof typeof ACADEMY_LINKS;
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import type { OnboardingType } from '@@/Types/onboarding';
|
|
2
|
-
export declare const FORCE_ONBOARDING_FOR_TESTING: boolean;
|
|
3
|
-
export declare const FORCED_ONBOARDING_TYPES: OnboardingType[];
|
|
4
1
|
export declare const SERVICE_HOVER_SELECTORS: string[];
|
|
5
2
|
export declare const UI_EDITOR_SELECTOR = "ui-editor";
|
|
6
3
|
export declare const CARD_COMPOSITION_TAB_SELECTOR = "button[role=\"tab\"][aria-label=\"Card Composition\"]";
|