@meowdown/core 0.27.0 → 0.28.0

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/README.md CHANGED
@@ -84,7 +84,6 @@ const markdown = docToMarkdown(editor.state.doc)
84
84
  - `--meowdown-border`: horizontal rules and table borders.
85
85
  - `--meowdown-code-bg`: code block background.
86
86
  - `--meowdown-table-header-bg`: table header row background.
87
- - `--meowdown-image-max-height`: max height of rendered inline images.
88
87
  - `--meowdown-image-radius`: corner radius of rendered inline images.
89
88
  - `--meowdown-placeholder`: placeholder text color (defaults to `--meowdown-muted`).
90
89
  - `--meowdown-font-mono`: monospace font stack.
@@ -105,6 +104,8 @@ Bare URLs autolink without `[text](url)` brackets and share the same `.md-link`
105
104
 
106
105
  Inline images (`![alt](src)`) stay literal text and render in place via a mark view, with the raw `![alt](src)` hidden in hide and focus modes. Add it with `defineImage({ resolveImageUrl, onImagePaste })` (or `@meowdown/react`'s image props). `resolveImageUrl` is optional and defaults to showing http(s) URLs as-is. Wire click handling with `defineImageClickHandler(({ src, alt, event }) => ...)` (or `@meowdown/react`'s `onImageClick` prop).
107
106
 
107
+ Rendered images are resizable: drag the corner handle and the chosen width is written back into the source as a trailing comment, `![alt](src)<!-- {"width":320} -->`, which round-trips as plain Markdown. A comment immediately after an image is folded into its mark and drives the image's `width` attribute; any other comment stays literal text.
108
+
108
109
  Pasting a lone tweet or YouTube link can auto-embed it. `defineEmbedPaste()` (or `@meowdown/react`'s `embedPaste` prop) rewrites the pasted link to `![](url)` so it renders as an embed; one undo turns the embed back into the raw link. It is not part of `defineEditorExtension`; add it explicitly.
109
110
 
110
111
  Pasting rich-text HTML from a browser (a bullet list, **bold**, a link, ...) converts it to Markdown so the formatting survives instead of arriving as plain text. `defineHTMLPaste()` (applied by default in `@meowdown/react`) rewrites the clipboard's `text/html` through the unified (rehype / remark) pipeline and reparses the Markdown with the editor's schema; meowdown's own clipboard (tagged `data-pm-slice`) and any paste landing in a code block are left to the default path. Going the other way, `defineMarkdownCopy()` serializes copied content to Markdown for the clipboard's `text/plain` flavor, so pasting into a plain-text field keeps list markers and block structure. Neither is part of `defineEditorExtension`; add them explicitly.
package/dist/index.d.ts CHANGED
@@ -111,6 +111,7 @@ interface MdImageAttrs {
111
111
  src: string;
112
112
  alt: string;
113
113
  title: string;
114
+ width: number | null;
114
115
  }
115
116
  interface MdLinkTextAttrs {
116
117
  href: string;
@@ -248,6 +249,12 @@ declare function defineEditorExtensionImpl(): import("@prosekit/core").Union<rea
248
249
  setextUnderline?: number | null;
249
250
  };
250
251
  };
