@useinsider/guido 3.7.2-beta.cebab71 → 3.7.2-beta.cfe5af8
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/composables/useSave.js +14 -14
- package/dist/composables/validators/useUnsubscribeBlockValidator.js +26 -17
- package/dist/extensions/Blocks/Unsubscribe/block.js +59 -70
- package/dist/extensions/Blocks/Unsubscribe/control.js +2 -2
- package/dist/src/composables/validators/useUnsubscribeBlockValidator.d.ts +1 -0
- package/dist/src/extensions/Blocks/Unsubscribe/block.d.ts +0 -6
- package/package.json +1 -1
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { useActionsApi as
|
|
1
|
+
import { useActionsApi as H } from "./useActionsApi.js";
|
|
2
2
|
import { useConfig as y } from "./useConfig.js";
|
|
3
|
-
import { useSaveStart as w, useSaveComplete as
|
|
3
|
+
import { useSaveStart as w, useSaveComplete as k } from "./useGuidoActions.js";
|
|
4
4
|
import { useSyncModuleExtractor as q } from "./useSyncModuleExtractor.js";
|
|
5
5
|
import { useStripoApi as C } from "../services/stripoApi.js";
|
|
6
6
|
import { useTemplatePreparation as E } from "../utils/templatePreparation.js";
|
|
7
|
-
import { useHtmlValidator as
|
|
7
|
+
import { useHtmlValidator as B } from "./useHtmlValidator.js";
|
|
8
8
|
import { useCouponBlockValidator as L } from "./validators/useCouponBlockValidator.js";
|
|
9
9
|
import { useLiquidValidator as P } from "./validators/useLiquidValidator.js";
|
|
10
|
-
import { useUnsubscribeBlockValidator as
|
|
11
|
-
const
|
|
12
|
-
const o = w(), s =
|
|
13
|
-
return { save: async (f = !1,
|
|
10
|
+
import { useUnsubscribeBlockValidator as U } from "./validators/useUnsubscribeBlockValidator.js";
|
|
11
|
+
const K = () => {
|
|
12
|
+
const o = w(), s = k(), { validateHtml: r } = B(), { validateLiquidSyntax: l } = P(), { validateCouponBlockTags: n } = L(), { validateUnsubscribeBlockUniqueness: d, validateUnsubscribeBlockHasTemplate: c } = U(), { callbacks: i, isFeatureEnabled: u } = y(), { extractSyncModuleData: m } = q(), { setSyncModuleUnsubscriptionPages: p } = C(), { editorSave: v } = H();
|
|
13
|
+
return { save: async (f = !1, S = !1) => {
|
|
14
14
|
var a;
|
|
15
15
|
o();
|
|
16
|
-
const { prepareTemplateDetails:
|
|
17
|
-
if (!
|
|
16
|
+
const { prepareTemplateDetails: V } = E(), t = await V();
|
|
17
|
+
if (!n(t.compiledHtml) || !d(t.compiledHtml) || !c(t.compiledHtml))
|
|
18
18
|
return;
|
|
19
19
|
if (u("liquidSyntax")) {
|
|
20
|
-
if (!await
|
|
20
|
+
if (!await l(t.compiledHtml))
|
|
21
21
|
return;
|
|
22
22
|
} else if (!await r(t.compiledHtml, t.dynamicContentList, !0))
|
|
23
23
|
return;
|
|
24
|
-
if ((a = i.value) != null && a.externalValidation && !await i.value.externalValidation(t) || !await
|
|
24
|
+
if ((a = i.value) != null && a.externalValidation && !await i.value.externalValidation(t) || !await v())
|
|
25
25
|
return;
|
|
26
|
-
const { unsubscribePayload:
|
|
27
|
-
return await
|
|
26
|
+
const { unsubscribePayload: b, stripoModules: x } = m(t.rawHtml);
|
|
27
|
+
return await p(b), t.modules = x, f || s({ ...t, silent: S }), t;
|
|
28
28
|
} };
|
|
29
29
|
};
|
|
30
30
|
export {
|
|
31
|
-
|
|
31
|
+
K as useSave
|
|
32
32
|
};
|
|
@@ -1,32 +1,41 @@
|
|
|
1
1
|
import { ToasterTypeOptions as i } from "../../enums/toaster.js";
|
|
2
|
-
import { PAGE_TYPES as
|
|
3
|
-
import { UNSUBSCRIBE_BLOCK_SELECTOR as
|
|
4
|
-
import { useToaster as
|
|
2
|
+
import { PAGE_TYPES as u } from "../../enums/unsubscribe.js";
|
|
3
|
+
import { UNSUBSCRIBE_BLOCK_SELECTOR as l, DATA_ATTRIBUTES as a } from "../../extensions/Blocks/Unsubscribe/utils/constants.js";
|
|
4
|
+
import { useToaster as m } from "../useToaster.js";
|
|
5
5
|
import { useTranslations as E } from "../useTranslations.js";
|
|
6
|
-
const
|
|
6
|
+
const T = [
|
|
7
7
|
{
|
|
8
|
-
pageType:
|
|
8
|
+
pageType: u.GLOBAL_UNSUBSCRIBE,
|
|
9
9
|
messageKey: "unsubscription-preference.duplicate-global-unsub"
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
|
-
pageType:
|
|
12
|
+
pageType: u.SUBSCRIPTION_PREFERENCE_CENTER,
|
|
13
13
|
messageKey: "unsubscription-preference.duplicate-pref-center"
|
|
14
14
|
}
|
|
15
|
-
], g = "unsubscription-preference.duplicate-both",
|
|
16
|
-
const { showToaster:
|
|
17
|
-
return { validateUnsubscribeBlockUniqueness: (
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
const r = Number(e.getAttribute(
|
|
21
|
-
|
|
15
|
+
], g = "unsubscription-preference.duplicate-both", b = "unsubscription-preference.select-page-to-continue", P = () => {
|
|
16
|
+
const { showToaster: c } = m(), p = E();
|
|
17
|
+
return { validateUnsubscribeBlockUniqueness: (n) => {
|
|
18
|
+
const o = new DOMParser().parseFromString(n, "text/html"), s = /* @__PURE__ */ new Map();
|
|
19
|
+
o.querySelectorAll(l).forEach((e) => {
|
|
20
|
+
const r = Number(e.getAttribute(a.PAGE_TYPE));
|
|
21
|
+
s.set(r, (s.get(r) ?? 0) + 1);
|
|
22
22
|
});
|
|
23
|
-
const
|
|
24
|
-
return
|
|
23
|
+
const t = T.filter((e) => (s.get(e.pageType) ?? 0) > 1).map((e) => e.messageKey);
|
|
24
|
+
return t.length ? (c({
|
|
25
25
|
type: i.Alert,
|
|
26
|
-
message:
|
|
26
|
+
message: p(t.length > 1 ? g : t[0])
|
|
27
|
+
}), !1) : !0;
|
|
28
|
+
}, validateUnsubscribeBlockHasTemplate: (n) => {
|
|
29
|
+
const o = new DOMParser().parseFromString(n, "text/html");
|
|
30
|
+
return Array.from(o.querySelectorAll(l)).some((t) => {
|
|
31
|
+
const e = t.getAttribute(a.PAGE_TYPE), r = t.getAttribute(a.PAGE_LIST);
|
|
32
|
+
return !e || !r;
|
|
33
|
+
}) ? (c({
|
|
34
|
+
type: i.Warning,
|
|
35
|
+
message: p(b)
|
|
27
36
|
}), !1) : !0;
|
|
28
37
|
} };
|
|
29
38
|
};
|
|
30
39
|
export {
|
|
31
|
-
|
|
40
|
+
P as useUnsubscribeBlockValidator
|
|
32
41
|
};
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
var S = Object.defineProperty;
|
|
2
2
|
var f = (c, o, e) => o in c ? S(c, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : c[o] = e;
|
|
3
3
|
var a = (c, o, e) => f(c, typeof o != "symbol" ? o + "" : o, e);
|
|
4
|
-
import { useToaster as
|
|
5
|
-
import { ToasterTypeOptions as
|
|
6
|
-
import { PAGE_TYPES as
|
|
7
|
-
import { useEditorStore as
|
|
4
|
+
import { useToaster as L } from "../../../composables/useToaster.js";
|
|
5
|
+
import { ToasterTypeOptions as A } from "../../../enums/toaster.js";
|
|
6
|
+
import { PAGE_TYPES as h } from "../../../enums/unsubscribe.js";
|
|
7
|
+
import { useEditorStore as y } from "../../../stores/editor.js";
|
|
8
8
|
import { useUnsubscribeStore as l } from "../../../stores/unsubscribe.js";
|
|
9
|
-
import { Block as
|
|
9
|
+
import { Block as T, BlockCompositionType as I, ContextActionType as B, ModificationDescription as d, BlockType as v } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
10
10
|
import { getDefaultTemplate as C } from "./template.js";
|
|
11
11
|
import { UNSUBSCRIBE_BLOCK_SELECTOR as m, DATA_ATTRIBUTES as n, UNSUBSCRIBE_EVENTS as b } from "./utils/constants.js";
|
|
12
|
-
import { parsePageList as
|
|
13
|
-
const N = "unsubscribe-block", E = 'a[data-unsubscribe-link="true"]', U = "{{ins-unsubscribe-link}}", R = "https://academy.insiderone.com/docs/adding-unsubscribe-pages-into-emails", D = "Removing the unsubscribe text leaves an empty block, but an active unsubscribe link is required. Undo your last action to restore the text, or delete the unsubscribe block entirely.",
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
},
|
|
17
|
-
class W extends
|
|
12
|
+
import { parsePageList as _ } from "./utils/utils.js";
|
|
13
|
+
const N = "unsubscribe-block", E = 'a[data-unsubscribe-link="true"]', U = "{{ins-unsubscribe-link}}", R = "https://academy.insiderone.com/docs/adding-unsubscribe-pages-into-emails", D = "Removing the unsubscribe text leaves an empty block, but an active unsubscribe link is required. Undo your last action to restore the text, or delete the unsubscribe block entirely.", w = {
|
|
14
|
+
[h.GLOBAL_UNSUBSCRIBE]: "{{ins-global-unsubscribe-link}}",
|
|
15
|
+
[h.SUBSCRIPTION_PREFERENCE_CENTER]: "{{ins-preferences-unsubscribe-link}}"
|
|
16
|
+
}, P = 3;
|
|
17
|
+
class W extends T {
|
|
18
18
|
constructor() {
|
|
19
19
|
super();
|
|
20
20
|
a(this, "selectEventListener", null);
|
|
@@ -48,13 +48,13 @@ class W extends y {
|
|
|
48
48
|
return C();
|
|
49
49
|
}
|
|
50
50
|
getContextActionsIds() {
|
|
51
|
-
return [
|
|
51
|
+
return [B.MOVE, B.REMOVE];
|
|
52
52
|
}
|
|
53
53
|
onSelect(e) {
|
|
54
|
-
if (this.currentNode = e,
|
|
54
|
+
if (this.currentNode = e, y().isPreviewModeOpen)
|
|
55
55
|
return;
|
|
56
|
-
const t = this.
|
|
57
|
-
|
|
56
|
+
const t = this._getOrAssignBlockId(e);
|
|
57
|
+
t && this.linkStateByBlockId.set(t, this._hasUnsubscribeLink(e)), !("getAttribute" in e && e.getAttribute("data-migration")) && (this._resetStoreState(), t && (l().pendingBlockId = t), this._loadBlockState(e), this._setupSelectEventListener(), this._setupCancelEventListener(t), this._checkExistingBlocks(), this._openDrawer());
|
|
58
58
|
}
|
|
59
59
|
onCreated(e) {
|
|
60
60
|
this._ensureLeadingTextGuard(e);
|
|
@@ -73,8 +73,8 @@ class W extends y {
|
|
|
73
73
|
const t = this._getOrAssignBlockId(e);
|
|
74
74
|
if (!t)
|
|
75
75
|
return;
|
|
76
|
-
const
|
|
77
|
-
this.linkStateByBlockId.get(t) === !0 && !
|
|
76
|
+
const s = this._hasUnsubscribeLink(e);
|
|
77
|
+
this.linkStateByBlockId.get(t) === !0 && !s && this._warnLinkRemoved(), this.linkStateByBlockId.set(t, s);
|
|
78
78
|
}
|
|
79
79
|
onDelete(e) {
|
|
80
80
|
this._removeEventListeners(), this._removeBlockTemplatesFromStore(e), this._resetStoreState();
|
|
@@ -95,25 +95,25 @@ class W extends y {
|
|
|
95
95
|
const t = e.querySelector(E);
|
|
96
96
|
if (!t)
|
|
97
97
|
return;
|
|
98
|
-
let
|
|
99
|
-
for (;
|
|
100
|
-
|
|
101
|
-
if (!
|
|
98
|
+
let s = t, r = s.parent();
|
|
99
|
+
for (; r && "getTagName" in r && r.getTagName().toLowerCase() !== "p"; )
|
|
100
|
+
s = r, r = r.parent();
|
|
101
|
+
if (!r || !("getTagName" in r) || r.getTagName().toLowerCase() !== "p")
|
|
102
102
|
return;
|
|
103
|
-
const i =
|
|
103
|
+
const i = s.previousSibling();
|
|
104
104
|
if (!!(i && i.getType() === "text" && i.getTextContent())) {
|
|
105
105
|
const p = this._readBlockId(e);
|
|
106
106
|
p && this.guardAttemptsByBlockId.delete(p);
|
|
107
107
|
return;
|
|
108
108
|
}
|
|
109
|
-
const
|
|
110
|
-
if (!
|
|
109
|
+
const g = this._getOrAssignBlockId(e);
|
|
110
|
+
if (!g)
|
|
111
111
|
return;
|
|
112
|
-
const
|
|
113
|
-
if (!(
|
|
114
|
-
this.guardAttemptsByBlockId.set(
|
|
112
|
+
const k = this.guardAttemptsByBlockId.get(g) ?? 0;
|
|
113
|
+
if (!(k >= P)) {
|
|
114
|
+
this.guardAttemptsByBlockId.set(g, k + 1);
|
|
115
115
|
try {
|
|
116
|
-
this.api.getDocumentModifier().modifyHtml(
|
|
116
|
+
this.api.getDocumentModifier().modifyHtml(r).prepend(" ").apply(new d("Ensure unsubscribe link text guard"));
|
|
117
117
|
} catch (p) {
|
|
118
118
|
console.warn("[UnsubscribeBlock] Failed to ensure link text guard:", p);
|
|
119
119
|
}
|
|
@@ -125,17 +125,6 @@ class W extends y {
|
|
|
125
125
|
_readBlockId(e) {
|
|
126
126
|
return "getAttribute" in e ? e.getAttribute(n.BLOCK_ID) : null;
|
|
127
127
|
}
|
|
128
|
-
/**
|
|
129
|
-
* True when the block has a page type and a page list — i.e. a template was
|
|
130
|
-
* applied. A block with neither, combined with an already-present block id,
|
|
131
|
-
* is an undo-restored orphan of a cancelled block.
|
|
132
|
-
*/
|
|
133
|
-
_hasPageSelection(e) {
|
|
134
|
-
if (!("getAttribute" in e))
|
|
135
|
-
return !1;
|
|
136
|
-
const t = e.getAttribute(n.PAGE_TYPE), r = e.getAttribute(n.PAGE_LIST);
|
|
137
|
-
return !!t && !!r;
|
|
138
|
-
}
|
|
139
128
|
/**
|
|
140
129
|
* Returns the block's stable id, assigning one via the document modifier if
|
|
141
130
|
* the node has not been tagged yet. Idempotent: subsequent calls during
|
|
@@ -148,13 +137,13 @@ class W extends y {
|
|
|
148
137
|
return t;
|
|
149
138
|
if (!("getAttribute" in e))
|
|
150
139
|
return null;
|
|
151
|
-
const
|
|
140
|
+
const s = this._generateNextBlockId();
|
|
152
141
|
try {
|
|
153
|
-
this.api.getDocumentModifier().modifyHtml(e).setAttribute(n.BLOCK_ID,
|
|
154
|
-
} catch (
|
|
155
|
-
return console.warn("[UnsubscribeBlock] Failed to assign block id:",
|
|
142
|
+
this.api.getDocumentModifier().modifyHtml(e).setAttribute(n.BLOCK_ID, s).apply(new d(`Assign unsubscribe block id ${s}`));
|
|
143
|
+
} catch (r) {
|
|
144
|
+
return console.warn("[UnsubscribeBlock] Failed to assign block id:", r), null;
|
|
156
145
|
}
|
|
157
|
-
return
|
|
146
|
+
return s;
|
|
158
147
|
}
|
|
159
148
|
/**
|
|
160
149
|
* Generates a unique id by scanning the document for the highest existing
|
|
@@ -165,9 +154,9 @@ class W extends y {
|
|
|
165
154
|
let e = 0;
|
|
166
155
|
try {
|
|
167
156
|
const t = this.api.getDocumentRoot();
|
|
168
|
-
t && "querySelectorAll" in t && t.querySelectorAll(m).forEach((
|
|
169
|
-
if ("getAttribute" in
|
|
170
|
-
const i =
|
|
157
|
+
t && "querySelectorAll" in t && t.querySelectorAll(m).forEach((r) => {
|
|
158
|
+
if ("getAttribute" in r) {
|
|
159
|
+
const i = r.getAttribute(n.BLOCK_ID), u = i ? parseInt(i) : 0;
|
|
171
160
|
u > e && (e = u);
|
|
172
161
|
}
|
|
173
162
|
});
|
|
@@ -177,9 +166,9 @@ class W extends y {
|
|
|
177
166
|
}
|
|
178
167
|
_warnLinkRemoved() {
|
|
179
168
|
try {
|
|
180
|
-
const { showToaster: e } =
|
|
169
|
+
const { showToaster: e } = L();
|
|
181
170
|
e({
|
|
182
|
-
type:
|
|
171
|
+
type: A.Warning,
|
|
183
172
|
message: this.api.translate(D),
|
|
184
173
|
actionButton: {
|
|
185
174
|
text: this.api.translate("Visit Academy"),
|
|
@@ -194,8 +183,8 @@ class W extends y {
|
|
|
194
183
|
}
|
|
195
184
|
_setupSelectEventListener() {
|
|
196
185
|
this._removeSelectEventListener(), this.selectEventListener = (e) => {
|
|
197
|
-
const t = e, { collectionType:
|
|
198
|
-
this._updateBlock(
|
|
186
|
+
const t = e, { collectionType: s, selectedPages: r } = t.detail;
|
|
187
|
+
this._updateBlock(s, r.join(","));
|
|
199
188
|
}, document.addEventListener(b.SELECT, this.selectEventListener);
|
|
200
189
|
}
|
|
201
190
|
_removeSelectEventListener() {
|
|
@@ -203,8 +192,8 @@ class W extends y {
|
|
|
203
192
|
}
|
|
204
193
|
_setupCancelEventListener(e) {
|
|
205
194
|
this._removeCancelEventListener(), this.cancelEventListener = (t) => {
|
|
206
|
-
const { detail:
|
|
207
|
-
|
|
195
|
+
const { detail: s } = t, r = (s == null ? void 0 : s.blockId) ?? null;
|
|
196
|
+
r !== null && r !== e || this._handleCancel();
|
|
208
197
|
}, document.addEventListener(b.CANCEL, this.cancelEventListener);
|
|
209
198
|
}
|
|
210
199
|
_removeCancelEventListener() {
|
|
@@ -225,14 +214,14 @@ class W extends y {
|
|
|
225
214
|
_updateBlock(e, t) {
|
|
226
215
|
if (!this.currentNode || !("querySelector" in this.currentNode))
|
|
227
216
|
return;
|
|
228
|
-
const
|
|
229
|
-
if (!
|
|
217
|
+
const s = this.currentNode.querySelector(E);
|
|
218
|
+
if (!s)
|
|
230
219
|
return;
|
|
231
|
-
const
|
|
232
|
-
this.api.getDocumentModifier().modifyHtml(
|
|
220
|
+
const r = this._getMergeTag(e);
|
|
221
|
+
this.api.getDocumentModifier().modifyHtml(s).setAttribute("href", r).apply(new d(`Updated unsubscribe link to ${r}`)), this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(n.PAGE_TYPE, e.toString()).setAttribute(n.PAGE_LIST, t).apply(new d("Updated unsubscribe block metadata"));
|
|
233
222
|
}
|
|
234
223
|
_getMergeTag(e) {
|
|
235
|
-
return
|
|
224
|
+
return w[e] ?? U;
|
|
236
225
|
}
|
|
237
226
|
_openDrawer() {
|
|
238
227
|
if (!(this.currentNode && this.currentNode.getAttribute("data-unsubscribe-page-type")))
|
|
@@ -245,12 +234,12 @@ class W extends y {
|
|
|
245
234
|
}
|
|
246
235
|
_checkExistingBlocks() {
|
|
247
236
|
const e = l();
|
|
248
|
-
e.isGlobalUnsubscribeDisabled = !1, e.isSubscriptionPreferencesCenterDisabled = !1, this.api.getDocumentRoot().querySelectorAll(m).forEach((
|
|
249
|
-
if ("getAttribute" in
|
|
250
|
-
const
|
|
251
|
-
if (
|
|
252
|
-
const i = Number(
|
|
253
|
-
i ===
|
|
237
|
+
e.isGlobalUnsubscribeDisabled = !1, e.isSubscriptionPreferencesCenterDisabled = !1, this.api.getDocumentRoot().querySelectorAll(m).forEach((s) => {
|
|
238
|
+
if ("getAttribute" in s) {
|
|
239
|
+
const r = s.getAttribute(n.PAGE_TYPE);
|
|
240
|
+
if (r) {
|
|
241
|
+
const i = Number(r);
|
|
242
|
+
i === h.GLOBAL_UNSUBSCRIBE ? e.isGlobalUnsubscribeDisabled = !0 : i === h.SUBSCRIPTION_PREFERENCE_CENTER && (e.isSubscriptionPreferencesCenterDisabled = !0);
|
|
254
243
|
}
|
|
255
244
|
}
|
|
256
245
|
});
|
|
@@ -258,11 +247,11 @@ class W extends y {
|
|
|
258
247
|
async _loadBlockState(e) {
|
|
259
248
|
if (!("getAttribute" in e))
|
|
260
249
|
return;
|
|
261
|
-
const t = e.getAttribute(n.PAGE_TYPE),
|
|
262
|
-
if (!t || !
|
|
250
|
+
const t = e.getAttribute(n.PAGE_TYPE), s = e.getAttribute(n.PAGE_LIST);
|
|
251
|
+
if (!t || !s)
|
|
263
252
|
return;
|
|
264
|
-
const
|
|
265
|
-
await
|
|
253
|
+
const r = l(), i = Number(t), u = _(s);
|
|
254
|
+
await r.fetchTemplates(), r.setCollectionWithoutAutoSelection(i), r.loadSelectedTemplates(u);
|
|
266
255
|
}
|
|
267
256
|
_resetStoreState() {
|
|
268
257
|
l().$reset();
|
|
@@ -273,8 +262,8 @@ class W extends y {
|
|
|
273
262
|
const t = e.getAttribute(n.PAGE_LIST);
|
|
274
263
|
if (!t)
|
|
275
264
|
return;
|
|
276
|
-
const
|
|
277
|
-
|
|
265
|
+
const s = l(), r = _(t);
|
|
266
|
+
s.removeUnsubscribePages(r);
|
|
278
267
|
}
|
|
279
268
|
}
|
|
280
269
|
export {
|
|
@@ -60,12 +60,12 @@ class w extends g {
|
|
|
60
60
|
this.api.onValueChanged(r.NEXT_BUTTON, () => this._onNextClick())
|
|
61
61
|
);
|
|
62
62
|
}
|
|
63
|
-
_onButtonClick() {
|
|
63
|
+
async _onButtonClick() {
|
|
64
64
|
try {
|
|
65
65
|
if (_().isPreviewModeOpen)
|
|
66
66
|
return;
|
|
67
67
|
const e = l();
|
|
68
|
-
this._reseedSelectionFromBlock(), e.activeType = e.getSelectedCollection[this.currentPreviewIndex], e.pageSelectionUpdateStatus = !0, e.pageSelectionDrawerStatus = !0;
|
|
68
|
+
await e.fetchTemplates(!0), this._reseedSelectionFromBlock(), e.activeType = e.getSelectedCollection[this.currentPreviewIndex], e.pageSelectionUpdateStatus = !0, e.pageSelectionDrawerStatus = !0;
|
|
69
69
|
} catch (e) {
|
|
70
70
|
console.error("[UnsubscribeControl] Failed to open drawer:", e);
|
|
71
71
|
}
|
|
@@ -29,12 +29,6 @@ export declare class UnsubscribeBlock extends Block {
|
|
|
29
29
|
private _ensureLeadingTextGuard;
|
|
30
30
|
private _hasUnsubscribeLink;
|
|
31
31
|
private _readBlockId;
|
|
32
|
-
/**
|
|
33
|
-
* True when the block has a page type and a page list — i.e. a template was
|
|
34
|
-
* applied. A block with neither, combined with an already-present block id,
|
|
35
|
-
* is an undo-restored orphan of a cancelled block.
|
|
36
|
-
*/
|
|
37
|
-
private _hasPageSelection;
|
|
38
32
|
/**
|
|
39
33
|
* Returns the block's stable id, assigning one via the document modifier if
|
|
40
34
|
* the node has not been tagged yet. Idempotent: subsequent calls during
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@useinsider/guido",
|
|
3
|
-
"version": "3.7.2-beta.
|
|
3
|
+
"version": "3.7.2-beta.cfe5af8",
|
|
4
4
|
"description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
|
|
5
5
|
"main": "./dist/guido.umd.cjs",
|
|
6
6
|
"module": "./dist/library.js",
|