@clevertask/scribe 0.1.9 → 0.1.11

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.
Files changed (53) hide show
  1. package/README.md +21 -10
  2. package/dist/{BarMenu-BG_w4DVo.js → BarMenu-5M9g9Y1j.js} +7 -5
  3. package/dist/components/Menu/BarMenu.js +1 -1
  4. package/dist/components/Menu/BubbleMenu.js +2 -2
  5. package/dist/components/Menu/LinkBubbleMenu.js +2 -2
  6. package/dist/components/Menu/Mobile/ListOptionBar.js +1 -1
  7. package/dist/components/Menu/TableBubbleMenu.d.ts +8 -0
  8. package/dist/components/Menu/TableBubbleMenu.d.ts.map +1 -0
  9. package/dist/components/Menu/TableBubbleMenu.js +305 -0
  10. package/dist/components/Menu/linkBubbleMenuPlugin.js +1 -1
  11. package/dist/components/Menu/tableBubbleMenuPlugin.d.ts +11 -0
  12. package/dist/components/Menu/tableBubbleMenuPlugin.d.ts.map +1 -0
  13. package/dist/components/Menu/tableBubbleMenuPlugin.js +22 -0
  14. package/dist/components/Scribe/extension/emoji/suggest.js +1 -1
  15. package/dist/components/Scribe/extension/extension-link.js +1 -1
  16. package/dist/components/Scribe/extension/extension-markdown-paste.js +11 -11
  17. package/dist/components/Scribe/extension/extension-selectedText.js +1 -1
  18. package/dist/components/Scribe/extension/index.d.ts +1 -1
  19. package/dist/components/Scribe/extension/index.d.ts.map +1 -1
  20. package/dist/components/Scribe/extension/index.js +1 -1
  21. package/dist/components/Scribe/extension/resizable-table.d.ts +8 -0
  22. package/dist/components/Scribe/extension/resizable-table.d.ts.map +1 -0
  23. package/dist/components/Scribe/extension/resizable-table.js +2 -0
  24. package/dist/components/Scribe/extension/slashCommand/SlashCommandList.js +1390 -1390
  25. package/dist/components/Scribe/extension/slashCommand/index.js +1 -1
  26. package/dist/components/Scribe/extension/slashCommand/items.d.ts.map +1 -1
  27. package/dist/components/Scribe/extension/slashCommand/items.js +27 -0
  28. package/dist/components/Scribe/extension/slashCommand/renderItems.js +1 -1
  29. package/dist/components/Scribe/extension/tableOfContents.js +4 -4
  30. package/dist/components/Scribe/index.d.ts +2 -1
  31. package/dist/components/Scribe/index.d.ts.map +1 -1
  32. package/dist/components/Scribe/index.js +133 -128
  33. package/dist/dist-DFua_Xbu.js +3251 -0
  34. package/dist/{dist-BgEySLwo.js → dist-Dw4STOPE.js} +1 -1
  35. package/dist/{extension-BVGWENts.js → extension-Dy6hHSvD.js} +1678 -2687
  36. package/dist/{extension-link-CMRfHUc5.js → extension-link-CjfUZ90W.js} +62 -62
  37. package/dist/{html-to-markdown-Cta7-ssO.js → html-to-markdown-B6Uhn7ok.js} +112 -54
  38. package/dist/main.css +52 -1
  39. package/dist/main.js +2 -2
  40. package/dist/{markdown-to-html-DwSNqq2i.js → markdown-to-html-WmeDaJXP.js} +73 -60
  41. package/dist/{menus-D9OsP28c.js → menus-_EXlLMjz.js} +66 -66
  42. package/dist/{purify.es-CFiLaBu1.js → purify.es-BES4pJF7.js} +267 -260
  43. package/dist/resizable-table-Ddw3l6DJ.js +489 -0
  44. package/dist/{slashCommand-B6Iz1i0d.js → slashCommand-CxX07Nbk.js} +69 -66
  45. package/dist/utils/html-to-markdown.d.ts.map +1 -1
  46. package/dist/utils/html-to-markdown.js +1 -1
  47. package/dist/utils/index.js +4 -4
  48. package/dist/utils/markdown-to-html.d.ts.map +1 -1
  49. package/dist/utils/markdown-to-html.js +1 -1
  50. package/package.json +8 -7
  51. package/dist/dist-BMKyBtRa.js +0 -7023
  52. package/dist/dist-FrapLVQu.js +0 -3513
  53. package/dist/tables-CXpUVKdw.js +0 -1347
