@useinsider/guido 1.0.3-beta.f518830 → 1.0.3-beta.f711f2e
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 +0 -3
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +80 -80
- package/dist/components/organisms/header/RightSlot.vue.js +1 -1
- package/dist/components/organisms/header/RightSlot.vue2.js +22 -23
- package/dist/composables/useGuidoActions.js +9 -19
- package/dist/composables/useStripo.js +35 -37
- package/dist/config/compiler/unsubscribeCompilerRules.js +28 -33
- package/dist/enums/defaults.js +1 -2
- package/dist/enums/unsubscribe.js +25 -27
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
- package/dist/extensions/DynamicContent/dynamic-content-modal.js +19 -25
- package/dist/extensions/DynamicContent/dynamic-content.js +33 -128
- package/dist/guido.css +1 -1
- package/dist/package.json.js +1 -1
- package/dist/src/@types/generic.d.ts +6 -27
- package/dist/src/components/Guido.vue.d.ts +2 -3
- package/dist/src/composables/useGuidoActions.d.ts +0 -9
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
- package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +2 -9
- package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +2 -52
- package/dist/src/stores/config.d.ts +2 -3
- package/dist/src/stores/dynamic-content.d.ts +3 -3
- package/dist/src/stores/editor.d.ts +1 -1
- package/dist/src/stores/onboarding.d.ts +1 -1
- package/dist/src/stores/preview.d.ts +1 -1
- package/dist/src/stores/recommendation.d.ts +1 -1
- package/dist/src/stores/save-as-template.d.ts +1 -1
- package/dist/src/stores/toaster.d.ts +1 -1
- package/dist/src/stores/unsubscribe.d.ts +1 -1
- package/dist/src/stores/version-history.d.ts +1 -1
- package/dist/src/utils/genericUtil.d.ts +0 -1
- package/dist/stores/config.js +5 -5
- package/dist/stores/dynamic-content.js +2 -2
- package/dist/stores/editor.js +1 -1
- package/dist/stores/onboarding.js +27 -27
- package/dist/stores/preview.js +1 -1
- package/dist/stores/recommendation.js +3 -3
- package/dist/stores/save-as-template.js +2 -2
- package/dist/stores/toaster.js +1 -1
- package/dist/stores/unsubscribe.js +1 -1
- package/dist/stores/version-history.js +4 -4
- package/dist/utils/genericUtil.js +9 -20
- package/package.json +3 -3
- package/dist/src/utils/environmentUtil.d.ts +0 -5
- package/dist/utils/environmentUtil.js +0 -4
package/README.md
CHANGED
|
@@ -167,7 +167,6 @@ export default {
|
|
|
167
167
|
| `on-change` | void | It Fires once for managing leave modal etc. |
|
|
168
168
|
| `ready` | void | Fired when the editor is ready and template is loaded |
|
|
169
169
|
| `onboarding-finished` | void | Fired when the onboarding popup is dismissed or completed, allowing parent applications to track onboarding state |
|
|
170
|
-
| `test-email:click` | - | Fired when user clicks the test email button in the header |
|
|
171
170
|
|
|
172
171
|
### Guido Exposed Methods
|
|
173
172
|
```typescript
|
|
@@ -198,7 +197,6 @@ interface GuidoConfig {
|
|
|
198
197
|
saveAsTemplate: boolean;
|
|
199
198
|
versionHistory: boolean;
|
|
200
199
|
testMessage: boolean;
|
|
201
|
-
displayConditions: boolean;
|
|
202
200
|
};
|
|
203
201
|
blocks?: {
|
|
204
202
|
excludeDefaults?: GuidoBlockType[];
|
|
@@ -217,7 +215,6 @@ interface GuidoConfig {
|
|
|
217
215
|
| `features.dynamicContent` | `boolean` | `true` | Enable dynamic content insertion feature |
|
|
218
216
|
| `features.saveAsTemplate` | `boolean` | `true` | Enable save as template feature |
|
|
219
217
|
| `features.versionHistory` | `boolean` | `true` | Enable version history feature |
|
|
220
|
-
| `features.displayConditions` | `boolean` | `true` | Enable display conditions |
|
|
221
218
|
| `blocks` | `BlocksConfig` | `{ excludeDefaults: [], includeCustoms: [] }` | Block configuration for excluding default blocks and including custom blocks. See [Blocks Configuration](#-blocks-configuration) section below |
|
|
222
219
|
| `blocks.excludeDefaults` | `GuidoBlockType[]` | `[]` | Array of default Stripo blocks to exclude from the editor |
|
|
223
220
|
| `blocks.includeCustoms` | `GuidoCustomBlockType[]` | `[]` | Array of custom blocks to include in the editor |
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { provideGuidoActions as
|
|
3
|
-
import { usePartner as
|
|
4
|
-
import { useStripo as
|
|
5
|
-
import { migrate as
|
|
6
|
-
import { DefaultUsername as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import { useStripoApi as
|
|
14
|
-
import { useConfigStore as
|
|
15
|
-
import { useDynamicContentStore as
|
|
16
|
-
import { useEditorStore as
|
|
17
|
-
import { usePreviewStore as
|
|
18
|
-
import { useUnsubscribeStore as
|
|
19
|
-
import
|
|
20
|
-
const
|
|
1
|
+
import { defineComponent as z, defineAsyncComponent as I, ref as B, computed as U, watch as W, onMounted as K, onUnmounted as O } from "vue";
|
|
2
|
+
import { provideGuidoActions as j } from "../composables/useGuidoActions.js";
|
|
3
|
+
import { usePartner as q } from "../composables/usePartner.js";
|
|
4
|
+
import { useStripo as J } from "../composables/useStripo.js";
|
|
5
|
+
import { migrate as _ } from "../config/migrator/index.js";
|
|
6
|
+
import { DefaultUsername as Q, DefaultMessageType as V, DefaultGuidoConfig as L } from "../enums/defaults.js";
|
|
7
|
+
import X from "./organisms/base/Toaster.vue.js";
|
|
8
|
+
import Y from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
9
|
+
import Z from "./organisms/header/HeaderWrapper.vue.js";
|
|
10
|
+
import $ from "./organisms/LoadingWrapper.vue.js";
|
|
11
|
+
import ee from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
12
|
+
import oe from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
13
|
+
import { useStripoApi as te } from "../services/stripoApi.js";
|
|
14
|
+
import { useConfigStore as ne } from "../stores/config.js";
|
|
15
|
+
import { useDynamicContentStore as re } from "../stores/dynamic-content.js";
|
|
16
|
+
import { useEditorStore as ie } from "../stores/editor.js";
|
|
17
|
+
import { usePreviewStore as ae } from "../stores/preview.js";
|
|
18
|
+
import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
|
|
19
|
+
import k from "../node_modules/lodash-es/merge.js";
|
|
20
|
+
const Pe = /* @__PURE__ */ z({
|
|
21
21
|
__name: "Guido",
|
|
22
22
|
props: {
|
|
23
23
|
templateId: null,
|
|
@@ -31,104 +31,104 @@ const Ue = /* @__PURE__ */ O({
|
|
|
31
31
|
guidoConfig: null,
|
|
32
32
|
templateConfig: null
|
|
33
33
|
},
|
|
34
|
-
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"
|
|
35
|
-
setup(
|
|
36
|
-
const
|
|
34
|
+
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"],
|
|
35
|
+
setup(A, { expose: N, emit: t }) {
|
|
36
|
+
const p = A, F = I(
|
|
37
37
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
38
|
-
),
|
|
38
|
+
), H = I(
|
|
39
39
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
40
|
-
),
|
|
40
|
+
), g = B(), s = re(), f = se(), y = ne(), c = ie(), R = ae(), n = U(() => c.hasChanges), { getPartnerName: v, getProductType: C, isTestPartner: x } = q(), b = () => {
|
|
41
41
|
var e;
|
|
42
|
-
return (e =
|
|
42
|
+
return (e = g.value) == null ? void 0 : e.handleSave(!0);
|
|
43
43
|
}, {
|
|
44
|
-
templateId:
|
|
45
|
-
userId:
|
|
46
|
-
guidoConfig:
|
|
47
|
-
templateConfig:
|
|
44
|
+
templateId: d,
|
|
45
|
+
userId: w,
|
|
46
|
+
guidoConfig: m,
|
|
47
|
+
templateConfig: o,
|
|
48
48
|
html: r = "",
|
|
49
|
-
css:
|
|
50
|
-
partnerName:
|
|
51
|
-
productType:
|
|
52
|
-
messageType:
|
|
53
|
-
username:
|
|
54
|
-
} =
|
|
55
|
-
|
|
56
|
-
partnerName:
|
|
57
|
-
productType:
|
|
58
|
-
messageType:
|
|
59
|
-
},
|
|
60
|
-
const { initPlugin:
|
|
61
|
-
emailId:
|
|
62
|
-
userId:
|
|
63
|
-
username:
|
|
64
|
-
partnerName:
|
|
65
|
-
productType:
|
|
66
|
-
preselectedDynamicContentList:
|
|
49
|
+
css: h = "",
|
|
50
|
+
partnerName: i = v(),
|
|
51
|
+
productType: a = C(),
|
|
52
|
+
messageType: u = V,
|
|
53
|
+
username: S = Q
|
|
54
|
+
} = p, l = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
|
|
55
|
+
c.templateId = d, window.GuidoConfig = k(L, m), window.GuidoConfig.partner = {
|
|
56
|
+
partnerName: i,
|
|
57
|
+
productType: a,
|
|
58
|
+
messageType: u
|
|
59
|
+
}, y.templateConfig = o;
|
|
60
|
+
const { initPlugin: D } = J({
|
|
61
|
+
emailId: d,
|
|
62
|
+
userId: w,
|
|
63
|
+
username: S,
|
|
64
|
+
partnerName: i,
|
|
65
|
+
productType: a,
|
|
66
|
+
preselectedDynamicContentList: l,
|
|
67
67
|
onReady: () => {
|
|
68
|
-
console.debug("guido:ready"),
|
|
68
|
+
console.debug("guido:ready"), t("ready");
|
|
69
69
|
}
|
|
70
|
-
}), { getDefaultTemplate:
|
|
70
|
+
}), { getDefaultTemplate: G } = te(), M = U(() => {
|
|
71
71
|
var e;
|
|
72
72
|
return !((e = window.GuidoConfig) != null && e.useHeader);
|
|
73
73
|
});
|
|
74
|
-
|
|
74
|
+
j({
|
|
75
75
|
onBack: () => {
|
|
76
|
-
console.debug("guido:back"),
|
|
76
|
+
console.debug("guido:back"), t("back");
|
|
77
77
|
},
|
|
78
78
|
onSaveStart: () => {
|
|
79
|
-
console.debug("guido:save:start"),
|
|
79
|
+
console.debug("guido:save:start"), t("save:start");
|
|
80
80
|
},
|
|
81
81
|
onSaveComplete: (e) => {
|
|
82
|
-
console.debug("guido:save:complete", e),
|
|
83
|
-
},
|
|
84
|
-
onTestEmailClick: () => {
|
|
85
|
-
console.debug("guido:test-email:click"), o("test-email:click");
|
|
82
|
+
console.debug("guido:save:complete", e), t("save:complete", e);
|
|
86
83
|
}
|
|
87
84
|
});
|
|
88
|
-
const
|
|
89
|
-
console.debug("dynamic-content:close", e),
|
|
90
|
-
},
|
|
85
|
+
const T = (e) => {
|
|
86
|
+
console.debug("dynamic-content:close", e), s.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
|
|
87
|
+
}, E = () => {
|
|
91
88
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
92
89
|
};
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
90
|
+
return W(() => n.value, () => {
|
|
91
|
+
t("on-change", n.value);
|
|
92
|
+
}), W(() => m, (e) => {
|
|
93
|
+
console.debug("guidoConfig changed, updating window.GuidoConfig", e), window.GuidoConfig = k(L, e), window.GuidoConfig.partner = {
|
|
94
|
+
partnerName: i,
|
|
95
|
+
productType: a,
|
|
96
|
+
messageType: u
|
|
97
|
+
};
|
|
98
|
+
}, { immediate: !0, deep: !0 }), K(async () => {
|
|
101
99
|
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
|
|
102
100
|
try {
|
|
103
|
-
|
|
101
|
+
f.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
|
|
104
102
|
let e = {
|
|
105
|
-
html: r && await
|
|
106
|
-
css:
|
|
103
|
+
html: r && await _(r),
|
|
104
|
+
css: h,
|
|
107
105
|
forceRecreate: !0
|
|
108
106
|
// TODO: It should be false for old templates. We will communicate with Stripo
|
|
109
107
|
};
|
|
110
|
-
e.html || (e = await
|
|
108
|
+
e.html || (e = await G(), e.html = await _(e.html)), await D(e), s.selectedDynamicContentList = l;
|
|
111
109
|
} catch (e) {
|
|
112
110
|
console.error("Failed to initialize Stripo editor:", e);
|
|
113
111
|
}
|
|
114
|
-
document.addEventListener("dynamic-content:open",
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
document.addEventListener("dynamic-content:open", (e) => {
|
|
113
|
+
const P = e;
|
|
114
|
+
console.debug("dynamic-content:open", P.detail), t("dynamic-content:open", P.detail);
|
|
115
|
+
});
|
|
116
|
+
}), O(() => {
|
|
117
117
|
try {
|
|
118
118
|
window.UIEditor.removeEditor();
|
|
119
119
|
} catch {
|
|
120
120
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
121
121
|
}
|
|
122
|
-
}),
|
|
122
|
+
}), N({
|
|
123
123
|
dynamicContent: {
|
|
124
|
-
insert:
|
|
125
|
-
close:
|
|
124
|
+
insert: T,
|
|
125
|
+
close: E
|
|
126
126
|
},
|
|
127
127
|
hasChanges: n,
|
|
128
128
|
saveSilent: b
|
|
129
|
-
}), { __sfc: !0, PreviewContainer:
|
|
129
|
+
}), { __sfc: !0, PreviewContainer: F, OnboardingWrapper: H, headerWrapperRef: g, dynamicContentStore: s, unsubscribeStore: f, props: p, configStore: y, editorStore: c, previewStore: R, hasChanges: n, getPartnerName: v, getProductType: C, isTestPartner: x, saveSilent: b, templateId: d, userId: w, guidoConfig: m, templateConfig: o, html: r, css: h, partnerName: i, productType: a, messageType: u, username: S, preselectedDynamicContentList: l, emit: t, initPlugin: D, getDefaultTemplate: G, noHeader: M, insertDynamicContent: T, closeDynamicContent: E, Toaster: X, FilterSelectionDrawer: Y, HeaderWrapper: Z, LoadingWrapper: $, SaveAsTemplateDrawer: ee, UnsubscribeWrapper: oe };
|
|
130
130
|
}
|
|
131
131
|
});
|
|
132
132
|
export {
|
|
133
|
-
|
|
133
|
+
Pe as default
|
|
134
134
|
};
|
|
@@ -3,7 +3,7 @@ import l from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
|
3
3
|
var r = function() {
|
|
4
4
|
var o, i, n;
|
|
5
5
|
var s = this, e = s._self._c, t = s._self._setupProxy;
|
|
6
|
-
return e("div", { staticClass: "d-f" }, [(o = t.config.features) != null && o.versionHistory ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : s._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = t.config.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : s._e(), (n = t.config.features) != null && n.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button"), "tooltip-text": t.trans("newsletter.test-email") }
|
|
6
|
+
return e("div", { staticClass: "d-f" }, [(o = t.config.features) != null && o.versionHistory ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : s._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = t.config.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : s._e(), (n = t.config.features) != null && n.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button"), "tooltip-text": t.trans("newsletter.test-email") } }) : s._e(), e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(_) {
|
|
7
7
|
return t.handleSave(!1);
|
|
8
8
|
} } })], 1);
|
|
9
9
|
}, u = [], d = /* @__PURE__ */ l(
|
|
@@ -1,36 +1,35 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useConfig as
|
|
3
|
-
import { useExport as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { useTranslations as T } from "../../../composables/useTranslations.js";
|
|
1
|
+
import { defineComponent as g, ref as l, computed as H } from "vue";
|
|
2
|
+
import { useConfig as _ } from "../../../composables/useConfig.js";
|
|
3
|
+
import { useExport as h } from "../../../composables/useExport.js";
|
|
4
|
+
import { useSave as V } from "../../../composables/useSave.js";
|
|
5
|
+
import { useTranslations as x } from "../../../composables/useTranslations.js";
|
|
7
6
|
import { useVersionHistoryApi as w } from "../../../composables/useVersionHistoryApi.js";
|
|
8
|
-
import { useEditorStore as
|
|
9
|
-
import { getTooltipOptions as
|
|
10
|
-
import { InButtonV2 as
|
|
11
|
-
const
|
|
7
|
+
import { useEditorStore as T } from "../../../stores/editor.js";
|
|
8
|
+
import { getTooltipOptions as E } from "../../../utils/tooltipUtils.js";
|
|
9
|
+
import { InButtonV2 as O } from "@useinsider/design-system-vue";
|
|
10
|
+
const z = /* @__PURE__ */ g({
|
|
12
11
|
__name: "RightSlot",
|
|
13
|
-
setup(
|
|
14
|
-
const { config:
|
|
15
|
-
if (
|
|
12
|
+
setup(A, { expose: m }) {
|
|
13
|
+
const { config: u } = _(), { exportHtml: r } = h(), { save: n } = V(), { openVersionHistory: i, closeVersionHistory: a } = w(), o = T(), t = x(), e = l(!1), s = l(!1), c = () => {
|
|
14
|
+
if (o.isVersionHistoryOpen) {
|
|
16
15
|
a();
|
|
17
16
|
return;
|
|
18
17
|
}
|
|
19
18
|
i();
|
|
20
|
-
},
|
|
19
|
+
}, f = async () => {
|
|
21
20
|
e.value = !0, await r(), e.value = !1;
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
s.value = !0,
|
|
26
|
-
const
|
|
27
|
-
return s.value = !1,
|
|
21
|
+
}, v = () => {
|
|
22
|
+
o.isSaveAsTemplateDrawerOpen = !0;
|
|
23
|
+
}, d = H(() => o.isVersionHistoryOpen ? t("newsletter.close-version-history") : t("newsletter.version-history")), p = async (y) => {
|
|
24
|
+
s.value = !0, o.loadingStatus = !0;
|
|
25
|
+
const S = await n(y);
|
|
26
|
+
return s.value = !1, o.loadingStatus = !1, S;
|
|
28
27
|
};
|
|
29
28
|
return m({
|
|
30
|
-
handleSave:
|
|
31
|
-
}), { __sfc: !0, config:
|
|
29
|
+
handleSave: p
|
|
30
|
+
}), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: o, trans: t, isExporting: e, isSaving: s, handleVersionHistory: c, handleExport: f, handleSaveAs: v, versionHistoryTooltipText: d, handleSave: p, getTooltipOptions: E, InButtonV2: O };
|
|
32
31
|
}
|
|
33
32
|
});
|
|
34
33
|
export {
|
|
35
|
-
|
|
34
|
+
z as default
|
|
36
35
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { provideValue as o, useInjectedValue as t } from "./useProvideInject.js";
|
|
2
|
-
const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"),
|
|
3
|
-
o(r, e.onBack), o(n, e.onSaveStart), o(
|
|
2
|
+
const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), a = Symbol.for("guido.save.complete"), s = (e) => {
|
|
3
|
+
o(r, e.onBack), o(n, e.onSaveStart), o(a, e.onSaveComplete);
|
|
4
4
|
}, u = () => {
|
|
5
5
|
try {
|
|
6
6
|
return t(r);
|
|
@@ -9,7 +9,7 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symb
|
|
|
9
9
|
"useBack: No back handler provided. Make sure Guido component is in the component tree."
|
|
10
10
|
);
|
|
11
11
|
}
|
|
12
|
-
},
|
|
12
|
+
}, d = () => {
|
|
13
13
|
try {
|
|
14
14
|
return t(n);
|
|
15
15
|
} catch {
|
|
@@ -17,31 +17,21 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symb
|
|
|
17
17
|
"useSaveStart: No save start handler provided. Make sure Guido component is in the component tree."
|
|
18
18
|
);
|
|
19
19
|
}
|
|
20
|
-
},
|
|
21
|
-
try {
|
|
22
|
-
return t(c);
|
|
23
|
-
} catch {
|
|
24
|
-
throw new Error(
|
|
25
|
-
"useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
}, m = () => {
|
|
20
|
+
}, i = () => {
|
|
29
21
|
try {
|
|
30
22
|
return t(a);
|
|
31
23
|
} catch {
|
|
32
24
|
throw new Error(
|
|
33
|
-
"
|
|
25
|
+
"useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
|
|
34
26
|
);
|
|
35
27
|
}
|
|
36
28
|
};
|
|
37
29
|
export {
|
|
38
30
|
r as BACK_KEY,
|
|
39
|
-
|
|
31
|
+
a as SAVE_COMPLETE_KEY,
|
|
40
32
|
n as SAVE_START_KEY,
|
|
41
|
-
|
|
42
|
-
i as provideGuidoActions,
|
|
33
|
+
s as provideGuidoActions,
|
|
43
34
|
u as useBack,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
m as useTestEmailClick
|
|
35
|
+
i as useSaveComplete,
|
|
36
|
+
d as useSaveStart
|
|
47
37
|
};
|
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
import { useActionsApi as
|
|
2
|
-
import { useBlocksConfig as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
var m, g;
|
|
16
|
-
const t = v(), { html: n, css: p, forceRecreate: a } = i, { baseBlocks: e, extensions: c } = await y();
|
|
1
|
+
import { useActionsApi as y } from "./useActionsApi.js";
|
|
2
|
+
import { useBlocksConfig as E } from "./useBlocksConfig.js";
|
|
3
|
+
import { useCustomInterfaceAppearance as w } from "./useCustomInterfaceAppearance.js";
|
|
4
|
+
import { useStripoEventHandler as h } from "./useStripoEventHandler.js";
|
|
5
|
+
import { useToaster as b } from "./useToaster.js";
|
|
6
|
+
import { displayConditions as k } from "../enums/displayConditions.js";
|
|
7
|
+
import { useStripoApi as B } from "../services/stripoApi.js";
|
|
8
|
+
import V from "../static/styles/customEditorStyle.css.js";
|
|
9
|
+
import { useEditorStore as _ } from "../stores/editor.js";
|
|
10
|
+
import { dynamicContentToMergeTags as F } from "../utils/genericUtil.js";
|
|
11
|
+
import A from "../package.json.js";
|
|
12
|
+
const L = (d) => {
|
|
13
|
+
const { handleError: u } = b(), { getToken: p, getCustomFonts: m } = B(), { handleEvent: g } = h(), { getStripoBlocksConfig: f } = E(), S = async (r, i = []) => {
|
|
14
|
+
const t = _(), { html: n, css: l, forceRecreate: a } = r, { baseBlocks: e, extensions: c } = await f();
|
|
17
15
|
window.UIEditor.initEditor(
|
|
18
16
|
document.querySelector("#guido-editor"),
|
|
19
17
|
{
|
|
20
18
|
metadata: d,
|
|
21
19
|
html: n,
|
|
22
|
-
css:
|
|
20
|
+
css: l,
|
|
23
21
|
forceRecreate: a,
|
|
24
22
|
locale: "en",
|
|
25
23
|
undoButtonSelector: "#guido__undo-button",
|
|
@@ -30,10 +28,10 @@ const N = (d) => {
|
|
|
30
28
|
customAppearanceMergetags: !0,
|
|
31
29
|
customAppearanceMergetagsBorderColor: "#f1f3fe",
|
|
32
30
|
customAppearanceMergetagsBackgroundColor: "#f1f3fe",
|
|
33
|
-
customViewStyles:
|
|
34
|
-
conditionsEnabled:
|
|
35
|
-
customConditionsEnabled:
|
|
36
|
-
conditionCategories:
|
|
31
|
+
customViewStyles: V,
|
|
32
|
+
conditionsEnabled: !0,
|
|
33
|
+
customConditionsEnabled: !0,
|
|
34
|
+
conditionCategories: k,
|
|
37
35
|
enableXSSSecurity: !0,
|
|
38
36
|
messageSettingsEnabled: !1,
|
|
39
37
|
selectBlockAfterDropFromSettingsPanel: !0,
|
|
@@ -41,29 +39,29 @@ const N = (d) => {
|
|
|
41
39
|
editorFonts: {
|
|
42
40
|
showDefaultStandardFonts: !0,
|
|
43
41
|
showDefaultNotStandardFonts: !0,
|
|
44
|
-
customFonts:
|
|
42
|
+
customFonts: i
|
|
45
43
|
},
|
|
46
44
|
mergeTags: [
|
|
47
45
|
{
|
|
48
|
-
entries:
|
|
46
|
+
entries: F(d.preselectedDynamicContentList)
|
|
49
47
|
}
|
|
50
48
|
],
|
|
51
49
|
async onTokenRefreshRequest(o) {
|
|
52
50
|
try {
|
|
53
|
-
const s = await
|
|
51
|
+
const s = await p();
|
|
54
52
|
o(s);
|
|
55
53
|
} catch (s) {
|
|
56
|
-
|
|
54
|
+
u(s, "Failed to refresh token");
|
|
57
55
|
}
|
|
58
56
|
},
|
|
59
57
|
onTemplateLoaded() {
|
|
60
58
|
try {
|
|
61
|
-
const { importCss: o } =
|
|
59
|
+
const { importCss: o } = w(), { activateCustomViewStyles: s } = y();
|
|
62
60
|
o(), s(), d.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
|
|
63
61
|
t.hasChanges = !1;
|
|
64
62
|
}, 1e3);
|
|
65
63
|
} catch (o) {
|
|
66
|
-
|
|
64
|
+
u(o, "Failed to load custom interface appearance");
|
|
67
65
|
}
|
|
68
66
|
},
|
|
69
67
|
onCodeEditorVisibilityChanged(o) {
|
|
@@ -78,7 +76,7 @@ const N = (d) => {
|
|
|
78
76
|
onDataChanged() {
|
|
79
77
|
t.hasChanges = !0;
|
|
80
78
|
},
|
|
81
|
-
onEvent:
|
|
79
|
+
onEvent: g,
|
|
82
80
|
ignoreClickOutsideSelectors: [
|
|
83
81
|
"#guido-dynamic-content-modal",
|
|
84
82
|
".in-on-board-wrapper",
|
|
@@ -87,26 +85,26 @@ const N = (d) => {
|
|
|
87
85
|
extensions: c
|
|
88
86
|
}
|
|
89
87
|
);
|
|
90
|
-
},
|
|
88
|
+
}, C = (r) => new Promise((i, t) => {
|
|
91
89
|
var c;
|
|
92
90
|
if (document.getElementById("UiEditorScript")) {
|
|
93
|
-
|
|
91
|
+
r(), i();
|
|
94
92
|
return;
|
|
95
93
|
}
|
|
96
|
-
const n =
|
|
94
|
+
const n = A.guido, a = `https://email-static.useinsider.com/guido/${(c = n == null ? void 0 : n.stripo) == null ? void 0 : c.version}/UIEditor.js`, e = document.createElement("script");
|
|
97
95
|
e.id = "UiEditorScript", e.type = "module", e.src = a, e.onload = () => {
|
|
98
|
-
|
|
96
|
+
r(), i();
|
|
99
97
|
}, e.onerror = () => {
|
|
100
98
|
t(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
|
|
101
99
|
}, document.body.appendChild(e);
|
|
102
100
|
});
|
|
103
|
-
return { initPlugin: async (
|
|
104
|
-
await
|
|
105
|
-
const
|
|
106
|
-
await
|
|
101
|
+
return { initPlugin: async (r) => {
|
|
102
|
+
await C(async () => {
|
|
103
|
+
const i = await m();
|
|
104
|
+
await S(r, i);
|
|
107
105
|
});
|
|
108
106
|
} };
|
|
109
107
|
};
|
|
110
108
|
export {
|
|
111
|
-
|
|
109
|
+
L as useStripo
|
|
112
110
|
};
|
|
@@ -1,41 +1,36 @@
|
|
|
1
|
-
import { usePartner as
|
|
2
|
-
import { LINK_REGEXES as l, LINK_TYPES as
|
|
3
|
-
import { parsePageList as
|
|
4
|
-
import { useConfigStore as
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
const D = [
|
|
1
|
+
import { usePartner as U } from "../../composables/usePartner.js";
|
|
2
|
+
import { LINK_REGEXES as l, LINK_TYPES as b, URLS as f } from "../../enums/unsubscribe.js";
|
|
3
|
+
import { parsePageList as B } from "../../extensions/Blocks/Unsubscribe/utils/utils.js";
|
|
4
|
+
import { useConfigStore as N } from "../../stores/config.js";
|
|
5
|
+
import { useUnsubscribeStore as I } from "../../stores/unsubscribe.js";
|
|
6
|
+
const T = [
|
|
8
7
|
{
|
|
9
8
|
id: "add-unsubscribe-link-values",
|
|
10
9
|
description: "Adding unsubscribe link values",
|
|
11
10
|
type: "custom",
|
|
12
11
|
processor: (t) => {
|
|
13
|
-
const { getPartnerName: i } =
|
|
14
|
-
if (!
|
|
12
|
+
const { getPartnerName: i } = U(), a = N(), n = I(), u = a.getVariationId;
|
|
13
|
+
if (!u)
|
|
15
14
|
return t;
|
|
16
|
-
let
|
|
17
|
-
const
|
|
18
|
-
return new DOMParser().parseFromString(
|
|
19
|
-
var
|
|
20
|
-
const
|
|
21
|
-
if (!
|
|
15
|
+
let o = t;
|
|
16
|
+
const e = `/${i()}/email/${u}?user={{iid}}`;
|
|
17
|
+
return new DOMParser().parseFromString(o, "text/html").querySelectorAll(".unsubscribe-block-v2[data-unsubscribe-page-list]").forEach((p) => {
|
|
18
|
+
var g;
|
|
19
|
+
const d = p.getAttribute("data-unsubscribe-page-list");
|
|
20
|
+
if (!d)
|
|
22
21
|
return;
|
|
23
|
-
const
|
|
24
|
-
(
|
|
25
|
-
)) ?? [],
|
|
22
|
+
const S = B(d), m = ((g = n.templates) == null ? void 0 : g.filter(
|
|
23
|
+
(c) => S.includes(c.id)
|
|
24
|
+
)) ?? [], R = m.some((c) => c.type === b.UNSUBSCRIBE_LINK_TYPE), _ = m.some((c) => c.type === b.PREFERENCES_LINK_TYPE), E = p.outerHTML;
|
|
26
25
|
let s = E;
|
|
27
|
-
|
|
28
|
-
text: f,
|
|
29
|
-
value: f,
|
|
30
|
-
fallback: ""
|
|
31
|
-
}), s = s.replace(
|
|
26
|
+
R && (s = s.replace(
|
|
32
27
|
l.GLOBAL_UNSUBSCRIBE_LINK_REGEX,
|
|
33
|
-
|
|
34
|
-
)),
|
|
28
|
+
f.UNSUBSCRIBE_URL + e
|
|
29
|
+
)), _ && (s = s.replace(
|
|
35
30
|
l.PREFERENCES_UNSUBSCRIBE_LINK_REGEX,
|
|
36
|
-
|
|
37
|
-
)), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""),
|
|
38
|
-
}),
|
|
31
|
+
f.PREFERENCES_URL + e
|
|
32
|
+
)), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""), o = o.replace(E, s);
|
|
33
|
+
}), o;
|
|
39
34
|
},
|
|
40
35
|
priority: 60
|
|
41
36
|
},
|
|
@@ -61,16 +56,16 @@ const D = [
|
|
|
61
56
|
type: "custom",
|
|
62
57
|
processor: (t) => {
|
|
63
58
|
let i = t;
|
|
64
|
-
const
|
|
65
|
-
return
|
|
59
|
+
const a = i.match(/<a[^>]+>(.*?)<\/a>/gm);
|
|
60
|
+
return a && a.forEach((n) => {
|
|
66
61
|
if (n.includes("insEmail=1"))
|
|
67
62
|
return;
|
|
68
63
|
if (n.match(/<a\s+(?:[^>]*?\s+)?href=(["'`”])(.*?)\1\s+(?:[^>]*?\s+)?universal=(["'`”])true\3/gm)) {
|
|
69
|
-
const
|
|
64
|
+
const o = n.replace(/href=(["'`”])(.*?)\1/gm, (e) => {
|
|
70
65
|
const r = e.slice(6, e.length - 1).trim();
|
|
71
66
|
return e.includes("?") || e.includes("#") ? r.slice(-1) === "&" ? e.replace(r, `${r}insEmail=1`) : e.replace(r, `${r}&insEmail=1`) : e.replace(r, `${r}?insEmail=1`);
|
|
72
67
|
});
|
|
73
|
-
i = i.replace(n,
|
|
68
|
+
i = i.replace(n, o);
|
|
74
69
|
}
|
|
75
70
|
}), i;
|
|
76
71
|
},
|
|
@@ -78,5 +73,5 @@ const D = [
|
|
|
78
73
|
}
|
|
79
74
|
];
|
|
80
75
|
export {
|
|
81
|
-
|
|
76
|
+
T as unsubscribeCompilerRules
|
|
82
77
|
};
|