@useinsider/guido 1.0.3-beta.3020a70 → 1.0.3-beta.3206f39
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 +1 -0
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +79 -73
- package/dist/components/organisms/header/RightSlot.vue.js +1 -1
- package/dist/components/organisms/header/RightSlot.vue2.js +23 -22
- package/dist/composables/useGuidoActions.js +19 -9
- package/dist/config/compiler/unsubscribeCompilerRules.js +33 -28
- package/dist/enums/unsubscribe.js +27 -25
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
- package/dist/extensions/DynamicContent/dynamic-content-modal.js +25 -19
- package/dist/extensions/DynamicContent/dynamic-content.js +128 -33
- package/dist/guido.css +1 -1
- package/dist/package.json.js +1 -1
- package/dist/src/@types/generic.d.ts +26 -6
- package/dist/src/components/Guido.vue.d.ts +3 -2
- package/dist/src/composables/useGuidoActions.d.ts +9 -0
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
- package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +9 -2
- package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +52 -2
- package/dist/src/stores/config.d.ts +2 -2
- 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/environmentUtil.d.ts +5 -0
- package/dist/src/utils/genericUtil.d.ts +1 -0
- 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/environmentUtil.js +4 -0
- package/dist/utils/genericUtil.js +20 -9
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -167,6 +167,7 @@ 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 |
|
|
170
171
|
|
|
171
172
|
### Guido Exposed Methods
|
|
172
173
|
```typescript
|
|
@@ -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 O, defineAsyncComponent as I, ref as z, computed as U, watch as B, onMounted as K, onUnmounted as j } from "vue";
|
|
2
|
+
import { provideGuidoActions as q } from "../composables/useGuidoActions.js";
|
|
3
|
+
import { usePartner as J } from "../composables/usePartner.js";
|
|
4
|
+
import { useStripo as Q } from "../composables/useStripo.js";
|
|
5
|
+
import { migrate as L } from "../config/migrator/index.js";
|
|
6
|
+
import { DefaultUsername as V, DefaultMessageType as X, DefaultGuidoConfig as Y } from "../enums/defaults.js";
|
|
7
|
+
import Z from "./organisms/base/Toaster.vue.js";
|
|
8
|
+
import $ from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
9
|
+
import ee from "./organisms/header/HeaderWrapper.vue.js";
|
|
10
|
+
import oe from "./organisms/LoadingWrapper.vue.js";
|
|
11
|
+
import te from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
12
|
+
import ne from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
13
|
+
import { useStripoApi as re } from "../services/stripoApi.js";
|
|
14
|
+
import { useConfigStore as ie } from "../stores/config.js";
|
|
15
|
+
import { useDynamicContentStore as se } from "../stores/dynamic-content.js";
|
|
16
|
+
import { useEditorStore as ae } from "../stores/editor.js";
|
|
17
|
+
import { usePreviewStore as ce } from "../stores/preview.js";
|
|
18
|
+
import { useUnsubscribeStore as me } from "../stores/unsubscribe.js";
|
|
19
|
+
import de from "../node_modules/lodash-es/merge.js";
|
|
20
|
+
const Ue = /* @__PURE__ */ O({
|
|
21
21
|
__name: "Guido",
|
|
22
22
|
props: {
|
|
23
23
|
templateId: null,
|
|
@@ -31,98 +31,104 @@ const Ge = /* @__PURE__ */ R({
|
|
|
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 u =
|
|
34
|
+
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
35
|
+
setup(W, { expose: _, emit: o }) {
|
|
36
|
+
const u = W, A = I(
|
|
37
37
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
38
|
-
),
|
|
38
|
+
), N = I(
|
|
39
39
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
40
|
-
),
|
|
40
|
+
), p = z(), i = se(), g = me(), f = ie(), s = ae(), F = ce(), n = U(() => s.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: H } = J(), b = () => {
|
|
41
41
|
var e;
|
|
42
|
-
return (e =
|
|
42
|
+
return (e = p.value) == null ? void 0 : e.handleSave(!0);
|
|
43
43
|
}, {
|
|
44
|
-
templateId:
|
|
45
|
-
userId:
|
|
46
|
-
guidoConfig:
|
|
47
|
-
templateConfig:
|
|
44
|
+
templateId: a,
|
|
45
|
+
userId: C,
|
|
46
|
+
guidoConfig: h,
|
|
47
|
+
templateConfig: t,
|
|
48
48
|
html: r = "",
|
|
49
|
-
css:
|
|
50
|
-
partnerName: c =
|
|
51
|
-
productType:
|
|
52
|
-
messageType:
|
|
53
|
-
username:
|
|
54
|
-
} = u,
|
|
55
|
-
|
|
49
|
+
css: S = "",
|
|
50
|
+
partnerName: c = y(),
|
|
51
|
+
productType: m = v(),
|
|
52
|
+
messageType: w = X,
|
|
53
|
+
username: D = V
|
|
54
|
+
} = u, d = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
|
|
55
|
+
s.templateId = a, window.GuidoConfig = de(Y, h), window.GuidoConfig.partner = {
|
|
56
56
|
partnerName: c,
|
|
57
|
-
productType:
|
|
58
|
-
messageType:
|
|
59
|
-
},
|
|
60
|
-
const { initPlugin:
|
|
61
|
-
emailId:
|
|
62
|
-
userId:
|
|
63
|
-
username:
|
|
57
|
+
productType: m,
|
|
58
|
+
messageType: w
|
|
59
|
+
}, f.templateConfig = t;
|
|
60
|
+
const { initPlugin: E } = Q({
|
|
61
|
+
emailId: a,
|
|
62
|
+
userId: C,
|
|
63
|
+
username: D,
|
|
64
64
|
partnerName: c,
|
|
65
|
-
productType:
|
|
66
|
-
preselectedDynamicContentList:
|
|
65
|
+
productType: m,
|
|
66
|
+
preselectedDynamicContentList: d,
|
|
67
67
|
onReady: () => {
|
|
68
|
-
console.debug("guido:ready"),
|
|
68
|
+
console.debug("guido:ready"), o("ready");
|
|
69
69
|
}
|
|
70
|
-
}), { getDefaultTemplate: T } =
|
|
70
|
+
}), { getDefaultTemplate: T } = re(), R = U(() => {
|
|
71
71
|
var e;
|
|
72
72
|
return !((e = window.GuidoConfig) != null && e.useHeader);
|
|
73
73
|
});
|
|
74
|
-
|
|
74
|
+
q({
|
|
75
75
|
onBack: () => {
|
|
76
|
-
console.debug("guido:back"),
|
|
76
|
+
console.debug("guido:back"), o("back");
|
|
77
77
|
},
|
|
78
78
|
onSaveStart: () => {
|
|
79
|
-
console.debug("guido:save:start"),
|
|
79
|
+
console.debug("guido:save:start"), o("save:start");
|
|
80
80
|
},
|
|
81
81
|
onSaveComplete: (e) => {
|
|
82
|
-
console.debug("guido:save:complete", e),
|
|
82
|
+
console.debug("guido:save:complete", e), o("save:complete", e);
|
|
83
|
+
},
|
|
84
|
+
onTestEmailClick: () => {
|
|
85
|
+
console.debug("guido:test-email:click"), o("test-email:click");
|
|
83
86
|
}
|
|
84
87
|
});
|
|
85
|
-
const
|
|
86
|
-
console.debug("dynamic-content:close", e),
|
|
87
|
-
},
|
|
88
|
+
const P = (e) => {
|
|
89
|
+
console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
|
|
90
|
+
}, k = () => {
|
|
88
91
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
89
92
|
};
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
})
|
|
93
|
+
B(() => n.value, () => {
|
|
94
|
+
o("on-change", n.value);
|
|
95
|
+
});
|
|
96
|
+
const l = (e) => {
|
|
97
|
+
const G = e, { attribute: x, position: M } = G.detail;
|
|
98
|
+
console.debug("dynamic-content:open", G.detail), o("dynamic-content:open", x, M);
|
|
99
|
+
};
|
|
100
|
+
return K(async () => {
|
|
93
101
|
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
|
|
94
102
|
try {
|
|
95
|
-
|
|
103
|
+
g.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
|
|
96
104
|
let e = {
|
|
97
|
-
html: r && await
|
|
98
|
-
css:
|
|
105
|
+
html: r && await L(r),
|
|
106
|
+
css: S,
|
|
99
107
|
forceRecreate: !0
|
|
100
108
|
// TODO: It should be false for old templates. We will communicate with Stripo
|
|
101
109
|
};
|
|
102
|
-
e.html || (e = await T(), e.html = await
|
|
110
|
+
e.html || (e = await T(), e.html = await L(e.html)), await E(e), i.selectedDynamicContentList = d;
|
|
103
111
|
} catch (e) {
|
|
104
112
|
console.error("Failed to initialize Stripo editor:", e);
|
|
105
113
|
}
|
|
106
|
-
document.addEventListener("dynamic-content:open",
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
});
|
|
110
|
-
}), B(() => {
|
|
114
|
+
document.addEventListener("dynamic-content:open", l);
|
|
115
|
+
}), j(() => {
|
|
116
|
+
document.removeEventListener("dynamic-content:open", l);
|
|
111
117
|
try {
|
|
112
118
|
window.UIEditor.removeEditor();
|
|
113
119
|
} catch {
|
|
114
120
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
115
121
|
}
|
|
116
|
-
}),
|
|
122
|
+
}), _({
|
|
117
123
|
dynamicContent: {
|
|
118
|
-
insert:
|
|
119
|
-
close:
|
|
124
|
+
insert: P,
|
|
125
|
+
close: k
|
|
120
126
|
},
|
|
121
127
|
hasChanges: n,
|
|
122
|
-
saveSilent:
|
|
123
|
-
}), { __sfc: !0, PreviewContainer:
|
|
128
|
+
saveSilent: b
|
|
129
|
+
}), { __sfc: !0, PreviewContainer: A, OnboardingWrapper: N, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: u, configStore: f, editorStore: s, previewStore: F, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: H, saveSilent: b, templateId: a, userId: C, guidoConfig: h, templateConfig: t, html: r, css: S, partnerName: c, productType: m, messageType: w, username: D, preselectedDynamicContentList: d, emit: o, initPlugin: E, getDefaultTemplate: T, noHeader: R, insertDynamicContent: P, closeDynamicContent: k, handleDynamicContentOpen: l, Toaster: Z, FilterSelectionDrawer: $, HeaderWrapper: ee, LoadingWrapper: oe, SaveAsTemplateDrawer: te, UnsubscribeWrapper: ne };
|
|
124
130
|
}
|
|
125
131
|
});
|
|
126
132
|
export {
|
|
127
|
-
|
|
133
|
+
Ue as default
|
|
128
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") } }) : 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(
|
|
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") }, on: { click: t.testEmailClick } }) : 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(c) {
|
|
7
7
|
return t.handleSave(!1);
|
|
8
8
|
} } })], 1);
|
|
9
9
|
}, u = [], d = /* @__PURE__ */ l(
|
|
@@ -1,35 +1,36 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useConfig as
|
|
3
|
-
import { useExport as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { defineComponent as H, ref as p, computed as _ } from "vue";
|
|
2
|
+
import { useConfig as h } from "../../../composables/useConfig.js";
|
|
3
|
+
import { useExport as V } from "../../../composables/useExport.js";
|
|
4
|
+
import { useTestEmailClick as x } from "../../../composables/useGuidoActions.js";
|
|
5
|
+
import { useSave as E } from "../../../composables/useSave.js";
|
|
6
|
+
import { useTranslations as T } from "../../../composables/useTranslations.js";
|
|
6
7
|
import { useVersionHistoryApi as w } from "../../../composables/useVersionHistoryApi.js";
|
|
7
|
-
import { useEditorStore as
|
|
8
|
-
import { getTooltipOptions as
|
|
9
|
-
import { InButtonV2 as
|
|
10
|
-
const
|
|
8
|
+
import { useEditorStore as C } from "../../../stores/editor.js";
|
|
9
|
+
import { getTooltipOptions as O } from "../../../utils/tooltipUtils.js";
|
|
10
|
+
import { InButtonV2 as A } from "@useinsider/design-system-vue";
|
|
11
|
+
const J = /* @__PURE__ */ H({
|
|
11
12
|
__name: "RightSlot",
|
|
12
|
-
setup(
|
|
13
|
-
const { config:
|
|
14
|
-
if (
|
|
13
|
+
setup(k, { expose: m }) {
|
|
14
|
+
const { config: c } = h(), { exportHtml: r } = V(), { save: n } = E(), { openVersionHistory: i, closeVersionHistory: a } = w(), t = C(), o = T(), e = p(!1), s = p(!1), u = x(), f = () => {
|
|
15
|
+
if (t.isVersionHistoryOpen) {
|
|
15
16
|
a();
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
18
19
|
i();
|
|
19
|
-
},
|
|
20
|
+
}, v = async () => {
|
|
20
21
|
e.value = !0, await r(), e.value = !1;
|
|
21
|
-
},
|
|
22
|
-
|
|
23
|
-
},
|
|
24
|
-
s.value = !0,
|
|
25
|
-
const
|
|
26
|
-
return s.value = !1,
|
|
22
|
+
}, d = () => {
|
|
23
|
+
t.isSaveAsTemplateDrawerOpen = !0;
|
|
24
|
+
}, y = _(() => t.isVersionHistoryOpen ? o("newsletter.close-version-history") : o("newsletter.version-history")), l = async (S) => {
|
|
25
|
+
s.value = !0, t.loadingStatus = !0;
|
|
26
|
+
const g = await n(S);
|
|
27
|
+
return s.value = !1, t.loadingStatus = !1, g;
|
|
27
28
|
};
|
|
28
29
|
return m({
|
|
29
|
-
handleSave:
|
|
30
|
-
}), { __sfc: !0, config:
|
|
30
|
+
handleSave: l
|
|
31
|
+
}), { __sfc: !0, config: c, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: t, trans: o, isExporting: e, isSaving: s, testEmailClick: u, handleVersionHistory: f, handleExport: v, handleSaveAs: d, versionHistoryTooltipText: y, handleSave: l, getTooltipOptions: O, InButtonV2: A };
|
|
31
32
|
}
|
|
32
33
|
});
|
|
33
34
|
export {
|
|
34
|
-
|
|
35
|
+
J as default
|
|
35
36
|
};
|
|
@@ -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"), c = Symbol.for("guido.save.complete"), a = Symbol.for("guido.test.email.click"), i = (e) => {
|
|
3
|
+
o(r, e.onBack), o(n, e.onSaveStart), o(c, e.onSaveComplete), o(a, e.onTestEmailClick);
|
|
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"), a = Symb
|
|
|
9
9
|
"useBack: No back handler provided. Make sure Guido component is in the component tree."
|
|
10
10
|
);
|
|
11
11
|
}
|
|
12
|
-
},
|
|
12
|
+
}, l = () => {
|
|
13
13
|
try {
|
|
14
14
|
return t(n);
|
|
15
15
|
} catch {
|
|
@@ -17,21 +17,31 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), a = Symb
|
|
|
17
17
|
"useSaveStart: No save start handler provided. Make sure Guido component is in the component tree."
|
|
18
18
|
);
|
|
19
19
|
}
|
|
20
|
-
},
|
|
20
|
+
}, d = () => {
|
|
21
21
|
try {
|
|
22
|
-
return t(
|
|
22
|
+
return t(c);
|
|
23
23
|
} catch {
|
|
24
24
|
throw new Error(
|
|
25
25
|
"useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
|
+
}, m = () => {
|
|
29
|
+
try {
|
|
30
|
+
return t(a);
|
|
31
|
+
} catch {
|
|
32
|
+
throw new Error(
|
|
33
|
+
"useTestEmailClick: No test email click handler provided. Make sure Guido component is in the component tree."
|
|
34
|
+
);
|
|
35
|
+
}
|
|
28
36
|
};
|
|
29
37
|
export {
|
|
30
38
|
r as BACK_KEY,
|
|
31
|
-
|
|
39
|
+
c as SAVE_COMPLETE_KEY,
|
|
32
40
|
n as SAVE_START_KEY,
|
|
33
|
-
|
|
41
|
+
a as TEST_EMAIL_CLICK_KEY,
|
|
42
|
+
i as provideGuidoActions,
|
|
34
43
|
u as useBack,
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
d as useSaveComplete,
|
|
45
|
+
l as useSaveStart,
|
|
46
|
+
m as useTestEmailClick
|
|
37
47
|
};
|
|
@@ -1,36 +1,41 @@
|
|
|
1
|
-
import { usePartner as
|
|
2
|
-
import { LINK_REGEXES as l, LINK_TYPES as
|
|
3
|
-
import { parsePageList as
|
|
4
|
-
import { useConfigStore as
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
import { usePartner as N } from "../../composables/usePartner.js";
|
|
2
|
+
import { LINK_REGEXES as l, LINK_TYPES as g, INSIDER_ID as f, URLS as S } from "../../enums/unsubscribe.js";
|
|
3
|
+
import { parsePageList as U } from "../../extensions/Blocks/Unsubscribe/utils/utils.js";
|
|
4
|
+
import { useConfigStore as B } from "../../stores/config.js";
|
|
5
|
+
import { useDynamicContentStore as y } from "../../stores/dynamic-content.js";
|
|
6
|
+
import { useUnsubscribeStore as L } from "../../stores/unsubscribe.js";
|
|
7
|
+
const D = [
|
|
7
8
|
{
|
|
8
9
|
id: "add-unsubscribe-link-values",
|
|
9
10
|
description: "Adding unsubscribe link values",
|
|
10
11
|
type: "custom",
|
|
11
12
|
processor: (t) => {
|
|
12
|
-
const { getPartnerName: i } =
|
|
13
|
-
if (!
|
|
13
|
+
const { getPartnerName: i } = N(), c = B(), n = y(), u = L(), a = c.getVariationId;
|
|
14
|
+
if (!a)
|
|
14
15
|
return t;
|
|
15
|
-
let
|
|
16
|
-
const
|
|
17
|
-
return new DOMParser().parseFromString(
|
|
18
|
-
var
|
|
19
|
-
const
|
|
20
|
-
if (!
|
|
16
|
+
let e = t;
|
|
17
|
+
const r = `/${i()}/email/${a}?user={{iid}}`;
|
|
18
|
+
return new DOMParser().parseFromString(e, "text/html").querySelectorAll(".unsubscribe-block-v2[data-unsubscribe-page-list]").forEach((p) => {
|
|
19
|
+
var b;
|
|
20
|
+
const m = p.getAttribute("data-unsubscribe-page-list");
|
|
21
|
+
if (!m)
|
|
21
22
|
return;
|
|
22
|
-
const
|
|
23
|
-
(
|
|
24
|
-
)) ?? [],
|
|
23
|
+
const R = U(m), d = ((b = u.templates) == null ? void 0 : b.filter(
|
|
24
|
+
(o) => R.includes(o.id)
|
|
25
|
+
)) ?? [], _ = d.some((o) => o.type === g.UNSUBSCRIBE_LINK_TYPE), I = d.some((o) => o.type === g.PREFERENCES_LINK_TYPE), E = p.outerHTML;
|
|
25
26
|
let s = E;
|
|
26
|
-
|
|
27
|
+
_ && (n.selectedDynamicContentList.push({
|
|
28
|
+
text: f,
|
|
29
|
+
value: f,
|
|
30
|
+
fallback: ""
|
|
31
|
+
}), s = s.replace(
|
|
27
32
|
l.GLOBAL_UNSUBSCRIBE_LINK_REGEX,
|
|
28
|
-
|
|
29
|
-
)),
|
|
33
|
+
S.UNSUBSCRIBE_URL + r
|
|
34
|
+
)), I && (s = s.replace(
|
|
30
35
|
l.PREFERENCES_UNSUBSCRIBE_LINK_REGEX,
|
|
31
|
-
|
|
32
|
-
)), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""),
|
|
33
|
-
}),
|
|
36
|
+
S.PREFERENCES_URL + r
|
|
37
|
+
)), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""), e = e.replace(E, s);
|
|
38
|
+
}), e;
|
|
34
39
|
},
|
|
35
40
|
priority: 60
|
|
36
41
|
},
|
|
@@ -56,16 +61,16 @@ const T = [
|
|
|
56
61
|
type: "custom",
|
|
57
62
|
processor: (t) => {
|
|
58
63
|
let i = t;
|
|
59
|
-
const
|
|
60
|
-
return
|
|
64
|
+
const c = i.match(/<a[^>]+>(.*?)<\/a>/gm);
|
|
65
|
+
return c && c.forEach((n) => {
|
|
61
66
|
if (n.includes("insEmail=1"))
|
|
62
67
|
return;
|
|
63
68
|
if (n.match(/<a\s+(?:[^>]*?\s+)?href=(["'`”])(.*?)\1\s+(?:[^>]*?\s+)?universal=(["'`”])true\3/gm)) {
|
|
64
|
-
const
|
|
69
|
+
const a = n.replace(/href=(["'`”])(.*?)\1/gm, (e) => {
|
|
65
70
|
const r = e.slice(6, e.length - 1).trim();
|
|
66
71
|
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`);
|
|
67
72
|
});
|
|
68
|
-
i = i.replace(n,
|
|
73
|
+
i = i.replace(n, a);
|
|
69
74
|
}
|
|
70
75
|
}), i;
|
|
71
76
|
},
|
|
@@ -73,5 +78,5 @@ const T = [
|
|
|
73
78
|
}
|
|
74
79
|
];
|
|
75
80
|
export {
|
|
76
|
-
|
|
81
|
+
D as unsubscribeCompilerRules
|
|
77
82
|
};
|
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
import { useTranslations as
|
|
2
|
-
|
|
1
|
+
import { useTranslations as n } from "../composables/useTranslations.js";
|
|
2
|
+
import { getEnvironmentPrefix as R } from "../utils/environmentUtil.js";
|
|
3
|
+
const e = n(), I = {
|
|
3
4
|
UNSUBSCRIBE_LINK_TYPE: 1,
|
|
4
5
|
PREFERENCES_LINK_TYPE: 3
|
|
5
|
-
},
|
|
6
|
+
}, r = {
|
|
6
7
|
UNSUBSCRIBE_LINK_REGEX: /{{ins-unsubscribe-link}}/g,
|
|
7
8
|
DATA_OGSB_BUTTON_CSS_REGEX: "\\[data-ogsb\\]\\s*\\.es-button\\.es-button-[0-9]+\\s*\\{(?:[^\\}]*)\\}",
|
|
8
9
|
GLOBAL_UNSUBSCRIBE_LINK_REGEX: /{{ins-global-unsubscribe-link}}/g,
|
|
9
10
|
PREFERENCES_UNSUBSCRIBE_LINK_REGEX: /{{ins-preferences-unsubscribe-link}}/g
|
|
10
|
-
},
|
|
11
|
-
UNSUBSCRIBE_URL:
|
|
12
|
-
PREFERENCES_URL:
|
|
13
|
-
},
|
|
11
|
+
}, s = R(), _ = {
|
|
12
|
+
UNSUBSCRIBE_URL: `https://mail.${s}.com/user/v1/unsub`,
|
|
13
|
+
PREFERENCES_URL: `https://mail.${s}.com/user/v1/prefs`
|
|
14
|
+
}, i = "iid", B = {
|
|
14
15
|
name: "Global Unsubscribe",
|
|
15
16
|
sendGridId: "G"
|
|
16
|
-
},
|
|
17
|
+
}, C = "https://academy.useinsider.com/docs/global-unsubscribe-preference-center", c = "/email/unsubscribe-pages", E = {
|
|
17
18
|
GLOBAL_UNSUBSCRIBE: 1,
|
|
18
19
|
GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE: 2,
|
|
19
20
|
SUBSCRIPTION_PREFERENCE_CENTER: 3,
|
|
20
21
|
SUBSCRIPTION_PREFERENCE_CONFIRMATION: 4,
|
|
21
22
|
RESUBSCRIBE: 5
|
|
22
|
-
},
|
|
23
|
+
}, t = {
|
|
23
24
|
[E.GLOBAL_UNSUBSCRIBE]: [
|
|
24
25
|
E.GLOBAL_UNSUBSCRIBE,
|
|
25
26
|
E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE,
|
|
@@ -29,26 +30,27 @@ const s = e(), R = {
|
|
|
29
30
|
E.SUBSCRIPTION_PREFERENCE_CENTER,
|
|
30
31
|
E.SUBSCRIPTION_PREFERENCE_CONFIRMATION
|
|
31
32
|
]
|
|
32
|
-
},
|
|
33
|
-
[E.GLOBAL_UNSUBSCRIBE]:
|
|
34
|
-
[E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]:
|
|
35
|
-
[E.RESUBSCRIBE]:
|
|
36
|
-
[E.SUBSCRIPTION_PREFERENCE_CENTER]:
|
|
37
|
-
[E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]:
|
|
38
|
-
},
|
|
33
|
+
}, U = {
|
|
34
|
+
[E.GLOBAL_UNSUBSCRIBE]: e("unsubscription-preference.type-global-unsubscribe"),
|
|
35
|
+
[E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]: e("unsubscription-preference.type-global-unsubscription-confirmation"),
|
|
36
|
+
[E.RESUBSCRIBE]: e("unsubscription-preference.type-resubscribe"),
|
|
37
|
+
[E.SUBSCRIPTION_PREFERENCE_CENTER]: e("unsubscription-preference.type-subscription-preferences-center"),
|
|
38
|
+
[E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]: e("unsubscription-preference.type-subscription-preferences-confirmation")
|
|
39
|
+
}, o = {
|
|
39
40
|
default: "{{ins-unsubscribe-link}}",
|
|
40
41
|
[E.GLOBAL_UNSUBSCRIBE]: "{{ins-global-unsubscribe-link}}",
|
|
41
42
|
[E.SUBSCRIPTION_PREFERENCE_CENTER]: "{{ins-preferences-unsubscribe-link}}"
|
|
42
43
|
};
|
|
43
44
|
export {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
C as ACADEMY_LINK,
|
|
46
|
+
B as DEFAULT_UNSUBSCRIBE_GROUP,
|
|
47
|
+
i as INSIDER_ID,
|
|
48
|
+
r as LINK_REGEXES,
|
|
49
|
+
I as LINK_TYPES,
|
|
50
|
+
o as MERGE_TAGS,
|
|
49
51
|
E as PAGE_TYPES,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
t as TYPE_COLLECTIONS,
|
|
53
|
+
U as TYPE_TRANSLATIONS,
|
|
54
|
+
c as UNSUBSCRIBE_PAGES_LINK,
|
|
55
|
+
_ as URLS
|
|
54
56
|
};
|
|
@@ -133,7 +133,7 @@ const a = c(), d = () => ({
|
|
|
133
133
|
filterSelectionDrawerStatus: !1,
|
|
134
134
|
filterList: {},
|
|
135
135
|
filterGroup: 1
|
|
136
|
-
}), G = p("
|
|
136
|
+
}), G = p("guidoRecommendationExtension", {
|
|
137
137
|
state: () => d(),
|
|
138
138
|
getters: {
|
|
139
139
|
hasFilters: (e) => !!e.recommendationConfigs.filters.length,
|
|
@@ -1,27 +1,33 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
class
|
|
1
|
+
var d = Object.defineProperty;
|
|
2
|
+
var m = (t, e, n) => e in t ? d(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
|
|
3
|
+
var c = (t, e, n) => m(t, typeof e != "symbol" ? e + "" : e, n);
|
|
4
|
+
class C {
|
|
5
5
|
constructor() {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
c(this, "selectedDynamicContent", null);
|
|
7
|
+
c(this, "dataSelectCallback", () => {
|
|
8
8
|
});
|
|
9
|
+
c(this, "closeDynamicContentHandler", null);
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Opens the merge tags library modal
|
|
13
|
+
* @param dynamicContent - Currently selected dynamic content (if any)
|
|
14
|
+
* @param onDataSelectCallback - Callback invoked when user selects a merge tag
|
|
15
|
+
* @param position - Optional position data to place the modal
|
|
16
|
+
*/
|
|
17
|
+
openMergeTagsLibrary(e, n, l) {
|
|
18
|
+
this.closeDynamicContentHandler && (document.removeEventListener("dynamic-content:close", this.closeDynamicContentHandler), this.closeDynamicContentHandler = null), this.dataSelectCallback = n, this.selectedDynamicContent = e;
|
|
19
|
+
const o = {
|
|
20
|
+
attribute: e,
|
|
21
|
+
position: l
|
|
22
|
+
}, s = new CustomEvent("dynamic-content:open", {
|
|
23
|
+
detail: o
|
|
16
24
|
});
|
|
17
|
-
document.dispatchEvent(s)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
};
|
|
22
|
-
document.addEventListener("dynamic-content:close", o);
|
|
25
|
+
document.dispatchEvent(s), this.closeDynamicContentHandler = (i) => {
|
|
26
|
+
const a = i.detail;
|
|
27
|
+
this.selectedDynamicContent = a, a.text && a.value && this.dataSelectCallback(a);
|
|
28
|
+
}, document.addEventListener("dynamic-content:close", this.closeDynamicContentHandler);
|
|
23
29
|
}
|
|
24
30
|
}
|
|
25
31
|
export {
|
|
26
|
-
|
|
32
|
+
C as ExternalMergeTagsLibrary
|
|
27
33
|
};
|