@meowdown/core 0.17.0 → 0.17.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.
package/dist/index.d.ts CHANGED
@@ -338,7 +338,8 @@ declare function markdownToDoc(markdown: string, options?: MarkdownToDocOptions)
338
338
  * How faithfully markdown survives a parse-then-serialize round trip:
339
339
  * - `exact`: byte-identical (modulo the trailing newline).
340
340
  * - `normalizing`: same non-blank lines ignoring trailing whitespace; only
341
- * blank-line layout or insignificant trailing whitespace differs.
341
+ * blank-line layout (including empty `>` lines inside a blockquote) or
342
+ * insignificant trailing whitespace differs.
342
343
  * - `lossy`: a non-blank line changed, so content would be lost or altered.
343
344
  */
344
345
  type RoundTripFidelity = 'exact' | 'normalizing' | 'lossy';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineHistory as s,defineKeymap as c,defineMarkSpec as l,defineMarkView as u,defineNodeAttr as d,defineNodeSpec as f,definePlugin as p,getMarkRange as m,getMarkType as ee,getNodeType as te,isApple as ne,isAtBlockStart as re,isTextSelection as h,toggleNode as ie,union as g,unsetBlockType as ae,withPriority as oe,withPriority as _,withSkipCodeBlock as se}from"@prosekit/core";import{defineBlockquote as ce}from"@prosekit/extensions/blockquote";import{defineCodeBlock as le,defineCodeBlockHighlight as ue}from"@prosekit/extensions/code-block";import{defineDoc as de}from"@prosekit/extensions/doc";import{defineGapCursor as fe}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as pe}from"@prosekit/extensions/mod-click-prevention";import{defineText as me}from"@prosekit/extensions/text";import{defineVirtualSelection as he}from"@prosekit/extensions/virtual-selection";import{Plugin as v,PluginKey as y,TextSelection as b}from"@prosekit/pm/state";import{Decoration as ge,DecorationSet as x}from"@prosekit/pm/view";import{LanguageDescription as _e}from"@codemirror/language";import{languages as ve}from"@codemirror/language-data";import{classHighlighter as ye}from"@lezer/highlight";import{createParser as be}from"prosemirror-highlight/lezer";import{defineHeadingCommands as xe,defineHeadingInputRule as Se,defineHeadingSpec as Ce}from"@prosekit/extensions/heading";import{defineHorizontalRule as we}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as Te,Step as Ee,StepResult as De,Transform as Oe}from"@prosekit/pm/transform";import{Mark as ke}from"@prosekit/pm/model";import{GFM as Ae,parser as je}from"@lezer/markdown";import{once as Me}from"@ocavue/utils";import{defineList as Ne}from"@prosekit/extensions/list";import{defineParagraphCommands as Pe,defineParagraphKeymap as Fe}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as Ie,defineTableCommands as Le,defineTableDropIndicator as Re,defineTableEditingPlugin as ze,defineTableHeaderCellSpec as Be,defineTableRowSpec as Ve,defineTableSpec as He,deleteTable as Ue,isCellSelection as We}from"@prosekit/extensions/table";import{closeHistory as Ge}from"@prosekit/pm/history";import{definePlaceholder as Ke}from"@prosekit/extensions/placeholder";import{defineReadonly as qe}from"@prosekit/extensions/readonly";function S(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return m(i,n)}const Je=new Set([`mdMark`,`mdLinkUri`]),Ye=new Set([`mdImageSource`,`mdWikilinkSource`]),Xe=new y(`mark-mode`);function Ze(e){return new v({key:Xe,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>tt(e):void 0,clipboardTextSerializer:e===`show`?void 0:et}})}function Qe(e){return p(Ze(e))}function $e(e){return Xe.getState(e)}function et(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(!e.marks.some(e=>Ye.has(e.type.name))&&e.marks.some(e=>Je.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
- `)}function tt(e){let{selection:t}=e;if(!t.empty)return x.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return x.empty;let i=m(n,ee(e.schema,`mdPack`));return i?x.create(e.doc,[ge.inline(i.from,i.to,{class:`show`})]):x.empty}function C(e,t){let n=$e(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function w(e,t,n){for(let r of n){let n=S(e,t,r);if(n)return n}}function T(e,t,n){let r=w(e,t,n);return r&&r.to===t?r:void 0}function E(e,t,n){let r=w(e,t,n);return r&&r.from===t?r:void 0}function D(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=w(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function nt(e,t){return b.create(e.doc,t.from,t.to)}function rt(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!h(t.selection))return!1;let i=t.selection;if(i.empty){let e=E(t,i.from,r);if(e)return n?.(t.tr.setSelection(nt(t,e))),!0;if(T(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(b.create(t.doc,i.from+1))),!0)}return!1}let a=D(t,r);return a?(n?.(t.tr.setSelection(b.create(t.doc,a.to))),!0):!1}}function it(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!h(t.selection))return!1;let i=t.selection;if(i.empty){let e=T(t,i.from,r);return e?(n?.(t.tr.setSelection(nt(t,e))),!0):!1}let a=D(t,r);return a?(n?.(t.tr.setSelection(b.create(t.doc,a.from))),!0):!1}}function at(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=T(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!E(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function ot(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=E(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!T(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}function st(e,t){return new v({key:new y(`atomic-mark-selection-${t}`),props:{decorations:n=>{let r=C(e,n);if(r.length===0)return;let i=D(n,r);if(i)return x.create(n.doc,[ge.inline(i.from,i.to,{class:t})])}}})}function ct({marks:e,selectedClass:n}){return g(_(c({ArrowRight:rt(e),ArrowLeft:it(e),Backspace:at(e),Delete:ot(e)}),t.high),p(st(e,n)))}const O=new Map;async function lt(e){let t=_e.matchLanguageName(ve,e,!0);if(!t){O.set(e,null);return}let n=t.support;if(!n)try{n=await t.load()}catch(t){console.error(`[meowdown] Failed to load language "${e}":`,t),O.set(e,null)}if(O.has(e))return;if(!n){O.set(e,null);return}let r=be({parse:e=>n.language.parser.parse(e.content),highlighter:ye});O.set(e,r)}const ut=e=>{let t=e.language?.trim();if(!t)return[];let n=O.get(t);return n?n(e):n===null?[]:lt(t)};function dt(){return ue({parser:ut,nodeTypes:[`codeBlock`]})}function ft(){return d({type:`doc`,attr:`frontmatter`,default:null})}function pt(){return f({name:`heading`,whitespace:`pre`})}function mt(){return d({type:`heading`,attr:`setextUnderline`,default:null,toDOM:e=>e==null?null:[`data-setext-underline`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-setext-underline`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function k(e){return se(ie({type:`heading`,attrs:{level:e}}))}const ht=(e,t,n)=>re(e,n)?.parent.type.name===`heading`?ae()(e,t,n):!1;function gt(){return c({"Mod-1":k(1),"Mod-2":k(2),"Mod-3":k(3),"Mod-4":k(4),"Mod-5":k(5),"Mod-6":k(6),Backspace:ht})}function _t(){return g(Ce(),pt(),mt(),Se(),xe(),gt())}function vt(){return d({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function yt(){return g(we(),vt())}function bt(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function xt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>ke.fromJSON(e,t))]}var A=class e extends Ee{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return De.ok(e);let t=e.content.size,n;for(let[r,i,a]of this.chunks){if(r>=i)continue;let o=Math.max(0,Math.min(r,t)),s=Math.max(o,Math.min(i,t));o>=s||e.nodesBetween(o,s,(t,r)=>{if(!t.isText)return!0;let i=Math.max(o,r),c=Math.min(s,r+t.nodeSize);if(i>=c)return!1;let l=t.marks;for(let t of l)t.isInSet(a)||(n??=new Oe(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new Oe(e),n.addMark(i,c,t));return!1})}return De.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return St;let t=this.chunks[0][0],n=this.chunks[0][1];for(let[,e]of this.chunks)e>n&&(n=e);let r=e.content.size,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));return new Te(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(bt)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>xt(t,e)))}};Ee.jsonID(`batchSetMark`,A);const St=new A([]),Ct=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),wt=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function Tt(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function Et(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!Ct.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!wt.test(e))return!1;return!0}function Dt(e){return e===32||e===9||e===10||e===13}const Ot=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,kt=/[\s(*_~]/;function At(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function jt(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function Mt(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&jt(e,t,`)`)>jt(e,t,`(`))t--;else if(n===`;`){let n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(0,t));if(!n)break;t=n.index}else break}return t}const Nt={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!At(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!kt.test(r))return-1;let i=Ot.exec(e.slice(n,e.end));if(!i)return-1;let a=Mt(i[0]);return a===0||!Et(Tt(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function Pt(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===95||e>127&&/[\p{L}\p{N}]/u.test(String.fromCharCode(e))}function Ft(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const It={defineNodes:[{name:`Hashtag`}],parseInline:[{name:`Hashtag`,parse(e,t,n){if(t!==35||!/\s|^$/.test(e.slice(n-1,n)))return-1;let r=n+1,i=!1;for(;r<e.end;){let t=e.char(r);if(!Pt(t))break;i||=Ft(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},Lt={defineNodes:[{name:`Wikilink`},{name:`WikilinkMark`}],parseInline:[{name:`Wikilink`,before:`Link`,parse(e,t,n){if(t!==91||e.char(n+1)!==91)return-1;let r=!1;for(let t=n+2;t<e.end-1;t++){let i=e.char(t);if(i===93){if(e.char(t+1)!==93||!r)return-1;let i=t+2;return e.addElement(e.elt(`Wikilink`,n,i,[e.elt(`WikilinkMark`,n,n+2),e.elt(`WikilinkMark`,t,i)]))}if(i===91||i===10)return-1;i!==32&&i!==9&&(r=!0)}return-1}}]};function Rt(e){return e.end}const j=je.configure([Ae,It,Lt,Nt]),zt=j.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:Rt}]});function M(e){return j.parseInline(e,0)}function N(e,t,n=[]){for(let r of e)t(r)&&n.push(r),N(r.children,t,n);return n}function Bt(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const P=Bt(j);function Vt(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function Ht(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function Ut(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view`;let r=document.createElement(`span`);n.appendChild(r);let i=document.createElement(`span`);return i.className=`md-wikilink-label`,i.contentEditable=`false`,i.dataset.testid=`wikilink`,i.textContent=t.display||t.target,n.appendChild(i),{dom:n,contentDOM:r,ignoreMutation:e=>!r.contains(e.target)}}}function Wt(){return u({name:`mdWikilinkView`,constructor:Ut()})}const F=new Map([[P.Emphasis,`mdEm`],[P.StrongEmphasis,`mdStrong`],[P.InlineCode,`mdCode`],[P.Strikethrough,`mdDel`],[P.EmphasisMark,`mdMark`],[P.CodeMark,`mdMark`],[P.LinkMark,`mdMark`],[P.StrikethroughMark,`mdMark`],[P.URL,`mdLinkUri`],[P.Hashtag,`mdTag`],[P.WikilinkMark,`mdMark`]]);function Gt(e,t){let n=M(t),r=[];return I(n,[],0,t.length,t,e,r),r}function Kt(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||Et(Tt(e)))return`https://${e}`}function I(e,t,n,r,i,a,o){let s=n;for(let n of e){n.from>s&&R(o,s,n.from,t);let e=n.type;if(e===P.Link)qt(n,t,i,a,o);else if(e===P.Image)Jt(n,t,i,a,o);else if(e===P.Wikilink)L(n,t,i,a,o);else if(e===P.URL){let e=Kt(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();R(o,n.from,n.to,[...t,r])}else{let r;e===P.Emphasis?r=`italic`:e===P.StrongEmphasis?r=`bold`:e===P.InlineCode?r=`code`:e===P.Strikethrough?r=`strike`:e===P.Autolink&&(r=`autolink`);let s=r?[...t,a.mdPack.create({key:r})]:t,c=F.get(e),l=c?[...s,a[c].create()]:s;n.children.length===0?R(o,n.from,n.to,l):I(n.children,l,n.from,n.to,i,a,o)}s=n.to}s<r&&R(o,s,r,t)}function qt(e,t,n,r,i){let a=-1,o=null,s=0;for(let t of e.children)t.type===P.LinkMark?(s++,s===2&&(a=t.from)):t.type===P.URL&&o===null&&(o=t);let c=o?n.slice(o.from,o.to):``,l=c?r.mdLinkText.create({href:c}):null,u=e=>a>=0&&e<a&&l!==null,d=r.mdPack.create({key:`link_${c}`}),f=[...t,d],p=e.from;for(let t of e.children){if(t.from>p){let e=u(p)?[...f,l]:f;R(i,p,t.from,e)}let e=u(t.from)?[...f,l]:f;if(t.type===P.Wikilink){L(t,e,n,r,i),p=t.to;continue}let a=F.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?R(i,t.from,t.to,o):I(t.children,o,t.from,t.to,n,r,i),p=t.to}p<e.to&&R(i,p,e.to,f)}function Jt(e,t,n,r,i){let a=e.children.find(e=>e.type===P.URL);if(!a){qt(e,t,n,r,i);return}let o=e.children.filter(e=>e.type===P.LinkMark),s=n.slice(a.from,a.to),c=o.length>=2?n.slice(o[0].to,o[1].from):``,l=r.mdImageSource.create({src:s,alt:c}),u=r.mdImageView.create({src:s,alt:c}),d=r.mdPack.create({key:`image_${s}`}),f=e.to-1,p=e=>e>=f?[...t,d,l,u]:[...t,d,l],m=e.from;for(let t of e.children){t.from>m&&R(i,m,t.from,p(m));let e=F.get(t.type),a=e?[...p(t.from),r[e].create()]:p(t.from);t.children.length===0?R(i,t.from,t.to,a):I(t.children,a,t.from,t.to,n,r,i),m=t.to}m<e.to&&R(i,m,e.to,p(m))}function L(e,t,n,r,i){let{target:a,display:o}=Ht(n.slice(e.from,e.to)),s=r.mdWikilinkSource.create({target:a}),c=r.mdWikilinkView.create({target:a,display:o}),l=e.to-1,u=e=>e>=l?[...t,s,c]:[...t,s],d=e.from;for(let t of e.children){t.from>d&&R(i,d,t.from,u(d));let e=r.mdMark.create();t.from<l&&t.to>l?(R(i,t.from,l,[...u(t.from),e]),R(i,l,t.to,[...u(l),e])):R(i,t.from,t.to,[...u(t.from),e]),d=t.to}d<e.to&&R(i,d,e.to,u(d))}function R(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&Vt(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const Yt=Me(()=>{let e=Kn().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),Xt=Me(()=>r(Yt())),z=`meowdown_mark_builders`;function Zt(e){let t=e.cached[z];if(t)return t;let r=n(e);return e.cached[z]=r,r}const B=`inline-marks-applied`,Qt=new WeakMap;let $t=0,en=0;function tn(e,t,n){let r=Qt.get(e);if(r?en++:($t++,r=Gt(Zt(n),e.textContent),Qt.set(e,r)),t===0)return r;let i=[];for(let[e,n,a]of r)i.push([e+t,n+t,a]);return i}function nn(e,t){let n=1/0,r=-1/0;for(let t of e)for(let e of t.mapping.maps)e.forEach((e,t,i,a)=>{i<n&&(n=i),a>r&&(r=a)});let i=t.doc.content.size;return n>r?{from:0,to:i}:{from:Math.max(0,n),to:Math.min(i,r)}}function rn(e,t){let n=[];return e.doc.nodesBetween(t.from,t.to,(t,r)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;if(t.childCount===0)return!1;let i=tn(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function an(){return new v({key:new y(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(B))return null;let r=rn(n,nn(e,n));if(r.length===0)return null;let i=n.tr.step(new A(r));return i.setMeta(B,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(on(e.state)),{}}})}function on(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function sn(){return p(an())}function cn(){return l({name:`mdImageView`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-anchor`},0],parseDOM:[{tag:`span.md-image-anchor`}]})}function ln(){return l({name:`mdImageSource`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-source`},0],parseDOM:[{tag:`span.md-image-source`}]})}function un(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function dn(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function fn(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function pn(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function mn(){return l({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function hn(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function gn(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function _n(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function vn(){return l({name:`mdWikilinkSource`,inclusive:!1,attrs:{target:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-source`},0],parseDOM:[{tag:`span.md-wikilink-source`}]})}function yn(){return l({name:`mdWikilinkView`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-anchor`},0],parseDOM:[{tag:`span.md-wikilink-anchor`}]})}function bn(){return l({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{default:``}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function xn(){return g(un(),dn(),fn(),pn(),mn(),hn(),gn(),_n(),vn(),yn(),ln(),cn(),bn())}function Sn(e,t=0){let n=t,r=0;for(let t=0;t<e.length;t++)e.charCodeAt(t)===96?(r++,r>n&&(n=r)):r=0;return n}const V={em:{node:P.Emphasis,delim:`*`},strong:{node:P.StrongEmphasis,delim:`**`},code:{node:P.InlineCode,delim:"`"},del:{node:P.Strikethrough,delim:`~~`}},Cn=new Set([P.EmphasisMark,P.CodeMark,P.LinkMark,P.StrikethroughMark]);function H(e){return[e.children[0],e.children.at(-1)]}function U(e){let{type:t,children:n}=e;if(t===P.Emphasis||t===P.StrongEmphasis||t===P.Strikethrough)return[n[0].to,n.at(-1).from];if(t===P.Link||t===P.Image){let e=n.find((e,t)=>t>0&&e.type===P.LinkMark);return e?[n[0].to,e.from]:null}return null}function W(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=U(r);return i&&i[0]<=t&&n<=i[1]?W(r.children,t,n):W(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function wn(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return wn(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const G=e=>e===` `||e===` `;function Tn(e,t,n){for(;t<n&&G(e[t]);)t++;for(;n>t&&G(e[n-1]);)n--;return[t,n]}function En(e,t,n,r){let i=N(M(e),e=>e.type===r.node||Cn.has(e.type));for(let r=t;r<n;r++)if(!G(e[r])&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function Dn(e,t,n,r,i){let a=M(e),o=N(a,e=>e.type===r.node);return i?An(e,o,t,n):On(e,a,o,t,n,r)}function On(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=W(t,r,i);for(let e of n)e.to===r&&(r=e.from),e.from===i&&(i=e.to)}let o=[];for(let e of n)if(r<=e.from&&e.to<=i){let[t,n]=H(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=kn(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function kn(e,t,n,r,i){if(i.node!==P.InlineCode)return[i.delim,i.delim];let a=e.slice(t,n);for(let e of[...r].sort((e,t)=>t.from-e.from))a=a.slice(0,e.from-t)+a.slice(e.to-t);let o="`".repeat(Sn(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function An(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=H(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=wn(a.children.slice(1,-1),s,c);s>t.to&&G(e[s-1]);)s--;for(;c<o.from&&G(e[c]);)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function jn(e,t,n){let{delim:r}=n,i=r.length;if(e.slice(t-i,t)===r&&e.startsWith(r,t)&&e[t-i-1]!==r[0]&&e[t+i]!==r[0])return{kind:`unwrap`,from:t-i,to:t+i};let a=M(e),o=N(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=H(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return Mn(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function Mn(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=U(n);return!e||t<e[0]||t>e[1]?!0:Mn(n.children,t)}return!1}function K(e){return(t,n)=>{if(t.selection.empty)return Nn(e,t,n);let{from:r,to:i,anchor:a,head:o}=t.selection,s=[];t.doc.nodesBetween(r,i,(t,n)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;let a=t.textContent,o=n+1,[c,l]=Tn(a,Math.max(r-o,0),Math.min(i-o,a.length));return c<l&&s.push({text:a,base:o,from:c,to:l,active:En(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>Dn(t.text,t.from,t.to,e,c).map(e=>({from:e.from+t.base,to:e.to+t.base,insert:e.insert})));if(l.length===0)return!1;if(n){let e=t.tr;l.sort((e,t)=>t.from-e.from||t.to-e.to);for(let t of l)t.insert?e.insertText(t.insert,t.from,t.to):e.delete(t.from,t.to);e.setSelection(b.create(e.doc,e.mapping.map(a,a<=o?1:-1),e.mapping.map(o,o<a?1:-1))),n(e.scrollIntoView())}return!0}}function Nn(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=jn(i.textContent,r.parentOffset,e);if(!a)return!1;if(n){let i=r.start(),o=t.tr;a.kind===`unwrap`&&o.delete(i+a.from,i+a.to),a.kind===`move`&&o.setSelection(b.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(b.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function Pn(){return o({toggleEm:()=>K(V.em),toggleStrong:()=>K(V.strong),toggleCode:()=>K(V.code),toggleDel:()=>K(V.del)})}function Fn(){return c({"Mod-b":K(V.strong),"Mod-i":K(V.em),"Mod-e":K(V.code),"Mod-Shift-x":K(V.del)})}function In(){return g(Pn(),Fn())}function Ln(){return d({type:`list`,attr:`marker`,default:null,splittable:!0,toDOM:e=>e===`)`||e===`*`||e===`+`?[`data-list-marker`,e]:null,parseDOM:e=>{let t=e.getAttribute(`data-list-marker`);return t===`)`||t===`*`||t===`+`?t:null}})}function Rn(){return d({type:`list`,attr:`taskMarker`,default:null,splittable:!0,toDOM:e=>e===`X`?[`data-list-task-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-list-task-marker`)===`X`?`X`:null})}function zn(){return g(Ne(),Ln(),Rn())}function Bn(){return f({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function Vn(){return g(_(Bn(),t.highest),Pe(),Fe())}const Hn=(e,t)=>{let{selection:n}=e;return!We(n)||!n.isColSelection()||!n.isRowSelection()?!1:Ue(e,t)};function Un(){return _(c({Backspace:Hn,Delete:Hn}),t.high)}function Wn(){return g(He(),Ve(),Ie(),Be(),ze({allowTableNodeSelection:!0}),Le(),Re(),Un())}function Gn(){return g(Vn(),de(),ft(),me(),ce(),zn(),_t(),Wn(),le(),yt(),xn(),dt(),sn(),In(),Wt(),ct({marks:[{name:`mdImageSource`,modes:[`hide`]},{name:`mdWikilinkSource`,modes:[`hide`,`focus`,`show`]}],selectedClass:`md-atomic-selected`}),a(),i(),s(),fe(),he(),pe())}function Kn(){return Gn()}function qn(e){let t;return p(new v({key:e.key,props:{handleDOMEvents:{mousedown:e=>{let{from:n,to:r,empty:i}=e.state.selection;return t={from:n,to:r,empty:i},!1}},handleClick:(n,r,i)=>{if(!i.target?.closest?.(e.selector))return!1;let a=e.findHitAt(n.state,r);return!a||!(ne?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e.preventDefault&&i.preventDefault(),e.onClick(a.payload,i),!0)}}}))}const Jn=new y(`meowdown-wikilink-click`);function Yn(e,t){let n=S(e,t,`mdWikilinkSource`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function Xn(e){return qn({key:Jn,selector:`.md-wikilink-label, .md-wikilink-source`,preventDefault:!1,findHitAt:(e,t)=>{let n=Yn(e,t);return n?{from:n.from,to:n.to,payload:n.target}:void 0},onClick:(t,n)=>e({target:t,event:n})})}const Zn=new y(`meowdown-link-click`);function Qn(e,t){let n=S(e,t,`mdLinkText`);if(n)return{from:n.from,to:n.to,href:n.mark.attrs.href}}function $n(e){return qn({key:Zn,selector:`.md-link`,preventDefault:!0,findHitAt:(e,t)=>{let n=Qn(e,t);return n?{from:n.from,to:n.to,payload:n.href}:void 0},onClick:(t,n)=>e({href:t,event:n})})}function er(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const tr=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,nr=/\/status(?:es)?\/(\d+)/;function rr(e){let t;try{t=new URL(e)}catch{return}if(tr.test(t.hostname))return nr.exec(t.pathname)?.[1]}const ir=e=>{let t=rr(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=er()?`dark`:`light`,n=document.createElement(`iframe`);return n.src=`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${e}&dnt=true`,n.title=`Tweet`,n.className=`md-embed md-embed-tweet`,n.dataset.testid=`tweet-embed`,n.loading=`lazy`,n.referrerPolicy=`strict-origin-when-cross-origin`,n.setAttribute(`frameborder`,`0`),ar(n),n}}};function ar(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=new MutationObserver(()=>{e.isConnected||(window.removeEventListener(`message`,t),n.disconnect())});n.observe(document.body,{childList:!0,subtree:!0})}const or=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,sr=/^(?:www\.)?youtu\.be$/i,cr=/^[\w-]{11}$/;function lr(e){let t;try{t=new URL(e)}catch{return}let n=null;if(sr.test(t.hostname))n=t.pathname.slice(1);else if(or.test(t.hostname)){let[,e,r]=t.pathname.split(`/`);t.pathname===`/watch`?n=t.searchParams.get(`v`):(e===`shorts`||e===`embed`||e===`live`)&&(n=r??null)}if(!n||!cr.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?ur(r):void 0;return{videoId:n,startSeconds:i}}function ur(e){if(/^\d+$/.test(e))return Number(e);let t=/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}const dr=[e=>{let t=lr(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{key:`youtube:${t.videoId}:${t.startSeconds??0}`,render:()=>{let e=document.createElement(`iframe`);return e.src=`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,e.title=`YouTube video`,e.className=`md-embed md-embed-youtube`,e.dataset.testid=`youtube-embed`,e.loading=`lazy`,e.referrerPolicy=`strict-origin-when-cross-origin`,e.setAttribute(`frameborder`,`0`),e.allow=`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,e.allowFullscreen=!0,e}}},ir];function fr(e){for(let t of dr){let n=t(e);if(n)return n}}function pr(e){return/^https?:\/\//i.test(e)?e:void 0}function mr(e,t,n){let r=fr(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-preview md-image-preview-embed`,e.appendChild(r.render()),e}let i=(n.resolveImageUrl??pr)(e);if(!i)return;let a=document.createElement(`span`);a.className=`md-image-preview md-image-preview-img`,a.dataset.testid=`image-preview`;let o=document.createElement(`img`);return o.src=i,o.alt=t,o.draggable=!1,a.appendChild(o),a}function hr(e){return t=>{let n=t.attrs,r=document.createElement(`span`);r.className=`md-image-view`;let i=document.createElement(`span`);i.className=`md-image-view-content`,r.appendChild(i);let a=mr(n.src,n.alt,e);return a&&(a.contentEditable=`false`,r.appendChild(a)),{dom:r,contentDOM:i,ignoreMutation:e=>!i.contains(e.target)}}}function gr(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const _r=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function vr(e,t,n,r=_r,i){let a=i;for(let i of t){let t;try{t=await n(i)}catch(e){r(e,i);continue}if(!t||e.isDestroyed)continue;let o=`![](${t})`,s=a==null?e.state.tr.insertText(o):e.state.tr.insertText(o,a);e.dispatch(s),a!=null&&(a+=o.length)}}function yr(e){return new v({key:new y(`image-input`),props:{handlePaste:(t,n)=>{let r=gr(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(vr(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=gr(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(vr(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function br(e={}){return g(u({name:`mdImageView`,constructor:hr(e)}),_(p(yr(e)),t.high))}const xr=new y(`meowdown-image-click`);function Sr(e,t){let n=S(e,t,`mdImageSource`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function Cr(e){return p(new v({key:xr,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Sr(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}const wr=new y(`meowdown-embed-paste`);function Tr(e){let t=e.trim();if(!(!t||/\s/.test(t)))return fr(t)?t:void 0}function Er(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
3
- `)}function Dr(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(Ge(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(Ge(i))}function Or(){return p(new v({key:wr,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=Er(t,n);if(!i)return!1;let a=Tr(i);return a?(Dr(e,a),!0):!1}}}))}const kr=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=te(e.schema,`list`),i=te(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(b.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Ar(){return _(c({Enter:kr}),t.high)}const jr={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`},Mr=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Nr=ve.map(e=>e.name).filter(e=>!Mr.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function Pr(e,t={}){let n=new Rr;return t.frontmatter&&Fr(e.attrs.frontmatter,n),zr(e,n),n.finish()}function Fr(e,t){e!==null&&(t.write(`---`),t.write(`
1
+ import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineHistory as s,defineKeymap as c,defineMarkSpec as l,defineMarkView as u,defineNodeAttr as d,defineNodeSpec as f,definePlugin as p,getMarkRange as m,getMarkType as ee,getNodeType as h,isApple as te,isAtBlockStart as ne,isTextSelection as re,toggleNode as ie,union as g,unsetBlockType as ae,withPriority as oe,withPriority as _,withSkipCodeBlock as se}from"@prosekit/core";import{defineBlockquote as ce}from"@prosekit/extensions/blockquote";import{defineCodeBlock as le,defineCodeBlockHighlight as ue}from"@prosekit/extensions/code-block";import{defineDoc as de}from"@prosekit/extensions/doc";import{defineGapCursor as fe}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as pe}from"@prosekit/extensions/mod-click-prevention";import{defineText as me}from"@prosekit/extensions/text";import{defineVirtualSelection as he}from"@prosekit/extensions/virtual-selection";import{Plugin as v,PluginKey as y,TextSelection as b}from"@prosekit/pm/state";import{Decoration as ge,DecorationSet as x}from"@prosekit/pm/view";import{LanguageDescription as _e}from"@codemirror/language";import{languages as ve}from"@codemirror/language-data";import{classHighlighter as ye}from"@lezer/highlight";import{createParser as be}from"prosemirror-highlight/lezer";import{defineHeadingCommands as xe,defineHeadingInputRule as Se,defineHeadingSpec as Ce}from"@prosekit/extensions/heading";import{defineHorizontalRule as we}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as Te,Step as Ee,StepResult as De,Transform as Oe}from"@prosekit/pm/transform";import{Mark as ke}from"@prosekit/pm/model";import{GFM as Ae,parser as je}from"@lezer/markdown";import{once as Me}from"@ocavue/utils";import{defineList as Ne}from"@prosekit/extensions/list";import{defineParagraphCommands as Pe,defineParagraphKeymap as Fe}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as Ie,defineTableCommands as Le,defineTableDropIndicator as Re,defineTableEditingPlugin as ze,defineTableHeaderCellSpec as Be,defineTableRowSpec as Ve,defineTableSpec as He,deleteTable as Ue,isCellSelection as We}from"@prosekit/extensions/table";import{closeHistory as Ge}from"@prosekit/pm/history";import{definePlaceholder as Ke}from"@prosekit/extensions/placeholder";import{defineReadonly as qe}from"@prosekit/extensions/readonly";function S(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return m(i,n)}const Je=new Set([`mdMark`,`mdLinkUri`]),Ye=new Set([`mdImageSource`,`mdWikilinkSource`]),Xe=new y(`mark-mode`);function Ze(e){return new v({key:Xe,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>tt(e):void 0,clipboardTextSerializer:e===`show`?void 0:et}})}function Qe(e){return p(Ze(e))}function $e(e){return Xe.getState(e)}function et(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(!e.marks.some(e=>Ye.has(e.type.name))&&e.marks.some(e=>Je.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
+ `)}function tt(e){let{selection:t}=e;if(!t.empty)return x.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return x.empty;let i=m(n,ee(e.schema,`mdPack`));return i?x.create(e.doc,[ge.inline(i.from,i.to,{class:`show`})]):x.empty}function C(e,t){let n=$e(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function w(e,t,n){for(let r of n){let n=S(e,t,r);if(n)return n}}function T(e,t,n){let r=w(e,t,n);return r&&r.to===t?r:void 0}function E(e,t,n){let r=w(e,t,n);return r&&r.from===t?r:void 0}function D(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=w(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function nt(e,t){return b.create(e.doc,t.from,t.to)}function rt(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!re(t.selection))return!1;let i=t.selection;if(i.empty){let e=E(t,i.from,r);if(e)return n?.(t.tr.setSelection(nt(t,e))),!0;if(T(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(b.create(t.doc,i.from+1))),!0)}return!1}let a=D(t,r);return a?(n?.(t.tr.setSelection(b.create(t.doc,a.to))),!0):!1}}function it(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!re(t.selection))return!1;let i=t.selection;if(i.empty){let e=T(t,i.from,r);return e?(n?.(t.tr.setSelection(nt(t,e))),!0):!1}let a=D(t,r);return a?(n?.(t.tr.setSelection(b.create(t.doc,a.from))),!0):!1}}function at(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=T(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!E(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function ot(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=E(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!T(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}function st(e,t){return new v({key:new y(`atomic-mark-selection-${t}`),props:{decorations:n=>{let r=C(e,n);if(r.length===0)return;let i=D(n,r);if(i)return x.create(n.doc,[ge.inline(i.from,i.to,{class:t})])}}})}function ct({marks:e,selectedClass:n}){return g(_(c({ArrowRight:rt(e),ArrowLeft:it(e),Backspace:at(e),Delete:ot(e)}),t.high),p(st(e,n)))}const O=new Map;async function lt(e){let t=_e.matchLanguageName(ve,e,!0);if(!t){O.set(e,null);return}let n=t.support;if(!n)try{n=await t.load()}catch(t){console.error(`[meowdown] Failed to load language "${e}":`,t),O.set(e,null)}if(O.has(e))return;if(!n){O.set(e,null);return}let r=be({parse:e=>n.language.parser.parse(e.content),highlighter:ye});O.set(e,r)}const ut=e=>{let t=e.language?.trim();if(!t)return[];let n=O.get(t);return n?n(e):n===null?[]:lt(t)};function dt(){return ue({parser:ut,nodeTypes:[`codeBlock`]})}function ft(){return d({type:`doc`,attr:`frontmatter`,default:null})}function pt(){return f({name:`heading`,whitespace:`pre`})}function mt(){return d({type:`heading`,attr:`setextUnderline`,default:null,toDOM:e=>e==null?null:[`data-setext-underline`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-setext-underline`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function k(e){return se(ie({type:`heading`,attrs:{level:e}}))}const ht=(e,t,n)=>ne(e,n)?.parent.type.name===`heading`?ae()(e,t,n):!1;function gt(){return c({"Mod-1":k(1),"Mod-2":k(2),"Mod-3":k(3),"Mod-4":k(4),"Mod-5":k(5),"Mod-6":k(6),Backspace:ht})}function _t(){return g(Ce(),pt(),mt(),Se(),xe(),gt())}function vt(){return d({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function yt(){return g(we(),vt())}function bt(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function xt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>ke.fromJSON(e,t))]}var A=class e extends Ee{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return De.ok(e);let t=e.content.size,n;for(let[r,i,a]of this.chunks){if(r>=i)continue;let o=Math.max(0,Math.min(r,t)),s=Math.max(o,Math.min(i,t));o>=s||e.nodesBetween(o,s,(t,r)=>{if(!t.isText)return!0;let i=Math.max(o,r),c=Math.min(s,r+t.nodeSize);if(i>=c)return!1;let l=t.marks;for(let t of l)t.isInSet(a)||(n??=new Oe(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new Oe(e),n.addMark(i,c,t));return!1})}return De.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return St;let t=this.chunks[0][0],n=this.chunks[0][1];for(let[,e]of this.chunks)e>n&&(n=e);let r=e.content.size,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));return new Te(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(bt)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>xt(t,e)))}};Ee.jsonID(`batchSetMark`,A);const St=new A([]),Ct=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),wt=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function Tt(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function Et(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!Ct.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!wt.test(e))return!1;return!0}function Dt(e){return e===32||e===9||e===10||e===13}const Ot=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,kt=/[\s(*_~]/;function At(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function jt(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function Mt(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&jt(e,t,`)`)>jt(e,t,`(`))t--;else if(n===`;`){let n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(0,t));if(!n)break;t=n.index}else break}return t}const Nt={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!At(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!kt.test(r))return-1;let i=Ot.exec(e.slice(n,e.end));if(!i)return-1;let a=Mt(i[0]);return a===0||!Et(Tt(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function Pt(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===95||e>127&&/[\p{L}\p{N}]/u.test(String.fromCharCode(e))}function Ft(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const It={defineNodes:[{name:`Hashtag`}],parseInline:[{name:`Hashtag`,parse(e,t,n){if(t!==35||!/\s|^$/.test(e.slice(n-1,n)))return-1;let r=n+1,i=!1;for(;r<e.end;){let t=e.char(r);if(!Pt(t))break;i||=Ft(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},Lt={defineNodes:[{name:`Wikilink`},{name:`WikilinkMark`}],parseInline:[{name:`Wikilink`,before:`Link`,parse(e,t,n){if(t!==91||e.char(n+1)!==91)return-1;let r=!1;for(let t=n+2;t<e.end-1;t++){let i=e.char(t);if(i===93){if(e.char(t+1)!==93||!r)return-1;let i=t+2;return e.addElement(e.elt(`Wikilink`,n,i,[e.elt(`WikilinkMark`,n,n+2),e.elt(`WikilinkMark`,t,i)]))}if(i===91||i===10)return-1;i!==32&&i!==9&&(r=!0)}return-1}}]};function Rt(e){return e.end}const j=je.configure([Ae,It,Lt,Nt]),zt=j.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:Rt}]});function M(e){return j.parseInline(e,0)}function N(e,t,n=[]){for(let r of e)t(r)&&n.push(r),N(r.children,t,n);return n}function Bt(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const P=Bt(j);function Vt(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function Ht(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function Ut(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view`;let r=document.createElement(`span`);n.appendChild(r);let i=document.createElement(`span`);return i.className=`md-wikilink-label`,i.contentEditable=`false`,i.dataset.testid=`wikilink`,i.textContent=t.display||t.target,n.appendChild(i),{dom:n,contentDOM:r,ignoreMutation:e=>!r.contains(e.target)}}}function Wt(){return u({name:`mdWikilinkView`,constructor:Ut()})}const F=new Map([[P.Emphasis,`mdEm`],[P.StrongEmphasis,`mdStrong`],[P.InlineCode,`mdCode`],[P.Strikethrough,`mdDel`],[P.EmphasisMark,`mdMark`],[P.CodeMark,`mdMark`],[P.LinkMark,`mdMark`],[P.StrikethroughMark,`mdMark`],[P.URL,`mdLinkUri`],[P.Hashtag,`mdTag`],[P.WikilinkMark,`mdMark`]]);function Gt(e,t){let n=M(t),r=[];return I(n,[],0,t.length,t,e,r),r}function Kt(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||Et(Tt(e)))return`https://${e}`}function I(e,t,n,r,i,a,o){let s=n;for(let n of e){n.from>s&&R(o,s,n.from,t);let e=n.type;if(e===P.Link)qt(n,t,i,a,o);else if(e===P.Image)Jt(n,t,i,a,o);else if(e===P.Wikilink)L(n,t,i,a,o);else if(e===P.URL){let e=Kt(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();R(o,n.from,n.to,[...t,r])}else{let r;e===P.Emphasis?r=`italic`:e===P.StrongEmphasis?r=`bold`:e===P.InlineCode?r=`code`:e===P.Strikethrough?r=`strike`:e===P.Autolink&&(r=`autolink`);let s=r?[...t,a.mdPack.create({key:r})]:t,c=F.get(e),l=c?[...s,a[c].create()]:s;n.children.length===0?R(o,n.from,n.to,l):I(n.children,l,n.from,n.to,i,a,o)}s=n.to}s<r&&R(o,s,r,t)}function qt(e,t,n,r,i){let a=-1,o=null,s=0;for(let t of e.children)t.type===P.LinkMark?(s++,s===2&&(a=t.from)):t.type===P.URL&&o===null&&(o=t);let c=o?n.slice(o.from,o.to):``,l=c?r.mdLinkText.create({href:c}):null,u=e=>a>=0&&e<a&&l!==null,d=r.mdPack.create({key:`link_${c}`}),f=[...t,d],p=e.from;for(let t of e.children){if(t.from>p){let e=u(p)?[...f,l]:f;R(i,p,t.from,e)}let e=u(t.from)?[...f,l]:f;if(t.type===P.Wikilink){L(t,e,n,r,i),p=t.to;continue}let a=F.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?R(i,t.from,t.to,o):I(t.children,o,t.from,t.to,n,r,i),p=t.to}p<e.to&&R(i,p,e.to,f)}function Jt(e,t,n,r,i){let a=e.children.find(e=>e.type===P.URL);if(!a){qt(e,t,n,r,i);return}let o=e.children.filter(e=>e.type===P.LinkMark),s=n.slice(a.from,a.to),c=o.length>=2?n.slice(o[0].to,o[1].from):``,l=r.mdImageSource.create({src:s,alt:c}),u=r.mdImageView.create({src:s,alt:c}),d=r.mdPack.create({key:`image_${s}`}),f=e.to-1,p=e=>e>=f?[...t,d,l,u]:[...t,d,l],m=e.from;for(let t of e.children){t.from>m&&R(i,m,t.from,p(m));let e=F.get(t.type),a=e?[...p(t.from),r[e].create()]:p(t.from);t.children.length===0?R(i,t.from,t.to,a):I(t.children,a,t.from,t.to,n,r,i),m=t.to}m<e.to&&R(i,m,e.to,p(m))}function L(e,t,n,r,i){let{target:a,display:o}=Ht(n.slice(e.from,e.to)),s=r.mdWikilinkSource.create({target:a}),c=r.mdWikilinkView.create({target:a,display:o}),l=e.to-1,u=e=>e>=l?[...t,s,c]:[...t,s],d=e.from;for(let t of e.children){t.from>d&&R(i,d,t.from,u(d));let e=r.mdMark.create();t.from<l&&t.to>l?(R(i,t.from,l,[...u(t.from),e]),R(i,l,t.to,[...u(l),e])):R(i,t.from,t.to,[...u(t.from),e]),d=t.to}d<e.to&&R(i,d,e.to,u(d))}function R(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&Vt(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const Yt=Me(()=>{let e=Kn().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),Xt=Me(()=>r(Yt())),z=`meowdown_mark_builders`;function Zt(e){let t=e.cached[z];if(t)return t;let r=n(e);return e.cached[z]=r,r}const B=`inline-marks-applied`,Qt=new WeakMap;let $t=0,en=0;function tn(e,t,n){let r=Qt.get(e);if(r?en++:($t++,r=Gt(Zt(n),e.textContent),Qt.set(e,r)),t===0)return r;let i=[];for(let[e,n,a]of r)i.push([e+t,n+t,a]);return i}function nn(e,t){let n=1/0,r=-1/0;for(let t of e)for(let e of t.mapping.maps)e.forEach((e,t,i,a)=>{i<n&&(n=i),a>r&&(r=a)});let i=t.doc.content.size;return n>r?{from:0,to:i}:{from:Math.max(0,n),to:Math.min(i,r)}}function rn(e,t){let n=[];return e.doc.nodesBetween(t.from,t.to,(t,r)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;if(t.childCount===0)return!1;let i=tn(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function an(){return new v({key:new y(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(B))return null;let r=rn(n,nn(e,n));if(r.length===0)return null;let i=n.tr.step(new A(r));return i.setMeta(B,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(on(e.state)),{}}})}function on(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function sn(){return p(an())}function cn(){return l({name:`mdImageView`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-anchor`},0],parseDOM:[{tag:`span.md-image-anchor`}]})}function ln(){return l({name:`mdImageSource`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-source`},0],parseDOM:[{tag:`span.md-image-source`}]})}function un(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function dn(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function fn(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function pn(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function mn(){return l({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function hn(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function gn(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function _n(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function vn(){return l({name:`mdWikilinkSource`,inclusive:!1,attrs:{target:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-source`},0],parseDOM:[{tag:`span.md-wikilink-source`}]})}function yn(){return l({name:`mdWikilinkView`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-anchor`},0],parseDOM:[{tag:`span.md-wikilink-anchor`}]})}function bn(){return l({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{default:``}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function xn(){return g(un(),dn(),fn(),pn(),mn(),hn(),gn(),_n(),vn(),yn(),ln(),cn(),bn())}function Sn(e,t=0){let n=t,r=0;for(let t=0;t<e.length;t++)e.charCodeAt(t)===96?(r++,r>n&&(n=r)):r=0;return n}const V={em:{node:P.Emphasis,delim:`*`},strong:{node:P.StrongEmphasis,delim:`**`},code:{node:P.InlineCode,delim:"`"},del:{node:P.Strikethrough,delim:`~~`}},Cn=new Set([P.EmphasisMark,P.CodeMark,P.LinkMark,P.StrikethroughMark]);function H(e){return[e.children[0],e.children.at(-1)]}function wn(e){let{type:t,children:n}=e;if(t===P.Emphasis||t===P.StrongEmphasis||t===P.Strikethrough)return[n[0].to,n.at(-1).from];if(t===P.Link||t===P.Image){let e=n.find((e,t)=>t>0&&e.type===P.LinkMark);return e?[n[0].to,e.from]:null}return null}function U(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=wn(r);return i&&i[0]<=t&&n<=i[1]?U(r.children,t,n):U(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function W(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return W(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const G=e=>e===` `||e===` `;function Tn(e,t,n){for(;t<n&&G(e[t]);)t++;for(;n>t&&G(e[n-1]);)n--;return[t,n]}function En(e,t,n,r){let i=N(M(e),e=>e.type===r.node||Cn.has(e.type));for(let r=t;r<n;r++)if(!G(e[r])&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function Dn(e,t,n,r,i){let a=M(e),o=N(a,e=>e.type===r.node);return i?An(e,o,t,n):On(e,a,o,t,n,r)}function On(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=U(t,r,i);for(let e of n)e.to===r&&(r=e.from),e.from===i&&(i=e.to)}let o=[];for(let e of n)if(r<=e.from&&e.to<=i){let[t,n]=H(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=kn(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function kn(e,t,n,r,i){if(i.node!==P.InlineCode)return[i.delim,i.delim];let a=e.slice(t,n);for(let e of[...r].sort((e,t)=>t.from-e.from))a=a.slice(0,e.from-t)+a.slice(e.to-t);let o="`".repeat(Sn(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function An(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=H(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=W(a.children.slice(1,-1),s,c);s>t.to&&G(e[s-1]);)s--;for(;c<o.from&&G(e[c]);)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function jn(e,t,n){let{delim:r}=n,i=r.length;if(e.slice(t-i,t)===r&&e.startsWith(r,t)&&e[t-i-1]!==r[0]&&e[t+i]!==r[0])return{kind:`unwrap`,from:t-i,to:t+i};let a=M(e),o=N(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=H(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return Mn(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function Mn(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=wn(n);return!e||t<e[0]||t>e[1]?!0:Mn(n.children,t)}return!1}function K(e){return(t,n)=>{if(t.selection.empty)return Nn(e,t,n);let{from:r,to:i,anchor:a,head:o}=t.selection,s=[];t.doc.nodesBetween(r,i,(t,n)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;let a=t.textContent,o=n+1,[c,l]=Tn(a,Math.max(r-o,0),Math.min(i-o,a.length));return c<l&&s.push({text:a,base:o,from:c,to:l,active:En(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>Dn(t.text,t.from,t.to,e,c).map(e=>({from:e.from+t.base,to:e.to+t.base,insert:e.insert})));if(l.length===0)return!1;if(n){let e=t.tr;l.sort((e,t)=>t.from-e.from||t.to-e.to);for(let t of l)t.insert?e.insertText(t.insert,t.from,t.to):e.delete(t.from,t.to);e.setSelection(b.create(e.doc,e.mapping.map(a,a<=o?1:-1),e.mapping.map(o,o<a?1:-1))),n(e.scrollIntoView())}return!0}}function Nn(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=jn(i.textContent,r.parentOffset,e);if(!a)return!1;if(n){let i=r.start(),o=t.tr;a.kind===`unwrap`&&o.delete(i+a.from,i+a.to),a.kind===`move`&&o.setSelection(b.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(b.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function Pn(){return o({toggleEm:()=>K(V.em),toggleStrong:()=>K(V.strong),toggleCode:()=>K(V.code),toggleDel:()=>K(V.del)})}function Fn(){return c({"Mod-b":K(V.strong),"Mod-i":K(V.em),"Mod-e":K(V.code),"Mod-Shift-x":K(V.del)})}function In(){return g(Pn(),Fn())}function Ln(){return d({type:`list`,attr:`marker`,default:null,splittable:!0,toDOM:e=>e===`)`||e===`*`||e===`+`?[`data-list-marker`,e]:null,parseDOM:e=>{let t=e.getAttribute(`data-list-marker`);return t===`)`||t===`*`||t===`+`?t:null}})}function Rn(){return d({type:`list`,attr:`taskMarker`,default:null,splittable:!0,toDOM:e=>e===`X`?[`data-list-task-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-list-task-marker`)===`X`?`X`:null})}function zn(){return g(Ne(),Ln(),Rn())}function Bn(){return f({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function Vn(){return g(_(Bn(),t.highest),Pe(),Fe())}const Hn=(e,t)=>{let{selection:n}=e;return!We(n)||!n.isColSelection()||!n.isRowSelection()?!1:Ue(e,t)};function Un(){return _(c({Backspace:Hn,Delete:Hn}),t.high)}function Wn(){return g(He(),Ve(),Ie(),Be(),ze({allowTableNodeSelection:!0}),Le(),Re(),Un())}function Gn(){return g(Vn(),de(),ft(),me(),ce(),zn(),_t(),Wn(),le(),yt(),xn(),dt(),sn(),In(),Wt(),ct({marks:[{name:`mdImageSource`,modes:[`hide`]},{name:`mdWikilinkSource`,modes:[`hide`,`focus`,`show`]}],selectedClass:`md-atomic-selected`}),a(),i(),s(),fe(),he(),pe())}function Kn(){return Gn()}function qn(e){let t;return p(new v({key:e.key,props:{handleDOMEvents:{mousedown:e=>{let{from:n,to:r,empty:i}=e.state.selection;return t={from:n,to:r,empty:i},!1}},handleClick:(n,r,i)=>{if(!i.target?.closest?.(e.selector))return!1;let a=e.findHitAt(n.state,r);return!a||!(te?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e.preventDefault&&i.preventDefault(),e.onClick(a.payload,i),!0)}}}))}const Jn=new y(`meowdown-wikilink-click`);function Yn(e,t){let n=S(e,t,`mdWikilinkSource`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function Xn(e){return qn({key:Jn,selector:`.md-wikilink-label, .md-wikilink-source`,preventDefault:!1,findHitAt:(e,t)=>{let n=Yn(e,t);return n?{from:n.from,to:n.to,payload:n.target}:void 0},onClick:(t,n)=>e({target:t,event:n})})}const Zn=new y(`meowdown-link-click`);function Qn(e,t){let n=S(e,t,`mdLinkText`);if(n)return{from:n.from,to:n.to,href:n.mark.attrs.href}}function $n(e){return qn({key:Zn,selector:`.md-link`,preventDefault:!0,findHitAt:(e,t)=>{let n=Qn(e,t);return n?{from:n.from,to:n.to,payload:n.href}:void 0},onClick:(t,n)=>e({href:t,event:n})})}function er(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const tr=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,nr=/\/status(?:es)?\/(\d+)/;function rr(e){let t;try{t=new URL(e)}catch{return}if(tr.test(t.hostname))return nr.exec(t.pathname)?.[1]}const ir=e=>{let t=rr(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=er()?`dark`:`light`,n=document.createElement(`iframe`);return n.src=`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${e}&dnt=true`,n.title=`Tweet`,n.className=`md-embed md-embed-tweet`,n.dataset.testid=`tweet-embed`,n.loading=`lazy`,n.referrerPolicy=`strict-origin-when-cross-origin`,n.setAttribute(`frameborder`,`0`),ar(n),n}}};function ar(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=new MutationObserver(()=>{e.isConnected||(window.removeEventListener(`message`,t),n.disconnect())});n.observe(document.body,{childList:!0,subtree:!0})}const or=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,sr=/^(?:www\.)?youtu\.be$/i,cr=/^[\w-]{11}$/;function lr(e){let t;try{t=new URL(e)}catch{return}let n=null;if(sr.test(t.hostname))n=t.pathname.slice(1);else if(or.test(t.hostname)){let[,e,r]=t.pathname.split(`/`);t.pathname===`/watch`?n=t.searchParams.get(`v`):(e===`shorts`||e===`embed`||e===`live`)&&(n=r??null)}if(!n||!cr.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?ur(r):void 0;return{videoId:n,startSeconds:i}}function ur(e){if(/^\d+$/.test(e))return Number(e);let t=/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}const dr=[e=>{let t=lr(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{key:`youtube:${t.videoId}:${t.startSeconds??0}`,render:()=>{let e=document.createElement(`iframe`);return e.src=`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,e.title=`YouTube video`,e.className=`md-embed md-embed-youtube`,e.dataset.testid=`youtube-embed`,e.loading=`lazy`,e.referrerPolicy=`strict-origin-when-cross-origin`,e.setAttribute(`frameborder`,`0`),e.allow=`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,e.allowFullscreen=!0,e}}},ir];function fr(e){for(let t of dr){let n=t(e);if(n)return n}}function pr(e){return/^https?:\/\//i.test(e)?e:void 0}function mr(e,t,n){let r=fr(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-preview md-image-preview-embed`,e.appendChild(r.render()),e}let i=(n.resolveImageUrl??pr)(e);if(!i)return;let a=document.createElement(`span`);a.className=`md-image-preview md-image-preview-img`,a.dataset.testid=`image-preview`;let o=document.createElement(`img`);return o.src=i,o.alt=t,o.draggable=!1,a.appendChild(o),a}function hr(e){return t=>{let n=t.attrs,r=document.createElement(`span`);r.className=`md-image-view`;let i=document.createElement(`span`);i.className=`md-image-view-content`,r.appendChild(i);let a=mr(n.src,n.alt,e);return a&&(a.contentEditable=`false`,r.appendChild(a)),{dom:r,contentDOM:i,ignoreMutation:e=>!i.contains(e.target)}}}function gr(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const _r=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function vr(e,t,n,r=_r,i){let a=i;for(let i of t){let t;try{t=await n(i)}catch(e){r(e,i);continue}if(!t||e.isDestroyed)continue;let o=`![](${t})`,s=a==null?e.state.tr.insertText(o):e.state.tr.insertText(o,a);e.dispatch(s),a!=null&&(a+=o.length)}}function yr(e){return new v({key:new y(`image-input`),props:{handlePaste:(t,n)=>{let r=gr(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(vr(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=gr(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(vr(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function br(e={}){return g(u({name:`mdImageView`,constructor:hr(e)}),_(p(yr(e)),t.high))}const xr=new y(`meowdown-image-click`);function Sr(e,t){let n=S(e,t,`mdImageSource`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function Cr(e){return p(new v({key:xr,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Sr(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}const wr=new y(`meowdown-embed-paste`);function Tr(e){let t=e.trim();if(!(!t||/\s/.test(t)))return fr(t)?t:void 0}function Er(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
3
+ `)}function Dr(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(Ge(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(Ge(i))}function Or(){return p(new v({key:wr,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=Er(t,n);if(!i)return!1;let a=Tr(i);return a?(Dr(e,a),!0):!1}}}))}const kr=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=h(e.schema,`list`),i=h(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(b.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Ar(){return _(c({Enter:kr}),t.high)}const jr={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`},Mr=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Nr=ve.map(e=>e.name).filter(e=>!Mr.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function Pr(e,t={}){let n=new Rr;return t.frontmatter&&Fr(e.attrs.frontmatter,n),zr(e,n),n.finish()}function Fr(e,t){e!==null&&(t.write(`---`),t.write(`
4
4
  `),e!==``&&(t.write(e),t.write(`
5
5
  `)),t.write(`---`),t.closeBlock())}const Ir=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function Lr(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){J(e,t);let i=n.level===1?`=`:`-`;t.write(`
6
6
  `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(Ir[n.level]??`# `),J(e,t),t.closeBlock()}var Rr=class{constructor(){this.parts=[],this.linePrefix=``,this.pendingFirst=null,this.atLineStart=!0,this.deferredBlankPrefix=null}write(e){if(e===``)return;if(this.emitDeferredBlankLine(),this.atLineStart&&=(this.parts.push(this.pendingFirst??this.linePrefix),this.pendingFirst=null,!1),!e.includes(`
@@ -19,5 +19,5 @@ import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as
19
19
  `,t-1)+1,r=0;for(let i=n;i<t;i++)r+=e.charCodeAt(i)===9?4-r%4:1;return r}function Qr(e,t){let n=0,r=0;for(;r<e.length&&n<t;){let t=e.charCodeAt(r);if(t===32)n+=1;else if(t===9)n+=4-n%4;else break;r++}return e.slice(r)}function $r(e,t){return t===0||!e.includes(`
20
20
  `)?e:e.split(`
21
21
  `).map((e,n)=>n===0?e:Qr(e,t)).join(`
22
- `)}function Q(e,t,n){return e.paragraph($r(t,n))}function $(e,t,n){let r=t.from,i=t.to,a=Z(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===P.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,Dt(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),Q(e,o,a)}return Q(e,n.slice(r,i),a)}function ei(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===P.QuoteMark)continue;r.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function ti(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===P.ListItem&&i.push(ni(e,t,n,r));while(t.nextSibling());t.parent()}return i}function ni(e,t,n,r){let i=[],a,o,s,c;if(t.firstChild()){do{if(t.type.id===P.ListMark){if(r===`ordered`){let e=n.charCodeAt(t.to-1);e===41?c=`)`:e===46&&(c=`.`);let r=Number.parseInt(n.slice(t.from,t.to),10);s=Number.isFinite(r)?r:1}else{let e=n.charCodeAt(t.from);c=e===42?`*`:e===43?`+`:`-`}continue}if(r===`bullet`&&t.type.id===P.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===P.TaskMarker){let e=n.charCodeAt(t.from+1);e===120?(a=!0,o=`x`):e===88&&(a=!0,o=`X`),r=t.to}t.parent()}Dt(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(Q(e,c,Z(n,r)));continue}i.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}return e.list({kind:a==null?r:`task`,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:!1,marker:c,taskMarker:o},i)}function ri(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case P.CodeInfo:r=n.slice(t.from,t.to);break;case P.CodeText:i=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function ii(e,t,n){let r=0;if(t.firstChild()){do t.type.id===P.TableDelimiter&&(r=ai(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===P.TableHeader?i.push(oi(e,t,n,!0,r)):a===P.TableRow&&i.push(oi(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function ai(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function oi(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===P.TableDelimiter,r=0;do if(t.type.id===P.TableDelimiter)r++;else if(t.type.id===P.TableCell){let o=r-+!!e;o>=0&&o<i&&(a[o]=n.slice(t.from,t.to).trim().replaceAll(String.raw`\|`,`|`))}while(t.nextSibling());t.parent()}let o=a.map(t=>{let n=e.paragraph(t);return r?e.tableHeaderCell(n):e.tableCell(n)});return e.tableRow(o)}function si(e){return e.replace(/\n+$/u,``)}function ci(e){return e.split(`
23
- `).filter(e=>e.trim()!==``)}function li(e,t={}){let n=Pr(qr(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(si(n)===si(e))return`exact`;let r=ci(e),i=ci(n);return r.length===i.length&&r.every((e,t)=>e.trimEnd()===i[t].trimEnd())?`normalizing`:`lossy`}export{jr as EDITOR_KEY_BINDINGS,e as Priority,li as checkRoundTrip,Nr as codeBlockLanguages,Ar as defineBulletAfterHeading,Kn as defineEditorExtension,Or as defineEmbedPaste,br as defineImage,Cr as defineImageClickHandler,$n as defineLinkClickHandler,Qe as defineMarkMode,Ke as definePlaceholder,qe as defineReadonly,Xn as defineWikilinkClickHandler,Pr as docToMarkdown,qr as markdownToDoc,oe as withPriority};
22
+ `)}function Q(e,t,n){return e.paragraph($r(t,n))}function $(e,t,n){let r=t.from,i=t.to,a=Z(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===P.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,Dt(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),Q(e,o,a)}return Q(e,n.slice(r,i),a)}function ei(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===P.QuoteMark)continue;r.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function ti(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===P.ListItem&&i.push(ni(e,t,n,r));while(t.nextSibling());t.parent()}return i}function ni(e,t,n,r){let i=[],a,o,s,c;if(t.firstChild()){do{if(t.type.id===P.ListMark){if(r===`ordered`){let e=n.charCodeAt(t.to-1);e===41?c=`)`:e===46&&(c=`.`);let r=Number.parseInt(n.slice(t.from,t.to),10);s=Number.isFinite(r)?r:1}else{let e=n.charCodeAt(t.from);c=e===42?`*`:e===43?`+`:`-`}continue}if(r===`bullet`&&t.type.id===P.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===P.TaskMarker){let e=n.charCodeAt(t.from+1);e===120?(a=!0,o=`x`):e===88&&(a=!0,o=`X`),r=t.to}t.parent()}Dt(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(Q(e,c,Z(n,r)));continue}i.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}return e.list({kind:a==null?r:`task`,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:!1,marker:c,taskMarker:o},i)}function ri(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case P.CodeInfo:r=n.slice(t.from,t.to);break;case P.CodeText:i=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function ii(e,t,n){let r=0;if(t.firstChild()){do t.type.id===P.TableDelimiter&&(r=ai(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===P.TableHeader?i.push(oi(e,t,n,!0,r)):a===P.TableRow&&i.push(oi(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function ai(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function oi(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===P.TableDelimiter,r=0;do if(t.type.id===P.TableDelimiter)r++;else if(t.type.id===P.TableCell){let o=r-+!!e;o>=0&&o<i&&(a[o]=n.slice(t.from,t.to).trim().replaceAll(String.raw`\|`,`|`))}while(t.nextSibling());t.parent()}let o=a.map(t=>{let n=e.paragraph(t);return r?e.tableHeaderCell(n):e.tableCell(n)});return e.tableRow(o)}function si(e){return e.replace(/\n+$/u,``)}function ci(e){return/^[\s>]*$/u.test(e)}function li(e){return e.split(`
23
+ `).filter(e=>!ci(e))}function ui(e,t={}){let n=Pr(qr(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(si(n)===si(e))return`exact`;let r=li(e),i=li(n);return r.length===i.length&&r.every((e,t)=>e.trimEnd()===i[t].trimEnd())?`normalizing`:`lossy`}export{jr as EDITOR_KEY_BINDINGS,e as Priority,ui as checkRoundTrip,Nr as codeBlockLanguages,Ar as defineBulletAfterHeading,Kn as defineEditorExtension,Or as defineEmbedPaste,br as defineImage,Cr as defineImageClickHandler,$n as defineLinkClickHandler,Qe as defineMarkMode,Ke as definePlaceholder,qe as defineReadonly,Xn as defineWikilinkClickHandler,Pr as docToMarkdown,qr as markdownToDoc,oe as withPriority};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/core",
3
3
  "type": "module",
4
- "version": "0.17.0",
4
+ "version": "0.17.1",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",