@useinsider/guido 3.10.0-beta.f7505c1 → 3.10.0-beta.f8b4dbb

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.
@@ -122,10 +122,10 @@ const d = [
122
122
  ], i = /<head>([\S\s]*)<\/head>/, o = new RegExp(i);
123
123
  if (!e.match(o))
124
124
  return e;
125
- let s = e;
126
- return t.forEach((r) => {
127
- s = s.replace("</head>", `${r}</head>`);
128
- }), s;
125
+ let r = e;
126
+ return t.forEach((s) => {
127
+ r = r.replace("</head>", `${s}</head>`);
128
+ }), r;
129
129
  },
130
130
  priority: 30
131
131
  },
@@ -156,9 +156,9 @@ const d = [
156
156
  type: "custom",
157
157
  processor: (e) => {
158
158
  const t = (i) => i.toString(16).padStart(2, "0");
159
- return e.replace(/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/gi, (i, o, n, s) => {
160
- const [r, a, c] = [Number(o), Number(n), Number(s)];
161
- return r > 255 || a > 255 || c > 255 ? i : `#${t(r)}${t(a)}${t(c)}`;
159
+ return e.replace(/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/gi, (i, o, n, r) => {
160
+ const [s, a, c] = [Number(o), Number(n), Number(r)];
161
+ return s > 255 || a > 255 || c > 255 ? i : `#${t(s)}${t(a)}${t(c)}`;
162
162
  }).replace(/#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3\b/gi, "#$1$2$3");
163
163
  },
164
164
  priority: 44
@@ -174,6 +174,29 @@ const d = [
174
174
  replacement: "",
175
175
  flags: "g",
176
176
  priority: 45
177
+ },
178
+ {
179
+ id: "remove-script-tags",
180
+ // SD-145051: parity with HB HtmlCleaner.removeUnsafeHtmlTags — strip <script> from
181
+ // compiled email. Priority 50 runs after the &lt;/&gt; unescape rules (13/14) so
182
+ // post-unescape tags are still caught. Do NOT add to AMP_SAFE_RULE_IDS (AMP needs <script>).
183
+ description: "Strip <script>…<\/script> tags from compiled email",
184
+ type: "regex",
185
+ pattern: "<script[^>]*>.*?<\/script>",
186
+ replacement: "",
187
+ flags: "gis",
188
+ priority: 50
189
+ },
190
+ {
191
+ id: "remove-iframe-tags",
192
+ // SD-145051: parity with HB HtmlCleaner.removeUnsafeHtmlTags — strip <iframe>.
193
+ // Do NOT add this id to AMP_SAFE_RULE_IDS.
194
+ description: "Strip <iframe>…</iframe> tags from compiled email",
195
+ type: "regex",
196
+ pattern: "<iframe[^>]*>.*?</iframe>",
197
+ replacement: "",
198
+ flags: "gis",
199
+ priority: 51
177
200
  }
178
201
  ];
179
202
  export {
@@ -1,189 +1,176 @@
1
- import { useConfig as q } from "../../../composables/useConfig.js";
2
- import { useRecommendation as C } from "../../../composables/useRecommendation.js";
3
- import { CSS_CLASS_RECO_BUTTON as E } from "../../../extensions/Blocks/Recommendation/constants/selectors.js";
4
- import { useRecommendationExtensionStore as w } from "../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
- import { isIgnoredRecommendationBlock as P } from "./recommendationIgnoreUtils.js";
6
- function f(t, o, e, n, s = "") {
7
- const i = `{{${s}${t}_${o}_${e}}}`, r = `{{${s}${t}_${o}_currency}}`;
8
- return n === "before" ? `${r} ${i}` : `${i} ${r}`;
1
+ import { useConfig as _ } from "../../../composables/useConfig.js";
2
+ import { useRecommendation as q } from "../../../composables/useRecommendation.js";
3
+ import { CSS_CLASS_RECO_BUTTON as C } from "../../../extensions/Blocks/Recommendation/constants/selectors.js";
4
+ import { useRecommendationExtensionStore as E } from "../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
+ import { isIgnoredRecommendationBlock as w } from "./recommendationIgnoreUtils.js";
6
+ function P(t, r, e, n, s = "") {
7
+ const c = `{{${s}${t}_${r}_${e}}}`, o = `{{${s}${t}_${r}_currency}}`;
8
+ return n === "before" ? `${o} ${c}` : `${c} ${o}`;
9
9
  }
10
10
  function m(t) {
11
- let o = t;
12
- for (; o.children.length === 1; )
13
- [o] = o.children;
14
- return o;
11
+ let r = t;
12
+ for (; r.children.length === 1; )
13
+ [r] = r.children;
14
+ return r;
15
15
  }
16
- function h(t, o, e, n, s, i) {
17
- switch (o) {
16
+ function b(t, r, e, n, s, c) {
17
+ switch (r) {
18
18
  case "productImage": {
19
- const r = t.querySelector("img");
20
- r && (r.setAttribute("src", `{{${i}${e}_${n}_image_url}}`), r.setAttribute("alt", `{{${i}${e}_${n}_name}}`));
21
- const c = t.querySelector("a");
22
- c && (c.setAttribute("href", `{{${i}${e}_${n}_url}}`), c.classList.add(E));
19
+ const o = t.querySelector("img");
20
+ o && (o.setAttribute("src", `{{${c}${e}_${n}_image_url}}`), o.setAttribute("alt", `{{${c}${e}_${n}_name}}`));
21
+ const i = t.querySelector("a");
22
+ i && (i.setAttribute("href", `{{${c}${e}_${n}_url}}`), i.classList.add(C));
23
23
  break;
24
24
  }
25
25
  case "productName": {
26
- const r = t.querySelector("p");
27
- r && (m(r).textContent = `{{${i}${e}_${n}_name}}`);
28
- break;
29
- }
30
- case "productPrice": {
31
- const r = t.querySelector(".product-price p") ?? t.querySelector("p");
32
- r && (m(r).textContent = f(
33
- e,
34
- n,
35
- "price",
36
- s,
37
- i
38
- ));
39
- const c = t.querySelector(".product-old-price p");
40
- c && (m(c).textContent = f(
41
- e,
42
- n,
43
- "original_price",
44
- s,
45
- i
46
- ));
26
+ const o = t.querySelector("p");
27
+ o && (m(o).textContent = `{{${c}${e}_${n}_name}}`);
47
28
  break;
48
29
  }
30
+ // Inline mode ("Move to next line" OFF) merges BOTH prices into one row
31
+ // anchored on whichever attribute comes first in the composition, so
32
+ // substitute by cell content, not by the row's anchor (SD-145161).
33
+ case "productPrice":
49
34
  case "productOldPrice": {
50
- const r = t.querySelector("p");
51
- r && (m(r).textContent = f(
52
- e,
53
- n,
54
- "original_price",
55
- s,
56
- i
57
- ));
35
+ const o = (d, l) => {
36
+ d && (m(d).textContent = P(
37
+ e,
38
+ n,
39
+ l,
40
+ s,
41
+ c
42
+ ));
43
+ }, i = t.querySelector(".product-price p"), a = t.querySelector(".product-old-price p"), u = !i && !a ? t.querySelector("p") : null;
44
+ o(i ?? (r === "productPrice" ? u : null), "price"), o(a ?? (r === "productOldPrice" ? u : null), "original_price");
58
45
  break;
59
46
  }
60
47
  case "productButton": {
61
- const r = t.querySelector("a");
62
- r && r.setAttribute("href", `{{${i}${e}_${n}_url}}`);
48
+ const o = t.querySelector("a");
49
+ o && o.setAttribute("href", `{{${c}${e}_${n}_url}}`);
63
50
  break;
64
51
  }
65
52
  case "productOmnibusPrice": {
66
- const r = t.querySelector(".omnibus-price-value");
67
- if (r) {
68
- r.textContent = `{{${i}${e}_${n}_omnibus_price}}`;
69
- const c = r.closest("p");
70
- c && (c.setAttribute("product-attr", "omnibus_price"), c.setAttribute("composition", "true"));
53
+ const o = t.querySelector(".omnibus-price-value");
54
+ if (o) {
55
+ o.textContent = `{{${c}${e}_${n}_omnibus_price}}`;
56
+ const i = o.closest("p");
57
+ i && (i.setAttribute("product-attr", "omnibus_price"), i.setAttribute("composition", "true"));
71
58
  }
72
59
  break;
73
60
  }
74
61
  case "productOmnibusDiscount": {
75
- const r = t.querySelector(".omnibus-discount-value");
76
- if (r) {
77
- r.textContent = `{{${i}${e}_${n}_omnibus_discount}}`;
78
- const c = r.closest("p");
79
- c && (c.setAttribute("product-attr", "omnibus_discount"), c.setAttribute("composition", "true"));
62
+ const o = t.querySelector(".omnibus-discount-value");
63
+ if (o) {
64
+ o.textContent = `{{${c}${e}_${n}_omnibus_discount}}`;
65
+ const i = o.closest("p");
66
+ i && (i.setAttribute("product-attr", "omnibus_discount"), i.setAttribute("composition", "true"));
80
67
  }
81
68
  break;
82
69
  }
83
70
  default: {
84
- const r = t.getAttribute("product-attr") ? t : t.querySelector("[product-attr]");
85
- if (r) {
86
- const c = r.getAttribute("product-attr"), l = r.querySelector("p");
87
- l && (m(l).textContent = `{{${i}${e}_${n}_${c}}}`);
71
+ const o = t.getAttribute("product-attr") ? t : t.querySelector("[product-attr]");
72
+ if (o) {
73
+ const i = o.getAttribute("product-attr"), a = o.querySelector("p");
74
+ a && (m(a).textContent = `{{${c}${e}_${n}_${i}}}`);
88
75
  }
89
76
  break;
90
77
  }
91
78
  }
92
79
  }
93
- function R(t, o, e, n) {
94
- t.querySelectorAll(".recommendation-product-row").forEach((i, r) => {
95
- i.querySelectorAll("[data-attribute-type]").forEach((l) => {
96
- const u = l.getAttribute("data-attribute-type") || "", p = l.querySelectorAll(".attribute-cell");
97
- p.length > 0 ? p.forEach((a) => {
98
- h(a, u, o, r, e, n);
99
- }) : h(l, u, o, r, e, n);
80
+ function R(t, r, e, n) {
81
+ t.querySelectorAll(".recommendation-product-row").forEach((c, o) => {
82
+ c.querySelectorAll("[data-attribute-type]").forEach((a) => {
83
+ const u = a.getAttribute("data-attribute-type") || "", d = a.querySelectorAll(".attribute-cell");
84
+ d.length > 0 ? d.forEach((l) => {
85
+ b(l, u, r, o, e, n);
86
+ }) : b(a, u, r, o, e, n);
100
87
  });
101
88
  });
102
89
  }
103
- function W(t, o, e, n) {
90
+ function W(t, r, e, n) {
104
91
  const s = t.querySelectorAll(".recommendation-product-row");
105
92
  if (!s.length)
106
93
  return;
107
- const [i] = s, r = i.querySelector("[data-attribute-type]"), c = r ? r.querySelectorAll(".attribute-cell").length : 1;
108
- s.forEach((l, u) => {
109
- l.querySelectorAll("[data-attribute-type]").forEach((a) => {
110
- const d = a.getAttribute("data-attribute-type") || "";
111
- a.querySelectorAll(".attribute-cell").forEach((S, _) => {
112
- const g = u * c + _;
113
- h(S, d, o, g, e, n);
94
+ const [c] = s, o = c.querySelector("[data-attribute-type]"), i = o ? o.querySelectorAll(".attribute-cell").length : 1;
95
+ s.forEach((a, u) => {
96
+ a.querySelectorAll("[data-attribute-type]").forEach((l) => {
97
+ const p = l.getAttribute("data-attribute-type") || "";
98
+ l.querySelectorAll(".attribute-cell").forEach(($, S) => {
99
+ const g = u * i + S;
100
+ b($, p, r, g, e, n);
114
101
  });
115
102
  });
116
103
  });
117
104
  }
118
- function v(t, o, e, n) {
119
- t.querySelectorAll(".ins-recommendation-product-container").forEach((i) => {
120
- W(i, o, e, n);
105
+ function v(t, r, e, n) {
106
+ t.querySelectorAll(".ins-recommendation-product-container").forEach((c) => {
107
+ W(c, r, e, n);
121
108
  });
122
109
  }
123
- function O(t, o, e) {
110
+ function O(t, r, e) {
124
111
  const n = t.getAttribute("data-layout") || "grid", s = t.getAttribute("currency-alignment") || "after";
125
- n === "list" ? R(t, o, s, e) : v(t, o, s, e);
112
+ n === "list" ? R(t, r, s, e) : v(t, r, s, e);
126
113
  }
127
- function b(t, o, e) {
128
- const n = new RegExp(`${o}\\s*:\\s*(\\d+)\\s*px`, "i"), s = t.match(n);
114
+ function f(t, r, e) {
115
+ const n = new RegExp(`${r}\\s*:\\s*(\\d+)\\s*px`, "i"), s = t.match(n);
129
116
  return s ? parseInt(s[1]) : e;
130
117
  }
131
- function A(t) {
132
- const o = t.trim();
133
- return o.endsWith("%") ? parseFloat(o) < 100 : /^\d+(?:\.\d+)?(?:px)?$/.test(o) && parseInt(o) > 0;
118
+ function y(t) {
119
+ const r = t.trim();
120
+ return r.endsWith("%") ? parseFloat(r) < 100 : /^\d+(?:\.\d+)?(?:px)?$/.test(r) && parseInt(r) > 0;
134
121
  }
135
- function $(t) {
136
- const o = t.getAttribute("width");
137
- if (o && A(o))
138
- return o.trim();
122
+ function A(t) {
123
+ const r = t.getAttribute("width");
124
+ if (r && y(r))
125
+ return r.trim();
139
126
  const e = (t.getAttribute("style") || "").match(/(?:^|[;\s])width\s*:\s*(\d+(?:\.\d+)?(?:px|%))/i);
140
- return e && A(e[1]) ? e[1] : null;
127
+ return e && y(e[1]) ? e[1] : null;
141
128
  }
142
- function T(t, o) {
129
+ function M(t, r) {
143
130
  let e = t.parentElement;
144
- for (; e && e !== o; ) {
145
- if (e.tagName === "TD" && $(e))
131
+ for (; e && e !== r; ) {
132
+ if (e.tagName === "TD" && A(e))
146
133
  return e;
147
134
  e = e.parentElement;
148
135
  }
149
136
  return null;
150
137
  }
151
- function M(t) {
152
- const o = t.getAttribute("style") || "", e = b(o, "width", 600), n = b(o, "padding", 0) * 2, s = Math.max(0, e - n);
153
- s !== 0 && t.querySelectorAll("img.adapt-img").forEach((i) => {
154
- if (i.hasAttribute("width"))
138
+ function T(t) {
139
+ const r = t.getAttribute("style") || "", e = f(r, "width", 600), n = f(r, "padding", 0) * 2, s = Math.max(0, e - n);
140
+ s !== 0 && t.querySelectorAll("img.adapt-img").forEach((c) => {
141
+ if (c.hasAttribute("width"))
155
142
  return;
156
- const r = T(i, t);
157
- if (!r)
143
+ const o = M(c, t);
144
+ if (!o)
158
145
  return;
159
- const c = $(r), l = b(r.getAttribute("style") || "", "padding", 0) * 2, u = c.endsWith("%") ? Math.floor(s * parseFloat(c) / 100) : parseInt(c), p = Math.max(1, u - l);
160
- i.setAttribute("width", String(p));
161
- const a = i.getAttribute("style") || "";
162
- if (!/\bwidth\s*:\s*\d/i.test(a)) {
163
- const d = a && !a.trim().endsWith(";") ? "; " : "";
164
- i.setAttribute("style", `${a}${d}width: ${p}px`);
146
+ const i = A(o), a = f(o.getAttribute("style") || "", "padding", 0) * 2, u = i.endsWith("%") ? Math.floor(s * parseFloat(i) / 100) : parseInt(i), d = Math.max(1, u - a);
147
+ c.setAttribute("width", String(d));
148
+ const l = c.getAttribute("style") || "";
149
+ if (!/\bwidth\s*:\s*\d/i.test(l)) {
150
+ const p = l && !l.trim().endsWith(";") ? "; " : "";
151
+ c.setAttribute("style", `${l}${p}width: ${d}px`);
165
152
  }
166
153
  });
167
154
  }
168
- function B(t, o) {
155
+ function B(t, r) {
169
156
  const e = t.match(/<!DOCTYPE[^>]*>/i);
170
157
  return (e ? `${e[0]}
171
- ` : "") + o.documentElement.outerHTML;
158
+ ` : "") + r.documentElement.outerHTML;
172
159
  }
173
160
  function G(t) {
174
- const o = t.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), e = new DOMParser().parseFromString(o, "text/html"), n = e.querySelectorAll(".recommendation-block-v2");
161
+ const r = t.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), e = new DOMParser().parseFromString(r, "text/html"), n = e.querySelectorAll(".recommendation-block-v2");
175
162
  if (!n.length)
176
163
  return t;
177
- const { buildCampaignUrl: s } = C(), i = w();
178
- i.recommendationCampaignUrls = {};
179
- const { isFeatureEnabled: r } = q(), c = r("liquidSyntax") ? "reco_" : "";
164
+ const { buildCampaignUrl: s } = q(), c = E();
165
+ c.recommendationCampaignUrls = {};
166
+ const { isFeatureEnabled: o } = _(), i = o("liquidSyntax") ? "reco_" : "";
180
167
  return n.forEach((u) => {
181
- var a, d;
182
- const p = u.getAttribute("recommendation-id");
183
- p && ((a = u.parentNode) == null || a.insertBefore(e.createComment("REC_START"), u), (d = u.parentNode) == null || d.insertBefore(e.createComment("REC_END"), u.nextSibling), u.querySelectorAll('[data-visibility="0"]').forEach((y) => y.remove()), s(p), P(u) || O(u, p, c), M(u));
184
- }), B(o, e).replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
168
+ var l, p;
169
+ const d = u.getAttribute("recommendation-id");
170
+ d && ((l = u.parentNode) == null || l.insertBefore(e.createComment("REC_START"), u), (p = u.parentNode) == null || p.insertBefore(e.createComment("REC_END"), u.nextSibling), u.querySelectorAll('[data-visibility="0"]').forEach((h) => h.remove()), s(d), w(u) || O(u, d, i), T(u));
171
+ }), B(r, e).replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
185
172
  }
186
173
  export {
187
- f as formatPriceVariable,
174
+ P as formatPriceVariable,
188
175
  G as prepareRecommendationBlocks
189
176
  };
@@ -4,7 +4,10 @@ const e = "Items", o = {
4
4
  "Recommendation Block": "Recommendation",
5
5
  Items: e,
6
6
  "This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.": "This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.",
7
- "This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly.": "This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly."
7
+ "This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly.": "This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly.",
8
+ "Pixel Tracking Opt-in": "Pixel Tracking Opt-in",
9
+ "OPT-IN SELECTION": "OPT-IN SELECTION",
10
+ "UNSUBSCRIBE GROUPS": "UNSUBSCRIBE GROUPS"
8
11
  };
9
12
  export {
10
13
  e as Items,
@@ -1,12 +1,15 @@
1
1
  const e = {
2
2
  transactional: 2
3
- }, o = 2, t = 13, s = {
3
+ }, s = 2, a = 13, t = "https://email-static.useinsider.com", o = `${t}/templates/campaign/default.html`, l = `${t}/templates/campaign/default.css`, E = {
4
4
  SAVED_MODULES: "savedModules",
5
5
  DEFAULT_MODULES: "defaultModules"
6
6
  };
7
7
  export {
8
- o as EditorType,
9
- t as MAX_DEFAULT_TEMPLATE_ID,
10
- s as ModuleFolderDefaults,
8
+ l as BLANK_TEMPLATE_CSS_URL,
9
+ o as BLANK_TEMPLATE_HTML_URL,
10
+ t as EMAIL_STATIC_BASE_URL,
11
+ s as EditorType,
12
+ a as MAX_DEFAULT_TEMPLATE_ID,
13
+ E as ModuleFolderDefaults,
11
14
  e as TemplateTypes
12
15
  };
@@ -1,35 +1,38 @@
1
1
  import { useTranslations as R } from "../composables/useTranslations.js";
2
- import { ProductType as n } from "../@types/config/schemas.js";
2
+ import { ProductType as s } from "../@types/config/schemas.js";
3
3
  import "../@types/config/defaults.js";
4
- import { getEnvironmentPrefix as S } from "../utils/environmentUtil.js";
5
- const i = {
4
+ import { getEnvironmentPrefix as _ } from "../utils/environmentUtil.js";
5
+ const B = {
6
6
  UNSUBSCRIBE_LINK_TYPE: 1,
7
7
  PREFERENCES_LINK_TYPE: 3
8
- }, B = {
8
+ }, C = {
9
9
  UNSUBSCRIBE_LINK_REGEX: /{{ins-unsubscribe-link}}/g,
10
10
  DATA_OGSB_BUTTON_CSS_REGEX: "\\[data-ogsb\\]\\s*\\.es-button\\.es-button-[0-9]+\\s*\\{(?:[^\\}]*)\\}",
11
11
  GLOBAL_UNSUBSCRIBE_LINK_REGEX: /{{ins-global-unsubscribe-link}}/g,
12
12
  PREFERENCES_UNSUBSCRIBE_LINK_REGEX: /{{ins-preferences-unsubscribe-link}}/g
13
- }, s = S(), C = {
14
- UNSUBSCRIBE_URL: `https://mail.${s}.com/user/v1/unsub`,
15
- PREFERENCES_URL: `https://mail.${s}.com/user/v1/prefs`
16
- }, U = {
17
- [n.EMAIL]: "email",
18
- [n.ARCHITECT]: "journey",
19
- [n.UNSUBSCRIBE_PAGES]: "email"
20
- }, o = "iid", r = "G", c = () => ({
13
+ }, e = _(), U = {
14
+ UNSUBSCRIBE_URL: `https://mail.${e}.com/user/v1/unsub`,
15
+ PREFERENCES_URL: `https://mail.${e}.com/user/v1/prefs`
16
+ }, o = {
17
+ [s.EMAIL]: "email",
18
+ [s.ARCHITECT]: "journey",
19
+ [s.UNSUBSCRIBE_PAGES]: "email"
20
+ }, c = "iid", S = "G", N = "P", u = [
21
+ S,
22
+ N
23
+ ], T = () => ({
21
24
  name: R()("onboarding-center.email-subscribers-global-unsub-card-title"),
22
- sendGridId: r
23
- }), u = "/email/unsubscribe-pages", E = {
25
+ sendGridId: S
26
+ }), b = "/email/unsubscribe-pages", E = {
24
27
  GLOBAL_UNSUBSCRIBE: 1,
25
28
  GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE: 2,
26
29
  SUBSCRIPTION_PREFERENCE_CENTER: 3,
27
30
  SUBSCRIPTION_PREFERENCE_CONFIRMATION: 4,
28
31
  RESUBSCRIBE: 5
29
- }, b = {
32
+ }, P = {
30
33
  [E.GLOBAL_UNSUBSCRIBE]: "custom-unsubscribe",
31
34
  [E.SUBSCRIPTION_PREFERENCE_CENTER]: "custom-preferences"
32
- }, T = {
35
+ }, L = {
33
36
  [E.GLOBAL_UNSUBSCRIBE]: [
34
37
  E.GLOBAL_UNSUBSCRIBE,
35
38
  E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE,
@@ -39,32 +42,34 @@ const i = {
39
42
  E.SUBSCRIPTION_PREFERENCE_CENTER,
40
43
  E.SUBSCRIPTION_PREFERENCE_CONFIRMATION
41
44
  ]
42
- }, P = () => {
43
- const e = R();
45
+ }, O = () => {
46
+ const n = R();
44
47
  return {
45
- [E.GLOBAL_UNSUBSCRIBE]: e("unsubscription-preference.type-global-unsubscribe"),
46
- [E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]: e("unsubscription-preference.type-global-unsubscription-confirmation"),
47
- [E.RESUBSCRIBE]: e("unsubscription-preference.type-resubscribe"),
48
- [E.SUBSCRIPTION_PREFERENCE_CENTER]: e("unsubscription-preference.type-subscription-preferences-center"),
49
- [E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]: e("unsubscription-preference.type-subscription-preferences-confirmation")
48
+ [E.GLOBAL_UNSUBSCRIBE]: n("unsubscription-preference.type-global-unsubscribe"),
49
+ [E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]: n("unsubscription-preference.type-global-unsubscription-confirmation"),
50
+ [E.RESUBSCRIBE]: n("unsubscription-preference.type-resubscribe"),
51
+ [E.SUBSCRIPTION_PREFERENCE_CENTER]: n("unsubscription-preference.type-subscription-preferences-center"),
52
+ [E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]: n("unsubscription-preference.type-subscription-preferences-confirmation")
50
53
  };
51
- }, O = {
54
+ }, p = {
52
55
  default: "{{ins-unsubscribe-link}}",
53
56
  [E.GLOBAL_UNSUBSCRIBE]: "{{ins-global-unsubscribe-link}}",
54
57
  [E.SUBSCRIPTION_PREFERENCE_CENTER]: "{{ins-preferences-unsubscribe-link}}"
55
58
  };
56
59
  export {
57
- r as DEFAULT_UNSUBSCRIBE_GROUP_SEND_GRID_ID,
58
- o as INSIDER_ID,
59
- B as LINK_REGEXES,
60
- i as LINK_TYPES,
61
- O as MERGE_TAGS,
60
+ S as DEFAULT_UNSUBSCRIBE_GROUP_SEND_GRID_ID,
61
+ c as INSIDER_ID,
62
+ C as LINK_REGEXES,
63
+ B as LINK_TYPES,
64
+ p as MERGE_TAGS,
62
65
  E as PAGE_TYPES,
63
- U as PRODUCT_TYPE_URL_SEGMENTS,
64
- T as TYPE_COLLECTIONS,
65
- u as UNSUBSCRIBE_PAGES_LINK,
66
- b as UNSUBSCRIBE_SYNC_MODULE_TYPES,
67
- C as URLS,
68
- c as getDefaultUnsubscribeGroup,
69
- P as getTypeTranslations
66
+ N as PIXEL_TRACKING_SEND_GRID_ID,
67
+ o as PRODUCT_TYPE_URL_SEGMENTS,
68
+ L as TYPE_COLLECTIONS,
69
+ b as UNSUBSCRIBE_PAGES_LINK,
70
+ u as UNSUBSCRIBE_SENTINEL_SEND_GRID_IDS,
71
+ P as UNSUBSCRIBE_SYNC_MODULE_TYPES,
72
+ U as URLS,
73
+ T as getDefaultUnsubscribeGroup,
74
+ O as getTypeTranslations
70
75
  };
@@ -1,7 +1,7 @@
1
1
  import { Block as e, BlockCompositionType as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
2
  import { getDefaultTemplate as o } from "./template.js";
3
3
  const r = "checkbox-block";
4
- class s extends e {
4
+ class l extends e {
5
5
  constructor() {
6
6
  super();
7
7
  }
@@ -18,7 +18,9 @@ class s extends e {
18
18
  return this.api.translate("Checkbox Block");
19
19
  }
20
20
  getDescription() {
21
- return this.api.translate("Checkbox Block Description");
21
+ return this.api.translate(
22
+ "Checkbox lets you select Unsubscribe and Preference Type for users to manage their opt-in or opt-out preferences."
23
+ );
22
24
  }
23
25
  getTemplate() {
24
26
  return o();
@@ -29,5 +31,5 @@ class s extends e {
29
31
  }
30
32
  export {
31
33
  r as CHECKBOX_BLOCK_ID,
32
- s as CheckboxBlock
34
+ l as CheckboxBlock
33
35
  };