@meowdown/core 0.17.4 → 0.19.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
@@ -65,6 +65,8 @@ Inline images (`![alt](src)`) stay literal text and render in place via a mark v
65
65
 
66
66
  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.
67
67
 
68
+ 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.
69
+
68
70
  Pressing Enter at the end of the document's first heading (the title line) can start a fresh empty bullet on the next line instead of a plain paragraph. `defineBulletAfterHeading()` binds this. It is not part of `defineEditorExtension`; add it explicitly.
69
71
 
70
72
  ## Re-exports
package/dist/index.d.ts CHANGED
@@ -2,7 +2,6 @@ import { Editor, Extension, ExtractNodeBuilders, PlainExtension, Priority, Union
2
2
  import { CodeBlockAttrs } from "@prosekit/extensions/code-block";
3
3
  import { HorizontalRuleExtension } from "@prosekit/extensions/horizontal-rule";
4
4
  import { ProseMirrorNode } from "@prosekit/pm/model";
5
- import { ListExtension } from "@prosekit/extensions/list";
6
5
  import { PlaceholderOptions, definePlaceholder } from "@prosekit/extensions/placeholder";
7
6
  import { defineReadonly } from "@prosekit/extensions/readonly";
8
7
 
@@ -23,6 +22,7 @@ type Frontmatter = string | null;
23
22
  *
24
23
  * For ordered list items, the marker is `.` or `)`.
25
24
  * For bullet and task list items, the marker is `-`, `*`, or `+`.
25
+ * For a task list item, the marker `+` renders a circle checkbox, while the other markers render a square checkbox.
26
26
  *
27
27
  * Defaults to null if unknown.
28
28
  */
@@ -34,21 +34,6 @@ type ListMarker = '.' | ')' | '-' | '*' | '+' | null;
34
34
  * serializer emits as the canonical lowercase `x`.
35
35
  */
36
36
  type TaskMarker = 'x' | 'X' | null;
37
- type ListMarkerExtension = Extension<{
38
- Nodes: {
39
- list: {
40
- marker?: ListMarker;
41
- };
42
- };
43
- }>;
44
- type ListTaskMarkerExtension = Extension<{
45
- Nodes: {
46
- list: {
47
- taskMarker?: TaskMarker;
48
- };
49
- };
50
- }>;
51
- type MeowdownListExtension = Union<[ListExtension, ListMarkerExtension, ListTaskMarkerExtension]>;
52
37
  //#endregion
53
38
  //#region src/extensions/horizontal-rule.d.ts
54
39
  interface MeowdownHorizontalRuleAttrs {
@@ -110,7 +95,30 @@ declare function defineEditorExtensionImpl(): import("@prosekit/core").Union<rea
110
95
  frontmatter?: Frontmatter;
111
96
  };
112
97
  };
