@boxcc/maildeno-editor 0.4.14 → 0.4.15

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.
@@ -1,7 +1,7 @@
1
- import { c as de, o as At, r as Y, s as ue, t as ee } from "./borderRadius-CkSa1lQ9.js";
2
- import { computed as Ce, inject as Oe, nextTick as ye, onUnmounted as dr, provide as Ie, ref as L, shallowRef as pr, watch as hn, watchEffect as mr } from "vue";
3
- var it = (e) => e.trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "") || "untitled_template";
4
- function vn(e) {
1
+ import { c as pe, o as Rt, r as X, s as de, t as re } from "./borderRadius-CkSa1lQ9.js";
2
+ import { computed as Ce, inject as Oe, nextTick as $e, onUnmounted as pr, provide as Ie, ref as L, shallowRef as mr, watch as vn, watchEffect as fr } from "vue";
3
+ var at = (e) => e.trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "") || "untitled_template";
4
+ function bn(e) {
5
5
  if (!e || typeof e != "object") throw new Error("Unrecognized template file format");
6
6
  if (e.template_id && e.template_name && e.canvas && e.rows && e.schema_version) {
7
7
  if (e.schema_version !== "1.0") {
@@ -14,7 +14,7 @@ function vn(e) {
14
14
  if (e.meta && e.canvas && e.content?.rows) {
15
15
  const t = e.meta.name || "Untitled Template";
16
16
  return {
17
- template_id: it(t),
17
+ template_id: at(t),
18
18
  template_name: t,
19
19
  canvas: e.canvas,
20
20
  rows: e.content.rows,
@@ -22,7 +22,7 @@ function vn(e) {
22
22
  };
23
23
  }
24
24
  if (e.canvas && e.content?.rows) return {
25
- template_id: it("Untitled Template"),
25
+ template_id: at("Untitled Template"),
26
26
  template_name: "Untitled Template",
27
27
  canvas: e.canvas,
28
28
  rows: e.content.rows,
@@ -31,7 +31,7 @@ function vn(e) {
31
31
  if (!e.meta && e.canvasStyles && e.rows) {
32
32
  const t = "Untitled Template";
33
33
  return {
34
- template_id: it(t),
34
+ template_id: at(t),
35
35
  template_name: t,
36
36
  canvas: e.canvasStyles,
37
37
  rows: e.rows,
@@ -40,14 +40,14 @@ function vn(e) {
40
40
  }
41
41
  throw new Error("Unrecognized template file format");
42
42
  }
43
- var K = () => crypto.randomUUID().replace(/-/g, "").slice(0, 16), Se = "maildeno:product-rows", Pe = "maildeno:template:", kt = "maildeno:versions:", en = 20;
44
- function bn(e) {
43
+ var Y = () => crypto.randomUUID().replace(/-/g, "").slice(0, 16), ye = "maildeno:product-rows", Pe = "maildeno:template:", wt = "maildeno:versions:", tn = 20;
44
+ function $n(e) {
45
45
  const t = JSON.parse(JSON.stringify(e));
46
- return t.id = K(), t.type === "row" && Array.isArray(t.columns) && (t.columns = t.columns.map((r) => {
46
+ return t.id = Y(), t.type === "row" && Array.isArray(t.columns) && (t.columns = t.columns.map((r) => {
47
47
  const n = r.children ?? r.components ?? [], o = {
48
48
  ...r,
49
- id: K(),
50
- children: n.map((i) => bn(i))
49
+ id: Y(),
50
+ children: n.map((i) => $n(i))
51
51
  };
52
52
  return delete o.components, o;
53
53
  })), t;
@@ -63,15 +63,15 @@ function fe(e) {
63
63
  function De(e, t) {
64
64
  localStorage.setItem(e, JSON.stringify(t));
65
65
  }
66
- function $n() {
66
+ function yn() {
67
67
  async function e(s) {
68
68
  return s ? fe(Pe + s) : null;
69
69
  }
70
- async function t(s, S) {
71
- const C = S || K();
70
+ async function t(s, y) {
71
+ const C = y || Y();
72
72
  try {
73
73
  const _ = fe(Pe + C);
74
- _ && b(C, _);
74
+ _ && h(C, _);
75
75
  } catch (_) {
76
76
  console.warn("[maildeno-editor] couldn't record a template version:", _);
77
77
  }
@@ -82,8 +82,8 @@ function $n() {
82
82
  }
83
83
  async function r() {
84
84
  const s = [];
85
- for (let S = 0; S < localStorage.length; S++) {
86
- const C = localStorage.key(S);
85
+ for (let y = 0; y < localStorage.length; y++) {
86
+ const C = localStorage.key(y);
87
87
  if (!C?.startsWith(Pe)) continue;
88
88
  const _ = fe(C);
89
89
  s.push({
@@ -92,85 +92,85 @@ function $n() {
92
92
  updatedAt: _?.updatedAt
93
93
  });
94
94
  }
95
- return s.sort((S, C) => (C.updatedAt ?? "").localeCompare(S.updatedAt ?? ""));
95
+ return s.sort((y, C) => (C.updatedAt ?? "").localeCompare(y.updatedAt ?? ""));
96
96
  }
97
97
  async function n(s) {
98
- localStorage.removeItem(Pe + s), localStorage.removeItem(kt + s);
98
+ localStorage.removeItem(Pe + s), localStorage.removeItem(wt + s);
99
99
  }
100
100
  function o(s) {
101
- return fe(kt + s) ?? [];
101
+ return fe(wt + s) ?? [];
102
102
  }
103
- function i(s, S) {
104
- De(kt + s, S);
103
+ function i(s, y) {
104
+ De(wt + s, y);
105
105
  }
106
106
  async function a(s) {
107
- return o(s).map(({ snapshot: S, ...C }) => C);
107
+ return o(s).map(({ snapshot: y, ...C }) => C);
108
108
  }
109
- async function l(s, S) {
110
- return o(s).find((C) => C.versionId === S)?.snapshot ?? null;
109
+ async function l(s, y) {
110
+ return o(s).find((C) => C.versionId === y)?.snapshot ?? null;
111
111
  }
112
- async function c(s, S) {
113
- i(s, o(s).filter((C) => C.versionId !== S));
112
+ async function c(s, y) {
113
+ i(s, o(s).filter((C) => C.versionId !== y));
114
114
  }
115
- async function p(s) {
116
- i(s, o(s).filter((S) => S.kept));
115
+ async function m(s) {
116
+ i(s, o(s).filter((y) => y.kept));
117
117
  }
118
- async function v(s, S, C) {
119
- i(s, o(s).map((_) => _.versionId === S ? {
118
+ async function b(s, y, C) {
119
+ i(s, o(s).map((_) => _.versionId === y ? {
120
120
  ..._,
121
121
  kept: C
122
122
  } : _));
123
123
  }
124
- function b(s, S) {
124
+ function h(s, y) {
125
125
  const C = o(s);
126
126
  C.unshift({
127
- versionId: K(),
127
+ versionId: Y(),
128
128
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
129
129
  kept: !1,
130
- snapshot: S
130
+ snapshot: y
131
131
  });
132
- const _ = C.filter((g) => !g.kept);
133
- if (_.length > en) {
134
- const g = new Set(_.slice(en).map((m) => m.versionId));
135
- i(s, C.filter((m) => !g.has(m.versionId)));
132
+ const _ = C.filter((f) => !f.kept);
133
+ if (_.length > tn) {
134
+ const f = new Set(_.slice(tn).map((p) => p.versionId));
135
+ i(s, C.filter((p) => !f.has(p.versionId)));
136
136
  return;
137
137
  }
138
138
  i(s, C);
139
139
  }
140
- async function E() {
141
- return fe(Se) ?? [];
140
+ async function R() {
141
+ return fe(ye) ?? [];
142
142
  }
143
- async function w() {
143
+ async function E() {
144
144
  return [];
145
145
  }
146
- async function R(s, S) {
147
- const C = fe(Se) ?? [], _ = {
148
- id: K(),
149
- name: S.trim() || `Row ${C.length + 1}`,
146
+ async function x(s, y) {
147
+ const C = fe(ye) ?? [], _ = {
148
+ id: Y(),
149
+ name: y.trim() || `Row ${C.length + 1}`,
150
150
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
151
151
  row: JSON.parse(JSON.stringify(s))
152
152
  };
153
- return De(Se, [_, ...C]), _;
153
+ return De(ye, [_, ...C]), _;
154
154
  }
155
- async function M(s) {
156
- const S = fe(Se) ?? [];
157
- De(Se, S.filter((C) => C.id !== s));
155
+ async function N(s) {
156
+ const y = fe(ye) ?? [];
157
+ De(ye, y.filter((C) => C.id !== s));
158
158
  }
159
- async function O(s, S) {
160
- const C = fe(Se) ?? [];
161
- De(Se, C.map((_) => _.id === s ? {
159
+ async function j(s, y) {
160
+ const C = fe(ye) ?? [];
161
+ De(ye, C.map((_) => _.id === s ? {
162
162
  ..._,
163
- name: S.trim() || _.name
163
+ name: y.trim() || _.name
164
164
  } : _));
165
165
  }
166
166
  function u(s) {
167
- const S = (fe(Se) ?? []).find((C) => C.id === s);
168
- return S ? bn(S.row) : null;
167
+ const y = (fe(ye) ?? []).find((C) => C.id === s);
168
+ return y ? $n(y.row) : null;
169
169
  }
170
170
  async function d(s) {
171
- return new Promise((S, C) => {
171
+ return new Promise((y, C) => {
172
172
  const _ = new FileReader();
173
- _.onload = () => S(_.result), _.onerror = () => C(_.error), _.readAsDataURL(s);
173
+ _.onload = () => y(_.result), _.onerror = () => C(_.error), _.readAsDataURL(s);
174
174
  });
175
175
  }
176
176
  return {
@@ -181,93 +181,93 @@ function $n() {
181
181
  listTemplateVersions: a,
182
182
  getTemplateVersion: l,
183
183
  deleteTemplateVersion: c,
184
- deleteAllTemplateVersions: p,
185
- setTemplateVersionKept: v,
186
- listSavedRows: E,
187
- listSystemSavedRows: w,
188
- saveSavedRow: R,
189
- deleteSavedRow: M,
190
- renameSavedRow: O,
184
+ deleteAllTemplateVersions: m,
185
+ setTemplateVersionKept: b,
186
+ listSavedRows: R,
187
+ listSystemSavedRows: E,
188
+ saveSavedRow: x,
189
+ deleteSavedRow: N,
190
+ renameSavedRow: j,
191
191
  cloneSavedRowForCanvas: u,
192
192
  uploadImage: d
193
193
  };
194
194
  }
195
- var yn = /* @__PURE__ */ Symbol("maildeno-editor:storage-adapter");
196
- function fr(e) {
197
- const t = $n();
195
+ var Sn = /* @__PURE__ */ Symbol("maildeno-editor:storage-adapter");
196
+ function gr(e) {
197
+ const t = yn();
198
198
  if (!e) return t;
199
199
  const r = { ...t };
200
200
  for (const [n, o] of Object.entries(e)) typeof o == "function" && (r[n] = o);
201
201
  return r;
202
202
  }
203
- var Sn = /* @__PURE__ */ Symbol("maildeno-editor:can-save");
204
- function gr() {
205
- return Oe(Sn, Ce(() => !0));
206
- }
207
- function Ko(e) {
208
- Ie(Sn, e);
203
+ var kn = /* @__PURE__ */ Symbol("maildeno-editor:can-save");
204
+ function hr() {
205
+ return Oe(kn, Ce(() => !0));
209
206
  }
210
- var kn = /* @__PURE__ */ Symbol("maildeno-editor:has-template-library");
211
- function Yo() {
212
- return Oe(kn, !0);
207
+ function Yo(e) {
208
+ Ie(kn, e);
213
209
  }
214
- function Xo(e) {
215
- const t = fr(e);
216
- return Ie(yn, t), Ie(kn, !e || typeof e.listTemplates == "function"), t;
210
+ var wn = /* @__PURE__ */ Symbol("maildeno-editor:has-template-library");
211
+ function Xo() {
212
+ return Oe(wn, !0);
217
213
  }
218
- var hr = () => {
219
- const e = Oe(yn);
220
- return e || (console.warn("[maildeno-editor] useStorageAdapter() couldn't find a provided adapter — falling back to the default localStorage adapter. If you passed a custom storageAdapter, it wasn't picked up; please report this."), $n());
221
- }, wn = /* @__PURE__ */ Symbol("maildeno-editor:saved-row-capabilities");
222
214
  function Qo(e) {
223
- Ie(wn, e);
215
+ const t = gr(e);
216
+ return Ie(Sn, t), Ie(wn, !e || typeof e.listTemplates == "function"), t;
224
217
  }
225
- function Zo() {
226
- return Oe(wn, Ce(() => ({})));
227
- }
228
- var dt = pr(null), Rt = L(!1);
229
- function Ot() {
230
- Rt.value = !1, setTimeout(() => {
231
- Rt.value || (dt.value = null);
232
- }, 200);
218
+ var vr = () => {
219
+ const e = Oe(Sn);
220
+ return e || (console.warn("[maildeno-editor] useStorageAdapter() couldn't find a provided adapter — falling back to the default localStorage adapter. If you passed a custom storageAdapter, it wasn't picked up; please report this."), yn());
221
+ }, xn = /* @__PURE__ */ Symbol("maildeno-editor:saved-row-capabilities");
222
+ function Zo(e) {
223
+ Ie(xn, e);
233
224
  }
234
225
  function ea() {
235
- const e = dt.value;
236
- Ot(), e?.accept?.();
226
+ return Oe(xn, Ce(() => ({})));
227
+ }
228
+ var ut = mr(null), Et = L(!1);
229
+ function jt() {
230
+ Et.value = !1, setTimeout(() => {
231
+ Et.value || (ut.value = null);
232
+ }, 200);
237
233
  }
238
234
  function ta() {
239
- const e = dt.value;
240
- Ot(), e?.reject?.();
235
+ const e = ut.value;
236
+ jt(), e?.accept?.();
237
+ }
238
+ function na() {
239
+ const e = ut.value;
240
+ jt(), e?.reject?.();
241
241
  }
242
- function vr() {
242
+ function br() {
243
243
  return {
244
244
  require(e) {
245
- dt.value = e, Rt.value = !0;
245
+ ut.value = e, Et.value = !0;
246
246
  },
247
- close: Ot
247
+ close: jt
248
248
  };
249
249
  }
250
250
  var _e = () => ({
251
251
  enabled: !1,
252
252
  match: "all",
253
253
  rules: []
254
- }), Et = () => ({
254
+ }), Mt = () => ({
255
255
  desktopHide: !1,
256
256
  mobileHide: !1
257
- }), oe = () => ({
257
+ }), ie = () => ({
258
258
  visibility: _e(),
259
- ...Et()
260
- }), br = Object.freeze({
259
+ ...Mt()
260
+ }), $r = Object.freeze({
261
261
  enabled: !1,
262
262
  match: "all",
263
263
  rules: []
264
- }), $r = Object.freeze({
264
+ }), yr = Object.freeze({
265
265
  desktopHide: !1,
266
266
  mobileHide: !1
267
- }), na = Object.freeze({
268
- visibility: br,
269
- ...$r
270
- }), wt = (e) => ({
267
+ }), ra = Object.freeze({
268
+ visibility: $r,
269
+ ...yr
270
+ }), xt = (e) => ({
271
271
  useGradient: !1,
272
272
  solid: e,
273
273
  gradient: {
@@ -281,7 +281,7 @@ var _e = () => ({
281
281
  position: 100
282
282
  }]
283
283
  }
284
- }), Xe = () => ({
284
+ }), Ye = () => ({
285
285
  useGradient: !1,
286
286
  solid: "transparent",
287
287
  gradient: {
@@ -295,7 +295,7 @@ var _e = () => ({
295
295
  position: 100
296
296
  }]
297
297
  }
298
- }), jt = () => ({ defaultProps: {
298
+ }), zt = () => ({ defaultProps: {
299
299
  paragraph: {
300
300
  content: "Enter your paragraph text here",
301
301
  fontSize: 16,
@@ -306,7 +306,7 @@ var _e = () => ({
306
306
  fontStyle: "normal",
307
307
  letterSpacing: 0,
308
308
  backgroundColor: "transparent",
309
- backgroundGradient: Xe(),
309
+ backgroundGradient: Ye(),
310
310
  margin: {
311
311
  top: 0,
312
312
  right: 0,
@@ -338,7 +338,7 @@ var _e = () => ({
338
338
  margin: null,
339
339
  padding: null
340
340
  },
341
- ...oe()
341
+ ...ie()
342
342
  },
343
343
  heading: {
344
344
  content: "Heading Text",
@@ -350,7 +350,7 @@ var _e = () => ({
350
350
  fontFamily: "Arial",
351
351
  letterSpacing: 0,
352
352
  backgroundColor: "transparent",
353
- backgroundGradient: Xe(),
353
+ backgroundGradient: Ye(),
354
354
  margin: {
355
355
  top: 0,
356
356
  right: 0,
@@ -381,7 +381,7 @@ var _e = () => ({
381
381
  margin: null,
382
382
  padding: null
383
383
  },
384
- ...oe()
384
+ ...ie()
385
385
  },
386
386
  image: {
387
387
  src: "https://email-builder-nor-dev.s3.amazonaws.com/images/2026/08/20/5bffeaf2.jpeg",
@@ -418,7 +418,7 @@ var _e = () => ({
418
418
  borderRadius: null,
419
419
  border: null
420
420
  },
421
- ...oe()
421
+ ...ie()
422
422
  },
423
423
  video: {
424
424
  fallbackLink: "https://example.com",
@@ -455,7 +455,7 @@ var _e = () => ({
455
455
  borderRadius: null,
456
456
  border: null
457
457
  },
458
- ...oe()
458
+ ...ie()
459
459
  },
460
460
  list: {
461
461
  content: "<ul><li>List item 1</li><li>List item 2</li><li>List item 3</li></ul>",
@@ -465,7 +465,7 @@ var _e = () => ({
465
465
  letterSpacing: 0,
466
466
  color: "#111111",
467
467
  backgroundColor: "transparent",
468
- backgroundGradient: Xe(),
468
+ backgroundGradient: Ye(),
469
469
  margin: {
470
470
  top: 0,
471
471
  right: 0,
@@ -491,7 +491,7 @@ var _e = () => ({
491
491
  padding: null,
492
492
  itemSpacing: null
493
493
  },
494
- ...oe()
494
+ ...ie()
495
495
  },
496
496
  button: {
497
497
  text: "Click Me",
@@ -499,7 +499,7 @@ var _e = () => ({
499
499
  width: "auto",
500
500
  height: "auto",
501
501
  backgroundColor: "#007bff",
502
- backgroundGradient: wt("#007bff"),
502
+ backgroundGradient: xt("#007bff"),
503
503
  color: "#fafafa",
504
504
  fontSize: 16,
505
505
  fontWeight: "medium",
@@ -545,7 +545,7 @@ var _e = () => ({
545
545
  border: null,
546
546
  align: null
547
547
  },
548
- ...oe()
548
+ ...ie()
549
549
  },
550
550
  anchor: {
551
551
  text: "Click here",
@@ -580,11 +580,11 @@ var _e = () => ({
580
580
  padding: null,
581
581
  align: null
582
582
  },
583
- ...oe()
583
+ ...ie()
584
584
  },
585
585
  divider: {
586
586
  backgroundColor: "#cccccc",
587
- backgroundGradient: wt("#cccccc"),
587
+ backgroundGradient: xt("#cccccc"),
588
588
  height: 1,
589
589
  width: 100,
590
590
  margin: {
@@ -609,18 +609,18 @@ var _e = () => ({
609
609
  padding: null,
610
610
  align: null
611
611
  },
612
- ...oe()
612
+ ...ie()
613
613
  },
614
614
  spacer: {
615
615
  height: 20,
616
616
  backgroundColor: "transparent",
617
- backgroundGradient: wt("transparent"),
617
+ backgroundGradient: xt("transparent"),
618
618
  mobile: {
619
619
  height: null,
620
620
  backgroundColor: null,
621
621
  backgroundGradient: null
622
622
  },
623
- ...oe()
623
+ ...ie()
624
624
  },
625
625
  menu: {
626
626
  items: [
@@ -650,7 +650,7 @@ var _e = () => ({
650
650
  textTransform: "none",
651
651
  textDecoration: "none",
652
652
  backgroundColor: "transparent",
653
- backgroundGradient: Xe(),
653
+ backgroundGradient: Ye(),
654
654
  spacing: 16,
655
655
  align: "center",
656
656
  margin: {
@@ -683,7 +683,7 @@ var _e = () => ({
683
683
  margin: null,
684
684
  padding: null
685
685
  },
686
- ...oe()
686
+ ...ie()
687
687
  },
688
688
  socials: {
689
689
  platforms: [
@@ -728,9 +728,9 @@ var _e = () => ({
728
728
  margin: null,
729
729
  padding: null
730
730
  },
731
- ...oe()
731
+ ...ie()
732
732
  }
733
- } }), ra = (e) => e.trim().toLowerCase().replace(/\s+/g, "_").replace(/[^a-z0-9_]/g, ""), oa = (e) => e.split("_").map((t) => t.charAt(0).toUpperCase() + t.slice(1)).join(" "), xn = () => `row_${K().slice(0, 4)}`, Fe = (e) => ({
733
+ } }), oa = (e) => e.trim().toLowerCase().replace(/\s+/g, "_").replace(/[^a-z0-9_]/g, ""), aa = (e) => e.split("_").map((t) => t.charAt(0).toUpperCase() + t.slice(1)).join(" "), Cn = () => `row_${Y().slice(0, 4)}`, Fe = (e) => ({
734
734
  useGradient: !1,
735
735
  solid: e,
736
736
  gradient: {
@@ -744,25 +744,25 @@ var _e = () => ({
744
744
  position: 100
745
745
  }]
746
746
  }
747
- }), he = (e) => e.children ?? e.components ?? [], He = (e) => (e.children || (e.children = e.components ?? []), e.children), zt = (e) => {
747
+ }), he = (e) => e.children ?? e.components ?? [], He = (e) => (e.children || (e.children = e.components ?? []), e.children), Lt = (e) => {
748
748
  const t = JSON.parse(JSON.stringify(e));
749
- return t.id = K(), t.type === "row" && Array.isArray(t.columns) && (t.columns = t.columns.map((r) => {
749
+ return t.id = Y(), t.type === "row" && Array.isArray(t.columns) && (t.columns = t.columns.map((r) => {
750
750
  const n = r.children ?? r.components ?? [], o = {
751
751
  ...r,
752
- id: K(),
753
- children: n.map((i) => zt(i))
752
+ id: Y(),
753
+ children: n.map((i) => Lt(i))
754
754
  };
755
755
  return delete o.components, o;
756
756
  })), t;
757
- }, Qe = (e, t) => {
758
- const r = zt(e);
757
+ }, Xe = (e, t) => {
758
+ const r = Lt(e);
759
759
  if (r.type === "row-spacer") return r;
760
- const n = e.name ?? xn(), o = new Set(t.map((l) => l.name));
760
+ const n = e.name ?? Cn(), o = new Set(t.map((l) => l.name));
761
761
  let i = `${n}_copy`, a = 2;
762
762
  for (; o.has(i); )
763
763
  i = `${n}_copy_${a}`, a++;
764
764
  return r.name = i, r;
765
- }, yr = (e) => zt(e), ve = (e, t) => {
765
+ }, Sr = (e) => Lt(e), ve = (e, t) => {
766
766
  for (let r = 0; r < e.length; r++) {
767
767
  const n = e[r];
768
768
  if (n.id === t) return {
@@ -791,50 +791,50 @@ var _e = () => ({
791
791
  }
792
792
  }
793
793
  return null;
794
- }, re = /* @__PURE__ */ new Map(), tn = (e) => {
795
- re.clear();
794
+ }, ae = /* @__PURE__ */ new Map(), nn = (e) => {
795
+ ae.clear();
796
796
  const t = (r) => {
797
797
  for (const n of r)
798
- if (n?.id && (re.set(n.id, n), n.type === "row" && Array.isArray(n.columns)))
798
+ if (n?.id && (ae.set(n.id, n), n.type === "row" && Array.isArray(n.columns)))
799
799
  for (const o of n.columns)
800
- o?.id && re.set(o.id, o), t(o.children ?? o.components ?? []);
800
+ o?.id && ae.set(o.id, o), t(o.children ?? o.components ?? []);
801
801
  };
802
802
  t(e);
803
- }, ie = (e) => {
804
- if (e?.id && (re.set(e.id, e), e.type === "row" && Array.isArray(e.columns)))
803
+ }, le = (e) => {
804
+ if (e?.id && (ae.set(e.id, e), e.type === "row" && Array.isArray(e.columns)))
805
805
  for (const t of e.columns) {
806
- t?.id && re.set(t.id, t);
806
+ t?.id && ae.set(t.id, t);
807
807
  const r = t.children ?? t.components ?? [];
808
- for (const n of r) ie(n);
808
+ for (const n of r) le(n);
809
809
  }
810
- }, st = (e) => {
811
- if (e?.id && (re.delete(e.id), e.type === "row" && Array.isArray(e.columns)))
810
+ }, it = (e) => {
811
+ if (e?.id && (ae.delete(e.id), e.type === "row" && Array.isArray(e.columns)))
812
812
  for (const t of e.columns) {
813
- t?.id && re.delete(t.id);
813
+ t?.id && ae.delete(t.id);
814
814
  const r = t.children ?? t.components ?? [];
815
- for (const n of r) st(n);
815
+ for (const n of r) it(n);
816
816
  }
817
- }, Sr = (e, t, r, n, o = n) => {
818
- re.size === 0 && Array.isArray(e.value) && e.value.length && tn(e.value);
819
- const i = (g, m = !1) => {
820
- let h;
821
- if (Array.isArray(g)) {
822
- if (g.reduce((k, A) => k + A, 0) !== 100) {
817
+ }, kr = (e, t, r, n, o = n) => {
818
+ ae.size === 0 && Array.isArray(e.value) && e.value.length && nn(e.value);
819
+ const i = (f, p = !1) => {
820
+ let g;
821
+ if (Array.isArray(f)) {
822
+ if (f.reduce((S, T) => S + T, 0) !== 100) {
823
823
  console.warn("Column widths must sum to 100%");
824
824
  return;
825
825
  }
826
- h = g;
826
+ g = f;
827
827
  } else {
828
- const k = Math.floor(100 / g);
829
- h = Array(g).fill(k), h[0] += 100 - h.reduce((A, f) => A + f, 0);
828
+ const S = Math.floor(100 / f);
829
+ g = Array(f).fill(S), g[0] += 100 - g.reduce((T, k) => T + k, 0);
830
830
  }
831
- const x = xn(), y = {
832
- id: `${K()}`,
831
+ const w = Cn(), $ = {
832
+ id: `${Y()}`,
833
833
  type: "row",
834
- name: x,
835
- columns: h.map((k, A) => ({
836
- id: `${K()}-${A}`,
837
- width: k,
834
+ name: w,
835
+ columns: g.map((S, T) => ({
836
+ id: `${Y()}-${T}`,
837
+ width: S,
838
838
  children: [],
839
839
  backgroundColor: "transparent",
840
840
  backgroundGradient: Fe("transparent"),
@@ -879,32 +879,32 @@ var _e = () => ({
879
879
  mobileStack: !0,
880
880
  visibility: _e()
881
881
  };
882
- e.value.push(y);
883
- const $ = e.value[e.value.length - 1];
884
- ie($), m || n("add-row");
885
- }, a = (g, m, h, x) => {
886
- const y = xe(e.value, g);
887
- if (!y?.columns) return;
888
- const $ = y.columns.find((N) => N.id === m);
889
- if (!$) return;
890
- let k;
891
- if (Array.isArray(h)) {
892
- if (h.reduce((N, F) => N + F, 0) !== 100) {
882
+ e.value.push($);
883
+ const v = e.value[e.value.length - 1];
884
+ le(v), p || n("add-row");
885
+ }, a = (f, p, g, w) => {
886
+ const $ = xe(e.value, f);
887
+ if (!$?.columns) return;
888
+ const v = $.columns.find((B) => B.id === p);
889
+ if (!v) return;
890
+ let S;
891
+ if (Array.isArray(g)) {
892
+ if (g.reduce((B, D) => B + D, 0) !== 100) {
893
893
  console.warn("[addNestedRow] Widths must sum to 100%");
894
894
  return;
895
895
  }
896
- k = h;
896
+ S = g;
897
897
  } else {
898
- const N = Math.floor(100 / h);
899
- k = Array(h).fill(N), k[0] += 100 - k.reduce((F, I) => F + I, 0);
898
+ const B = Math.floor(100 / g);
899
+ S = Array(g).fill(B), S[0] += 100 - S.reduce((D, I) => D + I, 0);
900
900
  }
901
- const A = {
902
- id: `${K()}`,
901
+ const T = {
902
+ id: `${Y()}`,
903
903
  type: "row",
904
- name: `nested_row_${K().slice(0, 4)}`,
905
- columns: k.map((N, F) => ({
906
- id: `${K()}-${F}`,
907
- width: N,
904
+ name: `nested_row_${Y().slice(0, 4)}`,
905
+ columns: S.map((B, D) => ({
906
+ id: `${Y()}-${D}`,
907
+ width: B,
908
908
  children: [],
909
909
  backgroundColor: "transparent",
910
910
  backgroundGradient: Fe("transparent"),
@@ -948,238 +948,238 @@ var _e = () => ({
948
948
  gap: 0,
949
949
  mobileStack: !0,
950
950
  visibility: _e()
951
- }, f = He($), B = x !== void 0 && x >= 0 && x <= f.length ? x : f.length;
952
- f.splice(B, 0, A);
953
- const z = f[B];
954
- ie(z), n("add-nested-row");
955
- }, l = (g) => {
956
- if (g == null) return null;
957
- const m = String(g), h = re.get(m);
958
- if (h && (h.type === "row" || h.type === "row-spacer")) return h;
959
- const x = xe(e.value, g);
960
- return x && re.set(m, x), x;
961
- }, c = (g) => {
962
- const m = e.value.findIndex((h) => h.id === g);
963
- if (m !== -1) {
964
- const [h] = e.value.splice(m, 1);
965
- st(h), n("delete-row");
951
+ }, k = He(v), M = w !== void 0 && w >= 0 && w <= k.length ? w : k.length;
952
+ k.splice(M, 0, T);
953
+ const O = k[M];
954
+ le(O), n("add-nested-row");
955
+ }, l = (f) => {
956
+ if (f == null) return null;
957
+ const p = String(f), g = ae.get(p);
958
+ if (g && (g.type === "row" || g.type === "row-spacer")) return g;
959
+ const w = xe(e.value, f);
960
+ return w && ae.set(p, w), w;
961
+ }, c = (f) => {
962
+ const p = e.value.findIndex((g) => g.id === f);
963
+ if (p !== -1) {
964
+ const [g] = e.value.splice(p, 1);
965
+ it(g), n("delete-row");
966
966
  return;
967
967
  }
968
- for (const h of e.value)
969
- if (h.columns)
970
- for (const x of h.columns) {
971
- const y = he(x), $ = ve(y, g);
972
- if ($) {
973
- const [k] = $.parentChildren.splice($.index, 1);
974
- st(k), n("delete-row");
968
+ for (const g of e.value)
969
+ if (g.columns)
970
+ for (const w of g.columns) {
971
+ const $ = he(w), v = ve($, f);
972
+ if (v) {
973
+ const [S] = v.parentChildren.splice(v.index, 1);
974
+ it(S), n("delete-row");
975
975
  return;
976
976
  }
977
977
  }
978
- }, p = (g, m) => {
979
- const h = e.value.findIndex((y) => y.id === g);
980
- if (h !== -1) {
981
- const y = m === "up" ? h - 1 : h + 1;
982
- if (y < 0 || y >= e.value.length) return;
983
- const [$] = e.value.splice(h, 1);
984
- e.value.splice(y, 0, $), n("move-row");
978
+ }, m = (f, p) => {
979
+ const g = e.value.findIndex(($) => $.id === f);
980
+ if (g !== -1) {
981
+ const $ = p === "up" ? g - 1 : g + 1;
982
+ if ($ < 0 || $ >= e.value.length) return;
983
+ const [v] = e.value.splice(g, 1);
984
+ e.value.splice($, 0, v), n("move-row");
985
985
  return;
986
986
  }
987
- const x = (y) => {
988
- const $ = y.findIndex((k) => k.id === g);
989
- if ($ !== -1) {
990
- const k = m === "up" ? $ - 1 : $ + 1;
991
- if (k < 0 || k >= y.length) return !0;
992
- const [A] = y.splice($, 1);
993
- return y.splice(k, 0, A), n("move-row"), !0;
987
+ const w = ($) => {
988
+ const v = $.findIndex((S) => S.id === f);
989
+ if (v !== -1) {
990
+ const S = p === "up" ? v - 1 : v + 1;
991
+ if (S < 0 || S >= $.length) return !0;
992
+ const [T] = $.splice(v, 1);
993
+ return $.splice(S, 0, T), n("move-row"), !0;
994
994
  }
995
- for (const k of y) if (k.type === "row" && k.columns) {
996
- for (const A of k.columns) if (x(A.children ?? A.components ?? [])) return !0;
995
+ for (const S of $) if (S.type === "row" && S.columns) {
996
+ for (const T of S.columns) if (w(T.children ?? T.components ?? [])) return !0;
997
997
  }
998
998
  return !1;
999
999
  };
1000
- for (const y of e.value)
1001
- if (y.columns) {
1002
- for (const $ of y.columns) if (x($.children ?? $.components ?? [])) return;
1000
+ for (const $ of e.value)
1001
+ if ($.columns) {
1002
+ for (const v of $.columns) if (w(v.children ?? v.components ?? [])) return;
1003
1003
  }
1004
- }, v = (g, m, h, x) => {
1005
- let y = null;
1006
- const $ = e.value.findIndex((k) => k.id === g);
1007
- if ($ !== -1 && (y = e.value.splice($, 1)[0]), !y) {
1008
- const k = (A) => {
1009
- const f = A.findIndex((B) => B.id === g);
1010
- if (f !== -1)
1011
- return y = A.splice(f, 1)[0], !0;
1012
- for (const B of A) if (B.type === "row" && B.columns) {
1013
- for (const z of B.columns) if (k(z.children ?? z.components ?? [])) return !0;
1004
+ }, b = (f, p, g, w) => {
1005
+ let $ = null;
1006
+ const v = e.value.findIndex((S) => S.id === f);
1007
+ if (v !== -1 && ($ = e.value.splice(v, 1)[0]), !$) {
1008
+ const S = (T) => {
1009
+ const k = T.findIndex((M) => M.id === f);
1010
+ if (k !== -1)
1011
+ return $ = T.splice(k, 1)[0], !0;
1012
+ for (const M of T) if (M.type === "row" && M.columns) {
1013
+ for (const O of M.columns) if (S(O.children ?? O.components ?? [])) return !0;
1014
1014
  }
1015
1015
  return !1;
1016
1016
  };
1017
- for (const A of e.value)
1018
- if (A.columns) {
1019
- for (const f of A.columns) if (k(f.children ?? f.components ?? [])) break;
1020
- if (y) break;
1017
+ for (const T of e.value)
1018
+ if (T.columns) {
1019
+ for (const k of T.columns) if (S(k.children ?? k.components ?? [])) break;
1020
+ if ($) break;
1021
1021
  }
1022
1022
  }
1023
- if (y) {
1024
- if (h === null) {
1025
- const k = Math.min(x, e.value.length);
1026
- e.value.splice(k, 0, y);
1023
+ if ($) {
1024
+ if (g === null) {
1025
+ const S = Math.min(w, e.value.length);
1026
+ e.value.splice(S, 0, $);
1027
1027
  } else {
1028
- const k = xe(e.value, m);
1029
- if (!k?.columns) {
1030
- e.value.push(y);
1028
+ const S = xe(e.value, p);
1029
+ if (!S?.columns) {
1030
+ e.value.push($);
1031
1031
  return;
1032
1032
  }
1033
- const A = k.columns.find((z) => z.id === h);
1034
- if (!A) {
1035
- e.value.push(y);
1033
+ const T = S.columns.find((O) => O.id === g);
1034
+ if (!T) {
1035
+ e.value.push($);
1036
1036
  return;
1037
1037
  }
1038
- const f = He(A), B = Math.min(x, f.length);
1039
- f.splice(B, 0, y);
1038
+ const k = He(T), M = Math.min(w, k.length);
1039
+ k.splice(M, 0, $);
1040
1040
  }
1041
1041
  n("move-nested-row");
1042
1042
  }
1043
- }, b = (g, m, h = !1) => {
1044
- if (g === m) return;
1045
- const x = e.value[g];
1046
- e.value.splice(g, 1), e.value.splice(m, 0, x), h || n("reorder-rows");
1047
- }, E = (g = !1) => {
1048
- const m = `spacer_${K().slice(0, 4)}`, h = {
1049
- id: `${K()}`,
1043
+ }, h = (f, p, g = !1) => {
1044
+ if (f === p) return;
1045
+ const w = e.value[f];
1046
+ e.value.splice(f, 1), e.value.splice(p, 0, w), g || n("reorder-rows");
1047
+ }, R = (f = !1) => {
1048
+ const p = `spacer_${Y().slice(0, 4)}`, g = {
1049
+ id: `${Y()}`,
1050
1050
  type: "row-spacer",
1051
- name: m,
1051
+ name: p,
1052
1052
  height: 20,
1053
1053
  backgroundColor: "transparent",
1054
1054
  backgroundGradient: Fe("transparent"),
1055
1055
  visibility: _e()
1056
1056
  };
1057
- e.value.push(h);
1058
- const x = e.value[e.value.length - 1];
1059
- ie(x), g || n("add-row-spacer");
1060
- }, w = (g) => {
1061
- const m = e.value.findIndex((h) => h.id === g);
1062
- if (m !== -1) {
1063
- const h = Qe(e.value[m], e.value);
1064
- e.value.splice(m + 1, 0, h);
1065
- const x = e.value[m + 1];
1066
- ie(x), n("duplicate-row");
1057
+ e.value.push(g);
1058
+ const w = e.value[e.value.length - 1];
1059
+ le(w), f || n("add-row-spacer");
1060
+ }, E = (f) => {
1061
+ const p = e.value.findIndex((g) => g.id === f);
1062
+ if (p !== -1) {
1063
+ const g = Xe(e.value[p], e.value);
1064
+ e.value.splice(p + 1, 0, g);
1065
+ const w = e.value[p + 1];
1066
+ le(w), n("duplicate-row");
1067
1067
  return;
1068
1068
  }
1069
- for (const h of e.value)
1070
- if (h.columns)
1071
- for (const x of h.columns) {
1072
- const y = he(x), $ = ve(y, g);
1073
- if ($) {
1074
- const k = Qe($.element, $.parentChildren);
1075
- $.parentChildren.splice($.index + 1, 0, k);
1076
- const A = $.parentChildren[$.index + 1];
1077
- ie(A), n("duplicate-row");
1069
+ for (const g of e.value)
1070
+ if (g.columns)
1071
+ for (const w of g.columns) {
1072
+ const $ = he(w), v = ve($, f);
1073
+ if (v) {
1074
+ const S = Xe(v.element, v.parentChildren);
1075
+ v.parentChildren.splice(v.index + 1, 0, S);
1076
+ const T = v.parentChildren[v.index + 1];
1077
+ le(T), n("duplicate-row");
1078
1078
  return;
1079
1079
  }
1080
1080
  }
1081
- }, R = (g) => {
1082
- const m = e.value.findIndex((h) => h.id === g);
1083
- if (m !== -1) {
1084
- const h = Qe(e.value[m], e.value);
1085
- e.value.splice(m + 1, 0, h);
1086
- const x = e.value[m + 1];
1087
- ie(x), n("duplicate-row-spacer");
1081
+ }, x = (f) => {
1082
+ const p = e.value.findIndex((g) => g.id === f);
1083
+ if (p !== -1) {
1084
+ const g = Xe(e.value[p], e.value);
1085
+ e.value.splice(p + 1, 0, g);
1086
+ const w = e.value[p + 1];
1087
+ le(w), n("duplicate-row-spacer");
1088
1088
  return;
1089
1089
  }
1090
- for (const h of e.value)
1091
- if (h.columns)
1092
- for (const x of h.columns) {
1093
- const y = he(x), $ = ve(y, g);
1094
- if ($) {
1095
- const k = Qe($.element, $.parentChildren);
1096
- $.parentChildren.splice($.index + 1, 0, k);
1097
- const A = $.parentChildren[$.index + 1];
1098
- ie(A), n("duplicate-row-spacer");
1090
+ for (const g of e.value)
1091
+ if (g.columns)
1092
+ for (const w of g.columns) {
1093
+ const $ = he(w), v = ve($, f);
1094
+ if (v) {
1095
+ const S = Xe(v.element, v.parentChildren);
1096
+ v.parentChildren.splice(v.index + 1, 0, S);
1097
+ const T = v.parentChildren[v.index + 1];
1098
+ le(T), n("duplicate-row-spacer");
1099
1099
  return;
1100
1100
  }
1101
1101
  }
1102
- }, M = (g, m, h) => {
1103
- const x = xe(e.value, g);
1104
- if (!x) return;
1105
- const y = x.columns.find((f) => f.id === m);
1106
- if (!y) return;
1107
- const $ = {
1108
- id: `${K()}`,
1102
+ }, N = (f, p, g) => {
1103
+ const w = xe(e.value, f);
1104
+ if (!w) return;
1105
+ const $ = w.columns.find((k) => k.id === p);
1106
+ if (!$) return;
1107
+ const v = {
1108
+ id: `${Y()}`,
1109
1109
  type: "component",
1110
- componentType: h,
1111
- props: JSON.parse(JSON.stringify(r[h]))
1112
- }, k = He(y);
1113
- k.push($);
1114
- const A = k[k.length - 1];
1115
- ie(A), t.value = A.id, n("add-component");
1116
- }, O = (g, m, h, x) => {
1117
- const y = xe(e.value, g);
1118
- if (!y) return;
1119
- const $ = y.columns.find((B) => B.id === m);
1110
+ componentType: g,
1111
+ props: JSON.parse(JSON.stringify(r[g]))
1112
+ }, S = He($);
1113
+ S.push(v);
1114
+ const T = S[S.length - 1];
1115
+ le(T), t.value = T.id, n("add-component");
1116
+ }, j = (f, p, g, w) => {
1117
+ const $ = xe(e.value, f);
1120
1118
  if (!$) return;
1121
- const k = {
1122
- id: `${K()}`,
1119
+ const v = $.columns.find((M) => M.id === p);
1120
+ if (!v) return;
1121
+ const S = {
1122
+ id: `${Y()}`,
1123
1123
  type: "component",
1124
- componentType: h,
1125
- props: JSON.parse(JSON.stringify(r[h]))
1126
- }, A = He($);
1127
- A.splice(x, 0, k);
1128
- const f = A[x];
1129
- ie(f), t.value = f.id, n("add-component");
1130
- }, u = (g) => {
1131
- for (const m of e.value)
1132
- if (m.columns)
1133
- for (const h of m.columns) {
1134
- const x = he(h), y = ve(x, g);
1135
- if (y) {
1136
- const [$] = y.parentChildren.splice(y.index, 1);
1137
- st($), t.value === g && (t.value = null), n("delete-component");
1124
+ componentType: g,
1125
+ props: JSON.parse(JSON.stringify(r[g]))
1126
+ }, T = He(v);
1127
+ T.splice(w, 0, S);
1128
+ const k = T[w];
1129
+ le(k), t.value = k.id, n("add-component");
1130
+ }, u = (f) => {
1131
+ for (const p of e.value)
1132
+ if (p.columns)
1133
+ for (const g of p.columns) {
1134
+ const w = he(g), $ = ve(w, f);
1135
+ if ($) {
1136
+ const [v] = $.parentChildren.splice($.index, 1);
1137
+ it(v), t.value === f && (t.value = null), n("delete-component");
1138
1138
  return;
1139
1139
  }
1140
1140
  }
1141
- }, d = (g, m) => {
1142
- for (const h of e.value)
1143
- if (h.columns)
1144
- for (const x of h.columns) {
1145
- const y = he(x), $ = ve(y, g);
1146
- if ($) {
1147
- const { parentChildren: k, index: A } = $, f = m === "up" ? A - 1 : A + 1;
1148
- if (f >= 0 && f < k.length) {
1149
- const [B] = k.splice(A, 1);
1150
- k.splice(f, 0, B), n("move-component");
1141
+ }, d = (f, p) => {
1142
+ for (const g of e.value)
1143
+ if (g.columns)
1144
+ for (const w of g.columns) {
1145
+ const $ = he(w), v = ve($, f);
1146
+ if (v) {
1147
+ const { parentChildren: S, index: T } = v, k = p === "up" ? T - 1 : T + 1;
1148
+ if (k >= 0 && k < S.length) {
1149
+ const [M] = S.splice(T, 1);
1150
+ S.splice(k, 0, M), n("move-component");
1151
1151
  }
1152
1152
  return;
1153
1153
  }
1154
1154
  }
1155
- }, s = (g, m, h, x) => {
1156
- let y = null;
1157
- for (const A of e.value)
1158
- if (A.columns) {
1159
- for (const f of A.columns) {
1160
- const B = he(f), z = ve(B, g);
1161
- if (z) {
1162
- y = z.element, z.parentChildren.splice(z.index, 1);
1155
+ }, s = (f, p, g, w) => {
1156
+ let $ = null;
1157
+ for (const T of e.value)
1158
+ if (T.columns) {
1159
+ for (const k of T.columns) {
1160
+ const M = he(k), O = ve(M, f);
1161
+ if (O) {
1162
+ $ = O.element, O.parentChildren.splice(O.index, 1);
1163
1163
  break;
1164
1164
  }
1165
1165
  }
1166
- if (y) break;
1166
+ if ($) break;
1167
1167
  }
1168
- if (!y) return;
1169
- const $ = xe(e.value, m);
1170
- if (!$ || !$.columns) return;
1171
- const k = $.columns.find((A) => A.id === h);
1172
- k && (He(k).splice(x, 0, y), n("move-component"));
1173
- }, S = (g) => {
1174
- if (g == null) return null;
1175
- const m = String(g), h = re.get(m);
1176
- if (h && h.type === "component") return h;
1177
- for (const x of e.value)
1178
- if (x.columns)
1179
- for (const y of x.columns) {
1180
- const $ = he(y), k = ve($, g);
1181
- if (k && k.element.type === "component")
1182
- return re.set(m, k.element), k.element;
1168
+ if (!$) return;
1169
+ const v = xe(e.value, p);
1170
+ if (!v || !v.columns) return;
1171
+ const S = v.columns.find((T) => T.id === g);
1172
+ S && (He(S).splice(w, 0, $), n("move-component"));
1173
+ }, y = (f) => {
1174
+ if (f == null) return null;
1175
+ const p = String(f), g = ae.get(p);
1176
+ if (g && g.type === "component") return g;
1177
+ for (const w of e.value)
1178
+ if (w.columns)
1179
+ for (const $ of w.columns) {
1180
+ const v = he($), S = ve(v, f);
1181
+ if (S && S.element.type === "component")
1182
+ return ae.set(p, S.element), S.element;
1183
1183
  }
1184
1184
  return null;
1185
1185
  };
@@ -1188,49 +1188,49 @@ var _e = () => ({
1188
1188
  addNestedRow: a,
1189
1189
  findRow: l,
1190
1190
  deleteRow: c,
1191
- moveRow: p,
1192
- moveNestedRow: v,
1193
- reorderRows: b,
1194
- addSpacer: E,
1195
- duplicateRow: w,
1196
- duplicateRowSpacer: R,
1197
- addComponent: M,
1198
- addComponentAtIndex: O,
1191
+ moveRow: m,
1192
+ moveNestedRow: b,
1193
+ reorderRows: h,
1194
+ addSpacer: R,
1195
+ duplicateRow: E,
1196
+ duplicateRowSpacer: x,
1197
+ addComponent: N,
1198
+ addComponentAtIndex: j,
1199
1199
  deleteComponent: u,
1200
1200
  moveComponent: d,
1201
1201
  moveComponentBetweenColumns: s,
1202
- findComponent: S,
1203
- updateComponent: (g, m) => {
1204
- const h = S(g);
1205
- h && (Object.assign(h.props, m), o("update-component"));
1202
+ findComponent: y,
1203
+ updateComponent: (f, p) => {
1204
+ const g = y(f);
1205
+ g && (Object.assign(g.props, p), o("update-component"));
1206
1206
  },
1207
- duplicateComponent: (g) => {
1208
- for (const m of e.value)
1209
- if (m.columns)
1210
- for (const h of m.columns) {
1211
- const x = he(h), y = ve(x, g);
1212
- if (y) {
1213
- const $ = yr(y.element);
1214
- y.parentChildren.splice(y.index + 1, 0, $);
1215
- const k = y.parentChildren[y.index + 1];
1216
- ie(k), t.value = k.id, n("duplicate-component");
1207
+ duplicateComponent: (f) => {
1208
+ for (const p of e.value)
1209
+ if (p.columns)
1210
+ for (const g of p.columns) {
1211
+ const w = he(g), $ = ve(w, f);
1212
+ if ($) {
1213
+ const v = Sr($.element);
1214
+ $.parentChildren.splice($.index + 1, 0, v);
1215
+ const S = $.parentChildren[$.index + 1];
1216
+ le(S), t.value = S.id, n("duplicate-component");
1217
1217
  return;
1218
1218
  }
1219
1219
  }
1220
1220
  },
1221
- rebuildIdRegistry: () => tn(e.value)
1221
+ rebuildIdRegistry: () => nn(e.value)
1222
1222
  };
1223
- }, Z = null, kr = 600, xt = (e) => JSON.parse(JSON.stringify(e)), wr = () => {
1224
- const t = L([]), r = L(-1), n = L(0), o = Ce(() => r.value > 0), i = Ce(() => r.value < t.value.length - 1), a = Ce(() => `${r.value + 1} / ${t.value.length}`), l = (E, w = "change", R = !1) => {
1225
- const M = () => {
1226
- Z = null, r.value < t.value.length - 1 && (t.value = t.value.slice(0, r.value + 1)), t.value.push({
1227
- state: xt(E),
1228
- action: w,
1223
+ }, ne = null, wr = 600, Ct = (e) => JSON.parse(JSON.stringify(e)), xr = () => {
1224
+ const t = L([]), r = L(-1), n = L(0), o = Ce(() => r.value > 0), i = Ce(() => r.value < t.value.length - 1), a = Ce(() => `${r.value + 1} / ${t.value.length}`), l = (R, E = "change", x = !1) => {
1225
+ const N = () => {
1226
+ ne = null, r.value < t.value.length - 1 && (t.value = t.value.slice(0, r.value + 1)), t.value.push({
1227
+ state: Ct(R),
1228
+ action: E,
1229
1229
  timestamp: Date.now()
1230
1230
  }), r.value++, t.value.length > 100 && (t.value.shift(), r.value--), n.value++;
1231
1231
  };
1232
- R ? (Z && (clearTimeout(Z), Z = null), M()) : (Z && clearTimeout(Z), Z = setTimeout(M, kr));
1233
- }, c = () => o.value ? (Z && (clearTimeout(Z), Z = null), r.value--, n.value++, xt(t.value[r.value].state)) : null, p = () => i.value ? (Z && (clearTimeout(Z), Z = null), r.value++, n.value++, xt(t.value[r.value].state)) : null, v = () => {
1232
+ x ? (ne && (clearTimeout(ne), ne = null), N()) : (ne && clearTimeout(ne), ne = setTimeout(N, wr));
1233
+ }, c = () => o.value ? (ne && (clearTimeout(ne), ne = null), r.value--, n.value++, Ct(t.value[r.value].state)) : null, m = () => i.value ? (ne && (clearTimeout(ne), ne = null), r.value++, n.value++, Ct(t.value[r.value].state)) : null, b = () => {
1234
1234
  t.value = [], r.value = -1, n.value++;
1235
1235
  };
1236
1236
  return {
@@ -1239,87 +1239,87 @@ var _e = () => ({
1239
1239
  historyStatus: a,
1240
1240
  saveState: l,
1241
1241
  undo: c,
1242
- redo: p,
1243
- clearHistory: v,
1244
- initHistory: (E) => {
1245
- v(), l(E, "initial");
1242
+ redo: m,
1243
+ clearHistory: b,
1244
+ initHistory: (R) => {
1245
+ b(), l(R, "initial");
1246
1246
  },
1247
1247
  version: n
1248
1248
  };
1249
- }, xr = () => {
1250
- const { saveState: e, undo: t, redo: r, canUndo: n, canRedo: o, historyStatus: i, initHistory: a, version: l } = wr();
1249
+ }, Cr = () => {
1250
+ const { saveState: e, undo: t, redo: r, canUndo: n, canRedo: o, historyStatus: i, initHistory: a, version: l } = xr();
1251
1251
  return {
1252
- getCurrentState: (R, M) => ({
1253
- rows: R.value,
1254
- canvasStyles: M.value
1252
+ getCurrentState: (x, N) => ({
1253
+ rows: x.value,
1254
+ canvasStyles: N.value
1255
1255
  }),
1256
- restoreState: (R, M, O, u, d, s) => {
1257
- if (!R) return;
1258
- M.value = R.rows, O.value = R.canvasStyles;
1259
- const S = /* @__PURE__ */ new Set(), C = (_) => {
1260
- for (const g of _)
1261
- if (g?.id && (S.add(String(g.id)), g.type === "row" && Array.isArray(g.columns)))
1262
- for (const m of g.columns)
1263
- m?.id && S.add(String(m.id)), C(m.children ?? m.components ?? []);
1256
+ restoreState: (x, N, j, u, d, s) => {
1257
+ if (!x) return;
1258
+ N.value = x.rows, j.value = x.canvasStyles;
1259
+ const y = /* @__PURE__ */ new Set(), C = (_) => {
1260
+ for (const f of _)
1261
+ if (f?.id && (y.add(String(f.id)), f.type === "row" && Array.isArray(f.columns)))
1262
+ for (const p of f.columns)
1263
+ p?.id && y.add(String(p.id)), C(p.children ?? p.components ?? []);
1264
1264
  };
1265
- if (C(R.rows), u.value && !S.has(String(u.value)) && (u.value = null), d.value && !S.has(String(d.value)) && (d.value = null), s.value) {
1266
- const { rowId: _, columnId: g } = s.value;
1267
- (!S.has(String(_)) || !S.has(String(g))) && (s.value = null);
1265
+ if (C(x.rows), u.value && !y.has(String(u.value)) && (u.value = null), d.value && !y.has(String(d.value)) && (d.value = null), s.value) {
1266
+ const { rowId: _, columnId: f } = s.value;
1267
+ (!y.has(String(_)) || !y.has(String(f))) && (s.value = null);
1268
1268
  }
1269
1269
  },
1270
- saveToHistory: (R, M = "change", O = !1) => {
1271
- e(R(), M, O);
1270
+ saveToHistory: (x, N = "change", j = !1) => {
1271
+ e(x(), N, j);
1272
1272
  },
1273
- undo: (R) => {
1274
- const M = t();
1275
- return M ? (R(M), M) : null;
1273
+ undo: (x) => {
1274
+ const N = t();
1275
+ return N ? (x(N), N) : null;
1276
1276
  },
1277
- redo: (R) => {
1278
- const M = r();
1279
- return M ? (R(M), M) : null;
1277
+ redo: (x) => {
1278
+ const N = r();
1279
+ return N ? (x(N), N) : null;
1280
1280
  },
1281
1281
  canUndo: n,
1282
1282
  canRedo: o,
1283
1283
  historyStatus: i,
1284
- initialize: (R) => {
1285
- a(R);
1284
+ initialize: (x) => {
1285
+ a(x);
1286
1286
  },
1287
1287
  version: l
1288
1288
  };
1289
- }, Cr = (e) => e == null, Lt = (e) => {
1289
+ }, _r = (e) => e == null, Pt = (e) => {
1290
1290
  if (!e || typeof e != "object") return !0;
1291
1291
  const t = e;
1292
1292
  return Array.isArray(t.rules) && t.rules.length > 0 ? !1 : t.enabled === !1 && t.match === "all" && t.rules.length === 0;
1293
- }, Cn = (e) => {
1293
+ }, _n = (e) => {
1294
1294
  if (!e || typeof e != "object") return !0;
1295
1295
  const t = e;
1296
1296
  return !t.sides && t.width === 0 && t.style === "solid" && t.color === "#000000" && (t.radius === void 0 || t.radius === 0);
1297
- }, qe = (e) => !e || typeof e != "object" ? !0 : e.useGradient === !1, nn = (e) => e === !1, _r = (e) => {
1297
+ }, qe = (e) => !e || typeof e != "object" ? !0 : e.useGradient === !1, rn = (e) => e === !1, Tr = (e) => {
1298
1298
  if (!e || typeof e != "object") return !0;
1299
1299
  const t = e;
1300
1300
  return t.top === 0 && t.right === 0 && t.bottom === 0 && t.left === 0;
1301
- }, pt = (e) => {
1301
+ }, dt = (e) => {
1302
1302
  if (!e || typeof e != "object") return !0;
1303
1303
  const t = e;
1304
1304
  return t.top === 0 && t.right === 0 && t.bottom === 0 && t.left === 0;
1305
- }, Tr = (e) => e === 0, Ar = (e) => e == null || e === "", Rr = (e) => {
1305
+ }, Ar = (e) => e === 0, Rr = (e) => e == null || e === "", Er = (e) => {
1306
1306
  if (!Array.isArray(e)) return;
1307
1307
  const t = e.filter((r) => !(r.enabled === !0 && r.link === ""));
1308
1308
  if (t.length !== 0)
1309
1309
  return t;
1310
- }, Er = (e) => {
1310
+ }, Mr = (e) => {
1311
1311
  const t = {};
1312
1312
  for (const [r, n] of Object.entries(e))
1313
- Cr(n) || r === "backgroundGradient" && qe(n) || (t[r] = n);
1313
+ _r(n) || r === "backgroundGradient" && qe(n) || (t[r] = n);
1314
1314
  return Object.keys(t).length > 0 ? t : void 0;
1315
- }, Mr = (e) => {
1315
+ }, Ir = (e) => {
1316
1316
  const t = { ...e.props };
1317
1317
  if (e.props.mobile && typeof e.props.mobile == "object") {
1318
- const r = Er(e.props.mobile);
1318
+ const r = Mr(e.props.mobile);
1319
1319
  r ? t.mobile = r : delete t.mobile;
1320
1320
  }
1321
- if (Lt(e.props.visibility) && delete t.visibility, nn(e.props.desktopHide) && delete t.desktopHide, nn(e.props.mobileHide) && delete t.mobileHide, _r(e.props.margin) && delete t.margin, pt(e.props.padding) && delete t.padding, qe(e.props.backgroundGradient) && delete t.backgroundGradient, Tr(e.props.letterSpacing) && delete t.letterSpacing, e.props.backgroundImage || (delete t.backgroundImage, delete t.backgroundSize, delete t.backgroundPosition, delete t.backgroundRepeat), "icon" in e.props && Ar(e.props.icon) && (delete t.icon, delete t.iconAlt, delete t.iconPosition, delete t.iconSize, delete t.iconGap), "platforms" in e.props) {
1322
- const r = Rr(e.props.platforms);
1321
+ if (Pt(e.props.visibility) && delete t.visibility, rn(e.props.desktopHide) && delete t.desktopHide, rn(e.props.mobileHide) && delete t.mobileHide, Tr(e.props.margin) && delete t.margin, dt(e.props.padding) && delete t.padding, qe(e.props.backgroundGradient) && delete t.backgroundGradient, Ar(e.props.letterSpacing) && delete t.letterSpacing, e.props.backgroundImage || (delete t.backgroundImage, delete t.backgroundSize, delete t.backgroundPosition, delete t.backgroundRepeat), "icon" in e.props && Rr(e.props.icon) && (delete t.icon, delete t.iconAlt, delete t.iconPosition, delete t.iconSize, delete t.iconGap), "platforms" in e.props) {
1322
+ const r = Er(e.props.platforms);
1323
1323
  r === void 0 ? delete t.platforms : t.platforms = r;
1324
1324
  }
1325
1325
  return {
@@ -1328,19 +1328,19 @@ var _e = () => ({
1328
1328
  ...e.componentType !== void 0 && { componentType: e.componentType },
1329
1329
  props: t
1330
1330
  };
1331
- }, Ir = (e) => e.type === "component" ? Mr(e) : _n(e), Nr = (e) => {
1331
+ }, Nr = (e) => e.type === "component" ? Ir(e) : Tn(e), Br = (e) => {
1332
1332
  const { id: t, width: r, children: n, components: o, ...i } = e, a = { ...i };
1333
- Cn(e.border) && delete a.border, qe(e.backgroundGradient) && delete a.backgroundGradient, pt(e.padding) && delete a.padding, e.backgroundImage || (delete a.backgroundImage, delete a.backgroundSize, delete a.backgroundPosition, delete a.backgroundRepeat);
1334
- const l = (n ?? o ?? []).map(Ir);
1333
+ _n(e.border) && delete a.border, qe(e.backgroundGradient) && delete a.backgroundGradient, dt(e.padding) && delete a.padding, e.backgroundImage || (delete a.backgroundImage, delete a.backgroundSize, delete a.backgroundPosition, delete a.backgroundRepeat);
1334
+ const l = (n ?? o ?? []).map(Nr);
1335
1335
  return {
1336
1336
  id: t,
1337
1337
  width: r,
1338
1338
  ...a,
1339
1339
  children: l
1340
1340
  };
1341
- }, Br = (e) => {
1341
+ }, Or = (e) => {
1342
1342
  const { id: t, type: r, ...n } = e, o = { ...n };
1343
- Lt(e.visibility) && delete o.visibility, qe(e.backgroundGradient) && delete o.backgroundGradient;
1343
+ Pt(e.visibility) && delete o.visibility, qe(e.backgroundGradient) && delete o.backgroundGradient;
1344
1344
  const { height: i, ...a } = o;
1345
1345
  return {
1346
1346
  id: t,
@@ -1348,20 +1348,20 @@ var _e = () => ({
1348
1348
  height: i,
1349
1349
  ...a
1350
1350
  };
1351
- }, _n = (e) => {
1352
- if (e.type === "row-spacer") return Br(e);
1351
+ }, Tn = (e) => {
1352
+ if (e.type === "row-spacer") return Or(e);
1353
1353
  const { id: t, type: r, name: n, columns: o, ...i } = e, a = { ...i };
1354
- return Lt(e.visibility) && delete a.visibility, Cn(e.border) && delete a.border, qe(e.backgroundGradient) && delete a.backgroundGradient, pt(e.padding) && delete a.padding, e.backgroundImage || (delete a.backgroundImage, delete a.backgroundSize, delete a.backgroundPosition, delete a.backgroundRepeat), e.minHeight === 0 && delete a.minHeight, {
1354
+ return Pt(e.visibility) && delete a.visibility, _n(e.border) && delete a.border, qe(e.backgroundGradient) && delete a.backgroundGradient, dt(e.padding) && delete a.padding, e.backgroundImage || (delete a.backgroundImage, delete a.backgroundSize, delete a.backgroundPosition, delete a.backgroundRepeat), e.minHeight === 0 && delete a.minHeight, {
1355
1355
  id: t,
1356
1356
  type: r,
1357
1357
  ...n !== void 0 && { name: n },
1358
1358
  ...a,
1359
- columns: o?.map(Nr)
1359
+ columns: o?.map(Br)
1360
1360
  };
1361
- }, Tn = (e) => {
1361
+ }, An = (e) => {
1362
1362
  const t = { ...e };
1363
- return e.bodyBackgroundImage || (delete t.bodyBackgroundImage, delete t.bodyBackgroundSize, delete t.bodyBackgroundPosition, delete t.bodyBackgroundRepeat), pt(e.padding) && delete t.padding, t;
1364
- }, An = (e) => e.map(_n), Or = {
1363
+ return e.bodyBackgroundImage || (delete t.bodyBackgroundImage, delete t.bodyBackgroundSize, delete t.bodyBackgroundPosition, delete t.bodyBackgroundRepeat), dt(e.padding) && delete t.padding, t;
1364
+ }, Rn = (e) => e.map(Tn), jr = {
1365
1365
  backgroundColor: "#ffffff",
1366
1366
  backgroundGradient: {
1367
1367
  useGradient: !1,
@@ -1398,7 +1398,7 @@ var _e = () => ({
1398
1398
  gap: 12,
1399
1399
  mobileStack: !0,
1400
1400
  visibility: _e()
1401
- }, jr = {
1401
+ }, zr = {
1402
1402
  backgroundColor: "transparent",
1403
1403
  backgroundGradient: {
1404
1404
  useGradient: !1,
@@ -1416,7 +1416,7 @@ var _e = () => ({
1416
1416
  }
1417
1417
  },
1418
1418
  visibility: _e()
1419
- }, zr = {
1419
+ }, Lr = {
1420
1420
  backgroundColor: "transparent",
1421
1421
  backgroundGradient: {
1422
1422
  useGradient: !1,
@@ -1450,7 +1450,7 @@ var _e = () => ({
1450
1450
  radius: 0
1451
1451
  },
1452
1452
  verticalAlign: "top"
1453
- }, Lr = {
1453
+ }, Pr = {
1454
1454
  language: "en-US",
1455
1455
  preheaderText: "View this email in your browser",
1456
1456
  bodyBackgroundColor: "#f9fafb",
@@ -1467,22 +1467,22 @@ var _e = () => ({
1467
1467
  left: 0
1468
1468
  },
1469
1469
  mobileBreakpoint: 600
1470
- }, Pr = (e) => JSON.parse(JSON.stringify(e)), je = (e, t) => {
1471
- const r = Pr(e);
1470
+ }, Dr = (e) => JSON.parse(JSON.stringify(e)), je = (e, t) => {
1471
+ const r = Dr(e);
1472
1472
  for (const n of Object.keys(t)) {
1473
1473
  const o = t[n], i = e[n];
1474
1474
  o != null && (typeof o == "object" && !Array.isArray(o) && typeof i == "object" && i !== null && !Array.isArray(i) ? r[n] = je(i, o) : r[n] = o);
1475
1475
  }
1476
1476
  return r;
1477
- }, rn = (e) => {
1478
- const { defaultProps: t } = jt(), r = e.componentType ?? e.type, n = t[r];
1477
+ }, on = (e) => {
1478
+ const { defaultProps: t } = zt(), r = e.componentType ?? e.type, n = t[r];
1479
1479
  if (!n)
1480
1480
  return console.warn(`[Hydrator] Unknown component type "${r}" — skipping hydration.`), e;
1481
1481
  const o = je(n, e.props);
1482
1482
  if (n.mobile && typeof n.mobile == "object" && (o.mobile = {
1483
1483
  ...n.mobile,
1484
1484
  ...o.mobile ?? {}
1485
- }, o.mobile && !o.mobile.backgroundGradient && (o.mobile.backgroundGradient = n.mobile.backgroundGradient)), o.visibility = o.visibility ?? _e(), o.desktopHide = o.desktopHide ?? Et().desktopHide, o.mobileHide = o.mobileHide ?? Et().mobileHide, o.margin === void 0 && n.margin && (o.margin = { ...n.margin }), o.padding === void 0 && n.padding && (o.padding = { ...n.padding }), o.letterSpacing === void 0 && n.letterSpacing !== void 0 && (o.letterSpacing = n.letterSpacing), o.backgroundGradient) {
1485
+ }, o.mobile && !o.mobile.backgroundGradient && (o.mobile.backgroundGradient = n.mobile.backgroundGradient)), o.visibility = o.visibility ?? _e(), o.desktopHide = o.desktopHide ?? Mt().desktopHide, o.mobileHide = o.mobileHide ?? Mt().mobileHide, o.margin === void 0 && n.margin && (o.margin = { ...n.margin }), o.padding === void 0 && n.padding && (o.padding = { ...n.padding }), o.letterSpacing === void 0 && n.letterSpacing !== void 0 && (o.letterSpacing = n.letterSpacing), o.backgroundGradient) {
1486
1486
  const i = o.backgroundColor;
1487
1487
  i && (o.backgroundGradient.solid = i);
1488
1488
  }
@@ -1492,36 +1492,36 @@ var _e = () => ({
1492
1492
  componentType: r,
1493
1493
  props: o
1494
1494
  };
1495
- }, Dr = (e) => {
1496
- if (e.type === "component") return rn(e);
1497
- const { defaultProps: t } = jt();
1498
- return e.type in t ? rn({
1495
+ }, Fr = (e) => {
1496
+ if (e.type === "component") return on(e);
1497
+ const { defaultProps: t } = zt();
1498
+ return e.type in t ? on({
1499
1499
  ...e,
1500
1500
  type: "component",
1501
1501
  componentType: e.type
1502
- }) : Rn(e);
1503
- }, Fr = (e) => {
1504
- const t = e.children ?? e.components ?? [], { components: r, children: n, ...o } = e, i = e.backgroundColor !== void 0 || e.backgroundGradient !== void 0 || e.backgroundImage !== void 0, { backgroundColor: a, backgroundGradient: l, ...c } = zr;
1505
- let p = je(c, o);
1506
- return i ? (p.backgroundColor = e.backgroundColor, p.backgroundGradient = e.backgroundGradient) : (p.backgroundColor = a, p.backgroundGradient = l), e.backgroundImage || (p.backgroundImage = "", p.backgroundSize = "cover", p.backgroundPosition = "center center", p.backgroundRepeat = "no-repeat"), {
1507
- ...p,
1508
- children: t.map(Dr)
1509
- };
1502
+ }) : En(e);
1510
1503
  }, Hr = (e) => {
1511
- const t = je(jr, e);
1504
+ const t = e.children ?? e.components ?? [], { components: r, children: n, ...o } = e, i = e.backgroundColor !== void 0 || e.backgroundGradient !== void 0 || e.backgroundImage !== void 0, { backgroundColor: a, backgroundGradient: l, ...c } = Lr;
1505
+ let m = je(c, o);
1506
+ return i ? (m.backgroundColor = e.backgroundColor, m.backgroundGradient = e.backgroundGradient) : (m.backgroundColor = a, m.backgroundGradient = l), e.backgroundImage || (m.backgroundImage = "", m.backgroundSize = "cover", m.backgroundPosition = "center center", m.backgroundRepeat = "no-repeat"), {
1507
+ ...m,
1508
+ children: t.map(Fr)
1509
+ };
1510
+ }, Ur = (e) => {
1511
+ const t = je(zr, e);
1512
1512
  return t.backgroundColor === void 0 && (t.backgroundColor = "transparent"), t;
1513
- }, Rn = (e) => {
1514
- if (e.type === "row-spacer") return Hr(e);
1515
- const { columns: t, ...r } = e, n = e.backgroundColor !== void 0 || e.backgroundGradient !== void 0 || e.backgroundImage !== void 0, { backgroundColor: o, backgroundGradient: i, ...a } = Or;
1513
+ }, En = (e) => {
1514
+ if (e.type === "row-spacer") return Ur(e);
1515
+ const { columns: t, ...r } = e, n = e.backgroundColor !== void 0 || e.backgroundGradient !== void 0 || e.backgroundImage !== void 0, { backgroundColor: o, backgroundGradient: i, ...a } = jr;
1516
1516
  let l = je(a, r);
1517
- return n ? (l.backgroundColor = e.backgroundColor, l.backgroundGradient = e.backgroundGradient) : (l.backgroundColor = o, l.backgroundGradient = i), e.backgroundImage || (l.backgroundImage = "", l.backgroundSize = "cover", l.backgroundPosition = "center center", l.backgroundRepeat = "no-repeat"), l.minHeight === void 0 && (l.minHeight = 0), Array.isArray(t) && (l.columns = t.map(Fr)), l;
1518
- }, ct = (e) => {
1519
- const t = je(Lr, e);
1517
+ return n ? (l.backgroundColor = e.backgroundColor, l.backgroundGradient = e.backgroundGradient) : (l.backgroundColor = o, l.backgroundGradient = i), e.backgroundImage || (l.backgroundImage = "", l.backgroundSize = "cover", l.backgroundPosition = "center center", l.backgroundRepeat = "no-repeat"), l.minHeight === void 0 && (l.minHeight = 0), Array.isArray(t) && (l.columns = t.map(Hr)), l;
1518
+ }, lt = (e) => {
1519
+ const t = je(Pr, e);
1520
1520
  return e.bodyBackgroundImage || (t.bodyBackgroundImage = "", t.bodyBackgroundSize = "cover", t.bodyBackgroundPosition = "center center", t.bodyBackgroundRepeat = "no-repeat"), t;
1521
- }, ut = (e) => e.map(Rn), ge = "maildeno:autosave", Mt = "1.0", on = (e, t, r = null, n, o) => {
1521
+ }, ct = (e) => e.map(En), ge = "maildeno:autosave", It = "1.0", an = (e, t, r = null, n, o) => {
1522
1522
  const i = Date.now();
1523
1523
  return {
1524
- schemaVersion: Mt,
1524
+ schemaVersion: It,
1525
1525
  templateId: r,
1526
1526
  expiresAt: i + 2592e6,
1527
1527
  touchedAt: i,
@@ -1529,33 +1529,33 @@ var _e = () => ({
1529
1529
  ...n !== void 0 && { name: n },
1530
1530
  ...o !== void 0 && { tags: o },
1531
1531
  content: {
1532
- rows: An(e),
1533
- canvas: Tn(t)
1532
+ rows: Rn(e),
1533
+ canvas: An(t)
1534
1534
  }
1535
1535
  };
1536
- }, Ct = null, Ur = () => {
1536
+ }, _t = null, Jr = () => {
1537
1537
  const e = L("idle"), t = L(null);
1538
1538
  return {
1539
- saveToLocal: (l, c, p = null, v, b) => {
1539
+ saveToLocal: (l, c, m = null, b, h) => {
1540
1540
  e.value = "saving";
1541
- const E = () => {
1541
+ const R = () => {
1542
1542
  try {
1543
- const w = on(l, c, p, v, b);
1544
- localStorage.setItem(ge, JSON.stringify(w)), t.value = /* @__PURE__ */ new Date(), Ct && clearTimeout(Ct), e.value = "saved", Ct = setTimeout(() => {
1543
+ const E = an(l, c, m, b, h);
1544
+ localStorage.setItem(ge, JSON.stringify(E)), t.value = /* @__PURE__ */ new Date(), _t && clearTimeout(_t), e.value = "saved", _t = setTimeout(() => {
1545
1545
  e.value = "idle";
1546
1546
  }, 2500);
1547
- } catch (w) {
1548
- console.error("[AutoSave] Failed to write to localStorage:", w), e.value = "error", setTimeout(() => {
1547
+ } catch (E) {
1548
+ console.error("[AutoSave] Failed to write to localStorage:", E), e.value = "error", setTimeout(() => {
1549
1549
  e.value = "idle";
1550
1550
  }, 3e3);
1551
1551
  }
1552
1552
  };
1553
- typeof window < "u" && "requestIdleCallback" in window ? window.requestIdleCallback(E, { timeout: 2e3 }) : setTimeout(E, 0);
1553
+ typeof window < "u" && "requestIdleCallback" in window ? window.requestIdleCallback(R, { timeout: 2e3 }) : setTimeout(R, 0);
1554
1554
  },
1555
- flushSave: (l, c, p = null, v, b) => {
1555
+ flushSave: (l, c, m = null, b, h) => {
1556
1556
  try {
1557
- const E = on(l, c, p, v, b);
1558
- localStorage.setItem(ge, JSON.stringify(E)), t.value = /* @__PURE__ */ new Date();
1557
+ const R = an(l, c, m, b, h);
1558
+ localStorage.setItem(ge, JSON.stringify(R)), t.value = /* @__PURE__ */ new Date();
1559
1559
  } catch {
1560
1560
  }
1561
1561
  },
@@ -1564,9 +1564,9 @@ var _e = () => ({
1564
1564
  const l = localStorage.getItem(ge);
1565
1565
  if (!l) return null;
1566
1566
  const c = JSON.parse(l);
1567
- return c.schemaVersion !== Mt ? (console.warn(`[AutoSave] Schema mismatch (stored=${c.schemaVersion}, current=${Mt}). Discarding.`), localStorage.removeItem(ge), null) : Date.now() > c.expiresAt ? (console.info("[AutoSave] Draft expired. Clearing."), localStorage.removeItem(ge), null) : !c.content?.rows || !c.content?.canvas || !Array.isArray(c.content.rows) ? (console.warn("[AutoSave] Malformed payload. Discarding."), localStorage.removeItem(ge), null) : {
1568
- rows: ut(c.content.rows),
1569
- canvas: ct(c.content.canvas),
1567
+ return c.schemaVersion !== It ? (console.warn(`[AutoSave] Schema mismatch (stored=${c.schemaVersion}, current=${It}). Discarding.`), localStorage.removeItem(ge), null) : Date.now() > c.expiresAt ? (console.info("[AutoSave] Draft expired. Clearing."), localStorage.removeItem(ge), null) : !c.content?.rows || !c.content?.canvas || !Array.isArray(c.content.rows) ? (console.warn("[AutoSave] Malformed payload. Discarding."), localStorage.removeItem(ge), null) : {
1568
+ rows: ct(c.content.rows),
1569
+ canvas: lt(c.content.canvas),
1570
1570
  updatedAt: c.updatedAt,
1571
1571
  templateId: c.templateId ?? null,
1572
1572
  ...c.name !== void 0 && { name: c.name },
@@ -1583,8 +1583,8 @@ var _e = () => ({
1583
1583
  try {
1584
1584
  const c = localStorage.getItem(ge);
1585
1585
  if (!c) return !1;
1586
- const p = JSON.parse(c);
1587
- return !(Date.now() > p.expiresAt || l !== void 0 && p.templateId !== l);
1586
+ const m = JSON.parse(c);
1587
+ return !(Date.now() > m.expiresAt || l !== void 0 && m.templateId !== l);
1588
1588
  } catch {
1589
1589
  return !1;
1590
1590
  }
@@ -1592,12 +1592,12 @@ var _e = () => ({
1592
1592
  saveStatus: e,
1593
1593
  lastSaved: t
1594
1594
  };
1595
- }, Pt = (e) => !e || /\{\{.*?\}\}/.test(e) || /^(https?:\/\/|mailto:|tel:)/i.test(e) ? e : `https://${e}`, Dt = (e) => e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;"), Ft = (e) => e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), Jr = (e) => {
1595
+ }, Dt = (e) => !e || /\{\{.*?\}\}/.test(e) || /^(https?:\/\/|mailto:|tel:)/i.test(e) ? e : `https://${e}`, Ft = (e) => e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;"), Ht = (e) => e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), Gr = (e) => {
1596
1596
  if (e == null) return "";
1597
1597
  const t = String(e);
1598
1598
  return t.indexOf("&quot;") === -1 ? t : t.replace(/style="([^"]*)"/g, (r, n) => `style="${n.replace(/&quot;/g, "'")}"`);
1599
- }, Ht = /* @__PURE__ */ new Map();
1600
- function aa(e, t) {
1599
+ }, Ut = /* @__PURE__ */ new Map();
1600
+ function ia(e, t) {
1601
1601
  const r = typeof e == "string" ? t : e;
1602
1602
  if (!r) {
1603
1603
  console.error("[maildeno-editor] registerBlock was called without a definition.");
@@ -1608,25 +1608,25 @@ function aa(e, t) {
1608
1608
  console.error("[maildeno-editor] registerBlock needs a name — either as the first argument or as `name` on the definition.");
1609
1609
  return;
1610
1610
  }
1611
- Ht.set(n, {
1611
+ Ut.set(n, {
1612
1612
  ...r,
1613
1613
  name: n
1614
1614
  });
1615
1615
  }
1616
- function Ut(e) {
1617
- return Ht.get(e);
1616
+ function Jt(e) {
1617
+ return Ut.get(e);
1618
1618
  }
1619
- function ia() {
1620
- return Ht;
1619
+ function sa() {
1620
+ return Ut;
1621
1621
  }
1622
- var Gr = () => {
1622
+ var qr = () => {
1623
1623
  const e = (n, o) => {
1624
1624
  if (!(n?.useGradient === !0 && Array.isArray(n?.gradient?.colors) && n.gradient.colors.length >= 2)) {
1625
- const b = n && typeof n == "object" && n.solid ? n.solid : o;
1626
- return !b || b === "transparent" ? "" : `background-color:${b};`;
1625
+ const h = n && typeof n == "object" && n.solid ? n.solid : o;
1626
+ return !h || h === "transparent" ? "" : `background-color:${h};`;
1627
1627
  }
1628
- const { type: i, direction: a, colors: l } = n.gradient, c = l.map((b) => `${b.color} ${b.position}%`).join(", "), p = i === "radial" ? `radial-gradient(circle at center, ${c})` : `linear-gradient(${a}, ${c})`, v = n.solid || o || "";
1629
- return `${v && v !== "transparent" ? `background-color:${v};` : ""}background:${p};`;
1628
+ const { type: i, direction: a, colors: l } = n.gradient, c = l.map((h) => `${h.color} ${h.position}%`).join(", "), m = i === "radial" ? `radial-gradient(circle at center, ${c})` : `linear-gradient(${a}, ${c})`, b = n.solid || o || "";
1629
+ return `${b && b !== "transparent" ? `background-color:${b};` : ""}background:${m};`;
1630
1630
  }, t = (n, o) => n?.useGradient === !0 && Array.isArray(n?.gradient?.colors) && n.gradient.colors.length >= 2 ? {
1631
1631
  vmlOpen: `
1632
1632
  <!--[if mso]>
@@ -1647,111 +1647,111 @@ var Gr = () => {
1647
1647
  return { generateHTMLComponent: (n) => {
1648
1648
  const o = n.componentType ?? n.type, { props: i } = n;
1649
1649
  let a = "";
1650
- const l = `eb-${n.id}`, c = i.margin ? `margin:${i.margin?.top ?? 0}px ${i.margin?.right ?? 0}px ${i.margin?.bottom ?? 0}px ${i.margin?.left ?? 0}px;` : "", p = i.padding ? `padding:${i.padding?.top ?? 0}px ${i.padding?.right ?? 0}px ${i.padding?.bottom ?? 0}px ${i.padding?.left ?? 0}px;` : "", v = (E, w, R) => {
1651
- const M = [R ? `${l}-${R}` : l];
1652
- return E && M.push("desktop-hide"), w && M.push("mobile-hide"), M.join(" ");
1653
- }, b = Ut(o);
1654
- return b ? b.renderEmail.html(i, {
1650
+ const l = `eb-${n.id}`, c = i.margin ? `margin:${i.margin?.top ?? 0}px ${i.margin?.right ?? 0}px ${i.margin?.bottom ?? 0}px ${i.margin?.left ?? 0}px;` : "", m = i.padding ? `padding:${i.padding?.top ?? 0}px ${i.padding?.right ?? 0}px ${i.padding?.bottom ?? 0}px ${i.padding?.left ?? 0}px;` : "", b = (R, E, x) => {
1651
+ const N = [x ? `${l}-${x}` : l];
1652
+ return R && N.push("desktop-hide"), E && N.push("mobile-hide"), N.join(" ");
1653
+ }, h = Jt(o);
1654
+ return h ? h.renderEmail.html(i, {
1655
1655
  uid: l,
1656
1656
  marginStyle: c,
1657
- paddingStyle: p,
1658
- escapeHtml: Dt,
1659
- escapeAttr: Ft,
1660
- safeUrl: Pt,
1657
+ paddingStyle: m,
1658
+ escapeHtml: Ft,
1659
+ escapeAttr: Ht,
1660
+ safeUrl: Dt,
1661
1661
  resolveBgCss: e,
1662
1662
  resolveBgVml: t,
1663
- getResponsiveClasses: v,
1663
+ getResponsiveClasses: b,
1664
1664
  react: null
1665
1665
  }) : a;
1666
1666
  } };
1667
- }, En = (e) => e.replace(/<br\s*\/?>/gi, "<br />"), mt = (e) => e.split(",").map((t) => t.trim().replace(/^'+|'+$/g, "").trim()).join(", "), Mn = (e) => e.replace(/font-family\s*:\s*([^;]+)/gi, (t, r) => `font-family:${mt(r)}`), qr = (e) => e.trim().replace(/-([a-z])/g, (t, r) => r.toUpperCase()), Wr = (e) => e.split(";").map((t) => t.trim()).filter(Boolean).map((t) => {
1667
+ }, Mn = (e) => e.replace(/<br\s*\/?>/gi, "<br />"), pt = (e) => e.split(",").map((t) => t.trim().replace(/^'+|'+$/g, "").trim()).join(", "), In = (e) => e.replace(/font-family\s*:\s*([^;]+)/gi, (t, r) => `font-family:${pt(r)}`), Wr = (e) => e.trim().replace(/-([a-z])/g, (t, r) => r.toUpperCase()), Vr = (e) => e.split(";").map((t) => t.trim()).filter(Boolean).map((t) => {
1668
1668
  const r = t.indexOf(":");
1669
1669
  if (r < 0) return null;
1670
- const n = t.slice(0, r).trim(), o = t.slice(r + 1).trim(), i = n.toLowerCase() === "font-family" ? mt(o) : Mn(o);
1671
- return `${qr(n)}: "${i}"`;
1672
- }).filter((t) => t !== null).join(", "), Vr = (e) => e.replace(/\bcontenteditable\s*=\s*(["']?)([^"'\s>]+)\1/gi, (t, r, n) => {
1670
+ const n = t.slice(0, r).trim(), o = t.slice(r + 1).trim(), i = n.toLowerCase() === "font-family" ? pt(o) : In(o);
1671
+ return `${Wr(n)}: "${i}"`;
1672
+ }).filter((t) => t !== null).join(", "), Kr = (e) => e.replace(/\bcontenteditable\s*=\s*(["']?)([^"'\s>]+)\1/gi, (t, r, n) => {
1673
1673
  const o = n.toLowerCase();
1674
1674
  return o === "true" || o === "false" ? `contentEditable={${o}}` : `contentEditable="${n}"`;
1675
- }), Kr = (e) => {
1676
- let t = Jr(e);
1677
- return t = En(t), t = Vr(t), t = t.replace(/\bstyle="([^"]*)"/g, (r, n) => `style={{ ${Wr(n)} }}`), t;
1678
- }, Yr = () => {
1675
+ }), Yr = (e) => {
1676
+ let t = Gr(e);
1677
+ return t = Mn(t), t = Kr(t), t = t.replace(/\bstyle="([^"]*)"/g, (r, n) => `style={{ ${Vr(n)} }}`), t;
1678
+ }, Xr = () => {
1679
1679
  const e = (r, n) => {
1680
1680
  if (!(r?.useGradient === !0 && Array.isArray(r?.gradient?.colors) && r.gradient.colors.length >= 2)) {
1681
- const v = r && typeof r == "object" && r.solid ? r.solid : n;
1682
- return !v || v === "transparent" ? "" : `background-color:${v};`;
1681
+ const b = r && typeof r == "object" && r.solid ? r.solid : n;
1682
+ return !b || b === "transparent" ? "" : `background-color:${b};`;
1683
1683
  }
1684
- const { type: o, direction: i, colors: a } = r.gradient, l = a.map((v) => `${v.color} ${v.position}%`).join(", "), c = o === "radial" ? `radial-gradient(circle at center, ${l})` : `linear-gradient(${i}, ${l})`, p = r.solid || n || "";
1685
- return `${p && p !== "transparent" ? `background-color:${p};` : ""}background:${c};`;
1684
+ const { type: o, direction: i, colors: a } = r.gradient, l = a.map((b) => `${b.color} ${b.position}%`).join(", "), c = o === "radial" ? `radial-gradient(circle at center, ${l})` : `linear-gradient(${i}, ${l})`, m = r.solid || n || "";
1685
+ return `${m && m !== "transparent" ? `background-color:${m};` : ""}background:${c};`;
1686
1686
  };
1687
1687
  return { generateReactEmailComponent: (r) => {
1688
1688
  const n = r.componentType ?? r.type, { props: o } = r;
1689
1689
  let i = "";
1690
- const a = `eb-${r.id}`, l = o.margin ? `margin:${o.margin?.top ?? 0}px ${o.margin?.right ?? 0}px ${o.margin?.bottom ?? 0}px ${o.margin?.left ?? 0}px;` : "", c = o.padding ? `padding:${o.padding?.top ?? 0}px ${o.padding?.right ?? 0}px ${o.padding?.bottom ?? 0}px ${o.padding?.left ?? 0}px;` : "", p = (E, w) => E?.useGradient === !0 && Array.isArray(E?.gradient?.colors) && E.gradient.colors.length >= 2 ? {
1690
+ const a = `eb-${r.id}`, l = o.margin ? `margin:${o.margin?.top ?? 0}px ${o.margin?.right ?? 0}px ${o.margin?.bottom ?? 0}px ${o.margin?.left ?? 0}px;` : "", c = o.padding ? `padding:${o.padding?.top ?? 0}px ${o.padding?.right ?? 0}px ${o.padding?.bottom ?? 0}px ${o.padding?.left ?? 0}px;` : "", m = (R, E) => R?.useGradient === !0 && Array.isArray(R?.gradient?.colors) && R.gradient.colors.length >= 2 ? {
1691
1691
  vmlOpen: "",
1692
1692
  vmlClose: ""
1693
1693
  } : {
1694
1694
  vmlOpen: "",
1695
1695
  vmlClose: ""
1696
- }, v = (E, w, R) => {
1697
- const M = [R ? `${a}-${R}` : a];
1698
- return E && M.push("desktop-hide"), w && M.push("mobile-hide"), M.join(" ");
1699
- }, b = Ut(n);
1700
- return b ? b.renderEmail.reactEmail(o, {
1696
+ }, b = (R, E, x) => {
1697
+ const N = [x ? `${a}-${x}` : a];
1698
+ return R && N.push("desktop-hide"), E && N.push("mobile-hide"), N.join(" ");
1699
+ }, h = Jt(n);
1700
+ return h ? h.renderEmail.reactEmail(o, {
1701
1701
  uid: a,
1702
1702
  marginStyle: l,
1703
1703
  paddingStyle: c,
1704
- escapeHtml: Dt,
1705
- escapeAttr: Ft,
1706
- safeUrl: Pt,
1704
+ escapeHtml: Ft,
1705
+ escapeAttr: Ht,
1706
+ safeUrl: Dt,
1707
1707
  resolveBgCss: e,
1708
- resolveBgVml: p,
1709
- getResponsiveClasses: v,
1708
+ resolveBgVml: m,
1709
+ getResponsiveClasses: b,
1710
1710
  react: {
1711
- parseCssString: Xr,
1712
- parseMarginPaddingDiscrete: Qr,
1713
- normalizeFontFamily: mt,
1714
- styleObj: In,
1715
- normalizeInlineStylesToReact: Kr,
1716
- buildInlineJsx: Zr
1711
+ parseCssString: Qr,
1712
+ parseMarginPaddingDiscrete: Zr,
1713
+ normalizeFontFamily: pt,
1714
+ styleObj: Nn,
1715
+ normalizeInlineStylesToReact: Yr,
1716
+ buildInlineJsx: eo
1717
1717
  }
1718
1718
  }) : i;
1719
1719
  } };
1720
1720
  };
1721
- function Xr(e) {
1721
+ function Qr(e) {
1722
1722
  const t = {};
1723
1723
  return e.split(";").map((r) => r.trim()).filter(Boolean).forEach((r) => {
1724
1724
  const n = r.indexOf(":");
1725
1725
  if (n < 0) return;
1726
1726
  const o = r.slice(0, n).trim(), i = r.slice(n + 1).trim(), a = o.replace(/-([a-z])/g, (l, c) => c.toUpperCase());
1727
- t[a] = Mn(i);
1727
+ t[a] = In(i);
1728
1728
  }), t;
1729
1729
  }
1730
- function Qr(e, t) {
1730
+ function Zr(e, t) {
1731
1731
  const r = {};
1732
1732
  return e && (r.marginTop = `${e?.top ?? 0}px`, r.marginRight = `${e?.right ?? 0}px`, r.marginBottom = `${e?.bottom ?? 0}px`, r.marginLeft = `${e?.left ?? 0}px`), t && (r.paddingTop = `${t?.top ?? 0}px`, r.paddingRight = `${t?.right ?? 0}px`, r.paddingBottom = `${t?.bottom ?? 0}px`, r.paddingLeft = `${t?.left ?? 0}px`), r;
1733
1733
  }
1734
- function In(e) {
1734
+ function Nn(e) {
1735
1735
  return Object.entries(e).filter(([, t]) => t != null && t !== "").map(([t, r]) => `${t}: "${r}"`).join(", ");
1736
1736
  }
1737
- function Zr(e, t, r, n, o) {
1737
+ function eo(e, t, r, n, o) {
1738
1738
  return `<${e}${o ? `
1739
1739
  as="${o}"` : ""}
1740
1740
  className="${t}"
1741
- style={{ ${In(r)} }}
1741
+ style={{ ${Nn(r)} }}
1742
1742
  >
1743
1743
  ${n}
1744
1744
  </${e}>
1745
1745
  `;
1746
1746
  }
1747
- var Nn = () => {
1747
+ var Bn = () => {
1748
1748
  const e = (a, l) => {
1749
1749
  if (!(a?.useGradient === !0 && Array.isArray(a?.gradient?.colors) && a.gradient.colors.length >= 2)) {
1750
- const R = a && typeof a == "object" && a.solid ? a.solid : l;
1751
- return !R || R === "transparent" ? "" : `background-color:${R};`;
1750
+ const x = a && typeof a == "object" && a.solid ? a.solid : l;
1751
+ return !x || x === "transparent" ? "" : `background-color:${x};`;
1752
1752
  }
1753
- const { type: c, direction: p, colors: v } = a.gradient, b = v.map((R) => `${R.color} ${R.position}%`).join(", "), E = c === "radial" ? `radial-gradient(circle at center, ${b})` : `linear-gradient(${p}, ${b})`, w = a.solid || l || "";
1754
- return `${w && w !== "transparent" ? `background-color:${w};` : ""}background:${E};`;
1753
+ const { type: c, direction: m, colors: b } = a.gradient, h = b.map((x) => `${x.color} ${x.position}%`).join(", "), R = c === "radial" ? `radial-gradient(circle at center, ${h})` : `linear-gradient(${m}, ${h})`, E = a.solid || l || "";
1754
+ return `${E && E !== "transparent" ? `background-color:${E};` : ""}background:${R};`;
1755
1755
  }, t = (a, l) => a?.useGradient === !0 && Array.isArray(a?.gradient?.colors) && a.gradient.colors.length >= 2 ? {
1756
1756
  vmlOpen: `
1757
1757
  <!--[if mso]>
@@ -1771,44 +1771,44 @@ var Nn = () => {
1771
1771
  }, r = (a, l) => a && typeof a == "object" && a.solid && a.solid !== "transparent" ? a.solid : l && l !== "transparent" ? l : "", n = (a) => a ? `${a.top ?? 0}px ${a.right ?? 0}px ${a.bottom ?? 0}px ${a.left ?? 0}px` : "0px";
1772
1772
  return {
1773
1773
  generateMJMLComponent: (a) => {
1774
- const l = a.componentType ?? a.type, { props: c } = a, p = `eb-${a.id}`, v = c.margin ? `margin:${c.margin?.top ?? 0}px ${c.margin?.right ?? 0}px ${c.margin?.bottom ?? 0}px ${c.margin?.left ?? 0}px;` : "", b = c.padding ? `padding:${c.padding?.top ?? 0}px ${c.padding?.right ?? 0}px ${c.padding?.bottom ?? 0}px ${c.padding?.left ?? 0}px;` : "", E = (R, M, O) => {
1775
- const u = [O ? `${p}-${O}` : p];
1776
- return R && u.push("desktop-hide"), M && u.push("mobile-hide"), u.join(" ");
1777
- }, w = Ut(l);
1778
- return w ? w.renderEmail.mjml(c, {
1779
- uid: p,
1780
- marginStyle: v,
1781
- paddingStyle: b,
1782
- escapeHtml: Dt,
1783
- escapeAttr: Ft,
1784
- safeUrl: Pt,
1774
+ const l = a.componentType ?? a.type, { props: c } = a, m = `eb-${a.id}`, b = c.margin ? `margin:${c.margin?.top ?? 0}px ${c.margin?.right ?? 0}px ${c.margin?.bottom ?? 0}px ${c.margin?.left ?? 0}px;` : "", h = c.padding ? `padding:${c.padding?.top ?? 0}px ${c.padding?.right ?? 0}px ${c.padding?.bottom ?? 0}px ${c.padding?.left ?? 0}px;` : "", R = (x, N, j) => {
1775
+ const u = [j ? `${m}-${j}` : m];
1776
+ return x && u.push("desktop-hide"), N && u.push("mobile-hide"), u.join(" ");
1777
+ }, E = Jt(l);
1778
+ return E ? E.renderEmail.mjml(c, {
1779
+ uid: m,
1780
+ marginStyle: b,
1781
+ paddingStyle: h,
1782
+ escapeHtml: Ft,
1783
+ escapeAttr: Ht,
1784
+ safeUrl: Dt,
1785
1785
  resolveBgCss: e,
1786
1786
  resolveBgVml: t,
1787
- getResponsiveClasses: E,
1787
+ getResponsiveClasses: R,
1788
1788
  react: null
1789
1789
  }) : "";
1790
1790
  },
1791
- assembleMJML: (a, l, c, p, v, b = 600, E = "") => {
1792
- const w = p ? `<mj-style inline="false">
1793
- @import url('${p}');
1794
- </mj-style>` : "", R = `<mj-style inline="false">
1791
+ assembleMJML: (a, l, c, m, b, h = 600, R = "") => {
1792
+ const E = m ? `<mj-style inline="false">
1793
+ @import url('${m}');
1794
+ </mj-style>` : "", x = `<mj-style inline="false">
1795
1795
  .desktop-hide { display: none !important; }
1796
1796
  ul li:last-child, ol li:last-child { margin-bottom: 0 !important; }
1797
- </mj-style>`, M = E.trim() ? `<mj-style inline="false">
1798
- ${E}
1799
- </mj-style>` : "", O = v.trim() ? `<mj-style inline="false">
1800
- @media only screen and (max-width:${b}px) {
1801
- ${v}
1797
+ </mj-style>`, N = R.trim() ? `<mj-style inline="false">
1798
+ ${R}
1799
+ </mj-style>` : "", j = b.trim() ? `<mj-style inline="false">
1800
+ @media only screen and (max-width:${h}px) {
1801
+ ${b}
1802
1802
  }
1803
1803
  </mj-style>` : "", u = c.bodyBackgroundColor || "#ffffff", d = c.bodyBackgroundImage ? [
1804
1804
  `background-url="${c.bodyBackgroundImage}"`,
1805
1805
  `background-size="${c.bodyBackgroundSize || "cover"}"`,
1806
1806
  `background-position="${c.bodyBackgroundPosition || "center center"}"`,
1807
1807
  `background-repeat="${c.bodyBackgroundRepeat || "no-repeat"}"`
1808
- ].join(" ") : "", s = c.backgroundColor || "#ffffff", S = n(c.padding);
1808
+ ].join(" ") : "", s = c.backgroundColor || "#ffffff", y = n(c.padding);
1809
1809
  return `<mjml lang="${c.language}">
1810
1810
  <mj-head>
1811
- ${w}
1811
+ ${E}
1812
1812
  <mj-title>${a}</mj-title>
1813
1813
  <mj-preview>${c.preheaderText} &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp;</mj-preview>
1814
1814
  <mj-attributes>
@@ -1819,13 +1819,13 @@ ${v}
1819
1819
  <meta name="supported-color-schemes" content="light dark">
1820
1820
  <meta name="format-detection" content="telephone=no, date=no, address=no, email=no, url=no">
1821
1821
  </mj-raw>
1822
- ${R}
1823
- ${M}
1824
- ${O}
1822
+ ${x}
1823
+ ${N}
1824
+ ${j}
1825
1825
  </mj-head>
1826
1826
  <mj-body background-color="${u}" width="${c.width ?? 600}px">
1827
1827
  <mj-wrapper full-width="full-width" ${d} padding="0">
1828
- <mj-section background-color="${s}" padding="${S}">
1828
+ <mj-section background-color="${s}" padding="${y}">
1829
1829
  ${l}
1830
1830
  </mj-section>
1831
1831
  </mj-wrapper>
@@ -1835,16 +1835,16 @@ ${l}
1835
1835
  resolveSolidColor: r,
1836
1836
  padAttr: n
1837
1837
  };
1838
- }, Bn = /* @__PURE__ */ Symbol("maildeno-editor:info-dialog");
1839
- function sa() {
1840
- const e = On();
1841
- return Ie(Bn, e), e;
1838
+ }, On = /* @__PURE__ */ Symbol("maildeno-editor:info-dialog");
1839
+ function la() {
1840
+ const e = jn();
1841
+ return Ie(On, e), e;
1842
1842
  }
1843
- var eo = () => {
1844
- const e = Oe(Bn);
1845
- return e || (console.warn("[maildeno-editor] useInfoDialog() couldn't find a provided instance — falling back to a standalone instance (open() won't visibly show anything)."), On());
1843
+ var to = () => {
1844
+ const e = Oe(On);
1845
+ return e || (console.warn("[maildeno-editor] useInfoDialog() couldn't find a provided instance — falling back to a standalone instance (open() won't visibly show anything)."), jn());
1846
1846
  };
1847
- function On() {
1847
+ function jn() {
1848
1848
  const e = L(!1), t = L("Info"), r = L("");
1849
1849
  return {
1850
1850
  visible: e,
@@ -1855,16 +1855,16 @@ function On() {
1855
1855
  }
1856
1856
  };
1857
1857
  }
1858
- var la = ["is_empty", "is_not_empty"], ca = ["in", "not_in"], ua = [
1858
+ var ca = ["is_empty", "is_not_empty"], ua = ["in", "not_in"], da = [
1859
1859
  ">",
1860
1860
  "<",
1861
1861
  ">=",
1862
1862
  "<="
1863
- ], da = [
1863
+ ], pa = [
1864
1864
  "date_before",
1865
1865
  "date_after",
1866
1866
  "date_on"
1867
- ], pa = [
1867
+ ], ma = [
1868
1868
  {
1869
1869
  label: "Equals ==",
1870
1870
  value: "=="
@@ -1933,11 +1933,11 @@ var la = ["is_empty", "is_not_empty"], ca = ["in", "not_in"], ua = [
1933
1933
  label: "Is Not Empty",
1934
1934
  value: "is_not_empty"
1935
1935
  }
1936
- ], an = (e) => e.split(/[,\n;]+/).map((t) => t.trim()).filter(Boolean), Ze = (e, t) => [parseFloat(e ?? ""), parseFloat(t)], et = (e, t) => !isNaN(e) && !isNaN(t), Ee = (e) => {
1936
+ ], sn = (e) => e.split(/[,\n;]+/).map((t) => t.trim()).filter(Boolean), Qe = (e, t) => [parseFloat(e ?? ""), parseFloat(t)], Ze = (e, t) => !isNaN(e) && !isNaN(t), Ee = (e) => {
1937
1937
  if (!e?.trim()) return null;
1938
1938
  const t = /^\d{4}-\d{2}-\d{2}$/.test(e.trim()) ? /* @__PURE__ */ new Date(`${e.trim()}T00:00:00Z`) : new Date(e.trim());
1939
1939
  return isNaN(t.getTime()) ? null : new Date(Date.UTC(t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate()));
1940
- }, It = (e, t) => {
1940
+ }, Nt = (e, t) => {
1941
1941
  const r = t[e.tag.toLowerCase()], n = r?.toLowerCase() ?? "", o = e.value.toLowerCase();
1942
1942
  switch (e.operator) {
1943
1943
  case "==":
@@ -1953,24 +1953,24 @@ var la = ["is_empty", "is_not_empty"], ca = ["in", "not_in"], ua = [
1953
1953
  case "ends_with":
1954
1954
  return n.endsWith(o);
1955
1955
  case "in":
1956
- return an(o).includes(n);
1956
+ return sn(o).includes(n);
1957
1957
  case "not_in":
1958
- return !an(o).includes(n);
1958
+ return !sn(o).includes(n);
1959
1959
  case ">": {
1960
- const [i, a] = Ze(r, e.value);
1961
- return et(i, a) && i > a;
1960
+ const [i, a] = Qe(r, e.value);
1961
+ return Ze(i, a) && i > a;
1962
1962
  }
1963
1963
  case "<": {
1964
- const [i, a] = Ze(r, e.value);
1965
- return et(i, a) && i < a;
1964
+ const [i, a] = Qe(r, e.value);
1965
+ return Ze(i, a) && i < a;
1966
1966
  }
1967
1967
  case ">=": {
1968
- const [i, a] = Ze(r, e.value);
1969
- return et(i, a) && i >= a;
1968
+ const [i, a] = Qe(r, e.value);
1969
+ return Ze(i, a) && i >= a;
1970
1970
  }
1971
1971
  case "<=": {
1972
- const [i, a] = Ze(r, e.value);
1973
- return et(i, a) && i <= a;
1972
+ const [i, a] = Qe(r, e.value);
1973
+ return Ze(i, a) && i <= a;
1974
1974
  }
1975
1975
  case "date_before": {
1976
1976
  const i = Ee(r), a = Ee(e.value);
@@ -1991,39 +1991,39 @@ var la = ["is_empty", "is_not_empty"], ca = ["in", "not_in"], ua = [
1991
1991
  default:
1992
1992
  return !0;
1993
1993
  }
1994
- }, sn = (e, t) => {
1994
+ }, ln = (e, t) => {
1995
1995
  if (!e.rules.length) return !0;
1996
- const r = e.rules.map((n) => It(n, t));
1996
+ const r = e.rules.map((n) => Nt(n, t));
1997
1997
  return e.match === "any" ? r.some(Boolean) : r.every(Boolean);
1998
- }, ft = () => ({
1998
+ }, mt = () => ({
1999
1999
  evaluateVisibility: (t, r) => {
2000
2000
  if (!t?.enabled) return !0;
2001
2001
  const n = t.rules?.length > 0, o = (t.groups?.length ?? 0) > 0;
2002
2002
  if (!n && !o) return !0;
2003
- const i = (t.rules ?? []).map((c) => It(c, r)), a = (t.groups ?? []).map((c) => sn(c, r)), l = [...i, ...a];
2003
+ const i = (t.rules ?? []).map((c) => Nt(c, r)), a = (t.groups ?? []).map((c) => ln(c, r)), l = [...i, ...a];
2004
2004
  return t.match === "any" ? l.some(Boolean) : l.every(Boolean);
2005
2005
  },
2006
- evaluateRule: It,
2007
- evaluateGroup: sn
2008
- }), jn = (e) => {
2006
+ evaluateRule: Nt,
2007
+ evaluateGroup: ln
2008
+ }), zn = (e) => {
2009
2009
  const { type: t, direction: r, colors: n } = e.gradient, o = n.map((i) => `${i.color} ${i.position}%`).join(", ");
2010
2010
  return t === "radial" ? `radial-gradient(circle at center, ${o})` : `linear-gradient(${r}, ${o})`;
2011
- }, ce = (e) => {
2011
+ }, ue = (e) => {
2012
2012
  const t = [], r = e.backgroundGradient;
2013
2013
  if (r?.useGradient === !0 && Array.isArray(r?.gradient?.colors) && r.gradient.colors.length >= 2) {
2014
- const n = jn(r), o = r.solid || e.backgroundColor || "";
2014
+ const n = zn(r), o = r.solid || e.backgroundColor || "";
2015
2015
  o && o !== "transparent" && t.push(`background-color:${o}`), t.push(`background:${n}`);
2016
2016
  } else e.backgroundColor && e.backgroundColor !== "transparent" && t.push(`background-color:${e.backgroundColor}`);
2017
2017
  return e.backgroundImage && (t.push(`background-image:url('${e.backgroundImage}')`), t.push(`background-size:${e.backgroundSize}`), t.push(`background-position:${e.backgroundPosition}`), t.push(`background-repeat:${e.backgroundRepeat}`)), t;
2018
- }, tt = (e) => {
2018
+ }, et = (e) => {
2019
2019
  const t = {}, r = e.backgroundGradient;
2020
2020
  if (r?.useGradient === !0 && Array.isArray(r?.gradient?.colors) && r.gradient.colors.length >= 2) {
2021
- const n = jn(r), o = r.solid || e.backgroundColor || "";
2021
+ const n = zn(r), o = r.solid || e.backgroundColor || "";
2022
2022
  o && o !== "transparent" && (t.backgroundColor = o), t.background = n;
2023
2023
  } else e.backgroundColor && e.backgroundColor !== "transparent" && (t.backgroundColor = e.backgroundColor);
2024
2024
  return e.backgroundImage && (t.backgroundImage = `url(${e.backgroundImage})`, t.backgroundSize = e.backgroundSize, t.backgroundPosition = e.backgroundPosition, t.backgroundRepeat = e.backgroundRepeat), t;
2025
- }, to = 5, zn = (e, t, r) => {
2026
- if (!(r >= to) && Array.isArray(e))
2025
+ }, no = 5, Ln = (e, t, r) => {
2026
+ if (!(r >= no) && Array.isArray(e))
2027
2027
  for (const n of e) {
2028
2028
  if (!n || n.type === "row-spacer") continue;
2029
2029
  n.mobileStack && (n.gap ?? 0) > 0 && t.add(n.gap);
@@ -2033,18 +2033,18 @@ var la = ["is_empty", "is_not_empty"], ca = ["in", "not_in"], ua = [
2033
2033
  const a = i?.children ?? i?.components;
2034
2034
  if (!Array.isArray(a) || a.length === 0) continue;
2035
2035
  const l = a.filter((c) => c?.type === "row");
2036
- l.length > 0 && zn(l, t, r + 1);
2036
+ l.length > 0 && Ln(l, t, r + 1);
2037
2037
  }
2038
2038
  }
2039
- }, Ln = (e) => {
2039
+ }, Pn = (e) => {
2040
2040
  const t = /* @__PURE__ */ new Set();
2041
- if (zn(e, t, 0), t.size === 0) return "";
2041
+ if (Ln(e, t, 0), t.size === 0) return "";
2042
2042
  const r = [...t].sort((n, o) => n - o);
2043
2043
  return `${r.map((n) => `.mobile-stack.gap-${n}`).join(`,
2044
2044
  `) + " { display:block !important; width:100% !important; }"}
2045
2045
  ${r.map((n) => `.mobile-stack.gap-${n} { height:${n}px !important; line-height:${n}px !important; }`).join(`
2046
2046
  `)}`;
2047
- }, nt = L(/* @__PURE__ */ new Set()), gt = () => {
2047
+ }, tt = L(/* @__PURE__ */ new Set()), ft = () => {
2048
2048
  const e = L([
2049
2049
  "Arial",
2050
2050
  "Arial Black",
@@ -2423,45 +2423,45 @@ ${r.map((n) => `.mobile-stack.gap-${n} { height:${n}px !important; line-height:$
2423
2423
  500,
2424
2424
  600,
2425
2425
  700
2426
- ], o = (b) => t.has(b), i = (b) => b.trim().replace(/\s+/g, "+"), a = (b) => {
2427
- if (r.has(b)) {
2428
- const E = n.map((R) => `0,${R}`), w = n.map((R) => `1,${R}`);
2429
- return `ital,wght@${[...E, ...w].join(";")}`;
2426
+ ], o = (h) => t.has(h), i = (h) => h.trim().replace(/\s+/g, "+"), a = (h) => {
2427
+ if (r.has(h)) {
2428
+ const R = n.map((x) => `0,${x}`), E = n.map((x) => `1,${x}`);
2429
+ return `ital,wght@${[...R, ...E].join(";")}`;
2430
2430
  }
2431
2431
  return `wght@${n.join(";")}`;
2432
- }, l = (b) => {
2433
- if (!b || o(b) || nt.value.has(b)) return;
2434
- const E = document.createElement("link");
2435
- E.rel = "stylesheet", E.href = `https://fonts.googleapis.com/css2?family=${i(b)}:${a(b)}&display=swap`, document.head.appendChild(E), nt.value.add(b);
2436
- }, c = (b) => {
2437
- const E = Array.from(new Set(b)).filter((w) => w && !o(w));
2438
- return E.length ? `https://fonts.googleapis.com/css2?${E.map((w) => `family=${i(w)}:${a(w)}`).join("&")}&display=swap` : "";
2432
+ }, l = (h) => {
2433
+ if (!h || o(h) || tt.value.has(h)) return;
2434
+ const R = document.createElement("link");
2435
+ R.rel = "stylesheet", R.href = `https://fonts.googleapis.com/css2?family=${i(h)}:${a(h)}&display=swap`, document.head.appendChild(R), tt.value.add(h);
2436
+ }, c = (h) => {
2437
+ const R = Array.from(new Set(h)).filter((E) => E && !o(E));
2438
+ return R.length ? `https://fonts.googleapis.com/css2?${R.map((E) => `family=${i(E)}:${a(E)}`).join("&")}&display=swap` : "";
2439
2439
  };
2440
2440
  return {
2441
2441
  googleFonts: e,
2442
2442
  loadGoogleFont: l,
2443
2443
  getGoogleFontImports: c,
2444
- syncFontsForTemplate: (b) => {
2445
- if (!b || b.length === 0) return;
2446
- const E = [], w = /* @__PURE__ */ new Set();
2447
- for (const O of b)
2448
- O && (w.has(O) || (w.add(O), !o(O) && (nt.value.has(O) || E.push(O))));
2449
- if (E.length === 0) return;
2450
- const R = c(E);
2451
- if (!R) return;
2452
- const M = document.createElement("link");
2453
- M.rel = "stylesheet", M.href = R, M.dataset.canvasFonts = E.join(","), document.head.appendChild(M);
2454
- for (const O of E) nt.value.add(O);
2444
+ syncFontsForTemplate: (h) => {
2445
+ if (!h || h.length === 0) return;
2446
+ const R = [], E = /* @__PURE__ */ new Set();
2447
+ for (const j of h)
2448
+ j && (E.has(j) || (E.add(j), !o(j) && (tt.value.has(j) || R.push(j))));
2449
+ if (R.length === 0) return;
2450
+ const x = c(R);
2451
+ if (!x) return;
2452
+ const N = document.createElement("link");
2453
+ N.rel = "stylesheet", N.href = x, N.dataset.canvasFonts = R.join(","), document.head.appendChild(N);
2454
+ for (const j of R) tt.value.add(j);
2455
2455
  },
2456
2456
  preconnectGoogleFonts: () => {
2457
2457
  if (typeof document > "u") return;
2458
- const b = (E, w = !1) => {
2459
- const R = `link[rel="preconnect"][href="${E}"]`;
2460
- if (document.head.querySelector(R)) return;
2461
- const M = document.createElement("link");
2462
- M.rel = "preconnect", M.href = E, w && (M.crossOrigin = "anonymous"), document.head.appendChild(M);
2458
+ const h = (R, E = !1) => {
2459
+ const x = `link[rel="preconnect"][href="${R}"]`;
2460
+ if (document.head.querySelector(x)) return;
2461
+ const N = document.createElement("link");
2462
+ N.rel = "preconnect", N.href = R, E && (N.crossOrigin = "anonymous"), document.head.appendChild(N);
2463
2463
  };
2464
- b("https://fonts.googleapis.com"), b("https://fonts.gstatic.com", !0);
2464
+ h("https://fonts.googleapis.com"), h("https://fonts.gstatic.com", !0);
2465
2465
  },
2466
2466
  isWebSafeFont: o,
2467
2467
  WEB_SAFE_FONTS: t,
@@ -2474,7 +2474,7 @@ function Je(e) {
2474
2474
  const t = e.trim().toLowerCase();
2475
2475
  return /^(?:auto|(?:\d+(?:\.\d+)?|\.\d+)(?:px|%))$/.test(t) ? t : "auto";
2476
2476
  }
2477
- function no(e) {
2477
+ function ro(e) {
2478
2478
  const t = Je(e.width), r = Je(e.height);
2479
2479
  return [
2480
2480
  t,
@@ -2488,7 +2488,7 @@ function no(e) {
2488
2488
  textAlign: "center"
2489
2489
  } : {};
2490
2490
  }
2491
- function ro(e, t) {
2491
+ function oo(e, t) {
2492
2492
  const r = t === "width" ? "100%" : "auto";
2493
2493
  if (typeof e != "string" && typeof e != "number") return r;
2494
2494
  let n = String(e).trim().toLowerCase();
@@ -2496,81 +2496,81 @@ function ro(e, t) {
2496
2496
  const o = Je(n);
2497
2497
  return o === "auto" && n !== "auto" ? r : o;
2498
2498
  }
2499
- var Jt = () => ({ emailMobileStyles: (t, r) => {
2499
+ var Gt = () => ({ emailMobileStyles: (t, r) => {
2500
2500
  const n = t.componentType ?? t.type, o = t.props.mobileStack === !0, i = t.props.mobile;
2501
2501
  if (!i && !(n === "menu" && o)) return "";
2502
- const a = i ?? {}, l = [], c = [], p = [], v = (/* @__PURE__ */ new Set(["button", "anchor"])).has(n), b = n === "button" && !!no(t.props).width, E = (/* @__PURE__ */ new Set(["menu", "socials"])).has(n), w = (u, d) => {
2502
+ const a = i ?? {}, l = [], c = [], m = [], b = (/* @__PURE__ */ new Set(["button", "anchor"])).has(n), h = n === "button" && !!ro(t.props).width, R = (/* @__PURE__ */ new Set(["menu", "socials"])).has(n), E = (u, d) => {
2503
2503
  d && u.push(d);
2504
- }, R = () => {
2504
+ }, x = () => {
2505
2505
  const u = a.backgroundGradient;
2506
2506
  if (u != null) {
2507
2507
  if (u.useGradient === !0 && Array.isArray(u.gradient?.colors) && u.gradient.colors.length >= 2) {
2508
- const { type: s, direction: S, colors: C } = u.gradient, _ = C.map((x) => `${x.color} ${x.position}%`).join(", "), g = s === "radial" ? `radial-gradient(circle at center, ${_})` : `linear-gradient(${S}, ${_})`, m = u.solid || a.backgroundColor || "", h = [];
2509
- return h.push(`background-color: ${m && m !== "transparent" ? m : "transparent"} !important`), h.push(`background: ${g} !important`), h;
2508
+ const { type: s, direction: y, colors: C } = u.gradient, _ = C.map((w) => `${w.color} ${w.position}%`).join(", "), f = s === "radial" ? `radial-gradient(circle at center, ${_})` : `linear-gradient(${y}, ${_})`, p = u.solid || a.backgroundColor || "", g = [];
2509
+ return g.push(`background-color: ${p && p !== "transparent" ? p : "transparent"} !important`), g.push(`background: ${f} !important`), g;
2510
2510
  }
2511
2511
  const d = u.solid ?? a.backgroundColor;
2512
2512
  return d != null ? ["background: none !important", `background-color: ${d} !important`] : [];
2513
2513
  }
2514
2514
  return a.backgroundColor != null ? ["background: none !important", `background-color: ${a.backgroundColor} !important`] : [];
2515
- }, M = (u) => {
2516
- w(u, a.fontSize != null && `font-size: ${a.fontSize}px !important`), w(u, a.lineHeight != null && `line-height: ${a.lineHeight} !important`), w(u, a.letterSpacing != null && `letter-spacing: ${a.letterSpacing}px !important`), w(u, a.color != null && `color: ${a.color} !important`), w(u, a.fontWeight != null && `font-weight: ${a.fontWeight} !important`), w(u, a.fontFamily != null && `font-family: '${a.fontFamily}', Arial, sans-serif !important`), w(u, a.fontStyle != null && `font-style: ${a.fontStyle} !important`), w(u, a.textTransform != null && `text-transform: ${a.textTransform} !important`), w(u, a.textDecoration != null && `text-decoration: ${a.textDecoration} !important`), b || u.push(...R());
2515
+ }, N = (u) => {
2516
+ E(u, a.fontSize != null && `font-size: ${a.fontSize}px !important`), E(u, a.lineHeight != null && `line-height: ${a.lineHeight} !important`), E(u, a.letterSpacing != null && `letter-spacing: ${a.letterSpacing}px !important`), E(u, a.color != null && `color: ${a.color} !important`), E(u, a.fontWeight != null && `font-weight: ${a.fontWeight} !important`), E(u, a.fontFamily != null && `font-family: '${a.fontFamily}', Arial, sans-serif !important`), E(u, a.fontStyle != null && `font-style: ${a.fontStyle} !important`), E(u, a.textTransform != null && `text-transform: ${a.textTransform} !important`), E(u, a.textDecoration != null && `text-decoration: ${a.textDecoration} !important`), h || u.push(...x());
2517
2517
  };
2518
2518
  if (a.margin) {
2519
2519
  const u = a.margin;
2520
2520
  l.push(`margin: ${u.top}px ${u.right}px ${u.bottom}px ${u.left}px !important`);
2521
2521
  }
2522
- if (a.padding && !v && !E) {
2522
+ if (a.padding && !b && !R) {
2523
2523
  const u = a.padding;
2524
2524
  l.push(`padding: ${u.top}px ${u.right}px ${u.bottom}px ${u.left}px !important`);
2525
2525
  }
2526
- if (a.align != null && !E && l.push(`text-align: ${a.align} !important`), v) {
2527
- M(c);
2528
- const u = b ? R() : c;
2526
+ if (a.align != null && !R && l.push(`text-align: ${a.align} !important`), b) {
2527
+ N(c);
2528
+ const u = h ? x() : c;
2529
2529
  if (a.padding) {
2530
2530
  const d = a.padding, s = `padding: ${d.top}px ${d.right}px ${d.bottom}px ${d.left}px !important`;
2531
- b ? p.push(`.${r}-button-content { ${s} }`) : c.push(s);
2531
+ h ? m.push(`.${r}-button-content { ${s} }`) : c.push(s);
2532
2532
  }
2533
2533
  if (a.border) {
2534
2534
  const d = a.border;
2535
- u.push(ue(d, !0));
2535
+ u.push(de(d, !0));
2536
2536
  }
2537
- if (a.borderRadius != null && u.push(`border-radius: ${Y(a.borderRadius)} !important`), n === "button") {
2537
+ if (a.borderRadius != null && u.push(`border-radius: ${X(a.borderRadius)} !important`), n === "button") {
2538
2538
  for (const s of ["width", "height"]) a[s] != null && u.push(`${s}: ${Je(a[s])} !important`);
2539
2539
  const d = [];
2540
- w(d, a.fontSize != null && `font-size: ${a.fontSize}px !important`), w(d, a.letterSpacing != null && `letter-spacing: ${a.letterSpacing}px !important`), w(d, a.color != null && `color: ${a.color} !important`), w(d, a.fontWeight != null && `font-weight: ${a.fontWeight} !important`), w(d, a.fontFamily != null && `font-family: '${a.fontFamily}', Arial, sans-serif !important`), w(d, a.fontStyle != null && `font-style: ${a.fontStyle} !important`), w(d, a.textTransform != null && `text-transform: ${a.textTransform} !important`), w(d, a.textDecoration != null && `text-decoration: ${a.textDecoration} !important`), d.length > 0 && p.push(`.${r}-text { ${d.join("; ")} }`);
2540
+ E(d, a.fontSize != null && `font-size: ${a.fontSize}px !important`), E(d, a.letterSpacing != null && `letter-spacing: ${a.letterSpacing}px !important`), E(d, a.color != null && `color: ${a.color} !important`), E(d, a.fontWeight != null && `font-weight: ${a.fontWeight} !important`), E(d, a.fontFamily != null && `font-family: '${a.fontFamily}', Arial, sans-serif !important`), E(d, a.fontStyle != null && `font-style: ${a.fontStyle} !important`), E(d, a.textTransform != null && `text-transform: ${a.textTransform} !important`), E(d, a.textDecoration != null && `text-decoration: ${a.textDecoration} !important`), d.length > 0 && m.push(`.${r}-text { ${d.join("; ")} }`);
2541
2541
  }
2542
- b && u.length > 0 && p.push(`.${r}-button-table { ${u.join("; ")} }`);
2542
+ h && u.length > 0 && m.push(`.${r}-button-table { ${u.join("; ")} }`);
2543
2543
  } else if (n === "image") {
2544
- for (const u of ["width", "height"]) a[u] != null && c.push(`${u}: ${ro(a[u], u)} !important`);
2545
- w(c, a.borderRadius != null && `border-radius: ${Y(a.borderRadius)} !important`), w(c, a.border != null && ue(a.border, !0));
2544
+ for (const u of ["width", "height"]) a[u] != null && c.push(`${u}: ${oo(a[u], u)} !important`);
2545
+ E(c, a.borderRadius != null && `border-radius: ${X(a.borderRadius)} !important`), E(c, a.border != null && de(a.border, !0));
2546
2546
  } else if (n === "video")
2547
- w(c, a.width != null && `width: ${a.width}% !important`), w(c, a.height != null && `height: ${a.height} !important`), w(c, a.borderRadius != null && `border-radius: ${Y(a.borderRadius)} !important`), w(c, a.border != null && ue(a.border, !0));
2547
+ E(c, a.width != null && `width: ${a.width}% !important`), E(c, a.height != null && `height: ${a.height} !important`), E(c, a.borderRadius != null && `border-radius: ${X(a.borderRadius)} !important`), E(c, a.border != null && de(a.border, !0));
2548
2548
  else if (n === "divider") {
2549
2549
  const u = [], d = [];
2550
2550
  if (a.width != null && u.push(`width: ${a.width}% !important`), a.align != null) {
2551
- const s = a.align === "left" ? "0" : "auto", S = a.align === "right" ? "0" : "auto";
2552
- u.push(`margin-left: ${s} !important`), u.push(`margin-right: ${S} !important`);
2551
+ const s = a.align === "left" ? "0" : "auto", y = a.align === "right" ? "0" : "auto";
2552
+ u.push(`margin-left: ${s} !important`), u.push(`margin-right: ${y} !important`);
2553
2553
  }
2554
- a.height != null && (d.push(`height: ${a.height}px !important`), d.push(`line-height: ${a.height}px !important`)), d.push(...R()), u.length > 0 && p.push(`.${r}-divider-table { ${u.join("; ")} }`), d.length > 0 && p.push(`.${r}-divider-td { ${d.join("; ")} }`);
2554
+ a.height != null && (d.push(`height: ${a.height}px !important`), d.push(`line-height: ${a.height}px !important`)), d.push(...x()), u.length > 0 && m.push(`.${r}-divider-table { ${u.join("; ")} }`), d.length > 0 && m.push(`.${r}-divider-td { ${d.join("; ")} }`);
2555
2555
  } else if (n === "spacer") {
2556
2556
  const u = [];
2557
- a.height != null && (u.push(`height: ${a.height}px !important`), u.push(`line-height: ${a.height}px !important`)), u.push(...R()), u.length > 0 && p.push(`.${r}-spacer-td { ${u.join("; ")} }`);
2557
+ a.height != null && (u.push(`height: ${a.height}px !important`), u.push(`line-height: ${a.height}px !important`)), u.push(...x()), u.length > 0 && m.push(`.${r}-spacer-td { ${u.join("; ")} }`);
2558
2558
  } else if (n === "list")
2559
- M(l), a.itemSpacing != null && p.push(`.${r} li { margin-bottom: ${a.itemSpacing}px !important; }`);
2559
+ N(l), a.itemSpacing != null && m.push(`.${r} li { margin-bottom: ${a.itemSpacing}px !important; }`);
2560
2560
  else if (n === "menu") {
2561
2561
  const u = [];
2562
- if (u.push(...R()), a.padding) {
2562
+ if (u.push(...x()), a.padding) {
2563
2563
  const s = a.padding;
2564
2564
  u.push(`padding: ${s.top}px ${s.right}px ${s.bottom}px ${s.left}px !important`);
2565
2565
  }
2566
- u.length > 0 && p.push(`.${r}-menu-td { ${u.join("; ")} }`), a.align != null && p.push(`.${r}-menu-td { text-align: ${a.align} !important; }`);
2566
+ u.length > 0 && m.push(`.${r}-menu-td { ${u.join("; ")} }`), a.align != null && m.push(`.${r}-menu-td { text-align: ${a.align} !important; }`);
2567
2567
  const d = [];
2568
- if (a.fontSize != null && d.push(`font-size: ${a.fontSize}px !important`), a.lineHeight != null && d.push(`line-height: ${a.lineHeight} !important`), a.letterSpacing != null && d.push(`letter-spacing: ${a.letterSpacing}px !important`), a.color != null && d.push(`color: ${a.color} !important`), a.fontWeight != null && d.push(`font-weight: ${a.fontWeight} !important`), a.fontFamily != null && d.push(`font-family: '${a.fontFamily}', Arial, sans-serif !important`), a.fontStyle != null && d.push(`font-style: ${a.fontStyle} !important`), a.textTransform != null && d.push(`text-transform: ${a.textTransform} !important`), a.textDecoration != null && d.push(`text-decoration: ${a.textDecoration} !important`), d.length > 0 && p.push(`.${r}-menu-td a { ${d.join("; ")} }`), o) {
2568
+ if (a.fontSize != null && d.push(`font-size: ${a.fontSize}px !important`), a.lineHeight != null && d.push(`line-height: ${a.lineHeight} !important`), a.letterSpacing != null && d.push(`letter-spacing: ${a.letterSpacing}px !important`), a.color != null && d.push(`color: ${a.color} !important`), a.fontWeight != null && d.push(`font-weight: ${a.fontWeight} !important`), a.fontFamily != null && d.push(`font-family: '${a.fontFamily}', Arial, sans-serif !important`), a.fontStyle != null && d.push(`font-style: ${a.fontStyle} !important`), a.textTransform != null && d.push(`text-transform: ${a.textTransform} !important`), a.textDecoration != null && d.push(`text-decoration: ${a.textDecoration} !important`), d.length > 0 && m.push(`.${r}-menu-td a { ${d.join("; ")} }`), o) {
2569
2569
  const s = a.spacing ?? t.props.spacing ?? 0;
2570
- p.push(`.${r}-menu-item a { display: block !important; white-space: normal !important; margin-left: 0 !important; margin-right: 0 !important; margin-bottom: ${s}px !important; }`), p.push(`.${r}-menu-item:last-of-type a { margin-bottom: 0 !important; }`);
2570
+ m.push(`.${r}-menu-item a { display: block !important; white-space: normal !important; margin-left: 0 !important; margin-right: 0 !important; margin-bottom: ${s}px !important; }`), m.push(`.${r}-menu-item:last-of-type a { margin-bottom: 0 !important; }`);
2571
2571
  } else if (a.spacing != null) {
2572
2572
  const s = Math.ceil(a.spacing / 2);
2573
- p.push(`.${r}-menu-item a { margin-left: ${s}px !important; margin-right: ${s}px !important; }`), p.push(`.${r}-menu-item:first-of-type a { margin-left: 0 !important; }`), p.push(`.${r}-menu-item:last-of-type a { margin-right: 0 !important; }`);
2573
+ m.push(`.${r}-menu-item a { margin-left: ${s}px !important; margin-right: ${s}px !important; }`), m.push(`.${r}-menu-item:first-of-type a { margin-left: 0 !important; }`), m.push(`.${r}-menu-item:last-of-type a { margin-right: 0 !important; }`);
2574
2574
  }
2575
2575
  } else if (n === "socials") {
2576
2576
  const u = [];
@@ -2580,73 +2580,73 @@ var Jt = () => ({ emailMobileStyles: (t, r) => {
2580
2580
  }
2581
2581
  if (a.align != null) {
2582
2582
  const d = a.align === "left" ? "0" : "auto", s = a.align === "right" ? "0" : "auto";
2583
- p.push(`.${r}-socials-inner { display:inline-table !important; margin-left: ${d} !important; margin-right: ${s} !important; }`), u.push(`text-align: ${a.align} !important`);
2583
+ m.push(`.${r}-socials-inner { display:inline-table !important; margin-left: ${d} !important; margin-right: ${s} !important; }`), u.push(`text-align: ${a.align} !important`);
2584
2584
  }
2585
- if (u.length > 0 && p.push(`.${r}-socials-td { ${u.join("; ")} }`), a.iconSize != null && p.push(`.${r}-socials-inner img { width: ${a.iconSize}px !important; height: ${a.iconSize}px !important; }`), a.spacing != null) {
2585
+ if (u.length > 0 && m.push(`.${r}-socials-td { ${u.join("; ")} }`), a.iconSize != null && m.push(`.${r}-socials-inner img { width: ${a.iconSize}px !important; height: ${a.iconSize}px !important; }`), a.spacing != null) {
2586
2586
  const d = Math.ceil(a.spacing / 2);
2587
- p.push(`.${r}-socials-item a { margin-left: ${d}px !important; margin-right: ${d}px !important; }`), p.push(`.${r}-socials-item:first-of-type a { margin-left: 0 !important; }`), p.push(`.${r}-socials-item:last-of-type a { margin-right: 0 !important; }`);
2587
+ m.push(`.${r}-socials-item a { margin-left: ${d}px !important; margin-right: ${d}px !important; }`), m.push(`.${r}-socials-item:first-of-type a { margin-left: 0 !important; }`), m.push(`.${r}-socials-item:last-of-type a { margin-right: 0 !important; }`);
2588
2588
  }
2589
- } else M(l);
2590
- const O = [];
2591
- if (l.length > 0 && O.push(`.${r} { ${l.join("; ")} }`), c.length > 0) {
2592
- const u = v ? `.${r}-link` : n === "image" ? `.${r} img` : n === "video" ? `.${r} video` : `.${r}`;
2593
- O.push(`${u} { ${c.join("; ")} }`);
2589
+ } else N(l);
2590
+ const j = [];
2591
+ if (l.length > 0 && j.push(`.${r} { ${l.join("; ")} }`), c.length > 0) {
2592
+ const u = b ? `.${r}-link` : n === "image" ? `.${r} img` : n === "video" ? `.${r} video` : `.${r}`;
2593
+ j.push(`${u} { ${c.join("; ")} }`);
2594
2594
  }
2595
- return O.push(...p), O.join(`
2595
+ return j.push(...m), j.join(`
2596
2596
  `);
2597
- } }), ln = (e) => de(e) ? ue(e) : "", Pn = (e, t, r = [], n) => {
2598
- const o = `padding:${n?.top ?? 0}px ${n?.right ?? 0}px ${n?.bottom ?? 0}px ${n?.left ?? 0}px`, i = t && ee(t.radius ?? 0) && de(t), a = t && de(t) && !ee(t.radius ?? 0);
2597
+ } }), cn = (e) => pe(e) ? de(e) : "", Dn = (e, t, r = [], n) => {
2598
+ const o = `padding:${n?.top ?? 0}px ${n?.right ?? 0}px ${n?.bottom ?? 0}px ${n?.left ?? 0}px`, i = t && re(t.radius ?? 0) && pe(t), a = t && pe(t) && !re(t.radius ?? 0);
2599
2599
  if (!i) {
2600
- const p = [o];
2601
- return a && p.push(ln(t)), p.push("line-height:0"), p.push("font-size:0"), `<div style="${p.join(";")}">${e}</div>`;
2600
+ const m = [o];
2601
+ return a && m.push(cn(t)), m.push("line-height:0"), m.push("font-size:0"), `<div style="${m.join(";")}">${e}</div>`;
2602
2602
  }
2603
2603
  const l = [
2604
- `border-radius:${Y(t.radius)}`,
2604
+ `border-radius:${X(t.radius)}`,
2605
2605
  "overflow:hidden",
2606
2606
  "line-height:0",
2607
2607
  "font-size:0"
2608
2608
  ];
2609
- de(t) && l.push(ln(t));
2609
+ pe(t) && l.push(cn(t));
2610
2610
  const c = [
2611
2611
  o,
2612
2612
  "line-height:0",
2613
2613
  "font-size:0"
2614
2614
  ];
2615
2615
  return `<div style="${l.join(";")}"><div style="${c.join(";")}">${e}</div></div>`;
2616
- }, oo = (e, t, r = {}, n, o = !0) => {
2617
- const i = `${n?.top ?? 0}px ${n?.right ?? 0}px ${n?.bottom ?? 0}px ${n?.left ?? 0}px`, a = t && ee(t.radius ?? 0) && de(t) && o, l = t && de(t) && !ee(t.radius ?? 0) && o;
2616
+ }, ao = (e, t, r = {}, n, o = !0) => {
2617
+ const i = `${n?.top ?? 0}px ${n?.right ?? 0}px ${n?.bottom ?? 0}px ${n?.left ?? 0}px`, a = t && re(t.radius ?? 0) && pe(t) && o, l = t && pe(t) && !re(t.radius ?? 0) && o;
2618
2618
  if (!a) {
2619
- const v = {
2619
+ const b = {
2620
2620
  padding: i,
2621
2621
  lineHeight: "0",
2622
2622
  fontSize: "0"
2623
2623
  };
2624
- return l && (Object.assign(v, At(t)), ee(t.radius ?? 0) && (v.borderRadius = Y(t.radius))), `<div style={{ ${Object.entries(v).map(([b, E]) => `${b}:"${E}"`).join(", ")} }}>${e}</div>`;
2624
+ return l && (Object.assign(b, Rt(t)), re(t.radius ?? 0) && (b.borderRadius = X(t.radius))), `<div style={{ ${Object.entries(b).map(([h, R]) => `${h}:"${R}"`).join(", ")} }}>${e}</div>`;
2625
2625
  }
2626
2626
  const c = {
2627
- borderRadius: Y(t.radius),
2627
+ borderRadius: X(t.radius),
2628
2628
  overflow: "hidden",
2629
2629
  lineHeight: "0",
2630
2630
  fontSize: "0"
2631
2631
  };
2632
- de(t) && Object.assign(c, At(t));
2633
- const p = {
2632
+ pe(t) && Object.assign(c, Rt(t));
2633
+ const m = {
2634
2634
  padding: i,
2635
2635
  lineHeight: "0",
2636
2636
  fontSize: "0"
2637
2637
  };
2638
- return `<div style={{ ${Object.entries(c).map(([v, b]) => `${v}:"${b}"`).join(", ")} }}><div style={{ ${Object.entries(p).map(([v, b]) => `${v}:"${b}"`).join(", ")} }}>${e}</div></div>`;
2639
- }, _t = null, Tt = null;
2640
- function Dn() {
2641
- return _t ??= Promise.all([import("./standalone-DHvJ30Td.js"), import("./html-wb0gSX1o.js")]).then(([e, t]) => ({
2638
+ return `<div style={{ ${Object.entries(c).map(([b, h]) => `${b}:"${h}"`).join(", ")} }}><div style={{ ${Object.entries(m).map(([b, h]) => `${b}:"${h}"`).join(", ")} }}>${e}</div></div>`;
2639
+ }, Tt = null, At = null;
2640
+ function Fn() {
2641
+ return Tt ??= Promise.all([import("./standalone-DHvJ30Td.js"), import("./html-wb0gSX1o.js")]).then(([e, t]) => ({
2642
2642
  prettier: e.default ?? e,
2643
2643
  plugins: [t.default ?? t]
2644
2644
  })).catch((e) => {
2645
- throw _t = null, e;
2646
- }), _t;
2645
+ throw Tt = null, e;
2646
+ }), Tt;
2647
2647
  }
2648
- function ao() {
2649
- return Tt ??= Promise.all([
2648
+ function io() {
2649
+ return At ??= Promise.all([
2650
2650
  import("./standalone-DHvJ30Td.js"),
2651
2651
  import("./babel-DV7WPQI0.js"),
2652
2652
  import("./estree-DY9POgc0.js")
@@ -2654,59 +2654,59 @@ function ao() {
2654
2654
  prettier: e.default ?? e,
2655
2655
  plugins: [t.default ?? t, r.default ?? r]
2656
2656
  })).catch((e) => {
2657
- throw Tt = null, e;
2658
- }), Tt;
2657
+ throw At = null, e;
2658
+ }), At;
2659
2659
  }
2660
- async function Gt(e, t) {
2660
+ async function qt(e, t) {
2661
2661
  try {
2662
2662
  return await t();
2663
2663
  } catch (r) {
2664
2664
  return console.warn("[maildeno-editor] formatter unavailable; returning unformatted output", r), e;
2665
2665
  }
2666
2666
  }
2667
- var io = async (e) => Gt(e, async () => {
2668
- const { prettier: t, plugins: r } = await Dn();
2667
+ var so = async (e) => qt(e, async () => {
2668
+ const { prettier: t, plugins: r } = await Fn();
2669
2669
  return t.format(e, {
2670
2670
  parser: "html",
2671
2671
  plugins: r
2672
2672
  });
2673
- }), so = async (e) => Gt(e, async () => {
2674
- const { prettier: t, plugins: r } = await ao();
2673
+ }), lo = async (e) => qt(e, async () => {
2674
+ const { prettier: t, plugins: r } = await io();
2675
2675
  return t.format(e, {
2676
2676
  parser: "babel-ts",
2677
2677
  plugins: r
2678
2678
  });
2679
- }), lo = async (e) => Gt(e, async () => {
2680
- const { prettier: t, plugins: r } = await Dn();
2679
+ }), co = async (e) => qt(e, async () => {
2680
+ const { prettier: t, plugins: r } = await Fn();
2681
2681
  return t.format(e, {
2682
2682
  parser: "html",
2683
2683
  plugins: r
2684
2684
  });
2685
- }), cn = (e) => e.trim().toLowerCase().replace(/\s+/g, "_"), co = (e) => {
2685
+ }), un = (e) => e.trim().toLowerCase().replace(/\s+/g, "_"), uo = (e) => {
2686
2686
  const t = e.indexOf("|");
2687
- if (t === -1) return { key: cn(e) };
2687
+ if (t === -1) return { key: un(e) };
2688
2688
  const r = e.slice(0, t), n = e.slice(t + 1).trim().replace(/^['"]|['"]$/g, "");
2689
2689
  return {
2690
- key: cn(r),
2690
+ key: un(r),
2691
2691
  pipeDefault: n
2692
2692
  };
2693
- }, un = (e, t, r) => !r || !e ? e : e.replace(/\{\{\s*([^}]+?)\s*\}\}/g, (n, o) => {
2694
- const { key: i, pipeDefault: a } = co(o);
2693
+ }, dn = (e, t, r) => !r || !e ? e : e.replace(/\{\{\s*([^}]+?)\s*\}\}/g, (n, o) => {
2694
+ const { key: i, pipeDefault: a } = uo(o);
2695
2695
  return Object.prototype.hasOwnProperty.call(t, i) && t[i] !== "" ? t[i] : a !== void 0 ? a : n;
2696
- }), Fn = (e, t, r, n, o) => {
2697
- let i = un(e, t, r);
2698
- return i = un(i, n, o), i;
2699
- }, qt = /* @__PURE__ */ new Map();
2700
- function ma(e) {
2701
- for (const t of e) qt.set(t.key, t);
2696
+ }), Hn = (e, t, r, n, o) => {
2697
+ let i = dn(e, t, r);
2698
+ return i = dn(i, n, o), i;
2699
+ }, Wt = /* @__PURE__ */ new Map();
2700
+ function fa(e) {
2701
+ for (const t of e) Wt.set(t.key, t);
2702
2702
  }
2703
- function uo() {
2704
- return [...qt.keys()];
2703
+ function po() {
2704
+ return [...Wt.keys()];
2705
2705
  }
2706
- function po(e, t) {
2707
- return qt.get(e)?.tokens?.[t];
2706
+ function mo(e, t) {
2707
+ return Wt.get(e)?.tokens?.[t];
2708
2708
  }
2709
- var Wt = {
2709
+ var Vt = {
2710
2710
  unsubscribe_url: {
2711
2711
  handlebars: "{{{unsubscribe_url}}}",
2712
2712
  sendgrid: "{{{unsubscribe_url}}}",
@@ -2821,7 +2821,7 @@ var Wt = {
2821
2821
  hubspot: "{{ today }}",
2822
2822
  sfmc: "%%=Format(Now(),'M/d/yyyy')=%%"
2823
2823
  }
2824
- }, mo = (e, t, r) => {
2824
+ }, fo = (e, t, r) => {
2825
2825
  const n = !!r?.trim(), o = r?.trim() ?? "";
2826
2826
  switch (t) {
2827
2827
  case "liquid":
@@ -2850,7 +2850,7 @@ var Wt = {
2850
2850
  default:
2851
2851
  return `{{ ${e} }}`;
2852
2852
  }
2853
- }, dn = (e, t, r) => {
2853
+ }, pn = (e, t, r) => {
2854
2854
  const n = r.trim();
2855
2855
  if (!n) return e;
2856
2856
  switch (t) {
@@ -2874,38 +2874,38 @@ var Wt = {
2874
2874
  default:
2875
2875
  return e;
2876
2876
  }
2877
- }, pn = (e, t, r) => {
2878
- const n = Wt[e];
2877
+ }, mn = (e, t, r) => {
2878
+ const n = Vt[e];
2879
2879
  if (n) {
2880
2880
  const i = n[t];
2881
- if (i) return r?.trim() ? dn(i, t, r) : i;
2881
+ if (i) return r?.trim() ? pn(i, t, r) : i;
2882
2882
  }
2883
- const o = po(e, t);
2884
- return o ? r?.trim() ? dn(o, t, r) : o : mo(e, t, r);
2885
- }, fo = (e, t) => {
2883
+ const o = mo(e, t);
2884
+ return o ? r?.trim() ? pn(o, t, r) : o : fo(e, t, r);
2885
+ }, go = (e, t) => {
2886
2886
  if (!e) return "";
2887
- let r = e.replace(/<span[^>]*\bdata-merge="([^"]+)"(?:[^>]*\bdata-merge-default="([^"]*)")?[^>]*>.*?<\/span>/gs, (n, o, i) => pn(o, t, i?.trim() || void 0));
2888
- return r = r.replace(/\{\{\s*(?:'([^']*)'|"([^"]*)"|(\w+))(?:\s*\|\s*(?:'([^']*)'|"([^"]*)"|([^'"\}\s][^'"\}]*?)))?\s*\}\}/g, (n, o, i, a, l, c, p) => {
2889
- const v = (o ?? i ?? a ?? "").trim(), b = (l ?? c ?? p ?? "").trim();
2890
- return pn(v, t, b || void 0);
2887
+ let r = e.replace(/<span[^>]*\bdata-merge="([^"]+)"(?:[^>]*\bdata-merge-default="([^"]*)")?[^>]*>.*?<\/span>/gs, (n, o, i) => mn(o, t, i?.trim() || void 0));
2888
+ return r = r.replace(/\{\{\s*(?:'([^']*)'|"([^"]*)"|(\w+))(?:\s*\|\s*(?:'([^']*)'|"([^"]*)"|([^'"\}\s][^'"\}]*?)))?\s*\}\}/g, (n, o, i, a, l, c, m) => {
2889
+ const b = (o ?? i ?? a ?? "").trim(), h = (l ?? c ?? m ?? "").trim();
2890
+ return mn(b, t, h || void 0);
2891
2891
  }), r;
2892
- }, fa = () => [...Object.keys(Wt), ...uo()], ga = (e, t) => Wt[e]?.[t] ?? null, Ge = (e) => {
2892
+ }, ga = () => [...Object.keys(Vt), ...po()], ha = (e, t) => Vt[e]?.[t] ?? null, Ge = (e) => {
2893
2893
  let t = (e ?? "").trim().replace(/[^A-Za-z0-9_$]+/g, "_");
2894
2894
  return /^[0-9]/.test(t) && (t = `_${t}`), t || "_tag";
2895
- }, mn = (e, t) => {
2895
+ }, fn = (e, t) => {
2896
2896
  const r = e.trim();
2897
2897
  return r ? t?.trim() ? `{${r} ?? "${t.trim().replace(/"/g, '\\"')}"}` : `{${r}}` : "";
2898
- }, go = (e) => {
2898
+ }, ho = (e) => {
2899
2899
  if (!e) return "";
2900
- let t = e.replace(/<span[^>]*\bdata-merge="([^"]+)"(?:[^>]*\bdata-merge-default="([^"]*)")?[^>]*>.*?<\/span>/gs, (r, n, o) => mn(n, o?.trim() || void 0));
2900
+ let t = e.replace(/<span[^>]*\bdata-merge="([^"]+)"(?:[^>]*\bdata-merge-default="([^"]*)")?[^>]*>.*?<\/span>/gs, (r, n, o) => fn(n, o?.trim() || void 0));
2901
2901
  return t = t.replace(/\{\{\s*(?:'([^']*)'|"([^"]*)"|(\w+))(?:\s*\|\s*(?:'([^']*)'|"([^"]*)"|([^'"\}\s][^'"\}]*?)))?\s*\}\}/g, (r, n, o, i, a, l, c) => {
2902
- const p = (n ?? o ?? i ?? "").trim(), v = (a ?? l ?? c ?? "").trim();
2903
- return mn(p, v || void 0);
2902
+ const m = (n ?? o ?? i ?? "").trim(), b = (a ?? l ?? c ?? "").trim();
2903
+ return fn(m, b || void 0);
2904
2904
  }), t = t.replace(/(\b(?!style=)\w[\w-]*=)"([^"]*\{[^}]+\}[^"]*)"/g, (r, n, o) => {
2905
2905
  const i = o.match(/^\{(\w+)\}$/);
2906
2906
  return i ? `${n}{${i[1]}}` : `${n}{\`${o.replace(/\{(\w+)\}/g, "${$1}")}\`}`;
2907
2907
  }), t;
2908
- }, ho = (e) => {
2908
+ }, vo = (e) => {
2909
2909
  if (e.length === 0) return {
2910
2910
  propsInterface: "",
2911
2911
  propsDestructure: ""
@@ -2920,7 +2920,7 @@ ${r.map(([n]) => ` ${n}?: string;`).join(`
2920
2920
  }`,
2921
2921
  propsDestructure: `{ ${r.map(([n, o]) => o?.trim() ? `${n} = "${o.trim().replace(/"/g, '\\"')}"` : n).join(", ")} }: EmailProps`
2922
2922
  };
2923
- }, vo = (e) => {
2923
+ }, bo = (e) => {
2924
2924
  const t = /* @__PURE__ */ new Map();
2925
2925
  for (const r of e.matchAll(/<span[^>]*\bdata-merge="([^"]+)"(?:[^>]*\bdata-merge-default="([^"]*)")?[^>]*>.*?<\/span>/gs)) {
2926
2926
  const n = r[1].trim();
@@ -2934,7 +2934,7 @@ ${r.map(([n]) => ` ${n}?: string;`).join(`
2934
2934
  tagId: r,
2935
2935
  fallback: n
2936
2936
  }));
2937
- }, bo = (e) => {
2937
+ }, $o = (e) => {
2938
2938
  const t = /* @__PURE__ */ new Set(), r = (o) => {
2939
2939
  if (o?.enabled) {
2940
2940
  for (const i of o.rules ?? []) i.tag?.trim() && t.add(Ge(i.tag));
@@ -2956,43 +2956,43 @@ ${r.map(([n]) => ` ${n}?: string;`).join(`
2956
2956
  r(i.props?.visibility), n(i.children ?? i.components ?? []);
2957
2957
  }
2958
2958
  return [...t];
2959
- }, $o = (e) => e.length === 0 ? "" : ` // Visibility data — replace with real values from your data source
2959
+ }, yo = (e) => e.length === 0 ? "" : ` // Visibility data — replace with real values from your data source
2960
2960
  ${e.map((t) => ` const ${t} = "";`).join(`
2961
- `)}`, Hn = (e, t, r, n, o = !1) => {
2961
+ `)}`, Un = (e, t, r, n, o = !1) => {
2962
2962
  const i = n?.mergeTagActive || n?.linkTagActive;
2963
- if (t === "wrap" || !i) return fo(e, r);
2963
+ if (t === "wrap" || !i) return go(e, r);
2964
2964
  if (o) {
2965
- const { mergeTagContext: a, mergeTagActive: l, linkTagContext: c, linkTagActive: p } = n;
2966
- return Fn(e, a ?? {}, l ?? !1, c ?? {}, p ?? !1);
2965
+ const { mergeTagContext: a, mergeTagActive: l, linkTagContext: c, linkTagActive: m } = n;
2966
+ return Hn(e, a ?? {}, l ?? !1, c ?? {}, m ?? !1);
2967
2967
  }
2968
2968
  return e;
2969
- }, Un = (e, t, r) => {
2969
+ }, Jn = (e, t, r) => {
2970
2970
  if (t === "wrap" || !r) return e;
2971
2971
  const { mergeTagContext: n, mergeTagActive: o, linkTagContext: i, linkTagActive: a } = r;
2972
- return !o && !a ? e : Fn(e, n, o, i, a);
2973
- }, Vt = /* @__PURE__ */ new Map(), Jn = /* @__PURE__ */ new Map();
2974
- function ha(e, t, r) {
2975
- Vt.set(e, t), r && Jn.set(e, r);
2972
+ return !o && !a ? e : Hn(e, n, o, i, a);
2973
+ }, Kt = /* @__PURE__ */ new Map(), Gn = /* @__PURE__ */ new Map();
2974
+ function va(e, t, r) {
2975
+ Kt.set(e, t), r && Gn.set(e, r);
2976
2976
  }
2977
- var yo = {
2977
+ var So = {
2978
2978
  label: "Custom",
2979
2979
  group: "custom",
2980
2980
  description: "Registered ESP syntax with no metadata override.",
2981
2981
  supportsNesting: !0
2982
2982
  };
2983
- function So(e, t) {
2984
- return t[e] ?? Vt.get(e) ?? yo;
2983
+ function ko(e, t) {
2984
+ return t[e] ?? Kt.get(e) ?? So;
2985
2985
  }
2986
- function Gn(e) {
2987
- return Jn.get(e);
2986
+ function qn(e) {
2987
+ return Gn.get(e);
2988
2988
  }
2989
- function va() {
2990
- return [...Vt.entries()].map(([e, t]) => ({
2989
+ function ba() {
2990
+ return [...Kt.entries()].map(([e, t]) => ({
2991
2991
  id: e,
2992
2992
  meta: t
2993
2993
  }));
2994
2994
  }
2995
- var ko = {
2995
+ var wo = {
2996
2996
  handlebars: {
2997
2997
  label: "Handlebars (Generic)",
2998
2998
  group: "handlebars",
@@ -3088,7 +3088,7 @@ var ko = {
3088
3088
  description: "Microsoft Office VML conditional comments for Outlook",
3089
3089
  supportsNesting: !1
3090
3090
  }
3091
- }, ba = [
3091
+ }, $a = [
3092
3092
  {
3093
3093
  syntax: "handlebars",
3094
3094
  label: "Handlebars",
@@ -3299,7 +3299,7 @@ var ko = {
3299
3299
  is_empty: "none",
3300
3300
  date: "none"
3301
3301
  }
3302
- ], wo = (e, t) => {
3302
+ ], xo = (e, t) => {
3303
3303
  const r = Ge(e);
3304
3304
  switch (t) {
3305
3305
  case "sfmc":
@@ -3312,7 +3312,7 @@ var ko = {
3312
3312
  return r;
3313
3313
  }
3314
3314
  }, Te = (e, t) => {
3315
- const { operator: r, value: n } = e, o = wo(e.tag, t);
3315
+ const { operator: r, value: n } = e, o = xo(e.tag, t);
3316
3316
  switch (t) {
3317
3317
  case "handlebars":
3318
3318
  case "sendgrid":
@@ -3388,9 +3388,9 @@ var ko = {
3388
3388
  case "is_not_empty":
3389
3389
  return `${o} != blank`;
3390
3390
  case "date_before":
3391
- return `${Nt(e.tag)} < ${Bt(e.tag, n)}`;
3391
+ return `${Bt(e.tag)} < ${Ot(e.tag, n)}`;
3392
3392
  case "date_after":
3393
- return `${Nt(e.tag)} > ${Bt(e.tag, n)}`;
3393
+ return `${Bt(e.tag)} > ${Ot(e.tag, n)}`;
3394
3394
  case "date_on":
3395
3395
  return `${o} | date: '%F' == '${n}'`;
3396
3396
  default:
@@ -3553,7 +3553,7 @@ var ko = {
3553
3553
  default:
3554
3554
  return `${o} == '${n}'`;
3555
3555
  }
3556
- }, fn = (e, t, r) => {
3556
+ }, gn = (e, t, r) => {
3557
3557
  if (e.length === 1) return e[0];
3558
3558
  switch (r) {
3559
3559
  case "handlebars":
@@ -3576,8 +3576,8 @@ var ko = {
3576
3576
  default:
3577
3577
  return e.join(t === "all" ? " && " : " || ");
3578
3578
  }
3579
- }, qn = (e, t) => {
3580
- const r = Gn(t)?.wrapOpenTag;
3579
+ }, Wn = (e, t) => {
3580
+ const r = qn(t)?.wrapOpenTag;
3581
3581
  if (r) return r(e);
3582
3582
  switch (t) {
3583
3583
  case "handlebars":
@@ -3606,8 +3606,8 @@ var ko = {
3606
3606
  default:
3607
3607
  return `{{#if ${e}}}`;
3608
3608
  }
3609
- }, Wn = (e) => {
3610
- const t = Gn(e)?.wrapCloseTag;
3609
+ }, Vn = (e) => {
3610
+ const t = qn(e)?.wrapCloseTag;
3611
3611
  if (t) return t();
3612
3612
  switch (e) {
3613
3613
  case "handlebars":
@@ -3636,29 +3636,29 @@ var ko = {
3636
3636
  default:
3637
3637
  return "{{/if}}";
3638
3638
  }
3639
- }, Nt = (e) => `__esp_ts_${e.replace(/[^a-zA-Z0-9]/g, "_")}`, Bt = (e, t) => `__esp_cmp_${e.replace(/[^a-zA-Z0-9]/g, "_")}_${t.replace(/[^a-zA-Z0-9]/g, "_")}`, xo = (e) => {
3639
+ }, Bt = (e) => `__esp_ts_${e.replace(/[^a-zA-Z0-9]/g, "_")}`, Ot = (e, t) => `__esp_cmp_${e.replace(/[^a-zA-Z0-9]/g, "_")}_${t.replace(/[^a-zA-Z0-9]/g, "_")}`, Co = (e) => {
3640
3640
  const t = /* @__PURE__ */ new Set(), r = [];
3641
3641
  for (const n of e) {
3642
3642
  const o = n.operator;
3643
3643
  if (o !== "date_before" && o !== "date_after") continue;
3644
- const i = Nt(n.tag), a = Bt(n.tag, n.value);
3644
+ const i = Bt(n.tag), a = Ot(n.tag, n.value);
3645
3645
  t.has(i) || (t.add(i), r.push(`{%- assign ${i} = ${Ge(n.tag)} | date: '%s' -%}`)), t.has(a) || (t.add(a), r.push(`{%- assign ${a} = '${n.value}' | date: '%s' -%}`));
3646
3646
  }
3647
3647
  return r;
3648
- }, Co = (e) => e === "liquid" || e === "klaviyo" || e === "braze" || e === "hubspot", _o = (e, t) => {
3649
- const r = (a, l) => a.length === 0 ? l : [...a].reverse().reduce((c, p) => `*|IF:${p}|*
3648
+ }, _o = (e) => e === "liquid" || e === "klaviyo" || e === "braze" || e === "hubspot", To = (e, t) => {
3649
+ const r = (a, l) => a.length === 0 ? l : [...a].reverse().reduce((c, m) => `*|IF:${m}|*
3650
3650
  ${c}
3651
3651
  *|END:IF|*`, l), n = (a, l) => a.length === 0 ? l : a.map((c) => `*|IF:${c}|*
3652
3652
  ${l}
3653
3653
  *|END:IF|*`).join(`
3654
3654
  `), o = (a, l, c) => {
3655
- const p = a.map((v) => Te(v, "mailchimp")).filter((v) => v !== null);
3656
- return p.length === 0 ? null : l === "all" ? r(p, c) : n(p, c);
3655
+ const m = a.map((b) => Te(b, "mailchimp")).filter((b) => b !== null);
3656
+ return m.length === 0 ? null : l === "all" ? r(m, c) : n(m, c);
3657
3657
  }, i = (t.rules ?? []).map((a) => Te(a, "mailchimp")).filter((a) => a !== null);
3658
3658
  if (t.match === "all") {
3659
3659
  let a = e;
3660
3660
  for (const l of [...t.groups ?? []].reverse()) {
3661
- const c = l.rules.map((p) => Te(p, "mailchimp")).filter((p) => p !== null);
3661
+ const c = l.rules.map((m) => Te(m, "mailchimp")).filter((m) => m !== null);
3662
3662
  c.length !== 0 && (a = l.match === "all" ? r(c, a) : n(c, a));
3663
3663
  }
3664
3664
  return i.length > 0 ? r(i, a) : a;
@@ -3669,54 +3669,54 @@ ${e}
3669
3669
  return a.length > 0 ? a.join(`
3670
3670
  `) : e;
3671
3671
  }
3672
- }, Vn = (e, t) => {
3673
- const r = So(t, ko), n = (e.rules ?? []).map((a) => Te(a, t)).filter((a) => a !== null);
3672
+ }, Kn = (e, t) => {
3673
+ const r = ko(t, wo), n = (e.rules ?? []).map((a) => Te(a, t)).filter((a) => a !== null);
3674
3674
  let o;
3675
3675
  r.supportsNesting ? o = (e.groups ?? []).map((a) => {
3676
- const l = a.rules.map((p) => Te(p, t)).filter((p) => p !== null);
3676
+ const l = a.rules.map((m) => Te(m, t)).filter((m) => m !== null);
3677
3677
  if (l.length === 0) return null;
3678
- const c = fn(l, a.match, t);
3678
+ const c = gn(l, a.match, t);
3679
3679
  return l.length > 1 ? `(${c})` : c;
3680
3680
  }).filter((a) => a !== null) : o = (e.groups ?? []).flatMap((a) => a.rules).map((a) => Te(a, t)).filter((a) => a !== null);
3681
3681
  const i = [...n, ...o];
3682
3682
  return i.length === 0 ? null : {
3683
- expression: fn(i, e.match, t),
3684
- preludes: Co(t) ? xo([...e.rules ?? [], ...(e.groups ?? []).flatMap((a) => a.rules)]) : []
3683
+ expression: gn(i, e.match, t),
3684
+ preludes: _o(t) ? Co([...e.rules ?? [], ...(e.groups ?? []).flatMap((a) => a.rules)]) : []
3685
3685
  };
3686
3686
  }, be = (e, t, r = "handlebars") => {
3687
3687
  if (!t?.enabled) return e;
3688
3688
  const n = (t.rules?.length ?? 0) > 0, o = (t.groups?.length ?? 0) > 0;
3689
3689
  if (!n && !o) return e;
3690
- if (r === "mailchimp") return _o(e, t);
3691
- const i = Vn(t, r);
3690
+ if (r === "mailchimp") return To(e, t);
3691
+ const i = Kn(t, r);
3692
3692
  if (!i) return e;
3693
- const { expression: a, preludes: l } = i, c = qn(a, r), p = Wn(r);
3693
+ const { expression: a, preludes: l } = i, c = Wn(a, r), m = Vn(r);
3694
3694
  return `${l.length > 0 ? `${l.join(`
3695
3695
  `)}
3696
3696
  ` : ""}${c}
3697
3697
  ${e}
3698
- ${p}`;
3699
- }, $a = (e, t = "handlebars") => {
3698
+ ${m}`;
3699
+ }, ya = (e, t = "handlebars") => {
3700
3700
  if (!e?.enabled) return null;
3701
3701
  const r = (e.rules?.length ?? 0) > 0, n = (e.groups?.length ?? 0) > 0;
3702
3702
  if (!r && !n) return null;
3703
3703
  if (t === "mailchimp") {
3704
- const c = [...e.rules ?? [], ...(e.groups ?? []).flatMap((v) => v.rules)], p = c.map((v) => Te(v, "mailchimp")).find((v) => v !== null);
3705
- return p ? {
3706
- openTag: `*|IF:${p}|*${c.length > 1 && e.match === "all" ? " …nested…" : ""}`,
3704
+ const c = [...e.rules ?? [], ...(e.groups ?? []).flatMap((b) => b.rules)], m = c.map((b) => Te(b, "mailchimp")).find((b) => b !== null);
3705
+ return m ? {
3706
+ openTag: `*|IF:${m}|*${c.length > 1 && e.match === "all" ? " …nested…" : ""}`,
3707
3707
  closeTag: "*|END:IF|*"
3708
3708
  } : null;
3709
3709
  }
3710
- const o = Vn(e, t);
3710
+ const o = Kn(e, t);
3711
3711
  if (!o) return null;
3712
- const { expression: i, preludes: a } = o, l = qn(i, t);
3712
+ const { expression: i, preludes: a } = o, l = Wn(i, t);
3713
3713
  return {
3714
3714
  openTag: `${a.length > 0 ? `${a.join(`
3715
3715
  `)}
3716
3716
  ` : ""}${l}`,
3717
- closeTag: Wn(t)
3717
+ closeTag: Vn(t)
3718
3718
  };
3719
- }, Kn = (e) => {
3719
+ }, Yn = (e) => {
3720
3720
  const t = Ge(e.tag), r = String(e.value ?? "");
3721
3721
  switch (e.operator) {
3722
3722
  case "==":
@@ -3760,21 +3760,21 @@ ${p}`;
3760
3760
  default:
3761
3761
  return "true";
3762
3762
  }
3763
- }, To = (e) => {
3763
+ }, Ao = (e) => {
3764
3764
  if (!e.rules.length) return null;
3765
- const t = e.rules.map(Kn);
3765
+ const t = e.rules.map(Yn);
3766
3766
  return t.length === 1 ? t[0] : `(${t.join(e.match === "any" ? " || " : " && ")})`;
3767
- }, Ao = (e) => {
3768
- const t = (e.rules ?? []).map(Kn), r = (e.groups ?? []).map(To).filter((i) => i !== null), n = [...t, ...r];
3767
+ }, Ro = (e) => {
3768
+ const t = (e.rules ?? []).map(Yn), r = (e.groups ?? []).map(Ao).filter((i) => i !== null), n = [...t, ...r];
3769
3769
  if (n.length === 0) return null;
3770
3770
  if (n.length === 1) return n[0];
3771
3771
  const o = e.match === "any" ? " || " : " && ";
3772
3772
  return `(${n.join(o)})`;
3773
- }, rt = (e, t) => {
3773
+ }, nt = (e, t) => {
3774
3774
  if (!t?.enabled) return e;
3775
3775
  const r = (t.rules?.length ?? 0) > 0, n = (t.groups?.length ?? 0) > 0;
3776
3776
  if (!r && !n) return e;
3777
- const o = Ao(t);
3777
+ const o = Ro(t);
3778
3778
  return o ? `{${o} && (
3779
3779
  ${e.split(`
3780
3780
  `).map((i) => ` ${i}`).join(`
@@ -3783,9 +3783,9 @@ ${e.split(`
3783
3783
  }, Ae = ({ content: e, filename: t, mimeType: r }) => {
3784
3784
  const n = new Blob([e], { type: r }), o = URL.createObjectURL(n), i = document.createElement("a");
3785
3785
  i.href = o, i.download = t, i.click(), URL.revokeObjectURL(o);
3786
- }, ht = (e) => e.toLowerCase().replace(/\s+/g, "-"), Ne = (e, t) => `${e}${t === "wrap" ? "-master" : "-snapshot"}`, Ro = /(<style[\s>][\s\S]*?<\/style>|<script[\s>][\s\S]*?<\/script>|<!--[\s\S]*?-->)/gi;
3787
- function Yn(e) {
3788
- const t = e.split(Ro), r = [];
3786
+ }, gt = (e) => e.toLowerCase().replace(/\s+/g, "-"), Ne = (e, t) => `${e}${t === "wrap" ? "-master" : "-snapshot"}`, Eo = /(<style[\s>][\s\S]*?<\/style>|<script[\s>][\s\S]*?<\/script>|<!--[\s\S]*?-->)/gi;
3787
+ function Xn(e) {
3788
+ const t = e.split(Eo), r = [];
3789
3789
  return t.forEach((n, o) => {
3790
3790
  if (o % 2 === 1) {
3791
3791
  let i = n.replace(/^[ \t]+|[ \t]+$/gm, "");
@@ -3797,13 +3797,13 @@ function Yn(e) {
3797
3797
  }
3798
3798
  }), r.join("");
3799
3799
  }
3800
- function Eo(e) {
3801
- return e && Yn(e);
3802
- }
3803
3800
  function Mo(e) {
3804
- return e && Yn(e);
3801
+ return e && Xn(e);
3805
3802
  }
3806
3803
  function Io(e) {
3804
+ return e && Xn(e);
3805
+ }
3806
+ function No(e) {
3807
3807
  if (!e) return e;
3808
3808
  let t = e.replace(/^[ \t]+|[ \t]+$/gm, "");
3809
3809
  return t = t.replace(/\n{3,}/g, `
@@ -3813,71 +3813,71 @@ function Io(e) {
3813
3813
  function Be(e, t) {
3814
3814
  switch (e) {
3815
3815
  case "html":
3816
- return Eo(t);
3817
- case "mjml":
3818
3816
  return Mo(t);
3819
- case "react-email":
3817
+ case "mjml":
3820
3818
  return Io(t);
3819
+ case "react-email":
3820
+ return No(t);
3821
3821
  default:
3822
3822
  return t;
3823
3823
  }
3824
3824
  }
3825
- var Xn = "maildeno:export:minify", lt = L(No());
3826
- function No() {
3825
+ var Qn = "maildeno:export:minify", st = L(Bo());
3826
+ function Bo() {
3827
3827
  if (typeof window > "u") return !1;
3828
3828
  try {
3829
- return localStorage.getItem(Xn) === "true";
3829
+ return localStorage.getItem(Qn) === "true";
3830
3830
  } catch {
3831
3831
  return !1;
3832
3832
  }
3833
3833
  }
3834
- hn(lt, (e) => {
3834
+ vn(st, (e) => {
3835
3835
  if (!(typeof window > "u"))
3836
3836
  try {
3837
- localStorage.setItem(Xn, String(e));
3837
+ localStorage.setItem(Qn, String(e));
3838
3838
  } catch {
3839
3839
  }
3840
3840
  });
3841
- function Kt() {
3841
+ function Yt() {
3842
3842
  return {
3843
- minifyOutput: lt,
3843
+ minifyOutput: st,
3844
3844
  toggleMinify: () => {
3845
- lt.value = !lt.value;
3845
+ st.value = !st.value;
3846
3846
  }
3847
3847
  };
3848
3848
  }
3849
- var Bo = 5, Oo = (e) => {
3850
- const { rows: t, canvasStyles: r, generators: n, espSyntax: o, visibilityContext: i, tagSubstitution: a, guardEmpty: l, collectFonts: c, collectMobileCSS: p, buildMobileStyleBlock: v } = e, { evaluateVisibility: b } = ft(), E = (s) => s.type === "component" ? s.props?.visibility : s.visibility, w = (s) => {
3849
+ var Oo = 5, jo = (e) => {
3850
+ const { rows: t, canvasStyles: r, generators: n, espSyntax: o, visibilityContext: i, tagSubstitution: a, guardEmpty: l, collectFonts: c, collectMobileCSS: m, buildMobileStyleBlock: b } = e, { evaluateVisibility: h } = mt(), R = (s) => s.type === "component" ? s.props?.visibility : s.visibility, E = (s) => {
3851
3851
  if (!s?.enabled) return !1;
3852
- const S = (s.rules?.length ?? 0) > 0, C = (s.groups?.length ?? 0) > 0;
3853
- return S || C;
3854
- }, R = (s, S, C, _) => {
3855
- let g = "";
3856
- for (const m of s) {
3857
- if (C === "prune" && !b(E(m), S)) continue;
3858
- const h = m.type;
3859
- if (h === "row") {
3860
- if (_ >= Bo) continue;
3861
- const $ = M(m, S, C, _ + 1);
3862
- $.trim() && (g += `<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;">${$}</table>`);
3852
+ const y = (s.rules?.length ?? 0) > 0, C = (s.groups?.length ?? 0) > 0;
3853
+ return y || C;
3854
+ }, x = (s, y, C, _) => {
3855
+ let f = "";
3856
+ for (const p of s) {
3857
+ if (C === "prune" && !h(R(p), y)) continue;
3858
+ const g = p.type;
3859
+ if (g === "row") {
3860
+ if (_ >= Oo) continue;
3861
+ const v = N(p, y, C, _ + 1);
3862
+ v.trim() && (f += `<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;">${v}</table>`);
3863
3863
  continue;
3864
3864
  }
3865
- if (h === "row-spacer") {
3866
- if (!m.height || m.height <= 0) continue;
3867
- const $ = ce(m);
3868
- let k = `<div height="${m.height}" style="height:${m.height}px;line-height:${m.height}px;font-size:1px;mso-line-height-rule:exactly;${$.join(";")}">&nbsp;</div>`;
3869
- C === "wrap" && w(m.visibility) && (k = be(k, m.visibility, o.value)), g += k;
3865
+ if (g === "row-spacer") {
3866
+ if (!p.height || p.height <= 0) continue;
3867
+ const v = ue(p);
3868
+ let S = `<div height="${p.height}" style="height:${p.height}px;line-height:${p.height}px;font-size:1px;mso-line-height-rule:exactly;${v.join(";")}">&nbsp;</div>`;
3869
+ C === "wrap" && E(p.visibility) && (S = be(S, p.visibility, o.value)), f += S;
3870
3870
  continue;
3871
3871
  }
3872
- let x = Un(n.html(m), C, a?.value);
3873
- const y = m.props?.visibility;
3874
- C === "wrap" && w(y) && (x = be(x, y, o.value)), g += x;
3872
+ let w = Jn(n.html(p), C, a?.value);
3873
+ const $ = p.props?.visibility;
3874
+ C === "wrap" && E($) && (w = be(w, $, o.value)), f += w;
3875
3875
  }
3876
- return g;
3877
- }, M = (s, S, C, _ = 0) => {
3876
+ return f;
3877
+ }, N = (s, y, C, _ = 0) => {
3878
3878
  if (s.type === "row-spacer") {
3879
3879
  if (!s.height || s.height <= 0) return "";
3880
- const I = ce(s);
3880
+ const I = ue(s);
3881
3881
  let P = `
3882
3882
  <tr>
3883
3883
  <td>
@@ -3886,66 +3886,66 @@ var Bo = 5, Oo = (e) => {
3886
3886
  </td>
3887
3887
  </tr>
3888
3888
  `;
3889
- return C === "wrap" && w(s.visibility) && (P = be(P, s.visibility, o.value)), P;
3889
+ return C === "wrap" && E(s.visibility) && (P = be(P, s.visibility, o.value)), P;
3890
3890
  }
3891
- const g = ce(s), m = r.value.mobileBreakpoint || 600, h = (s.gap || 0) / m * 100, x = 100 - h * (s.columns.length - 1), y = [];
3892
- let $ = 0;
3891
+ const f = ue(s), p = r.value.mobileBreakpoint || 600, g = (s.gap || 0) / p * 100, w = 100 - g * (s.columns.length - 1), $ = [];
3892
+ let v = 0;
3893
3893
  s.columns.forEach((I) => {
3894
- const P = I.width / 100 * x;
3895
- y.push(P), $ += P;
3894
+ const P = I.width / 100 * w;
3895
+ $.push(P), v += P;
3896
3896
  });
3897
- const k = x - $;
3898
- Math.abs(k) > 0.01 && y.length > 0 && (y[y.length - 1] += k);
3899
- let A = "";
3897
+ const S = w - v;
3898
+ Math.abs(S) > 0.01 && $.length > 0 && ($[$.length - 1] += S);
3899
+ let T = "";
3900
3900
  s.columns.forEach((I, P) => {
3901
- if (C === "prune" && !b(I.props?.visibility, S)) return;
3902
- const V = y[P], q = s.mobileStack ? "mobile-stack" : "", W = ce(I), Q = [
3901
+ if (C === "prune" && !h(I.props?.visibility, y)) return;
3902
+ const V = $[P], q = s.mobileStack ? "mobile-stack" : "", W = ue(I), Z = [
3903
3903
  `width:${V}%`,
3904
3904
  `max-width:${V}%`,
3905
3905
  `vertical-align:${I.verticalAlign ?? "middle"}`,
3906
3906
  "box-sizing:border-box",
3907
3907
  ...W,
3908
- ue(I.border),
3909
- `border-radius:${Y(I.border.radius)}`,
3908
+ de(I.border),
3909
+ `border-radius:${X(I.border.radius)}`,
3910
3910
  "overflow:hidden",
3911
3911
  "line-height:0",
3912
3912
  "font-size:0",
3913
3913
  `padding:${I.padding?.top ?? 0}px ${I.padding?.right ?? 0}px ${I.padding?.bottom ?? 0}px ${I.padding?.left ?? 0}px`
3914
- ], se = I.children ?? I.components ?? [], pe = R(se, S, C, _);
3915
- A += `
3916
- <td valign="${I.verticalAlign ?? "middle"}"${q ? ` class="${q}"` : ""} style="${Q.join(";")}">
3917
- ${pe}
3914
+ ], ee = I.children ?? I.components ?? [], me = x(ee, y, C, _);
3915
+ T += `
3916
+ <td valign="${I.verticalAlign ?? "middle"}"${q ? ` class="${q}"` : ""} style="${Z.join(";")}">
3917
+ ${me}
3918
3918
  </td>
3919
- `, P < s.columns.length - 1 && s.gap && (A += `
3919
+ `, P < s.columns.length - 1 && s.gap && (T += `
3920
3920
  <td
3921
3921
  class="${q ? `gap-${s.gap} ${q}` : `gap-${s.gap}`}"
3922
- width="${h}%"
3923
- style="width:${h}%;max-width:${h}%;font-size:0;line-height:0;padding:0;">
3922
+ width="${g}%"
3923
+ style="width:${g}%;max-width:${g}%;font-size:0;line-height:0;padding:0;">
3924
3924
  &nbsp;
3925
3925
  </td>
3926
3926
  `);
3927
3927
  });
3928
- const f = s.columns.some((I) => ee(I.border?.radius ?? 0));
3929
- let B = `<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:${(s.gap ?? 0) > 0 || f ? "separate" : "collapse"};">
3928
+ const k = s.columns.some((I) => re(I.border?.radius ?? 0));
3929
+ let M = `<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:${(s.gap ?? 0) > 0 || k ? "separate" : "collapse"};">
3930
3930
  <tr>
3931
- ${A}
3931
+ ${T}
3932
3932
  </tr>
3933
3933
  </table>`;
3934
- const z = ee(s.border?.radius ?? 0), N = [
3935
- ...g,
3936
- z ? `border-radius:${Y(s.border.radius, 2)}` : "",
3934
+ const O = re(s.border?.radius ?? 0), B = [
3935
+ ...f,
3936
+ O ? `border-radius:${X(s.border.radius, 2)}` : "",
3937
3937
  "overflow:hidden"
3938
3938
  ].filter(Boolean);
3939
- let F = Pn(B, s.border, [], s.padding);
3940
- return C === "wrap" && w(s.visibility) && (F = be(F, s.visibility, o.value)), (s.minHeight ?? 0) > 0 && N.push(`min-height:${s.minHeight}px`), `
3939
+ let D = Dn(M, s.border, [], s.padding);
3940
+ return C === "wrap" && E(s.visibility) && (D = be(D, s.visibility, o.value)), (s.minHeight ?? 0) > 0 && B.push(`min-height:${s.minHeight}px`), `
3941
3941
  <tr>
3942
- <td${N.length ? ` style="${N.join(";")}"` : ""}>
3943
- ${F}
3942
+ <td${B.length ? ` style="${B.join(";")}"` : ""}>
3943
+ ${D}
3944
3944
  </td>
3945
3945
  </tr>
3946
3946
  `;
3947
- }, O = (s, S) => {
3948
- const { getGoogleFontImports: C } = gt(), { emailMobileStyles: _ } = Jt(), g = i?.value ?? {}, m = C([...c(s, g)]), h = p(s, g, _), x = v(r.value.mobileBreakpoint, h), y = [
3947
+ }, j = (s, y) => {
3948
+ const { getGoogleFontImports: C } = ft(), { emailMobileStyles: _ } = Gt(), f = i?.value ?? {}, p = C([...c(s, f)]), g = m(s, f, _), w = b(r.value.mobileBreakpoint, g), $ = [
3949
3949
  "margin:0",
3950
3950
  "padding:0",
3951
3951
  r.value.bodyBackgroundColor ? `background-color:${r.value.bodyBackgroundColor}` : "",
@@ -3957,7 +3957,7 @@ ${F}
3957
3957
  "min-height:auto"
3958
3958
  ].join(";") : ""
3959
3959
  ].filter(Boolean).join(";");
3960
- let $ = `<!DOCTYPE html>
3960
+ let v = `<!DOCTYPE html>
3961
3961
  <html lang="${r.value.language}" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
3962
3962
  <head>
3963
3963
  <meta charset="UTF-8">
@@ -3968,7 +3968,7 @@ ${F}
3968
3968
  <meta name="color-scheme" content="light dark">
3969
3969
  <meta name="supported-color-schemes" content="light dark">
3970
3970
  <meta name="format-detection" content="telephone=no, date=no, address=no, email=no, url=no">
3971
- <title>${S}</title>
3971
+ <title>${y}</title>
3972
3972
  <!--[if mso]>
3973
3973
  <xml>
3974
3974
  <o:OfficeDocumentSettings>
@@ -3977,13 +3977,13 @@ ${F}
3977
3977
  </o:OfficeDocumentSettings>
3978
3978
  </xml>
3979
3979
  <![endif]-->
3980
- ${m ? `<link href="${m}" rel="stylesheet">` : ""}
3980
+ ${p ? `<link href="${p}" rel="stylesheet">` : ""}
3981
3981
  <style>
3982
- ${x}
3982
+ ${w}
3983
3983
  </style>
3984
3984
  </head>
3985
3985
 
3986
- <body style="${y};">
3986
+ <body style="${$};">
3987
3987
  <div style="display:none;font-size:1px;color:#fefefe;line-height:1px;max-height:0;max-width:0;opacity:0;overflow:hidden;">
3988
3988
  ${r.value.preheaderText} &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp;
3989
3989
  </div>
@@ -4000,142 +4000,142 @@ ${r.value.preheaderText} &#847; &zwnj; &nbsp; &#847; &zwnj; &nbsp; &#847; &zwnj;
4000
4000
  style="width:100%;max-width:${r.value.width}px;background:${r.value.backgroundColor};border-collapse:collapse;"
4001
4001
  >
4002
4002
  `;
4003
- return t.value.forEach((k) => {
4004
- if (s === "prune" && !b(k.visibility, g)) return;
4005
- const A = M(k, g, s, 0);
4006
- A.trim() && ($ += A);
4007
- }), $ += `
4003
+ return t.value.forEach((S) => {
4004
+ if (s === "prune" && !h(S.visibility, f)) return;
4005
+ const T = N(S, f, s, 0);
4006
+ T.trim() && (v += T);
4007
+ }), v += `
4008
4008
  </table>
4009
4009
  </td>
4010
4010
  </tr>
4011
4011
  </table>
4012
4012
  </body>
4013
4013
  </html>
4014
- `, $ = Hn($, s, o.value, a?.value), $;
4014
+ `, v = Un(v, s, o.value, a?.value), v;
4015
4015
  };
4016
4016
  return {
4017
- export: async (s = "prune", S) => {
4017
+ export: async (s = "prune", y) => {
4018
4018
  if (!l("Export")) return;
4019
- const C = S || "Untitled Template", _ = O(s, C), g = ht(C), { minifyOutput: m } = Kt();
4020
- if (m.value) Ae({
4019
+ const C = y || "Untitled Template", _ = j(s, C), f = gt(C), { minifyOutput: p } = Yt();
4020
+ if (p.value) Ae({
4021
4021
  content: Be("html", _),
4022
- filename: `${Ne(g, s)}.html`,
4022
+ filename: `${Ne(f, s)}.html`,
4023
4023
  mimeType: "text/html"
4024
4024
  });
4025
4025
  else {
4026
- const h = await io(_);
4026
+ const g = await so(_);
4027
4027
  Ae({
4028
- content: h,
4029
- filename: `${Ne(g, s)}.html`,
4028
+ content: g,
4029
+ filename: `${Ne(f, s)}.html`,
4030
4030
  mimeType: "text/html"
4031
4031
  });
4032
4032
  }
4033
4033
  },
4034
- getHTML: (s = "prune", S) => {
4034
+ getHTML: (s = "prune", y) => {
4035
4035
  if (!t.value || t.value.length === 0) return null;
4036
- const C = O(s, S || "Untitled Template");
4036
+ const C = j(s, y || "Untitled Template");
4037
4037
  return Be("html", C);
4038
4038
  }
4039
4039
  };
4040
- }, jo = 5, zo = (e) => {
4041
- const { rows: t, canvasStyles: r, generators: n, espSyntax: o, visibilityContext: i, tagSubstitution: a, guardEmpty: l, collectFonts: c, collectMobileCSS: p, buildMobileStyleBlock: v } = e, { evaluateVisibility: b } = ft(), E = (d) => {
4040
+ }, zo = 5, Lo = (e) => {
4041
+ const { rows: t, canvasStyles: r, generators: n, espSyntax: o, visibilityContext: i, tagSubstitution: a, guardEmpty: l, collectFonts: c, collectMobileCSS: m, buildMobileStyleBlock: b } = e, { evaluateVisibility: h } = mt(), R = (d) => {
4042
4042
  if (!d?.enabled) return !1;
4043
- const s = (d.rules?.length ?? 0) > 0, S = (d.groups?.length ?? 0) > 0;
4044
- return s || S;
4045
- }, w = (d, s, S, C, _) => {
4046
- let g = "";
4047
- for (const m of d) {
4048
- const h = m.type === "component" ? m.props?.visibility : m.visibility;
4049
- if (S === "prune" && !b(h, s)) continue;
4050
- const x = m.type;
4051
- if (x === "row") {
4052
- if (_ >= jo) continue;
4053
- const $ = R(m, s, S, _ + 1);
4054
- $.trim() && (g += ` ${$.trim()}
4043
+ const s = (d.rules?.length ?? 0) > 0, y = (d.groups?.length ?? 0) > 0;
4044
+ return s || y;
4045
+ }, E = (d, s, y, C, _) => {
4046
+ let f = "";
4047
+ for (const p of d) {
4048
+ const g = p.type === "component" ? p.props?.visibility : p.visibility;
4049
+ if (y === "prune" && !h(g, s)) continue;
4050
+ const w = p.type;
4051
+ if (w === "row") {
4052
+ if (_ >= zo) continue;
4053
+ const v = x(p, s, y, _ + 1);
4054
+ v.trim() && (f += ` ${v.trim()}
4055
4055
  `);
4056
4056
  continue;
4057
4057
  }
4058
- if (x === "row-spacer") {
4059
- if (!m.height || m.height <= 0) continue;
4060
- const $ = tt(m), k = Object.keys($).length > 0 ? `, ${Object.entries($).map(([f, B]) => `${f}:"${B}"`).join(", ")}` : "";
4061
- let A = `<div style={{ display: "block", height: "${m.height}px", lineHeight: "${m.height}px", fontSize: "1px"${k} }}>&nbsp;</div>`;
4062
- S === "wrap" && E(m.visibility) && (A = rt(A, m.visibility)), g += ` ${A}
4058
+ if (w === "row-spacer") {
4059
+ if (!p.height || p.height <= 0) continue;
4060
+ const v = et(p), S = Object.keys(v).length > 0 ? `, ${Object.entries(v).map(([k, M]) => `${k}:"${M}"`).join(", ")}` : "";
4061
+ let T = `<div style={{ display: "block", height: "${p.height}px", lineHeight: "${p.height}px", fontSize: "1px"${S} }}>&nbsp;</div>`;
4062
+ y === "wrap" && R(p.visibility) && (T = nt(T, p.visibility)), f += ` ${T}
4063
4063
  `;
4064
4064
  continue;
4065
4065
  }
4066
- let y = Un(n.react(m), S, a?.value);
4067
- S === "wrap" && E(m.props?.visibility) && (y = rt(y, m.props.visibility)), g += ` ${y.trim()}
4066
+ let $ = Jn(n.react(p), y, a?.value);
4067
+ y === "wrap" && R(p.props?.visibility) && ($ = nt($, p.props.visibility)), f += ` ${$.trim()}
4068
4068
  `;
4069
4069
  }
4070
- return g;
4071
- }, R = (d, s, S, C = 0) => {
4072
- if (S === "prune" && !b(d.visibility, s)) return "";
4070
+ return f;
4071
+ }, x = (d, s, y, C = 0) => {
4072
+ if (y === "prune" && !h(d.visibility, s)) return "";
4073
4073
  if (d.type === "row-spacer") {
4074
4074
  if (!d.height || d.height <= 0) return "";
4075
- const I = tt(d), P = Object.keys(I).length > 0 ? `, ${Object.entries(I).map(([q, W]) => `${q}:"${W}"`).join(", ")}` : "";
4075
+ const I = et(d), P = Object.keys(I).length > 0 ? `, ${Object.entries(I).map(([q, W]) => `${q}:"${W}"`).join(", ")}` : "";
4076
4076
  let V = `
4077
4077
  {/* Row Spacer */}
4078
4078
  <Section>
4079
4079
  <div style={{ display: "block", height: "${d.height}px", lineHeight: "${d.height}px", fontSize: "1px"${P} }}>&nbsp;</div>
4080
4080
  </Section>`;
4081
- return S === "wrap" && E(d.visibility) && (V = rt(V, d.visibility)), V;
4081
+ return y === "wrap" && R(d.visibility) && (V = nt(V, d.visibility)), V;
4082
4082
  }
4083
- const _ = r.value.mobileBreakpoint || 600, g = (d.gap || 0) / _ * 100, m = 100 - g * (d.columns.length - 1), h = [];
4084
- let x = 0;
4083
+ const _ = r.value.mobileBreakpoint || 600, f = (d.gap || 0) / _ * 100, p = 100 - f * (d.columns.length - 1), g = [];
4084
+ let w = 0;
4085
4085
  d.columns.forEach((I) => {
4086
- const P = I.width / 100 * m;
4087
- h.push(P), x += P;
4086
+ const P = I.width / 100 * p;
4087
+ g.push(P), w += P;
4088
4088
  });
4089
- const y = m - x;
4090
- Math.abs(y) > 0.01 && h.length > 0 && (h[h.length - 1] += y);
4091
- let $ = "";
4089
+ const $ = p - w;
4090
+ Math.abs($) > 0.01 && g.length > 0 && (g[g.length - 1] += $);
4091
+ let v = "";
4092
4092
  d.columns.forEach((I, P) => {
4093
- if (S === "prune" && !b(I.props?.visibility, s)) return;
4094
- const V = h[P], q = d.mobileStack ? "mobile-stack" : "", W = tt(I), Q = {
4093
+ if (y === "prune" && !h(I.props?.visibility, s)) return;
4094
+ const V = g[P], q = d.mobileStack ? "mobile-stack" : "", W = et(I), Z = {
4095
4095
  width: `${V}%`,
4096
4096
  boxSizing: "border-box",
4097
4097
  verticalAlign: I.verticalAlign ?? "middle",
4098
- ...At(I.border),
4099
- borderRadius: Y(I.border?.radius ?? 0),
4098
+ ...Rt(I.border),
4099
+ borderRadius: X(I.border?.radius ?? 0),
4100
4100
  overflow: "hidden",
4101
4101
  lineHeight: "0",
4102
4102
  fontSize: "0",
4103
4103
  padding: `${I.padding?.top ?? 0}px ${I.padding?.right ?? 0}px ${I.padding?.bottom ?? 0}px ${I.padding?.left ?? 0}px`,
4104
4104
  ...W
4105
- }, se = Object.entries(Q).map(([le, ze]) => `${le}:"${ze}"`).join(", "), pe = I.children ?? I.components ?? [], me = w(pe, s, S, d, C);
4106
- $ += `<Column
4105
+ }, ee = Object.entries(Z).map(([oe, ze]) => `${oe}:"${ze}"`).join(", "), me = I.children ?? I.components ?? [], Se = E(me, s, y, d, C);
4106
+ v += `<Column
4107
4107
  className="${q}"
4108
- style={{ ${se} }}
4108
+ style={{ ${ee} }}
4109
4109
  >
4110
- ${me}
4110
+ ${Se}
4111
4111
  </Column>
4112
- `, P < d.columns.length - 1 && d.gap && ($ += `<Column
4112
+ `, P < d.columns.length - 1 && d.gap && (v += `<Column
4113
4113
  className="${q ? `gap-${d.gap} ${q}` : `gap-${d.gap}`}"
4114
- style={{ width:"${g}%", maxWidth:"${g}%", fontSize:"0", lineHeight:"0" }}
4114
+ style={{ width:"${f}%", maxWidth:"${f}%", fontSize:"0", lineHeight:"0" }}
4115
4115
  >&nbsp;</Column>
4116
4116
  `);
4117
4117
  });
4118
- const k = tt(d), A = ee(d.border?.radius ?? 0), f = {
4119
- ...k,
4120
- ...A ? { borderRadius: Y(d.border.radius, 2) } : {},
4118
+ const S = et(d), T = re(d.border?.radius ?? 0), k = {
4119
+ ...S,
4120
+ ...T ? { borderRadius: X(d.border.radius, 2) } : {},
4121
4121
  overflow: "hidden"
4122
- }, B = Object.entries(f).filter(([I, P]) => P !== void 0 && P !== "").map(([I, P]) => `${I}:"${P}"`).join(", "), z = B ? ` style={{ ${B} }}` : "", N = `<Row>${$}</Row>`;
4123
- let F = ` <Section${z}>
4124
- ${oo(N, d.border, {}, d.padding, !0)}
4122
+ }, M = Object.entries(k).filter(([I, P]) => P !== void 0 && P !== "").map(([I, P]) => `${I}:"${P}"`).join(", "), O = M ? ` style={{ ${M} }}` : "", B = `<Row>${v}</Row>`;
4123
+ let D = ` <Section${O}>
4124
+ ${ao(B, d.border, {}, d.padding, !0)}
4125
4125
  </Section>`;
4126
- return S === "wrap" && E(d.visibility) && (F = rt(F, d.visibility)), F;
4127
- }, M = (d = "prune", s) => {
4128
- const S = s || "Untitled Template", C = S.replace(/[^a-zA-Z0-9 ]/g, "").split(" ").map((N) => N.charAt(0).toUpperCase() + N.slice(1)).join(""), { getGoogleFontImports: _ } = gt(), { emailMobileStyles: g } = Jt(), m = i?.value ?? {}, h = c(d, m), x = _([...h]), y = p(d, m, g), $ = v(r.value.mobileBreakpoint, y), k = t.value.map((N) => R(N, m, d, 0)).filter(Boolean).join(`
4129
- `), A = x?.includes("fonts.googleapis.com"), f = x ? A ? ` {/* Google Fonts via <link> — all families in one request */}
4130
- <link href="${x}" rel="stylesheet" />` : [...h].map((N) => ` <Font
4131
- fontFamily="${mt(N)}"
4126
+ return y === "wrap" && R(d.visibility) && (D = nt(D, d.visibility)), D;
4127
+ }, N = (d = "prune", s) => {
4128
+ const y = s || "Untitled Template", C = y.replace(/[^a-zA-Z0-9 ]/g, "").split(" ").map((B) => B.charAt(0).toUpperCase() + B.slice(1)).join(""), { getGoogleFontImports: _ } = ft(), { emailMobileStyles: f } = Gt(), p = i?.value ?? {}, g = c(d, p), w = _([...g]), $ = m(d, p, f), v = b(r.value.mobileBreakpoint, $), S = t.value.map((B) => x(B, p, d, 0)).filter(Boolean).join(`
4129
+ `), T = w?.includes("fonts.googleapis.com"), k = w ? T ? ` {/* Google Fonts via <link> — all families in one request */}
4130
+ <link href="${w}" rel="stylesheet" />` : [...g].map((B) => ` <Font
4131
+ fontFamily="${pt(B)}"
4132
4132
  fallbackFontFamily="Arial"
4133
- webFont={{ url: "${x}", format: "woff2" }}
4133
+ webFont={{ url: "${w}", format: "woff2" }}
4134
4134
  fontWeight={400}
4135
4135
  fontStyle="normal"
4136
4136
  />`).join(`
4137
4137
  `) : "";
4138
- let B = `import React from "react";
4138
+ let M = `import React from "react";
4139
4139
  import {
4140
4140
  Preview,
4141
4141
  Body,
@@ -4154,10 +4154,10 @@ import {
4154
4154
  Text,
4155
4155
  } from "@react-email/components";
4156
4156
 
4157
- ${x ? A ? "// Google Fonts loaded via <link> (email-safe fallback strategy)" : `// Custom web font${h.size > 1 ? "s" : ""} loaded via <Font> — one instance per family` : "// No custom fonts used"}
4157
+ ${w ? T ? "// Google Fonts loaded via <link> (email-safe fallback strategy)" : `// Custom web font${g.size > 1 ? "s" : ""} loaded via <Font> — one instance per family` : "// No custom fonts used"}
4158
4158
 
4159
4159
  const styles = \`
4160
- ${$}
4160
+ ${v}
4161
4161
  \`;
4162
4162
 
4163
4163
  export default function ${C}() {
@@ -4171,9 +4171,9 @@ export default function ${C}() {
4171
4171
  <meta name="color-scheme" content="light dark" />
4172
4172
  <meta name="supported-color-schemes" content="light dark" />
4173
4173
  <meta name="format-detection" content="telephone=no, date=no, address=no, email=no, url=no" />
4174
- <title>${S}</title>
4174
+ <title>${y}</title>
4175
4175
  <style>{styles}</style>
4176
- ${f}
4176
+ ${k}
4177
4177
  </Head>
4178
4178
  <Preview>${r.value.preheaderText}</Preview>
4179
4179
  <Body style={{ margin:0, padding:0, backgroundColor:"${r.value.bodyBackgroundColor}" }}>
@@ -4197,7 +4197,7 @@ ${f}
4197
4197
  padding:"${r.value.padding?.top ?? 0}px ${r.value.padding?.right ?? 0}px ${r.value.padding?.bottom ?? 0}px ${r.value.padding?.left ?? 0}px"
4198
4198
  }}
4199
4199
  >
4200
- ${k}
4200
+ ${S}
4201
4201
  </Container>
4202
4202
  </Container>
4203
4203
  </Body>
@@ -4205,10 +4205,10 @@ ${k}
4205
4205
  );
4206
4206
  }
4207
4207
  `;
4208
- const z = a?.value?.mergeTagActive || a?.value?.linkTagActive;
4209
- if (d === "wrap" || !z) {
4210
- const N = vo(B), F = new Set(N.map((W) => W.tagId)), I = bo(t.value).filter((W) => !F.has(W)), { propsInterface: P, propsDestructure: V } = ho(N), q = $o(I);
4211
- (P || q) && (B = B.replace(/^(export default function (\w+))\(\)\s*\{/m, [
4208
+ const O = a?.value?.mergeTagActive || a?.value?.linkTagActive;
4209
+ if (d === "wrap" || !O) {
4210
+ const B = bo(M), D = new Set(B.map((W) => W.tagId)), I = $o(t.value).filter((W) => !D.has(W)), { propsInterface: P, propsDestructure: V } = vo(B), q = yo(I);
4211
+ (P || q) && (M = M.replace(/^(export default function (\w+))\(\)\s*\{/m, [
4212
4212
  P ? `${P}
4213
4213
 
4214
4214
  ` : "",
@@ -4216,23 +4216,23 @@ ${k}
4216
4216
  q ? `
4217
4217
  ${q}
4218
4218
  ` : ""
4219
- ].join(""))), B = go(B);
4219
+ ].join(""))), M = ho(M);
4220
4220
  }
4221
- return B = En(B), B;
4221
+ return M = Mn(M), M;
4222
4222
  };
4223
4223
  return {
4224
4224
  export: async (d = "prune", s) => {
4225
4225
  if (!l("Export")) return;
4226
- const S = s || "Untitled Template", C = M(d, S), _ = ht(S), { minifyOutput: g } = Kt();
4227
- if (g.value) Ae({
4226
+ const y = s || "Untitled Template", C = N(d, y), _ = gt(y), { minifyOutput: f } = Yt();
4227
+ if (f.value) Ae({
4228
4228
  content: Be("react-email", C),
4229
4229
  filename: `${Ne(_, d)}.tsx`,
4230
4230
  mimeType: "text/plain"
4231
4231
  });
4232
4232
  else {
4233
- const m = await so(C);
4233
+ const p = await lo(C);
4234
4234
  Ae({
4235
- content: m,
4235
+ content: p,
4236
4236
  filename: `${Ne(_, d)}.tsx`,
4237
4237
  mimeType: "text/plain"
4238
4238
  });
@@ -4240,172 +4240,172 @@ ${q}
4240
4240
  },
4241
4241
  getReactEmail: (d = "prune", s) => {
4242
4242
  if (!t.value || t.value.length === 0) return null;
4243
- const S = M(d, s || "Untitled Template");
4244
- return Be("react-email", S);
4243
+ const y = N(d, s || "Untitled Template");
4244
+ return Be("react-email", y);
4245
4245
  }
4246
4246
  };
4247
- }, Lo = 5, Po = (e) => {
4248
- const { rows: t, canvasStyles: r, generators: n, espSyntax: o, visibilityContext: i, tagSubstitution: a, guardEmpty: l, collectFonts: c, collectMobileCSS: p } = e, { evaluateVisibility: v } = ft(), b = (u) => {
4247
+ }, Po = 5, Do = (e) => {
4248
+ const { rows: t, canvasStyles: r, generators: n, espSyntax: o, visibilityContext: i, tagSubstitution: a, guardEmpty: l, collectFonts: c, collectMobileCSS: m } = e, { evaluateVisibility: b } = mt(), h = (u) => {
4249
4249
  if (!u?.enabled) return !1;
4250
4250
  const d = (u.rules?.length ?? 0) > 0, s = (u.groups?.length ?? 0) > 0;
4251
4251
  return d || s;
4252
- }, E = (u, d, s, S) => {
4252
+ }, R = (u, d, s, y) => {
4253
4253
  let C = "";
4254
4254
  for (const _ of u) {
4255
- const g = _.type === "component" ? _.props?.visibility : _.visibility;
4256
- if (s === "prune" && !v(g, d)) continue;
4257
- const m = _.type;
4258
- if (m === "row") {
4259
- if (S >= Lo) continue;
4260
- const x = w(_, d, s, S + 1);
4261
- if (x.trim()) {
4262
- let y = x;
4263
- s === "wrap" && b(_.visibility) && (y = be(y, _.visibility, o.value)), C += y;
4255
+ const f = _.type === "component" ? _.props?.visibility : _.visibility;
4256
+ if (s === "prune" && !b(f, d)) continue;
4257
+ const p = _.type;
4258
+ if (p === "row") {
4259
+ if (y >= Po) continue;
4260
+ const w = E(_, d, s, y + 1);
4261
+ if (w.trim()) {
4262
+ let $ = w;
4263
+ s === "wrap" && h(_.visibility) && ($ = be($, _.visibility, o.value)), C += $;
4264
4264
  }
4265
4265
  continue;
4266
4266
  }
4267
- if (m === "row-spacer") {
4267
+ if (p === "row-spacer") {
4268
4268
  if (!_.height || _.height <= 0) continue;
4269
- const x = ce(_);
4270
- let y = `<div height="${_.height}" style="height:${_.height}px;line-height:${_.height}px;font-size:1px;mso-line-height-rule:exactly;${x.join(";")}">&nbsp;</div>`;
4271
- s === "wrap" && b(_.visibility) && (y = be(y, _.visibility, o.value)), C += y;
4269
+ const w = ue(_);
4270
+ let $ = `<div height="${_.height}" style="height:${_.height}px;line-height:${_.height}px;font-size:1px;mso-line-height-rule:exactly;${w.join(";")}">&nbsp;</div>`;
4271
+ s === "wrap" && h(_.visibility) && ($ = be($, _.visibility, o.value)), C += $;
4272
4272
  continue;
4273
4273
  }
4274
- let h = `<div style="font-family:none;font-size:0;line-height:0;text-align:left;color:#000000;">${n.mjml(_).replace(/^<mj-text[^>]*>/i, "").replace(/<\/mj-text>\s*$/i, "")}</div>`;
4275
- s === "wrap" && b(_.props?.visibility) && (h = be(h, _.props.visibility, o.value)), C += h;
4274
+ let g = `<div style="font-family:none;font-size:0;line-height:0;text-align:left;color:#000000;">${n.mjml(_).replace(/^<mj-text[^>]*>/i, "").replace(/<\/mj-text>\s*$/i, "")}</div>`;
4275
+ s === "wrap" && h(_.props?.visibility) && (g = be(g, _.props.visibility, o.value)), C += g;
4276
4276
  }
4277
4277
  return C;
4278
- }, w = (u, d, s, S) => {
4278
+ }, E = (u, d, s, y) => {
4279
4279
  if (!u.columns?.length) return "";
4280
- const C = ce(u), _ = r.value.mobileBreakpoint || 600, g = u.gap || 0, m = g / _ * 100, h = 100 - m * (u.columns.length - 1), x = [];
4281
- let y = 0;
4282
- u.columns.forEach((N) => {
4283
- const F = N.width / 100 * h;
4284
- x.push(F), y += F;
4280
+ const C = ue(u), _ = r.value.mobileBreakpoint || 600, f = u.gap || 0, p = f / _ * 100, g = 100 - p * (u.columns.length - 1), w = [];
4281
+ let $ = 0;
4282
+ u.columns.forEach((B) => {
4283
+ const D = B.width / 100 * g;
4284
+ w.push(D), $ += D;
4285
4285
  });
4286
- const $ = h - y;
4287
- Math.abs($) > 0.01 && x.length > 0 && (x[x.length - 1] += $);
4288
- let k = "";
4289
- u.columns.forEach((N, F) => {
4290
- if (s === "prune" && !v(N.props?.visibility, d)) return;
4291
- const I = x[F], P = u.mobileStack ? "mobile-stack" : "", V = ce(N), q = [
4286
+ const v = g - $;
4287
+ Math.abs(v) > 0.01 && w.length > 0 && (w[w.length - 1] += v);
4288
+ let S = "";
4289
+ u.columns.forEach((B, D) => {
4290
+ if (s === "prune" && !b(B.props?.visibility, d)) return;
4291
+ const I = w[D], P = u.mobileStack ? "mobile-stack" : "", V = ue(B), q = [
4292
4292
  `width:${I}%`,
4293
4293
  "box-sizing:border-box",
4294
- `vertical-align:${N.verticalAlign ?? "middle"}`,
4295
- ue(N.border),
4296
- `border-radius:${Y(N.border.radius)}`,
4294
+ `vertical-align:${B.verticalAlign ?? "middle"}`,
4295
+ de(B.border),
4296
+ `border-radius:${X(B.border.radius)}`,
4297
4297
  "overflow:hidden",
4298
4298
  ...V
4299
- ], W = N.children ?? N.components ?? [], Q = E(W, d, s, S), se = Pn(Q, N.border, [], N.padding), pe = P ? ` class="${P}"` : "";
4300
- if (k += `<td valign="${N.verticalAlign ?? "middle"}"${pe} style="${q.join(";")}">
4301
- ${se}
4299
+ ], W = B.children ?? B.components ?? [], Z = R(W, d, s, y), ee = Dn(Z, B.border, [], B.padding), me = P ? ` class="${P}"` : "";
4300
+ if (S += `<td valign="${B.verticalAlign ?? "middle"}"${me} style="${q.join(";")}">
4301
+ ${ee}
4302
4302
  </td>
4303
- `, F < u.columns.length - 1 && g > 0) {
4304
- const me = P ? `gap-${g} ${P}` : `gap-${g}`;
4305
- k += `<td class="${me}" width="${m}%" style="width:${m}%;max-width:${m}%;font-size:0;line-height:0;padding:0;">&nbsp;</td>
4303
+ `, D < u.columns.length - 1 && f > 0) {
4304
+ const Se = P ? `gap-${f} ${P}` : `gap-${f}`;
4305
+ S += `<td class="${Se}" width="${p}%" style="width:${p}%;max-width:${p}%;font-size:0;line-height:0;padding:0;">&nbsp;</td>
4306
4306
  `;
4307
4307
  }
4308
4308
  });
4309
- const A = de(u.border) ? `${ue(u.border)};border-radius:${Y(u.border.radius)};overflow:hidden;` : `border-radius:${Y(u.border.radius)};overflow:hidden;`, f = u.padding ? `${u.padding.top ?? 0}px ${u.padding.right ?? 0}px ${u.padding.bottom ?? 0}px ${u.padding.left ?? 0}px` : "0px", B = C.length ? `${C.join(";")};` : "", z = u.columns.some((N) => ee(N.border?.radius ?? 0));
4310
- return `<div style="padding:${f};${A}${B}">
4311
- <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:${(u.gap ?? 0) > 0 || z ? "separate" : "collapse"};">
4309
+ const T = pe(u.border) ? `${de(u.border)};border-radius:${X(u.border.radius)};overflow:hidden;` : `border-radius:${X(u.border.radius)};overflow:hidden;`, k = u.padding ? `${u.padding.top ?? 0}px ${u.padding.right ?? 0}px ${u.padding.bottom ?? 0}px ${u.padding.left ?? 0}px` : "0px", M = C.length ? `${C.join(";")};` : "", O = u.columns.some((B) => re(B.border?.radius ?? 0));
4310
+ return `<div style="padding:${k};${T}${M}">
4311
+ <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:${(u.gap ?? 0) > 0 || O ? "separate" : "collapse"};">
4312
4312
  <tr>
4313
- ${k}</tr>
4313
+ ${S}</tr>
4314
4314
  </table>
4315
4315
  </div>`;
4316
- }, R = (u = "prune", d) => {
4317
- const s = d || "Untitled Template", { getGoogleFontImports: S } = gt(), { emailMobileStyles: C } = Jt(), { assembleMJML: _ } = Nn(), g = i?.value ?? {}, m = S([...c(u, g)]), h = p(u, g, C), x = Ln(t.value), y = [
4316
+ }, x = (u = "prune", d) => {
4317
+ const s = d || "Untitled Template", { getGoogleFontImports: y } = ft(), { emailMobileStyles: C } = Gt(), { assembleMJML: _ } = Bn(), f = i?.value ?? {}, p = y([...c(u, f)]), g = m(u, f, C), w = Pn(t.value), $ = [
4318
4318
  ".email-container { max-width:100% !important; width:100% !important; }",
4319
4319
  ".desktop-hide { display:block !important; }",
4320
4320
  ".mobile-hide { display:none !important; }",
4321
4321
  ".mobile-stack { display:block !important; width:100% !important; min-width:100% !important; max-width:100% !important; box-sizing:border-box !important; }",
4322
- ...x ? [x] : []
4322
+ ...w ? [w] : []
4323
4323
  ].join(`
4324
4324
 
4325
- `), $ = h.length > 0 ? [
4326
- y,
4325
+ `), v = g.length > 0 ? [
4326
+ $,
4327
4327
  "/* Mobile property overrides */",
4328
- ...h
4328
+ ...g
4329
4329
  ].join(`
4330
- `) : y, k = [];
4331
- t.value.forEach((f) => {
4332
- if (u === "prune" && !v(f.visibility, g)) return;
4333
- if (f.type === "row-spacer") {
4334
- if (!f.height || f.height <= 0) return;
4335
- const H = ce(f);
4336
- let D = ` <mj-raw>
4330
+ `) : $, S = [];
4331
+ t.value.forEach((k) => {
4332
+ if (u === "prune" && !b(k.visibility, f)) return;
4333
+ if (k.type === "row-spacer") {
4334
+ if (!k.height || k.height <= 0) return;
4335
+ const F = ue(k);
4336
+ let te = ` <mj-raw>
4337
4337
  <table width="100%" cellpadding="0" cellspacing="0">
4338
4338
  <tr>
4339
4339
  <td>
4340
- <div height="${f.height}" style="height:${f.height}px;line-height:${f.height}px;font-size:1px;mso-line-height-rule:exactly;${H.join(";")}">&nbsp;</div>
4340
+ <div height="${k.height}" style="height:${k.height}px;line-height:${k.height}px;font-size:1px;mso-line-height-rule:exactly;${F.join(";")}">&nbsp;</div>
4341
4341
  </td>
4342
4342
  </tr>
4343
4343
  </table>
4344
4344
  </mj-raw>`;
4345
- u === "wrap" && b(f.visibility) && (D = be(D, f.visibility, o.value)), k.push(D);
4345
+ u === "wrap" && h(k.visibility) && (te = be(te, k.visibility, o.value)), S.push(te);
4346
4346
  return;
4347
4347
  }
4348
- const B = r.value.mobileBreakpoint || 600, z = f.gap || 0, N = z / B * 100, F = 100 - N * (f.columns.length - 1), I = [];
4348
+ const M = r.value.mobileBreakpoint || 600, O = k.gap || 0, B = O / M * 100, D = 100 - B * (k.columns.length - 1), I = [];
4349
4349
  let P = 0;
4350
- f.columns.forEach((H) => {
4351
- const D = H.width / 100 * F;
4352
- I.push(D), P += D;
4350
+ k.columns.forEach((F) => {
4351
+ const te = F.width / 100 * D;
4352
+ I.push(te), P += te;
4353
4353
  });
4354
- const V = F - P;
4354
+ const V = D - P;
4355
4355
  Math.abs(V) > 0.01 && I.length > 0 && (I[I.length - 1] += V);
4356
- const q = ce(f), W = (() => {
4357
- const H = f.backgroundGradient;
4358
- return H?.useGradient === !0 && Array.isArray(H?.gradient?.colors) && H.gradient.colors.length >= 2 ? H.solid || f.backgroundColor || "" : f.backgroundColor || "";
4359
- })(), Q = W && W !== "transparent" ? W : "", se = f.padding ? `${f.padding.top ?? 0}px ${f.padding.right ?? 0}px ${f.padding.bottom ?? 0}px ${f.padding.left ?? 0}px` : "0px", pe = ee(f.border?.radius ?? 0), me = de(f.border) && !ee(f.border?.radius ?? 0), le = [...q, "overflow:hidden"];
4360
- me && (le.push(ue(f.border)), le.push(`padding:${se}`)), pe && le.push(`border-radius:${Y(f.border.radius, 2)}`), (f.minHeight ?? 0) > 0 && le.push(`min-height:${f.minHeight}px`);
4361
- const ze = le.length ? ` style="${le.join(";")}"` : "";
4356
+ const q = ue(k), W = (() => {
4357
+ const F = k.backgroundGradient;
4358
+ return F?.useGradient === !0 && Array.isArray(F?.gradient?.colors) && F.gradient.colors.length >= 2 ? F.solid || k.backgroundColor || "" : k.backgroundColor || "";
4359
+ })(), Z = W && W !== "transparent" ? W : "", ee = k.padding ? `${k.padding.top ?? 0}px ${k.padding.right ?? 0}px ${k.padding.bottom ?? 0}px ${k.padding.left ?? 0}px` : "0px", me = re(k.border?.radius ?? 0), Se = pe(k.border) && !re(k.border?.radius ?? 0), oe = [...q, "overflow:hidden"];
4360
+ Se && (oe.push(de(k.border)), oe.push(`padding:${ee}`)), me && oe.push(`border-radius:${X(k.border.radius, 2)}`), (k.minHeight ?? 0) > 0 && oe.push(`min-height:${k.minHeight}px`);
4361
+ const ze = oe.length ? ` style="${oe.join(";")}"` : "";
4362
4362
  let Le = "";
4363
- de(f.border) && (Le = `${ue(f.border)};`, ee(f.border?.radius ?? 0) && (Le += `border-radius:${Y(f.border.radius)};overflow:hidden;`));
4364
- const We = [
4365
- `padding:${se}`,
4363
+ pe(k.border) && (Le = `${de(k.border)};`, re(k.border?.radius ?? 0) && (Le += `border-radius:${X(k.border.radius)};overflow:hidden;`));
4364
+ const ht = [
4365
+ `padding:${ee}`,
4366
4366
  "font-size:0",
4367
4367
  "line-height:0",
4368
4368
  Le
4369
4369
  ].filter(Boolean).join(";");
4370
- let U = "";
4371
- f.columns.forEach((H, D) => {
4372
- if (u === "prune" && !v(H.props?.visibility, g)) return;
4373
- const te = I[D], Re = f.mobileStack ? "mobile-stack" : "", vt = ce(H), bt = [
4374
- `width:${te}%`,
4370
+ let Re = "";
4371
+ k.columns.forEach((F, te) => {
4372
+ if (u === "prune" && !b(F.props?.visibility, f)) return;
4373
+ const H = I[te], Q = k.mobileStack ? "mobile-stack" : "", vt = ue(F), bt = [
4374
+ `width:${H}%`,
4375
4375
  "box-sizing:border-box",
4376
- `vertical-align:${H.verticalAlign ?? "middle"}`,
4376
+ `vertical-align:${F.verticalAlign ?? "middle"}`,
4377
4377
  ...vt,
4378
- ue(H.border),
4379
- `border-radius:${Y(H.border?.radius ?? 0)}`,
4378
+ de(F.border),
4379
+ `border-radius:${X(F.border?.radius ?? 0)}`,
4380
4380
  "overflow:hidden",
4381
4381
  "line-height:0",
4382
4382
  "font-size:0",
4383
- `padding:${H.padding?.top ?? 0}px ${H.padding?.right ?? 0}px ${H.padding?.bottom ?? 0}px ${H.padding?.left ?? 0}px`
4384
- ], Ve = H.children ?? H.components ?? [], $t = E(Ve, g, u, 0), yt = Re ? ` class="${Re}"` : "";
4385
- if (U += `<td valign="${H.verticalAlign ?? "middle"}"${yt} style="${bt.join(";")}">
4386
- ${$t}
4383
+ `padding:${F.padding?.top ?? 0}px ${F.padding?.right ?? 0}px ${F.padding?.bottom ?? 0}px ${F.padding?.left ?? 0}px`
4384
+ ], $t = F.children ?? F.components ?? [], We = R($t, f, u, 0), yt = Q ? ` class="${Q}"` : "";
4385
+ if (Re += `<td valign="${F.verticalAlign ?? "middle"}"${yt} style="${bt.join(";")}">
4386
+ ${We}
4387
4387
  </td>
4388
- `, D < f.columns.length - 1 && z > 0) {
4389
- const ne = Re ? `gap-${z} ${Re}` : `gap-${z}`;
4390
- U += `<td class="${ne}" width="${N}%" style="width:${N}%;max-width:${N}%;font-size:0;line-height:0;padding:0;">&nbsp;</td>
4388
+ `, te < k.columns.length - 1 && O > 0) {
4389
+ const St = Q ? `gap-${O} ${Q}` : `gap-${O}`;
4390
+ Re += `<td class="${St}" width="${B}%" style="width:${B}%;max-width:${B}%;font-size:0;line-height:0;padding:0;">&nbsp;</td>
4391
4391
  `;
4392
4392
  }
4393
4393
  });
4394
- const X = f.columns.some((H) => ee(H.border?.radius ?? 0));
4395
- let ke = `<div style="${We}">${`<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:${(f.gap ?? 0) > 0 || X ? "separate" : "collapse"};">
4394
+ const U = k.columns.some((F) => re(F.border?.radius ?? 0));
4395
+ let K = `<div style="${ht}">${`<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:${(k.gap ?? 0) > 0 || U ? "separate" : "collapse"};">
4396
4396
  <tr>
4397
- ${U}</tr>
4397
+ ${Re}</tr>
4398
4398
  </table>`}</div>`;
4399
- u === "wrap" && b(f.visibility) && (ke = be(ke, f.visibility, o.value));
4400
- const $e = r.value.width ?? 600;
4401
- k.push(` <mj-raw>
4402
- <!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:${$e}px;" width="${$e}"${Q ? ` bgcolor="${Q}"` : ""}><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
4403
- <div style="margin:0px auto;max-width:${$e}px;">
4399
+ u === "wrap" && h(k.visibility) && (K = be(K, k.visibility, o.value));
4400
+ const ke = r.value.width ?? 600;
4401
+ S.push(` <mj-raw>
4402
+ <!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:${ke}px;" width="${ke}"${Z ? ` bgcolor="${Z}"` : ""}><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
4403
+ <div style="margin:0px auto;max-width:${ke}px;">
4404
4404
  <table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
4405
4405
  <tbody>
4406
4406
  <tr>
4407
4407
  <td${ze}>
4408
- ${ke}
4408
+ ${K}
4409
4409
  </td>
4410
4410
  </tr>
4411
4411
  </tbody>
@@ -4414,23 +4414,23 @@ ${U}</tr>
4414
4414
  <!--[if mso | IE]></td></tr></table><![endif]-->
4415
4415
  </mj-raw>`);
4416
4416
  });
4417
- let A = _(s, k.join(`
4418
- `), r.value, m, $, r.value.mobileBreakpoint ?? 600, "");
4419
- return A = Hn(A, u, o.value, a?.value, !0), A;
4417
+ let T = _(s, S.join(`
4418
+ `), r.value, p, v, r.value.mobileBreakpoint ?? 600, "");
4419
+ return T = Un(T, u, o.value, a?.value, !0), T;
4420
4420
  };
4421
4421
  return {
4422
4422
  export: async (u = "prune", d) => {
4423
4423
  if (!l("Export")) return;
4424
- const s = d || "Untitled Template", S = R(u, s), C = ht(s), { minifyOutput: _ } = Kt();
4424
+ const s = d || "Untitled Template", y = x(u, s), C = gt(s), { minifyOutput: _ } = Yt();
4425
4425
  if (_.value) Ae({
4426
- content: Be("mjml", S),
4426
+ content: Be("mjml", y),
4427
4427
  filename: `${Ne(C, u)}.mjml`,
4428
4428
  mimeType: "text/plain"
4429
4429
  });
4430
4430
  else {
4431
- const g = await lo(S);
4431
+ const f = await co(y);
4432
4432
  Ae({
4433
- content: g,
4433
+ content: f,
4434
4434
  filename: `${Ne(C, u)}.mjml`,
4435
4435
  mimeType: "text/plain"
4436
4436
  });
@@ -4438,59 +4438,59 @@ ${U}</tr>
4438
4438
  },
4439
4439
  getMJML: (u = "prune", d) => {
4440
4440
  if (!t.value || t.value.length === 0) return null;
4441
- const s = R(u, d || "Untitled Template");
4441
+ const s = x(u, d || "Untitled Template");
4442
4442
  return Be("mjml", s);
4443
4443
  }
4444
4444
  };
4445
- }, Do = (e) => {
4446
- const { rows: t, canvasStyles: r, saveToHistoryFn: n, guardEmpty: o } = e, i = e.notify ?? ((v, b = "Import failed") => console.error(`[maildeno-editor] ${b}: ${v}`)), a = (v) => {
4447
- const b = v || "Untitled Template";
4445
+ }, Fo = (e) => {
4446
+ const { rows: t, canvasStyles: r, saveToHistoryFn: n, guardEmpty: o } = e, i = e.notify ?? ((b, h = "Import failed") => console.error(`[maildeno-editor] ${h}: ${b}`)), a = (b) => {
4447
+ const h = b || "Untitled Template";
4448
4448
  return {
4449
- template_id: it(b),
4450
- template_name: b,
4451
- canvas: Tn(JSON.parse(JSON.stringify(r.value))),
4452
- rows: An(JSON.parse(JSON.stringify(t.value))),
4449
+ template_id: at(h),
4450
+ template_name: h,
4451
+ canvas: An(JSON.parse(JSON.stringify(r.value))),
4452
+ rows: Rn(JSON.parse(JSON.stringify(t.value))),
4453
4453
  schema_version: "1.0"
4454
4454
  };
4455
4455
  };
4456
4456
  return {
4457
- export: (v) => {
4457
+ export: (b) => {
4458
4458
  if (!o("Export")) return;
4459
- const b = a(v);
4459
+ const h = a(b);
4460
4460
  Ae({
4461
- content: JSON.stringify(b, null, 2),
4462
- filename: `${ht(b.template_name)}.json`,
4461
+ content: JSON.stringify(h, null, 2),
4462
+ filename: `${gt(h.template_name)}.json`,
4463
4463
  mimeType: "application/json"
4464
4464
  });
4465
4465
  },
4466
- import: (v, b) => {
4467
- const E = new FileReader();
4468
- E.onload = (w) => {
4466
+ import: (b, h) => {
4467
+ const R = new FileReader();
4468
+ R.onload = (E) => {
4469
4469
  try {
4470
- let R = JSON.parse(w.target?.result);
4471
- R = vn(R), R.canvas && R.rows ? (r.value = ct(R.canvas), t.value = ut(R.rows), b.value = null, n("import")) : i("That file isn't a Maildeno template. Export one from the editor (Export → JSON) and try again.", "Invalid template file");
4472
- } catch (R) {
4473
- i(R.message, "Couldn't load template");
4470
+ let x = JSON.parse(E.target?.result);
4471
+ x = bn(x), x.canvas && x.rows ? (r.value = lt(x.canvas), t.value = ct(x.rows), h.value = null, n("import")) : i("That file isn't a Maildeno template. Export one from the editor (Export → JSON) and try again.", "Invalid template file");
4472
+ } catch (x) {
4473
+ i(x.message, "Couldn't load template");
4474
4474
  }
4475
- }, E.readAsText(v);
4475
+ }, R.readAsText(b);
4476
4476
  },
4477
- getJSON: (v) => !t.value || t.value.length === 0 ? null : a(v)
4477
+ getJSON: (b) => !t.value || t.value.length === 0 ? null : a(b)
4478
4478
  };
4479
- }, Fo = 5, gn = /font-family\s*:\s*([^;<]+)/gi, Ho = (e) => e.replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&apos;/g, "'"), Uo = (e) => {
4479
+ }, Ho = 5, hn = /font-family\s*:\s*([^;<]+)/gi, Uo = (e) => e.replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&apos;/g, "'"), Jo = (e) => {
4480
4480
  if (!e || typeof e != "string") return [];
4481
4481
  if (e.indexOf("font-family") === -1) return [];
4482
- const t = Ho(e), r = [];
4482
+ const t = Uo(e), r = [];
4483
4483
  let n;
4484
- for (gn.lastIndex = 0; (n = gn.exec(t)) !== null; ) {
4484
+ for (hn.lastIndex = 0; (n = hn.exec(t)) !== null; ) {
4485
4485
  const o = n[1];
4486
4486
  if (!o) continue;
4487
4487
  let i = o;
4488
4488
  const a = i.trimStart()[0];
4489
4489
  if (a === '"' || a === "'") {
4490
- const c = i.indexOf(a), p = i.indexOf(a, c + 1);
4491
- if (p !== -1) {
4492
- const v = i.slice(p + 1).search(/["<]/);
4493
- i = v === -1 ? i : i.slice(0, p + 1 + v);
4490
+ const c = i.indexOf(a), m = i.indexOf(a, c + 1);
4491
+ if (m !== -1) {
4492
+ const b = i.slice(m + 1).search(/["<]/);
4493
+ i = b === -1 ? i : i.slice(0, m + 1 + b);
4494
4494
  }
4495
4495
  } else {
4496
4496
  const c = i.search(/["<]/);
@@ -4500,62 +4500,62 @@ ${U}</tr>
4500
4500
  l && r.push(l);
4501
4501
  }
4502
4502
  return r;
4503
- }, Jo = (e, t, r, n, o, i, a, l, c, p) => {
4504
- let v, b, E, w;
4505
- typeof r == "object" && !("value" in r) ? (v = r, b = n, E = o, w = i) : (v = {
4503
+ }, Go = (e, t, r, n, o, i, a, l, c, m) => {
4504
+ let b, h, R, E;
4505
+ typeof r == "object" && !("value" in r) ? (b = r, h = n, R = o, E = i) : (b = {
4506
4506
  html: r,
4507
4507
  react: n,
4508
4508
  mjml: o
4509
- }, b = i, E = a, w = l);
4510
- const { evaluateVisibility: R } = ft(), { open: M } = p ?? eo(), O = c ?? L({ syntax: "handlebars" }), u = ($, k, A, f, B = 0) => {
4511
- if (!(B >= Fo))
4512
- for (const z of $) {
4513
- const N = z.type;
4514
- if (N === "row") {
4515
- if (k === "prune" && !R(z.visibility, A)) continue;
4516
- for (const F of z.columns ?? []) {
4517
- const I = F.children ?? F.components ?? [];
4518
- u(I, k, A, f, B + 1);
4509
+ }, h = i, R = a, E = l);
4510
+ const { evaluateVisibility: x } = mt(), { open: N } = m ?? to(), j = c ?? L({ syntax: "handlebars" }), u = (v, S, T, k, M = 0) => {
4511
+ if (!(M >= Ho))
4512
+ for (const O of v) {
4513
+ const B = O.type;
4514
+ if (B === "row") {
4515
+ if (S === "prune" && !x(O.visibility, T)) continue;
4516
+ for (const D of O.columns ?? []) {
4517
+ const I = D.children ?? D.components ?? [];
4518
+ u(I, S, T, k, M + 1);
4519
4519
  }
4520
4520
  continue;
4521
4521
  }
4522
- N !== "row-spacer" && (k === "prune" && !R(z.props?.visibility, A) || f(z));
4522
+ B !== "row-spacer" && (S === "prune" && !x(O.props?.visibility, T) || k(O));
4523
4523
  }
4524
- }, d = ($) => !e.value || e.value.length === 0 ? (M("Your template is empty. Please add at least one row before exporting.", $), !1) : !0, s = ($, k) => {
4525
- const A = /* @__PURE__ */ new Set();
4526
- return e.value.forEach((f) => {
4527
- $ === "prune" && !R(f.visibility, k) || f.columns && f.columns.forEach((B) => {
4528
- const z = B.children ?? B.components ?? [];
4529
- u(z, $, k, (N) => {
4530
- if (N.props?.fontFamily && A.add(N.props.fontFamily), N.props?.mobile?.fontFamily && A.add(N.props.mobile.fontFamily), typeof N.props?.content == "string") {
4531
- const F = Uo(N.props.content);
4532
- for (const I of F) A.add(I);
4524
+ }, d = (v) => !e.value || e.value.length === 0 ? (N("Your template is empty. Please add at least one row before exporting.", v), !1) : !0, s = (v, S) => {
4525
+ const T = /* @__PURE__ */ new Set();
4526
+ return e.value.forEach((k) => {
4527
+ v === "prune" && !x(k.visibility, S) || k.columns && k.columns.forEach((M) => {
4528
+ const O = M.children ?? M.components ?? [];
4529
+ u(O, v, S, (B) => {
4530
+ if (B.props?.fontFamily && T.add(B.props.fontFamily), B.props?.mobile?.fontFamily && T.add(B.props.mobile.fontFamily), typeof B.props?.content == "string") {
4531
+ const D = Jo(B.props.content);
4532
+ for (const I of D) T.add(I);
4533
4533
  }
4534
4534
  });
4535
4535
  });
4536
- }), A;
4537
- }, S = ($, k, A) => {
4538
- const f = [];
4539
- return e.value.forEach((B) => {
4540
- $ === "prune" && !R(B.visibility, k) || B.columns && B.columns.forEach((z) => {
4541
- const N = z.children ?? z.components ?? [];
4542
- u(N, $, k, (F) => {
4543
- const I = A(F, `eb-${F.id}`);
4544
- I && f.push(I);
4536
+ }), T;
4537
+ }, y = (v, S, T) => {
4538
+ const k = [];
4539
+ return e.value.forEach((M) => {
4540
+ v === "prune" && !x(M.visibility, S) || M.columns && M.columns.forEach((O) => {
4541
+ const B = O.children ?? O.components ?? [];
4542
+ u(B, v, S, (D) => {
4543
+ const I = T(D, `eb-${D.id}`);
4544
+ I && k.push(I);
4545
4545
  });
4546
4546
  });
4547
- }), f;
4548
- }, C = ($, k) => {
4549
- const A = Ln(e.value), f = k.length > 0 ? `
4547
+ }), k;
4548
+ }, C = (v, S) => {
4549
+ const T = Pn(e.value), k = S.length > 0 ? `
4550
4550
 
4551
4551
  /* Mobile property overrides */
4552
- ${k.join(`
4552
+ ${S.join(`
4553
4553
 
4554
4554
  `)}` : "";
4555
4555
  return `
4556
4556
  .desktop-hide { display: none !important; }
4557
4557
  ul li:last-child, ol li:last-child { margin-bottom: 0 !important; }
4558
- @media only screen and (max-width:${$}px) {
4558
+ @media only screen and (max-width:${v}px) {
4559
4559
  ${`
4560
4560
  .email-container { max-width:100% !important; width:100% !important; }
4561
4561
 
@@ -4564,41 +4564,41 @@ ${`
4564
4564
  .mobile-hide { display:none !important; }
4565
4565
 
4566
4566
  .mobile-stack { display:block !important; width:100% !important; min-width:100% !important; max-width:100% !important; box-sizing:border-box !important; }
4567
- ${A ? `
4568
- ${A}` : ""}${f}
4567
+ ${T ? `
4568
+ ${T}` : ""}${k}
4569
4569
  `}
4570
4570
  }`;
4571
- }, _ = Ce(() => O.value.syntax), g = {
4571
+ }, _ = Ce(() => j.value.syntax), f = {
4572
4572
  rows: e,
4573
4573
  canvasStyles: t,
4574
- generators: v,
4574
+ generators: b,
4575
4575
  espSyntax: _,
4576
- visibilityContext: E,
4577
- tagSubstitution: w,
4576
+ visibilityContext: R,
4577
+ tagSubstitution: E,
4578
4578
  guardEmpty: d,
4579
4579
  collectFonts: s,
4580
- collectMobileCSS: S,
4580
+ collectMobileCSS: y,
4581
4581
  buildMobileStyleBlock: C
4582
- }, m = Oo(g), h = zo(g), x = Po(g), y = Do({
4582
+ }, p = jo(f), g = Lo(f), w = Do(f), $ = Fo({
4583
4583
  rows: e,
4584
4584
  canvasStyles: t,
4585
- saveToHistoryFn: b,
4585
+ saveToHistoryFn: h,
4586
4586
  guardEmpty: d,
4587
- notify: ($, k) => M($, k ?? "Import failed")
4587
+ notify: (v, S) => N(v, S ?? "Import failed")
4588
4588
  });
4589
4589
  return {
4590
- exportHTML: m.export,
4591
- getExportedHTML: m.getHTML,
4592
- exportReactEmail: h.export,
4593
- getExportedReactEmail: h.getReactEmail,
4594
- exportMJML: x.export,
4595
- getExportedMJML: x.getMJML,
4596
- exportJSON: y.export,
4597
- getExportedJSON: y.getJSON,
4598
- importJSON: y.import,
4599
- espConfig: O
4590
+ exportHTML: p.export,
4591
+ getExportedHTML: p.getHTML,
4592
+ exportReactEmail: g.export,
4593
+ getExportedReactEmail: g.getReactEmail,
4594
+ exportMJML: w.export,
4595
+ getExportedMJML: w.getMJML,
4596
+ exportJSON: $.export,
4597
+ getExportedJSON: $.getJSON,
4598
+ importJSON: $.import,
4599
+ espConfig: j
4600
4600
  };
4601
- }, Go = 3e3, Me = null, Ue, ot, ae = -1, at = () => ({
4601
+ }, qo = 3e3, Me = null, Ue, rt, se = -1, ot = () => ({
4602
4602
  language: "en-US",
4603
4603
  preheaderText: "View this email in your browser",
4604
4604
  bodyBackgroundColor: "#f9fafb",
@@ -4615,320 +4615,320 @@ ${A}` : ""}${f}
4615
4615
  left: 0
4616
4616
  },
4617
4617
  mobileBreakpoint: 600
4618
- }), Qn = /* @__PURE__ */ Symbol("maildeno-editor:email-builder");
4619
- function ya(e, t) {
4620
- const r = qo(e, t);
4621
- return Ie(Qn, r), r;
4618
+ }), Zn = /* @__PURE__ */ Symbol("maildeno-editor:email-builder");
4619
+ function Sa(e, t, r) {
4620
+ const n = Wo(e, t, r);
4621
+ return Ie(Zn, n), n;
4622
4622
  }
4623
- var Sa = () => {
4624
- const e = Oe(Qn);
4623
+ var ka = () => {
4624
+ const e = Oe(Zn);
4625
4625
  if (!e) throw new Error("[maildeno-editor] useEmailBuilder() was called outside an EmailEditor instance. This composable only works inside the component tree under <EmailEditor>, which is where provideEmailBuilder() creates the shared instance.");
4626
4626
  return e;
4627
4627
  };
4628
- function qo(e, t) {
4629
- const r = e ?? hr(), n = vr(), o = L([]), i = L(null), a = L(at()), l = L(null), c = L([]), p = L(null), v = L(null), b = L("properties"), E = L("desktop"), w = L(!1), R = L(!1), M = L(null), O = L("create"), u = L({}), d = L(null), s = (T, j, J = "") => {
4630
- d.value = {
4631
- componentId: T,
4632
- tagName: j,
4628
+ function Wo(e, t, r) {
4629
+ const n = e ?? vr(), o = br(), i = L([]), a = L(null), l = L(ot()), c = L(null), m = L([]), b = L(null), h = L(null), R = L("properties"), E = L("desktop"), x = L(!1), N = L(!1), j = L(null), u = L("create"), d = L({}), s = L(null), y = (A, z, J = "") => {
4630
+ s.value = {
4631
+ componentId: A,
4632
+ tagName: z,
4633
4633
  default: J
4634
4634
  };
4635
- }, S = L({}), C = L(!1), _ = L({}), g = L(!1), m = L(null), h = L(null), x = L(!1), y = L(!1), $ = L(null), k = L({ syntax: "handlebars" }), { defaultProps: A } = jt(), f = xr(), B = () => f.getCurrentState(o, a), z = (T) => f.restoreState(T, o, a, i, p, v), { generateHTMLComponent: N } = Gr(), { generateReactEmailComponent: F } = Yr(), { generateMJMLComponent: I } = Nn(), P = {
4636
- html: N,
4637
- react: F,
4638
- mjml: I
4639
- }, { saveToLocal: V, flushSave: q, loadFromLocal: W, clearLocal: Q, hasDraft: se, saveStatus: pe, lastSaved: me } = Ur(), { syncFontsForTemplate: le } = gt(), ze = 5, Le = (T) => {
4640
- const j = /* @__PURE__ */ new Set(), J = (G, we) => {
4641
- if (!(we >= ze))
4642
- for (const Ke of G) {
4643
- if (!Ke) continue;
4644
- const Qt = Ke.type;
4645
- if (Qt === "row") {
4646
- for (const Zt of Ke.columns ?? []) J(Zt.children ?? Zt.components ?? [], we + 1);
4635
+ }, C = L({}), _ = L(!1), f = L({}), p = L(!1), g = L(null), w = L(null), $ = L(!1), v = L(!1), S = L(null), T = L({ syntax: "handlebars" }), { defaultProps: k } = zt(), M = Cr(), O = () => M.getCurrentState(i, l), B = (A) => M.restoreState(A, i, l, a, b, h), { generateHTMLComponent: D } = qr(), { generateReactEmailComponent: I } = Xr(), { generateMJMLComponent: P } = Bn(), V = {
4636
+ html: D,
4637
+ react: I,
4638
+ mjml: P
4639
+ }, { saveToLocal: q, flushSave: W, loadFromLocal: Z, clearLocal: ee, hasDraft: me, saveStatus: Se, lastSaved: oe } = Jr(), { syncFontsForTemplate: ze } = ft(), Le = 5, ht = (A) => {
4640
+ const z = /* @__PURE__ */ new Set(), J = (G, we) => {
4641
+ if (!(we >= Le))
4642
+ for (const Ve of G) {
4643
+ if (!Ve) continue;
4644
+ const Zt = Ve.type;
4645
+ if (Zt === "row") {
4646
+ for (const en of Ve.columns ?? []) J(en.children ?? en.components ?? [], we + 1);
4647
4647
  continue;
4648
4648
  }
4649
- if (Qt === "row-spacer") continue;
4650
- const Ye = Ke.props;
4651
- Ye?.fontFamily && j.add(Ye.fontFamily), Ye?.mobile?.fontFamily && j.add(Ye.mobile.fontFamily);
4649
+ if (Zt === "row-spacer") continue;
4650
+ const Ke = Ve.props;
4651
+ Ke?.fontFamily && z.add(Ke.fontFamily), Ke?.mobile?.fontFamily && z.add(Ke.mobile.fontFamily);
4652
4652
  }
4653
4653
  };
4654
- for (const G of T)
4654
+ for (const G of A)
4655
4655
  if (G && G.type !== "row-spacer")
4656
4656
  for (const we of G.columns ?? []) J(we.children ?? we.components ?? [], 0);
4657
- return Array.from(j);
4657
+ return Array.from(z);
4658
4658
  };
4659
4659
  {
4660
- let T = null;
4661
- mr(() => {
4662
- const j = Le(o.value);
4663
- T && clearTimeout(T), T = setTimeout(() => {
4664
- T = null, le(j);
4660
+ let A = null;
4661
+ fr(() => {
4662
+ const z = ht(i.value);
4663
+ A && clearTimeout(A), A = setTimeout(() => {
4664
+ A = null, ze(z);
4665
4665
  }, 200);
4666
4666
  });
4667
4667
  }
4668
- const We = gr();
4669
- let U = null, X = !1;
4668
+ const Re = r ?? hr();
4669
+ let U = null, K = !1;
4670
4670
  const ke = () => {
4671
- X || We.value && (U && clearTimeout(U), U = setTimeout(() => {
4671
+ K || Re.value && (U && clearTimeout(U), U = setTimeout(() => {
4672
4672
  U = null;
4673
- const T = f.version.value;
4674
- T !== ae && (ae = T, Ue = l.value ?? void 0, V(o.value, a.value, Me, Ue, ot));
4675
- }, Go));
4673
+ const A = M.version.value;
4674
+ A !== se && (se = A, Ue = c.value ?? void 0, q(i.value, l.value, Me, Ue, rt));
4675
+ }, qo));
4676
4676
  };
4677
- function $e(T = "change", j = !1) {
4678
- f.saveToHistory(B, T, j), ke();
4677
+ function F(A = "change", z = !1) {
4678
+ M.saveToHistory(O, A, z), ke();
4679
4679
  }
4680
- function H(T) {
4681
- $e(T, !0);
4680
+ function te(A) {
4681
+ F(A, !0);
4682
4682
  }
4683
- const D = Sr(o, i, A, H, $e), te = () => D.rebuildIdRegistry(), Re = (T) => D.addRow(T, !0), vt = () => D.addSpacer(!0), bt = (T, j) => D.reorderRows(T, j, !0), Ve = (T, j) => {
4684
- if (T?.id && (j.add(T.id), T.type === "row" && Array.isArray(T.columns)))
4685
- for (const J of T.columns) {
4686
- J?.id && j.add(J.id);
4683
+ const H = kr(i, a, k, te, F), Q = () => H.rebuildIdRegistry(), vt = (A) => H.addRow(A, !0), bt = () => H.addSpacer(!0), $t = (A, z) => H.reorderRows(A, z, !0), We = (A, z) => {
4684
+ if (A?.id && (z.add(A.id), A.type === "row" && Array.isArray(A.columns)))
4685
+ for (const J of A.columns) {
4686
+ J?.id && z.add(J.id);
4687
4687
  const G = J.children ?? J.components ?? [];
4688
- for (const we of G) Ve(we, j);
4688
+ for (const we of G) We(we, z);
4689
4689
  }
4690
- }, $t = (T) => {
4691
- const j = D.findRow(T);
4692
- if (j) {
4690
+ }, yt = (A) => {
4691
+ const z = H.findRow(A);
4692
+ if (z) {
4693
4693
  const J = /* @__PURE__ */ new Set();
4694
- Ve(j, J), i.value && J.has(i.value) && (i.value = null), p.value && J.has(p.value) && (p.value = null), v.value && (J.has(v.value.rowId) || J.has(v.value.columnId)) && (v.value = null);
4694
+ We(z, J), a.value && J.has(a.value) && (a.value = null), b.value && J.has(b.value) && (b.value = null), h.value && (J.has(h.value.rowId) || J.has(h.value.columnId)) && (h.value = null);
4695
4695
  }
4696
- D.deleteRow(T);
4697
- }, yt = Ce(() => ({
4698
- mergeTagContext: S.value,
4699
- mergeTagActive: C.value,
4700
- linkTagContext: _.value,
4701
- linkTagActive: g.value
4702
- })), ne = Jo(o, a, P, $e, u, yt, void 0, void 0, k, t);
4696
+ H.deleteRow(A);
4697
+ }, St = Ce(() => ({
4698
+ mergeTagContext: C.value,
4699
+ mergeTagActive: _.value,
4700
+ linkTagContext: f.value,
4701
+ linkTagActive: p.value
4702
+ })), ce = Go(i, l, V, F, d, St, void 0, void 0, T, t);
4703
4703
  {
4704
- const T = () => {
4705
- U && (clearTimeout(U), U = null, q(o.value, a.value, Me, Ue, ot), ae = f.version.value);
4704
+ const A = () => {
4705
+ U && (clearTimeout(U), U = null, W(i.value, l.value, Me, Ue, rt), se = M.version.value);
4706
4706
  };
4707
- window.addEventListener("beforeunload", T), dr(() => {
4708
- window.removeEventListener("beforeunload", T), U && (clearTimeout(U), U = null, q(o.value, a.value, Me, Ue, ot), ae = f.version.value);
4707
+ window.addEventListener("beforeunload", A), pr(() => {
4708
+ window.removeEventListener("beforeunload", A), U && (clearTimeout(U), U = null, W(i.value, l.value, Me, Ue, rt), se = M.version.value);
4709
4709
  });
4710
4710
  }
4711
- const Yt = () => {
4712
- if (o.value.length > 0)
4713
- return w.value = !0, te(), i.value = null, p.value = null, v.value = null, b.value = "properties", null;
4714
- const T = W();
4715
- return !T || T.templateId !== null ? (w.value = !0, null) : (w.value = !1, X = !0, o.value = T.rows, a.value = T.canvas, i.value = null, p.value = null, v.value = null, b.value = "properties", ye(() => {
4716
- X = !1, te(), f.initialize(B()), ae = f.version.value, w.value = !0;
4717
- }), me.value = new Date(T.updatedAt), T.name !== void 0 && (l.value = T.name), T.tags !== void 0 && (c.value = T.tags), T.updatedAt);
4718
- }, Zn = async (T) => {
4719
- if (!We.value) throw new Error("[maildeno-editor] this editor has no saveTemplate — nothing was saved");
4720
- const { templateId: j } = await r.saveTemplate(T, M.value ?? void 0);
4721
- M.value = j, O.value === "create" && (O.value = "edit");
4722
- const J = ne.getExportedJSON(T.name);
4723
- return J && console.info("[maildeno-editor] Saved — exported JSON:", J), j;
4724
- }, er = async (T) => {
4725
- const j = await r.loadTemplate(T);
4726
- return j ? (Xt({
4727
- canvas: j.canvasStyles,
4728
- content: { rows: j.rows },
4729
- name: j.name,
4730
- tags: j.tags
4731
- }, T), M.value = T, O.value = "edit", !0) : !1;
4732
- }, tr = () => {
4733
- w.value = !1, v.value = null, p.value = null, b.value = "properties", U && (clearTimeout(U), U = null);
4734
- const T = W();
4735
- if (T && T.templateId === null) {
4736
- Yt();
4711
+ const Xt = () => {
4712
+ if (i.value.length > 0)
4713
+ return x.value = !0, Q(), a.value = null, b.value = null, h.value = null, R.value = "properties", null;
4714
+ const A = Z();
4715
+ return !A || A.templateId !== null ? (x.value = !0, null) : (x.value = !1, K = !0, i.value = A.rows, l.value = A.canvas, a.value = null, b.value = null, h.value = null, R.value = "properties", $e(() => {
4716
+ K = !1, Q(), M.initialize(O()), se = M.version.value, x.value = !0;
4717
+ }), oe.value = new Date(A.updatedAt), A.name !== void 0 && (c.value = A.name), A.tags !== void 0 && (m.value = A.tags), A.updatedAt);
4718
+ }, er = async (A) => {
4719
+ if (!Re.value) throw new Error("[maildeno-editor] this editor has no saveTemplate — nothing was saved");
4720
+ const { templateId: z } = await n.saveTemplate(A, j.value ?? void 0);
4721
+ j.value = z, u.value === "create" && (u.value = "edit");
4722
+ const J = ce.getExportedJSON(A.name);
4723
+ return J && console.info("[maildeno-editor] Saved — exported JSON:", J), z;
4724
+ }, tr = async (A) => {
4725
+ const z = await n.loadTemplate(A);
4726
+ return z ? (Qt({
4727
+ canvas: z.canvasStyles,
4728
+ content: { rows: z.rows },
4729
+ name: z.name,
4730
+ tags: z.tags
4731
+ }, A), j.value = A, u.value = "edit", !0) : !1;
4732
+ }, nr = () => {
4733
+ x.value = !1, h.value = null, b.value = null, R.value = "properties", U && (clearTimeout(U), U = null);
4734
+ const A = Z();
4735
+ if (A && A.templateId === null) {
4736
+ Xt();
4737
4737
  return;
4738
4738
  }
4739
- T && T.templateId !== null && Q(), X = !0, o.value = [], i.value = null, a.value = at(), Me = null, l.value = null, c.value = [], ye(() => {
4740
- X = !1, te(), f.initialize(B()), ae = f.version.value, w.value = !0;
4739
+ A && A.templateId !== null && ee(), K = !0, i.value = [], a.value = null, l.value = ot(), Me = null, c.value = null, m.value = [], $e(() => {
4740
+ K = !1, Q(), M.initialize(O()), se = M.version.value, x.value = !0;
4741
4741
  });
4742
- }, nr = () => {
4743
- w.value = !1, v.value = null, p.value = null, b.value = "properties", U && (clearTimeout(U), U = null), Q(), X = !0, o.value = [], i.value = null, a.value = at(), Me = null, M.value = null, O.value = "create", l.value = null, c.value = [], ye(() => {
4744
- X = !1, te(), f.initialize(B()), ae = f.version.value, w.value = !0;
4742
+ }, rr = () => {
4743
+ x.value = !1, h.value = null, b.value = null, R.value = "properties", U && (clearTimeout(U), U = null), ee(), K = !0, i.value = [], a.value = null, l.value = ot(), Me = null, j.value = null, u.value = "create", c.value = null, m.value = [], $e(() => {
4744
+ K = !1, Q(), M.initialize(O()), se = M.version.value, x.value = !0;
4745
4745
  });
4746
- }, Xt = (T, j, J) => {
4747
- w.value = !1, Me = j, Ue = T.name, ot = T.tags, l.value = T.name ?? null, c.value = T.tags ?? [], U && (clearTimeout(U), U = null);
4748
- const G = W();
4749
- if (G && G.templateId === j) {
4750
- console.info(`[EmailBuilder] Restoring local draft for template ${j} (saved ${G.updatedAt}).`), G.name !== void 0 && (l.value = G.name), G.tags !== void 0 && (c.value = G.tags), X = !0, a.value = G.canvas, o.value = G.rows, i.value = null, p.value = null, v.value = null, b.value = "properties", ye(() => {
4751
- X = !1, te(), f.initialize(B()), ae = f.version.value, w.value = !0, J?.();
4752
- }), me.value = new Date(G.updatedAt);
4746
+ }, Qt = (A, z, J) => {
4747
+ x.value = !1, Me = z, Ue = A.name, rt = A.tags, c.value = A.name ?? null, m.value = A.tags ?? [], U && (clearTimeout(U), U = null);
4748
+ const G = Z();
4749
+ if (G && G.templateId === z) {
4750
+ console.info(`[EmailBuilder] Restoring local draft for template ${z} (saved ${G.updatedAt}).`), G.name !== void 0 && (c.value = G.name), G.tags !== void 0 && (m.value = G.tags), K = !0, l.value = G.canvas, i.value = G.rows, a.value = null, b.value = null, h.value = null, R.value = "properties", $e(() => {
4751
+ K = !1, Q(), M.initialize(O()), se = M.version.value, x.value = !0, J?.();
4752
+ }), oe.value = new Date(G.updatedAt);
4753
4753
  return;
4754
4754
  }
4755
- G && G.templateId !== j && (console.info(`[EmailBuilder] Clearing stale draft (belongs to ${G.templateId}, current is ${j}).`), Q()), X = !0, a.value = ct(JSON.parse(JSON.stringify(T.canvas))), o.value = ut(JSON.parse(JSON.stringify(T.content?.rows ?? []))), i.value = null, p.value = null, v.value = null, b.value = "properties", ye(() => {
4756
- X = !1, te(), f.initialize(B()), ae = f.version.value, w.value = !0, J?.();
4755
+ G && G.templateId !== z && (console.info(`[EmailBuilder] Clearing stale draft (belongs to ${G.templateId}, current is ${z}).`), ee()), K = !0, l.value = lt(JSON.parse(JSON.stringify(A.canvas))), i.value = ct(JSON.parse(JSON.stringify(A.content?.rows ?? []))), a.value = null, b.value = null, h.value = null, R.value = "properties", $e(() => {
4756
+ K = !1, Q(), M.initialize(O()), se = M.version.value, x.value = !0, J?.();
4757
4757
  });
4758
- }, St = (T, j = "restore-version") => {
4759
- U && (clearTimeout(U), U = null), X = !0, a.value = ct(JSON.parse(JSON.stringify(T.canvas))), o.value = ut(JSON.parse(JSON.stringify(T.content?.rows ?? []))), i.value = null, p.value = null, v.value = null, b.value = "properties", ye(() => {
4760
- X = !1, te(), H(j);
4758
+ }, kt = (A, z = "restore-version") => {
4759
+ U && (clearTimeout(U), U = null), K = !0, l.value = lt(JSON.parse(JSON.stringify(A.canvas))), i.value = ct(JSON.parse(JSON.stringify(A.content?.rows ?? []))), a.value = null, b.value = null, h.value = null, R.value = "properties", $e(() => {
4760
+ K = !1, Q(), te(z);
4761
4761
  });
4762
- }, rr = () => {
4763
- f.undo(z) && (te(), ke());
4764
4762
  }, or = () => {
4765
- f.redo(z) && (te(), ke());
4763
+ M.undo(B) && (Q(), ke());
4766
4764
  }, ar = () => {
4767
- o.value = [], i.value = null, p.value = null, v.value = null, b.value = "properties", a.value = at(), ye(() => {
4768
- te(), f.initialize(B()), ae = f.version.value;
4769
- });
4765
+ M.redo(B) && (Q(), ke());
4770
4766
  }, ir = () => {
4771
- n.require({
4767
+ i.value = [], a.value = null, b.value = null, h.value = null, R.value = "properties", l.value = ot(), $e(() => {
4768
+ Q(), M.initialize(O()), se = M.version.value;
4769
+ });
4770
+ }, sr = () => {
4771
+ o.require({
4772
4772
  message: "Are you sure you want to clear the current template? This cannot be undone.",
4773
4773
  header: "Clear Template",
4774
4774
  acceptLabel: "Yes",
4775
4775
  rejectLabel: "Cancel",
4776
4776
  acceptClass: "!bg-red-600 !hover:bg-red-700 !border-red-600 !px-6 !py-2",
4777
4777
  rejectClass: "!bg-gray-200 !hover:bg-gray-300 !text-gray-800 !border-gray-200 !px-6 !py-2",
4778
- accept: () => ar(),
4778
+ accept: () => ir(),
4779
4779
  reject: () => {
4780
4780
  }
4781
4781
  });
4782
- }, sr = (T, j = {}) => {
4783
- const J = vn(T), G = {
4782
+ }, lr = (A, z = {}) => {
4783
+ const J = bn(A), G = {
4784
4784
  canvas: J.canvas,
4785
4785
  content: { rows: J.rows }
4786
4786
  };
4787
- if (j.history === "reset") {
4788
- St(G, "set-json"), ye(() => {
4789
- f.initialize(B()), ae = f.version.value;
4787
+ if (z.history === "reset") {
4788
+ kt(G, "set-json"), $e(() => {
4789
+ M.initialize(O()), se = M.version.value;
4790
4790
  });
4791
4791
  return;
4792
4792
  }
4793
- St(G, "set-json");
4794
- }, lr = () => {
4795
- const T = i.value;
4796
- if (!T) return null;
4797
- const j = D.findComponent(T);
4793
+ kt(G, "set-json");
4794
+ }, cr = () => {
4795
+ const A = a.value;
4796
+ if (!A) return null;
4797
+ const z = H.findComponent(A);
4798
4798
  return {
4799
- id: T,
4800
- type: j?.componentType ?? j?.type ?? null
4799
+ id: A,
4800
+ type: z?.componentType ?? z?.type ?? null
4801
4801
  };
4802
- }, cr = (T) => T !== null && !D.findComponent(T) ? !1 : (i.value = T, !0), ur = (T) => hn(() => f.version.value, () => T());
4802
+ }, ur = (A) => A !== null && !H.findComponent(A) ? !1 : (a.value = A, !0), dr = (A) => vn(() => M.version.value, () => A());
4803
4803
  return {
4804
- rows: o,
4805
- canvasStyles: a,
4806
- templateTags: c,
4807
- savedTemplateName: l,
4804
+ rows: i,
4805
+ canvasStyles: l,
4806
+ templateTags: m,
4807
+ savedTemplateName: c,
4808
4808
  previewMode: E,
4809
- sidebarTab: b,
4810
- selectedId: i,
4811
- selectedRowId: p,
4812
- selectedColumn: v,
4813
- visibilityPreviewContext: u,
4814
- mergeTagInsertQueue: d,
4815
- triggerMergeTagInsert: s,
4816
- mergeTagPreviewContext: S,
4817
- mergeTagPreviewActive: C,
4818
- linkTagPreviewContext: _,
4819
- linkTagPreviewActive: g,
4820
- isBuilderReady: w,
4821
- linksActive: R,
4822
- espConfig: k,
4823
- canvasHoveredId: m,
4824
- nestedRowDragId: h,
4825
- isRowDragActive: x,
4826
- isTopLevelRowDragActive: y,
4827
- layerHoveredId: $,
4828
- addRow: D.addRow,
4829
- addNestedRow: D.addNestedRow,
4830
- findRow: D.findRow,
4831
- deleteRow: $t,
4832
- moveRow: D.moveRow,
4833
- moveNestedRow: D.moveNestedRow,
4834
- reorderRows: D.reorderRows,
4835
- addSpacer: D.addSpacer,
4836
- duplicateRow: D.duplicateRow,
4837
- duplicateRowSpacer: D.duplicateRowSpacer,
4838
- addRowSilent: Re,
4839
- addSpacerSilent: vt,
4840
- reorderRowsSilent: bt,
4841
- addComponent: D.addComponent,
4842
- addComponentAtIndex: D.addComponentAtIndex,
4843
- deleteComponent: D.deleteComponent,
4844
- moveComponent: D.moveComponent,
4845
- moveComponentBetweenColumns: D.moveComponentBetweenColumns,
4846
- findComponent: D.findComponent,
4847
- updateComponent: D.updateComponent,
4848
- duplicateComponent: D.duplicateComponent,
4849
- exportHTML: ne.exportHTML,
4850
- getExportedHTML: ne.getExportedHTML,
4851
- exportReactEmail: ne.exportReactEmail,
4852
- getExportedReactEmail: ne.getExportedReactEmail,
4853
- exportMJML: ne.exportMJML,
4854
- getExportedMJML: ne.getExportedMJML,
4855
- exportJSON: ne.exportJSON,
4856
- getExportedJSON: ne.getExportedJSON,
4857
- importJSON: (T) => ne.importJSON(T, i),
4858
- clearTemplate: ir,
4859
- undo: rr,
4860
- redo: or,
4861
- canUndo: f.canUndo,
4862
- canRedo: f.canRedo,
4863
- historyStatus: f.historyStatus,
4864
- saveToHistory: $e,
4865
- saveToHistoryImmediate: H,
4866
- initFromStorage: Yt,
4867
- clearLocal: Q,
4868
- loadFromLocal: W,
4869
- hasDraft: se,
4870
- saveStatus: pe,
4871
- lastSaved: me,
4872
- initForCreate: tr,
4873
- startNewTemplate: nr,
4874
- loadTemplate: Xt,
4875
- loadTemplateById: er,
4876
- saveTemplate: Zn,
4877
- templateId: M,
4878
- builderMode: O,
4879
- loadVersionSnapshot: St,
4880
- setJson: sr,
4881
- getSelection: lr,
4882
- setSelection: cr,
4883
- onChange: ur
4809
+ sidebarTab: R,
4810
+ selectedId: a,
4811
+ selectedRowId: b,
4812
+ selectedColumn: h,
4813
+ visibilityPreviewContext: d,
4814
+ mergeTagInsertQueue: s,
4815
+ triggerMergeTagInsert: y,
4816
+ mergeTagPreviewContext: C,
4817
+ mergeTagPreviewActive: _,
4818
+ linkTagPreviewContext: f,
4819
+ linkTagPreviewActive: p,
4820
+ isBuilderReady: x,
4821
+ linksActive: N,
4822
+ espConfig: T,
4823
+ canvasHoveredId: g,
4824
+ nestedRowDragId: w,
4825
+ isRowDragActive: $,
4826
+ isTopLevelRowDragActive: v,
4827
+ layerHoveredId: S,
4828
+ addRow: H.addRow,
4829
+ addNestedRow: H.addNestedRow,
4830
+ findRow: H.findRow,
4831
+ deleteRow: yt,
4832
+ moveRow: H.moveRow,
4833
+ moveNestedRow: H.moveNestedRow,
4834
+ reorderRows: H.reorderRows,
4835
+ addSpacer: H.addSpacer,
4836
+ duplicateRow: H.duplicateRow,
4837
+ duplicateRowSpacer: H.duplicateRowSpacer,
4838
+ addRowSilent: vt,
4839
+ addSpacerSilent: bt,
4840
+ reorderRowsSilent: $t,
4841
+ addComponent: H.addComponent,
4842
+ addComponentAtIndex: H.addComponentAtIndex,
4843
+ deleteComponent: H.deleteComponent,
4844
+ moveComponent: H.moveComponent,
4845
+ moveComponentBetweenColumns: H.moveComponentBetweenColumns,
4846
+ findComponent: H.findComponent,
4847
+ updateComponent: H.updateComponent,
4848
+ duplicateComponent: H.duplicateComponent,
4849
+ exportHTML: ce.exportHTML,
4850
+ getExportedHTML: ce.getExportedHTML,
4851
+ exportReactEmail: ce.exportReactEmail,
4852
+ getExportedReactEmail: ce.getExportedReactEmail,
4853
+ exportMJML: ce.exportMJML,
4854
+ getExportedMJML: ce.getExportedMJML,
4855
+ exportJSON: ce.exportJSON,
4856
+ getExportedJSON: ce.getExportedJSON,
4857
+ importJSON: (A) => ce.importJSON(A, a),
4858
+ clearTemplate: sr,
4859
+ undo: or,
4860
+ redo: ar,
4861
+ canUndo: M.canUndo,
4862
+ canRedo: M.canRedo,
4863
+ historyStatus: M.historyStatus,
4864
+ saveToHistory: F,
4865
+ saveToHistoryImmediate: te,
4866
+ initFromStorage: Xt,
4867
+ clearLocal: ee,
4868
+ loadFromLocal: Z,
4869
+ hasDraft: me,
4870
+ saveStatus: Se,
4871
+ lastSaved: oe,
4872
+ initForCreate: nr,
4873
+ startNewTemplate: rr,
4874
+ loadTemplate: Qt,
4875
+ loadTemplateById: tr,
4876
+ saveTemplate: er,
4877
+ templateId: j,
4878
+ builderMode: u,
4879
+ loadVersionSnapshot: kt,
4880
+ setJson: lr,
4881
+ getSelection: cr,
4882
+ setSelection: ur,
4883
+ onChange: dr
4884
4884
  };
4885
4885
  }
4886
4886
  export {
4887
- Jr as A,
4888
- Ko as B,
4889
- la as C,
4890
- ia as D,
4891
- eo as E,
4892
- ea as F,
4893
- hr as G,
4894
- Xo as H,
4895
- dt as I,
4896
- $n as K,
4897
- Rt as L,
4898
- An as M,
4899
- oa as N,
4900
- Ut as O,
4901
- ra as P,
4902
- ta as R,
4903
- pa as S,
4904
- sa as T,
4905
- Yo as U,
4906
- Qo as V,
4907
- Zo as W,
4887
+ Gr as A,
4888
+ Yo as B,
4889
+ ca as C,
4890
+ sa as D,
4891
+ to as E,
4892
+ ta as F,
4893
+ vr as G,
4894
+ Qo as H,
4895
+ ut as I,
4896
+ yn as K,
4897
+ Et as L,
4898
+ Rn as M,
4899
+ aa as N,
4900
+ Jt as O,
4901
+ oa as P,
4902
+ na as R,
4903
+ ma as S,
4904
+ la as T,
4905
+ Xo as U,
4906
+ Zo as V,
4907
+ ea as W,
4908
4908
  Je as _,
4909
- ba as a,
4910
- ca as b,
4911
- va as c,
4912
- ga as d,
4913
- pn as f,
4914
- no as g,
4915
- ro as h,
4916
- ko as i,
4917
- Tn as j,
4918
- aa as k,
4919
- ha as l,
4920
- ma as m,
4921
- Sa as n,
4922
- $a as o,
4923
- uo as p,
4924
- K as q,
4925
- Kt as r,
4926
- So as s,
4927
- ya as t,
4928
- fa as u,
4929
- gt as v,
4930
- ft as w,
4931
- ua as x,
4932
- da as y,
4933
- vr as z
4909
+ $a as a,
4910
+ ua as b,
4911
+ ba as c,
4912
+ ha as d,
4913
+ mn as f,
4914
+ ro as g,
4915
+ oo as h,
4916
+ wo as i,
4917
+ An as j,
4918
+ ia as k,
4919
+ va as l,
4920
+ fa as m,
4921
+ ka as n,
4922
+ ya as o,
4923
+ po as p,
4924
+ Y as q,
4925
+ Yt as r,
4926
+ ko as s,
4927
+ Sa as t,
4928
+ ga as u,
4929
+ ft as v,
4930
+ mt as w,
4931
+ da as x,
4932
+ pa as y,
4933
+ br as z
4934
4934
  };