252
+ }>, import("@prosekit/core").Extension<{
253
+ Nodes: {
254
+ heading: {
255
+ closingHashes?: number | null;
256
+ };
257
+ };
251
258
  }>, import("@prosekit/core").PlainExtension, import("@prosekit/extensions/heading").HeadingCommandsExtension, import("@prosekit/core").PlainExtension]>, import("@prosekit/core").Union<readonly [import("@prosekit/extensions/table").TableSpecExtension, import("@prosekit/extensions/table").TableRowSpecExtension, import("@prosekit/extensions/table").TableCellSpecExtension, import("@prosekit/extensions/table").TableHeaderCellSpecExtension, import("@prosekit/core").PlainExtension, import("@prosekit/extensions/table").TableCommandsExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").PlainExtension]>, import("@prosekit/extensions/code-block").CodeBlockExtension, MeowdownHorizontalRuleExtension, import("@prosekit/core").Extension<{
252
259
  Nodes: {
253
260
  htmlComment: MeowdownHTMLCommentAttrs;
package/dist/index.js CHANGED
@@ -1,25 +1,25 @@
1
- import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineDOMEventHandler as s,defineHistory as c,defineKeymap as l,defineMarkSpec as u,defineMarkView as d,defineNodeAttr as f,defineNodeSpec as p,definePlugin as m,getMarkRange as h,getMarkType as ee,getNodeType as te,isAllSelection as ne,isAtBlockStart as re,isTextSelection as g,toggleNode as ie,union as _,unsetBlockType as ae,withPriority as oe,withPriority as v,withSkipCodeBlock as se}from"@prosekit/core";import{definePlaceholder as ce}from"@prosekit/extensions/placeholder";import{defineReadonly as le}from"@prosekit/extensions/readonly";import{isElementLike as ue,once as y}from"@ocavue/utils";import{defineBlockquote as de}from"@prosekit/extensions/blockquote";import{defineCodeBlock as fe,defineCodeBlockHighlight as pe}from"@prosekit/extensions/code-block";import{defineDoc as me}from"@prosekit/extensions/doc";import{defineGapCursor as he}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as ge}from"@prosekit/extensions/mod-click-prevention";import{defineText as _e}from"@prosekit/extensions/text";import{defineVirtualSelection as ve}from"@prosekit/extensions/virtual-selection";import{Plugin as b,PluginKey as x,Selection as ye,TextSelection as S}from"@prosekit/pm/state";import{Decoration as C,DecorationSet as w}from"@prosekit/pm/view";import{LanguageDescription as be}from"@codemirror/language";import{languages as xe}from"@codemirror/language-data";import{classHighlighter as Se,highlightTree as Ce}from"@lezer/highlight";import{createParser as we}from"prosemirror-highlight/lezer";import{defineHeadingCommands as Te,defineHeadingInputRule as Ee,defineHeadingSpec as De}from"@prosekit/extensions/heading";import{defineHorizontalRule as Oe}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as ke,Step as Ae,StepResult as je,Transform as Me}from"@prosekit/pm/transform";import{DOMSerializer as Ne,Mark as Pe}from"@prosekit/pm/model";import{GFM as Fe,parser as Ie}from"@lezer/markdown";import{defineInputRule as Le}from"@prosekit/extensions/input-rule";import{defineListCommands as Re,defineListDropIndicator as ze,defineListKeymap as Be,defineListPlugins as Ve,defineListSerializer as He,defineListSpec as Ue,wrapInList as T}from"@prosekit/extensions/list";import{wrappingListInputRule as E}from"prosemirror-flat-list";import{defineParagraphCommands as We,defineParagraphKeymap as Ge}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as Ke,defineTableCommands as qe,defineTableDropIndicator as Je,defineTableEditingPlugin as Ye,defineTableHeaderCellSpec as Xe,defineTableRowSpec as Ze,defineTableSpec as Qe,deleteTable as $e,isCellSelection as et}from"@prosekit/extensions/table";import{closeHistory as tt}from"@prosekit/pm/history";import nt from"rehype-parse";import rt from"rehype-remark";import it from"remark-gfm";import at from"remark-stringify";import{unified as ot}from"unified";import{triggerAutocomplete as st}from"@prosekit/extensions/autocomplete";function D(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 h(i,n)}const ct=new Set([`mdMark`,`mdLinkUri`,`mdLinkTitle`]),lt=new x(`mark-mode`);function ut(e){return new b({key:lt,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>mt(e):void 0,clipboardTextSerializer:e===`show`?void 0:pt}})}function dt(e){return m(ut(e))}function ft(e){return lt.getState(e)}function pt(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(e.marks.some(e=>ct.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
- `)}function mt(e){let{selection:t}=e;if(!t.empty)return w.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return w.empty;let i=h(n,ee(e.schema,`mdPack`));return i?w.create(e.doc,[C.inline(i.from,i.to,{class:`show`})]):w.empty}function O(e,t){let n=ft(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function k(e,t,n){for(let r of n){let n=D(e,t,r);if(n)return n}}function A(e,t,n){let r=k(e,t,n);return r&&r.to===t?r:void 0}function j(e,t,n){let r=k(e,t,n);return r&&r.from===t?r:void 0}function ht(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=k(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function gt(e,t){return S.create(e.doc,t.from,t.to)}function _t(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!g(t.selection))return!1;let i=t.selection;if(i.empty){let e=j(t,i.from,r);if(e)return n?.(t.tr.setSelection(gt(t,e))),!0;if(A(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(S.create(t.doc,i.from+1))),!0)}return!1}let a=ht(t,r);return a?(n?.(t.tr.setSelection(S.create(t.doc,a.to))),!0):!1}}function vt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!g(t.selection))return!1;let i=t.selection;if(i.empty){let e=A(t,i.from,r);return e?(n?.(t.tr.setSelection(gt(t,e))),!0):!1}let a=ht(t,r);return a?(n?.(t.tr.setSelection(S.create(t.doc,a.from))),!0):!1}}function yt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=A(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!j(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function bt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=j(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!A(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}const xt=`md-atom-selected`;function St(e){return new b({key:new x(`atom-mark-selection`),props:{decorations:t=>{let n=O(e,t);if(n.length===0)return;let r=ht(t,n);if(r)return w.create(t.doc,[C.inline(r.from,r.to,{class:xt})]);let{from:i,to:a,empty:o}=t.selection;if(o)return null;let s=[];return t.doc.nodesBetween(i,a,(e,t)=>{e.marks.some(e=>n.includes(e.type.name))&&s.push(C.inline(t,t+e.nodeSize,{class:xt}))}),w.create(t.doc,s)}}})}function Ct({marks:e}){return _(v(l({ArrowRight:_t(e),ArrowLeft:vt(e),Backspace:yt(e),Delete:bt(e)}),t.high),m(St(e)))}const M=new Map,wt=new Map;async function Tt(e){let t=M.get(e);if(t!==void 0)return t;let n=be.matchLanguageName(xe,e,!0);if(!n)return M.set(e,null),null;let r=n.support;if(!r)try{r=await n.load()}catch(t){return console.error(`[meowdown] Failed to load language "${e}":`,t),M.set(e,null),null}return M.set(e,r),r}function Et(e,t){let n=wt.get(e);if(n)return n;let r=we({parse:e=>t.language.parser.parse(e.content),highlighter:Se});return wt.set(e,r),r}const Dt=e=>{let t=e.language?.trim();if(!t)return[];let n=M.get(t);return n===null?[]:n?Et(t,n)(e):Tt(t).then(()=>void 0)};function Ot(){return pe({parser:Dt,nodeTypes:[`codeBlock`]})}function kt(e,t){let n=t.language.parser.parse(e),r=[];return Ce(n,Se,(e,t,n)=>{r.push([e,t,n])}),r}function At(e,t){let n=t.trim();if(!n)return[];let r=M.get(n);return r===null?[]:r?kt(e,r):Tt(n).then(t=>t?kt(e,t):[])}function jt(e,t){return(n,r)=>{if(r){let i=S.create(n.doc,e,t);r(n.tr.setSelection(i))}return!0}}function Mt(e,t,n){return(r,i)=>{if(i){let a=S.between(e,t,n);i(r.tr.setSelection(a))}return!0}}function Nt(){return o({selectText:jt,selectTextBetween:Mt})}function Pt(){return f({type:`doc`,attr:`frontmatter`,default:null})}function Ft(){return p({name:`heading`,whitespace:`pre`})}function It(){return f({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 N(e){return se(ie({type:`heading`,attrs:{level:e}}))}const Lt=(e,t,n)=>re(e,n)?.parent.type.name===`heading`?ae()(e,t,n):!1;function Rt(){return l({"Mod-1":N(1),"Mod-2":N(2),"Mod-3":N(3),"Mod-4":N(4),"Mod-5":N(5),"Mod-6":N(6),Backspace:Lt})}function zt(){return _(De(),Ft(),It(),Ee(),Te(),Rt())}function Bt(){return f({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function Vt(){return _(Oe(),Bt())}function Ht(){return p({name:`htmlComment`,group:`block`,atom:!0,selectable:!1,attrs:{content:{default:``}},toDOM:e=>[`div`,{"data-html-comment":e.attrs.content,style:`display: none`}],parseDOM:[{tag:`div[data-html-comment]`,getAttrs:e=>({content:e.getAttribute(`data-html-comment`)??``})}]})}function Ut(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function Wt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>Pe.fromJSON(e,t))]}var P=class e extends Ae{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return je.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 Me(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new Me(e),n.addMark(i,c,t));return!1})}return je.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return Gt;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 ke(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(Ut)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>Wt(t,e)))}};Ae.jsonID(`batchSetMark`,P);const Gt=new P([]),Kt=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),qt=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function Jt(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function Yt(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!Kt.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!qt.test(e))return!1;return!0}function F(e){return e===32||e===9||e===10||e===13}const Xt=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,Zt=/[\s(*_~]/;function Qt(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function $t(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function en(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&$t(e,t,`)`)>$t(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 tn={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!Qt(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!Zt.test(r))return-1;let i=Xt.exec(e.slice(n,e.end));if(!i)return-1;let a=en(i[0]);return a===0||!Yt(Jt(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function nn(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 rn(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const an={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(!nn(t))break;i||=rn(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},on={resolve:`Highlight`,mark:`HighlightMark`},sn=/[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~\u{A1}\u{2010}-\u{2027}]/u,cn={defineNodes:[{name:`Highlight`},{name:`HighlightMark`}],parseInline:[{name:`Highlight`,after:`Emphasis`,parse(e,t,n){if(t!==61||e.char(n+1)!==61||e.char(n+2)===61)return-1;let r=e.slice(n-1,n),i=e.slice(n+2,n+3),a=/\s|^$/.test(r),o=/\s|^$/.test(i),s=sn.test(r),c=sn.test(i);return e.addDelimiter(on,n,n+2,!o&&(!c||a||s),!a&&(!s||o||c))}}]},ln={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 un(e){return e.end}const I=Ie.configure([Fe,an,ln,tn,cn]),dn=I.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:un}]});function L(e){return I.parseInline(e,0)}function R(e,t,n=[]){for(let r of e)t(r)&&n.push(r),R(r.children,t,n);return n}function fn(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const z=fn(I);function pn(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 mn(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 hn(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view md-atom-view`;let r=document.createElement(`span`);r.className=`md-wikilink-view-preview md-atom-view-preview`,r.contentEditable=`false`,r.dataset.testid=`wikilink`,n.appendChild(r);let i=document.createElement(`span`);i.className=`md-wikilink-view-label`,i.contentEditable=`false`,i.textContent=t.display||t.target,r.appendChild(i);let a=document.createElement(`span`);return a.className=`md-wikilink-view-content md-atom-view-content`,n.appendChild(a),{dom:n,contentDOM:a,ignoreMutation:e=>!a.contains(e.target)}}}function gn(){return d({name:`mdWikilink`,constructor:hn()})}const _n=new Map([[z.Emphasis,`mdEm`],[z.StrongEmphasis,`mdStrong`],[z.InlineCode,`mdCode`],[z.Strikethrough,`mdDel`],[z.Highlight,`mdHighlight`],[z.EmphasisMark,`mdMark`],[z.CodeMark,`mdMark`],[z.LinkMark,`mdMark`],[z.StrikethroughMark,`mdMark`],[z.HighlightMark,`mdMark`],[z.URL,`mdLinkUri`],[z.LinkTitle,`mdLinkTitle`],[z.Hashtag,`mdTag`],[z.WikilinkMark,`mdMark`]]);function vn(e,t){let n=L(t),r=[];return B(n,[],0,t.length,t,e,r),r}function yn(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)||Yt(Jt(e)))return`https://${e}`}function bn(e){return e.slice(1,-1).replaceAll(/\\(.)/g,`$1`)}function B(e,t,n,r,i,a,o){let s=n;for(let n of e){n.from>s&&V(o,s,n.from,t);let e=n.type;if(e===z.Link)xn(n,t,i,a,o);else if(e===z.Image)Sn(n,t,i,a,o);else if(e===z.Wikilink)Cn(n,t,i,a,o);else if(e===z.URL){let e=yn(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();V(o,n.from,n.to,[...t,r])}else{let r;e===z.Emphasis?r=`italic`:e===z.StrongEmphasis?r=`bold`:e===z.InlineCode?r=`code`:e===z.Strikethrough?r=`strike`:e===z.Highlight?r=`highlight`:e===z.Autolink&&(r=`autolink`);let s=r?[...t,a.mdPack.create({key:r})]:t,c=_n.get(e),l=c?[...s,a[c].create()]:s;n.children.length===0?V(o,n.from,n.to,l):B(n.children,l,n.from,n.to,i,a,o)}s=n.to}s<r&&V(o,s,r,t)}function xn(e,t,n,r,i){let a=-1,o=null,s=null,c=0;for(let t of e.children)t.type===z.LinkMark?(c++,c===2&&(a=t.from)):t.type===z.URL&&o===null?o=t:t.type===z.LinkTitle&&s===null&&(s=t);let l=o?n.slice(o.from,o.to):``,u=s?bn(n.slice(s.from,s.to)):``,d=l?r.mdLinkText.create({href:l}):null,f=e=>a>=0&&e<a&&d!==null,p=r.mdPack.create({key:`link`,data:{href:l,title:u}}),m=[...t,p],h=e.from;for(let t of e.children){if(t.from>h){let e=f(h)?[...m,d]:m;V(i,h,t.from,e)}let e=f(t.from)?[...m,d]:m;if(t.type===z.Wikilink){Cn(t,e,n,r,i),h=t.to;continue}let a=_n.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?V(i,t.from,t.to,o):B(t.children,o,t.from,t.to,n,r,i),h=t.to}h<e.to&&V(i,h,e.to,m)}function Sn(e,t,n,r,i){let a=e.children.find(e=>e.type===z.URL);if(!a){xn(e,t,n,r,i);return}let o=e.children.filter(e=>e.type===z.LinkMark),s=e.children.find(e=>e.type===z.LinkTitle),c=n.slice(a.from,a.to),l=o.length>=2?n.slice(o[0].to,o[1].from):``,u=s?bn(n.slice(s.from,s.to)):``;V(i,e.from,e.to,[...t,r.mdImage.create({src:c,alt:l,title:u})])}function Cn(e,t,n,r,i){let{target:a,display:o}=mn(n.slice(e.from,e.to));V(i,e.from,e.to,[...t,r.mdWikilink.create({target:a,display:o})])}function V(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&pn(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const wn=`inline-marks-applied`,Tn=new WeakMap;let En=0,Dn=0;function On(e,t,n){let r=Tn.get(e);if(r?Dn++:(En++,r=vn(Gr(n),e.textContent),Tn.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 kn(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 An(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=On(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function jn(){return new b({key:new x(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(wn))return null;let r=An(n,kn(e,n));if(r.length===0)return null;let i=n.tr.step(new P(r));return i.setMeta(wn,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(Mn(e.state)),{}}})}function Mn(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function Nn(){return m(jn())}function Pn(){return u({name:`mdImage`,inclusive:!1,attrs:{src:{default:``},alt:{default:``},title:{default:``}},toDOM:()=>[`span`,{class:`md-image`},0],parseDOM:[{tag:`span.md-image`}]})}function Fn(){return u({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function In(){return u({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function Ln(){return u({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function Rn(){return u({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function zn(){return u({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 Bn(){return u({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function Vn(){return u({name:`mdLinkTitle`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-title`},0],parseDOM:[{tag:`span.md-link-title`}]})}function Hn(){return u({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function Un(){return u({name:`mdHighlight`,toDOM:()=>[`mark`,0],parseDOM:[{tag:`mark`}]})}function Wn(){return u({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function Gn(){return u({name:`mdWikilink`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink`},0],parseDOM:[{tag:`span.md-wikilink`}]})}function Kn(){return u({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{},data:{default:null}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function qn(){return _(Fn(),In(),Ln(),Rn(),zn(),Bn(),Vn(),Hn(),Un(),Wn(),Gn(),Pn(),Kn())}function Jn(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 H={em:{node:z.Emphasis,delim:`*`},strong:{node:z.StrongEmphasis,delim:`**`},code:{node:z.InlineCode,delim:"`"},del:{node:z.Strikethrough,delim:`~~`},highlight:{node:z.Highlight,delim:`==`}},Yn=new Set([z.EmphasisMark,z.CodeMark,z.LinkMark,z.StrikethroughMark,z.HighlightMark]);function U(e){return[e.children[0],e.children.at(-1)]}function Xn(e){let{type:t,children:n}=e;if(t===z.Emphasis||t===z.StrongEmphasis||t===z.Strikethrough||t===z.Highlight)return[n[0].to,n.at(-1).from];if(t===z.Link||t===z.Image){let e=n.find((e,t)=>t>0&&e.type===z.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=Xn(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 Zn(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return Zn(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}function Qn(e,t,n){for(;t<n&&F(e.charCodeAt(t));)t++;for(;n>t&&F(e.charCodeAt(n-1));)n--;return[t,n]}function $n(e,t,n,r){let i=R(L(e),e=>e.type===r.node||Yn.has(e.type));for(let r=t;r<n;r++)if(!F(e.charCodeAt(r))&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function er(e,t,n,r,i){let a=L(e),o=R(a,e=>e.type===r.node);return i?rr(e,o,t,n):tr(e,a,o,t,n,r)}function tr(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]=U(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=nr(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function nr(e,t,n,r,i){if(i.node!==z.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(Jn(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function rr(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=U(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=Zn(a.children.slice(1,-1),s,c);s>t.to&&F(e.charCodeAt(s-1));)s--;for(;c<o.from&&F(e.charCodeAt(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 ir(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=L(e),o=R(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=U(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return ar(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function ar(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=Xn(n);return!e||t<e[0]||t>e[1]?!0:ar(n.children,t)}return!1}function G(e){return(t,n)=>{if(t.selection.empty)return or(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]=Qn(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:$n(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>er(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(S.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 or(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=ir(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(S.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(S.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function sr(){return o({toggleEm:()=>G(H.em),toggleStrong:()=>G(H.strong),toggleCode:()=>G(H.code),toggleDel:()=>G(H.del),toggleHighlight:()=>G(H.highlight)})}function cr(){return l({"Mod-b":G(H.strong),"Mod-i":G(H.em),"Mod-e":G(H.code),"Mod-Shift-x":G(H.del),"Mod-Shift-h":G(H.highlight)})}function lr(){return _(sr(),cr())}function ur(e,t,n){let r;return e.doc.nodesBetween(t.from,t.to,(e,i)=>(e.isText&&e.marks.some(e=>e.type.name===n)&&(r={from:Math.max(i,t.from),to:Math.min(i+e.nodeSize,t.to)}),!0)),r}function K(e,t){let n=D(e,t,`mdLinkText`),r=D(e,t,`mdPack`),i=r??n;if(!i)return;let a=r?.mark.attrs,o=n?.mark.attrs?.href??``;if(!r||a?.key!==`link`)return{unit:{from:i.from,to:i.to},href:o,title:``};let s=ur(e,i,`mdLinkUri`),c=s?s.from-2:i.to-3,l=s?s.from:i.to-1;return{unit:{from:i.from,to:i.to},label:{from:i.from+1,to:c},dest:{from:l,to:i.to-1},href:a.data.href,title:a.data.title}}function dr(e){let t=e.trim();return t?yn(t)??t:``}function fr(e,t){return e+(t?` "${t.replaceAll(/(["\\])/g,String.raw`\$1`)}"`:``)}function pr(e){let{selection:t}=e,{$from:n,$to:r,empty:i}=t;if(i||!n.sameParent(r)||!g(t))return;let a=n.parent;if(!a.isTextblock||a.type.spec.code)return;let o=n.start(),[s,c]=Qn(a.textContent,n.parentOffset,r.parentOffset);if(!(s>=c))return{from:o+s,to:o+c}}function mr(e={}){return(t,n)=>{let r=fr(dr(e.href??``),e.title??``),i=pr(t);if(!i)return!1;if(n){let{from:e,to:a}=i,o=t.tr,s=`](${r})`;o.insertText(s,a).insertText(`[`,e),n(o.setSelection(S.create(o.doc,e,a+1+s.length)).scrollIntoView())}return!0}}function hr(e){return(t,n)=>{let r=K(t,t.selection.from);if(!r?.dest)return!1;let i=fr(dr(e.href??r.href),e.title??r.title);return n&&n(t.tr.insertText(i,r.dest.from,r.dest.to).scrollIntoView()),!0}}function gr(){return(e,t)=>{let n=K(e,e.selection.from);return n?.label?(t&&t(e.tr.delete(n.label.to,n.unit.to).delete(n.unit.from,n.label.from).scrollIntoView()),!0):!1}}function _r(){return o({insertLink:mr,updateLink:hr,removeLink:gr})}function vr(e){return(t,n,r)=>{let i=K(t,t.selection.from);if(i){if(n&&r){let{unit:{from:a,to:o}}=i;n(t.tr.setSelection(S.create(t.doc,a,o)).scrollIntoView()),r.focus(),e({from:a,to:o,link:i})}return!0}let a=pr(t);if(a){if(n&&r){let{from:i,to:o}=a;n(t.tr.setSelection(S.create(t.doc,i,o)).scrollIntoView()),r.focus(),e({from:i,to:o,link:void 0})}return!0}return!1}}function yr(e){return l({"Mod-k":vr(e)})}function br(){return f({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 xr(){return f({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 Sr(e){return e===2||e===3||e===4}function Cr(){return f({type:`list`,attr:`markerGap`,default:1,splittable:!0,toDOM:e=>Sr(e)?[`data-list-marker-gap`,String(e)]:null,parseDOM:e=>{let t=Number.parseInt(e.getAttribute(`data-list-marker-gap`)??``,10);return Sr(t)?t:1}})}const wr=[E(/^\s?([*-])\s$/,{kind:`bullet`,collapsed:!1}),E(/^\s?(\d+)\.\s$/,({match:e})=>{let t=e[1],n=t?parseInt(t,10):void 0;return{kind:`ordered`,collapsed:!1,order:n&&n>=2&&Number.isSafeInteger(n)?n:null}}),E(/^\s?\[([\sXx]?)]\s$/,({match:e})=>({kind:`task`,checked:[`x`,`X`].includes(e[1]),collapsed:!1})),E(/^\s?\+\s$/,{kind:`task`,marker:`+`,checked:!1,collapsed:!1})];function Tr(){return _(wr.map(Le))}function Er(){return T({kind:`task`,marker:`+`})}function Dr(){return T({kind:`task`,marker:null})}function Or(){return o({wrapInCircleTask:Er,wrapInSquareTask:Dr})}function kr(e){let{$from:t}=e.selection;for(let e=t.depth;e>0;e--){let n=t.node(e);if(n.type.name===`list`)return n.attrs}return null}function Ar(){return(e,t,n)=>{let r=kr(e),i=r?.kind===`task`&&r.marker!==`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:r?.marker??null,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:null,checked:!1},T(a)(e,t,n)}}function jr(){return(e,t,n)=>{let r=kr(e),i=r?.kind===`task`&&r.marker===`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:`+`,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:`+`,checked:!1},T(a)(e,t,n)}}function Mr(){return l({"Mod-Enter":Ar(),"Mod-Shift-Enter":jr()})}function Nr(){return _(Ue(),Ve(),Be(),Re(),He(),ze(),Tr(),Mr(),br(),xr(),Cr(),Or())}function Pr(){return p({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function Fr(){return _(v(Pr(),t.highest),We(),Ge())}const Ir=(e,t)=>{let{selection:n}=e;return!et(n)||!n.isColSelection()||!n.isRowSelection()?!1:$e(e,t)};function Lr(){return v(l({Backspace:Ir,Delete:Ir}),t.high)}function Rr(){return _(Qe(),Ze(),Ke(),Xe(),Ye({allowTableNodeSelection:!0}),qe(),Je(),Lr())}function zr(){return _(Fr(),me(),Pt(),_e(),de(),Nr(),zt(),Rr(),fe(),Vt(),Ht(),qn(),Ot(),Nn(),lr(),_r(),gn(),Ct({marks:[{name:`mdImage`,modes:[`hide`,`focus`,`show`]},{name:`mdWikilink`,modes:[`hide`,`focus`,`show`]}]}),a(),i(),c(),he(),ve(),ge(),Nt())}function Br(){return zr()}const Vr=y(()=>{let e=Br().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),Hr=y(()=>r(Vr())),Ur=y(()=>n(Vr())),Wr=`meowdown_mark_builders`;function Gr(e){let t=e.cached[Wr];if(t)return t;let r=n(e);return e.cached[Wr]=r,r}const Kr=`meowdown_node_builders`;function qr(e){let t=e.cached[Kr];if(t)return t;let n=r(e);return e.cached[Kr]=n,n}function q(e,t={}){let{nodes:n=Hr(),frontmatter:r=!1}=t,i,a=e;if(r){let[t,n]=Yr(e);i=t,n&&(a=e.slice(n))}let o=Xr(n,dn.parse(a).cursor(),a);return n.doc(i===void 0?{}:{frontmatter:i},o)}const Jr=/^---[ \t]*\r?\n([\s\S]*?\n)?---[ \t]*(?:\r?\n|$)/;function Yr(e){let t=Jr.exec(e);return t?[(t[1]??``).replace(/\r?\n$/,``),t[0].length]:[]}function Xr(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...J(e,t,n));while(t.nextSibling());return t.parent(),r}function J(e,t,n){switch(t.type.id){case z.ATXHeading1:return[Y(e,t,n,1,!1)];case z.ATXHeading2:return[Y(e,t,n,2,!1)];case z.ATXHeading3:return[Y(e,t,n,3,!1)];case z.ATXHeading4:return[Y(e,t,n,4,!1)];case z.ATXHeading5:return[Y(e,t,n,5,!1)];case z.ATXHeading6:return[Y(e,t,n,6,!1)];case z.SetextHeading1:return[Y(e,t,n,1,!0)];case z.SetextHeading2:return[Y(e,t,n,2,!0)];case z.Paragraph:return[Q(e,t,n)];case z.CommentBlock:return[ei(e,t,n)];case z.HTMLBlock:case z.ProcessingInstructionBlock:return[Q(e,t,n)];case z.Blockquote:return[ti(e,t,n)];case z.BulletList:return ni(e,t,n,`bullet`);case z.OrderedList:return ni(e,t,n,`ordered`);case z.FencedCode:case z.CodeBlock:return[ii(e,t,n)];case z.HorizontalRule:{let r=n.slice(t.from,t.to).trimEnd();return[e.horizontalRule({marker:r===`---`?null:r})]}case z.Table:return[ai(e,t,n)];case z.Task:return[Q(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[Q(e,t,n)])}}function Y(e,t,n,r,i){let a=t.from,o=t.from,s=t.to,c=-1,l=-1;if(t.firstChild()){t.type.id===z.HeaderMark&&t.from===a&&(o=t.to);let e=-1,n=-1,r=-1;do e=t.type.id,n=t.from,r=t.to;while(t.nextSibling());e===z.HeaderMark&&n>o&&(s=n,c=n,l=r),t.parent()}let u=$r(n.slice(o,s),X(n,o)).trim(),d=i?Zr(n,c,l)||1:null;return e.heading({level:r,setextUnderline:d},u)}function Zr(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++){let t=e.charCodeAt(i);(t===61||t===45)&&r++}return r}function X(e,t){let n=e.lastIndexOf(`
3
- `,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(`
1
+ import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineDOMEventHandler as s,defineHistory as c,defineKeymap as l,defineMarkSpec as u,defineMarkView as d,defineNodeAttr as f,defineNodeSpec as p,definePlugin as m,getMarkRange as h,getMarkType as ee,getNodeType as te,isAllSelection as ne,isAtBlockStart as re,isTextSelection as g,toggleNode as ie,union as _,unsetBlockType as ae,withPriority as oe,withPriority as v,withSkipCodeBlock as se}from"@prosekit/core";import{definePlaceholder as ce}from"@prosekit/extensions/placeholder";import{defineReadonly as le}from"@prosekit/extensions/readonly";import{isElementLike as ue,once as y}from"@ocavue/utils";import{defineBlockquote as de}from"@prosekit/extensions/blockquote";import{defineCodeBlock as fe,defineCodeBlockHighlight as pe}from"@prosekit/extensions/code-block";import{defineDoc as me}from"@prosekit/extensions/doc";import{defineGapCursor as he}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as ge}from"@prosekit/extensions/mod-click-prevention";import{defineText as _e}from"@prosekit/extensions/text";import{defineVirtualSelection as ve}from"@prosekit/extensions/virtual-selection";import{Plugin as b,PluginKey as x,Selection as ye,TextSelection as S}from"@prosekit/pm/state";import{Decoration as C,DecorationSet as w}from"@prosekit/pm/view";import{LanguageDescription as be}from"@codemirror/language";import{languages as xe}from"@codemirror/language-data";import{classHighlighter as Se,highlightTree as Ce}from"@lezer/highlight";import{createParser as we}from"prosemirror-highlight/lezer";import{defineHeadingCommands as Te,defineHeadingInputRule as Ee,defineHeadingSpec as De}from"@prosekit/extensions/heading";import{defineHorizontalRule as Oe}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as ke,Step as Ae,StepResult as je,Transform as Me}from"@prosekit/pm/transform";import{DOMSerializer as Ne,Mark as Pe}from"@prosekit/pm/model";import{GFM as Fe,parser as Ie}from"@lezer/markdown";import{defineInputRule as Le}from"@prosekit/extensions/input-rule";import{defineListCommands as Re,defineListDropIndicator as ze,defineListKeymap as Be,defineListPlugins as Ve,defineListSerializer as He,defineListSpec as Ue,wrapInList as T}from"@prosekit/extensions/list";import{wrappingListInputRule as E}from"prosemirror-flat-list";import{defineParagraphCommands as We,defineParagraphKeymap as Ge}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as Ke,defineTableCommands as qe,defineTableDropIndicator as Je,defineTableEditingPlugin as Ye,defineTableHeaderCellSpec as Xe,defineTableRowSpec as Ze,defineTableSpec as Qe,deleteTable as $e,isCellSelection as et}from"@prosekit/extensions/table";import{closeHistory as tt}from"@prosekit/pm/history";import nt from"rehype-parse";import rt from"rehype-remark";import it from"remark-gfm";import at from"remark-stringify";import{unified as ot}from"unified";import{registerResizableHandleElement as st,registerResizableRootElement as ct}from"@prosekit/web/resizable";import{triggerAutocomplete as lt}from"@prosekit/extensions/autocomplete";function D(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 h(i,n)}const ut=new Set([`mdMark`,`mdLinkUri`,`mdLinkTitle`]),dt=new x(`mark-mode`);function ft(e){return new b({key:dt,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>gt(e):void 0,clipboardTextSerializer:e===`show`?void 0:ht}})}function pt(e){return m(ft(e))}function mt(e){return dt.getState(e)}function ht(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(e.marks.some(e=>ut.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
+ `)}function gt(e){let{selection:t}=e;if(!t.empty)return w.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return w.empty;let i=h(n,ee(e.schema,`mdPack`));return i?w.create(e.doc,[C.inline(i.from,i.to,{class:`show`})]):w.empty}function O(e,t){let n=mt(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function k(e,t,n){for(let r of n){let n=D(e,t,r);if(n)return n}}function A(e,t,n){let r=k(e,t,n);return r&&r.to===t?r:void 0}function j(e,t,n){let r=k(e,t,n);return r&&r.from===t?r:void 0}function M(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=k(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function _t(e,t){return S.create(e.doc,t.from,t.to)}function vt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!g(t.selection))return!1;let i=t.selection;if(i.empty){let e=j(t,i.from,r);if(e)return n?.(t.tr.setSelection(_t(t,e))),!0;if(A(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(S.create(t.doc,i.from+1))),!0)}return!1}let a=M(t,r);return a?(n?.(t.tr.setSelection(S.create(t.doc,a.to))),!0):!1}}function yt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!g(t.selection))return!1;let i=t.selection;if(i.empty){let e=A(t,i.from,r);return e?(n?.(t.tr.setSelection(_t(t,e))),!0):!1}let a=M(t,r);return a?(n?.(t.tr.setSelection(S.create(t.doc,a.from))),!0):!1}}function bt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=A(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!j(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function xt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=j(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!A(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}const St=`md-atom-selected`;function Ct(e){return new b({key:new x(`atom-mark-selection`),props:{decorations:t=>{let n=O(e,t);if(n.length===0)return;let r=M(t,n);if(r)return w.create(t.doc,[C.inline(r.from,r.to,{class:St})]);let{from:i,to:a,empty:o}=t.selection;if(o)return null;let s=[];return t.doc.nodesBetween(i,a,(e,t)=>{e.marks.some(e=>n.includes(e.type.name))&&s.push(C.inline(t,t+e.nodeSize,{class:St}))}),w.create(t.doc,s)}}})}function wt({marks:e}){return _(v(l({ArrowRight:vt(e),ArrowLeft:yt(e),Backspace:bt(e),Delete:xt(e)}),t.high),m(Ct(e)))}const N=new Map,Tt=new Map;async function Et(e){let t=N.get(e);if(t!==void 0)return t;let n=be.matchLanguageName(xe,e,!0);if(!n)return N.set(e,null),null;let r=n.support;if(!r)try{r=await n.load()}catch(t){return console.error(`[meowdown] Failed to load language "${e}":`,t),N.set(e,null),null}return N.set(e,r),r}function Dt(e,t){let n=Tt.get(e);if(n)return n;let r=we({parse:e=>t.language.parser.parse(e.content),highlighter:Se});return Tt.set(e,r),r}const Ot=e=>{let t=e.language?.trim();if(!t)return[];let n=N.get(t);return n===null?[]:n?Dt(t,n)(e):Et(t).then(()=>void 0)};function kt(){return pe({parser:Ot,nodeTypes:[`codeBlock`]})}function At(e,t){let n=t.language.parser.parse(e),r=[];return Ce(n,Se,(e,t,n)=>{r.push([e,t,n])}),r}function jt(e,t){let n=t.trim();if(!n)return[];let r=N.get(n);return r===null?[]:r?At(e,r):Et(n).then(t=>t?At(e,t):[])}function Mt(e,t){return(n,r)=>{if(r){let i=S.create(n.doc,e,t);r(n.tr.setSelection(i))}return!0}}function Nt(e,t,n){return(r,i)=>{if(i){let a=S.between(e,t,n);i(r.tr.setSelection(a))}return!0}}function Pt(){return o({selectText:Mt,selectTextBetween:Nt})}function Ft(){return f({type:`doc`,attr:`frontmatter`,default:null})}function It(){return p({name:`heading`,whitespace:`pre`})}function Lt(){return f({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 Rt(){return f({type:`heading`,attr:`closingHashes`,default:null,toDOM:e=>e==null?null:[`data-closing-hashes`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-closing-hashes`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function P(e){return se(ie({type:`heading`,attrs:{level:e}}))}const zt=(e,t,n)=>re(e,n)?.parent.type.name===`heading`?ae()(e,t,n):!1;function Bt(){return l({"Mod-1":P(1),"Mod-2":P(2),"Mod-3":P(3),"Mod-4":P(4),"Mod-5":P(5),"Mod-6":P(6),Backspace:zt})}function Vt(){return _(De(),It(),Lt(),Rt(),Ee(),Te(),Bt())}function Ht(){return f({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function Ut(){return _(Oe(),Ht())}function Wt(){return p({name:`htmlComment`,group:`block`,atom:!0,selectable:!1,attrs:{content:{default:``}},toDOM:e=>[`div`,{"data-html-comment":e.attrs.content,style:`display: none`}],parseDOM:[{tag:`div[data-html-comment]`,getAttrs:e=>({content:e.getAttribute(`data-html-comment`)??``})}]})}function Gt(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function Kt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>Pe.fromJSON(e,t))]}var F=class e extends Ae{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return je.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 Me(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new Me(e),n.addMark(i,c,t));return!1})}return je.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return qt;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 ke(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(Gt)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>Kt(t,e)))}};Ae.jsonID(`batchSetMark`,F);const qt=new F([]),Jt=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),Yt=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function Xt(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function Zt(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!Jt.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!Yt.test(e))return!1;return!0}function I(e){return e===32||e===9||e===10||e===13}const Qt=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,$t=/[\s(*_~]/;function en(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function tn(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function nn(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&tn(e,t,`)`)>tn(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 rn={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!en(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!$t.test(r))return-1;let i=Qt.exec(e.slice(n,e.end));if(!i)return-1;let a=nn(i[0]);return a===0||!Zt(Xt(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function an(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 on(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const sn={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(!an(t))break;i||=on(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},cn={resolve:`Highlight`,mark:`HighlightMark`},ln=/[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~\u{A1}\u{2010}-\u{2027}]/u,un={defineNodes:[{name:`Highlight`},{name:`HighlightMark`}],parseInline:[{name:`Highlight`,after:`Emphasis`,parse(e,t,n){if(t!==61||e.char(n+1)!==61||e.char(n+2)===61)return-1;let r=e.slice(n-1,n),i=e.slice(n+2,n+3),a=/\s|^$/.test(r),o=/\s|^$/.test(i),s=ln.test(r),c=ln.test(i);return e.addDelimiter(cn,n,n+2,!o&&(!c||a||s),!a&&(!s||o||c))}}]},dn={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 fn(e){return e.end}const L=Ie.configure([Fe,sn,dn,rn,un]),pn=L.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:fn}]});function R(e){return L.parseInline(e,0)}function z(e,t,n=[]){for(let r of e)t(r)&&n.push(r),z(r.children,t,n);return n}function mn(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const B=mn(L),hn=/^<!--\s*(\{[^}]*\})\s*-->$/,gn=/<!--\s*\{[^}]*\}\s*-->$/;function _n(e){let t=hn.exec(e.trim());if(!t)return;let n;try{n=JSON.parse(t[1])}catch{return}if(typeof n!=`object`||!n)return;let r=vn(n);return Object.keys(r).length>0?r:void 0}function vn(e){let t={},{width:n}=e;return typeof n==`number`&&Number.isFinite(n)&&n>0&&(t.width=Math.round(n)),t}function yn(e){return`<!-- ${JSON.stringify(e)} -->`}function bn(e){return e.replace(gn,``)}function xn(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 Sn(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 Cn(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view md-atom-view`;let r=document.createElement(`span`);r.className=`md-wikilink-view-preview md-atom-view-preview`,r.contentEditable=`false`,r.dataset.testid=`wikilink`,n.appendChild(r);let i=document.createElement(`span`);i.className=`md-wikilink-view-label`,i.contentEditable=`false`,i.textContent=t.display||t.target,r.appendChild(i);let a=document.createElement(`span`);return a.className=`md-wikilink-view-content md-atom-view-content`,n.appendChild(a),{dom:n,contentDOM:a,ignoreMutation:e=>!a.contains(e.target)}}}function wn(){return d({name:`mdWikilink`,constructor:Cn()})}const Tn=new Map([[B.Emphasis,`mdEm`],[B.StrongEmphasis,`mdStrong`],[B.InlineCode,`mdCode`],[B.Strikethrough,`mdDel`],[B.Highlight,`mdHighlight`],[B.EmphasisMark,`mdMark`],[B.CodeMark,`mdMark`],[B.LinkMark,`mdMark`],[B.StrikethroughMark,`mdMark`],[B.HighlightMark,`mdMark`],[B.URL,`mdLinkUri`],[B.LinkTitle,`mdLinkTitle`],[B.Hashtag,`mdTag`],[B.WikilinkMark,`mdMark`]]);function En(e,t){let n=R(t),r=[];return V(n,[],0,t.length,t,e,r),r}function Dn(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)||Zt(Xt(e)))return`https://${e}`}function On(e){return e.slice(1,-1).replaceAll(/\\(.)/g,`$1`)}function V(e,t,n,r,i,a,o){let s=n;for(let n=0;n<e.length;n++){let r=e[n];r.from>s&&H(o,s,r.from,t);let c=r.type;if(c===B.Link)kn(r,t,i,a,o);else if(c===B.Image){let c=An(r,e[n+1],i);jn(r,t,i,a,o,c),c&&n++,s=c?c.to:r.to;continue}else if(c===B.Wikilink)Mn(r,t,i,a,o);else if(c===B.URL){let e=Dn(i.slice(r.from,r.to)),n=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();H(o,r.from,r.to,[...t,n])}else{let e;c===B.Emphasis?e=`italic`:c===B.StrongEmphasis?e=`bold`:c===B.InlineCode?e=`code`:c===B.Strikethrough?e=`strike`:c===B.Highlight?e=`highlight`:c===B.Autolink&&(e=`autolink`);let n=e?[...t,a.mdPack.create({key:e})]:t,s=Tn.get(c),l=s?[...n,a[s].create()]:n;r.children.length===0?H(o,r.from,r.to,l):V(r.children,l,r.from,r.to,i,a,o)}s=r.to}s<r&&H(o,s,r,t)}function kn(e,t,n,r,i){let a=-1,o=null,s=null,c=0;for(let t of e.children)t.type===B.LinkMark?(c++,c===2&&(a=t.from)):t.type===B.URL&&o===null?o=t:t.type===B.LinkTitle&&s===null&&(s=t);let l=o?n.slice(o.from,o.to):``,u=s?On(n.slice(s.from,s.to)):``,d=l?r.mdLinkText.create({href:l}):null,f=e=>a>=0&&e<a&&d!==null,p=r.mdPack.create({key:`link`,data:{href:l,title:u}}),m=[...t,p],h=e.from;for(let t of e.children){if(t.from>h){let e=f(h)?[...m,d]:m;H(i,h,t.from,e)}let e=f(t.from)?[...m,d]:m;if(t.type===B.Wikilink){Mn(t,e,n,r,i),h=t.to;continue}let a=Tn.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?H(i,t.from,t.to,o):V(t.children,o,t.from,t.to,n,r,i),h=t.to}h<e.to&&H(i,h,e.to,m)}function An(e,t,n){if(!t||t.type!==B.Comment||t.from!==e.to)return;let r=_n(n.slice(t.from,t.to));if(r)return{magic:r,to:t.to}}function jn(e,t,n,r,i,a){let o=e.children.find(e=>e.type===B.URL);if(!o){kn(e,t,n,r,i);return}let s=e.children.filter(e=>e.type===B.LinkMark),c=e.children.find(e=>e.type===B.LinkTitle),l=n.slice(o.from,o.to),u=s.length>=2?n.slice(s[0].to,s[1].from):``,d=c?On(n.slice(c.from,c.to)):``,f=a?.magic.width??null,p=a?.to??e.to;H(i,e.from,p,[...t,r.mdImage.create({src:l,alt:u,title:d,width:f})])}function Mn(e,t,n,r,i){let{target:a,display:o}=Sn(n.slice(e.from,e.to));H(i,e.from,e.to,[...t,r.mdWikilink.create({target:a,display:o})])}function H(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&xn(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const Nn=`inline-marks-applied`,Pn=new WeakMap;let Fn=0,In=0;function Ln(e,t,n){let r=Pn.get(e);if(r?In++:(Fn++,r=En(ei(n),e.textContent),Pn.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 Rn(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 zn(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=Ln(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function Bn(){return new b({key:new x(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(Nn))return null;let r=zn(n,Rn(e,n));if(r.length===0)return null;let i=n.tr.step(new F(r));return i.setMeta(Nn,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(Vn(e.state)),{}}})}function Vn(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function Hn(){return m(Bn())}function Un(){return u({name:`mdImage`,inclusive:!1,attrs:{src:{default:``},alt:{default:``},title:{default:``},width:{default:null}},toDOM:()=>[`span`,{class:`md-image`},0],parseDOM:[{tag:`span.md-image`}]})}function Wn(){return u({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function Gn(){return u({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function Kn(){return u({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function qn(){return u({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function Jn(){return u({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 Yn(){return u({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function Xn(){return u({name:`mdLinkTitle`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-title`},0],parseDOM:[{tag:`span.md-link-title`}]})}function Zn(){return u({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function Qn(){return u({name:`mdHighlight`,toDOM:()=>[`mark`,0],parseDOM:[{tag:`mark`}]})}function $n(){return u({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function er(){return u({name:`mdWikilink`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink`},0],parseDOM:[{tag:`span.md-wikilink`}]})}function tr(){return u({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{},data:{default:null}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function nr(){return _(Wn(),Gn(),Kn(),qn(),Jn(),Yn(),Xn(),Zn(),Qn(),$n(),er(),Un(),tr())}function rr(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 U={em:{node:B.Emphasis,delim:`*`},strong:{node:B.StrongEmphasis,delim:`**`},code:{node:B.InlineCode,delim:"`"},del:{node:B.Strikethrough,delim:`~~`},highlight:{node:B.Highlight,delim:`==`}},ir=new Set([B.EmphasisMark,B.CodeMark,B.LinkMark,B.StrikethroughMark,B.HighlightMark]);function W(e){return[e.children[0],e.children.at(-1)]}function ar(e){let{type:t,children:n}=e;if(t===B.Emphasis||t===B.StrongEmphasis||t===B.Strikethrough||t===B.Highlight)return[n[0].to,n.at(-1).from];if(t===B.Link||t===B.Image){let e=n.find((e,t)=>t>0&&e.type===B.LinkMark);return e?[n[0].to,e.from]:null}return null}function G(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=ar(r);return i&&i[0]<=t&&n<=i[1]?G(r.children,t,n):G(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function or(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return or(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}function sr(e,t,n){for(;t<n&&I(e.charCodeAt(t));)t++;for(;n>t&&I(e.charCodeAt(n-1));)n--;return[t,n]}function cr(e,t,n,r){let i=z(R(e),e=>e.type===r.node||ir.has(e.type));for(let r=t;r<n;r++)if(!I(e.charCodeAt(r))&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function lr(e,t,n,r,i){let a=R(e),o=z(a,e=>e.type===r.node);return i?fr(e,o,t,n):ur(e,a,o,t,n,r)}function ur(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=G(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]=W(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=dr(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function dr(e,t,n,r,i){if(i.node!==B.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(rr(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function fr(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=W(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=or(a.children.slice(1,-1),s,c);s>t.to&&I(e.charCodeAt(s-1));)s--;for(;c<o.from&&I(e.charCodeAt(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 pr(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=R(e),o=z(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=W(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return mr(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function mr(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=ar(n);return!e||t<e[0]||t>e[1]?!0:mr(n.children,t)}return!1}function K(e){return(t,n)=>{if(t.selection.empty)return hr(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]=sr(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:cr(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>lr(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(S.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 hr(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=pr(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(S.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(S.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function gr(){return o({toggleEm:()=>K(U.em),toggleStrong:()=>K(U.strong),toggleCode:()=>K(U.code),toggleDel:()=>K(U.del),toggleHighlight:()=>K(U.highlight)})}function _r(){return l({"Mod-b":K(U.strong),"Mod-i":K(U.em),"Mod-e":K(U.code),"Mod-Shift-x":K(U.del),"Mod-Shift-h":K(U.highlight)})}function vr(){return _(gr(),_r())}function yr(e,t,n){let r;return e.doc.nodesBetween(t.from,t.to,(e,i)=>(e.isText&&e.marks.some(e=>e.type.name===n)&&(r={from:Math.max(i,t.from),to:Math.min(i+e.nodeSize,t.to)}),!0)),r}function q(e,t){let n=D(e,t,`mdLinkText`),r=D(e,t,`mdPack`),i=r??n;if(!i)return;let a=r?.mark.attrs,o=n?.mark.attrs?.href??``;if(!r||a?.key!==`link`)return{unit:{from:i.from,to:i.to},href:o,title:``};let s=yr(e,i,`mdLinkUri`),c=s?s.from-2:i.to-3,l=s?s.from:i.to-1;return{unit:{from:i.from,to:i.to},label:{from:i.from+1,to:c},dest:{from:l,to:i.to-1},href:a.data.href,title:a.data.title}}function br(e){let t=e.trim();return t?Dn(t)??t:``}function xr(e,t){return e+(t?` "${t.replaceAll(/(["\\])/g,String.raw`\$1`)}"`:``)}function Sr(e){let{selection:t}=e,{$from:n,$to:r,empty:i}=t;if(i||!n.sameParent(r)||!g(t))return;let a=n.parent;if(!a.isTextblock||a.type.spec.code)return;let o=n.start(),[s,c]=sr(a.textContent,n.parentOffset,r.parentOffset);if(!(s>=c))return{from:o+s,to:o+c}}function Cr(e={}){return(t,n)=>{let r=xr(br(e.href??``),e.title??``),i=Sr(t);if(!i)return!1;if(n){let{from:e,to:a}=i,o=t.tr,s=`](${r})`;o.insertText(s,a).insertText(`[`,e),n(o.setSelection(S.create(o.doc,e,a+1+s.length)).scrollIntoView())}return!0}}function wr(e){return(t,n)=>{let r=q(t,t.selection.from);if(!r?.dest)return!1;let i=xr(br(e.href??r.href),e.title??r.title);return n&&n(t.tr.insertText(i,r.dest.from,r.dest.to).scrollIntoView()),!0}}function Tr(){return(e,t)=>{let n=q(e,e.selection.from);return n?.label?(t&&t(e.tr.delete(n.label.to,n.unit.to).delete(n.unit.from,n.label.from).scrollIntoView()),!0):!1}}function Er(){return o({insertLink:Cr,updateLink:wr,removeLink:Tr})}function Dr(e){return(t,n,r)=>{let i=q(t,t.selection.from);if(i){if(n&&r){let{unit:{from:a,to:o}}=i;n(t.tr.setSelection(S.create(t.doc,a,o)).scrollIntoView()),r.focus(),e({from:a,to:o,link:i})}return!0}let a=Sr(t);if(a){if(n&&r){let{from:i,to:o}=a;n(t.tr.setSelection(S.create(t.doc,i,o)).scrollIntoView()),r.focus(),e({from:i,to:o,link:void 0})}return!0}return!1}}function Or(e){return l({"Mod-k":Dr(e)})}function kr(){return f({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 Ar(){return f({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 jr(e){return e===2||e===3||e===4}function Mr(){return f({type:`list`,attr:`markerGap`,default:1,splittable:!0,toDOM:e=>jr(e)?[`data-list-marker-gap`,String(e)]:null,parseDOM:e=>{let t=Number.parseInt(e.getAttribute(`data-list-marker-gap`)??``,10);return jr(t)?t:1}})}const Nr=[E(/^\s?([*-])\s$/,{kind:`bullet`,collapsed:!1}),E(/^\s?(\d+)\.\s$/,({match:e})=>{let t=e[1],n=t?parseInt(t,10):void 0;return{kind:`ordered`,collapsed:!1,order:n&&n>=2&&Number.isSafeInteger(n)?n:null}}),E(/^\s?\[([\sXx]?)]\s$/,({match:e})=>({kind:`task`,checked:[`x`,`X`].includes(e[1]),collapsed:!1})),E(/^\s?\+\s$/,{kind:`task`,marker:`+`,checked:!1,collapsed:!1})];function Pr(){return _(Nr.map(Le))}function Fr(){return T({kind:`task`,marker:`+`})}function Ir(){return T({kind:`task`,marker:null})}function Lr(){return o({wrapInCircleTask:Fr,wrapInSquareTask:Ir})}function Rr(e){let{$from:t}=e.selection;for(let e=t.depth;e>0;e--){let n=t.node(e);if(n.type.name===`list`)return n.attrs}return null}function zr(){return(e,t,n)=>{let r=Rr(e),i=r?.kind===`task`&&r.marker!==`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:r?.marker??null,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:null,checked:!1},T(a)(e,t,n)}}function Br(){return(e,t,n)=>{let r=Rr(e),i=r?.kind===`task`&&r.marker===`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:`+`,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:`+`,checked:!1},T(a)(e,t,n)}}function Vr(){return l({"Mod-Enter":zr(),"Mod-Shift-Enter":Br()})}function Hr(){return _(Ue(),Ve(),Be(),Re(),He(),ze(),Pr(),Vr(),kr(),Ar(),Mr(),Lr())}function Ur(){return p({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function Wr(){return _(v(Ur(),t.highest),We(),Ge())}const Gr=(e,t)=>{let{selection:n}=e;return!et(n)||!n.isColSelection()||!n.isRowSelection()?!1:$e(e,t)};function Kr(){return v(l({Backspace:Gr,Delete:Gr}),t.high)}function qr(){return _(Qe(),Ze(),Ke(),Xe(),Ye({allowTableNodeSelection:!0}),qe(),Je(),Kr())}function Jr(){return _(Wr(),me(),Ft(),_e(),de(),Hr(),Vt(),qr(),fe(),Ut(),Wt(),nr(),kt(),Hn(),vr(),Er(),wn(),wt({marks:[{name:`mdImage`,modes:[`hide`,`focus`,`show`]},{name:`mdWikilink`,modes:[`hide`,`focus`,`show`]}]}),a(),i(),c(),he(),ve(),ge(),Pt())}function Yr(){return Jr()}const Xr=y(()=>{let e=Yr().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),Zr=y(()=>r(Xr())),Qr=y(()=>n(Xr())),$r=`meowdown_mark_builders`;function ei(e){let t=e.cached[$r];if(t)return t;let r=n(e);return e.cached[$r]=r,r}const ti=`meowdown_node_builders`;function ni(e){let t=e.cached[ti];if(t)return t;let n=r(e);return e.cached[ti]=n,n}function J(e,t={}){let{nodes:n=Zr(),frontmatter:r=!1}=t,i,a=e;if(r){let[t,n]=ii(e);i=t,n&&(a=e.slice(n))}let o=ai(n,pn.parse(a).cursor(),a);return n.doc(i===void 0?{}:{frontmatter:i},o)}const ri=/^---[ \t]*\r?\n([\s\S]*?\n)?---[ \t]*(?:\r?\n|$)/;function ii(e){let t=ri.exec(e);return t?[(t[1]??``).replace(/\r?\n$/,``),t[0].length]:[]}function ai(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...Y(e,t,n));while(t.nextSibling());return t.parent(),r}function Y(e,t,n){switch(t.type.id){case B.ATXHeading1:return[X(e,t,n,1,!1)];case B.ATXHeading2:return[X(e,t,n,2,!1)];case B.ATXHeading3:return[X(e,t,n,3,!1)];case B.ATXHeading4:return[X(e,t,n,4,!1)];case B.ATXHeading5:return[X(e,t,n,5,!1)];case B.ATXHeading6:return[X(e,t,n,6,!1)];case B.SetextHeading1:return[X(e,t,n,1,!0)];case B.SetextHeading2:return[X(e,t,n,2,!0)];case B.Paragraph:return[Q(e,t,n)];case B.CommentBlock:return[di(e,t,n)];case B.HTMLBlock:case B.ProcessingInstructionBlock:return[Q(e,t,n)];case B.Blockquote:return[fi(e,t,n)];case B.BulletList:return pi(e,t,n,`bullet`);case B.OrderedList:return pi(e,t,n,`ordered`);case B.FencedCode:case B.CodeBlock:return[hi(e,t,n)];case B.HorizontalRule:{let r=n.slice(t.from,t.to).trimEnd();return[e.horizontalRule({marker:r===`---`?null:r})]}case B.Table:return[gi(e,t,n)];case B.Task:return[Q(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[Q(e,t,n)])}}function X(e,t,n,r,i){let a=t.from,o=t.from,s=t.to,c=-1,l=-1;if(t.firstChild()){t.type.id===B.HeaderMark&&t.from===a&&(o=t.to);let e=-1,n=-1,r=-1;do e=t.type.id,n=t.from,r=t.to;while(t.nextSibling());e===B.HeaderMark&&n>o&&(s=n,c=n,l=r),t.parent()}let u=li(n.slice(o,s),Z(n,o)).trim(),d=i?oi(n,c,l)||1:null,f=!i&&c>=0&&si(n,c,l)||null;return e.heading({level:r,setextUnderline:d,closingHashes:f},u)}function oi(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++){let t=e.charCodeAt(i);(t===61||t===45)&&r++}return r}function si(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++)e.charCodeAt(i)===35&&r++;return r}function Z(e,t){let n=e.lastIndexOf(`
3
+ `,t-1)+1,r=0;for(let i=n;i<t;i++)r+=e.charCodeAt(i)===9?4-r%4:1;return r}function ci(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 li(e,t){return t===0||!e.includes(`
4
4
  `)?e:e.split(`
5
- `).map((e,n)=>n===0?e:Qr(e,t)).join(`
6
- `)}function Z(e,t,n){return e.paragraph($r(t,n))}function Q(e,t,n){let r=t.from,i=t.to,a=X(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===z.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,F(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),Z(e,o,a)}return Z(e,n.slice(r,i),a)}function ei(e,t,n){let r=X(n,t.from),i=$r(n.slice(t.from,t.to),r);return e.htmlComment({content:i})}function ti(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===z.QuoteMark)continue;r.push(...J(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function ni(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===z.ListItem&&i.push(ri(e,t,n,r));while(t.nextSibling());t.parent()}return i}function ri(e,t,n,r){let i=[],a,o,s,c,l,u;if(t.firstChild()){do{if(t.type.id!==z.ListMark&&u==null&&(u=X(n,t.from)),t.type.id===z.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?`+`:`-`}l=X(n,t.to);continue}if(r===`bullet`&&t.type.id===z.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===z.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()}F(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(Z(e,c,X(n,r)));continue}i.push(...J(e,t,n))}while(t.nextSibling());t.parent()}let d=u!=null&&l!=null?u-l:1;return e.list({kind:a==null?r:`task`,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:!1,marker:c,taskMarker:o,markerGap:d>=2&&d<=4?d:1},i)}function ii(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case z.CodeInfo:r=n.slice(t.from,t.to);break;case z.CodeText:i+=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function ai(e,t,n){let r=0;if(t.firstChild()){do t.type.id===z.TableDelimiter&&(r=oi(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===z.TableHeader?i.push(si(e,t,n,!0,r)):a===z.TableRow&&i.push(si(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function oi(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function si(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===z.TableDelimiter,r=0;do if(t.type.id===z.TableDelimiter)r++;else if(t.type.id===z.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 ci(e,t={}){let n=new fi;return t.frontmatter&&li(e.attrs.frontmatter,n),pi(e,n),n.finish()}function li(e,t){e!==null&&(t.write(`---`),t.write(`
5
+ `).map((e,n)=>n===0?e:ci(e,t)).join(`
6
+ `)}function ui(e,t,n){return e.paragraph(li(t,n))}function Q(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===B.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,I(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),ui(e,o,a)}return ui(e,n.slice(r,i),a)}function di(e,t,n){let r=Z(n,t.from),i=li(n.slice(t.from,t.to),r);return e.htmlComment({content:i})}function fi(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===B.QuoteMark)continue;r.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function pi(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===B.ListItem&&i.push(mi(e,t,n,r));while(t.nextSibling());t.parent()}return i}function mi(e,t,n,r){let i=[],a,o,s,c,l,u;if(t.firstChild()){do{if(t.type.id!==B.ListMark&&u==null&&(u=Z(n,t.from)),t.type.id===B.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?`+`:`-`}l=Z(n,t.to);continue}if(r===`bullet`&&t.type.id===B.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===B.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()}I(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(ui(e,c,Z(n,r)));continue}i.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}let d=u!=null&&l!=null?u-l:1;return e.list({kind:a==null?r:`task`,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:!1,marker:c,taskMarker:o,markerGap:d>=2&&d<=4?d:1},i)}function hi(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case B.CodeInfo:r=n.slice(t.from,t.to);break;case B.CodeText:i+=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function gi(e,t,n){let r=0;if(t.firstChild()){do t.type.id===B.TableDelimiter&&(r=_i(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===B.TableHeader?i.push(vi(e,t,n,!0,r)):a===B.TableRow&&i.push(vi(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function _i(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function vi(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===B.TableDelimiter,r=0;do if(t.type.id===B.TableDelimiter)r++;else if(t.type.id===B.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 yi(e,t={}){let n=new Ci;return t.frontmatter&&bi(e.attrs.frontmatter,n),wi(e,n),n.finish()}function bi(e,t){e!==null&&(t.write(`---`),t.write(`
7
7
  `),e!==``&&(t.write(e),t.write(`
8
- `)),t.write(`---`),t.closeBlock())}const ui=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function di(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){_i(e,t);let i=n.level===1?`=`:`-`;t.write(`
9
- `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(ui[n.level]??`# `),_i(e,t),t.closeBlock()}var fi=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(`
8
+ `)),t.write(`---`),t.closeBlock())}const xi=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function Si(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){Oi(e,t);let i=n.level===1?`=`:`-`;t.write(`
9
+ `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(xi[n.level]??`# `),Oi(e,t);let i=n.closingHashes;i!=null&&i>0&&t.write(` `+`#`.repeat(i)),t.closeBlock()}var Ci=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(`
10
10
  `)){this.parts.push(e);return}let t=e.split(`
11
11
  `);for(let e=0;e<t.length;e++)e>0&&this.parts.push(`
12
12
  `,this.linePrefix),t[e]!==``&&this.parts.push(t[e])}closeBlock(){this.atLineStart&&this.pendingFirst!==null&&(this.emitDeferredBlankLine(),this.parts.push(this.pendingFirst.trimEnd()),this.pendingFirst=null,this.atLineStart=!1),this.atLineStart||this.parts.push(`
13
13
  `),this.atLineStart=!0,this.deferredBlankPrefix=this.linePrefix}suppressBlank(){this.deferredBlankPrefix=null}withPrefix(e,t,n){let r=this.linePrefix,i=this.pendingFirst;if(this.linePrefix=r+e,t!==null){let e=i??r;this.pendingFirst=e+t}n(),this.linePrefix=r,this.pendingFirst=t===null?i:null}finish(){return this.parts.join(``).replace(/\s+$/,``)+`
14
14
  `}emitDeferredBlankLine(){let e=this.deferredBlankPrefix;e!==null&&(this.parts.push(e.trimEnd(),`
15
- `),this.deferredBlankPrefix=null)}};function pi(e,t){switch(e.type.name){case`doc`:mi(e,t);return;case`paragraph`:_i(e,t),t.closeBlock();return;case`heading`:di(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>mi(e,t)),t.closeBlock();return;case`list`:vi(e,t,gi(e));return;case`codeBlock`:yi(e,t);return;case`horizontalRule`:{let{marker:n}=e.attrs;t.write(n||`---`),t.closeBlock();return}case`htmlComment`:{let{content:n}=e.attrs;t.write(n),t.closeBlock();return}case`table`:bi(e,t);return;case`text`:e.text&&t.write(e.text);return}}function mi(e,t,n=!1){let r=e.childCount,i=0;for(;i<r;){let a=e.child(i);if(a.type.name!==`list`){n&&i>0&&t.suppressBlank(),pi(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=hi(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),vi(e.child(r),t,s);i=o}}function hi(e,t,n){for(let r=t;r<n;r++)if(!gi(e.child(r)))return!1;return!0}function gi(e){let t=e.childCount;for(let n=0;n<t;n++){let t=e.child(n);if(t.type.name!==`list`&&!(t.type.name===`paragraph`&&n===0))return!1}return!0}function _i(e,t){let n=e.childCount;for(let r=0;r<n;r++){let n=e.child(r);n.isText&&n.text&&t.write(n.text)}}function vi(e,t,n){let r=e.attrs,i=r.marker===`*`||r.marker===`+`?r.marker:`-`,a=r.marker===`)`?`)`:`.`,o=r.taskMarker===`X`?`X`:`x`,s=Math.min(Math.max(r.markerGap??1,1),4),c=`${r.kind===`ordered`?`${r.order??1}${a}`:i}${` `.repeat(s)}`,l=r.kind===`task`?`${c}[${r.checked?o:` `}] `:c,u=` `.repeat(c.length);t.withPrefix(u,l,()=>mi(e,t,n)),t.closeBlock()}function yi(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(Jn(r,2)+1);t.write(i),n&&t.write(n),t.write(`
15
+ `),this.deferredBlankPrefix=null)}};function wi(e,t){switch(e.type.name){case`doc`:Ti(e,t);return;case`paragraph`:Oi(e,t),t.closeBlock();return;case`heading`:Si(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>Ti(e,t)),t.closeBlock();return;case`list`:ki(e,t,Di(e));return;case`codeBlock`:Ai(e,t);return;case`horizontalRule`:{let{marker:n}=e.attrs;t.write(n||`---`),t.closeBlock();return}case`htmlComment`:{let{content:n}=e.attrs;t.write(n),t.closeBlock();return}case`table`:ji(e,t);return;case`text`:e.text&&t.write(e.text);return}}function Ti(e,t,n=!1){let r=e.childCount,i=0;for(;i<r;){let a=e.child(i);if(a.type.name!==`list`){n&&i>0&&t.suppressBlank(),wi(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=Ei(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),ki(e.child(r),t,s);i=o}}function Ei(e,t,n){for(let r=t;r<n;r++)if(!Di(e.child(r)))return!1;return!0}function Di(e){let t=e.childCount;for(let n=0;n<t;n++){let t=e.child(n);if(t.type.name!==`list`&&!(t.type.name===`paragraph`&&n===0))return!1}return!0}function Oi(e,t){let n=e.childCount;for(let r=0;r<n;r++){let n=e.child(r);n.isText&&n.text&&t.write(n.text)}}function ki(e,t,n){let r=e.attrs,i=r.marker===`*`||r.marker===`+`?r.marker:`-`,a=r.marker===`)`?`)`:`.`,o=r.taskMarker===`X`?`X`:`x`,s=Math.min(Math.max(r.markerGap??1,1),4),c=`${r.kind===`ordered`?`${r.order??1}${a}`:i}${` `.repeat(s)}`,l=r.kind===`task`?`${c}[${r.checked?o:` `}] `:c,u=` `.repeat(c.length);t.withPrefix(u,l,()=>Ti(e,t,n)),t.closeBlock()}function Ai(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(rr(r,2)+1);t.write(i),n&&t.write(n),t.write(`
16
16
  `),r&&(t.write(r),t.write(`
17
- `)),t.write(i),t.closeBlock()}function bi(e,t){let n=e.childCount;if(n===0)return;let r=[],i=0,a=-1;for(let t=0;t<n;t++){let n=e.child(t),o=[],s=!1;for(let e=0;e<n.childCount;e++){let t=n.child(e);t.type.name===`tableHeaderCell`&&(s=!0),o.push(Si(t))}s&&a<0&&(a=t),o.length>i&&(i=o.length),r.push(o)}if(i===0)return;let o=`| `+Array(i).fill(`---`).join(` | `)+` |`,s=a>=0?r[a]:Array(i).fill(``);t.write(xi(s,i)),t.write(`
17
+ `)),t.write(i),t.closeBlock()}function ji(e,t){let n=e.childCount;if(n===0)return;let r=[],i=0,a=-1;for(let t=0;t<n;t++){let n=e.child(t),o=[],s=!1;for(let e=0;e<n.childCount;e++){let t=n.child(e);t.type.name===`tableHeaderCell`&&(s=!0),o.push(Ni(t))}s&&a<0&&(a=t),o.length>i&&(i=o.length),r.push(o)}if(i===0)return;let o=`| `+Array(i).fill(`---`).join(` | `)+` |`,s=a>=0?r[a]:Array(i).fill(``);t.write(Mi(s,i)),t.write(`
18
18
  `),t.write(o);for(let e=0;e<n;e++)e!==a&&(t.write(`
19
- `),t.write(xi(r[e],i)));t.closeBlock()}function xi(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function Si(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
19
+ `),t.write(Mi(r[e],i)));t.closeBlock()}function Mi(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function Ni(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
20
20
  `)?t:t.replaceAll(`|`,String.raw`\|`).replaceAll(`
21
- `,` `)}function Ci(e){return e.replace(/\n+$/u,``)}function wi(e){return/^[\s>]*$/u.test(e)}function Ti(e){return e.split(`
22
- `).filter(e=>!wi(e))}function Ei(e,t={}){let n=ci(q(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(Ci(n)===Ci(e))return`exact`;let r=Ti(e),i=Ti(n);return r.length===i.length&&r.every((e,t)=>e.trim()===i[t].trim())?`normalizing`:`lossy`}const Di=(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(S.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Oi(){return v(l({Enter:Di}),t.high)}const ki=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Ai=xe.map(e=>e.name).filter(e=>!ki.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function ji(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const Mi=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,Ni=/\/status(?:es)?\/(\d+)/;function Pi(e){let t;try{t=new URL(e)}catch{return}if(Mi.test(t.hostname))return Ni.exec(t.pathname)?.[1]}const Fi=e=>{let t=Pi(e);if(!t)return;let n=ji()?`dark`:`light`;return{kind:`tweet`,key:`tweet:${t}`,src:`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${n}&dnt=true`,title:`Tweet`,className:`md-embed md-embed-tweet`,testid:`tweet-embed`}};function Ii(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=!1,r=()=>{n||(n=!0,window.removeEventListener(`message`,t),i.disconnect())},i=new MutationObserver(()=>{e.isConnected||r()});return i.observe(document.body,{childList:!0,subtree:!0}),r}const Li=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,Ri=/^(?:www\.)?youtu\.be$/i,zi=/^[\w-]{11}$/;function Bi(e){let t;try{t=new URL(e)}catch{return}let n=null;if(Ri.test(t.hostname))n=t.pathname.slice(1);else if(Li.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||!zi.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?Vi(r):void 0;return{videoId:n,startSeconds:i}}function Vi(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 Hi=[e=>{let t=Bi(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{kind:`youtube`,key:`youtube:${t.videoId}:${t.startSeconds??0}`,src:`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,title:`YouTube video`,className:`md-embed md-embed-youtube`,testid:`youtube-embed`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,allowFullscreen:!0}},Fi];function Ui(e){for(let t of Hi){let n=t(e);if(n)return n}}const Wi=new x(`meowdown-embed-paste`);function Gi(e){let t=e.trim();if(!(!t||/\s/.test(t)))return Ui(t)?t:void 0}function Ki(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
23
- `)}function qi(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(tt(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(tt(i))}function Ji(){return m(new b({key:Wi,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=Ki(t,n);if(!i)return!1;let a=Gi(i);return a?(qi(e,a),!0):!1}}}))}const Yi=new x(`meowdown-exit-boundary`);function Xi(e,t){let{$anchor:n,$head:r}=e.selection,i=t>0?n.max(r):n.min(r),a=i.parent.inlineContent?i.depth?e.doc.resolve(t>0?i.after():i.before()):void 0:i;return!!(a&&ye.findFrom(a,t))}function Zi(e,t){let{state:n}=e,{selection:r}=n;return g(r)&&!r.empty||ne(r)||r.$from.parent.inlineContent&&!e.endOfTextblock(t<0?`up`:`down`)?!0:Xi(n,t)}function Qi(e){return new b({key:Yi,props:{handleKeyDown:(t,n)=>{if(n.shiftKey||n.altKey||n.ctrlKey||n.metaKey)return!1;let r=n.key===`ArrowUp`?-1:n.key===`ArrowDown`?1:void 0;return!(!r||Zi(t,r)||e({direction:r<0?`up`:`down`,event:n})===!1)}}})}function $i(e){return v(m(Qi(e)),t.low)}const ea=(e,t)=>{let n={type:`highlight`,children:e.all(t)};return e.patch(t,n),n},ta=(e,t,n,r)=>{let i=e,a=n.createTracker(r),o=a.move(`==`);return o+=a.move(n.containerPhrasing(i,{...a.current(),before:o,after:`=`})),o+=a.move(`==`),o};function na(){return ot().use(nt).use(rt,{handlers:{mark:ea}}).use(it).use(at,{bullet:`-`,emphasis:`*`,strong:`*`,fence:"`",fences:!0,rule:`-`,ruleRepetition:3,listItemIndent:`one`,handlers:{highlight:ta}}).freeze()}const ra=y(na);function ia(e){return String(ra().processSync(e))}const aa=new x(`meowdown-html-paste`);function oa(){return m(new b({key:aa,props:{transformPastedHTML:(e,t)=>{if(e.includes(`data-pm-slice`))return e;let n=t.state.selection.$from.parent;if(!n.inlineContent||n.type.spec.code)return e;let r=ia(e);if(!r.trim())return e;let i=q(r,{nodes:qr(t.state.schema)}),a=Ne.fromSchema(t.state.schema),o=document.createElement(`div`);return o.append(a.serializeFragment(i.content)),o.innerHTML}}}))}const sa=new x(`meowdown-image-click`);function ca(e,t){let n=D(e,t,`mdImage`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function la(e){return m(new b({key:sa,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-view-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=ca(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}function ua(e){return/^https?:\/\//i.test(e)?e:void 0}function da(e){let t=document.createElement(`iframe`);return t.src=e.src,t.title=e.title,t.className=e.className,t.dataset.testid=e.testid,t.loading=`lazy`,t.referrerPolicy=`strict-origin-when-cross-origin`,t.setAttribute(`frameborder`,`0`),e.allow&&(t.allow=e.allow),e.allowFullscreen&&(t.allowFullscreen=!0),e.kind===`tweet`&&Ii(t),t}function fa(e,t,n){let r=Ui(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-view-preview md-atom-view-preview`,e.appendChild(da(r)),e}let i=(n.resolveImageUrl??ua)(e);if(!i)return;let a=document.createElement(`span`);a.className=`md-image-view-preview md-atom-view-preview`,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 pa(e){return t=>{let{src:n,alt:r}=t.attrs,i=document.createElement(`span`);i.className=`md-image-view md-atom-view`;let a=document.createElement(`span`);a.className=`md-image-view-content md-atom-view-content`;let o=fa(n,r,e);return o&&(o.contentEditable=`false`,i.appendChild(o)),i.appendChild(a),{dom:i,contentDOM:a,ignoreMutation:e=>!a.contains(e.target)}}}function ma(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const ha=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function ga(e,t,n,r=ha,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 _a(e){return new b({key:new x(`image-input`),props:{handlePaste:(t,n)=>{let r=ma(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(ga(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=ma(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(ga(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function va(e={}){return _(d({name:`mdImage`,constructor:pa(e)}),v(m(_a(e)),t.high))}const ya={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-Shift-h":`Highlight`,"Mod-k":`Link`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`};function $(e){return m(new b({key:e.key,props:{handleClick:(t,n,r)=>{if(!r.target?.closest?.(e.selector))return!1;let i=e.findPayloadAt(t.state,n);return i==null?!1:(e.preventDefault&&r.preventDefault(),e.onClick(i,r),!0)}}}))}const ba=new x(`meowdown-link-click`);function xa(e){return $({key:ba,selector:`.md-link`,preventDefault:!0,findPayloadAt:(e,t)=>K(e,t)?.href,onClick:(t,n)=>e({href:t,event:n})})}function Sa(e){let t,n=(n,r)=>{let i=r.target;if(!i||!ue(i))return;let a=i.closest(e.selector);if(!a||a===t)return;let o=n.posAtDOM(a,0),s=e.findPayloadAt(n.state,o);s!=null&&(t=a,e.onHoverChange({payload:s,element:a}))},r=n=>{if(!t)return;let r=n.relatedTarget;r&&t.contains(r)||(t=void 0,e.onHoverChange(void 0))};return _(s(`mouseover`,(e,t)=>n(e,t)),s(`mouseout`,(e,t)=>r(t)))}function Ca(e){return Sa({selector:`.md-link`,findPayloadAt:(e,t)=>K(e,t),onHoverChange:e})}const wa=new x(`meowdown-markdown-copy`);function Ta(){return m(new b({key:wa,props:{clipboardTextSerializer:(e,t)=>{let n=e.content,r;try{r=t.state.schema.topNodeType.createAndFill(void 0,n)??void 0}catch{r=void 0}return r?ci(r).replace(/\n+$/,``):n.textBetween(0,n.size,`
21
+ `,` `)}function Pi(e){return e.replace(/\n+$/u,``)}function Fi(e){return/^[\s>]*$/u.test(e)}function Ii(e){return e.split(`
22
+ `).filter(e=>!Fi(e))}function Li(e){return e.trim().replaceAll(/\s+/gu,` `)}function Ri(e,t={}){let n=yi(J(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(Pi(n)===Pi(e))return`exact`;let r=Ii(e),i=Ii(n);return r.length===i.length&&r.every((e,t)=>Li(e)===Li(i[t]))?`normalizing`:`lossy`}const zi=(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(S.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Bi(){return v(l({Enter:zi}),t.high)}const Vi=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Hi=xe.map(e=>e.name).filter(e=>!Vi.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function Ui(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const Wi=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,Gi=/\/status(?:es)?\/(\d+)/;function Ki(e){let t;try{t=new URL(e)}catch{return}if(Wi.test(t.hostname))return Gi.exec(t.pathname)?.[1]}const qi=e=>{let t=Ki(e);if(!t)return;let n=Ui()?`dark`:`light`;return{kind:`tweet`,key:`tweet:${t}`,src:`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${n}&dnt=true`,title:`Tweet`,className:`md-embed md-embed-tweet`,testid:`tweet-embed`}};function Ji(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=!1,r=()=>{n||(n=!0,window.removeEventListener(`message`,t),i.disconnect())},i=new MutationObserver(()=>{e.isConnected||r()});return i.observe(document.body,{childList:!0,subtree:!0}),r}const Yi=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,Xi=/^(?:www\.)?youtu\.be$/i,Zi=/^[\w-]{11}$/;function Qi(e){let t;try{t=new URL(e)}catch{return}let n=null;if(Xi.test(t.hostname))n=t.pathname.slice(1);else if(Yi.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||!Zi.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?$i(r):void 0;return{videoId:n,startSeconds:i}}function $i(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 ea=[e=>{let t=Qi(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{kind:`youtube`,key:`youtube:${t.videoId}:${t.startSeconds??0}`,src:`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,title:`YouTube video`,className:`md-embed md-embed-youtube`,testid:`youtube-embed`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,allowFullscreen:!0}},qi];function ta(e){for(let t of ea){let n=t(e);if(n)return n}}const na=new x(`meowdown-embed-paste`);function ra(e){let t=e.trim();if(!(!t||/\s/.test(t)))return ta(t)?t:void 0}function ia(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
23
+ `)}function aa(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(tt(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(tt(i))}function oa(){return m(new b({key:na,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=ia(t,n);if(!i)return!1;let a=ra(i);return a?(aa(e,a),!0):!1}}}))}const sa=new x(`meowdown-exit-boundary`);function ca(e,t){let{$anchor:n,$head:r}=e.selection,i=t>0?n.max(r):n.min(r),a=i.parent.inlineContent?i.depth?e.doc.resolve(t>0?i.after():i.before()):void 0:i;return!!(a&&ye.findFrom(a,t))}function la(e,t){let{state:n}=e,{selection:r}=n;return g(r)&&!r.empty||ne(r)||r.$from.parent.inlineContent&&!e.endOfTextblock(t<0?`up`:`down`)?!0:ca(n,t)}function ua(e){return new b({key:sa,props:{handleKeyDown:(t,n)=>{if(n.shiftKey||n.altKey||n.ctrlKey||n.metaKey)return!1;let r=n.key===`ArrowUp`?-1:n.key===`ArrowDown`?1:void 0;return!(!r||la(t,r)||e({direction:r<0?`up`:`down`,event:n})===!1)}}})}function da(e){return v(m(ua(e)),t.low)}const fa=(e,t)=>{let n={type:`highlight`,children:e.all(t)};return e.patch(t,n),n},pa=(e,t,n,r)=>{let i=e,a=n.createTracker(r),o=a.move(`==`);return o+=a.move(n.containerPhrasing(i,{...a.current(),before:o,after:`=`})),o+=a.move(`==`),o};function ma(){return ot().use(nt).use(rt,{handlers:{mark:fa}}).use(it).use(at,{bullet:`-`,emphasis:`*`,strong:`*`,fence:"`",fences:!0,rule:`-`,ruleRepetition:3,listItemIndent:`one`,handlers:{highlight:pa}}).freeze()}const ha=y(ma);function ga(e){return String(ha().processSync(e))}const _a=new x(`meowdown-html-paste`);function va(){return m(new b({key:_a,props:{transformPastedHTML:(e,t)=>{if(e.includes(`data-pm-slice`))return e;let n=t.state.selection.$from.parent;if(!n.inlineContent||n.type.spec.code)return e;let r=ga(e);if(!r.trim())return e;let i=J(r,{nodes:ni(t.state.schema)}),a=Ne.fromSchema(t.state.schema),o=document.createElement(`div`);return o.append(a.serializeFragment(i.content)),o.innerHTML}}}))}const ya=new x(`meowdown-image-click`);function ba(e,t){let n=D(e,t,`mdImage`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function xa(e){return m(new b({key:ya,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-view-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=ba(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}function Sa(e){return/^https?:\/\//i.test(e)?e:void 0}function Ca(e){let t=document.createElement(`iframe`);return t.src=e.src,t.title=e.title,t.className=e.className,t.dataset.testid=e.testid,t.loading=`lazy`,t.referrerPolicy=`strict-origin-when-cross-origin`,t.setAttribute(`frameborder`,`0`),e.allow&&(t.allow=e.allow),e.allowFullscreen&&(t.allowFullscreen=!0),e.kind===`tweet`&&Ji(t),t}function wa(e,t,n,r,i,a){let o=ta(e);if(o){let e=document.createElement(`span`);return e.className=`md-image-view-preview md-atom-view-preview`,e.appendChild(Ca(o)),e}let s=(r.resolveImageUrl??Sa)(e);if(!s)return;let c=document.createElement(`span`);return c.className=`md-image-view-preview md-atom-view-preview`,c.dataset.testid=`image-preview`,c.appendChild(Ta(s,t,n,i,a)),c}function Ta(e,t,n,r,i){ct(),st();let a=document.createElement(`prosekit-resizable-root`);a.className=`md-image-resizable`,a.dataset.testid=`image-resizable`,n!=null&&a.setAttribute(`data-width`,String(n));let o=document.createElement(`img`);o.src=e,o.alt=t,o.draggable=!1,o.addEventListener(`load`,()=>{let{naturalWidth:e,naturalHeight:t}=o,r=e/t;if(Number.isFinite(r)&&r>0&&a.setAttribute(`data-aspect-ratio`,String(r)),n==null&&e>0&&t>0){let t=Math.round(Math.min(e,500*r));a.setAttribute(`data-width`,String(t))}}),a.appendChild(o);let s=document.createElement(`prosekit-resizable-handle`);return s.className=`md-image-resize-handle`,s.setAttribute(`position`,`bottom-right`),s.addEventListener(`click`,e=>e.stopPropagation()),a.appendChild(s),a.addEventListener(`resizeEnd`,e=>{Ea(r,i,e.detail.width)}),a}function Ea(e,t,n){let r=e.posAtDOM(t,0),i=D(e.state,r,`mdImage`);if(!i)return;let a=e.state.doc.textBetween(i.from,i.to),o=bn(a),s=i.from+o.length,c=a.slice(o.length),l=yn({..._n(c)??{},width:Math.round(n)});l!==c&&e.dispatch(e.state.tr.insertText(l,s,i.to))}function Da(e){return(t,n)=>{let{src:r,alt:i,width:a}=t.attrs,o=document.createElement(`span`);o.className=`md-image-view md-atom-view`;let s=document.createElement(`span`);s.className=`md-image-view-content md-atom-view-content`;let c=wa(r,i,a,e,n,s);return c&&(c.contentEditable=`false`,o.appendChild(c)),o.appendChild(s),{dom:o,contentDOM:s,ignoreMutation:e=>!s.contains(e.target)}}}function Oa(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const ka=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function Aa(e,t,n,r=ka,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 ja(e){return new b({key:new x(`image-input`),props:{handlePaste:(t,n)=>{let r=Oa(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Aa(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=Oa(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Aa(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Ma(e={}){return _(d({name:`mdImage`,constructor:Da(e)}),v(m(ja(e)),t.high))}const Na={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-Shift-h":`Highlight`,"Mod-k":`Link`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`};function $(e){return m(new b({key:e.key,props:{handleClick:(t,n,r)=>{if(!r.target?.closest?.(e.selector))return!1;let i=e.findPayloadAt(t.state,n);return i==null?!1:(e.preventDefault&&r.preventDefault(),e.onClick(i,r),!0)}}}))}const Pa=new x(`meowdown-link-click`);function Fa(e){return $({key:Pa,selector:`.md-link`,preventDefault:!0,findPayloadAt:(e,t)=>q(e,t)?.href,onClick:(t,n)=>e({href:t,event:n})})}function Ia(e){let t,n=(n,r)=>{let i=r.target;if(!i||!ue(i))return;let a=i.closest(e.selector);if(!a||a===t)return;let o=n.posAtDOM(a,0),s=e.findPayloadAt(n.state,o);s!=null&&(t=a,e.onHoverChange({payload:s,element:a}))},r=n=>{if(!t)return;let r=n.relatedTarget;r&&t.contains(r)||(t=void 0,e.onHoverChange(void 0))};return _(s(`mouseover`,(e,t)=>n(e,t)),s(`mouseout`,(e,t)=>r(t)))}function La(e){return Ia({selector:`.md-link`,findPayloadAt:(e,t)=>q(e,t),onHoverChange:e})}const Ra=new x(`meowdown-markdown-copy`);function za(){return m(new b({key:Ra,props:{clipboardTextSerializer:(e,t)=>{let n=e.content,r;try{r=t.state.schema.topNodeType.createAndFill(void 0,n)??void 0}catch{r=void 0}return r?yi(r).replace(/\n+$/,``):n.textBetween(0,n.size,`
24
24
  `,`
25
- `)}}}))}const Ea=new x(`meowdown-tag-click`);function Da(e,t){let n=D(e,t,`mdTag`);if(!n)return;let r=e.doc.textBetween(n.from,n.to),i=r.startsWith(`#`)?r.slice(1):r;return{from:n.from,to:n.to,tag:i}}function Oa(e){return $({key:Ea,selector:`.md-tag`,preventDefault:!1,findPayloadAt:(e,t)=>Da(e,t)?.tag,onClick:(t,n)=>e({tag:t,event:n})})}const ka=new x(`meowdown-wikilink-click`);function Aa(e,t){let n=D(e,t,`mdWikilink`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function ja(e){return $({key:ka,selector:`.md-wikilink-view-preview`,preventDefault:!1,findPayloadAt:(e,t)=>Aa(e,t)?.target,onClick:(t,n)=>e({target:t,event:n})})}const Ma=(e,t)=>{let{selection:n}=e;if(!n.empty&&!n.$head.sameParent(n.$anchor))return!1;let r=e.doc.textBetween(n.from,n.to);if(r.startsWith(`[[`))return!1;r.startsWith(`[`)&&(r=r.slice(1));let i=`[[`+r;if(t){let r=e.tr.insertText(i,n.from,n.to);r.setSelection(S.create(r.doc,n.from+i.length)),st(r),t(r.scrollIntoView())}return!0};function Na(){return l({"Mod-Shift-k":Ma})}function Pa(e,t){let n=()=>{let n=e.coordsAtPos(t.from),r=e.coordsAtPos(t.to),i=Math.min(n.left,r.left),a=Math.max(n.right,r.right),o=Math.min(n.top,r.top),s=Math.max(n.bottom,r.bottom);return new DOMRect(i,o,a-i,s-o)};return{getBoundingClientRect:n,getClientRects:()=>[n()]}}export{ya as EDITOR_KEY_BINDINGS,e as Priority,Ei as checkRoundTrip,Ai as codeBlockLanguages,ua as defaultResolveImageUrl,Oi as defineBulletAfterHeading,Ot as defineCodeBlockSyntaxHighlight,Br as defineEditorExtension,Ji as defineEmbedPaste,$i as defineExitBoundaryHandler,Ht as defineHTMLComment,oa as defineHTMLPaste,va as defineImage,la as defineImageClickHandler,xa as defineLinkClickHandler,_r as defineLinkCommands,yr as defineLinkEditKeymap,Ca as defineLinkHoverHandler,dt as defineMarkMode,Ta as defineMarkdownCopy,ce as definePlaceholder,le as defineReadonly,Oa as defineTagClickHandler,ja as defineWikilinkClickHandler,Na as defineWikilinkTrigger,ci as docToMarkdown,At as getCodeTokens,K as getLinkUnitAt,Ur as getMarkBuilders,Pa as getVirtualElementFromRange,vn as inlineTextToMarkChunks,mr as insertLink,Ii as listenForTweetHeight,q as markdownToDoc,Ui as matchEmbed,gr as removeLink,hr as updateLink,oe as withPriority};
25
+ `)}}}))}const Ba=new x(`meowdown-tag-click`);function Va(e,t){let n=D(e,t,`mdTag`);if(!n)return;let r=e.doc.textBetween(n.from,n.to),i=r.startsWith(`#`)?r.slice(1):r;return{from:n.from,to:n.to,tag:i}}function Ha(e){return $({key:Ba,selector:`.md-tag`,preventDefault:!1,findPayloadAt:(e,t)=>Va(e,t)?.tag,onClick:(t,n)=>e({tag:t,event:n})})}const Ua=new x(`meowdown-wikilink-click`);function Wa(e,t){let n=D(e,t,`mdWikilink`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function Ga(e){return $({key:Ua,selector:`.md-wikilink-view-preview`,preventDefault:!1,findPayloadAt:(e,t)=>Wa(e,t)?.target,onClick:(t,n)=>e({target:t,event:n})})}const Ka=(e,t)=>{let{selection:n}=e;if(!n.empty&&!n.$head.sameParent(n.$anchor))return!1;let r=e.doc.textBetween(n.from,n.to);if(r.startsWith(`[[`))return!1;r.startsWith(`[`)&&(r=r.slice(1));let i=`[[`+r;if(t){let r=e.tr.insertText(i,n.from,n.to);r.setSelection(S.create(r.doc,n.from+i.length)),lt(r),t(r.scrollIntoView())}return!0};function qa(){return l({"Mod-Shift-k":Ka})}function Ja(e,t){let n=()=>{let n=e.coordsAtPos(t.from),r=e.coordsAtPos(t.to),i=Math.min(n.left,r.left),a=Math.max(n.right,r.right),o=Math.min(n.top,r.top),s=Math.max(n.bottom,r.bottom);return new DOMRect(i,o,a-i,s-o)};return{getBoundingClientRect:n,getClientRects:()=>[n()]}}export{Na as EDITOR_KEY_BINDINGS,e as Priority,Ri as checkRoundTrip,Hi as codeBlockLanguages,Sa as defaultResolveImageUrl,Bi as defineBulletAfterHeading,kt as defineCodeBlockSyntaxHighlight,Yr as defineEditorExtension,oa as defineEmbedPaste,da as defineExitBoundaryHandler,Wt as defineHTMLComment,va as defineHTMLPaste,Ma as defineImage,xa as defineImageClickHandler,Fa as defineLinkClickHandler,Er as defineLinkCommands,Or as defineLinkEditKeymap,La as defineLinkHoverHandler,pt as defineMarkMode,za as defineMarkdownCopy,ce as definePlaceholder,le as defineReadonly,Ha as defineTagClickHandler,Ga as defineWikilinkClickHandler,qa as defineWikilinkTrigger,yi as docToMarkdown,jt as getCodeTokens,q as getLinkUnitAt,Qr as getMarkBuilders,Ja as getVirtualElementFromRange,En as inlineTextToMarkChunks,Cr as insertLink,Ji as listenForTweetHeight,J as markdownToDoc,ta as matchEmbed,Tr as removeLink,wr as updateLink,oe as withPriority};
package/dist/style.css CHANGED
@@ -547,6 +547,7 @@ img.ProseMirror-separator {
547
547
 
548
548
  .ProseMirror {
549
549
  & .md-image-view {
550
+ max-width: 100%;
550
551
  margin-left: 2px;
551
552
  margin-right: 2px;
552
553
  }
@@ -554,12 +555,51 @@ img.ProseMirror-separator {
554
555
  & .md-image-view-preview {
555
556
  outline-offset: 2px;
556
557
  border-radius: 6px;
558
+ max-width: 100%;
559
+ display: inline-flex;
557
560
  }
558
561
 
559
- & .md-image-view-preview img {
560
- max-height: var(--meowdown-image-max-height, 24rem);
561
- border-radius: var(--meowdown-image-radius, .5rem);
562
+ & .md-image-resizable {
563
+ isolation: isolate;
564
+ min-width: 2.5rem;
562
565
  max-width: 100%;
566
+ min-height: 2.5rem;
567
+ display: inline-block;
568
+ position: relative;
569
+ }
570
+
571
+ & .md-image-resizable img {
572
+ object-fit: contain;
573
+ border-radius: var(--meowdown-image-radius, .5rem);
574
+ width: 100%;
575
+ height: 100%;
576
+ display: block;
577
+ }
578
+
579
+ & .md-image-resize-handle {
580
+ box-sizing: border-box;
581
+ mix-blend-mode: exclusion;
582
+ cursor: nwse-resize;
583
+ pointer-events: none;
584
+ touch-action: none;
585
+ opacity: 0;
586
+ transform-origin: 100% 100%;
587
+ border-bottom: 3px solid #fff;
588
+ border-right: 3px solid #fff;
589
+ border-bottom-right-radius: 5px;
590
+ width: 14px;
591
+ height: 14px;
592
+ transition: opacity .12s, transform .12s;
593
+ position: absolute;
594
+ bottom: 4px;
595
+ right: 4px;
596
+ transform: scale(.8);
597
+ }
598
+
599
+ & .md-image-resizable:hover .md-image-resize-handle, & .md-image-resizable[data-resizing] .md-image-resize-handle {
600
+ opacity: 1;
601
+ pointer-events: auto;
602
+ transform: scale(1);
563
603
  }
564
604
  }
565
605
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/core",
3
3
  "type": "module",
4
- "version": "0.27.0",
4
+ "version": "0.28.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -28,6 +28,7 @@
28
28
  "@prosekit/core": "^0.13.0-beta.3",
29
29
  "@prosekit/extensions": "^0.18.0-beta.9",
30
30
  "@prosekit/pm": "^0.1.19-beta.0",
31
+ "@prosekit/web": "^0.9.0-beta.11",
31
32
  "prosemirror-flat-list": "^0.6.0",
32
33
  "prosemirror-highlight": "^0.15.2",
33
34
  "rehype-parse": "^9.0.1",