113
- }>, import("@prosekit/extensions/text").TextExtension, import("@prosekit/extensions/blockquote").BlockquoteExtension, MeowdownListExtension, import("@prosekit/core").Union<readonly [import("@prosekit/extensions/heading").HeadingSpecExtension, import("@prosekit/core").Extension<{
98
+ }>, import("@prosekit/extensions/text").TextExtension, import("@prosekit/extensions/blockquote").BlockquoteExtension, import("@prosekit/core").Union<readonly [import("@prosekit/extensions/list").ListSpecExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").PlainExtension, import("@prosekit/extensions/list").ListCommandsExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").Extension<{
99
+ Nodes: {
100
+ list: {
101
+ marker?: ListMarker;
102
+ };
103
+ };
104
+ }>, import("@prosekit/core").Extension<{
105
+ Nodes: {
106
+ list: {
107
+ taskMarker?: TaskMarker;
108
+ };
109
+ };
110
+ }>, import("@prosekit/core").Extension<{
111
+ Nodes: {
112
+ list: {
113
+ markerGap?: number;
114
+ };
115
+ };
116
+ }>, import("@prosekit/core").Extension<{
117
+ Commands: {
118
+ wrapInCircleTask: [];
119
+ wrapInSquareTask: [];
120
+ };
121
+ }>]>, import("@prosekit/core").Union<readonly [import("@prosekit/extensions/heading").HeadingSpecExtension, import("@prosekit/core").Extension<{
114
122
  Nodes: {
115
123
  heading: import("@prosekit/extensions/heading").HeadingAttrs;
116
124
  };
@@ -251,6 +259,29 @@ declare function defineImageClickHandler(onClick: ImageClickHandler): PlainExten
251
259
  */
252
260
  declare function defineEmbedPaste(): PlainExtension;
253
261
  //#endregion
262
+ //#region src/extensions/html-paste.d.ts
263
+ /**
264
+ * Paste foreign rich-text HTML as meowdown Markdown. Rewrites the clipboard's
265
+ * `text/html` through `transformPastedHTML`: foreign HTML is converted to a
266
+ * Markdown string, reparsed into meowdown nodes (literal source text, no marks),
267
+ * and re-serialized to HTML so ProseMirror's own clipboard parser inserts it with
268
+ * the right open depths. `<strong>bold</strong>` thus lands as the text `**bold**`,
269
+ * which the inline-mark plugin renders.
270
+ */
271
+ declare function defineHTMLPaste(): PlainExtension;
272
+ //#endregion
273
+ //#region src/extensions/markdown-copy.d.ts
274
+ /**
275
+ * Serialize copied/cut content to Markdown for the clipboard's `text/plain`, so
276
+ * pasting meowdown content into a plain-text field yields real Markdown (`- `
277
+ * list markers, blank-line block separation) instead of bare `textContent`.
278
+ *
279
+ * The copied fragment is wrapped in a `doc` so the existing block serializer can
280
+ * walk it. A purely inline fragment (a partial-paragraph copy) does not fit
281
+ * `doc`'s `block+` content, so it falls back to the inline text.
282
+ */
283
+ declare function defineMarkdownCopy(): PlainExtension;
284
+ //#endregion
254
285
  //#region src/extensions/bullet-after-heading.d.ts
255
286
  /**
256
287
  * "Type a title, press Return, start bullets." When this extension is applied,
@@ -351,4 +382,4 @@ interface CheckRoundTripOptions {
351
382
  /** Classify how `markdown` survives the editor's parse-then-serialize round trip. */
352
383
  declare function checkRoundTrip(markdown: string, options?: CheckRoundTripOptions): RoundTripFidelity;
353
384
  //#endregion
354
- export { type CheckRoundTripOptions, type CodeBlockAttrs, type DocToMarkdownOptions, EDITOR_KEY_BINDINGS, type EditorExtension, type ImageClickHandler, type ImageClickPayload, type ImageOptions, type LinkClickHandler, type LinkClickPayload, type MarkMode, type MarkdownToDocOptions, type PlaceholderOptions, Priority, type RoundTripFidelity, type TypedEditor, type WikilinkClickHandler, type WikilinkClickPayload, checkRoundTrip, codeBlockLanguages, defineBulletAfterHeading, defineEditorExtension, defineEmbedPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineMarkMode, definePlaceholder, defineReadonly, defineWikilinkClickHandler, docToMarkdown, markdownToDoc, withPriority };
385
+ export { type CheckRoundTripOptions, type CodeBlockAttrs, type DocToMarkdownOptions, EDITOR_KEY_BINDINGS, type EditorExtension, type ImageClickHandler, type ImageClickPayload, type ImageOptions, type LinkClickHandler, type LinkClickPayload, type MarkMode, type MarkdownToDocOptions, type PlaceholderOptions, Priority, type RoundTripFidelity, type TypedEditor, type WikilinkClickHandler, type WikilinkClickPayload, checkRoundTrip, codeBlockLanguages, defineBulletAfterHeading, defineEditorExtension, defineEmbedPaste, defineHTMLPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineMarkMode, defineMarkdownCopy, definePlaceholder, defineReadonly, defineWikilinkClickHandler, docToMarkdown, markdownToDoc, withPriority };
package/dist/index.js CHANGED
@@ -1,23 +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,defineHistory as s,defineKeymap as c,defineMarkSpec as l,defineMarkView as u,defineNodeAttr as d,defineNodeSpec as f,definePlugin as p,getMarkRange as m,getMarkType as ee,getNodeType as h,isApple as te,isAtBlockStart as ne,isTextSelection as re,toggleNode as ie,union as g,unsetBlockType as ae,withPriority as oe,withPriority as _,withSkipCodeBlock as se}from"@prosekit/core";import{defineBlockquote as ce}from"@prosekit/extensions/blockquote";import{defineCodeBlock as le,defineCodeBlockHighlight as ue}from"@prosekit/extensions/code-block";import{defineDoc as de}from"@prosekit/extensions/doc";import{defineGapCursor as fe}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as pe}from"@prosekit/extensions/mod-click-prevention";import{defineText as me}from"@prosekit/extensions/text";import{defineVirtualSelection as he}from"@prosekit/extensions/virtual-selection";import{Plugin as v,PluginKey as y,TextSelection as b}from"@prosekit/pm/state";import{Decoration as ge,DecorationSet as x}from"@prosekit/pm/view";import{LanguageDescription as _e}from"@codemirror/language";import{languages as ve}from"@codemirror/language-data";import{classHighlighter as ye}from"@lezer/highlight";import{createParser as be}from"prosemirror-highlight/lezer";import{defineHeadingCommands as xe,defineHeadingInputRule as Se,defineHeadingSpec as Ce}from"@prosekit/extensions/heading";import{defineHorizontalRule as we}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as Te,Step as Ee,StepResult as De,Transform as Oe}from"@prosekit/pm/transform";import{Mark as ke}from"@prosekit/pm/model";import{GFM as Ae,parser as je}from"@lezer/markdown";import{once as Me}from"@ocavue/utils";import{defineList as Ne}from"@prosekit/extensions/list";import{defineParagraphCommands as Pe,defineParagraphKeymap as Fe}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as Ie,defineTableCommands as Le,defineTableDropIndicator as Re,defineTableEditingPlugin as ze,defineTableHeaderCellSpec as Be,defineTableRowSpec as Ve,defineTableSpec as He,deleteTable as Ue,isCellSelection as We}from"@prosekit/extensions/table";import{closeHistory as Ge}from"@prosekit/pm/history";import{definePlaceholder as Ke}from"@prosekit/extensions/placeholder";import{defineReadonly as qe}from"@prosekit/extensions/readonly";function S(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return m(i,n)}const Je=new Set([`mdMark`,`mdLinkUri`]),Ye=new Set([`mdImageSource`,`mdWikilinkSource`]),Xe=new y(`mark-mode`);function Ze(e){return new v({key:Xe,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>tt(e):void 0,clipboardTextSerializer:e===`show`?void 0:et}})}function Qe(e){return p(Ze(e))}function $e(e){return Xe.getState(e)}function et(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(!e.marks.some(e=>Ye.has(e.type.name))&&e.marks.some(e=>Je.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
- `)}function tt(e){let{selection:t}=e;if(!t.empty)return x.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return x.empty;let i=m(n,ee(e.schema,`mdPack`));return i?x.create(e.doc,[ge.inline(i.from,i.to,{class:`show`})]):x.empty}function C(e,t){let n=$e(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function w(e,t,n){for(let r of n){let n=S(e,t,r);if(n)return n}}function T(e,t,n){let r=w(e,t,n);return r&&r.to===t?r:void 0}function E(e,t,n){let r=w(e,t,n);return r&&r.from===t?r:void 0}function D(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=w(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function nt(e,t){return b.create(e.doc,t.from,t.to)}function rt(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!re(t.selection))return!1;let i=t.selection;if(i.empty){let e=E(t,i.from,r);if(e)return n?.(t.tr.setSelection(nt(t,e))),!0;if(T(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(b.create(t.doc,i.from+1))),!0)}return!1}let a=D(t,r);return a?(n?.(t.tr.setSelection(b.create(t.doc,a.to))),!0):!1}}function it(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!re(t.selection))return!1;let i=t.selection;if(i.empty){let e=T(t,i.from,r);return e?(n?.(t.tr.setSelection(nt(t,e))),!0):!1}let a=D(t,r);return a?(n?.(t.tr.setSelection(b.create(t.doc,a.from))),!0):!1}}function at(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=T(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!E(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function ot(e){return(t,n)=>{let r=C(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=E(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!T(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}function st(e,t){return new v({key:new y(`atomic-mark-selection-${t}`),props:{decorations:n=>{let r=C(e,n);if(r.length===0)return;let i=D(n,r);if(i)return x.create(n.doc,[ge.inline(i.from,i.to,{class:t})])}}})}function ct({marks:e,selectedClass:n}){return g(_(c({ArrowRight:rt(e),ArrowLeft:it(e),Backspace:at(e),Delete:ot(e)}),t.high),p(st(e,n)))}const O=new Map;async function lt(e){let t=_e.matchLanguageName(ve,e,!0);if(!t){O.set(e,null);return}let n=t.support;if(!n)try{n=await t.load()}catch(t){console.error(`[meowdown] Failed to load language "${e}":`,t),O.set(e,null)}if(O.has(e))return;if(!n){O.set(e,null);return}let r=be({parse:e=>n.language.parser.parse(e.content),highlighter:ye});O.set(e,r)}const ut=e=>{let t=e.language?.trim();if(!t)return[];let n=O.get(t);return n?n(e):n===null?[]:lt(t)};function dt(){return ue({parser:ut,nodeTypes:[`codeBlock`]})}function ft(){return d({type:`doc`,attr:`frontmatter`,default:null})}function pt(){return f({name:`heading`,whitespace:`pre`})}function mt(){return d({type:`heading`,attr:`setextUnderline`,default:null,toDOM:e=>e==null?null:[`data-setext-underline`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-setext-underline`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function k(e){return se(ie({type:`heading`,attrs:{level:e}}))}const ht=(e,t,n)=>ne(e,n)?.parent.type.name===`heading`?ae()(e,t,n):!1;function gt(){return c({"Mod-1":k(1),"Mod-2":k(2),"Mod-3":k(3),"Mod-4":k(4),"Mod-5":k(5),"Mod-6":k(6),Backspace:ht})}function _t(){return g(Ce(),pt(),mt(),Se(),xe(),gt())}function vt(){return d({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function yt(){return g(we(),vt())}function bt(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function xt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>ke.fromJSON(e,t))]}var A=class e extends Ee{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return De.ok(e);let t=e.content.size,n;for(let[r,i,a]of this.chunks){if(r>=i)continue;let o=Math.max(0,Math.min(r,t)),s=Math.max(o,Math.min(i,t));o>=s||e.nodesBetween(o,s,(t,r)=>{if(!t.isText)return!0;let i=Math.max(o,r),c=Math.min(s,r+t.nodeSize);if(i>=c)return!1;let l=t.marks;for(let t of l)t.isInSet(a)||(n??=new Oe(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new Oe(e),n.addMark(i,c,t));return!1})}return De.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return St;let t=this.chunks[0][0],n=this.chunks[0][1];for(let[,e]of this.chunks)e>n&&(n=e);let r=e.content.size,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));return new Te(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(bt)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>xt(t,e)))}};Ee.jsonID(`batchSetMark`,A);const St=new A([]),Ct=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),wt=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function Tt(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function Et(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!Ct.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!wt.test(e))return!1;return!0}function Dt(e){return e===32||e===9||e===10||e===13}const Ot=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,kt=/[\s(*_~]/;function At(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function jt(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function Mt(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&jt(e,t,`)`)>jt(e,t,`(`))t--;else if(n===`;`){let n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(0,t));if(!n)break;t=n.index}else break}return t}const Nt={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!At(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!kt.test(r))return-1;let i=Ot.exec(e.slice(n,e.end));if(!i)return-1;let a=Mt(i[0]);return a===0||!Et(Tt(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function Pt(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===95||e>127&&/[\p{L}\p{N}]/u.test(String.fromCharCode(e))}function Ft(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const It={defineNodes:[{name:`Hashtag`}],parseInline:[{name:`Hashtag`,parse(e,t,n){if(t!==35||!/\s|^$/.test(e.slice(n-1,n)))return-1;let r=n+1,i=!1;for(;r<e.end;){let t=e.char(r);if(!Pt(t))break;i||=Ft(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},Lt={defineNodes:[{name:`Wikilink`},{name:`WikilinkMark`}],parseInline:[{name:`Wikilink`,before:`Link`,parse(e,t,n){if(t!==91||e.char(n+1)!==91)return-1;let r=!1;for(let t=n+2;t<e.end-1;t++){let i=e.char(t);if(i===93){if(e.char(t+1)!==93||!r)return-1;let i=t+2;return e.addElement(e.elt(`Wikilink`,n,i,[e.elt(`WikilinkMark`,n,n+2),e.elt(`WikilinkMark`,t,i)]))}if(i===91||i===10)return-1;i!==32&&i!==9&&(r=!0)}return-1}}]};function Rt(e){return e.end}const j=je.configure([Ae,It,Lt,Nt]),zt=j.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:Rt}]});function M(e){return j.parseInline(e,0)}function N(e,t,n=[]){for(let r of e)t(r)&&n.push(r),N(r.children,t,n);return n}function Bt(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const P=Bt(j);function Vt(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function Ht(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function Ut(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view`;let r=document.createElement(`span`);n.appendChild(r);let i=document.createElement(`span`);return i.className=`md-wikilink-label`,i.contentEditable=`false`,i.dataset.testid=`wikilink`,i.textContent=t.display||t.target,n.appendChild(i),{dom:n,contentDOM:r,ignoreMutation:e=>!r.contains(e.target)}}}function Wt(){return u({name:`mdWikilinkView`,constructor:Ut()})}const F=new Map([[P.Emphasis,`mdEm`],[P.StrongEmphasis,`mdStrong`],[P.InlineCode,`mdCode`],[P.Strikethrough,`mdDel`],[P.EmphasisMark,`mdMark`],[P.CodeMark,`mdMark`],[P.LinkMark,`mdMark`],[P.StrikethroughMark,`mdMark`],[P.URL,`mdLinkUri`],[P.Hashtag,`mdTag`],[P.WikilinkMark,`mdMark`]]);function Gt(e,t){let n=M(t),r=[];return I(n,[],0,t.length,t,e,r),r}function Kt(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||Et(Tt(e)))return`https://${e}`}function I(e,t,n,r,i,a,o){let s=n;for(let n of e){n.from>s&&R(o,s,n.from,t);let e=n.type;if(e===P.Link)qt(n,t,i,a,o);else if(e===P.Image)Jt(n,t,i,a,o);else if(e===P.Wikilink)L(n,t,i,a,o);else if(e===P.URL){let e=Kt(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();R(o,n.from,n.to,[...t,r])}else{let r;e===P.Emphasis?r=`italic`:e===P.StrongEmphasis?r=`bold`:e===P.InlineCode?r=`code`:e===P.Strikethrough?r=`strike`:e===P.Autolink&&(r=`autolink`);let s=r?[...t,a.mdPack.create({key:r})]:t,c=F.get(e),l=c?[...s,a[c].create()]:s;n.children.length===0?R(o,n.from,n.to,l):I(n.children,l,n.from,n.to,i,a,o)}s=n.to}s<r&&R(o,s,r,t)}function qt(e,t,n,r,i){let a=-1,o=null,s=0;for(let t of e.children)t.type===P.LinkMark?(s++,s===2&&(a=t.from)):t.type===P.URL&&o===null&&(o=t);let c=o?n.slice(o.from,o.to):``,l=c?r.mdLinkText.create({href:c}):null,u=e=>a>=0&&e<a&&l!==null,d=r.mdPack.create({key:`link_${c}`}),f=[...t,d],p=e.from;for(let t of e.children){if(t.from>p){let e=u(p)?[...f,l]:f;R(i,p,t.from,e)}let e=u(t.from)?[...f,l]:f;if(t.type===P.Wikilink){L(t,e,n,r,i),p=t.to;continue}let a=F.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?R(i,t.from,t.to,o):I(t.children,o,t.from,t.to,n,r,i),p=t.to}p<e.to&&R(i,p,e.to,f)}function Jt(e,t,n,r,i){let a=e.children.find(e=>e.type===P.URL);if(!a){qt(e,t,n,r,i);return}let o=e.children.filter(e=>e.type===P.LinkMark),s=n.slice(a.from,a.to),c=o.length>=2?n.slice(o[0].to,o[1].from):``,l=r.mdImageSource.create({src:s,alt:c}),u=r.mdImageView.create({src:s,alt:c}),d=r.mdPack.create({key:`image_${s}`}),f=e.to-1,p=e=>e>=f?[...t,d,l,u]:[...t,d,l],m=e.from;for(let t of e.children){t.from>m&&R(i,m,t.from,p(m));let e=F.get(t.type),a=e?[...p(t.from),r[e].create()]:p(t.from);t.children.length===0?R(i,t.from,t.to,a):I(t.children,a,t.from,t.to,n,r,i),m=t.to}m<e.to&&R(i,m,e.to,p(m))}function L(e,t,n,r,i){let{target:a,display:o}=Ht(n.slice(e.from,e.to)),s=r.mdWikilinkSource.create({target:a}),c=r.mdWikilinkView.create({target:a,display:o}),l=e.to-1,u=e=>e>=l?[...t,s,c]:[...t,s],d=e.from;for(let t of e.children){t.from>d&&R(i,d,t.from,u(d));let e=r.mdMark.create();t.from<l&&t.to>l?(R(i,t.from,l,[...u(t.from),e]),R(i,l,t.to,[...u(l),e])):R(i,t.from,t.to,[...u(t.from),e]),d=t.to}d<e.to&&R(i,d,e.to,u(d))}function R(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&Vt(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const Yt=Me(()=>{let e=Kn().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),Xt=Me(()=>r(Yt())),z=`meowdown_mark_builders`;function Zt(e){let t=e.cached[z];if(t)return t;let r=n(e);return e.cached[z]=r,r}const B=`inline-marks-applied`,Qt=new WeakMap;let $t=0,en=0;function tn(e,t,n){let r=Qt.get(e);if(r?en++:($t++,r=Gt(Zt(n),e.textContent),Qt.set(e,r)),t===0)return r;let i=[];for(let[e,n,a]of r)i.push([e+t,n+t,a]);return i}function nn(e,t){let n=1/0,r=-1/0;for(let t of e)for(let e of t.mapping.maps)e.forEach((e,t,i,a)=>{i<n&&(n=i),a>r&&(r=a)});let i=t.doc.content.size;return n>r?{from:0,to:i}:{from:Math.max(0,n),to:Math.min(i,r)}}function rn(e,t){let n=[];return e.doc.nodesBetween(t.from,t.to,(t,r)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;if(t.childCount===0)return!1;let i=tn(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function an(){return new v({key:new y(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(B))return null;let r=rn(n,nn(e,n));if(r.length===0)return null;let i=n.tr.step(new A(r));return i.setMeta(B,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(on(e.state)),{}}})}function on(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function sn(){return p(an())}function cn(){return l({name:`mdImageView`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-anchor`},0],parseDOM:[{tag:`span.md-image-anchor`}]})}function ln(){return l({name:`mdImageSource`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-source`},0],parseDOM:[{tag:`span.md-image-source`}]})}function un(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function dn(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function fn(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function pn(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function mn(){return l({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function hn(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function gn(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function _n(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function vn(){return l({name:`mdWikilinkSource`,inclusive:!1,attrs:{target:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-source`},0],parseDOM:[{tag:`span.md-wikilink-source`}]})}function yn(){return l({name:`mdWikilinkView`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-anchor`},0],parseDOM:[{tag:`span.md-wikilink-anchor`}]})}function bn(){return l({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{default:``}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function xn(){return g(un(),dn(),fn(),pn(),mn(),hn(),gn(),_n(),vn(),yn(),ln(),cn(),bn())}function Sn(e,t=0){let n=t,r=0;for(let t=0;t<e.length;t++)e.charCodeAt(t)===96?(r++,r>n&&(n=r)):r=0;return n}const V={em:{node:P.Emphasis,delim:`*`},strong:{node:P.StrongEmphasis,delim:`**`},code:{node:P.InlineCode,delim:"`"},del:{node:P.Strikethrough,delim:`~~`}},Cn=new Set([P.EmphasisMark,P.CodeMark,P.LinkMark,P.StrikethroughMark]);function H(e){return[e.children[0],e.children.at(-1)]}function wn(e){let{type:t,children:n}=e;if(t===P.Emphasis||t===P.StrongEmphasis||t===P.Strikethrough)return[n[0].to,n.at(-1).from];if(t===P.Link||t===P.Image){let e=n.find((e,t)=>t>0&&e.type===P.LinkMark);return e?[n[0].to,e.from]:null}return null}function U(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=wn(r);return i&&i[0]<=t&&n<=i[1]?U(r.children,t,n):U(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function W(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return W(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const G=e=>e===` `||e===` `;function Tn(e,t,n){for(;t<n&&G(e[t]);)t++;for(;n>t&&G(e[n-1]);)n--;return[t,n]}function En(e,t,n,r){let i=N(M(e),e=>e.type===r.node||Cn.has(e.type));for(let r=t;r<n;r++)if(!G(e[r])&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function Dn(e,t,n,r,i){let a=M(e),o=N(a,e=>e.type===r.node);return i?An(e,o,t,n):On(e,a,o,t,n,r)}function On(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=U(t,r,i);for(let e of n)e.to===r&&(r=e.from),e.from===i&&(i=e.to)}let o=[];for(let e of n)if(r<=e.from&&e.to<=i){let[t,n]=H(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=kn(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function kn(e,t,n,r,i){if(i.node!==P.InlineCode)return[i.delim,i.delim];let a=e.slice(t,n);for(let e of[...r].sort((e,t)=>t.from-e.from))a=a.slice(0,e.from-t)+a.slice(e.to-t);let o="`".repeat(Sn(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function An(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=H(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=W(a.children.slice(1,-1),s,c);s>t.to&&G(e[s-1]);)s--;for(;c<o.from&&G(e[c]);)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function jn(e,t,n){let{delim:r}=n,i=r.length;if(e.slice(t-i,t)===r&&e.startsWith(r,t)&&e[t-i-1]!==r[0]&&e[t+i]!==r[0])return{kind:`unwrap`,from:t-i,to:t+i};let a=M(e),o=N(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=H(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return Mn(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function Mn(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=wn(n);return!e||t<e[0]||t>e[1]?!0:Mn(n.children,t)}return!1}function K(e){return(t,n)=>{if(t.selection.empty)return Nn(e,t,n);let{from:r,to:i,anchor:a,head:o}=t.selection,s=[];t.doc.nodesBetween(r,i,(t,n)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;let a=t.textContent,o=n+1,[c,l]=Tn(a,Math.max(r-o,0),Math.min(i-o,a.length));return c<l&&s.push({text:a,base:o,from:c,to:l,active:En(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>Dn(t.text,t.from,t.to,e,c).map(e=>({from:e.from+t.base,to:e.to+t.base,insert:e.insert})));if(l.length===0)return!1;if(n){let e=t.tr;l.sort((e,t)=>t.from-e.from||t.to-e.to);for(let t of l)t.insert?e.insertText(t.insert,t.from,t.to):e.delete(t.from,t.to);e.setSelection(b.create(e.doc,e.mapping.map(a,a<=o?1:-1),e.mapping.map(o,o<a?1:-1))),n(e.scrollIntoView())}return!0}}function Nn(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=jn(i.textContent,r.parentOffset,e);if(!a)return!1;if(n){let i=r.start(),o=t.tr;a.kind===`unwrap`&&o.delete(i+a.from,i+a.to),a.kind===`move`&&o.setSelection(b.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(b.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function Pn(){return o({toggleEm:()=>K(V.em),toggleStrong:()=>K(V.strong),toggleCode:()=>K(V.code),toggleDel:()=>K(V.del)})}function Fn(){return c({"Mod-b":K(V.strong),"Mod-i":K(V.em),"Mod-e":K(V.code),"Mod-Shift-x":K(V.del)})}function In(){return g(Pn(),Fn())}function Ln(){return d({type:`list`,attr:`marker`,default:null,splittable:!0,toDOM:e=>e===`)`||e===`*`||e===`+`?[`data-list-marker`,e]:null,parseDOM:e=>{let t=e.getAttribute(`data-list-marker`);return t===`)`||t===`*`||t===`+`?t:null}})}function Rn(){return d({type:`list`,attr:`taskMarker`,default:null,splittable:!0,toDOM:e=>e===`X`?[`data-list-task-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-list-task-marker`)===`X`?`X`:null})}function zn(){return g(Ne(),Ln(),Rn())}function Bn(){return f({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function Vn(){return g(_(Bn(),t.highest),Pe(),Fe())}const Hn=(e,t)=>{let{selection:n}=e;return!We(n)||!n.isColSelection()||!n.isRowSelection()?!1:Ue(e,t)};function Un(){return _(c({Backspace:Hn,Delete:Hn}),t.high)}function Wn(){return g(He(),Ve(),Ie(),Be(),ze({allowTableNodeSelection:!0}),Le(),Re(),Un())}function Gn(){return g(Vn(),de(),ft(),me(),ce(),zn(),_t(),Wn(),le(),yt(),xn(),dt(),sn(),In(),Wt(),ct({marks:[{name:`mdImageSource`,modes:[`hide`]},{name:`mdWikilinkSource`,modes:[`hide`,`focus`,`show`]}],selectedClass:`md-atomic-selected`}),a(),i(),s(),fe(),he(),pe())}function Kn(){return Gn()}function qn(e){let t;return p(new v({key:e.key,props:{handleDOMEvents:{mousedown:e=>{let{from:n,to:r,empty:i}=e.state.selection;return t={from:n,to:r,empty:i},!1}},handleClick:(n,r,i)=>{if(!i.target?.closest?.(e.selector))return!1;let a=e.findHitAt(n.state,r);return!a||!(te?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e.preventDefault&&i.preventDefault(),e.onClick(a.payload,i),!0)}}}))}const Jn=new y(`meowdown-wikilink-click`);function Yn(e,t){let n=S(e,t,`mdWikilinkSource`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function Xn(e){return qn({key:Jn,selector:`.md-wikilink-label, .md-wikilink-source`,preventDefault:!1,findHitAt:(e,t)=>{let n=Yn(e,t);return n?{from:n.from,to:n.to,payload:n.target}:void 0},onClick:(t,n)=>e({target:t,event:n})})}const Zn=new y(`meowdown-link-click`);function Qn(e,t){let n=S(e,t,`mdLinkText`);if(n)return{from:n.from,to:n.to,href:n.mark.attrs.href}}function $n(e){return qn({key:Zn,selector:`.md-link`,preventDefault:!0,findHitAt:(e,t)=>{let n=Qn(e,t);return n?{from:n.from,to:n.to,payload:n.href}:void 0},onClick:(t,n)=>e({href:t,event:n})})}function er(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const tr=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,nr=/\/status(?:es)?\/(\d+)/;function rr(e){let t;try{t=new URL(e)}catch{return}if(tr.test(t.hostname))return nr.exec(t.pathname)?.[1]}const ir=e=>{let t=rr(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=er()?`dark`:`light`,n=document.createElement(`iframe`);return n.src=`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${e}&dnt=true`,n.title=`Tweet`,n.className=`md-embed md-embed-tweet`,n.dataset.testid=`tweet-embed`,n.loading=`lazy`,n.referrerPolicy=`strict-origin-when-cross-origin`,n.setAttribute(`frameborder`,`0`),ar(n),n}}};function ar(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=new MutationObserver(()=>{e.isConnected||(window.removeEventListener(`message`,t),n.disconnect())});n.observe(document.body,{childList:!0,subtree:!0})}const or=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,sr=/^(?:www\.)?youtu\.be$/i,cr=/^[\w-]{11}$/;function lr(e){let t;try{t=new URL(e)}catch{return}let n=null;if(sr.test(t.hostname))n=t.pathname.slice(1);else if(or.test(t.hostname)){let[,e,r]=t.pathname.split(`/`);t.pathname===`/watch`?n=t.searchParams.get(`v`):(e===`shorts`||e===`embed`||e===`live`)&&(n=r??null)}if(!n||!cr.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?ur(r):void 0;return{videoId:n,startSeconds:i}}function ur(e){if(/^\d+$/.test(e))return Number(e);let t=/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}const dr=[e=>{let t=lr(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{key:`youtube:${t.videoId}:${t.startSeconds??0}`,render:()=>{let e=document.createElement(`iframe`);return e.src=`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,e.title=`YouTube video`,e.className=`md-embed md-embed-youtube`,e.dataset.testid=`youtube-embed`,e.loading=`lazy`,e.referrerPolicy=`strict-origin-when-cross-origin`,e.setAttribute(`frameborder`,`0`),e.allow=`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,e.allowFullscreen=!0,e}}},ir];function fr(e){for(let t of dr){let n=t(e);if(n)return n}}function pr(e){return/^https?:\/\//i.test(e)?e:void 0}function mr(e,t,n){let r=fr(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-preview md-image-preview-embed`,e.appendChild(r.render()),e}let i=(n.resolveImageUrl??pr)(e);if(!i)return;let a=document.createElement(`span`);a.className=`md-image-preview md-image-preview-img`,a.dataset.testid=`image-preview`;let o=document.createElement(`img`);return o.src=i,o.alt=t,o.draggable=!1,a.appendChild(o),a}function hr(e){return t=>{let n=t.attrs,r=document.createElement(`span`);r.className=`md-image-view`;let i=document.createElement(`span`);i.className=`md-image-view-content`,r.appendChild(i);let a=mr(n.src,n.alt,e);return a&&(a.contentEditable=`false`,r.appendChild(a)),{dom:r,contentDOM:i,ignoreMutation:e=>!i.contains(e.target)}}}function gr(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const _r=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function vr(e,t,n,r=_r,i){let a=i;for(let i of t){let t;try{t=await n(i)}catch(e){r(e,i);continue}if(!t||e.isDestroyed)continue;let o=`![](${t})`,s=a==null?e.state.tr.insertText(o):e.state.tr.insertText(o,a);e.dispatch(s),a!=null&&(a+=o.length)}}function yr(e){return new v({key:new y(`image-input`),props:{handlePaste:(t,n)=>{let r=gr(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(vr(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=gr(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(vr(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function br(e={}){return g(u({name:`mdImageView`,constructor:hr(e)}),_(p(yr(e)),t.high))}const xr=new y(`meowdown-image-click`);function Sr(e,t){let n=S(e,t,`mdImageSource`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function Cr(e){return p(new v({key:xr,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Sr(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}const wr=new y(`meowdown-embed-paste`);function Tr(e){let t=e.trim();if(!(!t||/\s/.test(t)))return fr(t)?t:void 0}function Er(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
3
- `)}function Dr(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(Ge(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(Ge(i))}function Or(){return p(new v({key:wr,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=Er(t,n);if(!i)return!1;let a=Tr(i);return a?(Dr(e,a),!0):!1}}}))}const kr=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=h(e.schema,`list`),i=h(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(b.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Ar(){return _(c({Enter:kr}),t.high)}const jr={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`},Mr=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Nr=ve.map(e=>e.name).filter(e=>!Mr.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function Pr(e,t={}){let n=new Rr;return t.frontmatter&&Fr(e.attrs.frontmatter,n),zr(e,n),n.finish()}function Fr(e,t){e!==null&&(t.write(`---`),t.write(`
1
+ import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineHistory as s,defineKeymap as c,defineMarkSpec as l,defineMarkView as u,defineNodeAttr as d,defineNodeSpec as f,definePlugin as p,getMarkRange as m,getMarkType as ee,getNodeType as te,isApple as ne,isAtBlockStart as re,isTextSelection as ie,toggleNode as ae,union as h,unsetBlockType as oe,withPriority as se,withPriority as g,withSkipCodeBlock as ce}from"@prosekit/core";import{defineBlockquote as le}from"@prosekit/extensions/blockquote";import{defineCodeBlock as ue,defineCodeBlockHighlight as de}from"@prosekit/extensions/code-block";import{defineDoc as fe}from"@prosekit/extensions/doc";import{defineGapCursor as pe}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as me}from"@prosekit/extensions/mod-click-prevention";import{defineText as he}from"@prosekit/extensions/text";import{defineVirtualSelection as ge}from"@prosekit/extensions/virtual-selection";import{Plugin as _,PluginKey as v,TextSelection as y}from"@prosekit/pm/state";import{Decoration as _e,DecorationSet as b}from"@prosekit/pm/view";import{LanguageDescription as ve}from"@codemirror/language";import{languages as ye}from"@codemirror/language-data";import{classHighlighter as be}from"@lezer/highlight";import{createParser as xe}from"prosemirror-highlight/lezer";import{defineHeadingCommands as Se,defineHeadingInputRule as Ce,defineHeadingSpec as we}from"@prosekit/extensions/heading";import{defineHorizontalRule as Te}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as Ee,Step as De,StepResult as Oe,Transform as ke}from"@prosekit/pm/transform";import{DOMSerializer as Ae,Mark as je}from"@prosekit/pm/model";import{GFM as Me,parser as Ne}from"@lezer/markdown";import{once as x}from"@ocavue/utils";import{defineInputRule as Pe}from"@prosekit/extensions/input-rule";import{defineListCommands as Fe,defineListDropIndicator as Ie,defineListKeymap as Le,defineListPlugins as Re,defineListSerializer as ze,defineListSpec as Be,wrapInList as S}from"@prosekit/extensions/list";import{wrappingListInputRule as C}from"prosemirror-flat-list";import{defineParagraphCommands as Ve,defineParagraphKeymap as He}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as Ue,defineTableCommands as We,defineTableDropIndicator as Ge,defineTableEditingPlugin as Ke,defineTableHeaderCellSpec as qe,defineTableRowSpec as Je,defineTableSpec as Ye,deleteTable as Xe,isCellSelection as Ze}from"@prosekit/extensions/table";import{closeHistory as Qe}from"@prosekit/pm/history";import $e from"rehype-parse";import et from"rehype-remark";import tt from"remark-gfm";import nt from"remark-stringify";import{unified as rt}from"unified";import{definePlaceholder as it}from"@prosekit/extensions/placeholder";import{defineReadonly as at}from"@prosekit/extensions/readonly";function w(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return m(i,n)}const ot=new Set([`mdMark`,`mdLinkUri`]),st=new Set([`mdImageSource`,`mdWikilinkSource`]),ct=new v(`mark-mode`);function lt(e){return new _({key:ct,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>pt(e):void 0,clipboardTextSerializer:e===`show`?void 0:ft}})}function ut(e){return p(lt(e))}function dt(e){return ct.getState(e)}function ft(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(!e.marks.some(e=>st.has(e.type.name))&&e.marks.some(e=>ot.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
+ `)}function pt(e){let{selection:t}=e;if(!t.empty)return b.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return b.empty;let i=m(n,ee(e.schema,`mdPack`));return i?b.create(e.doc,[_e.inline(i.from,i.to,{class:`show`})]):b.empty}function T(e,t){let n=dt(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function E(e,t,n){for(let r of n){let n=w(e,t,r);if(n)return n}}function D(e,t,n){let r=E(e,t,n);return r&&r.to===t?r:void 0}function O(e,t,n){let r=E(e,t,n);return r&&r.from===t?r:void 0}function k(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=E(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function mt(e,t){return y.create(e.doc,t.from,t.to)}function ht(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!ie(t.selection))return!1;let i=t.selection;if(i.empty){let e=O(t,i.from,r);if(e)return n?.(t.tr.setSelection(mt(t,e))),!0;if(D(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(y.create(t.doc,i.from+1))),!0)}return!1}let a=k(t,r);return a?(n?.(t.tr.setSelection(y.create(t.doc,a.to))),!0):!1}}function gt(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!ie(t.selection))return!1;let i=t.selection;if(i.empty){let e=D(t,i.from,r);return e?(n?.(t.tr.setSelection(mt(t,e))),!0):!1}let a=k(t,r);return a?(n?.(t.tr.setSelection(y.create(t.doc,a.from))),!0):!1}}function _t(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=D(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!O(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function vt(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=O(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!D(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}function yt(e,t){return new _({key:new v(`atomic-mark-selection-${t}`),props:{decorations:n=>{let r=T(e,n);if(r.length===0)return;let i=k(n,r);if(i)return b.create(n.doc,[_e.inline(i.from,i.to,{class:t})])}}})}function bt({marks:e,selectedClass:n}){return h(g(c({ArrowRight:ht(e),ArrowLeft:gt(e),Backspace:_t(e),Delete:vt(e)}),t.high),p(yt(e,n)))}const A=new Map;async function xt(e){let t=ve.matchLanguageName(ye,e,!0);if(!t){A.set(e,null);return}let n=t.support;if(!n)try{n=await t.load()}catch(t){console.error(`[meowdown] Failed to load language "${e}":`,t),A.set(e,null)}if(A.has(e))return;if(!n){A.set(e,null);return}let r=xe({parse:e=>n.language.parser.parse(e.content),highlighter:be});A.set(e,r)}const St=e=>{let t=e.language?.trim();if(!t)return[];let n=A.get(t);return n?n(e):n===null?[]:xt(t)};function Ct(){return de({parser:St,nodeTypes:[`codeBlock`]})}function wt(){return d({type:`doc`,attr:`frontmatter`,default:null})}function Tt(){return f({name:`heading`,whitespace:`pre`})}function Et(){return d({type:`heading`,attr:`setextUnderline`,default:null,toDOM:e=>e==null?null:[`data-setext-underline`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-setext-underline`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function j(e){return ce(ae({type:`heading`,attrs:{level:e}}))}const Dt=(e,t,n)=>re(e,n)?.parent.type.name===`heading`?oe()(e,t,n):!1;function Ot(){return c({"Mod-1":j(1),"Mod-2":j(2),"Mod-3":j(3),"Mod-4":j(4),"Mod-5":j(5),"Mod-6":j(6),Backspace:Dt})}function kt(){return h(we(),Tt(),Et(),Ce(),Se(),Ot())}function At(){return d({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function jt(){return h(Te(),At())}function Mt(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function Nt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>je.fromJSON(e,t))]}var M=class e extends De{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return Oe.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 ke(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new ke(e),n.addMark(i,c,t));return!1})}return Oe.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return Pt;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 Ee(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(Mt)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>Nt(t,e)))}};De.jsonID(`batchSetMark`,M);const Pt=new M([]),Ft=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),It=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function Lt(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function Rt(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!Ft.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!It.test(e))return!1;return!0}function zt(e){return e===32||e===9||e===10||e===13}const Bt=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,Vt=/[\s(*_~]/;function Ht(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function Ut(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function Wt(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&Ut(e,t,`)`)>Ut(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 Gt={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!Ht(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!Vt.test(r))return-1;let i=Bt.exec(e.slice(n,e.end));if(!i)return-1;let a=Wt(i[0]);return a===0||!Rt(Lt(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function Kt(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 qt(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const Jt={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(!Kt(t))break;i||=qt(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},Yt={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 Xt(e){return e.end}const N=Ne.configure([Me,Jt,Yt,Gt]),Zt=N.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:Xt}]});function P(e){return N.parseInline(e,0)}function F(e,t,n=[]){for(let r of e)t(r)&&n.push(r),F(r.children,t,n);return n}function Qt(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const I=Qt(N);function $t(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 en(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 tn(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view`;let r=document.createElement(`span`);n.appendChild(r);let i=document.createElement(`span`);return i.className=`md-wikilink-label`,i.contentEditable=`false`,i.dataset.testid=`wikilink`,i.textContent=t.display||t.target,n.appendChild(i),{dom:n,contentDOM:r,ignoreMutation:e=>!r.contains(e.target)}}}function nn(){return u({name:`mdWikilinkView`,constructor:tn()})}const L=new Map([[I.Emphasis,`mdEm`],[I.StrongEmphasis,`mdStrong`],[I.InlineCode,`mdCode`],[I.Strikethrough,`mdDel`],[I.EmphasisMark,`mdMark`],[I.CodeMark,`mdMark`],[I.LinkMark,`mdMark`],[I.StrikethroughMark,`mdMark`],[I.URL,`mdLinkUri`],[I.Hashtag,`mdTag`],[I.WikilinkMark,`mdMark`]]);function rn(e,t){let n=P(t),r=[];return R(n,[],0,t.length,t,e,r),r}function an(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)||Rt(Lt(e)))return`https://${e}`}function R(e,t,n,r,i,a,o){let s=n;for(let n of e){n.from>s&&z(o,s,n.from,t);let e=n.type;if(e===I.Link)on(n,t,i,a,o);else if(e===I.Image)sn(n,t,i,a,o);else if(e===I.Wikilink)cn(n,t,i,a,o);else if(e===I.URL){let e=an(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();z(o,n.from,n.to,[...t,r])}else{let r;e===I.Emphasis?r=`italic`:e===I.StrongEmphasis?r=`bold`:e===I.InlineCode?r=`code`:e===I.Strikethrough?r=`strike`:e===I.Autolink&&(r=`autolink`);let s=r?[...t,a.mdPack.create({key:r})]:t,c=L.get(e),l=c?[...s,a[c].create()]:s;n.children.length===0?z(o,n.from,n.to,l):R(n.children,l,n.from,n.to,i,a,o)}s=n.to}s<r&&z(o,s,r,t)}function on(e,t,n,r,i){let a=-1,o=null,s=0;for(let t of e.children)t.type===I.LinkMark?(s++,s===2&&(a=t.from)):t.type===I.URL&&o===null&&(o=t);let c=o?n.slice(o.from,o.to):``,l=c?r.mdLinkText.create({href:c}):null,u=e=>a>=0&&e<a&&l!==null,d=r.mdPack.create({key:`link_${c}`}),f=[...t,d],p=e.from;for(let t of e.children){if(t.from>p){let e=u(p)?[...f,l]:f;z(i,p,t.from,e)}let e=u(t.from)?[...f,l]:f;if(t.type===I.Wikilink){cn(t,e,n,r,i),p=t.to;continue}let a=L.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?z(i,t.from,t.to,o):R(t.children,o,t.from,t.to,n,r,i),p=t.to}p<e.to&&z(i,p,e.to,f)}function sn(e,t,n,r,i){let a=e.children.find(e=>e.type===I.URL);if(!a){on(e,t,n,r,i);return}let o=e.children.filter(e=>e.type===I.LinkMark),s=n.slice(a.from,a.to),c=o.length>=2?n.slice(o[0].to,o[1].from):``,l=r.mdImageSource.create({src:s,alt:c}),u=r.mdImageView.create({src:s,alt:c}),d=r.mdPack.create({key:`image_${s}`}),f=e.to-1,p=e=>e>=f?[...t,d,l,u]:[...t,d,l],m=e.from;for(let t of e.children){t.from>m&&z(i,m,t.from,p(m));let e=L.get(t.type),a=e?[...p(t.from),r[e].create()]:p(t.from);t.children.length===0?z(i,t.from,t.to,a):R(t.children,a,t.from,t.to,n,r,i),m=t.to}m<e.to&&z(i,m,e.to,p(m))}function cn(e,t,n,r,i){let{target:a,display:o}=en(n.slice(e.from,e.to)),s=r.mdWikilinkSource.create({target:a}),c=r.mdWikilinkView.create({target:a,display:o}),l=e.to-1,u=e=>e>=l?[...t,s,c]:[...t,s],d=e.from;for(let t of e.children){t.from>d&&z(i,d,t.from,u(d));let e=r.mdMark.create();t.from<l&&t.to>l?(z(i,t.from,l,[...u(t.from),e]),z(i,l,t.to,[...u(l),e])):z(i,t.from,t.to,[...u(t.from),e]),d=t.to}d<e.to&&z(i,d,e.to,u(d))}function z(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&$t(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const ln=x(()=>{let e=xr().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),un=x(()=>r(ln())),dn=`meowdown_mark_builders`;function fn(e){let t=e.cached[dn];if(t)return t;let r=n(e);return e.cached[dn]=r,r}const pn=`meowdown_node_builders`;function mn(e){let t=e.cached[pn];if(t)return t;let n=r(e);return e.cached[pn]=n,n}const hn=`inline-marks-applied`,gn=new WeakMap;let _n=0,vn=0;function yn(e,t,n){let r=gn.get(e);if(r?vn++:(_n++,r=rn(fn(n),e.textContent),gn.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 bn(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 xn(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=yn(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function Sn(){return new _({key:new v(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(hn))return null;let r=xn(n,bn(e,n));if(r.length===0)return null;let i=n.tr.step(new M(r));return i.setMeta(hn,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(Cn(e.state)),{}}})}function Cn(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function wn(){return p(Sn())}function Tn(){return l({name:`mdImageView`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-anchor`},0],parseDOM:[{tag:`span.md-image-anchor`}]})}function En(){return l({name:`mdImageSource`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-source`},0],parseDOM:[{tag:`span.md-image-source`}]})}function Dn(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function On(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function kn(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function An(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function jn(){return l({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function Mn(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function Nn(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function Pn(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function Fn(){return l({name:`mdWikilinkSource`,inclusive:!1,attrs:{target:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-source`},0],parseDOM:[{tag:`span.md-wikilink-source`}]})}function In(){return l({name:`mdWikilinkView`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-anchor`},0],parseDOM:[{tag:`span.md-wikilink-anchor`}]})}function Ln(){return l({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{default:``}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function Rn(){return h(Dn(),On(),kn(),An(),jn(),Mn(),Nn(),Pn(),Fn(),In(),En(),Tn(),Ln())}function zn(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 B={em:{node:I.Emphasis,delim:`*`},strong:{node:I.StrongEmphasis,delim:`**`},code:{node:I.InlineCode,delim:"`"},del:{node:I.Strikethrough,delim:`~~`}},Bn=new Set([I.EmphasisMark,I.CodeMark,I.LinkMark,I.StrikethroughMark]);function V(e){return[e.children[0],e.children.at(-1)]}function Vn(e){let{type:t,children:n}=e;if(t===I.Emphasis||t===I.StrongEmphasis||t===I.Strikethrough)return[n[0].to,n.at(-1).from];if(t===I.Link||t===I.Image){let e=n.find((e,t)=>t>0&&e.type===I.LinkMark);return e?[n[0].to,e.from]:null}return null}function H(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=Vn(r);return i&&i[0]<=t&&n<=i[1]?H(r.children,t,n):H(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function Hn(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return Hn(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const U=e=>e===` `||e===` `;function Un(e,t,n){for(;t<n&&U(e[t]);)t++;for(;n>t&&U(e[n-1]);)n--;return[t,n]}function Wn(e,t,n,r){let i=F(P(e),e=>e.type===r.node||Bn.has(e.type));for(let r=t;r<n;r++)if(!U(e[r])&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function Gn(e,t,n,r,i){let a=P(e),o=F(a,e=>e.type===r.node);return i?Jn(e,o,t,n):Kn(e,a,o,t,n,r)}function Kn(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=H(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]=V(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=qn(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function qn(e,t,n,r,i){if(i.node!==I.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(zn(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function Jn(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=V(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=Hn(a.children.slice(1,-1),s,c);s>t.to&&U(e[s-1]);)s--;for(;c<o.from&&U(e[c]);)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function Yn(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=P(e),o=F(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=V(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return Xn(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function Xn(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=Vn(n);return!e||t<e[0]||t>e[1]?!0:Xn(n.children,t)}return!1}function W(e){return(t,n)=>{if(t.selection.empty)return Zn(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]=Un(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:Wn(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>Gn(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(y.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 Zn(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=Yn(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(y.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(y.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function Qn(){return o({toggleEm:()=>W(B.em),toggleStrong:()=>W(B.strong),toggleCode:()=>W(B.code),toggleDel:()=>W(B.del)})}function $n(){return c({"Mod-b":W(B.strong),"Mod-i":W(B.em),"Mod-e":W(B.code),"Mod-Shift-x":W(B.del)})}function er(){return h(Qn(),$n())}function tr(){return d({type:`list`,attr:`marker`,default:null,splittable:!0,toDOM:e=>e===`)`||e===`*`||e===`+`?[`data-list-marker`,e]:null,parseDOM:e=>{let t=e.getAttribute(`data-list-marker`);return t===`)`||t===`*`||t===`+`?t:null}})}function nr(){return d({type:`list`,attr:`taskMarker`,default:null,splittable:!0,toDOM:e=>e===`X`?[`data-list-task-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-list-task-marker`)===`X`?`X`:null})}function rr(e){return e===2||e===3||e===4}function ir(){return d({type:`list`,attr:`markerGap`,default:1,splittable:!0,toDOM:e=>rr(e)?[`data-list-marker-gap`,String(e)]:null,parseDOM:e=>{let t=Number.parseInt(e.getAttribute(`data-list-marker-gap`)??``,10);return rr(t)?t:1}})}const ar=[C(/^\s?([*-])\s$/,{kind:`bullet`,collapsed:!1}),C(/^\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}}),C(/^\s?\[([\sXx]?)]\s$/,({match:e})=>({kind:`task`,checked:[`x`,`X`].includes(e[1]),collapsed:!1})),C(/^\s?\+\s$/,{kind:`task`,marker:`+`,checked:!1,collapsed:!1})];function or(){return h(ar.map(Pe))}function sr(){return S({kind:`task`,marker:`+`})}function cr(){return S({kind:`task`,marker:null})}function lr(){return o({wrapInCircleTask:sr,wrapInSquareTask:cr})}function ur(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 dr(){return(e,t,n)=>{let r=ur(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},S(a)(e,t,n)}}function fr(){return(e,t,n)=>{let r=ur(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},S(a)(e,t,n)}}function pr(){return c({"Mod-Enter":dr(),"Mod-Shift-Enter":fr()})}function mr(){return h(Be(),Re(),Le(),Fe(),ze(),Ie(),or(),pr(),tr(),nr(),ir(),lr())}function hr(){return f({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function gr(){return h(g(hr(),t.highest),Ve(),He())}const _r=(e,t)=>{let{selection:n}=e;return!Ze(n)||!n.isColSelection()||!n.isRowSelection()?!1:Xe(e,t)};function vr(){return g(c({Backspace:_r,Delete:_r}),t.high)}function yr(){return h(Ye(),Je(),Ue(),qe(),Ke({allowTableNodeSelection:!0}),We(),Ge(),vr())}function br(){return h(gr(),fe(),wt(),he(),le(),mr(),kt(),yr(),ue(),jt(),Rn(),Ct(),wn(),er(),nn(),bt({marks:[{name:`mdImageSource`,modes:[`hide`]},{name:`mdWikilinkSource`,modes:[`hide`,`focus`,`show`]}],selectedClass:`md-atomic-selected`}),a(),i(),s(),pe(),ge(),me())}function xr(){return br()}function Sr(e){let t;return p(new _({key:e.key,props:{handleDOMEvents:{mousedown:e=>{let{from:n,to:r,empty:i}=e.state.selection;return t={from:n,to:r,empty:i},!1}},handleClick:(n,r,i)=>{if(!i.target?.closest?.(e.selector))return!1;let a=e.findHitAt(n.state,r);return!a||!(ne?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e.preventDefault&&i.preventDefault(),e.onClick(a.payload,i),!0)}}}))}const Cr=new v(`meowdown-wikilink-click`);function wr(e,t){let n=w(e,t,`mdWikilinkSource`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function Tr(e){return Sr({key:Cr,selector:`.md-wikilink-label, .md-wikilink-source`,preventDefault:!1,findHitAt:(e,t)=>{let n=wr(e,t);return n?{from:n.from,to:n.to,payload:n.target}:void 0},onClick:(t,n)=>e({target:t,event:n})})}const Er=new v(`meowdown-link-click`);function Dr(e,t){let n=w(e,t,`mdLinkText`);if(n)return{from:n.from,to:n.to,href:n.mark.attrs.href}}function Or(e){return Sr({key:Er,selector:`.md-link`,preventDefault:!0,findHitAt:(e,t)=>{let n=Dr(e,t);return n?{from:n.from,to:n.to,payload:n.href}:void 0},onClick:(t,n)=>e({href:t,event:n})})}function kr(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const Ar=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,jr=/\/status(?:es)?\/(\d+)/;function Mr(e){let t;try{t=new URL(e)}catch{return}if(Ar.test(t.hostname))return jr.exec(t.pathname)?.[1]}const Nr=e=>{let t=Mr(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=kr()?`dark`:`light`,n=document.createElement(`iframe`);return n.src=`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${e}&dnt=true`,n.title=`Tweet`,n.className=`md-embed md-embed-tweet`,n.dataset.testid=`tweet-embed`,n.loading=`lazy`,n.referrerPolicy=`strict-origin-when-cross-origin`,n.setAttribute(`frameborder`,`0`),Pr(n),n}}};function Pr(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=new MutationObserver(()=>{e.isConnected||(window.removeEventListener(`message`,t),n.disconnect())});n.observe(document.body,{childList:!0,subtree:!0})}const Fr=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,Ir=/^(?:www\.)?youtu\.be$/i,Lr=/^[\w-]{11}$/;function Rr(e){let t;try{t=new URL(e)}catch{return}let n=null;if(Ir.test(t.hostname))n=t.pathname.slice(1);else if(Fr.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||!Lr.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?zr(r):void 0;return{videoId:n,startSeconds:i}}function zr(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 Br=[e=>{let t=Rr(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{key:`youtube:${t.videoId}:${t.startSeconds??0}`,render:()=>{let e=document.createElement(`iframe`);return e.src=`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,e.title=`YouTube video`,e.className=`md-embed md-embed-youtube`,e.dataset.testid=`youtube-embed`,e.loading=`lazy`,e.referrerPolicy=`strict-origin-when-cross-origin`,e.setAttribute(`frameborder`,`0`),e.allow=`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,e.allowFullscreen=!0,e}}},Nr];function Vr(e){for(let t of Br){let n=t(e);if(n)return n}}function Hr(e){return/^https?:\/\//i.test(e)?e:void 0}function Ur(e,t,n){let r=Vr(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-preview md-image-preview-embed`,e.appendChild(r.render()),e}let i=(n.resolveImageUrl??Hr)(e);if(!i)return;let a=document.createElement(`span`);a.className=`md-image-preview md-image-preview-img`,a.dataset.testid=`image-preview`;let o=document.createElement(`img`);return o.src=i,o.alt=t,o.draggable=!1,a.appendChild(o),a}function Wr(e){return t=>{let n=t.attrs,r=document.createElement(`span`);r.className=`md-image-view`;let i=document.createElement(`span`);i.className=`md-image-view-content`,r.appendChild(i);let a=Ur(n.src,n.alt,e);return a&&(a.contentEditable=`false`,r.appendChild(a)),{dom:r,contentDOM:i,ignoreMutation:e=>!i.contains(e.target)}}}function Gr(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const Kr=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function qr(e,t,n,r=Kr,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 Jr(e){return new _({key:new v(`image-input`),props:{handlePaste:(t,n)=>{let r=Gr(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(qr(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=Gr(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(qr(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Yr(e={}){return h(u({name:`mdImageView`,constructor:Wr(e)}),g(p(Jr(e)),t.high))}const Xr=new v(`meowdown-image-click`);function Zr(e,t){let n=w(e,t,`mdImageSource`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function Qr(e){return p(new _({key:Xr,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Zr(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}const $r=new v(`meowdown-embed-paste`);function ei(e){let t=e.trim();if(!(!t||/\s/.test(t)))return Vr(t)?t:void 0}function ti(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
3
+ `)}function ni(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(Qe(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(Qe(i))}function ri(){return p(new _({key:$r,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=ti(t,n);if(!i)return!1;let a=ei(i);return a?(ni(e,a),!0):!1}}}))}function ii(){return rt().use($e).use(et).use(tt).use(nt,{bullet:`-`,emphasis:`*`,strong:`*`,fence:"`",fences:!0,rule:`-`,ruleRepetition:3,listItemIndent:`one`}).freeze()}const ai=x(ii);function oi(e){return String(ai().processSync(e))}function G(e,t={}){let{nodes:n=un(),frontmatter:r=!1}=t,i,a=e;if(r){let[t,n]=ci(e);i=t,n&&(a=e.slice(n))}let o=li(n,Zt.parse(a).cursor(),a);return n.doc(i===void 0?{}:{frontmatter:i},o)}const si=/^---[ \t]*\r?\n([\s\S]*?\n)?---[ \t]*(?:\r?\n|$)/;function ci(e){let t=si.exec(e);return t?[(t[1]??``).replace(/\r?\n$/,``),t[0].length]:[]}function li(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...K(e,t,n));while(t.nextSibling());return t.parent(),r}function K(e,t,n){switch(t.type.id){case I.ATXHeading1:return[q(e,t,n,1,!1)];case I.ATXHeading2:return[q(e,t,n,2,!1)];case I.ATXHeading3:return[q(e,t,n,3,!1)];case I.ATXHeading4:return[q(e,t,n,4,!1)];case I.ATXHeading5:return[q(e,t,n,5,!1)];case I.ATXHeading6:return[q(e,t,n,6,!1)];case I.SetextHeading1:return[q(e,t,n,1,!0)];case I.SetextHeading2:return[q(e,t,n,2,!0)];case I.Paragraph:return[X(e,t,n)];case I.HTMLBlock:case I.CommentBlock:case I.ProcessingInstructionBlock:return[X(e,t,n)];case I.Blockquote:return[pi(e,t,n)];case I.BulletList:return mi(e,t,n,`bullet`);case I.OrderedList:return mi(e,t,n,`ordered`);case I.FencedCode:case I.CodeBlock:return[gi(e,t,n)];case I.HorizontalRule:{let r=n.slice(t.from,t.to).trimEnd();return[e.horizontalRule({marker:r===`---`?null:r})]}case I.Table:return[_i(e,t,n)];case I.Task:return[X(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[X(e,t,n)])}}function q(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===I.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===I.HeaderMark&&n>o&&(s=n,c=n,l=r),t.parent()}let u=fi(n.slice(o,s),J(n,o)).trim(),d=i?ui(n,c,l)||1:null;return e.heading({level:r,setextUnderline:d},u)}function ui(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 J(e,t){let n=e.lastIndexOf(`
4
+ `,t-1)+1,r=0;for(let i=n;i<t;i++)r+=e.charCodeAt(i)===9?4-r%4:1;return r}function di(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 fi(e,t){return t===0||!e.includes(`
5
+ `)?e:e.split(`
6
+ `).map((e,n)=>n===0?e:di(e,t)).join(`
7
+ `)}function Y(e,t,n){return e.paragraph(fi(t,n))}function X(e,t,n){let r=t.from,i=t.to,a=J(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===I.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,zt(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),Y(e,o,a)}return Y(e,n.slice(r,i),a)}function pi(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===I.QuoteMark)continue;r.push(...K(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function mi(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===I.ListItem&&i.push(hi(e,t,n,r));while(t.nextSibling());t.parent()}return i}function hi(e,t,n,r){let i=[],a,o,s,c,l,u;if(t.firstChild()){do{if(t.type.id!==I.ListMark&&u==null&&(u=J(n,t.from)),t.type.id===I.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=J(n,t.to);continue}if(r===`bullet`&&t.type.id===I.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===I.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()}zt(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(Y(e,c,J(n,r)));continue}i.push(...K(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 gi(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case I.CodeInfo:r=n.slice(t.from,t.to);break;case I.CodeText:i+=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function _i(e,t,n){let r=0;if(t.firstChild()){do t.type.id===I.TableDelimiter&&(r=vi(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===I.TableHeader?i.push(yi(e,t,n,!0,r)):a===I.TableRow&&i.push(yi(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function vi(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function yi(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===I.TableDelimiter,r=0;do if(t.type.id===I.TableDelimiter)r++;else if(t.type.id===I.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)}const bi=new v(`meowdown-html-paste`);function xi(){return p(new _({key:bi,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=oi(e);if(!r.trim())return e;let i=G(r,{nodes:mn(t.state.schema)}),a=Ae.fromSchema(t.state.schema),o=document.createElement(`div`);return o.append(a.serializeFragment(i.content)),o.innerHTML}}}))}function Z(e,t={}){let n=new Ti;return t.frontmatter&&Si(e.attrs.frontmatter,n),Ei(e,n),n.finish()}function Si(e,t){e!==null&&(t.write(`---`),t.write(`
4
8
  `),e!==``&&(t.write(e),t.write(`
5
- `)),t.write(`---`),t.closeBlock())}const Ir=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function Lr(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){J(e,t);let i=n.level===1?`=`:`-`;t.write(`
6
- `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(Ir[n.level]??`# `),J(e,t),t.closeBlock()}var Rr=class{constructor(){this.parts=[],this.linePrefix=``,this.pendingFirst=null,this.atLineStart=!0,this.deferredBlankPrefix=null}write(e){if(e===``)return;if(this.emitDeferredBlankLine(),this.atLineStart&&=(this.parts.push(this.pendingFirst??this.linePrefix),this.pendingFirst=null,!1),!e.includes(`
9
+ `)),t.write(`---`),t.closeBlock())}const Ci=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function wi(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){$(e,t);let i=n.level===1?`=`:`-`;t.write(`
10
+ `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(Ci[n.level]??`# `),$(e,t),t.closeBlock()}var Ti=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(`
7
11
  `)){this.parts.push(e);return}let t=e.split(`
8
12
  `);for(let e=0;e<t.length;e++)e>0&&this.parts.push(`
9
13
  `,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(`
10
14
  `),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+$/,``)+`
11
15
  `}emitDeferredBlankLine(){let e=this.deferredBlankPrefix;e!==null&&(this.parts.push(e.trimEnd(),`
12
- `),this.deferredBlankPrefix=null)}};function zr(e,t){switch(e.type.name){case`doc`:q(e,t);return;case`paragraph`:J(e,t),t.closeBlock();return;case`heading`:Lr(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>q(e,t)),t.closeBlock();return;case`list`:Hr(e,t,Vr(e));return;case`codeBlock`:Ur(e,t);return;case`horizontalRule`:{let{marker:n}=e.attrs;t.write(n||`---`),t.closeBlock();return}case`table`:Wr(e,t);return;case`text`:e.text&&t.write(e.text);return}}function q(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(),zr(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=Br(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),Hr(e.child(r),t,s);i=o}}function Br(e,t,n){for(let r=t;r<n;r++)if(!Vr(e.child(r)))return!1;return!0}function Vr(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 J(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 Hr(e,t,n){let r=e.attrs,i=r.marker===`*`||r.marker===`+`?r.marker:`-`,a=r.marker===`)`?`)`:`.`,o=r.taskMarker===`X`?`X`:`x`,s=r.kind===`ordered`?`${r.order??1}${a} `:r.kind===`task`?`${i} [${r.checked?o:` `}] `:`${i} `,c=` `.repeat(r.kind===`task`?2:s.length);t.withPrefix(c,s,()=>q(e,t,n)),t.closeBlock()}function Ur(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(Sn(r,2)+1);t.write(i),n&&t.write(n),t.write(`
16
+ `),this.deferredBlankPrefix=null)}};function Ei(e,t){switch(e.type.name){case`doc`:Q(e,t);return;case`paragraph`:$(e,t),t.closeBlock();return;case`heading`:wi(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>Q(e,t)),t.closeBlock();return;case`list`:ki(e,t,Oi(e));return;case`codeBlock`:Ai(e,t);return;case`horizontalRule`:{let{marker: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 Q(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(),Ei(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=Di(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 Di(e,t,n){for(let r=t;r<n;r++)if(!Oi(e.child(r)))return!1;return!0}function Oi(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 $(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,()=>Q(e,t,n)),t.closeBlock()}function Ai(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(zn(r,2)+1);t.write(i),n&&t.write(n),t.write(`
13
17
  `),r&&(t.write(r),t.write(`
14
- `)),t.write(i),t.closeBlock()}function Wr(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(Kr(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(Gr(s,i)),t.write(`
18
+ `)),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(`
15
19
  `),t.write(o);for(let e=0;e<n;e++)e!==a&&(t.write(`
16
- `),t.write(Gr(r[e],i)));t.closeBlock()}function Gr(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function Kr(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
20
+ `),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(`
17
21
  `)?t:t.replaceAll(`|`,String.raw`\|`).replaceAll(`
18
- `,` `)}function qr(e,t={}){let{nodes:n=Xt(),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,zt.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(...Y(e,t,n));while(t.nextSibling());return t.parent(),r}function Y(e,t,n){switch(t.type.id){case P.ATXHeading1:return[X(e,t,n,1,!1)];case P.ATXHeading2:return[X(e,t,n,2,!1)];case P.ATXHeading3:return[X(e,t,n,3,!1)];case P.ATXHeading4:return[X(e,t,n,4,!1)];case P.ATXHeading5:return[X(e,t,n,5,!1)];case P.ATXHeading6:return[X(e,t,n,6,!1)];case P.SetextHeading1:return[X(e,t,n,1,!0)];case P.SetextHeading2:return[X(e,t,n,2,!0)];case P.Paragraph:return[$(e,t,n)];case P.HTMLBlock:case P.CommentBlock:case P.ProcessingInstructionBlock:return[$(e,t,n)];case P.Blockquote:return[ei(e,t,n)];case P.BulletList:return ti(e,t,n,`bullet`);case P.OrderedList:return ti(e,t,n,`ordered`);case P.FencedCode:case P.CodeBlock:return[ri(e,t,n)];case P.HorizontalRule:{let r=n.slice(t.from,t.to).trimEnd();return[e.horizontalRule({marker:r===`---`?null:r})]}case P.Table:return[ii(e,t,n)];case P.Task:return[$(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[$(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===P.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===P.HeaderMark&&n>o&&(s=n,c=n,l=r),t.parent()}let u=$r(n.slice(o,s),Z(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 Z(e,t){let n=e.lastIndexOf(`
19
- `,t-1)+1,r=0;for(let i=n;i<t;i++)r+=e.charCodeAt(i)===9?4-r%4:1;return r}function Qr(e,t){let n=0,r=0;for(;r<e.length&&n<t;){let t=e.charCodeAt(r);if(t===32)n+=1;else if(t===9)n+=4-n%4;else break;r++}return e.slice(r)}function $r(e,t){return t===0||!e.includes(`
20
- `)?e:e.split(`
21
- `).map((e,n)=>n===0?e:Qr(e,t)).join(`
22
- `)}function Q(e,t,n){return e.paragraph($r(t,n))}function $(e,t,n){let r=t.from,i=t.to,a=Z(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===P.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,Dt(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),Q(e,o,a)}return Q(e,n.slice(r,i),a)}function ei(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===P.QuoteMark)continue;r.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function ti(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===P.ListItem&&i.push(ni(e,t,n,r));while(t.nextSibling());t.parent()}return i}function ni(e,t,n,r){let i=[],a,o,s,c;if(t.firstChild()){do{if(t.type.id===P.ListMark){if(r===`ordered`){let e=n.charCodeAt(t.to-1);e===41?c=`)`:e===46&&(c=`.`);let r=Number.parseInt(n.slice(t.from,t.to),10);s=Number.isFinite(r)?r:1}else{let e=n.charCodeAt(t.from);c=e===42?`*`:e===43?`+`:`-`}continue}if(r===`bullet`&&t.type.id===P.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===P.TaskMarker){let e=n.charCodeAt(t.from+1);e===120?(a=!0,o=`x`):e===88&&(a=!0,o=`X`),r=t.to}t.parent()}Dt(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(Q(e,c,Z(n,r)));continue}i.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}return e.list({kind:a==null?r:`task`,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:!1,marker:c,taskMarker:o},i)}function ri(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case P.CodeInfo:r=n.slice(t.from,t.to);break;case P.CodeText:i+=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function ii(e,t,n){let r=0;if(t.firstChild()){do t.type.id===P.TableDelimiter&&(r=ai(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===P.TableHeader?i.push(oi(e,t,n,!0,r)):a===P.TableRow&&i.push(oi(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function ai(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function oi(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===P.TableDelimiter,r=0;do if(t.type.id===P.TableDelimiter)r++;else if(t.type.id===P.TableCell){let o=r-+!!e;o>=0&&o<i&&(a[o]=n.slice(t.from,t.to).trim().replaceAll(String.raw`\|`,`|`))}while(t.nextSibling());t.parent()}let o=a.map(t=>{let n=e.paragraph(t);return r?e.tableHeaderCell(n):e.tableCell(n)});return e.tableRow(o)}function si(e){return e.replace(/\n+$/u,``)}function ci(e){return/^[\s>]*$/u.test(e)}function li(e){return e.split(`
23
- `).filter(e=>!ci(e))}function ui(e,t={}){let n=Pr(qr(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(si(n)===si(e))return`exact`;let r=li(e),i=li(n);return r.length===i.length&&r.every((e,t)=>e.trimEnd()===i[t].trimEnd())?`normalizing`:`lossy`}export{jr as EDITOR_KEY_BINDINGS,e as Priority,ui as checkRoundTrip,Nr as codeBlockLanguages,Ar as defineBulletAfterHeading,Kn as defineEditorExtension,Or as defineEmbedPaste,br as defineImage,Cr as defineImageClickHandler,$n as defineLinkClickHandler,Qe as defineMarkMode,Ke as definePlaceholder,qe as defineReadonly,Xn as defineWikilinkClickHandler,Pr as docToMarkdown,qr as markdownToDoc,oe as withPriority};
22
+ `,` `)}const Pi=new v(`meowdown-markdown-copy`);function Fi(){return p(new _({key:Pi,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?Z(r).replace(/\n+$/,``):n.textBetween(0,n.size,`
23
+ `,`
24
+ `)}}}))}const Ii=(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(y.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Li(){return g(c({Enter:Ii}),t.high)}const Ri={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`},zi=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Bi=ye.map(e=>e.name).filter(e=>!zi.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function Vi(e){return e.replace(/\n+$/u,``)}function Hi(e){return/^[\s>]*$/u.test(e)}function Ui(e){return e.split(`
25
+ `).filter(e=>!Hi(e))}function Wi(e,t={}){let n=Z(G(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(Vi(n)===Vi(e))return`exact`;let r=Ui(e),i=Ui(n);return r.length===i.length&&r.every((e,t)=>e.trimEnd()===i[t].trimEnd())?`normalizing`:`lossy`}export{Ri as EDITOR_KEY_BINDINGS,e as Priority,Wi as checkRoundTrip,Bi as codeBlockLanguages,Li as defineBulletAfterHeading,xr as defineEditorExtension,ri as defineEmbedPaste,xi as defineHTMLPaste,Yr as defineImage,Qr as defineImageClickHandler,Or as defineLinkClickHandler,ut as defineMarkMode,Fi as defineMarkdownCopy,it as definePlaceholder,at as defineReadonly,Tr as defineWikilinkClickHandler,Z as docToMarkdown,G as markdownToDoc,se as withPriority};
package/dist/style.css CHANGED
@@ -259,6 +259,50 @@ img.ProseMirror-separator {
259
259
  margin-top: .25em;
260
260
  }
261
261
 
262
+ .ProseMirror .prosemirror-flat-list[data-list-kind="task"] {
263
+ transition: opacity .2s;
264
+
265
+ &[data-list-checked] {
266
+ opacity: .5;
267
+
268
+ & .prosemirror-flat-list[data-list-kind="task"][data-list-checked] {
269
+ opacity: 1;
270
+ }
271
+ }
272
+
273
+ & > .list-marker {
274
+ transition: transform .12s;
275
+
276
+ &:hover {
277
+ transform: scale(1.1);
278
+ }
279
+
280
+ & input[type="checkbox"] {
281
+ -webkit-appearance: none;
282
+ appearance: none;
283
+ box-sizing: border-box;
284
+ border: 1.5px solid var(--meowdown-border);
285
+ background: center / 100% 100% no-repeat;
286
+ border-radius: .25rem;
287
+ width: .95rem;
288
+ height: .95rem;
289
+ transition: background-color .15s, border-color .15s;
290
+
291
+ &:checked {
292
+ background-color: var(--meowdown-accent);
293
+ background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
294
+ border-color: #0000;
295
+ }
296
+ }
297
+ }
298
+
299
+ &[data-list-marker="+"] > .list-marker input[type="checkbox"] {
300
+ border-radius: 100rem;
301
+ width: 1.05rem;
302
+ height: 1.05rem;
303
+ }
304
+ }
305
+
262
306
  .ProseMirror pre {
263
307
  background: var(--meowdown-code-bg);
264
308
  font-family: var(--meowdown-font-mono);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/core",
3
3
  "type": "module",
4
- "version": "0.17.4",
4
+ "version": "0.19.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -25,9 +25,15 @@
25
25
  "@lezer/markdown": "^1.6.4",
26
26
  "@ocavue/utils": "^1.7.0",
27
27
  "@prosekit/core": "^0.13.0-beta.3",
28
- "@prosekit/extensions": "^0.17.5-beta.6",
28
+ "@prosekit/extensions": "^0.17.5-beta.7",
29
29
  "@prosekit/pm": "^0.1.19-beta.0",
30
- "prosemirror-highlight": "^0.15.2"
30
+ "prosemirror-flat-list": "^0.6.0",
31
+ "prosemirror-highlight": "^0.15.2",
32
+ "rehype-parse": "^9.0.1",
33
+ "rehype-remark": "^10.0.1",
34
+ "remark-gfm": "^4.0.1",
35
+ "remark-stringify": "^11.0.0",
36
+ "unified": "^11.0.5"
31
37
  },
32
38
  "devDependencies": {
33
39
  "@ocavue/tsconfig": "^0.7.1",