@meowdown/core 0.11.0 → 0.11.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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
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,definePlugin as u,getMarkType as d,getNodeType as f,isApple as ee,isAtBlockStart as te,toggleNode as ne,union as p,unsetBlockType as re,withPriority as ie,withPriority as m,withSkipCodeBlock as ae}from"@prosekit/core";import{defineBlockquote as oe}from"@prosekit/extensions/blockquote";import{defineCodeBlock as se,defineCodeBlockHighlight as ce}from"@prosekit/extensions/code-block";import{defineDoc as le}from"@prosekit/extensions/doc";import{defineGapCursor as ue}from"@prosekit/extensions/gap-cursor";import{defineHorizontalRule as de}from"@prosekit/extensions/horizontal-rule";import{defineList as fe}from"@prosekit/extensions/list";import{defineModClickPrevention as pe}from"@prosekit/extensions/mod-click-prevention";import{defineParagraph as me}from"@prosekit/extensions/paragraph";import{defineText as he}from"@prosekit/extensions/text";import{defineVirtualSelection as ge}from"@prosekit/extensions/virtual-selection";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{Plugin as h,PluginKey as g,TextSelection as _}from"@prosekit/pm/state";import{ReplaceStep as we,Step as v,StepResult as y,Transform as b}from"@prosekit/pm/transform";import{Mark as Te}from"@prosekit/pm/model";import{GFM as Ee,parser as De}from"@lezer/markdown";import{once as x}from"@ocavue/utils";import{defineTableCellSpec as Oe,defineTableCommands as ke,defineTableDropIndicator as Ae,defineTableEditingPlugin as je,defineTableHeaderCellSpec as Me,defineTableRowSpec as Ne,defineTableSpec as Pe}from"@prosekit/extensions/table";import{Decoration as S,DecorationSet as C}from"@prosekit/pm/view";import{closeHistory as Fe}from"@prosekit/pm/history";import{definePlaceholder as Ie}from"@prosekit/extensions/placeholder";import{defineReadonly as Le}from"@prosekit/extensions/readonly";const w=new Map;async function Re(e){let t=_e.matchLanguageName(ve,e,!0);if(!t){w.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),w.set(e,null)}if(w.has(e))return;if(!n){w.set(e,null);return}let r=be({parse:e=>n.language.parser.parse(e.content),highlighter:ye});w.set(e,r)}const ze=e=>{let t=e.language?.trim();if(!t)return[];let n=w.get(t);return n?n(e):n===null?[]:Re(t)};function Be(){return ce({parser:ze,nodeTypes:[`codeBlock`]})}function T(e){return ae(ne({type:`heading`,attrs:{level:e}}))}const Ve=(e,t,n)=>te(e,n)?.parent.type.name===`heading`?re()(e,t,n):!1;function He(){return c({"Mod-1":T(1),"Mod-2":T(2),"Mod-3":T(3),"Mod-4":T(4),"Mod-5":T(5),"Mod-6":T(6),Backspace:Ve})}function Ue(){return p(Ce(),Se(),xe(),He())}function We(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function Ge(e,t){let[n,r,i]=t;return[n,r,i.map(t=>Te.fromJSON(e,t))]}var E=class e extends v{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return y.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 b(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new b(e),n.addMark(i,c,t));return!1})}return y.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return Ke;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 we(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(We)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>Ge(t,e)))}};v.jsonID(`batchSetMark`,E);const Ke=new E([]);function qe(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 Je(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const Ye={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(!qe(t))break;i||=Je(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},Xe={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 Ze(e){return e.end}const D=De.configure([Ee,Ye,Xe]),Qe=D.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:Ze}]});function O(e){return D.parseInline(e,0)}function k(e,t,n=[]){for(let r of e)t(r)&&n.push(r),k(r.children,t,n);return n}function $e(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const A=$e(D);function et(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}const j=new Map([[A.Emphasis,`mdEm`],[A.StrongEmphasis,`mdStrong`],[A.InlineCode,`mdCode`],[A.Strikethrough,`mdDel`],[A.EmphasisMark,`mdMark`],[A.CodeMark,`mdMark`],[A.LinkMark,`mdMark`],[A.StrikethroughMark,`mdMark`],[A.URL,`mdLinkUri`],[A.Hashtag,`mdTag`],[A.Wikilink,`mdWikilink`],[A.WikilinkMark,`mdMark`]]);function tt(e,t){let n=O(t),r=[];return M(n,[],0,t.length,t,e,r),r}function nt(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))return`https://${e}`}function M(e,t,n,r,i,a,o){let s=n;for(let n of e){if(n.from>s&&N(o,s,n.from,t),n.type===A.Link||n.type===A.Image)rt(n,t,i,a,o);else if(n.type===A.URL){let e=nt(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();N(o,n.from,n.to,[...t,r])}else{let e=j.get(n.type),r=e?[...t,a[e].create()]:t;n.children.length===0?N(o,n.from,n.to,r):M(n.children,r,n.from,n.to,i,a,o)}s=n.to}s<r&&N(o,s,r,t)}function rt(e,t,n,r,i){let a=-1,o=null,s=0;for(let t of e.children)t.type===A.LinkMark?(s++,s===2&&(a=t.from)):t.type===A.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=e.from;for(let a of e.children){if(a.from>d){let e=u(d)?[...t,l]:t;N(i,d,a.from,e)}let e=u(a.from)?[...t,l]:t,o=j.get(a.type),s=o?[...e,r[o].create()]:e;a.children.length===0?N(i,a.from,a.to,s):M(a.children,s,a.from,a.to,n,r,i),d=a.to}d<e.to&&N(i,d,e.to,t)}function N(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&et(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const it=x(()=>{let e=U().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),at=x(()=>r(it())),ot=`meowdown_mark_builders`;function st(e){let t=e.cached[ot];if(t)return t;let r=n(e);return e.cached[ot]=r,r}const ct=`inline-marks-applied`,lt=new WeakMap;let ut=0,dt=0;function ft(e,t,n){let r=lt.get(e);if(r?dt++:(ut++,r=tt(st(n),e.textContent),lt.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 pt(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 mt(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=ft(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function ht(){return new h({key:new g(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(ct))return null;let r=mt(n,pt(e,n));if(r.length===0)return null;let i=n.tr.step(new E(r));return i.setMeta(ct,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(gt(e.state)),{}}})}function gt(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function _t(){return u(ht())}function vt(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function yt(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function bt(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function xt(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function St(){return l({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function Ct(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function wt(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function Tt(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function Et(){return l({name:`mdWikilink`,inclusive:!1,toDOM:()=>[`span`,{class:`md-wikilink`},0],parseDOM:[{tag:`span.md-wikilink`}]})}function Dt(){return p(vt(),yt(),bt(),xt(),St(),Ct(),wt(),Tt(),Et())}function P(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 F={em:{node:A.Emphasis,delim:`*`},strong:{node:A.StrongEmphasis,delim:`**`},code:{node:A.InlineCode,delim:"`"},del:{node:A.Strikethrough,delim:`~~`}},Ot=new Set([A.EmphasisMark,A.CodeMark,A.LinkMark,A.StrikethroughMark]);function I(e){return[e.children[0],e.children.at(-1)]}function L(e){let{type:t,children:n}=e;if(t===A.Emphasis||t===A.StrongEmphasis||t===A.Strikethrough)return[n[0].to,n.at(-1).from];if(t===A.Link||t===A.Image){let e=n.find((e,t)=>t>0&&e.type===A.LinkMark);return e?[n[0].to,e.from]:null}return null}function R(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=L(r);return i&&i[0]<=t&&n<=i[1]?R(r.children,t,n):R(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function z(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return z(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const B=e=>e===` `||e===` `;function kt(e,t,n){for(;t<n&&B(e[t]);)t++;for(;n>t&&B(e[n-1]);)n--;return[t,n]}function At(e,t,n,r){let i=k(O(e),e=>e.type===r.node||Ot.has(e.type));for(let r=t;r<n;r++)if(!B(e[r])&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function jt(e,t,n,r,i){let a=O(e),o=k(a,e=>e.type===r.node);return i?Pt(e,o,t,n):Mt(e,a,o,t,n,r)}function Mt(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=R(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]=I(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=Nt(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function Nt(e,t,n,r,i){if(i.node!==A.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(P(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function Pt(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=I(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=z(a.children.slice(1,-1),s,c);s>t.to&&B(e[s-1]);)s--;for(;c<o.from&&B(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 Ft(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=O(e),o=k(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=I(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return V(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function V(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=L(n);return!e||t<e[0]||t>e[1]?!0:V(n.children,t)}return!1}function H(e){return(t,n)=>{if(t.selection.empty)return It(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]=kt(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:At(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>jt(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(_.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 It(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=Ft(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(_.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(_.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function Lt(){return o({toggleEm:()=>H(F.em),toggleStrong:()=>H(F.strong),toggleCode:()=>H(F.code),toggleDel:()=>H(F.del)})}function Rt(){return c({"Mod-b":H(F.strong),"Mod-i":H(F.em),"Mod-e":H(F.code),"Mod-Shift-x":H(F.del)})}function zt(){return p(Lt(),Rt())}function Bt(){return p(Pe(),Ne(),Oe(),Me(),je({allowTableNodeSelection:!0}),ke(),Ae())}function Vt(){return p(me(),le(),he(),oe(),fe(),Ue(),Bt(),se(),de(),Dt(),Be(),_t(),zt(),a(),i(),s(),ue(),ge(),pe())}function U(){return Vt()}const Ht=new Set([`mdStrong`,`mdEm`,`mdCode`,`mdDel`,`mdLinkText`,`mdLinkUri`,`mdWikilink`]),Ut=new Set([`mdMark`,`mdLinkUri`]),Wt=new Set([`mdMark`,`mdLinkUri`]),W=new Set([`mdLinkText`,`mdLinkUri`]),Gt=new Set([`mdStrong`,`mdEm`,`mdCode`,`mdDel`,`mdWikilink`]);function Kt(e){return new h({key:new g(`mark-mode`),props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>Yt(e):void 0,clipboardTextSerializer:e===`show`?void 0:Jt}})}function qt(e){return u(Kt(e))}function Jt(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(e.marks.some(e=>Wt.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
- `)}function Yt(e){let{$anchor:t,empty:n}=e.selection;if(!n)return C.empty;let r=t.parent;if(!r.isTextblock)return null;let i=t.start(),a=t.parentOffset,o=Xt(r,a);if(o.size===0)return C.empty;let s=[],c=new Set,l=!1;for(let e of o)if(W.has(e)){if(l)continue;l=!0,Qt(r,i,a,s,c)}else Zt(r,i,e,a,s,c);let u=s.map(([e,t])=>S.inline(e,t,{class:`show`}));return C.create(e.doc,u)}function Xt(e,t){let n=new Set,r=0;return e.forEach(e=>{let i=r+e.nodeSize;if(t>=r&&t<=i)for(let t of e.marks){let e=t.type.name;Ht.has(e)&&n.add(e)}r=i}),n}function Zt(e,t,n,r,i,a){let o=t,s=0,c=-1,l=-1;e.forEach(u=>{let d=u.marks.some(e=>e.type.name===n);d&&c===-1&&(c=o,l=s),!d&&c!==-1&&(r>=l&&r<=s&&K(e,t,c,o,i,a),c=-1,l=-1),o+=u.nodeSize,s+=u.nodeSize}),c!==-1&&r>=l&&r<=s&&K(e,t,c,o,i,a)}function Qt(e,t,n,r,i){let a=e.childCount;if(a===0)return;let o=-1,s=0;for(let t=0;t<a;t++){let r=e.child(t),i=s+r.nodeSize;if(n>=s&&n<=i&&r.marks.some(e=>W.has(e.type.name))){o=t;break}s=i}if(o===-1)return;let c=o;for(;c>0&&G(e.child(c-1));)c--;let l=o;for(;l<a-1&&G(e.child(l+1));)l++;let u=t;for(let t=0;t<c;t++)u+=e.child(t).nodeSize;let d=u;for(let t=c;t<=l;t++)d+=e.child(t).nodeSize;K(e,t,u,d,r,i)}function G(e){let t=!1,n=!1,r=!1;for(let i of e.marks){let e=i.type.name;e===`mdMark`?t=!0:W.has(e)?n=!0:Gt.has(e)&&(r=!0)}return!!(n||t&&!r)}function K(e,t,n,r,i,a){let o=t;e.forEach(e=>{let t=o,s=o+e.nodeSize;if(t>=n&&s<=r)for(let n of e.marks){let e=n.type.name;if(Ut.has(e)){let e=`${t}_${s}`;a.has(e)||(a.add(e),i.push([t,s]));break}}o=s})}const $t=new g(`meowdown-wikilink-click`);function en(e,t){let n=d(e.schema,`mdWikilink`),r=e.doc.resolve(t),i=r.parent;if(!i.isTextblock||i.type.spec.code)return;let a=r.start(),o=-1,s=-1,c,l=0;if(i.forEach(e=>{let r=a+l;l+=e.nodeSize;let i=a+l;n.isInSet(e.marks)?(o<0&&(o=r),s=i):(o>=0&&o<=t&&t<=s&&(c={from:o,to:s}),o=-1)}),o>=0&&o<=t&&t<=s&&(c={from:o,to:s}),c)return{from:c.from,to:c.to,target:tn(e.doc.textBetween(c.from,c.to))}}function tn(e){let t=e.replace(/^\[\[/u,``).replace(/\]\]$/u,``),n=t.indexOf(`|`);return(n>=0?t.slice(0,n):t).trim()}function nn(e){let t;return u(new h({key:$t,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?.(`.md-wikilink`))return!1;let a=en(n.state,r);return!a||!(ee?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e({target:a.target,event:i}),!0)}}}))}function rn(e){let t=[],n=k(O(e),e=>e.type===A.Image);for(let r of n){let n=r.children.find(e=>e.type===A.URL),i=r.children.filter(e=>e.type===A.LinkMark);!n||i.length<2||t.push({from:r.from,to:r.to,alt:e.slice(i[0].to,i[1].from),src:e.slice(n.from,n.to)})}return t}function an(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const on=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,sn=/\/status(?:es)?\/(\d+)/;function cn(e){let t;try{t=new URL(e)}catch{return}if(on.test(t.hostname))return sn.exec(t.pathname)?.[1]}const ln=e=>{let t=cn(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=an()?`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`),un(n),n}}};function un(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 dn=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,fn=/^(?:www\.)?youtu\.be$/i,pn=/^[\w-]{11}$/;function mn(e){let t;try{t=new URL(e)}catch{return}let n=null;if(fn.test(t.hostname))n=t.pathname.slice(1);else if(dn.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||!pn.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?hn(r):void 0;return{videoId:n,startSeconds:i}}function hn(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 gn=[e=>{let t=mn(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}}},ln];function q(e){for(let t of gn){let n=t(e);if(n)return n}}const J=new g(`meowdown-images`);function _n(e){let t=[];return e.doc.descendants((e,n)=>{if(e.type.spec.code)return!1;if(!e.isTextblock)return!0;if(e.childCount===0)return!1;let r=!0;if(e.forEach(e=>{e.isText||(r=!1)}),!r)return!1;for(let r of rn(e.textContent))t.push({widgetAt:n+e.nodeSize-1,alt:r.alt,src:r.src});return!1}),t}function Y(e,t){let n=[];for(let r of _n(e)){let e=q(r.src);if(e){n.push(vn(r,e));continue}let i=t.resolveImageUrl(r.src);i&&n.push(yn(r,i))}return C.create(e.doc,n)}function vn(e,t){return S.widget(e.widgetAt,()=>{let e=document.createElement(`div`);return e.className=`md-embed-wrapper`,e.contentEditable=`false`,e.appendChild(t.render()),e},{key:`md-embed:${t.key}`,side:1})}function yn(e,t){return S.widget(e.widgetAt,()=>{let n=document.createElement(`div`);n.className=`md-image`,n.contentEditable=`false`;let r=document.createElement(`img`);return r.src=t,r.alt=e.alt,r.draggable=!1,n.appendChild(r),n},{key:`md-image:${t}`,side:1})}function bn(e){return new h({key:J,state:{init:(t,n)=>Y(n,e),apply:(t,n,r,i)=>t.docChanged?Y(i,e):n},props:{decorations:e=>J.getState(e)}})}function xn(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const Sn=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function Cn(e,t,n,r=Sn,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 wn(e){return new h({props:{handlePaste:(t,n)=>{let r=xn(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Cn(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=xn(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Cn(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Tn(e){return p(u(bn(e)),m(u(wn(e)),t.high))}const En=new g(`meowdown-embed-paste`);function Dn(e){let t=e.trim();if(!(!t||/\s/.test(t)))return q(t)?t:void 0}function On(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(Fe(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(Fe(i))}function kn(){return u(new h({key:En,props:{handlePaste:(e,t)=>{let n=e.state.selection.$from.parent;if(!n.inlineContent||n.type.spec.code)return!1;let r=t.clipboardData?.getData(`text/plain`);if(!r)return!1;let i=Dn(r);return i?(On(e,i),!0):!1}}}))}const An=(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=f(e.schema,`list`),i=f(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(_.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function jn(){return m(c({Enter:An}),t.high)}const Mn={"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`},Nn=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`]),Pn=ve.map(e=>e.name).filter(e=>!Nn.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function Fn(e){let t=new Ln;return Rn(e,t),t.finish()}const In=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];var Ln=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(`
2
+ `)}function Yt(e){let{$anchor:t,empty:n}=e.selection;if(!n)return C.empty;let r=t.parent;if(!r.isTextblock)return null;let i=t.start(),a=t.parentOffset,o=Xt(r,a);if(o.size===0)return C.empty;let s=[],c=new Set,l=!1;for(let e of o)if(W.has(e)){if(l)continue;l=!0,Qt(r,i,a,s,c)}else Zt(r,i,e,a,s,c);let u=s.map(([e,t])=>S.inline(e,t,{class:`show`}));return C.create(e.doc,u)}function Xt(e,t){let n=new Set,r=0;return e.forEach(e=>{let i=r+e.nodeSize;if(t>=r&&t<=i)for(let t of e.marks){let e=t.type.name;Ht.has(e)&&n.add(e)}r=i}),n}function Zt(e,t,n,r,i,a){let o=t,s=0,c=-1,l=-1;e.forEach(u=>{let d=u.marks.some(e=>e.type.name===n);d&&c===-1&&(c=o,l=s),!d&&c!==-1&&(r>=l&&r<=s&&K(e,t,c,o,i,a),c=-1,l=-1),o+=u.nodeSize,s+=u.nodeSize}),c!==-1&&r>=l&&r<=s&&K(e,t,c,o,i,a)}function Qt(e,t,n,r,i){let a=e.childCount;if(a===0)return;let o=-1,s=0;for(let t=0;t<a;t++){let r=e.child(t),i=s+r.nodeSize;if(n>=s&&n<=i&&r.marks.some(e=>W.has(e.type.name))){o=t;break}s=i}if(o===-1)return;let c=o;for(;c>0&&G(e.child(c-1));)c--;let l=o;for(;l<a-1&&G(e.child(l+1));)l++;let u=t;for(let t=0;t<c;t++)u+=e.child(t).nodeSize;let d=u;for(let t=c;t<=l;t++)d+=e.child(t).nodeSize;K(e,t,u,d,r,i)}function G(e){let t=!1,n=!1,r=!1;for(let i of e.marks){let e=i.type.name;e===`mdMark`?t=!0:W.has(e)?n=!0:Gt.has(e)&&(r=!0)}return!!(n||t&&!r)}function K(e,t,n,r,i,a){let o=t;e.forEach(e=>{let t=o,s=o+e.nodeSize;if(t>=n&&s<=r)for(let n of e.marks){let e=n.type.name;if(Ut.has(e)){let e=`${t}_${s}`;a.has(e)||(a.add(e),i.push([t,s]));break}}o=s})}const $t=new g(`meowdown-wikilink-click`);function en(e,t){let n=d(e.schema,`mdWikilink`),r=e.doc.resolve(t),i=r.parent;if(!i.isTextblock||i.type.spec.code)return;let a=r.start(),o=-1,s=-1,c,l=0;if(i.forEach(e=>{let r=a+l;l+=e.nodeSize;let i=a+l;n.isInSet(e.marks)?(o<0&&(o=r),s=i):(o>=0&&o<=t&&t<=s&&(c={from:o,to:s}),o=-1)}),o>=0&&o<=t&&t<=s&&(c={from:o,to:s}),c)return{from:c.from,to:c.to,target:tn(e.doc.textBetween(c.from,c.to))}}function tn(e){let t=e.replace(/^\[\[/u,``).replace(/\]\]$/u,``),n=t.indexOf(`|`);return(n>=0?t.slice(0,n):t).trim()}function nn(e){let t;return u(new h({key:$t,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?.(`.md-wikilink`))return!1;let a=en(n.state,r);return!a||!(ee?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e({target:a.target,event:i}),!0)}}}))}function rn(e){let t=[],n=k(O(e),e=>e.type===A.Image);for(let r of n){let n=r.children.find(e=>e.type===A.URL),i=r.children.filter(e=>e.type===A.LinkMark);!n||i.length<2||t.push({from:r.from,to:r.to,alt:e.slice(i[0].to,i[1].from),src:e.slice(n.from,n.to)})}return t}function an(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const on=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,sn=/\/status(?:es)?\/(\d+)/;function cn(e){let t;try{t=new URL(e)}catch{return}if(on.test(t.hostname))return sn.exec(t.pathname)?.[1]}const ln=e=>{let t=cn(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=an()?`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`),un(n),n}}};function un(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 dn=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,fn=/^(?:www\.)?youtu\.be$/i,pn=/^[\w-]{11}$/;function mn(e){let t;try{t=new URL(e)}catch{return}let n=null;if(fn.test(t.hostname))n=t.pathname.slice(1);else if(dn.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||!pn.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?hn(r):void 0;return{videoId:n,startSeconds:i}}function hn(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 gn=[e=>{let t=mn(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}}},ln];function q(e){for(let t of gn){let n=t(e);if(n)return n}}const J=new g(`meowdown-images`);function _n(e){let t=[];return e.doc.descendants((e,n)=>{if(e.type.spec.code)return!1;if(!e.isTextblock)return!0;if(e.childCount===0)return!1;let r=!0;if(e.forEach(e=>{e.isText||(r=!1)}),!r)return!1;for(let r of rn(e.textContent))t.push({widgetAt:n+e.nodeSize-1,alt:r.alt,src:r.src});return!1}),t}function Y(e,t){let n=[];for(let r of _n(e)){let e=q(r.src);if(e){n.push(vn(r,e));continue}let i=t.resolveImageUrl(r.src);i&&n.push(yn(r,i))}return C.create(e.doc,n)}function vn(e,t){return S.widget(e.widgetAt,()=>{let e=document.createElement(`div`);return e.className=`md-embed-wrapper`,e.contentEditable=`false`,e.appendChild(t.render()),e},{key:`md-embed:${t.key}`,side:1})}function yn(e,t){return S.widget(e.widgetAt,()=>{let n=document.createElement(`div`);n.className=`md-image`,n.contentEditable=`false`;let r=document.createElement(`img`);return r.src=t,r.alt=e.alt,r.draggable=!1,n.appendChild(r),n},{key:`md-image:${t}`,side:1})}function bn(e){return new h({key:J,state:{init:(t,n)=>Y(n,e),apply:(t,n,r,i)=>t.docChanged?Y(i,e):n},props:{decorations:e=>J.getState(e)}})}function xn(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const Sn=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function Cn(e,t,n,r=Sn,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 wn(e){return new h({props:{handlePaste:(t,n)=>{let r=xn(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Cn(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=xn(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Cn(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Tn(e){return p(u(bn(e)),m(u(wn(e)),t.high))}const En=new g(`meowdown-embed-paste`);function Dn(e){let t=e.trim();if(!(!t||/\s/.test(t)))return q(t)?t:void 0}function On(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(Fe(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(Fe(i))}function kn(){return u(new h({key:En,props:{handlePaste:(e,t)=>{let n=e.state.selection.$from.parent;if(!n.inlineContent||n.type.spec.code)return!1;let r=t.clipboardData?.getData(`text/plain`);if(!r)return!1;let i=Dn(r);return i?(On(e,i),!0):!1}}}))}const An=(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=f(e.schema,`list`),i=f(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(_.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function jn(){return m(c({Enter:An}),t.high)}const Mn={"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`},Nn=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Pn=ve.map(e=>e.name).filter(e=>!Nn.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function Fn(e){let t=new Ln;return Rn(e,t),t.finish()}const In=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];var Ln=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(`
3
3
  `)){this.parts.push(e);return}let t=e.split(`
4
4
  `);for(let e=0;e<t.length;e++)e>0&&this.parts.push(`
5
5
  `,this.linePrefix),t[e]!==``&&this.parts.push(t[e])}closeBlock(){this.atLineStart||this.parts.push(`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/core",
3
3
  "type": "module",
4
- "version": "0.11.0",
4
+ "version": "0.11.1",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",