@@ -1,5 +1,5 @@
1
- import { a as e, i as t } from "./dist-FrapLVQu.js";
2
- import { M as n, N as r, _ as i, f as a, h as o, i as s, j as c, m as l, o as u, r as d, u as f } from "./dist-BMKyBtRa.js";
1
+ import { M as e, N as t, _ as n, f as r, h as i, i as a, j as o, m as s, o as c, r as l, u } from "./dist-DFua_Xbu.js";
2
+ import { Plugin as d, PluginKey as f } from "@tiptap/pm/state";
3
3
  //#region node_modules/.pnpm/linkifyjs@4.3.3/node_modules/linkifyjs/dist/linkify.mjs
4
4
  var p = "aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2", m = "ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2", h = "numeric", g = "ascii", _ = "alpha", v = "asciinumeric", y = "alphanumeric", b = "domain", x = "emoji", ee = "scheme", S = "slashscheme", C = "whitespace";
5
5
  function w(e, t) {
@@ -516,57 +516,57 @@ var bt = "[\0- \xA0 ᠎ -\u2029  ]", xt = new RegExp(bt), St = RegExp(`$
516
516
  function wt(e) {
517
517
  return e.length === 1 ? e[0].isLink : e.length === 3 && e[1].isLink ? ["()", "[]"].includes(e[0].value + e[2].value) : !1;
518
518
  }
519
- function Tt(n) {
520
- return new t({
521
- key: new e("autolink"),
522
- appendTransaction: (e, t, r) => {
523
- let s = e.some((e) => e.docChanged) && !t.doc.eq(r.doc), c = e.some((e) => e.getMeta("preventAutolink"));
519
+ function Tt(e) {
520
+ return new d({
521
+ key: new f("autolink"),
522
+ appendTransaction: (t, a, o) => {
523
+ let s = t.some((e) => e.docChanged) && !a.doc.eq(o.doc), c = t.some((e) => e.getMeta("preventAutolink"));
524
524
  if (!s || c) return;
525
- let { tr: l } = r, u = f(t.doc, [...e]);
526
- if (o(u).forEach(({ newRange: e }) => {
527
- let t = a(r.doc, e, (e) => e.isTextblock), o, s;
528
- if (t.length > 1) o = t[0], s = r.doc.textBetween(o.pos, o.pos + o.node.nodeSize, void 0, " ");
529
- else if (t.length) {
530
- let n = r.doc.textBetween(e.from, e.to, " ", " ");
531
- if (!St.test(n)) return;
532
- o = t[0], s = r.doc.textBetween(o.pos, e.to, void 0, " ");
525
+ let { tr: l } = o, d = u(a.doc, [...t]);
526
+ if (i(d).forEach(({ newRange: t }) => {
527
+ let i = r(o.doc, t, (e) => e.isTextblock), a, s;
528
+ if (i.length > 1) a = i[0], s = o.doc.textBetween(a.pos, a.pos + a.node.nodeSize, void 0, " ");
529
+ else if (i.length) {
530
+ let e = o.doc.textBetween(t.from, t.to, " ", " ");
531
+ if (!St.test(e)) return;
532
+ a = i[0], s = o.doc.textBetween(a.pos, t.to, void 0, " ");
533
533
  }
534
- if (o && s) {
535
- let e = s.split(xt).filter(Boolean);
536
- if (e.length <= 0) return !1;
537
- let t = e[e.length - 1], a = o.pos + s.lastIndexOf(t);
538
- if (!t) return !1;
539
- let c = vt(t).map((e) => e.toObject(n.defaultProtocol));
534
+ if (a && s) {
535
+ let t = s.split(xt).filter(Boolean);
536
+ if (t.length <= 0) return !1;
537
+ let r = t[t.length - 1], i = a.pos + s.lastIndexOf(r);
538
+ if (!r) return !1;
539
+ let c = vt(r).map((t) => t.toObject(e.defaultProtocol));
540
540
  if (!wt(c)) return !1;
541
541
  c.filter((e) => e.isLink).map((e) => ({
542
542
  ...e,
543
- from: a + e.start + 1,
544
- to: a + e.end + 1
545
- })).filter((e) => !r.schema.marks.code || !r.doc.rangeHasMark(e.from, e.to, r.schema.marks.code)).filter((e) => n.validate(e.value)).filter((e) => n.shouldAutoLink(e.value)).forEach((e) => {
546
- i(e.from, e.to, r.doc).some((e) => e.mark.type === n.type) || l.addMark(e.from, e.to, n.type.create({ href: e.href }));
543
+ from: i + e.start + 1,
544
+ to: i + e.end + 1
545
+ })).filter((e) => !o.schema.marks.code || !o.doc.rangeHasMark(e.from, e.to, o.schema.marks.code)).filter((t) => e.validate(t.value)).filter((t) => e.shouldAutoLink(t.value)).forEach((t) => {
546
+ n(t.from, t.to, o.doc).some((t) => t.mark.type === e.type) || l.addMark(t.from, t.to, e.type.create({ href: t.href }));
547
547
  });
548
548
  }
549
549
  }), l.steps.length) return l;
550
550
  }
551
551
  });
552
552
  }
553
- function Et(n) {
554
- return new t({
555
- key: new e("handleClickLink"),
556
- props: { handleClick: (e, t, r) => {
557
- if (r.button !== 0 || !e.editable) return !1;
553
+ function Et(e) {
554
+ return new d({
555
+ key: new f("handleClickLink"),
556
+ props: { handleClick: (t, n, r) => {
557
+ if (r.button !== 0 || !t.editable) return !1;
558
558
  let i = null;
559
559
  if (r.target instanceof HTMLAnchorElement) i = r.target;
560
560
  else {
561
- let e = r.target;
562
- if (!e) return !1;
563
- let t = n.editor.view.dom;
564
- i = e.closest("a"), i && !t.contains(i) && (i = null);
561
+ let t = r.target;
562
+ if (!t) return !1;
563
+ let n = e.editor.view.dom;
564
+ i = t.closest("a"), i && !n.contains(i) && (i = null);
565
565
  }
566
566
  if (!i) return !1;
567
567
  let a = !1;
568
- if (n.enableClickSelection && (a = n.editor.commands.extendMarkRange(n.type.name)), n.openOnClick) {
569
- let t = l(e.state, n.type.name), r = i.href ?? t.href, o = i.target ?? t.target;
568
+ if (e.enableClickSelection && (a = e.editor.commands.extendMarkRange(e.type.name)), e.openOnClick) {
569
+ let n = s(t.state, e.type.name), r = i.href ?? n.href, o = i.target ?? n.target;
570
570
  r && (window.open(r, o), a = !0);
571
571
  }
572
572
  return a;
@@ -623,7 +623,7 @@ function Pt(e) {
623
623
  };
624
624
  }
625
625
  function Ft(e) {
626
- let t = c({
626
+ let t = o({
627
627
  find: (t) => {
628
628
  let n = Dt.exec(t);
629
629
  return !n || !jt(t, n, e.isAllowedHref) ? null : Mt(n);
@@ -631,7 +631,7 @@ function Ft(e) {
631
631
  type: e.type,
632
632
  getAttributes: Pt
633
633
  });
634
- return new d({
634
+ return new l({
635
635
  find: t.find,
636
636
  handler: (e) => {
637
637
  let n = t.handler(e);
@@ -639,37 +639,37 @@ function Ft(e) {
639
639
  }
640
640
  });
641
641
  }
642
- function It(e) {
643
- let t = n({
644
- find: (t) => {
642
+ function It(t) {
643
+ let n = e({
644
+ find: (e) => {
645
645
  let n = [];
646
- for (let r of t.matchAll(Ot)) jt(t, r, e.isAllowedHref) && n.push(Mt(r));
647
- let r = (e.findPlainUrls?.call(e, t) ?? []).filter((e) => !n.some((t) => Nt(t, e)));
646
+ for (let r of e.matchAll(Ot)) jt(e, r, t.isAllowedHref) && n.push(Mt(r));
647
+ let r = (t.findPlainUrls?.call(t, e) ?? []).filter((e) => !n.some((t) => Nt(t, e)));
648
648
  return [...n, ...r];
649
649
  },
650
- type: e.type,
650
+ type: t.type,
651
651
  getAttributes: Pt
652
652
  });
653
- return new u({
654
- find: t.find,
653
+ return new c({
654
+ find: n.find,
655
655
  handler: (e) => {
656
- let n = t.handler(e);
657
- return n !== null && e.state.tr.steps.length && e.match.data?.markdown && e.state.tr.setMeta("preventAutolink", !0), n;
656
+ let t = n.handler(e);
657
+ return t !== null && e.state.tr.steps.length && e.match.data?.markdown && e.state.tr.setMeta("preventAutolink", !0), t;
658
658
  }
659
659
  });
660
660
  }
661
- function Lt(n) {
662
- return new t({
663
- key: new e("handlePasteLink"),
664
- props: { handlePaste: (e, t, r) => {
665
- let { shouldAutoLink: i } = n, { state: a } = e, { selection: o } = a, { empty: s } = o;
661
+ function Lt(e) {
662
+ return new d({
663
+ key: new f("handlePasteLink"),
664
+ props: { handlePaste: (t, n, r) => {
665
+ let { shouldAutoLink: i } = e, { state: a } = t, { selection: o } = a, { empty: s } = o;
666
666
  if (s) return !1;
667
667
  let c = "";
668
668
  r.content.forEach((e) => {
669
669
  c += e.textContent;
670
670
  });
671
- let l = yt(c, { defaultProtocol: n.defaultProtocol }).find((e) => e.isLink && e.value === c);
672
- return !c || !l || i !== void 0 && !i(l.value) ? !1 : n.editor.commands.setMark(n.type, { href: l.href });
671
+ let l = yt(c, { defaultProtocol: e.defaultProtocol }).find((e) => e.isLink && e.value === c);
672
+ return !c || !l || i !== void 0 && !i(l.value) ? !1 : e.editor.commands.setMark(e.type, { href: l.href });
673
673
  } }
674
674
  });
675
675
  }
@@ -691,7 +691,7 @@ function $(e, t) {
691
691
  t && n.push(t);
692
692
  }), !e || e.replace(Ct, "").match(RegExp(`^(?:(?:${n.map((e) => e.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&")).join("|")}):|[^a-z]|[a-z0-9+.\\-]+(?:[^a-z+.\\-:]|$))`, "i"));
693
693
  }
694
- var Rt = s.create({
694
+ var Rt = a.create({
695
695
  name: "link",
696
696
  priority: 1e3,
697
697
  keepOnSplit: !1,
@@ -769,11 +769,11 @@ var Rt = s.create({
769
769
  defaultProtocol: this.options.defaultProtocol
770
770
  }) ? [
771
771
  "a",
772
- r(this.options.HTMLAttributes, e),
772
+ t(this.options.HTMLAttributes, e),
773
773
  0
774
774
  ] : [
775
775
  "a",
776
- r(this.options.HTMLAttributes, {
776
+ t(this.options.HTMLAttributes, {
777
777
  ...e,
778
778
  href: ""
779
779
  }),
@@ -821,7 +821,7 @@ var Rt = s.create({
821
821
  })] : [];
822
822
  },
823
823
  addPasteRules() {
824
- let e = (e) => {
824
+ let t = (e) => {
825
825
  let t = [];
826
826
  if (e) {
827
827
  let { protocols: n, defaultProtocol: r } = this.options;
@@ -846,9 +846,9 @@ var Rt = s.create({
846
846
  protocols: this.options.protocols,
847
847
  defaultProtocol: this.options.defaultProtocol
848
848
  }),
849
- findPlainUrls: e
850
- })] : [n({
851
- find: e,
849
+ findPlainUrls: t
850
+ })] : [e({
851
+ find: t,
852
852
  type: this.type,
853
853
  getAttributes: (e) => ({ href: e.data?.href })
854
854
  })];
@@ -1,4 +1,4 @@
1
- import { t as e } from "./purify.es-CFiLaBu1.js";
1
+ import { t as e } from "./purify.es-BES4pJF7.js";
2
2
  //#region node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.js
3
3
  function t(e) {
4
4
  for (var t = 1; t < arguments.length; t++) {
@@ -284,48 +284,48 @@ function w(e, t, n) {
284
284
  if (r.call(e, t, n)) return !0;
285
285
  } else throw TypeError("`filter` needs to be a string, array, or function");
286
286
  }
287
- function T(e) {
287
+ function ee(e) {
288
288
  var t = e.element, n = e.isBlock, r = e.isVoid, i = e.isPre || function(e) {
289
289
  return e.nodeName === "PRE";
290
290
  };
291
291
  if (!(!t.firstChild || i(t))) {
292
- for (var a = null, o = !1, s = null, c = D(s, t, i); c !== t;) {
292
+ for (var a = null, o = !1, s = null, c = E(s, t, i); c !== t;) {
293
293
  if (c.nodeType === 3 || c.nodeType === 4) {
294
294
  var l = c.data.replace(/[ \r\n\t]+/g, " ");
295
295
  if ((!a || / $/.test(a.data)) && !o && l[0] === " " && (l = l.substr(1)), !l) {
296
- c = E(c);
296
+ c = T(c);
297
297
  continue;
298
298
  }
299
299
  c.data = l, a = c;
300
300
  } else if (c.nodeType === 1) n(c) || c.nodeName === "BR" ? (a && (a.data = a.data.replace(/ $/, "")), a = null, o = !1) : r(c) || i(c) ? (a = null, o = !0) : a && (o = !1);
301
301
  else {
302
- c = E(c);
302
+ c = T(c);
303
303
  continue;
304
304
  }
305
- var u = D(s, c, i);
305
+ var u = E(s, c, i);
306
306
  s = c, c = u;
307
307
  }
308
- a && (a.data = a.data.replace(/ $/, ""), a.data || E(a));
308
+ a && (a.data = a.data.replace(/ $/, ""), a.data || T(a));
309
309
  }
310
310
  }
311
- function E(e) {
311
+ function T(e) {
312
312
  var t = e.nextSibling || e.parentNode;
313
313
  return e.parentNode.removeChild(e), t;
314
314
  }
315
- function D(e, t, n) {
315
+ function E(e, t, n) {
316
316
  return e && e.parentNode === t || n(t) ? t.nextSibling || t.parentNode : t.firstChild || t.nextSibling || t.parentNode;
317
317
  }
318
- var O = typeof window < "u" ? window : {};
319
- function k() {
320
- var e = O.DOMParser, t = !1;
318
+ var D = typeof window < "u" ? window : {};
319
+ function O() {
320
+ var e = D.DOMParser, t = !1;
321
321
  try {
322
322
  new e().parseFromString("", "text/html") && (t = !0);
323
323
  } catch {}
324
324
  return t;
325
325
  }
326
- function A() {
326
+ function k() {
327
327
  var e = function() {};
328
- return j() ? e.prototype.parseFromString = function(e) {
328
+ return A() ? e.prototype.parseFromString = function(e) {
329
329
  var t = new window.ActiveXObject("htmlfile");
330
330
  return t.designMode = "on", t.open(), t.write(e), t.close(), t;
331
331
  } : e.prototype.parseFromString = function(e) {
@@ -333,50 +333,50 @@ function A() {
333
333
  return t.open(), t.write(e), t.close(), t;
334
334
  }, e;
335
335
  }
336
- function j() {
336
+ function A() {
337
337
  var e = !1;
338
338
  try {
339
339
  document.implementation.createHTMLDocument("").open();
340
340
  } catch {
341
- O.ActiveXObject && (e = !0);
341
+ D.ActiveXObject && (e = !0);
342
342
  }
343
343
  return e;
344
344
  }
345
- var M = k() ? O.DOMParser : A();
346
- function N(e, t) {
347
- var n = typeof e == "string" ? F().parseFromString("<x-turndown id=\"turndown-root\">" + e + "</x-turndown>", "text/html").getElementById("turndown-root") : e.cloneNode(!0);
348
- return T({
345
+ var j = O() ? D.DOMParser : k();
346
+ function M(e, t) {
347
+ var n = typeof e == "string" ? te().parseFromString("<x-turndown id=\"turndown-root\">" + e + "</x-turndown>", "text/html").getElementById("turndown-root") : e.cloneNode(!0);
348
+ return ee({
349
349
  element: n,
350
350
  isBlock: s,
351
351
  isVoid: l,
352
- isPre: t.preformattedCode ? I : null
352
+ isPre: t.preformattedCode ? ne : null
353
353
  }), n;
354
354
  }
355
- var P;
356
- function F() {
357
- return P ||= new M(), P;
355
+ var N;
356
+ function te() {
357
+ return N ||= new j(), N;
358
358
  }
359
- function I(e) {
359
+ function ne(e) {
360
360
  return e.nodeName === "PRE" || e.nodeName === "CODE";
361
361
  }
362
- function L(e, t) {
363
- return e.isBlock = s(e), e.isCode = e.nodeName === "CODE" || e.parentNode.isCode, e.isBlank = R(e), e.flankingWhitespace = z(e, t), e;
362
+ function P(e, t) {
363
+ return e.isBlock = s(e), e.isCode = e.nodeName === "CODE" || e.parentNode.isCode, e.isBlank = F(e), e.flankingWhitespace = I(e, t), e;
364
364
  }
365
- function R(e) {
365
+ function F(e) {
366
366
  return !l(e) && !f(e) && /^\s*$/i.test(e.textContent) && !u(e) && !p(e);
367
367
  }
368
- function z(e, t) {
368
+ function I(e, t) {
369
369
  if (e.isBlock || t.preformattedCode && e.isCode) return {
370
370
  leading: "",
371
371
  trailing: ""
372
372
  };
373
- var n = B(e.textContent);
374
- return n.leadingAscii && V("left", e, t) && (n.leading = n.leadingNonAscii), n.trailingAscii && V("right", e, t) && (n.trailing = n.trailingNonAscii), {
373
+ var n = L(e.textContent);
374
+ return n.leadingAscii && R("left", e, t) && (n.leading = n.leadingNonAscii), n.trailingAscii && R("right", e, t) && (n.trailing = n.trailingNonAscii), {
375
375
  leading: n.leading,
376
376
  trailing: n.trailing
377
377
  };
378
378
  }
379
- function B(e) {
379
+ function L(e) {
380
380
  var t = e.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/);
381
381
  return {
382
382
  leading: t[1],
@@ -387,13 +387,13 @@ function B(e) {
387
387
  trailingAscii: t[6]
388
388
  };
389
389
  }
390
- function V(e, t, n) {
390
+ function R(e, t, n) {
391
391
  var r, i, a;
392
392
  return e === "left" ? (r = t.previousSibling, i = / $/) : (r = t.nextSibling, i = /^ /), r && (r.nodeType === 3 ? a = i.test(r.nodeValue) : n.preformattedCode && r.nodeName === "CODE" ? a = !1 : r.nodeType === 1 && !s(r) && (a = i.test(r.textContent))), a;
393
393
  }
394
- var H = Array.prototype.reduce;
395
- function U(e) {
396
- if (!(this instanceof U)) return new U(e);
394
+ var z = Array.prototype.reduce;
395
+ function B(e) {
396
+ if (!(this instanceof B)) return new B(e);
397
397
  var n = {
398
398
  rules: v,
399
399
  headingStyle: "setext",
@@ -419,12 +419,12 @@ function U(e) {
419
419
  };
420
420
  this.options = t({}, n, e), this.rules = new S(this.options);
421
421
  }
422
- U.prototype = {
422
+ B.prototype = {
423
423
  turndown: function(e) {
424
- if (!J(e)) throw TypeError(e + " is not a string, or an element/document/fragment node.");
424
+ if (!G(e)) throw TypeError(e + " is not a string, or an element/document/fragment node.");
425
425
  if (e === "") return "";
426
- var t = W.call(this, new N(e, this.options));
427
- return G.call(this, t);
426
+ var t = V.call(this, new M(e, this.options));
427
+ return H.call(this, t);
428
428
  },
429
429
  use: function(e) {
430
430
  if (Array.isArray(e)) for (var t = 0; t < e.length; t++) this.use(e[t]);
@@ -445,35 +445,93 @@ U.prototype = {
445
445
  return _(e);
446
446
  }
447
447
  };
448
- function W(e) {
448
+ function V(e) {
449
449
  var t = this;
450
- return H.call(e.childNodes, function(e, n) {
451
- n = new L(n, t.options);
450
+ return z.call(e.childNodes, function(e, n) {
451
+ n = new P(n, t.options);
452
452
  var r = "";
453
- return n.nodeType === 3 ? r = n.isCode ? n.nodeValue : t.escape(n.nodeValue) : n.nodeType === 1 && (r = K.call(t, n)), q(e, r);
453
+ return n.nodeType === 3 ? r = n.isCode ? n.nodeValue : t.escape(n.nodeValue) : n.nodeType === 1 && (r = U.call(t, n)), W(e, r);
454
454
  }, "");
455
455
  }
456
- function G(e) {
456
+ function H(e) {
457
457
  var t = this;
458
458
  return this.rules.forEach(function(n) {
459
- typeof n.append == "function" && (e = q(e, n.append(t.options)));
459
+ typeof n.append == "function" && (e = W(e, n.append(t.options)));
460
460
  }), e.replace(/^[\t\r\n]+/, "").replace(/[\t\r\n\s]+$/, "");
461
461
  }
462
- function K(e) {
463
- var t = this.rules.forNode(e), n = W.call(this, e), r = e.flankingWhitespace;
462
+ function U(e) {
463
+ var t = this.rules.forNode(e), n = V.call(this, e), r = e.flankingWhitespace;
464
464
  return (r.leading || r.trailing) && (n = n.trim()), r.leading + t.replacement(n, e, this.options) + r.trailing;
465
465
  }
466
- function q(e, t) {
466
+ function W(e, t) {
467
467
  var n = i(e), a = r(t), o = Math.max(e.length - n.length, t.length - a.length);
468
468
  return n + "\n\n".substring(0, o) + a;
469
469
  }
470
- function J(e) {
470
+ function G(e) {
471
471
  return e != null && (typeof e == "string" || e.nodeType && (e.nodeType === 1 || e.nodeType === 9 || e.nodeType === 11));
472
472
  }
473
473
  //#endregion
474
474
  //#region lib/utils/html-to-markdown.ts
475
- var Y = (t) => {
476
- let n = new U({
475
+ var K = "scribe-table-break", q = (/* @__PURE__ */ "address.article.aside.blockquote.details.dialog.dd.div.dl.dt.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hr.li.main.menu.nav.ol.p.pre.section.summary.table.ul".split(".")).join(","), J = /* @__PURE__ */ new Set([
476
+ "A",
477
+ "B",
478
+ "BR",
479
+ "CODE",
480
+ "DEL",
481
+ "EM",
482
+ "I",
483
+ "IMG",
484
+ "S",
485
+ "STRONG"
486
+ ]), Y = (e) => J.has(e.tagName) || e.tagName === "SPAN" && e.getAttribute("data-type") === "latex", X = (e) => Y(e) && Array.from(e.querySelectorAll("*")).every(Y), Z = (e) => e.nodeType !== Node.TEXT_NODE || !!e.textContent?.trim(), re = (e) => {
487
+ let t = Array.from(e.childNodes).filter(Z);
488
+ return t.length === 0 ? !0 : t.length === 1 && t[0] instanceof HTMLParagraphElement ? !t[0].querySelector(q) && Array.from(t[0].children).every(X) : t.every((e) => !(e instanceof Element) && e.nodeType === Node.TEXT_NODE || e instanceof Element && !e.matches(q) && !e.querySelector(q) && X(e));
489
+ }, ie = (e) => e.hasAttribute("width") || /(?:^|;)\s*width\s*:/i.test(e.getAttribute("style") ?? "") ? !0 : Array.from(e.querySelectorAll("th, td, col")).some((e) => !!(e.hasAttribute("colwidth") || e.hasAttribute("width") || /(?:^|;)\s*width\s*:/i.test(e.getAttribute("style") ?? ""))), Q = (e) => {
490
+ let t = e.style.textAlign.trim().toLowerCase(), n = (e.getAttribute("align") ?? "").trim().toLowerCase();
491
+ if (t && n && t !== n) return;
492
+ let r = t || n;
493
+ if (!r) return null;
494
+ if (r === "left" || r === "center" || r === "right") return r;
495
+ }, ae = (e) => {
496
+ if (e.caption || e.tFoot || ie(e)) return null;
497
+ let t = Array.from(e.rows), n = t[0]?.cells.length ?? 0;
498
+ if (t.length === 0 || n === 0) return null;
499
+ let r = t.map((e) => Array.from(e.cells));
500
+ if (r.some((t, r) => t.length !== n || t.some((t) => t.closest("table") !== e || t.colSpan !== 1 || t.rowSpan !== 1 || !re(t) || (r === 0 ? t.tagName !== "TH" : t.tagName !== "TD")))) return null;
501
+ let i = r[0].map((e, t) => {
502
+ let n = r.map((e) => Q(e[t])), i = n[0];
503
+ if (!(i === void 0 || n.some((e) => e !== i))) return i;
504
+ });
505
+ return i.some((e) => e === void 0) ? null : {
506
+ rows: r,
507
+ alignments: i
508
+ };
509
+ }, oe = (e, t) => {
510
+ let n = Array.from(t.childNodes).filter(Z), r = (n.length === 1 && n[0] instanceof HTMLParagraphElement ? n[0] : t).cloneNode(!0);
511
+ r.querySelectorAll("br").forEach((e) => {
512
+ e.replaceWith(e.ownerDocument.createTextNode(K));
513
+ });
514
+ let i = e.turndown(r.innerHTML).split(K).join("<br>").split("|").join("\\|").trim();
515
+ return /[\r\n]/.test(i) ? null : i;
516
+ }, $ = (e) => {
517
+ let t = e.cloneNode(!0);
518
+ return t.querySelectorAll("span[data-type=\"latex\"]").forEach((e) => {
519
+ e.textContent === "•" && (e.textContent = "");
520
+ }), t.outerHTML;
521
+ }, se = (e) => {
522
+ e.addRule("scribeTable", {
523
+ filter: "table",
524
+ replacement: (t, n) => {
525
+ let r = n, i = ae(r);
526
+ if (!i) return `\n\n${$(r)}\n\n`;
527
+ let { rows: a, alignments: o } = i, s = a.map((t) => t.map((t) => oe(e, t)));
528
+ if (s.some((e) => e.some((e) => e === null))) return `\n\n${$(r)}\n\n`;
529
+ let c = s.map((e) => `| ${e.join(" | ")} |`), l = `| ${o.map((e) => e === "left" ? ":---" : e === "center" ? ":---:" : e === "right" ? "---:" : "---").join(" | ")} |`;
530
+ return c.splice(1, 0, l), `\n\n${c.join("\n")}\n\n`;
531
+ }
532
+ });
533
+ }, ce = (t) => {
534
+ let n = new B({
477
535
  headingStyle: "atx",
478
536
  hr: "---",
479
537
  bulletListMarker: "-",
@@ -492,7 +550,7 @@ var Y = (t) => {
492
550
  replacement: function(e) {
493
551
  return "~~" + e + "~~";
494
552
  }
495
- }), n.turndown(e.sanitize(((e) => e.replace(/<span([^>]+data-type="latex"[^>]*)><\/span>/g, "<span$1>•</span>"))(t)));
553
+ }), se(n), n.turndown(e.sanitize(((e) => e.replace(/<span([^>]+data-type="latex"[^>]*)><\/span>/g, "<span$1>•</span>"))(t), { ADD_ATTR: ["colwidth"] }));
496
554
  };
497
555
  //#endregion
498
- export { Y as t };
556
+ export { ce as t };
package/dist/main.css CHANGED
@@ -151,10 +151,24 @@
151
151
  width: 100%;
152
152
  }
153
153
 
154
+ .scribe-content .tiptap .tableWrapper {
155
+ margin: 0 0 1rem;
156
+ max-width: 100%;
157
+ overflow-x: auto;
158
+ }
159
+
160
+ .scribe-content .tiptap .tableWrapper table {
161
+ margin: 0;
162
+ min-width: 100%;
163
+ }
164
+
154
165
  .scribe-content .tiptap th,
155
166
  .scribe-content .tiptap td {
156
167
  border: 1px solid var(--gray-6);
168
+ box-sizing: border-box;
169
+ min-width: 1em;
157
170
  padding: 0.6rem 0.75rem;
171
+ position: relative;
158
172
  text-align: left;
159
173
  vertical-align: top;
160
174
  }
@@ -164,6 +178,33 @@
164
178
  font-weight: 600;
165
179
  }
166
180
 
181
+ .scribe-content .tiptap .selectedCell::after {
182
+ background: var(--accent-a3);
183
+ bottom: 0;
184
+ content: "";
185
+ left: 0;
186
+ pointer-events: none;
187
+ position: absolute;
188
+ right: 0;
189
+ top: 0;
190
+ z-index: 2;
191
+ }
192
+
193
+ .scribe-content .tiptap .column-resize-handle {
194
+ background-color: var(--accent-9);
195
+ bottom: -2px;
196
+ pointer-events: none;
197
+ position: absolute;
198
+ right: -2px;
199
+ top: 0;
200
+ width: 4px;
201
+ z-index: 3;
202
+ }
203
+
204
+ .scribe-content .tiptap.resize-cursor {
205
+ cursor: col-resize;
206
+ }
207
+
167
208
  .scribe-content .tiptap img {
168
209
  display: block;
169
210
  max-width: 100%;
@@ -182,7 +223,8 @@
182
223
  width: 1em;
183
224
  }
184
225
 
185
- .scribe-bubble-menu {
226
+ .scribe-bubble-menu,
227
+ .scribe-table-bubble-menu {
186
228
  background: var(--color-panel-solid);
187
229
  border: 1px solid var(--gray-6);
188
230
  border-radius: 12px;
@@ -192,6 +234,15 @@
192
234
  padding: 8px;
193
235
  }
194
236
 
237
+ .scribe-table-bubble-menu {
238
+ max-width: calc(100vw - 16px);
239
+ overflow-x: auto;
240
+ }
241
+
242
+ .scribe-table-bubble-menu > * {
243
+ flex-shrink: 0;
244
+ }
245
+
195
246
  .scribe-link-popover {
196
247
  background: var(--color-panel-solid);
197
248
  border: 1px solid var(--gray-6);
package/dist/main.js CHANGED
@@ -1,5 +1,5 @@
1
- import { t as e } from "./html-to-markdown-Cta7-ssO.js";
2
- import { t } from "./markdown-to-html-DwSNqq2i.js";
1
+ import { t as e } from "./html-to-markdown-B6Uhn7ok.js";
2
+ import { t } from "./markdown-to-html-WmeDaJXP.js";
3
3
  import { isInViewport as n } from "./utils/is-in-viewport.js";
4
4
  import { convertLegacyMathDelimiters as r } from "./utils/convert-legacy-math-delimiters.js";
5
5
  import { SuggestionItemType as i } from "./components/Scribe/extension/slashCommand/items.js";