@bloklabs/cli 1.4.2 → 1.4.4

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.
@@ -133,9 +133,55 @@ function i(e) {
133
133
  let t = r(e);
134
134
  return t >= 0 && t < .12;
135
135
  }
136
+ var a = 250;
137
+ function o(e) {
138
+ let t = e.replace(/\s/g, "").toLowerCase();
139
+ if (t === "transparent") return {
140
+ r: 0,
141
+ g: 0,
142
+ b: 0,
143
+ a: 0
144
+ };
145
+ if (t === "white") return {
146
+ r: 255,
147
+ g: 255,
148
+ b: 255,
149
+ a: 1
150
+ };
151
+ let n = /^rgba?\((\d+),(\d+),(\d+)(?:,([\d.]+))?\)$/.exec(t);
152
+ if (n) return {
153
+ r: parseInt(n[1], 10),
154
+ g: parseInt(n[2], 10),
155
+ b: parseInt(n[3], 10),
156
+ a: n[4] === void 0 ? 1 : parseFloat(n[4])
157
+ };
158
+ let r = /^#([0-9a-f]{6}|[0-9a-f]{3})$/.exec(t);
159
+ if (r) {
160
+ let e = r[1], t = e.length === 3 ? [
161
+ e[0] + e[0],
162
+ e[1] + e[1],
163
+ e[2] + e[2]
164
+ ] : [
165
+ e.substring(0, 2),
166
+ e.substring(2, 4),
167
+ e.substring(4, 6)
168
+ ];
169
+ return {
170
+ r: parseInt(t[0], 16),
171
+ g: parseInt(t[1], 16),
172
+ b: parseInt(t[2], 16),
173
+ a: 1
174
+ };
175
+ }
176
+ return null;
177
+ }
178
+ function s(e) {
179
+ let t = o(e);
180
+ return t !== null && (t.a === 0 || t.r >= a && t.g >= a && t.b >= a) || i(e);
181
+ }
136
182
  //#endregion
137
183
  //#region src/components/utils/color-mapping.ts
138
- function a(e, t, n) {
184
+ function c(e, t, n) {
139
185
  let r = t / 100, i = n / 100;
140
186
  if (r === 0) {
141
187
  let e = Math.round(i * 255);
@@ -155,7 +201,7 @@ function a(e, t, n) {
155
201
  Math.round(o(c, s, l - 1 / 3) * 255)
156
202
  ];
157
203
  }
158
- function o(e) {
204
+ function l(e) {
159
205
  let t = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);
160
206
  if (t) return [
161
207
  parseInt(t[1], 16),
@@ -180,17 +226,17 @@ function o(e) {
180
226
  parseInt(i[2] + i[2], 16),
181
227
  parseInt(i[3] + i[3], 16)
182
228
  ];
183
- let o = /^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*[\d.]+\s*)?\)$/i.exec(e);
184
- if (o) return [
185
- Number(o[1]),
186
- Number(o[2]),
187
- Number(o[3])
229
+ let a = /^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*[\d.]+\s*)?\)$/i.exec(e);
230
+ if (a) return [
231
+ Number(a[1]),
232
+ Number(a[2]),
233
+ Number(a[3])
188
234
  ];
189
- let s = /^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%\s*(?:,\s*[\d.]+\s*)?\)$/i.exec(e);
190
- return s ? a(Number(s[1]), Number(s[2]), Number(s[3])) : null;
235
+ let o = /^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%\s*(?:,\s*[\d.]+\s*)?\)$/i.exec(e);
236
+ return o ? c(Number(o[1]), Number(o[2]), Number(o[3])) : null;
191
237
  }
