@useinsider/guido 3.13.0 → 3.13.1-beta.88c2f20

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.
@@ -9,6 +9,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
9
9
  isStripoInitialized: boolean;
10
10
  templateId: string;
11
11
  syncModulesEnabled: boolean;
12
+ trackIdSessionFloor: number;
12
13
  }, {
13
14
  isEditorToolbarVisible: (state: {
14
15
  loadingStatus: boolean;
@@ -21,6 +22,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
21
22
  isStripoInitialized: boolean;
22
23
  templateId: string;
23
24
  syncModulesEnabled: boolean;
25
+ trackIdSessionFloor: number;
24
26
  } & import("pinia").PiniaCustomStateProperties<{
25
27
  loadingStatus: boolean;
26
28
  isCodeEditorOpen: boolean;
@@ -32,6 +34,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
32
34
  isStripoInitialized: boolean;
33
35
  templateId: string;
34
36
  syncModulesEnabled: boolean;
37
+ trackIdSessionFloor: number;
35
38
  }>) => boolean;
36
39
  isUndoButtonDisabled: (state: {
37
40
  loadingStatus: boolean;
@@ -44,6 +47,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
44
47
  isStripoInitialized: boolean;
45
48
  templateId: string;
46
49
  syncModulesEnabled: boolean;
50
+ trackIdSessionFloor: number;
47
51
  } & import("pinia").PiniaCustomStateProperties<{
48
52
  loadingStatus: boolean;
49
53
  isCodeEditorOpen: boolean;
@@ -55,6 +59,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
55
59
  isStripoInitialized: boolean;
56
60
  templateId: string;
57
61
  syncModulesEnabled: boolean;
62
+ trackIdSessionFloor: number;
58
63
  }>) => boolean;
59
64
  isRedoButtonDisabled: (state: {
60
65
  loadingStatus: boolean;
@@ -67,6 +72,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
67
72
  isStripoInitialized: boolean;
68
73
  templateId: string;
69
74
  syncModulesEnabled: boolean;
75
+ trackIdSessionFloor: number;
70
76
  } & import("pinia").PiniaCustomStateProperties<{
71
77
  loadingStatus: boolean;
72
78
  isCodeEditorOpen: boolean;
@@ -78,6 +84,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
78
84
  isStripoInitialized: boolean;
79
85
  templateId: string;
80
86
  syncModulesEnabled: boolean;
87
+ trackIdSessionFloor: number;
81
88
  }>) => boolean;
82
89
  isCodeEditorButtonDisabled: (state: {
83
90
  loadingStatus: boolean;
@@ -90,6 +97,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
90
97
  isStripoInitialized: boolean;
91
98
  templateId: string;
92
99
  syncModulesEnabled: boolean;
100
+ trackIdSessionFloor: number;
93
101
  } & import("pinia").PiniaCustomStateProperties<{
94
102
  loadingStatus: boolean;
95
103
  isCodeEditorOpen: boolean;
@@ -101,6 +109,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
101
109
  isStripoInitialized: boolean;
102
110
  templateId: string;
103
111
  syncModulesEnabled: boolean;
112
+ trackIdSessionFloor: number;
104
113
  }>) => boolean;
105
114
  isPreviewButtonDisabled: (state: {
106
115
  loadingStatus: boolean;
@@ -113,6 +122,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
113
122
  isStripoInitialized: boolean;
114
123
  templateId: string;
115
124
  syncModulesEnabled: boolean;
125
+ trackIdSessionFloor: number;
116
126
  } & import("pinia").PiniaCustomStateProperties<{
117
127
  loadingStatus: boolean;
118
128
  isCodeEditorOpen: boolean;
@@ -124,6 +134,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
124
134
  isStripoInitialized: boolean;
125
135
  templateId: string;
126
136
  syncModulesEnabled: boolean;
137
+ trackIdSessionFloor: number;
127
138
  }>) => boolean;
128
139
  isViewOptionsDisabled: (state: {
129
140
  loadingStatus: boolean;
@@ -136,6 +147,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
136
147
  isStripoInitialized: boolean;
137
148
  templateId: string;
138
149
  syncModulesEnabled: boolean;
150
+ trackIdSessionFloor: number;
139
151
  } & import("pinia").PiniaCustomStateProperties<{
140
152
  loadingStatus: boolean;
141
153
  isCodeEditorOpen: boolean;
@@ -147,6 +159,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
147
159
  isStripoInitialized: boolean;
148
160
  templateId: string;
149
161
  syncModulesEnabled: boolean;
162
+ trackIdSessionFloor: number;
150
163
  }>) => boolean;
151
164
  isVersionHistoryButtonDisabled: (state: {
152
165
  loadingStatus: boolean;
@@ -159,6 +172,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
159
172
  isStripoInitialized: boolean;
160
173
  templateId: string;
161
174
  syncModulesEnabled: boolean;
175
+ trackIdSessionFloor: number;
162
176
  } & import("pinia").PiniaCustomStateProperties<{
163
177
  loadingStatus: boolean;
164
178
  isCodeEditorOpen: boolean;
@@ -170,6 +184,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
170
184
  isStripoInitialized: boolean;
171
185
  templateId: string;
172
186
  syncModulesEnabled: boolean;
187
+ trackIdSessionFloor: number;
173
188
  }>) => boolean;
174
189
  isExportButtonDisabled: (state: {
175
190
  loadingStatus: boolean;
@@ -182,6 +197,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
182
197
  isStripoInitialized: boolean;
183
198
  templateId: string;
184
199
  syncModulesEnabled: boolean;
200
+ trackIdSessionFloor: number;
185
201
  } & import("pinia").PiniaCustomStateProperties<{
186
202
  loadingStatus: boolean;
187
203
  isCodeEditorOpen: boolean;
@@ -193,6 +209,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
193
209
  isStripoInitialized: boolean;
194
210
  templateId: string;
195
211
  syncModulesEnabled: boolean;
212
+ trackIdSessionFloor: number;
196
213
  }>) => boolean;
197
214
  isSaveAsButtonDisabled: (state: {
198
215
  loadingStatus: boolean;
@@ -205,6 +222,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
205
222
  isStripoInitialized: boolean;
206
223
  templateId: string;
207
224
  syncModulesEnabled: boolean;
225
+ trackIdSessionFloor: number;
208
226
  } & import("pinia").PiniaCustomStateProperties<{
209
227
  loadingStatus: boolean;
210
228
  isCodeEditorOpen: boolean;
@@ -216,6 +234,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
216
234
  isStripoInitialized: boolean;
217
235
  templateId: string;
218
236
  syncModulesEnabled: boolean;
237
+ trackIdSessionFloor: number;
219
238
  }>) => boolean;
220
239
  isTestButtonDisabled: (state: {
221
240
  loadingStatus: boolean;
@@ -228,6 +247,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
228
247
  isStripoInitialized: boolean;
229
248
  templateId: string;
230
249
  syncModulesEnabled: boolean;
250
+ trackIdSessionFloor: number;
231
251
  } & import("pinia").PiniaCustomStateProperties<{
232
252
  loadingStatus: boolean;
233
253
  isCodeEditorOpen: boolean;
@@ -239,6 +259,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
239
259
  isStripoInitialized: boolean;
240
260
  templateId: string;
241
261
  syncModulesEnabled: boolean;
262
+ trackIdSessionFloor: number;
242
263
  }>) => boolean;
243
264
  isSaveButtonDisabled: (state: {
244
265
  loadingStatus: boolean;
@@ -251,6 +272,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
251
272
  isStripoInitialized: boolean;
252
273
  templateId: string;
253
274
  syncModulesEnabled: boolean;
275
+ trackIdSessionFloor: number;
254
276
  } & import("pinia").PiniaCustomStateProperties<{
255
277
  loadingStatus: boolean;
256
278
  isCodeEditorOpen: boolean;
@@ -262,6 +284,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
262
284
  isStripoInitialized: boolean;
263
285
  templateId: string;
264
286
  syncModulesEnabled: boolean;
287
+ trackIdSessionFloor: number;
265
288
  }>) => boolean;
266
289
  isInSaveableState: (state: {
267
290
  loadingStatus: boolean;
@@ -274,6 +297,7 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
274
297
  isStripoInitialized: boolean;
275
298
  templateId: string;
276
299
  syncModulesEnabled: boolean;
300
+ trackIdSessionFloor: number;
277
301
  } & import("pinia").PiniaCustomStateProperties<{
278
302
  loadingStatus: boolean;
279
303
  isCodeEditorOpen: boolean;
@@ -285,5 +309,6 @@ export declare const useEditorStore: import("pinia").StoreDefinition<"guidoEdito
285
309
  isStripoInitialized: boolean;
286
310
  templateId: string;
287
311
  syncModulesEnabled: boolean;
312
+ trackIdSessionFloor: number;
288
313
  }>) => boolean;
289
314
  }, {}>;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Persistent link tracking ids for the click heatmap (SD-141414).
