@bloklabs/cli 1.4.0 → 1.4.1

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.
@@ -248,39 +248,145 @@ function d(r, a) {
248
248
  }, null)?.name ?? null;
249
249
  }
250
250
  //#endregion
251
+ //#region src/shared/inline-normalization-policy.ts
252
+ var f = /* @__PURE__ */ new Set([
253
+ "A",
254
+ "B",
255
+ "STRONG",
256
+ "I",
257
+ "EM",
258
+ "U",
259
+ "S",
260
+ "DEL",
261
+ "INS",
262
+ "MARK",
263
+ "CODE",
264
+ "SUB",
265
+ "SUP",
266
+ "SMALL",
267
+ "SPAN",
268
+ "FONT"
269
+ ]), p = new Set([...f].filter((e) => e !== "A")), m = /* @__PURE__ */ new Set([
270
+ "IMG",
271
+ "IFRAME",
272
+ "VIDEO",
273
+ "AUDIO",
274
+ "INPUT",
275
+ "SVG",
276
+ "CANVAS",
277
+ "OBJECT",
278
+ "EMBED"
279
+ ]), ee = /* @__PURE__ */ new Set([
280
+ "U",
281
+ "S",
282
+ "DEL",
283
+ "INS"
284
+ ]), h = /* @__PURE__ */ new Set([
285
+ "background-color",
286
+ "background",
287
+ "text-decoration",
288
+ "text-decoration-line",
289
+ "border",
290
+ "border-bottom",
291
+ "box-shadow",
292
+ "outline"
293
+ ]), g = /* @__PURE__ */ new Set([
294
+ "",
295
+ "none",
296
+ "transparent",
297
+ "initial",
298
+ "unset"
299
+ ]), _ = (e) => {
300
+ 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
+ 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;
304
+ 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) => {
311
+ let t = e.style, n = Array.from({ length: t.length }, (e, n) => {
312
+ let r = t.item(n);
313
+ return {
314
+ property: r,
315
+ value: t.getPropertyValue(r)
316
+ };
317
+ });
318
+ return {
319
+ tagName: e.tagName.toUpperCase(),
320
+ attributes: Array.from(e.attributes).map((e) => ({
321
+ name: e.name,
322
+ value: e.value
323
+ })),
324
+ styleDeclarations: n,
325
+ text: () => e.textContent ?? "",
326
+ hasVoidContentDescendant: () => Array.from(e.querySelectorAll("*")).some((e) => m.has(e.tagName.toUpperCase()))
327
+ };
328
+ }, S = (e, t) => {
329
+ let n = e.parentElement;
330
+ return n === null || n === t ? [] : [x(n), ...S(n, t)];
331
+ }, C = (e) => {
332
+ let t = e.parentNode;
333
+ if (t !== null) {
334
+ for (; e.firstChild !== null;) t.insertBefore(e.firstChild, e);
335
+ t.removeChild(e);
336
+ }
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) => {
339
+ if (!n(t)) return !1;
340
+ let r = x(t);
341
+ return b(r) || ne(r, S(t, e));
342
+ });
343
+ r.forEach(C);
344
+ let i = (e, t) => {
345
+ let n = e.nextSibling;
346
+ if (n === null || n.nodeType !== Node.ELEMENT_NODE || !te(t, x(n))) return !1;
347
+ let r = n;
348
+ for (; r.firstChild !== null;) e.appendChild(r.firstChild);
349
+ 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);
351
+ return r.length > 0 || a;
352
+ }, T = (e) => {
353
+ let t = (n) => n === 0 || !w(e) ? !1 : (t(n - 1), !0), n = t(10);
354
+ return n && e.normalize?.(), n;
355
+ };
356
+ //#endregion
251
357
  //#region src/cli/commands/convert-html/preprocessor.ts