192
- var s = .1;
193
- function c(e) {
238
+ var u = .1;
239
+ function d(e) {
194
240
  let t = e[0] / 255, n = e[1] / 255, r = e[2] / 255, i = Math.max(t, n, r), a = Math.min(t, n, r), o = (i + a) / 2;
195
241
  if (i === a) return [
196
242
  0,
@@ -204,25 +250,25 @@ function c(e) {
204
250
  o
205
251
  ];
206
252
  }
207
- function l(e, t) {
208
- let n = e[1] < s, r = t[1] < s;
253
+ function f(e, t) {
254
+ let n = e[1] < u, r = t[1] < u;
209
255
  if (n && r) {
210
256
  let n = Math.abs(e[2] - t[2]);
211
257
  return n * n;
212
258
  }
213
259
  if (n !== r) return 1e3;
214
- let i = Math.abs(e[0] - t[0]), a = Math.min(i, 360 - i) / 180, o = Math.abs(e[1] - t[1]), c = Math.abs(e[2] - t[2]);
215
- return 8 * a * a + 1 * o * o + 1 * c * c;
260
+ let i = Math.abs(e[0] - t[0]), a = Math.min(i, 360 - i) / 180, o = Math.abs(e[1] - t[1]), s = Math.abs(e[2] - t[2]);
261
+ return 8 * a * a + 1 * o * o + 1 * s * s;
216
262
  }
217
- function u(t, r) {
263
+ function p(t, r) {
218
264
  if (r === "bg" && (n(t) || i(t))) return t;
219
- let a = o(t);
265
+ let a = l(t);
220
266
  if (a === null) return t;
221
- let s = c(a);
267
+ let o = d(a);
222
268
  return e.reduce((e, t) => {
223
- let n = o(t[r]);
269
+ let n = l(t[r]);
224
270
  if (n === null) return e;
225
- let i = l(s, c(n));
271
+ let i = f(o, d(n));
226
272
  return i < e.distance ? {
227
273
  color: t[r],
228
274
  distance: i
@@ -232,15 +278,15 @@ function u(t, r) {
232
278
  distance: Infinity
233
279
  }).color;
234
280
  }
235
- function d(r, a) {
281
+ function m(r, a) {
236
282
  if (a === "bg" && (n(r) || i(r))) return null;
237
- let s = o(r);
238
- if (s === null) return null;
239
- let u = c(s);
283
+ let o = l(r);
284
+ if (o === null) return null;
285
+ let s = d(o);
240
286
  return [...e, ...t].reduce((e, t) => {
241
- let n = o(t[a]);
287
+ let n = l(t[a]);
242
288
  if (n === null) return e;
243
- let r = l(u, c(n));
289
+ let r = f(s, d(n));
244
290
  return e === null || r < e.distance ? {
245
291
  name: t.name,
246
292
  distance: r
@@ -249,7 +295,7 @@ function d(r, a) {
249
295
  }
250
296
  //#endregion
251
297
  //#region src/shared/inline-normalization-policy.ts
252
- var f = /* @__PURE__ */ new Set([
298
+ var h = /* @__PURE__ */ new Set([
253
299
  "A",
254
300
  "B",
255
301
  "STRONG",
@@ -266,7 +312,7 @@ var f = /* @__PURE__ */ new Set([
266
312
  "SMALL",
267
313
  "SPAN",
268
314
  "FONT"
269
- ]), p = new Set([...f].filter((e) => e !== "A")), m = /* @__PURE__ */ new Set([
315
+ ]), g = new Set([...h].filter((e) => e !== "A")), _ = /* @__PURE__ */ new Set([
270
316
  "IMG",
271
317
  "IFRAME",
272
318
  "VIDEO",
@@ -281,7 +327,7 @@ var f = /* @__PURE__ */ new Set([
281
327
  "S",
282
328
  "DEL",
283
329
  "INS"
284
- ]), h = /* @__PURE__ */ new Set([
330
+ ]), te = /* @__PURE__ */ new Set([
285
331
  "background-color",
286
332
  "background",
287
333
  "text-decoration",
@@ -290,24 +336,24 @@ var f = /* @__PURE__ */ new Set([
290
336
  "border-bottom",
291
337
  "box-shadow",
292
338
  "outline"
293
- ]), g = /* @__PURE__ */ new Set([
339
+ ]), v = /* @__PURE__ */ new Set([
294
340
  "",
295
341
  "none",
296
342
  "transparent",
297
343
  "initial",
298
344
  "unset"
299
- ]), _ = (e) => {
345
+ ]), y = (e) => {
300
346
  let t = e.attributes.filter((e) => e.name.toLowerCase() !== "style").map((e) => `${e.name.toLowerCase()}=${e.value}`).sort(), n = e.styleDeclarations.map((e) => `${e.property.toLowerCase()}:${e.value.trim()}`).sort();
301
347
  return `${e.tagName}|${t.join("|")}|${n.join(";")}`;
302
- }, v = (e) => e.attributes.some((e) => e.name.toLowerCase() === "id"), y = (e) => ee.has(e.tagName) ? !0 : e.styleDeclarations.some((e) => h.has(e.property.toLowerCase()) && !g.has(e.value.trim().toLowerCase())), b = (e) => {
303
- if (!p.has(e.tagName)) return !1;
348
+ }, b = (e) => e.attributes.some((e) => e.name.toLowerCase() === "id"), x = (e) => ee.has(e.tagName) ? !0 : e.styleDeclarations.some((e) => te.has(e.property.toLowerCase()) && !v.has(e.value.trim().toLowerCase())), S = (e) => {
349
+ if (!g.has(e.tagName)) return !1;
304
350
  let t = e.text();
305
- return t.trim().length > 0 || e.hasVoidContentDescendant() ? !1 : t.length === 0 || !y(e);
306
- }, te = (e, t) => !f.has(e.tagName) || v(e) || v(t) ? !1 : _(e) === _(t), ne = (e, t) => {
307
- if (!f.has(e.tagName) || v(e)) return !1;
308
- let n = _(e);
309
- return t.some((e) => _(e) === n);
310
- }, x = (e) => {
351
+ return t.trim().length > 0 || e.hasVoidContentDescendant() ? !1 : t.length === 0 || !x(e);
352
+ }, C = (e, t) => !h.has(e.tagName) || b(e) || b(t) ? !1 : y(e) === y(t), ne = (e, t) => {
353
+ if (!h.has(e.tagName) || b(e)) return !1;
354
+ let n = y(e);
355
+ return t.some((e) => y(e) === n);
356
+ }, w = (e) => {
311
357
  let t = e.style, n = Array.from({ length: t.length }, (e, n) => {
312
358
  let r = t.item(n);
313
359
  return {
@@ -323,70 +369,70 @@ var f = /* @__PURE__ */ new Set([
323
369
  })),
324
370
  styleDeclarations: n,
325
371
  text: () => e.textContent ?? "",
326
- hasVoidContentDescendant: () => Array.from(e.querySelectorAll("*")).some((e) => m.has(e.tagName.toUpperCase()))
372
+ hasVoidContentDescendant: () => Array.from(e.querySelectorAll("*")).some((e) => _.has(e.tagName.toUpperCase()))
327
373
  };
328
- }, S = (e, t) => {
374
+ }, T = (e, t) => {
329
375
  let n = e.parentElement;
330
- return n === null || n === t ? [] : [x(n), ...S(n, t)];
331
- }, C = (e) => {
376
+ return n === null || n === t ? [] : [w(n), ...T(n, t)];
377
+ }, E = (e) => {
332
378
  let t = e.parentNode;
333
379
  if (t !== null) {
334
380
  for (; e.firstChild !== null;) t.insertBefore(e.firstChild, e);
335
381
  t.removeChild(e);
336
382
  }
337
- }, w = (e) => {
338
- let t = (t) => e.contains(t), n = (e) => t(e) && f.has(e.tagName.toUpperCase()), r = Array.from(e.querySelectorAll("*")).filter((t) => {
383
+ }, D = (e) => {
384
+ let t = (t) => e.contains(t), n = (e) => t(e) && h.has(e.tagName.toUpperCase()), r = Array.from(e.querySelectorAll("*")).filter((t) => {
339
385
  if (!n(t)) return !1;
340
- let r = x(t);
341
- return b(r) || ne(r, S(t, e));
386
+ let r = w(t);
387
+ return S(r) || ne(r, T(t, e));
342
388
  });
343
- r.forEach(C);
389
+ r.forEach(E);
344
390
  let i = (e, t) => {
345
391
  let n = e.nextSibling;
346
- if (n === null || n.nodeType !== Node.ELEMENT_NODE || !te(t, x(n))) return !1;
392
+ if (n === null || n.nodeType !== Node.ELEMENT_NODE || !C(t, w(n))) return !1;
347
393
  let r = n;
348
394
  for (; r.firstChild !== null;) e.appendChild(r.firstChild);
349
395
  return r.remove(), i(e, t), !0;
350
- }, a = Array.from(e.querySelectorAll("*")).filter(n).map((e) => t(e) && i(e, x(e))).some(Boolean);
396
+ }, a = Array.from(e.querySelectorAll("*")).filter(n).map((e) => t(e) && i(e, w(e))).some(Boolean);
351
397
  return r.length > 0 || a;
352
- }, T = (e) => {
353
- let t = (n) => n === 0 || !w(e) ? !1 : (t(n - 1), !0), n = t(10);
398
+ }, O = (e) => {
399
+ let t = (n) => n === 0 || !D(e) ? !1 : (t(n - 1), !0), n = t(10);
354
400
  return n && e.normalize?.(), n;
355
401
  };
356
402
  //#endregion
357
403
  //#region src/cli/commands/convert-html/preprocessor.ts
358
- function E(e) {
359
- D(e), j(e), F(e), L(e), re(e), z(e);
404
+ function k(e) {
405
+ A(e), P(e), R(e), B(e), V(e), U(e);
360
406
  }
361
- function D(e) {
407
+ function A(e) {
362
408
  let t = e.ownerDocument;
363
409
  for (let n of Array.from(e.querySelectorAll("div[style]"))) {
364
410
  if (n.closest("table")) continue;
365
- let e = P(n);
366
- if (!e || M(e)) continue;
411
+ let e = L(n);
412
+ if (!e || F(e)) continue;
367
413
  let r = t.createElement("aside");
368
- r.style.backgroundColor = e, r.append(...Array.from(n.childNodes)), O(r), k(r), n.replaceWith(r);
414
+ r.style.backgroundColor = e, r.append(...Array.from(n.childNodes)), j(r), M(r), n.replaceWith(r);
369
415
  }
370
416
  }
371
- function O(e) {
417
+ function j(e) {
372
418
  for (;;) {
373
419
  let t = Array.from(e.querySelectorAll(":scope > div")).filter((e) => !e.getAttribute("style") && !e.getAttribute("class"));
374
420
  if (t.length === 0) break;
375
421
  for (let e of t) e.replaceWith(...Array.from(e.childNodes));
376
422
  }
377
423
  }
378
- function k(e) {
424
+ function M(e) {
379
425
  for (let t of Array.from(e.querySelectorAll("p"))) {
380
426
  let e = t.lastElementChild;
381
427
  e?.tagName === "BR" && e.remove();
382
428
  }
383
429
  }
384
- var A = 250;
385
- function j(e) {
430
+ var N = 250;
431
+ function P(e) {
386
432
  let t = e.querySelectorAll("[style*=\"background-color\"]");
387
- for (let e of Array.from(t)) M(e.style.backgroundColor) && (e.style.removeProperty("background-color"), e.getAttribute("style")?.trim() === "" && e.removeAttribute("style"), N(e) && e.replaceWith(...Array.from(e.childNodes)));
433
+ for (let e of Array.from(t)) F(e.style.backgroundColor) && (e.style.removeProperty("background-color"), e.getAttribute("style")?.trim() === "" && e.removeAttribute("style"), I(e) && e.replaceWith(...Array.from(e.childNodes)));
388
434
  }
389
- function M(e) {
435
+ function F(e) {
390
436
  if (!e) return !1;
391
437
  let t = e.replace(/\s/g, "").toLowerCase();
392
438
  if (t === "transparent") return !0;
@@ -394,12 +440,12 @@ function M(e) {
394
440
  if (!n) return !1;
395
441
  if ((n[4] === void 0 ? 1 : parseFloat(n[4])) === 0) return !0;
396
442
  let r = parseInt(n[1], 10), i = parseInt(n[2], 10), a = parseInt(n[3], 10);
397
- return r >= A && i >= A && a >= A;
443
+ return r >= N && i >= N && a >= N;
398
444
  }
399
- function N(e) {
445
+ function I(e) {
400
446
  return e.attributes.length > 0 ? !1 : (e.textContent ?? "").replace(/[\s\u00A0]/g, "").length === 0;
401
447
  }
402
- function P(e) {
448
+ function L(e) {
403
449
  if (e.style.backgroundColor) return e.style.backgroundColor;
404
450
  let t = (e.getAttribute("style") ?? "").match(/background:\s*([^;]+)/i);
405
451
  if (t) {
@@ -408,16 +454,16 @@ function P(e) {
408
454
  }
409
455
  return "";
410
456
  }
411
- function F(e) {
457
+ function R(e) {
412
458
  for (let t of Array.from(e.querySelectorAll("td, th"))) {
413
459
  let e = t.querySelectorAll("p");
414
460
  if (e.length !== 0) {
415
- for (let t of Array.from(e)) I(t);
416
- U(t);
461
+ for (let t of Array.from(e)) z(t);
462
+ K(t);
417
463
  }
418
464
  }
419
465
  }
420
- function I(e) {
466
+ function z(e) {
421
467
  if (e.innerHTML.trim() === "" || e.innerHTML.trim() === "&nbsp;") {
422
468
  e.remove();
423
469
  return;
@@ -425,45 +471,45 @@ function I(e) {
425
471
  let t = e.ownerDocument, n = t.createDocumentFragment();
426
472
  n.append(...Array.from(e.childNodes)), n.append(t.createElement("br")), e.replaceWith(n);
427
473
  }
428
- function L(e) {
474
+ function B(e) {
429
475
  for (let t of Array.from(e.querySelectorAll("p"))) t.closest("td") || t.closest("th") || (t.textContent ?? "").replace(/[\s\u00A0]/g, "").length === 0 && t.remove();
430
476
  }
431
- function re(e) {
477
+ function V(e) {
432
478
  let t = e.ownerDocument;
433
479
  for (let n of Array.from(e.querySelectorAll("del, strike"))) {
434
480
  let e = t.createElement("s");
435
481
  e.append(...Array.from(n.childNodes)), n.replaceWith(e);
436
482
  }
437
483
  }
438
- var R = /^[\u2022\u00B7][\s\u00A0]*|^-\s/;
439
- function z(e) {
440
- let t = e.ownerDocument, n = V(e);
484
+ var H = /^[\u2022\u00B7][\s\u00A0]*|^-\s/;
485
+ function U(e) {
486
+ let t = e.ownerDocument, n = W(e);
441
487
  for (let e of n) {
442
488
  let n = t.createElement("ul");
443
489
  e[0].before(n);
444
- for (let t of e) B(t, n);
490
+ for (let t of e) re(t, n);
445
491
  }
446
492
  }
447
- function B(e, t) {
448
- let n = e.ownerDocument.createElement("li"), r = W(e);
449
- r && (r.textContent = (r.textContent ?? "").replace(R, "")), n.append(...Array.from(e.childNodes)), t.appendChild(n), e.remove();
493
+ function re(e, t) {
494
+ let n = e.ownerDocument.createElement("li"), r = q(e);
495
+ r && (r.textContent = (r.textContent ?? "").replace(H, "")), n.append(...Array.from(e.childNodes)), t.appendChild(n), e.remove();
450
496
  }
451
- function V(e) {
497
+ function W(e) {
452
498
  let t = [], n = Array.from(e.childNodes);
453
499
  for (let e of n) {
454
500
  if (e.nodeType !== Node.ELEMENT_NODE) continue;
455
501
  let n = e;
456
- if (!(n.tagName === "P" && R.test(n.textContent ?? ""))) continue;
457
- let r = t[t.length - 1], i = H(n);
502
+ if (!(n.tagName === "P" && H.test(n.textContent ?? ""))) continue;
503
+ let r = t[t.length - 1], i = G(n);
458
504
  r && i !== null && r[r.length - 1] === i ? r.push(n) : t.push([n]);
459
505
  }
460
506
  return t;
461
507
  }
462
- function H(e) {
508
+ function G(e) {
463
509
  let t = e.previousSibling;
464
510
  return t && t.nodeType === Node.ELEMENT_NODE ? t : null;
465
511
  }
466
- function U(e) {
512
+ function K(e) {
467
513
  for (;;) {
468
514
  let t = e.lastChild;
469
515
  if (!t) break;
@@ -472,17 +518,17 @@ function U(e) {
472
518
  t.remove();
473
519
  }
474
520
  }
475
- function W(e) {
521
+ function q(e) {
476
522
  if (e.nodeType === Node.TEXT_NODE) return e;
477
523
  for (let t of Array.from(e.childNodes)) {
478
- let e = W(t);
524
+ let e = q(t);
479
525
  if (e) return e;
480
526
  }
481
527
  return null;
482
528
  }
483
529
  //#endregion
484
530
  //#region src/cli/commands/convert-html/sanitizer.ts
485
- var G = {
531
+ var J = {
486
532
  B: !0,
487
533
  STRONG: !0,
488
534
  I: !0,
@@ -517,32 +563,32 @@ var G = {
517
563
  SUMMARY: !0,
518
564
  IMG: /* @__PURE__ */ new Set(["src", "style"])
519
565
  };
520
- function K(e) {
521
- Y(e);
566
+ function Y(e) {
567
+ Z(e);
522
568
  }
523
- function q(e) {
569
+ function X(e) {
524
570
  let t = Array.from(e.childNodes);
525
571
  for (let n of t) e.before(n);
526
572
  return e.remove(), t.filter((e) => e.nodeType === e.ELEMENT_NODE);
527
573
  }
528
- function J(e, t) {
574
+ function ie(e, t) {
529
575
  for (let n of Array.from(e.attributes)) (t === !0 || !t.has(n.name)) && e.removeAttribute(n.name);
530
576
  }
531
- function Y(e) {
577
+ function Z(e) {
532
578
  let t = Array.from(e.childNodes);
533
579
  for (let e of t) {
534
580
  if (e.nodeType !== e.ELEMENT_NODE) continue;
535
- let n = e, r = G[n.tagName];
581
+ let n = e, r = J[n.tagName];
536
582
  if (r === void 0) {
537
- t.push(...q(n));
583
+ t.push(...X(n));
538
584
  continue;
539
585
  }
540
- J(n, r), Y(n);
586
+ ie(n, r), Z(n);
541
587
  }
542
588
  }
543
589
  //#endregion
544
590
  //#region src/cli/commands/convert-html/id-generator.ts
545
- function X() {
591
+ function ae() {
546
592
  let e = /* @__PURE__ */ new Map();
547
593
  return (t) => {
548
594
  let n = (e.get(t) ?? 0) + 1;
@@ -551,12 +597,12 @@ function X() {
551
597
  }
552
598
  //#endregion
553
599
  //#region src/cli/commands/convert-html/block-builder.ts
554
- function ie(e) {
555
- let t = X(), n = [];
556
- for (let r of Array.from(e.childNodes)) ae(r, n, t);
600
+ function oe(e) {
601
+ let t = ae(), n = [];
602
+ for (let r of Array.from(e.childNodes)) se(r, n, t);
557
603
  return n;
558
604
  }
559
- function ae(e, t, n) {
605
+ function se(e, t, n) {
560
606
  if (e.nodeType === Node.TEXT_NODE) {
561
607
  let r = e.textContent?.trim() ?? "";
562
608
  r && t.push({
@@ -619,7 +665,7 @@ function ae(e, t, n) {
619
665
  return;
620
666
  }
621
667
  if (i === "IMG") {
622
- let e = r.getAttribute("src") ?? "", i = le(r, "width");
668
+ let e = r.getAttribute("src") ?? "", i = fe(r, "width");
623
669
  t.push({
624
670
  id: n("image"),
625
671
  type: "image",
@@ -640,15 +686,15 @@ function ae(e, t, n) {
640
686
  return;
641
687
  }
642
688
  if (i === "UL" || i === "OL") {
643
- Z(r, i === "OL" ? "ordered" : "unordered", 0, t, n);
689
+ Q(r, i === "OL" ? "ordered" : "unordered", 0, t, n);
644
690
  return;
645
691
  }
646
692
  if (i === "TABLE") {
647
- oe(r, t, n);
693
+ ce(r, t, n);
648
694
  return;
649
695
  }
650
696
  if (i === "ASIDE") {
651
- se(r, t, n);
697
+ le(r, t, n);
652
698
  return;
653
699
  }
654
700
  t.push({
@@ -657,7 +703,7 @@ function ae(e, t, n) {
657
703
  data: { text: r.innerHTML }
658
704
  });
659
705
  }
660
- function Z(e, t, n, r, i) {
706
+ function Q(e, t, n, r, i) {
661
707
  let a = e.getAttribute("start"), o = a ? Number(a) : null, s = Array.from(e.children).filter((e) => e.tagName === "LI");
662
708
  for (let [e, a] of s.entries()) {
663
709
  let s = a.cloneNode(!0), c = [];
@@ -674,13 +720,13 @@ function Z(e, t, n, r, i) {
674
720
  start: e === 0 && o !== null ? o : null
675
721
  }
676
722
  });
677
- for (let e of c) Z(e, e.tagName === "OL" ? "ordered" : "unordered", n + 1, r, i);
723
+ for (let e of c) Q(e, e.tagName === "OL" ? "ordered" : "unordered", n + 1, r, i);
678
724
  }
679
725
  }
680
- function oe(e, t, n) {
726
+ function ce(e, t, n) {
681
727
  let r = n("table"), i = Array.from(e.querySelectorAll("tr")), a = [];
682
728
  for (let e of i) {
683
- let i = Array.from(e.querySelectorAll("td, th")).map((e) => Q(e, r, t, n));
729
+ let i = Array.from(e.querySelectorAll("td, th")).map((e) => ue(e, r, t, n));
684
730
  a.push(i);
685
731
  }
686
732
  let o = i[0] ? Array.from(i[0].querySelectorAll("td, th")) : [], s = o.some((e) => e.tagName === "TH"), c = o.map((e) => {
@@ -702,10 +748,10 @@ function oe(e, t, n) {
702
748
  }, u = t.findIndex((e) => e.parent === r);
703
749
  u >= 0 ? t.splice(u, 0, l) : t.push(l);
704
750
  }
705
- function se(e, t, r) {
706
- let a = r("callout"), o = $(e, "background-color"), s = o && !n(o) && !i(o) ? d(o, "bg") : null, c = [];
751
+ function le(e, t, r) {
752
+ let a = r("callout"), o = $(e, "background-color"), s = o && !n(o) && !i(o) ? m(o, "bg") : null, c = [];
707
753
  for (let n of Array.from(e.childNodes)) {
708
- let e = ce(n, a, t, r);
754
+ let e = de(n, a, t, r);
709
755
  e && c.push(e);
710
756
  }
711
757
  let l = t.findIndex((e) => e.parent === a), u = {
@@ -719,7 +765,7 @@ function se(e, t, r) {
719
765
  };
720
766
  l >= 0 ? t.splice(l, 0, u) : t.push(u);
721
767
  }
722
- function Q(e, t, r, a) {
768
+ function ue(e, t, r, a) {
723
769
  let o = e.innerHTML.trim();
724
770
  if (!o) return {
725
771
  blocks: [],
@@ -733,14 +779,14 @@ function Q(e, t, r, a) {
733
779
  parent: t,
734
780
  data: { text: o }
735
781
  });
736
- let c = $(e, "background-color"), l = $(e, "color"), u = c && !n(c) && !i(c) ? d(c, "bg") : null;
782
+ let c = $(e, "background-color"), l = $(e, "color"), u = c && !n(c) && !i(c) ? m(c, "bg") : null;
737
783
  return {
738
784
  blocks: [s],
739
785
  color: u,
740
- textColor: l ? d(l, "text") : null
786
+ textColor: l ? m(l, "text") : null
741
787
  };
742
788
  }
743
- function ce(e, t, n, r) {
789
+ function de(e, t, n, r) {
744
790
  if (e.nodeType === Node.ELEMENT_NODE) {
745
791
  let i = e, a = r("paragraph");
746
792
  return n.push({
@@ -763,7 +809,7 @@ function ce(e, t, n, r) {
763
809
  }
764
810
  return null;
765
811
  }
766
- function le(e, t) {
812
+ function fe(e, t) {
767
813
  let n = $(e, t);
768
814
  if (!n) return null;
769
815
  let r = parseInt(n, 10);
@@ -776,4 +822,4 @@ function $(e, t) {
776
822
  return r ? r[1].trim() : null;
777
823
  }
778
824
  //#endregion
779
- export { u as a, T as i, K as n, i as o, E as r, n as s, ie as t };
825
+ export { p as a, O as i, Y as n, s as o, k as r, oe as t };
package/dist/cli.mjs CHANGED
@@ -41,14 +41,14 @@ var t = "# Migrating from EditorJS to Blok\n\nThis guide covers the breaking cha
41
41
  case "convert-html": {
42
42
  let e = new (await (import("jsdom"))).JSDOM("");
43
43
  globalThis.DOMParser = e.window.DOMParser, globalThis.Node = e.window.Node;
44
- let { convertHtml: t } = await import("./convert-html-BkMfT06o.mjs");
44
+ let { convertHtml: t } = await import("./convert-html-BM5cG4wR.mjs");
45
45
  r(t((await import("node:fs")).readFileSync("/dev/stdin", "utf-8")), s);
46
46
  break;
47
47
  }
48
48
  case "convert-gdocs": {
49
49
  let e = new (await (import("jsdom"))).JSDOM("");
50
50
  globalThis.DOMParser = e.window.DOMParser, globalThis.Node = e.window.Node, globalThis.document = e.window.document;
51
- let { convertGdocs: t } = await import("./convert-gdocs-Bp3j6l4q.mjs");
51
+ let { convertGdocs: t } = await import("./convert-gdocs-Y3Psy87D.mjs");
52
52
  r(t((await import("node:fs")).readFileSync("/dev/stdin", "utf-8")), s);
53
53
  break;
54
54
  }
@@ -1,19 +1,19 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./block-builder-Cp5f8JCh.mjs";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "./block-builder-Dc6PL7RK.mjs";
2
2
  //#region src/components/modules/paste/constants.ts
3
- var s = "data-blok-columns-candidate";
3
+ var o = "data-blok-columns-candidate";
4
4
  //#endregion
5
5
  //#region src/components/modules/paste/google-docs-preprocessor.ts
6
- function c(e) {
6
+ function s(e) {
7
7
  let n = document.createElement("div");
8
8
  n.innerHTML = e;
9
- let r = h(n);
10
- return D(n, r), r && (k(n), A(n), m(n)), t(n), n.innerHTML;
9
+ let r = m(n);
10
+ return w(n, r), k(n), r && (E(n), p(n)), t(n), n.innerHTML;
11
11
  }
12
- function l(e, t) {
12
+ function c(e, t) {
13
13
  let n = e.parentElement;
14
- return n === null ? null : n === t ? e : l(n, t);
14
+ return n === null ? null : n === t ? e : c(n, t);
15
15
  }
16
- function u(e, t, n) {
16
+ function l(e, t, n) {
17
17
  let r = e.cloneNode(!1), i = [];
18
18
  for (let n of Array.from(e.childNodes)) {
19
19
  if (n === t) break;
@@ -21,11 +21,11 @@ function u(e, t, n) {
21
21
  }
22
22
  return i.forEach((e) => r.appendChild(e)), n !== null && r.appendChild(n), r.childNodes.length > 0 ? r : null;
23
23
  }
24
- function d(e, t, n) {
24
+ function u(e, t, n) {
25
25
  let r = e.cloneNode(!1), i = Array.from(e.childNodes), a = i.findIndex((e) => e === t), o = i.slice(a + 1);
26
26
  return n !== null && r.appendChild(n), o.forEach((e) => r.appendChild(e)), r.childNodes.length > 0 ? r : null;
27
27
  }
28
- function f(e, t) {
28
+ function d(e, t) {
29
29
  let n = (e, r, i) => {
30
30
  if (e === t) return {
31
31
  before: r,
@@ -36,45 +36,45 @@ function f(e, t) {
36
36
  before: r,
37
37
  after: i
38
38
  };
39
- let o = u(a, e, r), s = d(a, e, i);
39
+ let o = l(a, e, r), s = u(a, e, i);
40
40
  return n(a, o, s);
41
41
  };
42
42
  return n(e, null, null);
43
43
  }
44
- function p(e, t) {
44
+ function f(e, t) {
45
45
  let n = e.parentElement;
46
- return n === null || n === t ? !1 : n.tagName === "TABLE" || p(n, t);
46
+ return n === null || n === t ? !1 : n.tagName === "TABLE" || f(n, t);
47
47
  }
48
- function m(e) {
48
+ function p(e) {
49
49
  let t = Array.from(e.querySelectorAll("img"));
50
50
  for (let n of t) {
51
- if (p(n, e)) continue;
52
- let t = l(n, e);
51
+ if (f(n, e)) continue;
52
+ let t = c(n, e);
53
53
  if (!t) continue;
54
- let { before: r, after: i } = f(n, t), a = document.createDocumentFragment();
54
+ let { before: r, after: i } = d(n, t), a = document.createDocumentFragment();
55
55
  r && a.appendChild(r), a.appendChild(n), i && a.appendChild(i), t.replaceWith(a);
56
56
  }
57
57
  }
58
- function h(e) {
58
+ function m(e) {
59
59
  let t = e.querySelector("b[id^=\"docs-internal-guid-\"]");
60
60
  if (!t) return !1;
61
61
  let n = document.createDocumentFragment();
62
62
  for (; t.firstChild;) n.appendChild(t.firstChild);
63
63
  return t.replaceWith(n), !0;
64
64
  }
65
- function g(e, t, n) {
65
+ function h(e, t, n) {
66
66
  return e ? `background-color: ${n}` : t ? "background-color: transparent" : "";
67
67
  }
68
- function _(e) {
68
+ function g(e) {
69
69
  let t = e.replace(/\s/g, "");
70
70
  return t === "rgb(0,0,0)" || t === "#000000";
71
71
  }
72
- function v(e) {
72
+ function _(e) {
73
73
  if (e.closest("a") !== null) return !0;
74
74
  let t = e.querySelector("a");
75
75
  return t !== null && t.textContent?.trim() === e.textContent?.trim();
76
76
  }
77
- function y(e) {
77
+ function v(e) {
78
78
  let t = e.replace(/\s/g, "").toLowerCase(), n = /^rgba?\((\d+),(\d+),(\d+)(?:,[\d.]+)?\)$/.exec(t);
79
79
  if (n) {
80
80
  let e = parseInt(n[1], 10) / 255, t = parseInt(n[2], 10) / 255, r = parseInt(n[3], 10) / 255;
@@ -105,17 +105,16 @@ function y(e) {
105
105
  }
106
106
  return -1;
107
107
  }
108
- var b = a, x = r;
109
- function S(e) {
110
- let t = y(e);
108
+ function y(e) {
109
+ let t = v(e);
111
110
  return t >= 0 && t > .75;
112
111
  }
113
- function C(t, n, r, i, a) {
112
+ function b(t, n, r, i, a) {
114
113
  if (!n && !r) return t;
115
- let o = n && i !== void 0 ? e(i, "text") : "", s = r && a !== void 0 ? e(a, "bg") : "", c = [n ? `color: ${o}` : "", g(r, n, s)].filter(Boolean).join("; ");
114
+ let o = n && i !== void 0 ? e(i, "text") : "", s = r && a !== void 0 ? e(a, "bg") : "", c = [n ? `color: ${o}` : "", h(r, n, s)].filter(Boolean).join("; ");
116
115
  return c ? `<mark style="${c};">${t}</mark>` : t;
117
116
  }
118
- var w = /* @__PURE__ */ new Set([
117
+ var x = /* @__PURE__ */ new Set([
119
118
  "H1",
120
119
  "H2",
121
120
  "H3",
@@ -123,60 +122,65 @@ var w = /* @__PURE__ */ new Set([
123
122
  "H5",
124
123
  "H6"
125
124
  ]);
126
- function T(e) {
125
+ function S(e) {
127
126
  let t = e.parentElement;
128
- return t === null ? !1 : w.has(t.tagName) ? !0 : T(t);
127
+ return t === null ? !1 : x.has(t.tagName) ? !0 : S(t);
129
128
  }
130
- function E(e, t) {
131
- let n = e.getAttribute("style") ?? "", r = /font-weight\s*:\s*(700|bold)/i.test(n) && !T(e), i = /font-style\s*:\s*italic/i.test(n), a = /(?<![a-z-])color\s*:\s*([^;]+)/i.exec(n), o = /background-color\s*:\s*([^;]+)/i.exec(n), s = a?.[1]?.trim(), c = o?.[1]?.trim(), l = !(s !== void 0 && v(e)) && (t ? s !== void 0 && !_(s) : s !== void 0 && !_(s) && !S(s)), u = c !== void 0 && c !== "transparent" && !b(c) && !x(c);
132
- if (!r && !i && !l && !u) return null;
133
- let d = C(e.innerHTML, l, u, s, c), f = i ? `<i>${d}</i>` : d;
134
- return r ? `<b>${f}</b>` : f;
129
+ function C(e, t) {
130
+ let n = e.getAttribute("style") ?? "", i = /font-weight\s*:\s*(700|bold)/i.test(n) && !S(e), a = /font-style\s*:\s*italic/i.test(n), o = /(?<![a-z-])color\s*:\s*([^;]+)/i.exec(n), s = /background-color\s*:\s*([^;]+)/i.exec(n), c = o?.[1]?.trim(), l = s?.[1]?.trim(), u = !(c !== void 0 && _(e)) && (t ? c !== void 0 && !g(c) : c !== void 0 && !g(c) && !y(c)), d = l !== void 0 && !r(l);
131
+ if (!i && !a && !u && !d) return null;
132
+ let f = b(e.innerHTML, u, d, c, l), p = a ? `<i>${f}</i>` : f;
133
+ return i ? `<b>${p}</b>` : p;
135
134
  }
136
- function D(e, t) {
135
+ function w(e, t) {
137
136
  for (let n of Array.from(e.querySelectorAll("span[style]"))) {
138
- let e = E(n, t);
137
+ let e = C(n, t);
139
138
  e !== null && n.replaceWith(document.createRange().createContextualFragment(e));
140
139
  }
141
- t && O(e);
140
+ t && T(e);
142
141
  }
143
- function O(t) {
142
+ function T(t) {
144
143
  for (let n of Array.from(t.querySelectorAll("a[style]"))) {
145
144
  let t = n.getAttribute("style") ?? "", r = /background-color\s*:\s*([^;]+)/i.exec(t)?.[1]?.trim(), i = r !== void 0 && r !== "transparent" && r !== "inherit", a = n;
146
145
  a.style.removeProperty("color"), i && (a.innerHTML = `<mark style="background-color: ${e(r, "bg")};">${a.innerHTML}</mark>`, a.style.removeProperty("background-color"));
147
146
  }
148
147
  }
149
- function k(e) {
148
+ function E(e) {
150
149
  if (e.querySelector("google-sheets-html-origin") === null) for (let t of Array.from(e.querySelectorAll("table"))) {
151
150
  if (t.parentElement?.closest("table") !== null) continue;
152
151
  let e = Array.from(t.querySelectorAll("tr")).filter((e) => e.closest("table") === t);
153
152
  if (e.length === 0) continue;
154
153
  let n = e.map((e) => Array.from(e.children).filter((e) => e.tagName === "TD" || e.tagName === "TH").length), r = n[0];
155
- n.every((e) => e === r) && (r === 2 || r === 3) && t.setAttribute(s, "");
154
+ n.every((e) => e === r) && (r === 2 || r === 3) && t.setAttribute(o, "");
156
155
  }
157
156
  }
158
- function A(e) {
157
+ function D(e) {
158
+ return e.children.length === 0 && (e.textContent ?? "").replace(/\s/g, "") === "";
159
+ }
160
+ function O(e) {
161
+ if (D(e)) {
162
+ e.remove();
163
+ return;
164
+ }
165
+ let t = document.createRange().createContextualFragment(e.innerHTML + "<br>");
166
+ e.replaceWith(t);
167
+ }
168
+ function k(e) {
159
169
  for (let t of Array.from(e.querySelectorAll("td, th"))) {
160
170
  let e = t.querySelectorAll("p");
161
- if (e.length !== 0) {
162
- for (let t of Array.from(e)) {
163
- let e = document.createRange().createContextualFragment(t.innerHTML + "<br>");
164
- t.replaceWith(e);
165
- }
166
- t.innerHTML = t.innerHTML.replace(/(<br\s*\/?>|\s)+$/i, "");
167
- }
171
+ e.length !== 0 && (Array.from(e).forEach(O), t.innerHTML = t.innerHTML.replace(/(<br\s*\/?>|\s)+$/i, ""));
168
172
  }
169
173
  }
170
174
  //#endregion
171
175
  //#region src/cli/commands/convert-gdocs/index.ts
172
- function j(e) {
173
- let t = c(e), r = new DOMParser().parseFromString(t, "text/html").body;
176
+ function A(e) {
177
+ let t = s(e), r = new DOMParser().parseFromString(t, "text/html").body;
174
178
  i(r), n(r);
175
- let a = {
176
- version: "1.4.2",
177
- blocks: o(r)
179
+ let o = {
180
+ version: "1.4.4",
181
+ blocks: a(r)
178
182
  };
179
- return JSON.stringify(a);
183
+ return JSON.stringify(o);
180
184
  }
181
185
  //#endregion
182
- export { j as convertGdocs };
186
+ export { A as convertGdocs };
@@ -1,19 +1,19 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./block-builder-Cp5f8JCh.mjs";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "./block-builder-Dc6PL7RK.mjs";
2
2
  //#region src/components/modules/paste/constants.ts
3
- var s = "data-blok-columns-candidate";
3
+ var o = "data-blok-columns-candidate";
4
4
  //#endregion
5
5
  //#region src/components/modules/paste/google-docs-preprocessor.ts
6
- function c(e) {
6
+ function s(e) {
7
7
  let n = document.createElement("div");
8
8
  n.innerHTML = e;
9
- let r = h(n);
10
- return D(n, r), r && (k(n), A(n), m(n)), t(n), n.innerHTML;
9
+ let r = m(n);
10
+ return w(n, r), k(n), r && (E(n), p(n)), t(n), n.innerHTML;
11
11
  }
12
- function l(e, t) {
12
+ function c(e, t) {
13
13
  let n = e.parentElement;
14
- return n === null ? null : n === t ? e : l(n, t);
14
+ return n === null ? null : n === t ? e : c(n, t);
15
15
  }
16
- function u(e, t, n) {
16
+ function l(e, t, n) {
17
17
  let r = e.cloneNode(!1), i = [];
18
18
  for (let n of Array.from(e.childNodes)) {
19
19
  if (n === t) break;
@@ -21,11 +21,11 @@ function u(e, t, n) {
21
21
  }
22
22
  return i.forEach((e) => r.appendChild(e)), n !== null && r.appendChild(n), r.childNodes.length > 0 ? r : null;
23
23
  }
24
- function d(e, t, n) {
24
+ function u(e, t, n) {
25
25
  let r = e.cloneNode(!1), i = Array.from(e.childNodes), a = i.findIndex((e) => e === t), o = i.slice(a + 1);
26
26
  return n !== null && r.appendChild(n), o.forEach((e) => r.appendChild(e)), r.childNodes.length > 0 ? r : null;
27
27
  }
28
- function f(e, t) {
28
+ function d(e, t) {
29
29
  let n = (e, r, i) => {
30
30
  if (e === t) return {
31
31
  before: r,
@@ -36,45 +36,45 @@ function f(e, t) {
36
36
  before: r,
37
37
  after: i
38
38
  };
39
- let o = u(a, e, r), s = d(a, e, i);
39
+ let o = l(a, e, r), s = u(a, e, i);
40
40
  return n(a, o, s);
41
41
  };
42
42
  return n(e, null, null);
43
43
  }
44
- function p(e, t) {
44
+ function f(e, t) {
45
45
  let n = e.parentElement;
46
- return n === null || n === t ? !1 : n.tagName === "TABLE" || p(n, t);
46
+ return n === null || n === t ? !1 : n.tagName === "TABLE" || f(n, t);
47
47
  }
48
- function m(e) {
48
+ function p(e) {
49
49
  let t = Array.from(e.querySelectorAll("img"));
50
50
  for (let n of t) {
51
- if (p(n, e)) continue;
52
- let t = l(n, e);
51
+ if (f(n, e)) continue;
52
+ let t = c(n, e);
53
53
  if (!t) continue;
54
- let { before: r, after: i } = f(n, t), a = document.createDocumentFragment();
54
+ let { before: r, after: i } = d(n, t), a = document.createDocumentFragment();
55
55
  r && a.appendChild(r), a.appendChild(n), i && a.appendChild(i), t.replaceWith(a);
56
56
  }
57
57
  }
58
- function h(e) {
58
+ function m(e) {
59
59
  let t = e.querySelector("b[id^=\"docs-internal-guid-\"]");
60
60
  if (!t) return !1;
61
61
  let n = document.createDocumentFragment();
62
62
  for (; t.firstChild;) n.appendChild(t.firstChild);
63
63
  return t.replaceWith(n), !0;
64
64
  }
65
- function g(e, t, n) {
65
+ function h(e, t, n) {
66
66
  return e ? `background-color: ${n}` : t ? "background-color: transparent" : "";
67
67
  }
68
- function _(e) {
68
+ function g(e) {
69
69
  let t = e.replace(/\s/g, "");
70
70
  return t === "rgb(0,0,0)" || t === "#000000";
71
71
  }
72
- function v(e) {
72
+ function _(e) {
73
73
  if (e.closest("a") !== null) return !0;
74
74
  let t = e.querySelector("a");
75
75
  return t !== null && t.textContent?.trim() === e.textContent?.trim();
76
76
  }
77
- function y(e) {
77
+ function v(e) {
78
78
  let t = e.replace(/\s/g, "").toLowerCase(), n = /^rgba?\((\d+),(\d+),(\d+)(?:,[\d.]+)?\)$/.exec(t);
79
79
  if (n) {
80
80
  let e = parseInt(n[1], 10) / 255, t = parseInt(n[2], 10) / 255, r = parseInt(n[3], 10) / 255;
@@ -105,17 +105,16 @@ function y(e) {
105
105
  }
106
106
  return -1;
107
107
  }
108
- var b = a, x = r;
109
- function S(e) {
110
- let t = y(e);
108
+ function y(e) {
109
+ let t = v(e);
111
110
  return t >= 0 && t > .75;
112
111
  }
113
- function C(t, n, r, i, a) {
112
+ function b(t, n, r, i, a) {
114
113
  if (!n && !r) return t;
115
- let o = n && i !== void 0 ? e(i, "text") : "", s = r && a !== void 0 ? e(a, "bg") : "", c = [n ? `color: ${o}` : "", g(r, n, s)].filter(Boolean).join("; ");
114
+ let o = n && i !== void 0 ? e(i, "text") : "", s = r && a !== void 0 ? e(a, "bg") : "", c = [n ? `color: ${o}` : "", h(r, n, s)].filter(Boolean).join("; ");
116
115
  return c ? `<mark style="${c};">${t}</mark>` : t;
117
116
  }
118
- var w = /* @__PURE__ */ new Set([
117
+ var x = /* @__PURE__ */ new Set([
119
118
  "H1",
120
119
  "H2",
121
120
  "H3",
@@ -123,60 +122,65 @@ var w = /* @__PURE__ */ new Set([
123
122
  "H5",
124
123
  "H6"
125
124
  ]);
126
- function T(e) {
125
+ function S(e) {
127
126
  let t = e.parentElement;
128
- return t === null ? !1 : w.has(t.tagName) ? !0 : T(t);
127
+ return t === null ? !1 : x.has(t.tagName) ? !0 : S(t);
129
128
  }
130
- function E(e, t) {
131
- let n = e.getAttribute("style") ?? "", r = /font-weight\s*:\s*(700|bold)/i.test(n) && !T(e), i = /font-style\s*:\s*italic/i.test(n), a = /(?<![a-z-])color\s*:\s*([^;]+)/i.exec(n), o = /background-color\s*:\s*([^;]+)/i.exec(n), s = a?.[1]?.trim(), c = o?.[1]?.trim(), l = !(s !== void 0 && v(e)) && (t ? s !== void 0 && !_(s) : s !== void 0 && !_(s) && !S(s)), u = c !== void 0 && c !== "transparent" && !b(c) && !x(c);
132
- if (!r && !i && !l && !u) return null;
133
- let d = C(e.innerHTML, l, u, s, c), f = i ? `<i>${d}</i>` : d;
134
- return r ? `<b>${f}</b>` : f;
129
+ function C(e, t) {
130
+ let n = e.getAttribute("style") ?? "", i = /font-weight\s*:\s*(700|bold)/i.test(n) && !S(e), a = /font-style\s*:\s*italic/i.test(n), o = /(?<![a-z-])color\s*:\s*([^;]+)/i.exec(n), s = /background-color\s*:\s*([^;]+)/i.exec(n), c = o?.[1]?.trim(), l = s?.[1]?.trim(), u = !(c !== void 0 && _(e)) && (t ? c !== void 0 && !g(c) : c !== void 0 && !g(c) && !y(c)), d = l !== void 0 && !r(l);
131
+ if (!i && !a && !u && !d) return null;
132
+ let f = b(e.innerHTML, u, d, c, l), p = a ? `<i>${f}</i>` : f;
133
+ return i ? `<b>${p}</b>` : p;
135
134
  }
136
- function D(e, t) {
135
+ function w(e, t) {
137
136
  for (let n of Array.from(e.querySelectorAll("span[style]"))) {
138
- let e = E(n, t);
137
+ let e = C(n, t);
139
138
  e !== null && n.replaceWith(document.createRange().createContextualFragment(e));
140
139
  }
141
- t && O(e);
140
+ t && T(e);
142
141
  }
143
- function O(t) {
142
+ function T(t) {
144
143
  for (let n of Array.from(t.querySelectorAll("a[style]"))) {
145
144
  let t = n.getAttribute("style") ?? "", r = /background-color\s*:\s*([^;]+)/i.exec(t)?.[1]?.trim(), i = r !== void 0 && r !== "transparent" && r !== "inherit", a = n;
146
145
  a.style.removeProperty("color"), i && (a.innerHTML = `<mark style="background-color: ${e(r, "bg")};">${a.innerHTML}</mark>`, a.style.removeProperty("background-color"));
147
146
  }
148
147
  }
149
- function k(e) {
148
+ function E(e) {
150
149
  if (e.querySelector("google-sheets-html-origin") === null) for (let t of Array.from(e.querySelectorAll("table"))) {
151
150
  if (t.parentElement?.closest("table") !== null) continue;
152
151
  let e = Array.from(t.querySelectorAll("tr")).filter((e) => e.closest("table") === t);
153
152
  if (e.length === 0) continue;
154
153
  let n = e.map((e) => Array.from(e.children).filter((e) => e.tagName === "TD" || e.tagName === "TH").length), r = n[0];
155
- n.every((e) => e === r) && (r === 2 || r === 3) && t.setAttribute(s, "");
154
+ n.every((e) => e === r) && (r === 2 || r === 3) && t.setAttribute(o, "");
156
155
  }
157
156
  }
158
- function A(e) {
157
+ function D(e) {
158
+ return e.children.length === 0 && (e.textContent ?? "").replace(/\s/g, "") === "";
159
+ }
160
+ function O(e) {
161
+ if (D(e)) {
162
+ e.remove();
163
+ return;
164
+ }
165
+ let t = document.createRange().createContextualFragment(e.innerHTML + "<br>");
166
+ e.replaceWith(t);
167
+ }
168
+ function k(e) {
159
169
  for (let t of Array.from(e.querySelectorAll("td, th"))) {
160
170
  let e = t.querySelectorAll("p");
161
- if (e.length !== 0) {
162
- for (let t of Array.from(e)) {
163
- let e = document.createRange().createContextualFragment(t.innerHTML + "<br>");
164
- t.replaceWith(e);
165
- }
166
- t.innerHTML = t.innerHTML.replace(/(<br\s*\/?>|\s)+$/i, "");
167
- }
171
+ e.length !== 0 && (Array.from(e).forEach(O), t.innerHTML = t.innerHTML.replace(/(<br\s*\/?>|\s)+$/i, ""));
168
172
  }
169
173
  }
170
174
  //#endregion
171
175
  //#region src/cli/commands/convert-gdocs/index.ts
172
- function j(e) {
173
- let t = c(e), r = new DOMParser().parseFromString(t, "text/html").body;
176
+ function A(e) {
177
+ let t = s(e), r = new DOMParser().parseFromString(t, "text/html").body;
174
178
  i(r), n(r);
175
- let a = {
176
- version: "1.4.1",
177
- blocks: o(r)
179
+ let o = {
180
+ version: "1.4.3",
181
+ blocks: a(r)
178
182
  };
179
- return JSON.stringify(a);
183
+ return JSON.stringify(o);
180
184
  }
181
185
  //#endregion
182
- export { j as convertGdocs };
186
+ export { A as convertGdocs };
@@ -1,10 +1,10 @@
1
- import { i as e, n as t, r as n, t as r } from "./block-builder-Cp5f8JCh.mjs";
1
+ import { i as e, n as t, r as n, t as r } from "./block-builder-Dc6PL7RK.mjs";
2
2
  //#region src/cli/commands/convert-html/index.ts
3
3
  function i(i) {
4
4
  let a = new DOMParser().parseFromString(i, "text/html").body;
5
5
  n(a), t(a), e(a);
6
6
  let o = {
7
- version: "1.4.1",
7
+ version: "1.4.3",
8
8
  blocks: r(a)
9
9
  };
10
10
  return JSON.stringify(o);
@@ -1,10 +1,10 @@
1
- import { i as e, n as t, r as n, t as r } from "./block-builder-Cp5f8JCh.mjs";
1
+ import { i as e, n as t, r as n, t as r } from "./block-builder-Dc6PL7RK.mjs";
2
2
  //#region src/cli/commands/convert-html/index.ts
3
3
  function i(i) {
4
4
  let a = new DOMParser().parseFromString(i, "text/html").body;
5
5
  n(a), t(a), e(a);
6
6
  let o = {
7
- version: "1.4.2",
7
+ version: "1.4.4",
8
8
  blocks: r(a)
9
9
  };
10
10
  return JSON.stringify(o);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloklabs/cli",
3
- "version": "1.4.2",
3
+ "version": "1.4.4",
4
4
  "description": "CLI tools for Blok — convert HTML to Blok JSON, generate migration guides",
5
5
  "bin": {
6
6
  "blok-cli": "bin/blok-cli.mjs"