3
+ * Pure string transforms — no DOM parse/serialize round-trip, safe for both
4
+ * Stripo raw HTML and hand-authored HTML-editor documents. Shared with email-fe.
5
+ */
6
+ export declare const TRACK_ID_ATTRIBUTE = "data-ins-track-id";
7
+ export declare const TRACK_SEQ_ATTRIBUTE = "data-ins-track-seq";
8
+ export interface TrackingIdResult {
9
+ html: string;
10
+ changed: boolean;
11
+ nextSeq: number;
12
+ }
13
+ /**
14
+ * Reads the persisted id high-water mark: <body> attr, then <html> attr,
15
+ * then the leading comment fallback. Returns 0 when absent.
16
+ */
17
+ export declare function readTrackSeq(html: string): number;
18
+ /**
19
+ * Ensures every <a> opening tag carries a unique positive-integer id and the
20
+ * document records the id high-water mark. Ids are minted above
21
+ * max(persisted seq, max id in document, floor) so deleted ids are never
22
+ * reused — even after a version restore or paste-over (floor = session floor).
23
+ * Idempotent: a document already normalized returns changed=false.
24
+ */
25
+ export declare function assignTrackingIds(html: string, floor?: number): TrackingIdResult;
@@ -10,7 +10,10 @@ const o = e("guidoEditor", {
10
10
  hasChanges: !1,
11
11
  isStripoInitialized: !1,
12
12
  templateId: "",
13
- syncModulesEnabled: !1
13
+ syncModulesEnabled: !1,
14
+ // In-session id high-water mark; floors tracking-id minting so ids
15
+ // deleted by a version restore / paste-over are never reused.
16
+ trackIdSessionFloor: 0
14
17
  }),
