@useinsider/guido 2.1.0-beta.bc229b1 → 2.1.0-beta.bd5d1ea
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 +41 -2
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +66 -66
- package/dist/components/organisms/base/Toaster.vue.js +4 -4
- package/dist/components/organisms/base/Toaster.vue2.js +12 -9
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +5 -5
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
- package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +1 -1
- package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +19 -19
- package/dist/composables/useSave.js +16 -12
- package/dist/composables/useStripo.js +66 -62
- package/dist/composables/useStripoEventHandler.js +27 -12
- package/dist/composables/useSyncModuleExtractor.js +45 -0
- package/dist/config/migrator/itemsBlockMigrator.js +65 -64
- package/dist/enums/unsubscribe.js +25 -21
- package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
- package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
- package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
- package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
- package/dist/guido.css +1 -1
- package/dist/services/stripoApi.js +55 -19
- package/dist/src/@types/config/schemas.d.ts +1 -1
- package/dist/src/@types/events.d.ts +38 -2
- package/dist/src/components/Guido.vue.d.ts +2 -2
- package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
- package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
- package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
- package/dist/src/composables/useGuidoActions.d.ts +1 -1
- package/dist/src/composables/useSave.d.ts +2 -2
- package/dist/src/composables/useStripo.d.ts +2 -2
- package/dist/src/composables/useSyncModuleExtractor.d.ts +4 -0
- package/dist/src/enums/unsubscribe.d.ts +3 -0
- package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -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/src/utils/templatePreparation.d.ts +1 -1
- package/dist/stores/editor.js +2 -1
- package/dist/stores/unsubscribe.js +37 -34
- package/dist/utils/templatePreparation.js +1 -1
- package/package.json +2 -2
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
|
|
|
@@ -172,11 +174,48 @@ const config: GuidoConfigInput = {
|
|
|
172
174
|
| `dynamic-content:open` | `DynamicContent \| null` | User wants to insert dynamic content |
|
|
173
175
|
| `back` | - | Back button clicked |
|
|
174
176
|
| `save:start` | - | Save process started |
|
|
175
|
-
| `save:complete` | `
|
|
177
|
+
| `save:complete` | `SavedTemplateDetails` | Save completed successfully (includes `metadata`) |
|
|
176
178
|
| `on-change` | - | Template was modified |
|
|
177
179
|
| `test-email:click` | - | Test email button clicked |
|
|
178
180
|
| `onboarding-finished` | - | Onboarding popup dismissed |
|
|
179
181
|
|
|
182
|
+
### `save:complete` Payload
|
|
183
|
+
|
|
184
|
+
The `save:complete` event emits a `SavedTemplateDetails` object containing the compiled template data along with editor `metadata`:
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
interface SavedTemplateDetails {
|
|
188
|
+
dynamicContentList: DynamicContent[];
|
|
189
|
+
compiledHtml: string;
|
|
190
|
+
rawHtml: string;
|
|
191
|
+
css: string;
|
|
192
|
+
ampHtml: string;
|
|
193
|
+
ampErrors: string[];
|
|
194
|
+
modules: number[];
|
|
195
|
+
recommendation: {
|
|
196
|
+
campaignUrls: Record<string, string>;
|
|
197
|
+
configs: Record<string, string>;
|
|
198
|
+
};
|
|
199
|
+
unsubscribe: {
|
|
200
|
+
status: boolean;
|
|
201
|
+
config: number[];
|
|
202
|
+
};
|
|
203
|
+
metadata: Metadata;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
interface Metadata {
|
|
207
|
+
emailId: string;
|
|
208
|
+
partnerName?: string;
|
|
209
|
+
productType?: number;
|
|
210
|
+
userId: string;
|
|
211
|
+
username?: string;
|
|
212
|
+
savedModulesFolderName?: string;
|
|
213
|
+
defaultModulesFolderName?: string;
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
> ⚠️ **Important:** The `metadata` object in the `save:complete` payload must be passed directly into your `templateConfig` / `stripoConfig` object while saving. This ensures the email-service receives the correct version of sync modules features
|
|
218
|
+
|
|
180
219
|
---
|
|
181
220
|
|
|
182
221
|
## Exposed Methods
|
|
@@ -1,65 +1,64 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { provideGuidoActions as
|
|
3
|
-
import { usePartner as
|
|
4
|
-
import { useStripo as
|
|
5
|
-
import { useTimerClone as
|
|
6
|
-
import { migrate as
|
|
7
|
-
import { ModuleFolderDefaults as
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
1
|
+
import { defineComponent as K, defineAsyncComponent as _, ref as V, computed as P, watch as j, onMounted as q, onUnmounted as J } from "vue";
|
|
2
|
+
import { provideGuidoActions as Q } from "../composables/useGuidoActions.js";
|
|
3
|
+
import { usePartner as X } from "../composables/usePartner.js";
|
|
4
|
+
import { useStripo as Y } from "../composables/useStripo.js";
|
|
5
|
+
import { useTimerClone as Z } from "../composables/useTimerClone.js";
|
|
6
|
+
import { migrate as A } from "../config/migrator/index.js";
|
|
7
|
+
import { ModuleFolderDefaults as N } from "../enums/defaults.js";
|
|
8
|
+
import $ from "./organisms/base/Toaster.vue.js";
|
|
9
|
+
import ee from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
10
|
+
import oe from "./organisms/header/HeaderWrapper.vue.js";
|
|
11
|
+
import te from "./organisms/LoadingWrapper.vue.js";
|
|
12
|
+
import ne from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
13
|
+
import se from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
14
14
|
import { useStripoApi as re } from "../services/stripoApi.js";
|
|
15
|
-
import { useConfigStore as
|
|
16
|
-
import { useDynamicContentStore as
|
|
17
|
-
import { useEditorStore as
|
|
18
|
-
import { usePreviewStore as
|
|
15
|
+
import { useConfigStore as ce } from "../stores/config.js";
|
|
16
|
+
import { useDynamicContentStore as ae } from "../stores/dynamic-content.js";
|
|
17
|
+
import { useEditorStore as ie } from "../stores/editor.js";
|
|
18
|
+
import { usePreviewStore as me } from "../stores/preview.js";
|
|
19
19
|
import { useUnsubscribeStore as de } from "../stores/unsubscribe.js";
|
|
20
|
-
const
|
|
20
|
+
const Me = /* @__PURE__ */ K({
|
|
21
21
|
__name: "Guido",
|
|
22
22
|
props: {
|
|
23
23
|
config: null
|
|
24
24
|
},
|
|
25
25
|
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
26
|
-
setup(
|
|
27
|
-
const
|
|
26
|
+
setup(W, { expose: I, emit: t }) {
|
|
27
|
+
const v = W, O = _(
|
|
28
28
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
29
|
-
),
|
|
29
|
+
), G = _(
|
|
30
30
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
31
|
-
),
|
|
32
|
-
|
|
33
|
-
const
|
|
31
|
+
), h = V(), i = ae(), y = de(), s = ce();
|
|
32
|
+
s.init(v.config);
|
|
33
|
+
const m = ie(), H = me(), c = P(() => m.hasChanges), { isTestPartner: x } = X(), f = () => {
|
|
34
34
|
var e;
|
|
35
|
-
return (e =
|
|
35
|
+
return (e = h.value) == null ? void 0 : e.handleSave(!0);
|
|
36
36
|
}, {
|
|
37
37
|
templateId: d,
|
|
38
|
-
userId:
|
|
39
|
-
partnerName:
|
|
40
|
-
|
|
41
|
-
username: S,
|
|
38
|
+
userId: b,
|
|
39
|
+
partnerName: S,
|
|
40
|
+
username: g,
|
|
42
41
|
template: o,
|
|
43
42
|
editor: n
|
|
44
|
-
} =
|
|
45
|
-
|
|
46
|
-
const
|
|
43
|
+
} = s, a = (o == null ? void 0 : o.html) || "", D = (o == null ? void 0 : o.css) || "", l = (o == null ? void 0 : o.preselectedDynamicContent) || [], w = (n == null ? void 0 : n.savedModulesFolderName) || N.SAVED_MODULES, E = (n == null ? void 0 : n.defaultModulesFolderName) || N.DEFAULT_MODULES;
|
|
44
|
+
m.templateId = d;
|
|
45
|
+
const u = {
|
|
47
46
|
emailId: d,
|
|
48
|
-
userId:
|
|
49
|
-
username:
|
|
50
|
-
partnerName:
|
|
51
|
-
productType: b,
|
|
52
|
-
preselectedDynamicContentList: m,
|
|
47
|
+
userId: b,
|
|
48
|
+
username: g,
|
|
49
|
+
partnerName: S,
|
|
53
50
|
savedModulesFolderName: w,
|
|
54
|
-
defaultModulesFolderName:
|
|
51
|
+
defaultModulesFolderName: E
|
|
52
|
+
}, C = {
|
|
53
|
+
preselectedDynamicContentList: l,
|
|
55
54
|
onReady: () => {
|
|
56
55
|
console.debug("guido:ready"), t("ready");
|
|
57
56
|
}
|
|
58
|
-
}), { getDefaultTemplate:
|
|
57
|
+
}, { initPlugin: T } = Y(u, C), { getDefaultTemplate: k } = re(), { cloneTimersOnSave: F, hasTimerBlocks: U } = Z(), B = P(() => {
|
|
59
58
|
var e;
|
|
60
|
-
return !((e =
|
|
59
|
+
return !((e = s.ui) != null && e.showHeader);
|
|
61
60
|
});
|
|
62
|
-
|
|
61
|
+
Q({
|
|
63
62
|
onBack: () => {
|
|
64
63
|
console.debug("guido:back"), t("back");
|
|
65
64
|
},
|
|
@@ -67,55 +66,56 @@ const Le = /* @__PURE__ */ z({
|
|
|
67
66
|
console.debug("guido:save:start"), t("save:start");
|
|
68
67
|
},
|
|
69
68
|
onSaveComplete: (e) => {
|
|
70
|
-
|
|
69
|
+
const r = { ...e, metadata: u };
|
|
70
|
+
console.debug("guido:save:complete", r), t("save:complete", r);
|
|
71
71
|
},
|
|
72
72
|
onTestEmailClick: () => {
|
|
73
73
|
console.debug("guido:test-email:click"), t("test-email:click");
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
|
-
const
|
|
77
|
-
console.debug("dynamic-content:close", e),
|
|
78
|
-
},
|
|
76
|
+
const L = (e) => {
|
|
77
|
+
console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
|
|
78
|
+
}, M = () => {
|
|
79
79
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
80
80
|
};
|
|
81
|
-
|
|
82
|
-
t("on-change",
|
|
81
|
+
j(() => c.value, () => {
|
|
82
|
+
t("on-change", c.value);
|
|
83
83
|
});
|
|
84
|
-
const
|
|
85
|
-
const
|
|
86
|
-
console.debug("dynamic-content:open",
|
|
84
|
+
const p = (e) => {
|
|
85
|
+
const r = e, { attribute: R, position: z } = r.detail;
|
|
86
|
+
console.debug("dynamic-content:open", r.detail), t("dynamic-content:open", R, z);
|
|
87
87
|
};
|
|
88
|
-
return
|
|
88
|
+
return q(async () => {
|
|
89
89
|
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
|
|
90
90
|
try {
|
|
91
|
-
|
|
91
|
+
y.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
|
|
92
92
|
let e = {
|
|
93
|
-
html:
|
|
94
|
-
css:
|
|
93
|
+
html: a && await A(a),
|
|
94
|
+
css: D
|
|
95
95
|
};
|
|
96
|
-
e.html || (e = await
|
|
96
|
+
e.html || (e = await k(), e.html = await A(e.html)), U(e.html) && (e.html = await F(e.html)), await T(e), i.selectedDynamicContentList = l;
|
|
97
97
|
} catch (e) {
|
|
98
98
|
console.error("Failed to initialize Stripo editor:", e);
|
|
99
99
|
}
|
|
100
|
-
document.addEventListener("dynamic-content:open",
|
|
101
|
-
}),
|
|
102
|
-
document.removeEventListener("dynamic-content:open",
|
|
100
|
+
document.addEventListener("dynamic-content:open", p);
|
|
101
|
+
}), J(() => {
|
|
102
|
+
document.removeEventListener("dynamic-content:open", p);
|
|
103
103
|
try {
|
|
104
104
|
window.UIEditor.removeEditor();
|
|
105
105
|
} catch {
|
|
106
106
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
}),
|
|
108
|
+
s.reset();
|
|
109
|
+
}), I({
|
|
110
110
|
dynamicContent: {
|
|
111
|
-
insert:
|
|
112
|
-
close:
|
|
111
|
+
insert: L,
|
|
112
|
+
close: M
|
|
113
113
|
},
|
|
114
|
-
hasChanges:
|
|
115
|
-
saveSilent:
|
|
116
|
-
}), { __sfc: !0, PreviewContainer:
|
|
114
|
+
hasChanges: c,
|
|
115
|
+
saveSilent: f
|
|
116
|
+
}), { __sfc: !0, PreviewContainer: O, OnboardingWrapper: G, headerWrapperRef: h, dynamicContentStore: i, unsubscribeStore: y, props: v, configStore: s, editorStore: m, previewStore: H, hasChanges: c, isTestPartner: x, saveSilent: f, templateId: d, userId: b, partnerName: S, username: g, templateConfig: o, editorConfig: n, html: a, css: D, preselectedDynamicContentList: l, savedModulesFolderName: w, defaultModulesFolderName: E, emit: t, metadata: u, options: C, initPlugin: T, getDefaultTemplate: k, cloneTimersOnSave: F, hasTimerBlocks: U, noHeader: B, insertDynamicContent: L, closeDynamicContent: M, handleDynamicContentOpen: p, Toaster: $, FilterSelectionDrawer: ee, HeaderWrapper: oe, LoadingWrapper: te, SaveAsTemplateDrawer: ne, UnsubscribeWrapper: se };
|
|
117
117
|
}
|
|
118
118
|
});
|
|
119
119
|
export {
|
|
120
|
-
|
|
120
|
+
Me as default
|
|
121
121
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import n from "./Toaster.vue2.js";
|
|
2
2
|
import s from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
3
3
|
var r = function() {
|
|
4
|
-
var o = this,
|
|
5
|
-
return
|
|
4
|
+
var o = this, e = o._self._c, t = o._self._setupProxy;
|
|
5
|
+
return e(t.InToasts, { ref: "toastRef", attrs: { "action-buttons-config": t.actionButtonsConfig, status: t.store.status, text: t.store.text, type: t.store.type }, on: { actionButtonClick0: t.handleActionClick } });
|
|
6
6
|
}, a = [], _ = /* @__PURE__ */ s(
|
|
7
|
-
|
|
7
|
+
n,
|
|
8
8
|
r,
|
|
9
9
|
a,
|
|
10
10
|
!1,
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useToasterStore as
|
|
3
|
-
import { InToasts as
|
|
4
|
-
const
|
|
1
|
+
import { defineComponent as a, ref as c, computed as i, onBeforeUnmount as u } from "vue";
|
|
2
|
+
import { useToasterStore as f } from "../../../stores/toaster.js";
|
|
3
|
+
import { InToasts as m } from "@useinsider/design-system-vue";
|
|
4
|
+
const d = /* @__PURE__ */ a({
|
|
5
5
|
__name: "Toaster",
|
|
6
|
-
setup(
|
|
7
|
-
const t =
|
|
8
|
-
return { __sfc: !0, store: t, actionButtonsConfig: o, handleActionClick: () => {
|
|
6
|
+
setup(p) {
|
|
7
|
+
const t = f(), o = c(null), r = i(() => t.actionButton ? [{ text: t.actionButton.text }] : []), s = () => {
|
|
9
8
|
t.actionButton && t.actionButton.onClick(), t.hideToaster();
|
|
10
|
-
}
|
|
9
|
+
};
|
|
10
|
+
return u(() => {
|
|
11
|
+
var e, n;
|
|
12
|
+
t.$reset(), (n = (e = o.value) == null ? void 0 : e.$el) == null || n.remove();
|
|
13
|
+
}), { __sfc: !0, store: t, toastRef: o, actionButtonsConfig: r, handleActionClick: s, InToasts: m };
|
|
11
14
|
}
|
|
12
15
|
});
|
|
13
16
|
export {
|
|
14
|
-
|
|
17
|
+
d as default
|
|
15
18
|
};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from "./EmailSizeIndicator.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import r from "../../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
4
|
var o = function() {
|
|
5
|
-
var
|
|
6
|
-
return
|
|
5
|
+
var e = this, i = e._self._c, t = e._self._setupProxy;
|
|
6
|
+
return t.previewStore.previewHtml ? i("div", { staticClass: "d-f a-i-c j-c-c" }, [i(t.InProgress, { staticClass: "min-w-15-s", attrs: { id: "email-size-progress", "description-status": "", "description-position": "left", description: t.htmlSize, "max-value": t.MAX_EMAIL_SIZE_IN_KB, type: t.progress.type, value: t.progress.value } }), i(t.InTooltipV2, { attrs: { id: "email-size-tooltip", "icon-status": "", "static-position": "bottom center", "dynamic-position": !1, text: t.trans("email-editor.preview-design-size-tooltip") } })], 1) : e._e();
|
|
7
7
|
}, a = [], n = /* @__PURE__ */ r(
|
|
8
|
-
|
|
8
|
+
s,
|
|
9
9
|
o,
|
|
10
10
|
a,
|
|
11
11
|
!1,
|
|
12
12
|
null,
|
|
13
|
-
"
|
|
13
|
+
"079d2bf7"
|
|
14
14
|
);
|
|
15
15
|
const m = n.exports;
|
|
16
16
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as c, ref as n, computed as l, watch as u } from "vue";
|
|
2
2
|
import { useTranslations as p } from "../../../../composables/useTranslations.js";
|
|
3
3
|
import { usePreviewStore as _ } from "../../../../stores/preview.js";
|
|
4
|
-
import {
|
|
4
|
+
import { InTooltipV2 as v, InProgress as f } from "@useinsider/design-system-vue";
|
|
5
5
|
const S = /* @__PURE__ */ c({
|
|
6
6
|
__name: "EmailSizeIndicator",
|
|
7
7
|
setup(w) {
|
|
@@ -17,7 +17,7 @@ const S = /* @__PURE__ */ c({
|
|
|
17
17
|
}, i = p();
|
|
18
18
|
return u(() => t.previewHtml, () => {
|
|
19
19
|
r();
|
|
20
|
-
}, { immediate: !0 }), { __sfc: !0, previewStore: t, MAX_EMAIL_SIZE_IN_KB: o, htmlKB: e, progress: s, htmlSize: a, calculateProgress: r, trans: i, InProgress: f,
|
|
20
|
+
}, { immediate: !0 }), { __sfc: !0, previewStore: t, MAX_EMAIL_SIZE_IN_KB: o, htmlKB: e, progress: s, htmlSize: a, calculateProgress: r, trans: i, InProgress: f, InTooltipV2: v };
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
export {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
import { useToaster as
|
|
4
|
-
import { useTranslations as
|
|
5
|
-
import { ToasterTypeOptions as
|
|
1
|
+
import { defineComponent as g, ref as y, computed as n, watch as S } from "vue";
|
|
2
|
+
import T from "../../wrappers/WpDrawer.vue.js";
|
|
3
|
+
import { useToaster as v } from "../../../composables/useToaster.js";
|
|
4
|
+
import { useTranslations as B } from "../../../composables/useTranslations.js";
|
|
5
|
+
import { ToasterTypeOptions as C } from "../../../enums/toaster.js";
|
|
6
6
|
import { useUnsubscribeStore as w } from "../../../stores/unsubscribe.js";
|
|
7
|
-
import { InContainer as
|
|
8
|
-
import
|
|
9
|
-
const
|
|
7
|
+
import { InContainer as h } from "@useinsider/design-system-vue";
|
|
8
|
+
import U from "./UnsubscribeBreadcrumb.vue.js";
|
|
9
|
+
const F = /* @__PURE__ */ g({
|
|
10
10
|
__name: "UnsubscribePageSelection",
|
|
11
|
-
setup(
|
|
12
|
-
const s =
|
|
11
|
+
setup(P) {
|
|
12
|
+
const s = B(), e = w(), { showToaster: a } = v(), o = y(!1), c = n(() => e.isActiveTypeLastInCollection ? o.value ? s("unsubscription-preference.applying-changes") : s("statistics.apply") : s("products.select-and-continue")), i = n(() => e.pageSelectionUpdateStatus && e.isActiveTypeFirstInCollection ? s("products.cancel") : s("newsletter.back")), u = n(() => ({
|
|
13
13
|
primaryButton: {
|
|
14
14
|
styling: "solid",
|
|
15
15
|
type: "primary",
|
|
@@ -23,28 +23,28 @@ const E = /* @__PURE__ */ f({
|
|
|
23
23
|
labelText: i.value,
|
|
24
24
|
disabledStatus: o.value
|
|
25
25
|
}
|
|
26
|
-
})),
|
|
26
|
+
})), p = (t) => e.getSelectedTemplateByActiveType === t ? "bor-w-3 bor-s-s bor-c-7" : "bor-w-1 bor-s-s bor-c-6", r = (t) => {
|
|
27
27
|
e.pageSelectionDrawerStatus = !1, t && setTimeout(() => {
|
|
28
28
|
t();
|
|
29
29
|
}, 500);
|
|
30
|
-
},
|
|
30
|
+
}, d = () => {
|
|
31
31
|
if (e.isActiveTypeFirstInCollection) {
|
|
32
32
|
r(), e.pageSelectionUpdateStatus || (e.typeSelectionDrawerStatus = !0);
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
35
|
e.setPreviousType();
|
|
36
|
-
},
|
|
36
|
+
}, m = () => {
|
|
37
37
|
if (e.isActiveTypeLastInCollection) {
|
|
38
38
|
o.value = !0;
|
|
39
|
-
const t = e.selectedCollectionType, l = e.getSelectedTemplatesByCollection(t);
|
|
40
|
-
e.addUnsubscribePages(l), document.dispatchEvent(new CustomEvent("unsubscribe:select", {
|
|
39
|
+
const t = e.selectedCollectionType, l = e.getSelectedTemplatesByCollection(t), f = e.getSelectedUnsubscribePagesByCollection(t);
|
|
40
|
+
e.removeUnsubscribePages(f), e.addUnsubscribePages(l), document.dispatchEvent(new CustomEvent("unsubscribe:select", {
|
|
41
41
|
detail: {
|
|
42
42
|
collectionType: t,
|
|
43
43
|
selectedPages: l
|
|
44
44
|
}
|
|
45
45
|
})), r(() => {
|
|
46
46
|
o.value = !1, a({
|
|
47
|
-
type:
|
|
47
|
+
type: C.Success,
|
|
48
48
|
message: s("global-unsubscribe.pages-were-attached")
|
|
49
49
|
});
|
|
50
50
|
});
|
|
@@ -54,11 +54,11 @@ const E = /* @__PURE__ */ f({
|
|
|
54
54
|
}, b = (t) => {
|
|
55
55
|
e.setSelectedTemplate(t);
|
|
56
56
|
};
|
|
57
|
-
return
|
|
57
|
+
return S(() => e.pageSelectionDrawerStatus, (t) => {
|
|
58
58
|
t && e.pageSelectionUpdateStatus && e.fetchTemplates();
|
|
59
|
-
}), { __sfc: !0, trans: s, unsubscribeStore: e, showToaster: a, isApplying: o, getPrimaryButtonText: c, getCancelOrBackButtonText: i, footerButtonGroupOptions:
|
|
59
|
+
}), { __sfc: !0, trans: s, unsubscribeStore: e, showToaster: a, isApplying: o, getPrimaryButtonText: c, getCancelOrBackButtonText: i, footerButtonGroupOptions: u, getBorderClass: p, closeModal: r, handleBack: d, handleSave: m, selectTemplate: b, WpDrawer: T, InContainer: h, UnsubscribeBreadcrumb: U };
|
|
60
60
|
}
|
|
61
61
|
});
|
|
62
62
|
export {
|
|
63
|
-
|
|
63
|
+
F as default
|
|
64
64
|
};
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import { useConfig as
|
|
2
|
-
import { useSaveStart as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { useConfig as d } from "./useConfig.js";
|
|
2
|
+
import { useSaveStart as p, useSaveComplete as f } from "./useGuidoActions.js";
|
|
3
|
+
import { useSyncModuleExtractor as v } from "./useSyncModuleExtractor.js";
|
|
4
|
+
import { useStripoApi as S } from "../services/stripoApi.js";
|
|
5
|
+
import { useTemplatePreparation as x } from "../utils/templatePreparation.js";
|
|
6
|
+
import { useHtmlValidator as V } from "./useHtmlValidator.js";
|
|
7
|
+
const g = () => {
|
|
8
|
+
const o = p(), s = f(), { validateHtml: i } = V(), { callbacks: a } = d(), { extractSyncModuleData: r } = v(), { setSyncModuleUnsubscriptionPages: n } = S();
|
|
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 } = x(), 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 { unsubscribePayload: m, stripoModules: u } = r(t.rawHtml);
|
|
16
|
+
return await n(m), t.modules = u, l || s(t), t;
|
|
13
17
|
} };
|
|
14
18
|
};
|
|
15
19
|
export {
|
|
16
|
-
|
|
20
|
+
g as useSave
|
|
17
21
|
};
|