252
- function f(e) {
253
- p(e), _(e), x(e), C(e), w(e), E(e);
358
+ function E(e) {
359
+ D(e), j(e), F(e), L(e), re(e), z(e);
254
360
  }
255
- function p(e) {
361
+ function D(e) {
256
362
  let t = e.ownerDocument;
257
363
  for (let n of Array.from(e.querySelectorAll("div[style]"))) {
258
364
  if (n.closest("table")) continue;
259
- let e = b(n);
260
- if (!e || v(e)) continue;
365
+ let e = P(n);
366
+ if (!e || M(e)) continue;
261
367
  let r = t.createElement("aside");
262
- r.style.backgroundColor = e, r.append(...Array.from(n.childNodes)), m(r), h(r), n.replaceWith(r);
368
+ r.style.backgroundColor = e, r.append(...Array.from(n.childNodes)), O(r), k(r), n.replaceWith(r);
263
369
  }
264
370
  }
265
- function m(e) {
371
+ function O(e) {
266
372
  for (;;) {
267
373
  let t = Array.from(e.querySelectorAll(":scope > div")).filter((e) => !e.getAttribute("style") && !e.getAttribute("class"));
268
374
  if (t.length === 0) break;
269
375
  for (let e of t) e.replaceWith(...Array.from(e.childNodes));
270
376
  }
271
377
  }
272
- function h(e) {
378
+ function k(e) {
273
379
  for (let t of Array.from(e.querySelectorAll("p"))) {
274
380
  let e = t.lastElementChild;
275
381
  e?.tagName === "BR" && e.remove();
276
382
  }
277
383
  }
278
- var g = 250;
279
- function _(e) {
384
+ var A = 250;
385
+ function j(e) {
280
386
  let t = e.querySelectorAll("[style*=\"background-color\"]");
281
- for (let e of Array.from(t)) v(e.style.backgroundColor) && (e.style.removeProperty("background-color"), e.getAttribute("style")?.trim() === "" && e.removeAttribute("style"), y(e) && e.replaceWith(...Array.from(e.childNodes)));
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)));
282
388
  }
283
- function v(e) {
389
+ function M(e) {
284
390
  if (!e) return !1;
285
391
  let t = e.replace(/\s/g, "").toLowerCase();
286
392
  if (t === "transparent") return !0;
@@ -288,12 +394,12 @@ function v(e) {
288
394
  if (!n) return !1;
289
395
  if ((n[4] === void 0 ? 1 : parseFloat(n[4])) === 0) return !0;
290
396
  let r = parseInt(n[1], 10), i = parseInt(n[2], 10), a = parseInt(n[3], 10);
291
- return r >= g && i >= g && a >= g;
397
+ return r >= A && i >= A && a >= A;
292
398
  }
293
- function y(e) {
399
+ function N(e) {
294
400
  return e.attributes.length > 0 ? !1 : (e.textContent ?? "").replace(/[\s\u00A0]/g, "").length === 0;
295
401
  }
296
- function b(e) {
402
+ function P(e) {
297
403
  if (e.style.backgroundColor) return e.style.backgroundColor;
298
404
  let t = (e.getAttribute("style") ?? "").match(/background:\s*([^;]+)/i);
299
405
  if (t) {
@@ -302,16 +408,16 @@ function b(e) {
302
408
  }
303
409
  return "";
304
410
  }
305
- function x(e) {
411
+ function F(e) {
306
412
  for (let t of Array.from(e.querySelectorAll("td, th"))) {
307
413
  let e = t.querySelectorAll("p");
308
414
  if (e.length !== 0) {
309
- for (let t of Array.from(e)) S(t);
310
- A(t);
415
+ for (let t of Array.from(e)) I(t);
416
+ U(t);
311
417
  }
312
418
  }
313
419
  }
314
- function S(e) {
420
+ function I(e) {
315
421
  if (e.innerHTML.trim() === "" || e.innerHTML.trim() === " ") {
316
422
  e.remove();
317
423
  return;
@@ -319,45 +425,45 @@ function S(e) {
319
425
  let t = e.ownerDocument, n = t.createDocumentFragment();
320
426
  n.append(...Array.from(e.childNodes)), n.append(t.createElement("br")), e.replaceWith(n);
321
427
  }
322
- function C(e) {
428
+ function L(e) {
323
429
  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();
324
430
  }
325
- function w(e) {
431
+ function re(e) {
326
432
  let t = e.ownerDocument;
327
433
  for (let n of Array.from(e.querySelectorAll("del, strike"))) {
328
434
  let e = t.createElement("s");
329
435
  e.append(...Array.from(n.childNodes)), n.replaceWith(e);
330
436
  }
331
437
  }
332
- var T = /^[\u2022\u00B7][\s\u00A0]*|^-\s/;
333
- function E(e) {
334
- let t = e.ownerDocument, n = O(e);
438
+ var R = /^[\u2022\u00B7][\s\u00A0]*|^-\s/;
439
+ function z(e) {
440
+ let t = e.ownerDocument, n = V(e);
335
441
  for (let e of n) {
336
442
  let n = t.createElement("ul");
337
443
  e[0].before(n);
338
- for (let t of e) D(t, n);
444
+ for (let t of e) B(t, n);
339
445
  }
340
446
  }
341
- function D(e, t) {
342
- let n = e.ownerDocument.createElement("li"), r = j(e);
343
- r && (r.textContent = (r.textContent ?? "").replace(T, "")), n.append(...Array.from(e.childNodes)), t.appendChild(n), e.remove();
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();
344
450
  }
345
- function O(e) {
451
+ function V(e) {
346
452
  let t = [], n = Array.from(e.childNodes);
347
453
  for (let e of n) {
348
454
  if (e.nodeType !== Node.ELEMENT_NODE) continue;
349
455
  let n = e;
350
- if (!(n.tagName === "P" && T.test(n.textContent ?? ""))) continue;
351
- let r = t[t.length - 1], i = k(n);
456
+ if (!(n.tagName === "P" && R.test(n.textContent ?? ""))) continue;
457
+ let r = t[t.length - 1], i = H(n);
352
458
  r && i !== null && r[r.length - 1] === i ? r.push(n) : t.push([n]);
353
459
  }
354
460
  return t;
355
461
  }
356
- function k(e) {
462
+ function H(e) {
357
463
  let t = e.previousSibling;
358
464
  return t && t.nodeType === Node.ELEMENT_NODE ? t : null;
359
465
  }
360
- function A(e) {
466
+ function U(e) {
361
467
  for (;;) {
362
468
  let t = e.lastChild;
363
469
  if (!t) break;
@@ -366,17 +472,17 @@ function A(e) {
366
472
  t.remove();
367
473
  }
368
474
  }
369
- function j(e) {
475
+ function W(e) {
370
476
  if (e.nodeType === Node.TEXT_NODE) return e;
371
477
  for (let t of Array.from(e.childNodes)) {
372
- let e = j(t);
478
+ let e = W(t);
373
479
  if (e) return e;
374
480
  }
375
481
  return null;
376
482
  }
377
483
  //#endregion
378
484
  //#region src/cli/commands/convert-html/sanitizer.ts
379
- var M = {
485
+ var G = {
380
486
  B: !0,
381
487
  STRONG: !0,
382
488
  I: !0,
@@ -411,32 +517,32 @@ var M = {
411
517
  SUMMARY: !0,
412
518
  IMG: /* @__PURE__ */ new Set(["src", "style"])
413
519
  };
414
- function N(e) {
415
- I(e);
520
+ function K(e) {
521
+ Y(e);
416
522
  }
417
- function P(e) {
523
+ function q(e) {
418
524
  let t = Array.from(e.childNodes);
419
525
  for (let n of t) e.before(n);
420
526
  return e.remove(), t.filter((e) => e.nodeType === e.ELEMENT_NODE);
421
527
  }
422
- function F(e, t) {
528
+ function J(e, t) {
423
529
  for (let n of Array.from(e.attributes)) (t === !0 || !t.has(n.name)) && e.removeAttribute(n.name);
424
530
  }
425
- function I(e) {
531
+ function Y(e) {
426
532
  let t = Array.from(e.childNodes);
427
533
  for (let e of t) {
428
534
  if (e.nodeType !== e.ELEMENT_NODE) continue;
429
- let n = e, r = M[n.tagName];
535
+ let n = e, r = G[n.tagName];
430
536
  if (r === void 0) {
431
- t.push(...P(n));
537
+ t.push(...q(n));
432
538
  continue;
433
539
  }
434
- F(n, r), I(n);
540
+ J(n, r), Y(n);
435
541
  }
436
542
  }
437
543
  //#endregion
438
544
  //#region src/cli/commands/convert-html/id-generator.ts
439
- function L() {
545
+ function X() {
440
546
  let e = /* @__PURE__ */ new Map();
441
547
  return (t) => {
442
548
  let n = (e.get(t) ?? 0) + 1;
@@ -445,12 +551,12 @@ function L() {
445
551
  }
446
552
  //#endregion
447
553
  //#region src/cli/commands/convert-html/block-builder.ts
448
- function R(e) {
449
- let t = L(), n = [];
450
- for (let r of Array.from(e.childNodes)) z(r, n, t);
554
+ function ie(e) {
555
+ let t = X(), n = [];
556
+ for (let r of Array.from(e.childNodes)) ae(r, n, t);
451
557
  return n;
452
558
  }
453
- function z(e, t, n) {
559
+ function ae(e, t, n) {
454
560
  if (e.nodeType === Node.TEXT_NODE) {
455
561
  let r = e.textContent?.trim() ?? "";
456
562
  r && t.push({
@@ -513,7 +619,7 @@ function z(e, t, n) {
513
619
  return;
514
620
  }
515
621
  if (i === "IMG") {
516
- let e = r.getAttribute("src") ?? "", i = G(r, "width");
622
+ let e = r.getAttribute("src") ?? "", i = le(r, "width");
517
623
  t.push({
518
624
  id: n("image"),
519
625
  type: "image",
@@ -534,15 +640,15 @@ function z(e, t, n) {
534
640
  return;
535
641
  }
536
642
  if (i === "UL" || i === "OL") {
537
- B(r, i === "OL" ? "ordered" : "unordered", 0, t, n);
643
+ Z(r, i === "OL" ? "ordered" : "unordered", 0, t, n);
538
644
  return;
539
645
  }
540
646
  if (i === "TABLE") {
541
- V(r, t, n);
647
+ oe(r, t, n);
542
648
  return;
543
649
  }
544
650
  if (i === "ASIDE") {
545
- H(r, t, n);
651
+ se(r, t, n);
546
652
  return;
547
653
  }
548
654
  t.push({
@@ -551,7 +657,7 @@ function z(e, t, n) {
551
657
  data: { text: r.innerHTML }
552
658
  });
553
659
  }
554
- function B(e, t, n, r, i) {
660
+ function Z(e, t, n, r, i) {
555
661
  let a = e.getAttribute("start"), o = a ? Number(a) : null, s = Array.from(e.children).filter((e) => e.tagName === "LI");
556
662
  for (let [e, a] of s.entries()) {
557
663
  let s = a.cloneNode(!0), c = [];
@@ -568,17 +674,17 @@ function B(e, t, n, r, i) {
568
674
  start: e === 0 && o !== null ? o : null
569
675
  }
570
676
  });
571
- for (let e of c) B(e, e.tagName === "OL" ? "ordered" : "unordered", n + 1, r, i);
677
+ for (let e of c) Z(e, e.tagName === "OL" ? "ordered" : "unordered", n + 1, r, i);
572
678
  }
573
679
  }
574
- function V(e, t, n) {
680
+ function oe(e, t, n) {
575
681
  let r = n("table"), i = Array.from(e.querySelectorAll("tr")), a = [];
576
682
  for (let e of i) {
577
- let i = Array.from(e.querySelectorAll("td, th")).map((e) => U(e, r, t, n));
683
+ let i = Array.from(e.querySelectorAll("td, th")).map((e) => Q(e, r, t, n));
578
684
  a.push(i);
579
685
  }
580
686
  let o = i[0] ? Array.from(i[0].querySelectorAll("td, th")) : [], s = o.some((e) => e.tagName === "TH"), c = o.map((e) => {
581
- let t = K(e, "width");
687
+ let t = $(e, "width");
582
688
  if (t) {
583
689
  let e = parseInt(t, 10);
584
690
  return isNaN(e) ? null : e;
@@ -596,10 +702,10 @@ function V(e, t, n) {
596
702
  }, u = t.findIndex((e) => e.parent === r);
597
703
  u >= 0 ? t.splice(u, 0, l) : t.push(l);
598
704
  }
599
- function H(e, t, r) {
600
- let a = r("callout"), o = K(e, "background-color"), s = o && !n(o) && !i(o) ? d(o, "bg") : null, c = [];
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 = [];
601
707
  for (let n of Array.from(e.childNodes)) {
602
- let e = W(n, a, t, r);
708
+ let e = ce(n, a, t, r);
603
709
  e && c.push(e);
604
710
  }
605
711
  let l = t.findIndex((e) => e.parent === a), u = {
@@ -613,7 +719,7 @@ function H(e, t, r) {
613
719
  };
614
720
  l >= 0 ? t.splice(l, 0, u) : t.push(u);
615
721
  }
616
- function U(e, t, r, a) {
722
+ function Q(e, t, r, a) {
617
723
  let o = e.innerHTML.trim();
618
724
  if (!o) return {
619
725
  blocks: [],
@@ -627,14 +733,14 @@ function U(e, t, r, a) {
627
733
  parent: t,
628
734
  data: { text: o }
629
735
  });
630
- let c = K(e, "background-color"), l = K(e, "color"), u = c && !n(c) && !i(c) ? d(c, "bg") : null;
736
+ let c = $(e, "background-color"), l = $(e, "color"), u = c && !n(c) && !i(c) ? d(c, "bg") : null;
631
737
  return {
632
738
  blocks: [s],
633
739
  color: u,
634
740
  textColor: l ? d(l, "text") : null
635
741
  };
636
742
  }
637
- function W(e, t, n, r) {
743
+ function ce(e, t, n, r) {
638
744
  if (e.nodeType === Node.ELEMENT_NODE) {
639
745
  let i = e, a = r("paragraph");
640
746
  return n.push({
@@ -657,17 +763,17 @@ function W(e, t, n, r) {
657
763
  }
658
764
  return null;
659
765
  }
660
- function G(e, t) {
661
- let n = K(e, t);
766
+ function le(e, t) {
767
+ let n = $(e, t);
662
768
  if (!n) return null;
663
769
  let r = parseInt(n, 10);
664
770
  return isNaN(r) ? null : r;
665
771
  }
666
- function K(e, t) {
772
+ function $(e, t) {
667
773
  let n = e.getAttribute("style");
668
774
  if (!n) return null;
669
775
  let r = RegExp(`(?<![\\-a-z])${t}\\s*:\\s*([^;]+)`).exec(n);
670
776
  return r ? r[1].trim() : null;
671
777
  }
672
778
  //#endregion
673
- export { i as a, u as i, N as n, n as o, f as r, R as t };
779
+ export { u as a, T as i, K as n, i as o, E as r, n as s, ie 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-BE95-_tJ.mjs");
44
+ let { convertHtml: t } = await import("./convert-html-BxOQfxMe.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-6yY_wt82.mjs");
51
+ let { convertGdocs: t } = await import("./convert-gdocs-DLaumLJ0.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, t as a } from "./block-builder-BhbHyKmd.mjs";
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";
2
2
  //#region src/components/modules/paste/constants.ts
3
- var o = "data-blok-columns-candidate";
3
+ var s = "data-blok-columns-candidate";
4
4
  //#endregion
5
5
  //#region src/components/modules/paste/google-docs-preprocessor.ts
6
- function s(e) {
7
- let t = document.createElement("div");
8
- t.innerHTML = e;
9
- let n = m(t);
10
- return E(t, n), n && (O(t), k(t), p(t)), t.innerHTML;
6
+ function c(e) {
7
+ let n = document.createElement("div");
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;
11
11
  }
12
- function c(e, t) {
12
+ function l(e, t) {
13
13
  let n = e.parentElement;
14
- return n === null ? null : n === t ? e : c(n, t);
14
+ return n === null ? null : n === t ? e : l(n, t);
15
15
  }
16
- function l(e, t, n) {
16
+ function u(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 l(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 u(e, t, n) {
24
+ function d(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 d(e, t) {
28
+ function f(e, t) {
29
29
  let n = (e, r, i) => {
30
30
  if (e === t) return {
31
31
  before: r,
@@ -36,45 +36,45 @@ function d(e, t) {
36
36
  before: r,
37
37
  after: i
38
38
  };
39
- let o = l(a, e, r), s = u(a, e, i);
39
+ let o = u(a, e, r), s = d(a, e, i);
40
40
  return n(a, o, s);
41
41
  };
42
42
  return n(e, null, null);
43
43
  }
44
- function f(e, t) {
44
+ function p(e, t) {
45
45
  let n = e.parentElement;
46
- return n === null || n === t ? !1 : n.tagName === "TABLE" || f(n, t);
46
+ return n === null || n === t ? !1 : n.tagName === "TABLE" || p(n, t);
47
47
  }
48
- function p(e) {
48
+ function m(e) {
49
49
  let t = Array.from(e.querySelectorAll("img"));
50
50
  for (let n of t) {
51
- if (f(n, e)) continue;
52
- let t = c(n, e);
51
+ if (p(n, e)) continue;
52
+ let t = l(n, e);
53
53
  if (!t) continue;
54
- let { before: r, after: i } = d(n, t), a = document.createDocumentFragment();
54
+ let { before: r, after: i } = f(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 m(e) {
58
+ function h(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 h(e, t, n) {
65
+ function g(e, t, n) {
66
66
  return e ? `background-color: ${n}` : t ? "background-color: transparent" : "";
67
67
  }
68
- function g(e) {
68
+ function _(e) {
69
69
  let t = e.replace(/\s/g, "");
70
70
  return t === "rgb(0,0,0)" || t === "#000000";
71
71
  }
72
- function _(e) {
72
+ function v(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 v(e) {
77
+ function y(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,17 @@ function v(e) {
105
105
  }
106
106
  return -1;
107
107
  }
108
- var y = r, b = e;
109
- function x(e) {
110
- let t = v(e);
108
+ var b = a, x = r;
109
+ function S(e) {
110
+ let t = y(e);
111
111
  return t >= 0 && t > .75;
112
112
  }
113
- function S(e, n, r, i, a) {
114
- if (!n && !r) return e;
115
- let o = n && i !== void 0 ? t(i, "text") : "", s = r && a !== void 0 ? t(a, "bg") : "", c = [n ? `color: ${o}` : "", h(r, n, s)].filter(Boolean).join("; ");
116
- return c ? `<mark style="${c};">${e}</mark>` : e;
113
+ function C(t, n, r, i, a) {
114
+ 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("; ");
116
+ return c ? `<mark style="${c};">${t}</mark>` : t;
117
117
  }
118
- var C = /* @__PURE__ */ new Set([
118
+ var w = /* @__PURE__ */ new Set([
119
119
  "H1",
120
120
  "H2",
121
121
  "H3",
@@ -123,39 +123,39 @@ var C = /* @__PURE__ */ new Set([
123
123
  "H5",
124
124
  "H6"
125
125
  ]);
126
- function w(e) {
126
+ function T(e) {
127
127
  let t = e.parentElement;
128
- return t === null ? !1 : C.has(t.tagName) ? !0 : w(t);
128
+ return t === null ? !1 : w.has(t.tagName) ? !0 : T(t);
129
129
  }
130
- function T(e, t) {
131
- let n = e.getAttribute("style") ?? "", r = /font-weight\s*:\s*(700|bold)/i.test(n) && !w(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 && _(e)) && (t ? s !== void 0 && !g(s) : s !== void 0 && !g(s) && !x(s)), u = c !== void 0 && c !== "transparent" && !y(c) && !b(c);
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
132
  if (!r && !i && !l && !u) return null;
133
- let d = S(e.innerHTML, l, u, s, c), f = i ? `<i>${d}</i>` : d;
133
+ let d = C(e.innerHTML, l, u, s, c), f = i ? `<i>${d}</i>` : d;
134
134
  return r ? `<b>${f}</b>` : f;
135
135
  }
136
- function E(e, t) {
136
+ function D(e, t) {
137
137
  for (let n of Array.from(e.querySelectorAll("span[style]"))) {
138
- let e = T(n, t);
138
+ let e = E(n, t);
139
139
  e !== null && n.replaceWith(document.createRange().createContextualFragment(e));
140
140
  }
141
- t && D(e);
141
+ t && O(e);
142
142
  }
143
- function D(e) {
144
- for (let n of Array.from(e.querySelectorAll("a[style]"))) {
145
- let e = n.getAttribute("style") ?? "", r = /background-color\s*:\s*([^;]+)/i.exec(e)?.[1]?.trim(), i = r !== void 0 && r !== "transparent" && r !== "inherit", a = n;
146
- a.style.removeProperty("color"), i && (a.innerHTML = `<mark style="background-color: ${t(r, "bg")};">${a.innerHTML}</mark>`, a.style.removeProperty("background-color"));
143
+ function O(t) {
144
+ for (let n of Array.from(t.querySelectorAll("a[style]"))) {
145
+ 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
+ a.style.removeProperty("color"), i && (a.innerHTML = `<mark style="background-color: ${e(r, "bg")};">${a.innerHTML}</mark>`, a.style.removeProperty("background-color"));
147
147
  }
148
148
  }
149
- function O(e) {
149
+ function k(e) {
150
150
  if (e.querySelector("google-sheets-html-origin") === null) for (let t of Array.from(e.querySelectorAll("table"))) {
151
151
  if (t.parentElement?.closest("table") !== null) continue;
152
152
  let e = Array.from(t.querySelectorAll("tr")).filter((e) => e.closest("table") === t);
153
153
  if (e.length === 0) continue;
154
154
  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(o, "");
155
+ n.every((e) => e === r) && (r === 2 || r === 3) && t.setAttribute(s, "");
156
156
  }
157
157
  }
158
- function k(e) {
158
+ function A(e) {
159
159
  for (let t of Array.from(e.querySelectorAll("td, th"))) {
160
160
  let e = t.querySelectorAll("p");
161
161
  if (e.length !== 0) {
@@ -169,14 +169,14 @@ function k(e) {
169
169
  }
170
170
  //#endregion
171
171
  //#region src/cli/commands/convert-gdocs/index.ts
172
- function A(e) {
173
- let t = s(e), r = new DOMParser().parseFromString(t, "text/html").body;
172
+ function j(e) {
173
+ let t = c(e), r = new DOMParser().parseFromString(t, "text/html").body;
174
174
  i(r), n(r);
175
- let o = {
175
+ let a = {
176
176
  version: "1.4.0",
177
- blocks: a(r)
177
+ blocks: o(r)
178
178
  };
179
- return JSON.stringify(o);
179
+ return JSON.stringify(a);
180
180
  }
181
181
  //#endregion
182
- export { A as convertGdocs };
182
+ export { j as convertGdocs };
@@ -1,19 +1,19 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "./block-builder-BhbHyKmd.mjs";
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";
2
2
  //#region src/components/modules/paste/constants.ts
3
- var o = "data-blok-columns-candidate";
3
+ var s = "data-blok-columns-candidate";
4
4
  //#endregion
5
5
  //#region src/components/modules/paste/google-docs-preprocessor.ts
6
- function s(e) {
7
- let t = document.createElement("div");
8
- t.innerHTML = e;
9
- let n = m(t);
10
- return E(t, n), n && (O(t), k(t), p(t)), t.innerHTML;
6
+ function c(e) {
7
+ let n = document.createElement("div");
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;
11
11
  }
12
- function c(e, t) {
12
+ function l(e, t) {
13
13
  let n = e.parentElement;
14
- return n === null ? null : n === t ? e : c(n, t);
14
+ return n === null ? null : n === t ? e : l(n, t);
15
15
  }
16
- function l(e, t, n) {
16
+ function u(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 l(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 u(e, t, n) {
24
+ function d(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 d(e, t) {
28
+ function f(e, t) {
29
29
  let n = (e, r, i) => {
30
30
  if (e === t) return {
31
31
  before: r,
@@ -36,45 +36,45 @@ function d(e, t) {
36
36
  before: r,
37
37
  after: i
38
38
  };
39
- let o = l(a, e, r), s = u(a, e, i);
39
+ let o = u(a, e, r), s = d(a, e, i);
40
40
  return n(a, o, s);
41
41
  };
42
42
  return n(e, null, null);
43
43
  }
44
- function f(e, t) {
44
+ function p(e, t) {
45
45
  let n = e.parentElement;
46
- return n === null || n === t ? !1 : n.tagName === "TABLE" || f(n, t);
46
+ return n === null || n === t ? !1 : n.tagName === "TABLE" || p(n, t);
47
47
  }
48
- function p(e) {
48
+ function m(e) {
49
49
  let t = Array.from(e.querySelectorAll("img"));
50
50
  for (let n of t) {
51
- if (f(n, e)) continue;
52
- let t = c(n, e);
51
+ if (p(n, e)) continue;
52
+ let t = l(n, e);
53
53
  if (!t) continue;
54
- let { before: r, after: i } = d(n, t), a = document.createDocumentFragment();
54
+ let { before: r, after: i } = f(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 m(e) {
58
+ function h(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 h(e, t, n) {
65
+ function g(e, t, n) {
66
66
  return e ? `background-color: ${n}` : t ? "background-color: transparent" : "";
67
67
  }
68
- function g(e) {
68
+ function _(e) {
69
69
  let t = e.replace(/\s/g, "");
70
70
  return t === "rgb(0,0,0)" || t === "#000000";
71
71
  }
72
- function _(e) {
72
+ function v(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 v(e) {
77
+ function y(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,17 @@ function v(e) {
105
105
  }
106
106
  return -1;
107
107
  }
108
- var y = r, b = e;
109
- function x(e) {
110
- let t = v(e);
108
+ var b = a, x = r;
109
+ function S(e) {
110
+ let t = y(e);
111
111
  return t >= 0 && t > .75;
112
112
  }
113
- function S(e, n, r, i, a) {
114
- if (!n && !r) return e;
115
- let o = n && i !== void 0 ? t(i, "text") : "", s = r && a !== void 0 ? t(a, "bg") : "", c = [n ? `color: ${o}` : "", h(r, n, s)].filter(Boolean).join("; ");
116
- return c ? `<mark style="${c};">${e}</mark>` : e;
113
+ function C(t, n, r, i, a) {
114
+ 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("; ");
116
+ return c ? `<mark style="${c};">${t}</mark>` : t;
117
117
  }
118
- var C = /* @__PURE__ */ new Set([
118
+ var w = /* @__PURE__ */ new Set([
119
119
  "H1",
120
120
  "H2",
121
121
  "H3",
@@ -123,39 +123,39 @@ var C = /* @__PURE__ */ new Set([
123
123
  "H5",
124
124
  "H6"
125
125
  ]);
126
- function w(e) {
126
+ function T(e) {
127
127
  let t = e.parentElement;
128
- return t === null ? !1 : C.has(t.tagName) ? !0 : w(t);
128
+ return t === null ? !1 : w.has(t.tagName) ? !0 : T(t);
129
129
  }
130
- function T(e, t) {
131
- let n = e.getAttribute("style") ?? "", r = /font-weight\s*:\s*(700|bold)/i.test(n) && !w(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 && _(e)) && (t ? s !== void 0 && !g(s) : s !== void 0 && !g(s) && !x(s)), u = c !== void 0 && c !== "transparent" && !y(c) && !b(c);
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
132
  if (!r && !i && !l && !u) return null;
133
- let d = S(e.innerHTML, l, u, s, c), f = i ? `<i>${d}</i>` : d;
133
+ let d = C(e.innerHTML, l, u, s, c), f = i ? `<i>${d}</i>` : d;
134
134
  return r ? `<b>${f}</b>` : f;
135
135
  }
136
- function E(e, t) {
136
+ function D(e, t) {
137
137
  for (let n of Array.from(e.querySelectorAll("span[style]"))) {
138
- let e = T(n, t);
138
+ let e = E(n, t);
139
139
  e !== null && n.replaceWith(document.createRange().createContextualFragment(e));
140
140
  }
141
- t && D(e);
141
+ t && O(e);
142
142
  }
143
- function D(e) {
144
- for (let n of Array.from(e.querySelectorAll("a[style]"))) {
145
- let e = n.getAttribute("style") ?? "", r = /background-color\s*:\s*([^;]+)/i.exec(e)?.[1]?.trim(), i = r !== void 0 && r !== "transparent" && r !== "inherit", a = n;
146
- a.style.removeProperty("color"), i && (a.innerHTML = `<mark style="background-color: ${t(r, "bg")};">${a.innerHTML}</mark>`, a.style.removeProperty("background-color"));
143
+ function O(t) {
144
+ for (let n of Array.from(t.querySelectorAll("a[style]"))) {
145
+ 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
+ a.style.removeProperty("color"), i && (a.innerHTML = `<mark style="background-color: ${e(r, "bg")};">${a.innerHTML}</mark>`, a.style.removeProperty("background-color"));
147
147
  }
148
148
  }
149
- function O(e) {
149
+ function k(e) {
150
150
  if (e.querySelector("google-sheets-html-origin") === null) for (let t of Array.from(e.querySelectorAll("table"))) {
151
151
  if (t.parentElement?.closest("table") !== null) continue;
152
152
  let e = Array.from(t.querySelectorAll("tr")).filter((e) => e.closest("table") === t);
153
153
  if (e.length === 0) continue;
154
154
  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(o, "");
155
+ n.every((e) => e === r) && (r === 2 || r === 3) && t.setAttribute(s, "");
156
156
  }
157
157
  }
158
- function k(e) {
158
+ function A(e) {
159
159
  for (let t of Array.from(e.querySelectorAll("td, th"))) {
160
160
  let e = t.querySelectorAll("p");
161
161
  if (e.length !== 0) {
@@ -169,14 +169,14 @@ function k(e) {
169
169
  }
170
170
  //#endregion
171
171
  //#region src/cli/commands/convert-gdocs/index.ts
172
- function A(e) {
173
- let t = s(e), r = new DOMParser().parseFromString(t, "text/html").body;
172
+ function j(e) {
173
+ let t = c(e), r = new DOMParser().parseFromString(t, "text/html").body;
174
174
  i(r), n(r);
175
- let o = {
176
- version: "1.3.0",
177
- blocks: a(r)
175
+ let a = {
176
+ version: "1.4.1",
177
+ blocks: o(r)
178
178
  };
179
- return JSON.stringify(o);
179
+ return JSON.stringify(a);
180
180
  }
181
181
  //#endregion
182
- export { A as convertGdocs };
182
+ export { j as convertGdocs };
@@ -0,0 +1,13 @@
1
+ import { i as e, n as t, r as n, t as r } from "./block-builder-Cp5f8JCh.mjs";
2
+ //#region src/cli/commands/convert-html/index.ts
3
+ function i(i) {
4
+ let a = new DOMParser().parseFromString(i, "text/html").body;
5
+ n(a), t(a), e(a);
6
+ let o = {
7
+ version: "1.4.1",
8
+ blocks: r(a)
9
+ };
10
+ return JSON.stringify(o);
11
+ }
12
+ //#endregion
13
+ export { i as convertHtml };
@@ -0,0 +1,13 @@
1
+ import { i as e, n as t, r as n, t as r } from "./block-builder-Cp5f8JCh.mjs";
2
+ //#region src/cli/commands/convert-html/index.ts
3
+ function i(i) {
4
+ let a = new DOMParser().parseFromString(i, "text/html").body;
5
+ n(a), t(a), e(a);
6
+ let o = {
7
+ version: "1.4.0",
8
+ blocks: r(a)
9
+ };
10
+ return JSON.stringify(o);
11
+ }
12
+ //#endregion
13
+ export { i as convertHtml };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloklabs/cli",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
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"
@@ -1,13 +0,0 @@
1
- import { n as e, r as t, t as n } from "./block-builder-BhbHyKmd.mjs";
2
- //#region src/cli/commands/convert-html/index.ts
3
- function r(r) {
4
- let i = new DOMParser().parseFromString(r, "text/html").body;
5
- t(i), e(i);
6
- let a = {
7
- version: "1.4.0",
8
- blocks: n(i)
9
- };
10
- return JSON.stringify(a);
11
- }
12
- //#endregion
13
- export { r as convertHtml };
@@ -1,13 +0,0 @@
1
- import { n as e, r as t, t as n } from "./block-builder-BhbHyKmd.mjs";
2
- //#region src/cli/commands/convert-html/index.ts
3
- function r(r) {
4
- let i = new DOMParser().parseFromString(r, "text/html").body;
5
- t(i), e(i);
6
- let a = {
7
- version: "1.3.0",
8
- blocks: n(i)
9
- };
10
- return JSON.stringify(a);
11
- }
12
- //#endregion
13
- export { r as convertHtml };