15
18
  getters: {
16
19
  // Middle Slot
@@ -0,0 +1,44 @@
1
+ const E = "data-ins-track-id", g = "data-ins-track-seq", N = /<a\b(?:[^>"']|"[^"]*"|'[^']*')*>/gi, $ = /\bdata-ins-track-id\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>]+))/i, R = /\bdata-ins-track-seq\s*=\s*(?:"(\d+)"|'(\d+)'|(\d+))/i, f = /<body\b[^>]*>/i, b = /<html\b[^>]*>/i, _ = /<!--\s*ins-track-seq:(\d+)\s*-->/i, S = /^[1-9][0-9]{0,14}$/;
2
+ function k(e) {
3
+ const t = Number(e);
4
+ return Number.isSafeInteger(t) && t > 0 ? t : 0;
5
+ }
6
+ function p(e) {
7
+ var c, T, a;
8
+ const s = [(c = f.exec(e)) == null ? void 0 : c[0], (T = b.exec(e)) == null ? void 0 : T[0]].reduce(
9
+ (i, o) => i ?? (o ? R.exec(o) : null),
10
+ null
11
+ ), n = (s == null ? void 0 : s[1]) ?? (s == null ? void 0 : s[2]) ?? (s == null ? void 0 : s[3]) ?? ((a = _.exec(e)) == null ? void 0 : a[1]) ?? "";
12
+ return k(n);
13
+ }
14
+ function I(e, t) {
15
+ const s = `${g}="${t}"`, n = f.exec(e) ?? b.exec(e);
16
+ if (n) {
17
+ const [c] = n, T = R.exec(c), a = T ? c.replace(T[0], s) : c.replace(/\/?>$/, (i) => ` ${s}${i}`);
18
+ return e.slice(0, n.index) + a + e.slice(n.index + c.length);
19
+ }
20
+ return _.test(e) ? e.replace(_, `<!--ins-track-seq:${t}-->`) : `<!--ins-track-seq:${t}-->${e}`;
21
+ }
22
+ function q(e, t, s) {
23
+ const n = `${E}="${s}"`;
24
+ return t ? e.replace(t[0], n) : e.replace(/^<a\b/i, (c) => `${c} ${n}`);
25
+ }
26
+ function P(e, t = 0) {
27
+ const s = /* @__PURE__ */ new Set();
28
+ let n = 0;
29
+ const c = [...e.matchAll(N)].map((r) => {
30
+ const [x] = r, u = $.exec(x), A = u ? u[1] ?? u[2] ?? u[3] ?? "" : "";
31
+ let d = null;
32
+ return S.test(A) && !s.has(Number(A)) && (d = Number(A), s.add(d), n = Math.max(n, d)), { index: r.index, tag: x, attrMatch: u, id: d };
33
+ }), T = p(e);
34
+ let a = Math.max(T, n, t), i = "", o = 0, l = !1;
35
+ return c.forEach((r) => {
36
+ i += e.slice(o, r.index), r.id === null ? (a += 1, i += q(r.tag, r.attrMatch, a), l = !0) : i += r.tag, o = r.index + r.tag.length;
37
+ }), i += e.slice(o), a > 0 && T !== a && (i = I(i, a), l = !0), { html: i, changed: l, nextSeq: a };
38
+ }
39
+ export {
40
+ E as TRACK_ID_ATTRIBUTE,
41
+ g as TRACK_SEQ_ATTRIBUTE,
42
+ P as assignTrackingIds,
43
+ p as readTrackSeq
44
+ };
@@ -1,62 +1,65 @@
1
- import { useActionsApi as P } from "../composables/useActionsApi.js";
2
- import { useHtmlCompiler as w } from "../composables/useHtmlCompiler.js";
3
- import { DEFAULT_CURRENCY as l, DEFAULT_NODE_CONFIG as i } from "../extensions/Blocks/Recommendation/constants/defaultConfig.js";
4
- import { useRecommendationExtensionStore as b } from "../extensions/Blocks/Recommendation/store/recommendation.js";
5
- import { mapLegacyStrategy as E } from "../extensions/Blocks/Recommendation/utils/legacyStrategyMap.js";
6
- import { DATA_ATTRIBUTES as h } from "../extensions/Blocks/Unsubscribe/utils/constants.js";
7
- import { parsePageList as H } from "../extensions/Blocks/Unsubscribe/utils/utils.js";
8
- import { useDynamicContentStore as U } from "../stores/dynamic-content.js";
9
- import { useUnsubscribeStore as F } from "../stores/unsubscribe.js";
10
- function L(s) {
11
- const o = new DOMParser().parseFromString(s, "text/html").querySelectorAll(`[${h.PAGE_LIST}]`), t = [];
12
- return o.forEach((a) => {
13
- const n = a.getAttribute(h.PAGE_LIST);
14
- n && t.push(...H(n));
1
+ import { useActionsApi as k } from "../composables/useActionsApi.js";
2
+ import { useConfig as U } from "../composables/useConfig.js";
3
+ import { useHtmlCompiler as x } from "../composables/useHtmlCompiler.js";
4
+ import { DEFAULT_CURRENCY as d, DEFAULT_NODE_CONFIG as s } from "../extensions/Blocks/Recommendation/constants/defaultConfig.js";
5
+ import { useRecommendationExtensionStore as T } from "../extensions/Blocks/Recommendation/store/recommendation.js";
6
+ import { mapLegacyStrategy as L } from "../extensions/Blocks/Recommendation/utils/legacyStrategyMap.js";
7
+ import { DATA_ATTRIBUTES as C } from "../extensions/Blocks/Unsubscribe/utils/constants.js";
8
+ import { parsePageList as R } from "../extensions/Blocks/Unsubscribe/utils/utils.js";
9
+ import { useDynamicContentStore as N } from "../stores/dynamic-content.js";
10
+ import { useEditorStore as z } from "../stores/editor.js";
11
+ import { useUnsubscribeStore as _ } from "../stores/unsubscribe.js";
12
+ import { assignTrackingIds as v } from "./linkTrackingIds.js";
13
+ function O(c) {
14
+ const n = new DOMParser().parseFromString(c, "text/html").querySelectorAll(`[${C.PAGE_LIST}]`), t = [];
15
+ return n.forEach((a) => {
16
+ const r = a.getAttribute(C.PAGE_LIST);
17
+ r && t.push(...R(r));
15
18
  }), [...new Set(t)];
16
19
  }
17
- async function R(s) {
18
- const m = new DOMParser().parseFromString(s, "text/html").querySelectorAll(".recommendation-block-v2");
20
+ async function M(c) {
21
+ const m = new DOMParser().parseFromString(c, "text/html").querySelectorAll(".recommendation-block-v2");
19
22
  if (m.length === 0)
20
23
  return;
21
- const o = b();
24
+ const n = T();
22
25
  m.forEach((t) => {
23
- var c, p, g, f, r;
24
- const a = t.getAttribute("recommendation-id"), n = a ? Number(a) : NaN;
25
- if (!Number.isFinite(n))
26
+ var l, g, f, i, S;
27
+ const a = t.getAttribute("recommendation-id"), r = a ? Number(a) : NaN;
28
+ if (!Number.isFinite(r))
26
29
  return;
27
- const d = t.getAttribute("esd-ext-config");
28
- if (!d)
30
+ const p = t.getAttribute("esd-ext-config");
31
+ if (!p)
29
32
  return;
30
33
  let e;
31
34
  try {
32
- e = JSON.parse(d);
35
+ e = JSON.parse(p);
33
36
  } catch {
34
37
  return;
35
38
  }
36
39
  if (!e || typeof e != "object" || Array.isArray(e))
37
40
  return;
38
- const y = {
41
+ const o = {
39
42
  // Normalize legacy strategy keys (e.g. `mostViewed` → `mostPopular`) so
40
43
  // already-saved blocks that never re-run the migrator don't emit a
41
44
  // strategy-less campaign URL. `||` also catches '' / undefined (SD-144882).
42
- strategy: E(e.strategy) || i.strategy,
43
- language: e.language ?? i.language,
44
- size: e.size ?? i.size,
45
+ strategy: L(e.strategy) || s.strategy,
46
+ language: e.language ?? s.language,
47
+ size: e.size ?? s.size,
45
48
  // Spread the default arrays so each block gets a fresh reference
46
49
  // instead of sharing the singleton in DEFAULT_NODE_CONFIG.
47
- productIds: e.productIds ?? [...i.productIds],
48
- filters: e.filters ?? [...i.filters],
49
- shuffleProducts: e.shuffleProducts ?? i.shuffleProducts,
50
- currencyCode: ((c = e.currency) == null ? void 0 : c.code) ?? l.code,
51
- currencyAlignment: ((p = e.currency) == null ? void 0 : p.alignment) ?? l.alignment,
52
- currencyDecimalCount: ((g = e.currency) == null ? void 0 : g.decimalCount) ?? l.decimalCount,
53
- currencyDecimalSeparator: ((f = e.currency) == null ? void 0 : f.decimalSeparator) ?? l.decimalSeparator,
54
- currencyThousandSeparator: ((r = e.currency) == null ? void 0 : r.thousandSeparator) ?? l.thousandSeparator
50
+ productIds: e.productIds ?? [...s.productIds],
51
+ filters: e.filters ?? [...s.filters],
52
+ shuffleProducts: e.shuffleProducts ?? s.shuffleProducts,
53
+ currencyCode: ((l = e.currency) == null ? void 0 : l.code) ?? d.code,
54
+ currencyAlignment: ((g = e.currency) == null ? void 0 : g.alignment) ?? d.alignment,
55
+ currencyDecimalCount: ((f = e.currency) == null ? void 0 : f.decimalCount) ?? d.decimalCount,
56
+ currencyDecimalSeparator: ((i = e.currency) == null ? void 0 : i.decimalSeparator) ?? d.decimalSeparator,
57
+ currencyThousandSeparator: ((S = e.currency) == null ? void 0 : S.thousandSeparator) ?? d.thousandSeparator
55
58
  };
56
- o.seedBlockUrlConfig(n, y);
59
+ n.seedBlockUrlConfig(r, o);
57
60
  });
58
61
  try {
59
- await o.fetchRecommendationCreateData();
62
+ await n.fetchRecommendationCreateData();
60
63
  } catch (t) {
61
64
  console.warn(
62
65
  "Recommendation reference data pre-load failed; validator will skip the availability check.",
@@ -64,43 +67,51 @@ async function R(s) {
64
67
  );
65
68
  }
66
69
  }
67
- const G = () => {
68
- const s = U(), u = F(), { getCompiledEmail: m, getTemplateData: o } = P(), { compileHtml: t, compileAmpHtml: a } = w();
70
+ const Z = () => {
71
+ const c = N(), u = _(), { getCompiledEmail: m, getTemplateData: n, updateHtmlAndCss: t } = k(), { compileHtml: a, compileAmpHtml: r } = x(), { isFeatureEnabled: p } = U();
69
72
  return {
70
73
  prepareTemplateDetails: async () => {
71
- const { html: d, ampHtml: e = "", ampErrors: y = [] } = await m({
74
+ let { html: o, css: l, syncModulesIds: g = [] } = await n();
75
+ if (p("linkTrackingIds"))
76
+ try {
77
+ const h = z(), { html: A, changed: H, nextSeq: I } = v(o, h.trackIdSessionFloor);
78
+ H && (await t(A, l), o = A), h.trackIdSessionFloor = I;
79
+ } catch (h) {
80
+ console.error("Tracking-id assignment failed, saving without new ids:", h);
81
+ }
82
+ const { html: f, ampHtml: i = "", ampErrors: S = [] } = await m({
72
83
  minimize: !0,
73
84
  resetDataSavedFlag: !1
74
- }), { html: c, css: p, syncModulesIds: g = [] } = await o();
75
- u.selectedUnsubscribePages.length && await u.fetchTemplates(), await R(c);
76
- const { compiledHtml: f, stats: r, appliedRules: A } = t(d), C = e && a(e).compiledHtml, T = s.getSelectedDynamicContentList, D = b(), S = L(c);
85
+ });
86
+ u.selectedUnsubscribePages.length && await u.fetchTemplates(), await M(o);
87
+ const { compiledHtml: w, stats: y, appliedRules: D } = a(f), E = i && r(i).compiledHtml, P = c.getSelectedDynamicContentList, F = T(), b = O(o);
77
88
  return console.debug("HTML Compilation Stats:", {
78
- originalSize: r.originalSize,
79
- compiledSize: r.compiledSize,
80
- reduction: `${r.reductionPercentage.toFixed(2)}%`,
81
- appliedRules: A,
82
- executionTime: `${r.executionTime.toFixed(2)}ms`
89
+ originalSize: y.originalSize,
90
+ compiledSize: y.compiledSize,
91
+ reduction: `${y.reductionPercentage.toFixed(2)}%`,
92
+ appliedRules: D,
93
+ executionTime: `${y.executionTime.toFixed(2)}ms`
83
94
  }), {
84
- dynamicContentList: T,
85
- compiledHtml: f,
86
- rawHtml: c,
87
- css: p,
88
- ampHtml: C,
89
- ampErrors: y,
95
+ dynamicContentList: P,
96
+ compiledHtml: w,
97
+ rawHtml: o,
98
+ css: l,
99
+ ampHtml: E,
100
+ ampErrors: S,
90
101
  modules: g.map(Number),
91
102
  recommendation: {
92
- campaignUrls: D.recommendationCampaignUrls,
103
+ campaignUrls: F.recommendationCampaignUrls,
93
104
  configs: {}
94
105
  },
95
106
  unsubscribe: {
96
- status: S.length > 0,
97
- config: S
107
+ status: b.length > 0,
108
+ config: b
98
109
  }
99
110
  };
100
111
  }
101
112
  };
102
113
  };
103
114
  export {
104
- L as getHtmlReferencedUnsubscribePages,
105
- G as useTemplatePreparation
115
+ O as getHtmlReferencedUnsubscribePages,
116
+ Z as useTemplatePreparation
106
117
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "3.13.0",
3
+ "version": "3.13.1-beta.88c2f20",
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",