@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.
- package/dist/{HealthIndicator-BLID6Ty0.js → HealthIndicator-COWguEXj.js} +2 -2
- package/dist/{HealthIndicator-DfzqzPNw.js → HealthIndicator-D1dFZy5o.js} +1 -1
- package/dist/{PreviewCanvas-PtW1UL1J.js → PreviewCanvas-CB0u47NT.js} +1 -1
- package/dist/{PreviewCanvas-D3SpILsV.js → PreviewCanvas-CutgVbs-.js} +1 -1
- package/dist/{RichTextEditor-DDEfKPZm.js → RichTextEditor-BMp0pgrh.js} +2 -2
- package/dist/{RichTextEditor-D6DQqbJg.js → RichTextEditor-MVYp_e_O.js} +1 -1
- package/dist/RowPreviewChildren-BANvlvrM.js +4 -0
- package/dist/RowPreviewChildren-DNVfH3gU.js +4 -0
- package/dist/{RowPreviewRow-DG4AdMrv.js → RowPreviewRow-Cu6EURjr.js} +1 -1
- package/dist/{RowPreviewRow-C2XAe5Xs.js → RowPreviewRow-YJGhJ67T.js} +1 -1
- package/dist/{SavedRowsPanel-2JBfYdxN.js → SavedRowsPanel-CCXBKQYw.js} +3 -3
- package/dist/{SavedRowsPanel-B6_VHQZm.js → SavedRowsPanel-Cl1aZdnL.js} +3 -3
- package/dist/{element-DQw3HLit.js → element-CxahtLpG.js} +6 -6
- package/dist/element.js +1 -1
- package/dist/index.js +622 -622
- package/dist/init.js +2 -2
- package/dist/{useEmailBuilder-2yCUzRx2.js → useEmailBuilder-CBsHIs93.js} +1425 -1425
- package/dist/{useEmailBuilder-D3uV7dwL.js → useEmailBuilder-D-hDPH_x.js} +1425 -1425
- package/dist/{useToast-D1GgDMqQ.js → useToast-DAu-9glv.js} +1 -1
- package/package.json +1 -1
- package/dist/RowPreviewChildren-BGnilx-K.js +0 -4
- package/dist/RowPreviewChildren-CalQWx1C.js +0 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { c as
|
|
2
|
-
import { computed as Ce, inject as Oe, nextTick as
|
|
3
|
-
var
|
|
4
|
-
function
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
44
|
-
function
|
|
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 =
|
|
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:
|
|
50
|
-
children: n.map((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
|
|
66
|
+
function yn() {
|
|
67
67
|
async function e(s) {
|
|
68
68
|
return s ? fe(Pe + s) : null;
|
|
69
69
|
}
|
|
70
|
-
async function t(s,
|
|
71
|
-
const C =
|
|
70
|
+
async function t(s, y) {
|
|
71
|
+
const C = y || Y();
|
|
72
72
|
try {
|
|
73
73
|
const _ = fe(Pe + C);
|
|
74
|
-
_ &&
|
|
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
|
|
86
|
-
const C = localStorage.key(
|
|
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((
|
|
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(
|
|
98
|
+
localStorage.removeItem(Pe + s), localStorage.removeItem(wt + s);
|
|
99
99
|
}
|
|
100
100
|
function o(s) {
|
|
101
|
-
return fe(
|
|
101
|
+
return fe(wt + s) ?? [];
|
|
102
102
|
}
|
|
103
|
-
function i(s,
|
|
104
|
-
De(
|
|
103
|
+
function i(s, y) {
|
|
104
|
+
De(wt + s, y);
|
|
105
105
|
}
|
|
106
106
|
async function a(s) {
|
|
107
|
-
return o(s).map(({ snapshot:
|
|
107
|
+
return o(s).map(({ snapshot: y, ...C }) => C);
|
|
108
108
|
}
|
|
109
|
-
async function l(s,
|
|
110
|
-
return o(s).find((C) => C.versionId ===
|
|
109
|
+
async function l(s, y) {
|
|
110
|
+
return o(s).find((C) => C.versionId === y)?.snapshot ?? null;
|
|
111
111
|
}
|
|
112
|
-
async function c(s,
|
|
113
|
-
i(s, o(s).filter((C) => C.versionId !==
|
|
112
|
+
async function c(s, y) {
|
|
113
|
+
i(s, o(s).filter((C) => C.versionId !== y));
|
|
114
114
|
}
|
|
115
|
-
async function
|
|
116
|
-
i(s, o(s).filter((
|
|
115
|
+
async function m(s) {
|
|
116
|
+
i(s, o(s).filter((y) => y.kept));
|
|
117
117
|
}
|
|
118
|
-
async function
|
|
119
|
-
i(s, o(s).map((_) => _.versionId ===
|
|
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
|
|
124
|
+
function h(s, y) {
|
|
125
125
|
const C = o(s);
|
|
126
126
|
C.unshift({
|
|
127
|
-
versionId:
|
|
127
|
+
versionId: Y(),
|
|
128
128
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
129
129
|
kept: !1,
|
|
130
|
-
snapshot:
|
|
130
|
+
snapshot: y
|
|
131
131
|
});
|
|
132
|
-
const _ = C.filter((
|
|
133
|
-
if (_.length >
|
|
134
|
-
const
|
|
135
|
-
i(s, C.filter((
|
|
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
|
|
141
|
-
return fe(
|
|
140
|
+
async function R() {
|
|
141
|
+
return fe(ye) ?? [];
|
|
142
142
|
}
|
|
143
|
-
async function
|
|
143
|
+
async function E() {
|
|
144
144
|
return [];
|
|
145
145
|
}
|
|
146
|
-
async function
|
|
147
|
-
const C = fe(
|
|
148
|
-
id:
|
|
149
|
-
name:
|
|
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(
|
|
153
|
+
return De(ye, [_, ...C]), _;
|
|
154
154
|
}
|
|
155
|
-
async function
|
|
156
|
-
const
|
|
157
|
-
De(
|
|
155
|
+
async function N(s) {
|
|
156
|
+
const y = fe(ye) ?? [];
|
|
157
|
+
De(ye, y.filter((C) => C.id !== s));
|
|
158
158
|
}
|
|
159
|
-
async function
|
|
160
|
-
const C = fe(
|
|
161
|
-
De(
|
|
159
|
+
async function j(s, y) {
|
|
160
|
+
const C = fe(ye) ?? [];
|
|
161
|
+
De(ye, C.map((_) => _.id === s ? {
|
|
162
162
|
..._,
|
|
163
|
-
name:
|
|
163
|
+
name: y.trim() || _.name
|
|
164
164
|
} : _));
|
|
165
165
|
}
|
|
166
166
|
function u(s) {
|
|
167
|
-
const
|
|
168
|
-
return
|
|
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((
|
|
171
|
+
return new Promise((y, C) => {
|
|
172
172
|
const _ = new FileReader();
|
|
173
|
-
_.onload = () =>
|
|
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:
|
|
185
|
-
setTemplateVersionKept:
|
|
186
|
-
listSavedRows:
|
|
187
|
-
listSystemSavedRows:
|
|
188
|
-
saveSavedRow:
|
|
189
|
-
deleteSavedRow:
|
|
190
|
-
renameSavedRow:
|
|
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
|
|
196
|
-
function
|
|
197
|
-
const t =
|
|
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
|
|
204
|
-
function
|
|
205
|
-
return Oe(
|
|
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
|
-
|
|
211
|
-
|
|
212
|
-
return Oe(kn, !0);
|
|
207
|
+
function Yo(e) {
|
|
208
|
+
Ie(kn, e);
|
|
213
209
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
return
|
|
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
|
-
|
|
215
|
+
const t = gr(e);
|
|
216
|
+
return Ie(Sn, t), Ie(wn, !e || typeof e.listTemplates == "function"), t;
|
|
224
217
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
function
|
|
230
|
-
|
|
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
|
-
|
|
236
|
-
|
|
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 =
|
|
240
|
-
|
|
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
|
|
242
|
+
function br() {
|
|
243
243
|
return {
|
|
244
244
|
require(e) {
|
|
245
|
-
|
|
245
|
+
ut.value = e, Et.value = !0;
|
|
246
246
|
},
|
|
247
|
-
close:
|
|
247
|
+
close: jt
|
|
248
248
|
};
|
|
249
249
|
}
|
|
250
250
|
var _e = () => ({
|
|
251
251
|
enabled: !1,
|
|
252
252
|
match: "all",
|
|
253
253
|
rules: []
|
|
254
|
-
}),
|
|
254
|
+
}), Mt = () => ({
|
|
255
255
|
desktopHide: !1,
|
|
256
256
|
mobileHide: !1
|
|
257
|
-
}),
|
|
257
|
+
}), ie = () => ({
|
|
258
258
|
visibility: _e(),
|
|
259
|
-
...
|
|
260
|
-
}),
|
|
259
|
+
...Mt()
|
|
260
|
+
}), $r = Object.freeze({
|
|
261
261
|
enabled: !1,
|
|
262
262
|
match: "all",
|
|
263
263
|
rules: []
|
|
264
|
-
}),
|
|
264
|
+
}), yr = Object.freeze({
|
|
265
265
|
desktopHide: !1,
|
|
266
266
|
mobileHide: !1
|
|
267
|
-
}),
|
|
268
|
-
visibility:
|
|
269
|
-
|
|
270
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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:
|
|
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
|
-
...
|
|
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:
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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:
|
|
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
|
-
...
|
|
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:
|
|
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
|
-
...
|
|
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
|
-
...
|
|
583
|
+
...ie()
|
|
584
584
|
},
|
|
585
585
|
divider: {
|
|
586
586
|
backgroundColor: "#cccccc",
|
|
587
|
-
backgroundGradient:
|
|
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
|
-
...
|
|
612
|
+
...ie()
|
|
613
613
|
},
|
|
614
614
|
spacer: {
|
|
615
615
|
height: 20,
|
|
616
616
|
backgroundColor: "transparent",
|
|
617
|
-
backgroundGradient:
|
|
617
|
+
backgroundGradient: xt("transparent"),
|
|
618
618
|
mobile: {
|
|
619
619
|
height: null,
|
|
620
620
|
backgroundColor: null,
|
|
621
621
|
backgroundGradient: null
|
|
622
622
|
},
|
|
623
|
-
...
|
|
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:
|
|
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
|
-
...
|
|
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
|
-
...
|
|
731
|
+
...ie()
|
|
732
732
|
}
|
|
733
|
-
} }),
|
|
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),
|
|
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 =
|
|
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:
|
|
753
|
-
children: n.map((i) =>
|
|
752
|
+
id: Y(),
|
|
753
|
+
children: n.map((i) => Lt(i))
|
|
754
754
|
};
|
|
755
755
|
return delete o.components, o;
|
|
756
756
|
})), t;
|
|
757
|
-
},
|
|
758
|
-
const r =
|
|
757
|
+
}, Xe = (e, t) => {
|
|
758
|
+
const r = Lt(e);
|
|
759
759
|
if (r.type === "row-spacer") return r;
|
|
760
|
-
const n = e.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
|
-
},
|
|
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
|
-
},
|
|
795
|
-
|
|
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 && (
|
|
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 &&
|
|
800
|
+
o?.id && ae.set(o.id, o), t(o.children ?? o.components ?? []);
|
|
801
801
|
};
|
|
802
802
|
t(e);
|
|
803
|
-
},
|
|
804
|
-
if (e?.id && (
|
|
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 &&
|
|
806
|
+
t?.id && ae.set(t.id, t);
|
|
807
807
|
const r = t.children ?? t.components ?? [];
|
|
808
|
-
for (const n of r)
|
|
808
|
+
for (const n of r) le(n);
|
|
809
809
|
}
|
|
810
|
-
},
|
|
811
|
-
if (e?.id && (
|
|
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 &&
|
|
813
|
+
t?.id && ae.delete(t.id);
|
|
814
814
|
const r = t.children ?? t.components ?? [];
|
|
815
|
-
for (const n of r)
|
|
815
|
+
for (const n of r) it(n);
|
|
816
816
|
}
|
|
817
|
-
},
|
|
818
|
-
|
|
819
|
-
const i = (
|
|
820
|
-
let
|
|
821
|
-
if (Array.isArray(
|
|
822
|
-
if (
|
|
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
|
-
|
|
826
|
+
g = f;
|
|
827
827
|
} else {
|
|
828
|
-
const
|
|
829
|
-
|
|
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
|
|
832
|
-
id: `${
|
|
831
|
+
const w = Cn(), $ = {
|
|
832
|
+
id: `${Y()}`,
|
|
833
833
|
type: "row",
|
|
834
|
-
name:
|
|
835
|
-
columns:
|
|
836
|
-
id: `${
|
|
837
|
-
width:
|
|
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(
|
|
883
|
-
const
|
|
884
|
-
|
|
885
|
-
}, a = (
|
|
886
|
-
const
|
|
887
|
-
if (
|
|
888
|
-
const
|
|
889
|
-
if (
|
|
890
|
-
let
|
|
891
|
-
if (Array.isArray(
|
|
892
|
-
if (
|
|
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
|
-
|
|
896
|
+
S = g;
|
|
897
897
|
} else {
|
|
898
|
-
const
|
|
899
|
-
|
|
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
|
|
902
|
-
id: `${
|
|
901
|
+
const T = {
|
|
902
|
+
id: `${Y()}`,
|
|
903
903
|
type: "row",
|
|
904
|
-
name: `nested_row_${
|
|
905
|
-
columns:
|
|
906
|
-
id: `${
|
|
907
|
-
width:
|
|
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
|
-
},
|
|
952
|
-
|
|
953
|
-
const
|
|
954
|
-
|
|
955
|
-
}, l = (
|
|
956
|
-
if (
|
|
957
|
-
const
|
|
958
|
-
if (
|
|
959
|
-
const
|
|
960
|
-
return
|
|
961
|
-
}, c = (
|
|
962
|
-
const
|
|
963
|
-
if (
|
|
964
|
-
const [
|
|
965
|
-
|
|
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
|
|
969
|
-
if (
|
|
970
|
-
for (const
|
|
971
|
-
const
|
|
972
|
-
if (
|
|
973
|
-
const [
|
|
974
|
-
|
|
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
|
-
},
|
|
979
|
-
const
|
|
980
|
-
if (
|
|
981
|
-
const
|
|
982
|
-
if (
|
|
983
|
-
const [
|
|
984
|
-
e.value.splice(
|
|
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
|
|
988
|
-
const
|
|
989
|
-
if (
|
|
990
|
-
const
|
|
991
|
-
if (
|
|
992
|
-
const [
|
|
993
|
-
return
|
|
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
|
|
996
|
-
for (const
|
|
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
|
|
1001
|
-
if (
|
|
1002
|
-
for (const
|
|
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
|
-
},
|
|
1005
|
-
let
|
|
1006
|
-
const
|
|
1007
|
-
if (
|
|
1008
|
-
const
|
|
1009
|
-
const
|
|
1010
|
-
if (
|
|
1011
|
-
return
|
|
1012
|
-
for (const
|
|
1013
|
-
for (const
|
|
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
|
|
1018
|
-
if (
|
|
1019
|
-
for (const
|
|
1020
|
-
if (
|
|
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 (
|
|
1024
|
-
if (
|
|
1025
|
-
const
|
|
1026
|
-
e.value.splice(
|
|
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
|
|
1029
|
-
if (!
|
|
1030
|
-
e.value.push(
|
|
1028
|
+
const S = xe(e.value, p);
|
|
1029
|
+
if (!S?.columns) {
|
|
1030
|
+
e.value.push($);
|
|
1031
1031
|
return;
|
|
1032
1032
|
}
|
|
1033
|
-
const
|
|
1034
|
-
if (!
|
|
1035
|
-
e.value.push(
|
|
1033
|
+
const T = S.columns.find((O) => O.id === g);
|
|
1034
|
+
if (!T) {
|
|
1035
|
+
e.value.push($);
|
|
1036
1036
|
return;
|
|
1037
1037
|
}
|
|
1038
|
-
const
|
|
1039
|
-
|
|
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
|
-
},
|
|
1044
|
-
if (
|
|
1045
|
-
const
|
|
1046
|
-
e.value.splice(
|
|
1047
|
-
},
|
|
1048
|
-
const
|
|
1049
|
-
id: `${
|
|
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:
|
|
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(
|
|
1058
|
-
const
|
|
1059
|
-
|
|
1060
|
-
},
|
|
1061
|
-
const
|
|
1062
|
-
if (
|
|
1063
|
-
const
|
|
1064
|
-
e.value.splice(
|
|
1065
|
-
const
|
|
1066
|
-
|
|
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
|
|
1070
|
-
if (
|
|
1071
|
-
for (const
|
|
1072
|
-
const
|
|
1073
|
-
if (
|
|
1074
|
-
const
|
|
1075
|
-
|
|
1076
|
-
const
|
|
1077
|
-
|
|
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
|
-
},
|
|
1082
|
-
const
|
|
1083
|
-
if (
|
|
1084
|
-
const
|
|
1085
|
-
e.value.splice(
|
|
1086
|
-
const
|
|
1087
|
-
|
|
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
|
|
1091
|
-
if (
|
|
1092
|
-
for (const
|
|
1093
|
-
const
|
|
1094
|
-
if (
|
|
1095
|
-
const
|
|
1096
|
-
|
|
1097
|
-
const
|
|
1098
|
-
|
|
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
|
-
},
|
|
1103
|
-
const
|
|
1104
|
-
if (!
|
|
1105
|
-
const
|
|
1106
|
-
if (
|
|
1107
|
-
const
|
|
1108
|
-
id: `${
|
|
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:
|
|
1111
|
-
props: JSON.parse(JSON.stringify(r[
|
|
1112
|
-
},
|
|
1113
|
-
|
|
1114
|
-
const
|
|
1115
|
-
|
|
1116
|
-
},
|
|
1117
|
-
const
|
|
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
|
|
1122
|
-
|
|
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:
|
|
1125
|
-
props: JSON.parse(JSON.stringify(r[
|
|
1126
|
-
},
|
|
1127
|
-
|
|
1128
|
-
const
|
|
1129
|
-
|
|
1130
|
-
}, u = (
|
|
1131
|
-
for (const
|
|
1132
|
-
if (
|
|
1133
|
-
for (const
|
|
1134
|
-
const
|
|
1135
|
-
if (
|
|
1136
|
-
const [
|
|
1137
|
-
|
|
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 = (
|
|
1142
|
-
for (const
|
|
1143
|
-
if (
|
|
1144
|
-
for (const
|
|
1145
|
-
const
|
|
1146
|
-
if (
|
|
1147
|
-
const { parentChildren:
|
|
1148
|
-
if (
|
|
1149
|
-
const [
|
|
1150
|
-
|
|
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 = (
|
|
1156
|
-
let
|
|
1157
|
-
for (const
|
|
1158
|
-
if (
|
|
1159
|
-
for (const
|
|
1160
|
-
const
|
|
1161
|
-
if (
|
|
1162
|
-
|
|
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 (
|
|
1166
|
+
if ($) break;
|
|
1167
1167
|
}
|
|
1168
|
-
if (
|
|
1169
|
-
const
|
|
1170
|
-
if (
|
|
1171
|
-
const
|
|
1172
|
-
|
|
1173
|
-
},
|
|
1174
|
-
if (
|
|
1175
|
-
const
|
|
1176
|
-
if (
|
|
1177
|
-
for (const
|
|
1178
|
-
if (
|
|
1179
|
-
for (const
|
|
1180
|
-
const
|
|
1181
|
-
if (
|
|
1182
|
-
return
|
|
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:
|
|
1192
|
-
moveNestedRow:
|
|
1193
|
-
reorderRows:
|
|
1194
|
-
addSpacer:
|
|
1195
|
-
duplicateRow:
|
|
1196
|
-
duplicateRowSpacer:
|
|
1197
|
-
addComponent:
|
|
1198
|
-
addComponentAtIndex:
|
|
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:
|
|
1203
|
-
updateComponent: (
|
|
1204
|
-
const
|
|
1205
|
-
|
|
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: (
|
|
1208
|
-
for (const
|
|
1209
|
-
if (
|
|
1210
|
-
for (const
|
|
1211
|
-
const
|
|
1212
|
-
if (
|
|
1213
|
-
const
|
|
1214
|
-
|
|
1215
|
-
const
|
|
1216
|
-
|
|
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: () =>
|
|
1221
|
+
rebuildIdRegistry: () => nn(e.value)
|
|
1222
1222
|
};
|
|
1223
|
-
},
|
|
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 = (
|
|
1225
|
-
const
|
|
1226
|
-
|
|
1227
|
-
state:
|
|
1228
|
-
action:
|
|
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
|
-
|
|
1233
|
-
}, c = () => o.value ? (
|
|
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:
|
|
1243
|
-
clearHistory:
|
|
1244
|
-
initHistory: (
|
|
1245
|
-
|
|
1242
|
+
redo: m,
|
|
1243
|
+
clearHistory: b,
|
|
1244
|
+
initHistory: (R) => {
|
|
1245
|
+
b(), l(R, "initial");
|
|
1246
1246
|
},
|
|
1247
1247
|
version: n
|
|
1248
1248
|
};
|
|
1249
|
-
},
|
|
1250
|
-
const { saveState: e, undo: t, redo: r, canUndo: n, canRedo: o, historyStatus: i, initHistory: a, version: l } =
|
|
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: (
|
|
1253
|
-
rows:
|
|
1254
|
-
canvasStyles:
|
|
1252
|
+
getCurrentState: (x, N) => ({
|
|
1253
|
+
rows: x.value,
|
|
1254
|
+
canvasStyles: N.value
|
|
1255
1255
|
}),
|
|
1256
|
-
restoreState: (
|
|
1257
|
-
if (!
|
|
1258
|
-
|
|
1259
|
-
const
|
|
1260
|
-
for (const
|
|
1261
|
-
if (
|
|
1262
|
-
for (const
|
|
1263
|
-
|
|
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(
|
|
1266
|
-
const { rowId: _, columnId:
|
|
1267
|
-
(!
|
|
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: (
|
|
1271
|
-
e(
|
|
1270
|
+
saveToHistory: (x, N = "change", j = !1) => {
|
|
1271
|
+
e(x(), N, j);
|
|
1272
1272
|
},
|
|
1273
|
-
undo: (
|
|
1274
|
-
const
|
|
1275
|
-
return
|
|
1273
|
+
undo: (x) => {
|
|
1274
|
+
const N = t();
|
|
1275
|
+
return N ? (x(N), N) : null;
|
|
1276
1276
|
},
|
|
1277
|
-
redo: (
|
|
1278
|
-
const
|
|
1279
|
-
return
|
|
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: (
|
|
1285
|
-
a(
|
|
1284
|
+
initialize: (x) => {
|
|
1285
|
+
a(x);
|
|
1286
1286
|
},
|
|
1287
1287
|
version: l
|
|
1288
1288
|
};
|
|
1289
|
-
},
|
|
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
|
-
},
|
|
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,
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
1310
|
+
}, Mr = (e) => {
|
|
1311
1311
|
const t = {};
|
|
1312
1312
|
for (const [r, n] of Object.entries(e))
|
|
1313
|
-
|
|
1313
|
+
_r(n) || r === "backgroundGradient" && qe(n) || (t[r] = n);
|
|
1314
1314
|
return Object.keys(t).length > 0 ? t : void 0;
|
|
1315
|
-
},
|
|
1315
|
+
}, Ir = (e) => {
|
|
1316
1316
|
const t = { ...e.props };
|
|
1317
1317
|
if (e.props.mobile && typeof e.props.mobile == "object") {
|
|
1318
|
-
const r =
|
|
1318
|
+
const r = Mr(e.props.mobile);
|
|
1319
1319
|
r ? t.mobile = r : delete t.mobile;
|
|
1320
1320
|
}
|
|
1321
|
-
if (
|
|
1322
|
-
const r =
|
|
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
|
-
},
|
|
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
|
-
|
|
1334
|
-
const l = (n ?? o ?? []).map(
|
|
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
|
-
},
|
|
1341
|
+
}, Or = (e) => {
|
|
1342
1342
|
const { id: t, type: r, ...n } = e, o = { ...n };
|
|
1343
|
-
|
|
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
|
-
},
|
|
1352
|
-
if (e.type === "row-spacer") return
|
|
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
|
|
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(
|
|
1359
|
+
columns: o?.map(Br)
|
|
1360
1360
|
};
|
|
1361
|
-
},
|
|
1361
|
+
}, An = (e) => {
|
|
1362
1362
|
const t = { ...e };
|
|
1363
|
-
return e.bodyBackgroundImage || (delete t.bodyBackgroundImage, delete t.bodyBackgroundSize, delete t.bodyBackgroundPosition, delete t.bodyBackgroundRepeat),
|
|
1364
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
1471
|
-
const r =
|
|
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
|
-
},
|
|
1478
|
-
const { defaultProps: t } =
|
|
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 ??
|
|
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
|
-
},
|
|
1496
|
-
if (e.type === "component") return
|
|
1497
|
-
const { defaultProps: t } =
|
|
1498
|
-
return e.type in t ?
|
|
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
|
-
}) :
|
|
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 =
|
|
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
|
-
},
|
|
1514
|
-
if (e.type === "row-spacer") return
|
|
1515
|
-
const { columns: t, ...r } = e, n = e.backgroundColor !== void 0 || e.backgroundGradient !== void 0 || e.backgroundImage !== void 0, { backgroundColor: o, backgroundGradient: i, ...a } =
|
|
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(
|
|
1518
|
-
},
|
|
1519
|
-
const t = je(
|
|
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
|
-
},
|
|
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:
|
|
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:
|
|
1533
|
-
canvas:
|
|
1532
|
+
rows: Rn(e),
|
|
1533
|
+
canvas: An(t)
|
|
1534
1534
|
}
|
|
1535
1535
|
};
|
|
1536
|
-
},
|
|
1536
|
+
}, _t = null, Jr = () => {
|
|
1537
1537
|
const e = L("idle"), t = L(null);
|
|
1538
1538
|
return {
|
|
1539
|
-
saveToLocal: (l, c,
|
|
1539
|
+
saveToLocal: (l, c, m = null, b, h) => {
|
|
1540
1540
|
e.value = "saving";
|
|
1541
|
-
const
|
|
1541
|
+
const R = () => {
|
|
1542
1542
|
try {
|
|
1543
|
-
const
|
|
1544
|
-
localStorage.setItem(ge, JSON.stringify(
|
|
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 (
|
|
1548
|
-
console.error("[AutoSave] Failed to write to localStorage:",
|
|
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(
|
|
1553
|
+
typeof window < "u" && "requestIdleCallback" in window ? window.requestIdleCallback(R, { timeout: 2e3 }) : setTimeout(R, 0);
|
|
1554
1554
|
},
|
|
1555
|
-
flushSave: (l, c,
|
|
1555
|
+
flushSave: (l, c, m = null, b, h) => {
|
|
1556
1556
|
try {
|
|
1557
|
-
const
|
|
1558
|
-
localStorage.setItem(ge, JSON.stringify(
|
|
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 !==
|
|
1568
|
-
rows:
|
|
1569
|
-
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
|
|
1587
|
-
return !(Date.now() >
|
|
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
|
-
},
|
|
1595
|
+
}, Dt = (e) => !e || /\{\{.*?\}\}/.test(e) || /^(https?:\/\/|mailto:|tel:)/i.test(e) ? e : `https://${e}`, Ft = (e) => e == null ? "" : String(e).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'"), Ht = (e) => e == null ? "" : String(e).replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">"), Gr = (e) => {
|
|
1596
1596
|
if (e == null) return "";
|
|
1597
1597
|
const t = String(e);
|
|
1598
1598
|
return t.indexOf(""") === -1 ? t : t.replace(/style="([^"]*)"/g, (r, n) => `style="${n.replace(/"/g, "'")}"`);
|
|
1599
|
-
},
|
|
1600
|
-
function
|
|
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
|
-
|
|
1611
|
+
Ut.set(n, {
|
|
1612
1612
|
...r,
|
|
1613
1613
|
name: n
|
|
1614
1614
|
});
|
|
1615
1615
|
}
|
|
1616
|
-
function
|
|
1617
|
-
return
|
|
1616
|
+
function Jt(e) {
|
|
1617
|
+
return Ut.get(e);
|
|
1618
1618
|
}
|
|
1619
|
-
function
|
|
1620
|
-
return
|
|
1619
|
+
function sa() {
|
|
1620
|
+
return Ut;
|
|
1621
1621
|
}
|
|
1622
|
-
var
|
|
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
|
|
1626
|
-
return !
|
|
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((
|
|
1629
|
-
return `${
|
|
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;` : "",
|
|
1651
|
-
const
|
|
1652
|
-
return
|
|
1653
|
-
},
|
|
1654
|
-
return
|
|
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:
|
|
1658
|
-
escapeHtml:
|
|
1659
|
-
escapeAttr:
|
|
1660
|
-
safeUrl:
|
|
1657
|
+
paddingStyle: m,
|
|
1658
|
+
escapeHtml: Ft,
|
|
1659
|
+
escapeAttr: Ht,
|
|
1660
|
+
safeUrl: Dt,
|
|
1661
1661
|
resolveBgCss: e,
|
|
1662
1662
|
resolveBgVml: t,
|
|
1663
|
-
getResponsiveClasses:
|
|
1663
|
+
getResponsiveClasses: b,
|
|
1664
1664
|
react: null
|
|
1665
1665
|
}) : a;
|
|
1666
1666
|
} };
|
|
1667
|
-
},
|
|
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" ?
|
|
1671
|
-
return `${
|
|
1672
|
-
}).filter((t) => t !== null).join(", "),
|
|
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
|
-
}),
|
|
1676
|
-
let t =
|
|
1677
|
-
return t =
|
|
1678
|
-
},
|
|
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
|
|
1682
|
-
return !
|
|
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((
|
|
1685
|
-
return `${
|
|
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;` : "",
|
|
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
|
-
},
|
|
1697
|
-
const
|
|
1698
|
-
return
|
|
1699
|
-
},
|
|
1700
|
-
return
|
|
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:
|
|
1705
|
-
escapeAttr:
|
|
1706
|
-
safeUrl:
|
|
1704
|
+
escapeHtml: Ft,
|
|
1705
|
+
escapeAttr: Ht,
|
|
1706
|
+
safeUrl: Dt,
|
|
1707
1707
|
resolveBgCss: e,
|
|
1708
|
-
resolveBgVml:
|
|
1709
|
-
getResponsiveClasses:
|
|
1708
|
+
resolveBgVml: m,
|
|
1709
|
+
getResponsiveClasses: b,
|
|
1710
1710
|
react: {
|
|
1711
|
-
parseCssString:
|
|
1712
|
-
parseMarginPaddingDiscrete:
|
|
1713
|
-
normalizeFontFamily:
|
|
1714
|
-
styleObj:
|
|
1715
|
-
normalizeInlineStylesToReact:
|
|
1716
|
-
buildInlineJsx:
|
|
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
|
|
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] =
|
|
1727
|
+
t[a] = In(i);
|
|
1728
1728
|
}), t;
|
|
1729
1729
|
}
|
|
1730
|
-
function
|
|
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
|
|
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
|
|
1737
|
+
function eo(e, t, r, n, o) {
|
|
1738
1738
|
return `<${e}${o ? `
|
|
1739
1739
|
as="${o}"` : ""}
|
|
1740
1740
|
className="${t}"
|
|
1741
|
-
style={{ ${
|
|
1741
|
+
style={{ ${Nn(r)} }}
|
|
1742
1742
|
>
|
|
1743
1743
|
${n}
|
|
1744
1744
|
</${e}>
|
|
1745
1745
|
`;
|
|
1746
1746
|
}
|
|
1747
|
-
var
|
|
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
|
|
1751
|
-
return !
|
|
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:
|
|
1754
|
-
return `${
|
|
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,
|
|
1775
|
-
const u = [
|
|
1776
|
-
return
|
|
1777
|
-
},
|
|
1778
|
-
return
|
|
1779
|
-
uid:
|
|
1780
|
-
marginStyle:
|
|
1781
|
-
paddingStyle:
|
|
1782
|
-
escapeHtml:
|
|
1783
|
-
escapeAttr:
|
|
1784
|
-
safeUrl:
|
|
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:
|
|
1787
|
+
getResponsiveClasses: R,
|
|
1788
1788
|
react: null
|
|
1789
1789
|
}) : "";
|
|
1790
1790
|
},
|
|
1791
|
-
assembleMJML: (a, l, c,
|
|
1792
|
-
const
|
|
1793
|
-
@import url('${
|
|
1794
|
-
</mj-style>` : "",
|
|
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>`,
|
|
1798
|
-
${
|
|
1799
|
-
</mj-style>` : "",
|
|
1800
|
-
@media only screen and (max-width:${
|
|
1801
|
-
${
|
|
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",
|
|
1808
|
+
].join(" ") : "", s = c.backgroundColor || "#ffffff", y = n(c.padding);
|
|
1809
1809
|
return `<mjml lang="${c.language}">
|
|
1810
1810
|
<mj-head>
|
|
1811
|
-
${
|
|
1811
|
+
${E}
|
|
1812
1812
|
<mj-title>${a}</mj-title>
|
|
1813
1813
|
<mj-preview>${c.preheaderText} ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ </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
|
-
${
|
|
1823
|
-
${
|
|
1824
|
-
${
|
|
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="${
|
|
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
|
-
},
|
|
1839
|
-
function
|
|
1840
|
-
const e =
|
|
1841
|
-
return Ie(
|
|
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
|
|
1844
|
-
const e = Oe(
|
|
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)."),
|
|
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
|
|
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
|
|
1858
|
+
var ca = ["is_empty", "is_not_empty"], ua = ["in", "not_in"], da = [
|
|
1859
1859
|
">",
|
|
1860
1860
|
"<",
|
|
1861
1861
|
">=",
|
|
1862
1862
|
"<="
|
|
1863
|
-
],
|
|
1863
|
+
], pa = [
|
|
1864
1864
|
"date_before",
|
|
1865
1865
|
"date_after",
|
|
1866
1866
|
"date_on"
|
|
1867
|
-
],
|
|
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
|
-
],
|
|
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
|
-
},
|
|
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
|
|
1956
|
+
return sn(o).includes(n);
|
|
1957
1957
|
case "not_in":
|
|
1958
|
-
return !
|
|
1958
|
+
return !sn(o).includes(n);
|
|
1959
1959
|
case ">": {
|
|
1960
|
-
const [i, a] =
|
|
1961
|
-
return
|
|
1960
|
+
const [i, a] = Qe(r, e.value);
|
|
1961
|
+
return Ze(i, a) && i > a;
|
|
1962
1962
|
}
|
|
1963
1963
|
case "<": {
|
|
1964
|
-
const [i, a] =
|
|
1965
|
-
return
|
|
1964
|
+
const [i, a] = Qe(r, e.value);
|
|
1965
|
+
return Ze(i, a) && i < a;
|
|
1966
1966
|
}
|
|
1967
1967
|
case ">=": {
|
|
1968
|
-
const [i, a] =
|
|
1969
|
-
return
|
|
1968
|
+
const [i, a] = Qe(r, e.value);
|
|
1969
|
+
return Ze(i, a) && i >= a;
|
|
1970
1970
|
}
|
|
1971
1971
|
case "<=": {
|
|
1972
|
-
const [i, a] =
|
|
1973
|
-
return
|
|
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
|
-
},
|
|
1994
|
+
}, ln = (e, t) => {
|
|
1995
1995
|
if (!e.rules.length) return !0;
|
|
1996
|
-
const r = e.rules.map((n) =>
|
|
1996
|
+
const r = e.rules.map((n) => Nt(n, t));
|
|
1997
1997
|
return e.match === "any" ? r.some(Boolean) : r.every(Boolean);
|
|
1998
|
-
},
|
|
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) =>
|
|
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:
|
|
2007
|
-
evaluateGroup:
|
|
2008
|
-
}),
|
|
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
|
-
},
|
|
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 =
|
|
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
|
-
},
|
|
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 =
|
|
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
|
-
},
|
|
2026
|
-
if (!(r >=
|
|
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 &&
|
|
2036
|
+
l.length > 0 && Ln(l, t, r + 1);
|
|
2037
2037
|
}
|
|
2038
2038
|
}
|
|
2039
|
-
},
|
|
2039
|
+
}, Pn = (e) => {
|
|
2040
2040
|
const t = /* @__PURE__ */ new Set();
|
|
2041
|
-
if (
|
|
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
|
-
},
|
|
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 = (
|
|
2427
|
-
if (r.has(
|
|
2428
|
-
const
|
|
2429
|
-
return `ital,wght@${[...
|
|
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 = (
|
|
2433
|
-
if (!
|
|
2434
|
-
const
|
|
2435
|
-
|
|
2436
|
-
}, c = (
|
|
2437
|
-
const
|
|
2438
|
-
return
|
|
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: (
|
|
2445
|
-
if (!
|
|
2446
|
-
const
|
|
2447
|
-
for (const
|
|
2448
|
-
|
|
2449
|
-
if (
|
|
2450
|
-
const
|
|
2451
|
-
if (!
|
|
2452
|
-
const
|
|
2453
|
-
|
|
2454
|
-
for (const
|
|
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
|
|
2459
|
-
const
|
|
2460
|
-
if (document.head.querySelector(
|
|
2461
|
-
const
|
|
2462
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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 = [],
|
|
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
|
-
},
|
|
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:
|
|
2509
|
-
return
|
|
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
|
-
},
|
|
2516
|
-
|
|
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 && !
|
|
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 && !
|
|
2527
|
-
|
|
2528
|
-
const u =
|
|
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
|
-
|
|
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(
|
|
2535
|
+
u.push(de(d, !0));
|
|
2536
2536
|
}
|
|
2537
|
-
if (a.borderRadius != null && u.push(`border-radius: ${
|
|
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
|
-
|
|
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
|
-
|
|
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}: ${
|
|
2545
|
-
|
|
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
|
-
|
|
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",
|
|
2552
|
-
u.push(`margin-left: ${s} !important`), u.push(`margin-right: ${
|
|
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(...
|
|
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(...
|
|
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
|
-
|
|
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(...
|
|
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 &&
|
|
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 &&
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 &&
|
|
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
|
-
|
|
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
|
|
2590
|
-
const
|
|
2591
|
-
if (l.length > 0 &&
|
|
2592
|
-
const u =
|
|
2593
|
-
|
|
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
|
|
2595
|
+
return j.push(...m), j.join(`
|
|
2596
2596
|
`);
|
|
2597
|
-
} }),
|
|
2598
|
-
const o = `padding:${n?.top ?? 0}px ${n?.right ?? 0}px ${n?.bottom ?? 0}px ${n?.left ?? 0}px`, i = t &&
|
|
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
|
|
2601
|
-
return a &&
|
|
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:${
|
|
2604
|
+
`border-radius:${X(t.radius)}`,
|
|
2605
2605
|
"overflow:hidden",
|
|
2606
2606
|
"line-height:0",
|
|
2607
2607
|
"font-size:0"
|
|
2608
2608
|
];
|
|
2609
|
-
|
|
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
|
-
},
|
|
2617
|
-
const i = `${n?.top ?? 0}px ${n?.right ?? 0}px ${n?.bottom ?? 0}px ${n?.left ?? 0}px`, a = t &&
|
|
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
|
|
2619
|
+
const b = {
|
|
2620
2620
|
padding: i,
|
|
2621
2621
|
lineHeight: "0",
|
|
2622
2622
|
fontSize: "0"
|
|
2623
2623
|
};
|
|
2624
|
-
return l && (Object.assign(
|
|
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:
|
|
2627
|
+
borderRadius: X(t.radius),
|
|
2628
2628
|
overflow: "hidden",
|
|
2629
2629
|
lineHeight: "0",
|
|
2630
2630
|
fontSize: "0"
|
|
2631
2631
|
};
|
|
2632
|
-
|
|
2633
|
-
const
|
|
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(([
|
|
2639
|
-
},
|
|
2640
|
-
function
|
|
2641
|
-
return
|
|
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
|
|
2646
|
-
}),
|
|
2645
|
+
throw Tt = null, e;
|
|
2646
|
+
}), Tt;
|
|
2647
2647
|
}
|
|
2648
|
-
function
|
|
2649
|
-
return
|
|
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
|
|
2658
|
-
}),
|
|
2657
|
+
throw At = null, e;
|
|
2658
|
+
}), At;
|
|
2659
2659
|
}
|
|
2660
|
-
async function
|
|
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
|
|
2668
|
-
const { prettier: t, plugins: r } = await
|
|
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
|
-
}),
|
|
2674
|
-
const { prettier: t, plugins: r } = await
|
|
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
|
-
}),
|
|
2680
|
-
const { prettier: t, plugins: r } = await
|
|
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
|
-
}),
|
|
2685
|
+
}), un = (e) => e.trim().toLowerCase().replace(/\s+/g, "_"), uo = (e) => {
|
|
2686
2686
|
const t = e.indexOf("|");
|
|
2687
|
-
if (t === -1) return { key:
|
|
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:
|
|
2690
|
+
key: un(r),
|
|
2691
2691
|
pipeDefault: n
|
|
2692
2692
|
};
|
|
2693
|
-
},
|
|
2694
|
-
const { key: i, pipeDefault: a } =
|
|
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
|
-
}),
|
|
2697
|
-
let i =
|
|
2698
|
-
return i =
|
|
2699
|
-
},
|
|
2700
|
-
function
|
|
2701
|
-
for (const t of e)
|
|
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
|
|
2704
|
-
return [...
|
|
2703
|
+
function po() {
|
|
2704
|
+
return [...Wt.keys()];
|
|
2705
2705
|
}
|
|
2706
|
-
function
|
|
2707
|
-
return
|
|
2706
|
+
function mo(e, t) {
|
|
2707
|
+
return Wt.get(e)?.tokens?.[t];
|
|
2708
2708
|
}
|
|
2709
|
-
var
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
2878
|
-
const n =
|
|
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() ?
|
|
2881
|
+
if (i) return r?.trim() ? pn(i, t, r) : i;
|
|
2882
2882
|
}
|
|
2883
|
-
const o =
|
|
2884
|
-
return o ? r?.trim() ?
|
|
2885
|
-
},
|
|
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) =>
|
|
2888
|
-
return r = r.replace(/\{\{\s*(?:'([^']*)'|"([^"]*)"|(\w+))(?:\s*\|\s*(?:'([^']*)'|"([^"]*)"|([^'"\}\s][^'"\}]*?)))?\s*\}\}/g, (n, o, i, a, l, c,
|
|
2889
|
-
const
|
|
2890
|
-
return
|
|
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
|
-
},
|
|
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
|
-
},
|
|
2895
|
+
}, fn = (e, t) => {
|
|
2896
2896
|
const r = e.trim();
|
|
2897
2897
|
return r ? t?.trim() ? `{${r} ?? "${t.trim().replace(/"/g, '\\"')}"}` : `{${r}}` : "";
|
|
2898
|
-
},
|
|
2898
|
+
}, ho = (e) => {
|
|
2899
2899
|
if (!e) return "";
|
|
2900
|
-
let t = e.replace(/<span[^>]*\bdata-merge="([^"]+)"(?:[^>]*\bdata-merge-default="([^"]*)")?[^>]*>.*?<\/span>/gs, (r, n, o) =>
|
|
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
|
|
2903
|
-
return
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
`)}`,
|
|
2961
|
+
`)}`, Un = (e, t, r, n, o = !1) => {
|
|
2962
2962
|
const i = n?.mergeTagActive || n?.linkTagActive;
|
|
2963
|
-
if (t === "wrap" || !i) return
|
|
2963
|
+
if (t === "wrap" || !i) return go(e, r);
|
|
2964
2964
|
if (o) {
|
|
2965
|
-
const { mergeTagContext: a, mergeTagActive: l, linkTagContext: c, linkTagActive:
|
|
2966
|
-
return
|
|
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
|
-
},
|
|
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 :
|
|
2973
|
-
},
|
|
2974
|
-
function
|
|
2975
|
-
|
|
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
|
|
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
|
|
2984
|
-
return t[e] ??
|
|
2983
|
+
function ko(e, t) {
|
|
2984
|
+
return t[e] ?? Kt.get(e) ?? So;
|
|
2985
2985
|
}
|
|
2986
|
-
function
|
|
2987
|
-
return
|
|
2986
|
+
function qn(e) {
|
|
2987
|
+
return Gn.get(e);
|
|
2988
2988
|
}
|
|
2989
|
-
function
|
|
2990
|
-
return [...
|
|
2989
|
+
function ba() {
|
|
2990
|
+
return [...Kt.entries()].map(([e, t]) => ({
|
|
2991
2991
|
id: e,
|
|
2992
2992
|
meta: t
|
|
2993
2993
|
}));
|
|
2994
2994
|
}
|
|
2995
|
-
var
|
|
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
|
-
},
|
|
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
|
-
],
|
|
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 =
|
|
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 `${
|
|
3391
|
+
return `${Bt(e.tag)} < ${Ot(e.tag, n)}`;
|
|
3392
3392
|
case "date_after":
|
|
3393
|
-
return `${
|
|
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
|
-
},
|
|
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
|
-
},
|
|
3580
|
-
const r =
|
|
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
|
-
},
|
|
3610
|
-
const t =
|
|
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
|
-
},
|
|
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 =
|
|
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
|
-
},
|
|
3649
|
-
const r = (a, l) => a.length === 0 ? l : [...a].reverse().reduce((c,
|
|
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
|
|
3656
|
-
return
|
|
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((
|
|
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
|
-
},
|
|
3673
|
-
const r =
|
|
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((
|
|
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 =
|
|
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:
|
|
3684
|
-
preludes:
|
|
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
|
|
3691
|
-
const i =
|
|
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 =
|
|
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
|
-
${
|
|
3699
|
-
},
|
|
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((
|
|
3705
|
-
return
|
|
3706
|
-
openTag: `*|IF:${
|
|
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 =
|
|
3710
|
+
const o = Kn(e, t);
|
|
3711
3711
|
if (!o) return null;
|
|
3712
|
-
const { expression: i, preludes: a } = o, l =
|
|
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:
|
|
3717
|
+
closeTag: Vn(t)
|
|
3718
3718
|
};
|
|
3719
|
-
},
|
|
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
|
-
},
|
|
3763
|
+
}, Ao = (e) => {
|
|
3764
3764
|
if (!e.rules.length) return null;
|
|
3765
|
-
const t = e.rules.map(
|
|
3765
|
+
const t = e.rules.map(Yn);
|
|
3766
3766
|
return t.length === 1 ? t[0] : `(${t.join(e.match === "any" ? " || " : " && ")})`;
|
|
3767
|
-
},
|
|
3768
|
-
const t = (e.rules ?? []).map(
|
|
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
|
-
},
|
|
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 =
|
|
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
|
-
},
|
|
3787
|
-
function
|
|
3788
|
-
const t = e.split(
|
|
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 &&
|
|
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 "
|
|
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
|
|
3826
|
-
function
|
|
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(
|
|
3829
|
+
return localStorage.getItem(Qn) === "true";
|
|
3830
3830
|
} catch {
|
|
3831
3831
|
return !1;
|
|
3832
3832
|
}
|
|
3833
3833
|
}
|
|
3834
|
-
|
|
3834
|
+
vn(st, (e) => {
|
|
3835
3835
|
if (!(typeof window > "u"))
|
|
3836
3836
|
try {
|
|
3837
|
-
localStorage.setItem(
|
|
3837
|
+
localStorage.setItem(Qn, String(e));
|
|
3838
3838
|
} catch {
|
|
3839
3839
|
}
|
|
3840
3840
|
});
|
|
3841
|
-
function
|
|
3841
|
+
function Yt() {
|
|
3842
3842
|
return {
|
|
3843
|
-
minifyOutput:
|
|
3843
|
+
minifyOutput: st,
|
|
3844
3844
|
toggleMinify: () => {
|
|
3845
|
-
|
|
3845
|
+
st.value = !st.value;
|
|
3846
3846
|
}
|
|
3847
3847
|
};
|
|
3848
3848
|
}
|
|
3849
|
-
var
|
|
3850
|
-
const { rows: t, canvasStyles: r, generators: n, espSyntax: o, visibilityContext: i, tagSubstitution: a, guardEmpty: l, collectFonts: c, collectMobileCSS:
|
|
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
|
|
3853
|
-
return
|
|
3854
|
-
},
|
|
3855
|
-
let
|
|
3856
|
-
for (const
|
|
3857
|
-
if (C === "prune" && !
|
|
3858
|
-
const
|
|
3859
|
-
if (
|
|
3860
|
-
if (_ >=
|
|
3861
|
-
const
|
|
3862
|
-
|
|
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 (
|
|
3866
|
-
if (!
|
|
3867
|
-
const
|
|
3868
|
-
let
|
|
3869
|
-
C === "wrap" &&
|
|
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(";")}"> </div>`;
|
|
3869
|
+
C === "wrap" && E(p.visibility) && (S = be(S, p.visibility, o.value)), f += S;
|
|
3870
3870
|
continue;
|
|
3871
3871
|
}
|
|
3872
|
-
let
|
|
3873
|
-
const
|
|
3874
|
-
C === "wrap" &&
|
|
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
|
|
3877
|
-
},
|
|
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 =
|
|
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" &&
|
|
3889
|
+
return C === "wrap" && E(s.visibility) && (P = be(P, s.visibility, o.value)), P;
|
|
3890
3890
|
}
|
|
3891
|
-
const
|
|
3892
|
-
let
|
|
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 *
|
|
3895
|
-
|
|
3894
|
+
const P = I.width / 100 * w;
|
|
3895
|
+
$.push(P), v += P;
|
|
3896
3896
|
});
|
|
3897
|
-
const
|
|
3898
|
-
Math.abs(
|
|
3899
|
-
let
|
|
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" && !
|
|
3902
|
-
const V =
|
|
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
|
-
|
|
3909
|
-
`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
|
-
],
|
|
3915
|
-
|
|
3916
|
-
<td valign="${I.verticalAlign ?? "middle"}"${q ? ` class="${q}"` : ""} style="${
|
|
3917
|
-
${
|
|
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 && (
|
|
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="${
|
|
3923
|
-
style="width:${
|
|
3922
|
+
width="${g}%"
|
|
3923
|
+
style="width:${g}%;max-width:${g}%;font-size:0;line-height:0;padding:0;">
|
|
3924
3924
|
|
|
3925
3925
|
</td>
|
|
3926
3926
|
`);
|
|
3927
3927
|
});
|
|
3928
|
-
const
|
|
3929
|
-
let
|
|
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
|
-
${
|
|
3931
|
+
${T}
|
|
3932
3932
|
</tr>
|
|
3933
3933
|
</table>`;
|
|
3934
|
-
const
|
|
3935
|
-
...
|
|
3936
|
-
|
|
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
|
|
3940
|
-
return C === "wrap" &&
|
|
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${
|
|
3943
|
-
${
|
|
3942
|
+
<td${B.length ? ` style="${B.join(";")}"` : ""}>
|
|
3943
|
+
${D}
|
|
3944
3944
|
</td>
|
|
3945
3945
|
</tr>
|
|
3946
3946
|
`;
|
|
3947
|
-
},
|
|
3948
|
-
const { getGoogleFontImports: C } =
|
|
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
|
|
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>${
|
|
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
|
-
${
|
|
3980
|
+
${p ? `<link href="${p}" rel="stylesheet">` : ""}
|
|
3981
3981
|
<style>
|
|
3982
|
-
${
|
|
3982
|
+
${w}
|
|
3983
3983
|
</style>
|
|
3984
3984
|
</head>
|
|
3985
3985
|
|
|
3986
|
-
<body style="${
|
|
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} ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌
|
|
3989
3989
|
</div>
|
|
@@ -4000,142 +4000,142 @@ ${r.value.preheaderText} ͏ ‌ ͏ ‌ ͏ ‌
|
|
|
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((
|
|
4004
|
-
if (s === "prune" && !
|
|
4005
|
-
const
|
|
4006
|
-
|
|
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
|
-
`,
|
|
4014
|
+
`, v = Un(v, s, o.value, a?.value), v;
|
|
4015
4015
|
};
|
|
4016
4016
|
return {
|
|
4017
|
-
export: async (s = "prune",
|
|
4017
|
+
export: async (s = "prune", y) => {
|
|
4018
4018
|
if (!l("Export")) return;
|
|
4019
|
-
const C =
|
|
4020
|
-
if (
|
|
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(
|
|
4022
|
+
filename: `${Ne(f, s)}.html`,
|
|
4023
4023
|
mimeType: "text/html"
|
|
4024
4024
|
});
|
|
4025
4025
|
else {
|
|
4026
|
-
const
|
|
4026
|
+
const g = await so(_);
|
|
4027
4027
|
Ae({
|
|
4028
|
-
content:
|
|
4029
|
-
filename: `${Ne(
|
|
4028
|
+
content: g,
|
|
4029
|
+
filename: `${Ne(f, s)}.html`,
|
|
4030
4030
|
mimeType: "text/html"
|
|
4031
4031
|
});
|
|
4032
4032
|
}
|
|
4033
4033
|
},
|
|
4034
|
-
getHTML: (s = "prune",
|
|
4034
|
+
getHTML: (s = "prune", y) => {
|
|
4035
4035
|
if (!t.value || t.value.length === 0) return null;
|
|
4036
|
-
const C =
|
|
4036
|
+
const C = j(s, y || "Untitled Template");
|
|
4037
4037
|
return Be("html", C);
|
|
4038
4038
|
}
|
|
4039
4039
|
};
|
|
4040
|
-
},
|
|
4041
|
-
const { rows: t, canvasStyles: r, generators: n, espSyntax: o, visibilityContext: i, tagSubstitution: a, guardEmpty: l, collectFonts: c, collectMobileCSS:
|
|
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,
|
|
4044
|
-
return s ||
|
|
4045
|
-
},
|
|
4046
|
-
let
|
|
4047
|
-
for (const
|
|
4048
|
-
const
|
|
4049
|
-
if (
|
|
4050
|
-
const
|
|
4051
|
-
if (
|
|
4052
|
-
if (_ >=
|
|
4053
|
-
const
|
|
4054
|
-
|
|
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 (
|
|
4059
|
-
if (!
|
|
4060
|
-
const
|
|
4061
|
-
let
|
|
4062
|
-
|
|
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} }}> </div>`;
|
|
4062
|
+
y === "wrap" && R(p.visibility) && (T = nt(T, p.visibility)), f += ` ${T}
|
|
4063
4063
|
`;
|
|
4064
4064
|
continue;
|
|
4065
4065
|
}
|
|
4066
|
-
let
|
|
4067
|
-
|
|
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
|
|
4071
|
-
},
|
|
4072
|
-
if (
|
|
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 =
|
|
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} }}> </div>
|
|
4080
4080
|
</Section>`;
|
|
4081
|
-
return
|
|
4081
|
+
return y === "wrap" && R(d.visibility) && (V = nt(V, d.visibility)), V;
|
|
4082
4082
|
}
|
|
4083
|
-
const _ = r.value.mobileBreakpoint || 600,
|
|
4084
|
-
let
|
|
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 *
|
|
4087
|
-
|
|
4086
|
+
const P = I.width / 100 * p;
|
|
4087
|
+
g.push(P), w += P;
|
|
4088
4088
|
});
|
|
4089
|
-
const
|
|
4090
|
-
Math.abs(
|
|
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 (
|
|
4094
|
-
const V =
|
|
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
|
-
...
|
|
4099
|
-
borderRadius:
|
|
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
|
-
},
|
|
4106
|
-
|
|
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={{ ${
|
|
4108
|
+
style={{ ${ee} }}
|
|
4109
4109
|
>
|
|
4110
|
-
${
|
|
4110
|
+
${Se}
|
|
4111
4111
|
</Column>
|
|
4112
|
-
`, P < d.columns.length - 1 && d.gap && (
|
|
4112
|
+
`, P < d.columns.length - 1 && d.gap && (v += `<Column
|
|
4113
4113
|
className="${q ? `gap-${d.gap} ${q}` : `gap-${d.gap}`}"
|
|
4114
|
-
style={{ width:"${
|
|
4114
|
+
style={{ width:"${f}%", maxWidth:"${f}%", fontSize:"0", lineHeight:"0" }}
|
|
4115
4115
|
> </Column>
|
|
4116
4116
|
`);
|
|
4117
4117
|
});
|
|
4118
|
-
const
|
|
4119
|
-
...
|
|
4120
|
-
...
|
|
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
|
-
},
|
|
4123
|
-
let
|
|
4124
|
-
${
|
|
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
|
|
4127
|
-
},
|
|
4128
|
-
const
|
|
4129
|
-
`),
|
|
4130
|
-
<link href="${
|
|
4131
|
-
fontFamily="${
|
|
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: "${
|
|
4133
|
+
webFont={{ url: "${w}", format: "woff2" }}
|
|
4134
4134
|
fontWeight={400}
|
|
4135
4135
|
fontStyle="normal"
|
|
4136
4136
|
/>`).join(`
|
|
4137
4137
|
`) : "";
|
|
4138
|
-
let
|
|
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
|
-
${
|
|
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>${
|
|
4174
|
+
<title>${y}</title>
|
|
4175
4175
|
<style>{styles}</style>
|
|
4176
|
-
${
|
|
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
|
-
${
|
|
4200
|
+
${S}
|
|
4201
4201
|
</Container>
|
|
4202
4202
|
</Container>
|
|
4203
4203
|
</Body>
|
|
@@ -4205,10 +4205,10 @@ ${k}
|
|
|
4205
4205
|
);
|
|
4206
4206
|
}
|
|
4207
4207
|
`;
|
|
4208
|
-
const
|
|
4209
|
-
if (d === "wrap" || !
|
|
4210
|
-
const
|
|
4211
|
-
(P || q) && (
|
|
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(""))),
|
|
4219
|
+
].join(""))), M = ho(M);
|
|
4220
4220
|
}
|
|
4221
|
-
return
|
|
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
|
|
4227
|
-
if (
|
|
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
|
|
4233
|
+
const p = await lo(C);
|
|
4234
4234
|
Ae({
|
|
4235
|
-
content:
|
|
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
|
|
4244
|
-
return Be("react-email",
|
|
4243
|
+
const y = N(d, s || "Untitled Template");
|
|
4244
|
+
return Be("react-email", y);
|
|
4245
4245
|
}
|
|
4246
4246
|
};
|
|
4247
|
-
},
|
|
4248
|
-
const { rows: t, canvasStyles: r, generators: n, espSyntax: o, visibilityContext: i, tagSubstitution: a, guardEmpty: l, collectFonts: c, collectMobileCSS:
|
|
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
|
-
},
|
|
4252
|
+
}, R = (u, d, s, y) => {
|
|
4253
4253
|
let C = "";
|
|
4254
4254
|
for (const _ of u) {
|
|
4255
|
-
const
|
|
4256
|
-
if (s === "prune" && !
|
|
4257
|
-
const
|
|
4258
|
-
if (
|
|
4259
|
-
if (
|
|
4260
|
-
const
|
|
4261
|
-
if (
|
|
4262
|
-
let
|
|
4263
|
-
s === "wrap" &&
|
|
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 (
|
|
4267
|
+
if (p === "row-spacer") {
|
|
4268
4268
|
if (!_.height || _.height <= 0) continue;
|
|
4269
|
-
const
|
|
4270
|
-
let
|
|
4271
|
-
s === "wrap" &&
|
|
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(";")}"> </div>`;
|
|
4271
|
+
s === "wrap" && h(_.visibility) && ($ = be($, _.visibility, o.value)), C += $;
|
|
4272
4272
|
continue;
|
|
4273
4273
|
}
|
|
4274
|
-
let
|
|
4275
|
-
s === "wrap" &&
|
|
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
|
-
},
|
|
4278
|
+
}, E = (u, d, s, y) => {
|
|
4279
4279
|
if (!u.columns?.length) return "";
|
|
4280
|
-
const C =
|
|
4281
|
-
let
|
|
4282
|
-
u.columns.forEach((
|
|
4283
|
-
const
|
|
4284
|
-
|
|
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
|
|
4287
|
-
Math.abs(
|
|
4288
|
-
let
|
|
4289
|
-
u.columns.forEach((
|
|
4290
|
-
if (s === "prune" && !
|
|
4291
|
-
const I =
|
|
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:${
|
|
4295
|
-
|
|
4296
|
-
`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 =
|
|
4300
|
-
if (
|
|
4301
|
-
${
|
|
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
|
-
`,
|
|
4304
|
-
const
|
|
4305
|
-
|
|
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;"> </td>
|
|
4306
4306
|
`;
|
|
4307
4307
|
}
|
|
4308
4308
|
});
|
|
4309
|
-
const
|
|
4310
|
-
return `<div style="padding:${
|
|
4311
|
-
<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:${(u.gap ?? 0) > 0 ||
|
|
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
|
-
${
|
|
4313
|
+
${S}</tr>
|
|
4314
4314
|
</table>
|
|
4315
4315
|
</div>`;
|
|
4316
|
-
},
|
|
4317
|
-
const s = d || "Untitled Template", { getGoogleFontImports:
|
|
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
|
-
...
|
|
4322
|
+
...w ? [w] : []
|
|
4323
4323
|
].join(`
|
|
4324
4324
|
|
|
4325
|
-
`),
|
|
4326
|
-
|
|
4325
|
+
`), v = g.length > 0 ? [
|
|
4326
|
+
$,
|
|
4327
4327
|
"/* Mobile property overrides */",
|
|
4328
|
-
...
|
|
4328
|
+
...g
|
|
4329
4329
|
].join(`
|
|
4330
|
-
`) :
|
|
4331
|
-
t.value.forEach((
|
|
4332
|
-
if (u === "prune" && !
|
|
4333
|
-
if (
|
|
4334
|
-
if (!
|
|
4335
|
-
const
|
|
4336
|
-
let
|
|
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="${
|
|
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(";")}"> </div>
|
|
4341
4341
|
</td>
|
|
4342
4342
|
</tr>
|
|
4343
4343
|
</table>
|
|
4344
4344
|
</mj-raw>`;
|
|
4345
|
-
u === "wrap" &&
|
|
4345
|
+
u === "wrap" && h(k.visibility) && (te = be(te, k.visibility, o.value)), S.push(te);
|
|
4346
4346
|
return;
|
|
4347
4347
|
}
|
|
4348
|
-
const
|
|
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
|
-
|
|
4351
|
-
const
|
|
4352
|
-
I.push(
|
|
4350
|
+
k.columns.forEach((F) => {
|
|
4351
|
+
const te = F.width / 100 * D;
|
|
4352
|
+
I.push(te), P += te;
|
|
4353
4353
|
});
|
|
4354
|
-
const V =
|
|
4354
|
+
const V = D - P;
|
|
4355
4355
|
Math.abs(V) > 0.01 && I.length > 0 && (I[I.length - 1] += V);
|
|
4356
|
-
const q =
|
|
4357
|
-
const
|
|
4358
|
-
return
|
|
4359
|
-
})(),
|
|
4360
|
-
|
|
4361
|
-
const ze =
|
|
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
|
-
|
|
4364
|
-
const
|
|
4365
|
-
`padding:${
|
|
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
|
|
4371
|
-
|
|
4372
|
-
if (u === "prune" && !
|
|
4373
|
-
const
|
|
4374
|
-
`width:${
|
|
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:${
|
|
4376
|
+
`vertical-align:${F.verticalAlign ?? "middle"}`,
|
|
4377
4377
|
...vt,
|
|
4378
|
-
|
|
4379
|
-
`border-radius:${
|
|
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:${
|
|
4384
|
-
],
|
|
4385
|
-
if (
|
|
4386
|
-
${
|
|
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
|
-
`,
|
|
4389
|
-
const
|
|
4390
|
-
|
|
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;"> </td>
|
|
4391
4391
|
`;
|
|
4392
4392
|
}
|
|
4393
4393
|
});
|
|
4394
|
-
const
|
|
4395
|
-
let
|
|
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
|
-
${
|
|
4397
|
+
${Re}</tr>
|
|
4398
4398
|
</table>`}</div>`;
|
|
4399
|
-
u === "wrap" &&
|
|
4400
|
-
const
|
|
4401
|
-
|
|
4402
|
-
<!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:${
|
|
4403
|
-
<div style="margin:0px auto;max-width:${
|
|
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
|
-
${
|
|
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
|
|
4418
|
-
`), r.value,
|
|
4419
|
-
return
|
|
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",
|
|
4424
|
+
const s = d || "Untitled Template", y = x(u, s), C = gt(s), { minifyOutput: _ } = Yt();
|
|
4425
4425
|
if (_.value) Ae({
|
|
4426
|
-
content: Be("mjml",
|
|
4426
|
+
content: Be("mjml", y),
|
|
4427
4427
|
filename: `${Ne(C, u)}.mjml`,
|
|
4428
4428
|
mimeType: "text/plain"
|
|
4429
4429
|
});
|
|
4430
4430
|
else {
|
|
4431
|
-
const
|
|
4431
|
+
const f = await co(y);
|
|
4432
4432
|
Ae({
|
|
4433
|
-
content:
|
|
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 =
|
|
4441
|
+
const s = x(u, d || "Untitled Template");
|
|
4442
4442
|
return Be("mjml", s);
|
|
4443
4443
|
}
|
|
4444
4444
|
};
|
|
4445
|
-
},
|
|
4446
|
-
const { rows: t, canvasStyles: r, saveToHistoryFn: n, guardEmpty: o } = e, i = e.notify ?? ((
|
|
4447
|
-
const
|
|
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:
|
|
4450
|
-
template_name:
|
|
4451
|
-
canvas:
|
|
4452
|
-
rows:
|
|
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: (
|
|
4457
|
+
export: (b) => {
|
|
4458
4458
|
if (!o("Export")) return;
|
|
4459
|
-
const
|
|
4459
|
+
const h = a(b);
|
|
4460
4460
|
Ae({
|
|
4461
|
-
content: JSON.stringify(
|
|
4462
|
-
filename: `${
|
|
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: (
|
|
4467
|
-
const
|
|
4468
|
-
|
|
4466
|
+
import: (b, h) => {
|
|
4467
|
+
const R = new FileReader();
|
|
4468
|
+
R.onload = (E) => {
|
|
4469
4469
|
try {
|
|
4470
|
-
let
|
|
4471
|
-
|
|
4472
|
-
} catch (
|
|
4473
|
-
i(
|
|
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
|
-
},
|
|
4475
|
+
}, R.readAsText(b);
|
|
4476
4476
|
},
|
|
4477
|
-
getJSON: (
|
|
4477
|
+
getJSON: (b) => !t.value || t.value.length === 0 ? null : a(b)
|
|
4478
4478
|
};
|
|
4479
|
-
},
|
|
4479
|
+
}, Ho = 5, hn = /font-family\s*:\s*([^;<]+)/gi, Uo = (e) => e.replace(/"/g, '"').replace(/'/g, "'").replace(/'/g, "'"), Jo = (e) => {
|
|
4480
4480
|
if (!e || typeof e != "string") return [];
|
|
4481
4481
|
if (e.indexOf("font-family") === -1) return [];
|
|
4482
|
-
const t =
|
|
4482
|
+
const t = Uo(e), r = [];
|
|
4483
4483
|
let n;
|
|
4484
|
-
for (
|
|
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),
|
|
4491
|
-
if (
|
|
4492
|
-
const
|
|
4493
|
-
i =
|
|
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
|
-
},
|
|
4504
|
-
let
|
|
4505
|
-
typeof r == "object" && !("value" in r) ? (
|
|
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
|
-
},
|
|
4510
|
-
const { evaluateVisibility:
|
|
4511
|
-
if (!(
|
|
4512
|
-
for (const
|
|
4513
|
-
const
|
|
4514
|
-
if (
|
|
4515
|
-
if (
|
|
4516
|
-
for (const
|
|
4517
|
-
const I =
|
|
4518
|
-
u(I,
|
|
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
|
-
|
|
4522
|
+
B !== "row-spacer" && (S === "prune" && !x(O.props?.visibility, T) || k(O));
|
|
4523
4523
|
}
|
|
4524
|
-
}, d = (
|
|
4525
|
-
const
|
|
4526
|
-
return e.value.forEach((
|
|
4527
|
-
|
|
4528
|
-
const
|
|
4529
|
-
u(
|
|
4530
|
-
if (
|
|
4531
|
-
const
|
|
4532
|
-
for (const I of
|
|
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
|
-
}),
|
|
4537
|
-
},
|
|
4538
|
-
const
|
|
4539
|
-
return e.value.forEach((
|
|
4540
|
-
|
|
4541
|
-
const
|
|
4542
|
-
u(
|
|
4543
|
-
const I =
|
|
4544
|
-
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
|
-
}),
|
|
4548
|
-
}, C = (
|
|
4549
|
-
const
|
|
4547
|
+
}), k;
|
|
4548
|
+
}, C = (v, S) => {
|
|
4549
|
+
const T = Pn(e.value), k = S.length > 0 ? `
|
|
4550
4550
|
|
|
4551
4551
|
/* Mobile property overrides */
|
|
4552
|
-
${
|
|
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:${
|
|
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
|
-
${
|
|
4568
|
-
${
|
|
4567
|
+
${T ? `
|
|
4568
|
+
${T}` : ""}${k}
|
|
4569
4569
|
`}
|
|
4570
4570
|
}`;
|
|
4571
|
-
}, _ = Ce(() =>
|
|
4571
|
+
}, _ = Ce(() => j.value.syntax), f = {
|
|
4572
4572
|
rows: e,
|
|
4573
4573
|
canvasStyles: t,
|
|
4574
|
-
generators:
|
|
4574
|
+
generators: b,
|
|
4575
4575
|
espSyntax: _,
|
|
4576
|
-
visibilityContext:
|
|
4577
|
-
tagSubstitution:
|
|
4576
|
+
visibilityContext: R,
|
|
4577
|
+
tagSubstitution: E,
|
|
4578
4578
|
guardEmpty: d,
|
|
4579
4579
|
collectFonts: s,
|
|
4580
|
-
collectMobileCSS:
|
|
4580
|
+
collectMobileCSS: y,
|
|
4581
4581
|
buildMobileStyleBlock: C
|
|
4582
|
-
},
|
|
4582
|
+
}, p = jo(f), g = Lo(f), w = Do(f), $ = Fo({
|
|
4583
4583
|
rows: e,
|
|
4584
4584
|
canvasStyles: t,
|
|
4585
|
-
saveToHistoryFn:
|
|
4585
|
+
saveToHistoryFn: h,
|
|
4586
4586
|
guardEmpty: d,
|
|
4587
|
-
notify: (
|
|
4587
|
+
notify: (v, S) => N(v, S ?? "Import failed")
|
|
4588
4588
|
});
|
|
4589
4589
|
return {
|
|
4590
|
-
exportHTML:
|
|
4591
|
-
getExportedHTML:
|
|
4592
|
-
exportReactEmail:
|
|
4593
|
-
getExportedReactEmail:
|
|
4594
|
-
exportMJML:
|
|
4595
|
-
getExportedMJML:
|
|
4596
|
-
exportJSON:
|
|
4597
|
-
getExportedJSON:
|
|
4598
|
-
importJSON:
|
|
4599
|
-
espConfig:
|
|
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
|
-
},
|
|
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
|
-
}),
|
|
4619
|
-
function
|
|
4620
|
-
const
|
|
4621
|
-
return Ie(
|
|
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
|
|
4624
|
-
const e = Oe(
|
|
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
|
|
4629
|
-
const
|
|
4630
|
-
|
|
4631
|
-
componentId:
|
|
4632
|
-
tagName:
|
|
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
|
-
},
|
|
4636
|
-
html:
|
|
4637
|
-
react:
|
|
4638
|
-
mjml:
|
|
4639
|
-
}, { saveToLocal:
|
|
4640
|
-
const
|
|
4641
|
-
if (!(we >=
|
|
4642
|
-
for (const
|
|
4643
|
-
if (!
|
|
4644
|
-
const
|
|
4645
|
-
if (
|
|
4646
|
-
for (const
|
|
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 (
|
|
4650
|
-
const
|
|
4651
|
-
|
|
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
|
|
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(
|
|
4657
|
+
return Array.from(z);
|
|
4658
4658
|
};
|
|
4659
4659
|
{
|
|
4660
|
-
let
|
|
4661
|
-
|
|
4662
|
-
const
|
|
4663
|
-
|
|
4664
|
-
|
|
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
|
|
4669
|
-
let U = null,
|
|
4668
|
+
const Re = r ?? hr();
|
|
4669
|
+
let U = null, K = !1;
|
|
4670
4670
|
const ke = () => {
|
|
4671
|
-
|
|
4671
|
+
K || Re.value && (U && clearTimeout(U), U = setTimeout(() => {
|
|
4672
4672
|
U = null;
|
|
4673
|
-
const
|
|
4674
|
-
|
|
4675
|
-
},
|
|
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
|
|
4678
|
-
|
|
4677
|
+
function F(A = "change", z = !1) {
|
|
4678
|
+
M.saveToHistory(O, A, z), ke();
|
|
4679
4679
|
}
|
|
4680
|
-
function
|
|
4681
|
-
|
|
4680
|
+
function te(A) {
|
|
4681
|
+
F(A, !0);
|
|
4682
4682
|
}
|
|
4683
|
-
const
|
|
4684
|
-
if (
|
|
4685
|
-
for (const J of
|
|
4686
|
-
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)
|
|
4688
|
+
for (const we of G) We(we, z);
|
|
4689
4689
|
}
|
|
4690
|
-
},
|
|
4691
|
-
const
|
|
4692
|
-
if (
|
|
4690
|
+
}, yt = (A) => {
|
|
4691
|
+
const z = H.findRow(A);
|
|
4692
|
+
if (z) {
|
|
4693
4693
|
const J = /* @__PURE__ */ new Set();
|
|
4694
|
-
|
|
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
|
-
|
|
4697
|
-
},
|
|
4698
|
-
mergeTagContext:
|
|
4699
|
-
mergeTagActive:
|
|
4700
|
-
linkTagContext:
|
|
4701
|
-
linkTagActive:
|
|
4702
|
-
})),
|
|
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
|
|
4705
|
-
U && (clearTimeout(U), U = null,
|
|
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",
|
|
4708
|
-
window.removeEventListener("beforeunload",
|
|
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
|
|
4712
|
-
if (
|
|
4713
|
-
return
|
|
4714
|
-
const
|
|
4715
|
-
return !
|
|
4716
|
-
|
|
4717
|
-
}),
|
|
4718
|
-
},
|
|
4719
|
-
if (!
|
|
4720
|
-
const { templateId:
|
|
4721
|
-
|
|
4722
|
-
const J =
|
|
4723
|
-
return J && console.info("[maildeno-editor] Saved — exported JSON:", J),
|
|
4724
|
-
},
|
|
4725
|
-
const
|
|
4726
|
-
return
|
|
4727
|
-
canvas:
|
|
4728
|
-
content: { rows:
|
|
4729
|
-
name:
|
|
4730
|
-
tags:
|
|
4731
|
-
},
|
|
4732
|
-
},
|
|
4733
|
-
|
|
4734
|
-
const
|
|
4735
|
-
if (
|
|
4736
|
-
|
|
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
|
-
|
|
4740
|
-
|
|
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
|
-
},
|
|
4743
|
-
|
|
4744
|
-
|
|
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
|
-
},
|
|
4747
|
-
|
|
4748
|
-
const G =
|
|
4749
|
-
if (G && G.templateId ===
|
|
4750
|
-
console.info(`[EmailBuilder] Restoring local draft for template ${
|
|
4751
|
-
|
|
4752
|
-
}),
|
|
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 !==
|
|
4756
|
-
|
|
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
|
-
},
|
|
4759
|
-
U && (clearTimeout(U), U = null),
|
|
4760
|
-
|
|
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
|
-
|
|
4763
|
+
M.undo(B) && (Q(), ke());
|
|
4766
4764
|
}, ar = () => {
|
|
4767
|
-
|
|
4768
|
-
te(), f.initialize(B()), ae = f.version.value;
|
|
4769
|
-
});
|
|
4765
|
+
M.redo(B) && (Q(), ke());
|
|
4770
4766
|
}, ir = () => {
|
|
4771
|
-
|
|
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: () =>
|
|
4778
|
+
accept: () => ir(),
|
|
4779
4779
|
reject: () => {
|
|
4780
4780
|
}
|
|
4781
4781
|
});
|
|
4782
|
-
},
|
|
4783
|
-
const J =
|
|
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 (
|
|
4788
|
-
|
|
4789
|
-
|
|
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
|
-
|
|
4794
|
-
},
|
|
4795
|
-
const
|
|
4796
|
-
if (!
|
|
4797
|
-
const
|
|
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:
|
|
4800
|
-
type:
|
|
4799
|
+
id: A,
|
|
4800
|
+
type: z?.componentType ?? z?.type ?? null
|
|
4801
4801
|
};
|
|
4802
|
-
},
|
|
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:
|
|
4805
|
-
canvasStyles:
|
|
4806
|
-
templateTags:
|
|
4807
|
-
savedTemplateName:
|
|
4804
|
+
rows: i,
|
|
4805
|
+
canvasStyles: l,
|
|
4806
|
+
templateTags: m,
|
|
4807
|
+
savedTemplateName: c,
|
|
4808
4808
|
previewMode: E,
|
|
4809
|
-
sidebarTab:
|
|
4810
|
-
selectedId:
|
|
4811
|
-
selectedRowId:
|
|
4812
|
-
selectedColumn:
|
|
4813
|
-
visibilityPreviewContext:
|
|
4814
|
-
mergeTagInsertQueue:
|
|
4815
|
-
triggerMergeTagInsert:
|
|
4816
|
-
mergeTagPreviewContext:
|
|
4817
|
-
mergeTagPreviewActive:
|
|
4818
|
-
linkTagPreviewContext:
|
|
4819
|
-
linkTagPreviewActive:
|
|
4820
|
-
isBuilderReady:
|
|
4821
|
-
linksActive:
|
|
4822
|
-
espConfig:
|
|
4823
|
-
canvasHoveredId:
|
|
4824
|
-
nestedRowDragId:
|
|
4825
|
-
isRowDragActive:
|
|
4826
|
-
isTopLevelRowDragActive:
|
|
4827
|
-
layerHoveredId:
|
|
4828
|
-
addRow:
|
|
4829
|
-
addNestedRow:
|
|
4830
|
-
findRow:
|
|
4831
|
-
deleteRow:
|
|
4832
|
-
moveRow:
|
|
4833
|
-
moveNestedRow:
|
|
4834
|
-
reorderRows:
|
|
4835
|
-
addSpacer:
|
|
4836
|
-
duplicateRow:
|
|
4837
|
-
duplicateRowSpacer:
|
|
4838
|
-
addRowSilent:
|
|
4839
|
-
addSpacerSilent:
|
|
4840
|
-
reorderRowsSilent:
|
|
4841
|
-
addComponent:
|
|
4842
|
-
addComponentAtIndex:
|
|
4843
|
-
deleteComponent:
|
|
4844
|
-
moveComponent:
|
|
4845
|
-
moveComponentBetweenColumns:
|
|
4846
|
-
findComponent:
|
|
4847
|
-
updateComponent:
|
|
4848
|
-
duplicateComponent:
|
|
4849
|
-
exportHTML:
|
|
4850
|
-
getExportedHTML:
|
|
4851
|
-
exportReactEmail:
|
|
4852
|
-
getExportedReactEmail:
|
|
4853
|
-
exportMJML:
|
|
4854
|
-
getExportedMJML:
|
|
4855
|
-
exportJSON:
|
|
4856
|
-
getExportedJSON:
|
|
4857
|
-
importJSON: (
|
|
4858
|
-
clearTemplate:
|
|
4859
|
-
undo:
|
|
4860
|
-
redo:
|
|
4861
|
-
canUndo:
|
|
4862
|
-
canRedo:
|
|
4863
|
-
historyStatus:
|
|
4864
|
-
saveToHistory:
|
|
4865
|
-
saveToHistoryImmediate:
|
|
4866
|
-
initFromStorage:
|
|
4867
|
-
clearLocal:
|
|
4868
|
-
loadFromLocal:
|
|
4869
|
-
hasDraft:
|
|
4870
|
-
saveStatus:
|
|
4871
|
-
lastSaved:
|
|
4872
|
-
initForCreate:
|
|
4873
|
-
startNewTemplate:
|
|
4874
|
-
loadTemplate:
|
|
4875
|
-
loadTemplateById:
|
|
4876
|
-
saveTemplate:
|
|
4877
|
-
templateId:
|
|
4878
|
-
builderMode:
|
|
4879
|
-
loadVersionSnapshot:
|
|
4880
|
-
setJson:
|
|
4881
|
-
getSelection:
|
|
4882
|
-
setSelection:
|
|
4883
|
-
onChange:
|
|
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
|
-
|
|
4888
|
-
|
|
4889
|
-
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
|
|
4898
|
-
|
|
4899
|
-
|
|
4900
|
-
|
|
4901
|
-
|
|
4902
|
-
|
|
4903
|
-
|
|
4904
|
-
|
|
4905
|
-
|
|
4906
|
-
|
|
4907
|
-
|
|
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
|
-
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
|
|
4918
|
-
|
|
4919
|
-
|
|
4920
|
-
|
|
4921
|
-
|
|
4922
|
-
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
|
|
4926
|
-
|
|
4927
|
-
|
|
4928
|
-
|
|
4929
|
-
|
|
4930
|
-
|
|
4931
|
-
|
|
4932
|
-
|
|
4933
|
-
|
|
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
|
};
|