@meowdown/core 0.19.0 → 0.21.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
@@ -69,6 +69,14 @@ Pasting rich-text HTML from a browser (a bullet list, **bold**, a link, ...) con
69
69
 
70
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.
71
71
 
72
+ ## Static rendering primitives
73
+
74
+ `@meowdown/react`'s `<MarkdownView>` renders Markdown to a read-only React tree without an editor by reusing these building blocks, also exported for other renderers:
75
+
76
+ - `inlineTextToMarkChunks(getMarkBuilders(), text)`: the inline parser the editor uses, returning `[from, to, marks]` chunks (`MarkChunk`) for one line of source text.
77
+ - `getCodeTokens(code, language)`: syntax-highlight tokens (`CodeToken`, the tuple `[from, to, classes]`) tagged with the same `tok-*` classes as the editor. Returns synchronously once the Lezer grammar is cached, otherwise a promise.
78
+ - `matchEmbed(src)`: detects a tweet/YouTube image `src` and returns an `EmbedDescriptor` (no DOM); `listenForTweetHeight(iframe)` syncs a tweet iframe's height and returns a cleanup function.
79
+
72
80
  ## Re-exports
73
81
 
74
82
  `Priority` and `withPriority` are re-exported from `@prosekit/core`, so you can set extension priorities (e.g. `withPriority(extension, Priority.high)`) without depending on `@prosekit/core` directly.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { Editor, Extension, ExtractNodeBuilders, PlainExtension, Priority, Union, withPriority } from "@prosekit/core";
1
+ import { Editor, Extension, ExtractMarkBuilders, ExtractNodeBuilders, PlainExtension, Priority, Union, withPriority } from "@prosekit/core";
2
2
  import { CodeBlockAttrs } from "@prosekit/extensions/code-block";
3
3
  import { HorizontalRuleExtension } from "@prosekit/extensions/horizontal-rule";
4
- import { ProseMirrorNode } from "@prosekit/pm/model";
4
+ import { Mark, ProseMirrorNode } from "@prosekit/pm/model";
5
5
  import { PlaceholderOptions, definePlaceholder } from "@prosekit/extensions/placeholder";
6
6
  import { defineReadonly } from "@prosekit/extensions/readonly";
7
7
 
@@ -235,9 +235,94 @@ interface ImageOptions {
235
235
  /** Called when persisting a pasted/dropped image throws. Defaults to `console.error`. */
236
236
  onImageSaveError?: ImageSaveErrorHandler;
237
237
  }
238
+ /** Show an `src` as-is when it is an http(s) URL, otherwise skip rendering it. */
239
+ declare function defaultResolveImageUrl(src: string): string | undefined;
238
240
  /** Inline image/embed rendering (a mark view) plus paste/drop persistence. */
239
241
  declare function defineImage(options?: ImageOptions): PlainExtension;
240
242
  //#endregion
243
+ //#region src/extensions/embed/types.d.ts
244
+ /**
245
+ * A framework-agnostic description of an embed iframe. Both the editor's DOM
246
+ * mark view and the static React renderer build their own `<iframe>` from it, so
247
+ * the URL/attribute logic lives in one place while each side renders natively.
248
+ */
249
+ interface EmbedDescriptor {
250
+ readonly kind: 'tweet' | 'youtube';
251
+ /**
252
+ * Stable identity for the widget, unique per rendered embed (e.g. the video or
253
+ * tweet id). Keeps ProseMirror from rebuilding the iframe on every edit, and
254
+ * keys the React element, so the embed never reloads.
255
+ */
256
+ readonly key: string;
257
+ /** The iframe `src`. */
258
+ readonly src: string;
259
+ /** The iframe `title`. */
260
+ readonly title: string;
261
+ /** The iframe `class`, e.g. `md-embed md-embed-tweet`. */
262
+ readonly className: string;
263
+ /** The iframe `data-testid`. */
264
+ readonly testid: string;
265
+ /** The iframe `allow` policy, when the embed needs one. */
266
+ readonly allow?: string;
267
+ /** Whether the iframe is fullscreen-capable. */
268
+ readonly allowFullscreen?: boolean;
269
+ }
270
+ //#endregion
271
+ //#region src/extensions/embed/tweet.d.ts
272
+ /**
273
+ * `Tweet.html` reports its rendered height via `postMessage`; size the iframe to
274
+ * fit. Returns a cleanup that removes the listener. The cleanup also runs once
275
+ * the iframe leaves the DOM, so the editor's DOM mark view (which has no destroy
276
+ * hook) is covered, while a React caller can call it on unmount.
277
+ */
278
+ declare function listenForTweetHeight(iframe: HTMLIFrameElement): () => void;
279
+ //#endregion
280
+ //#region src/extensions/embed/index.d.ts
281
+ /** Detect a tweet/YouTube embed in an image `src`, or `undefined` for a plain image. */
282
+ declare function matchEmbed(src: string): EmbedDescriptor | undefined;
283
+ //#endregion
284
+ //#region src/extensions/code-block-highlight.d.ts
285
+ /**
286
+ * Adds syntax highlighting to `codeBlock` nodes, parsing each block with the
287
+ * matching CodeMirror/Lezer grammar (loaded on demand from
288
+ * `@codemirror/language-data`). Tokens are tagged with `@lezer/highlight`
289
+ * `tok-*` classes; the default theme colors them per color scheme.
290
+ */
291
+ declare function defineCodeBlockSyntaxHighlight(): Extension;
292
+ /** A highlighted span of code: `[from, to)` carries the `@lezer/highlight` classes. */
293
+ type CodeToken = readonly [from: number, to: number, classes: string];
294
+ /**
295
+ * Highlight `code` in `language` into `tok-*` token spans, the same classes the
296
+ * editor's decorations use. Returns synchronously when the grammar is already
297
+ * loaded (the common path, no render flash), and a `Promise` only when a grammar
298
+ * must load on demand. Returns `[]` for an empty or unsupported language.
299
+ */
300
+ declare function getCodeTokens(code: string, language: string): CodeToken[] | Promise<CodeToken[]>;
301
+ //#endregion
302
+ //#region src/extensions/mark-chunk.d.ts
303
+ /**
304
+ * Contiguous range with a uniform inline-mark set.
305
+ */
306
+ type MarkChunk = readonly [from: number, to: number, marks: readonly Mark[]];
307
+ //#endregion
308
+ //#region src/extensions/schema.d.ts
309
+ type TypedNodeBuilders = ExtractNodeBuilders<EditorExtension>;
310
+ type TypedMarkBuilders = ExtractMarkBuilders<EditorExtension>;
311
+ /** Typed mark builders bound to the shared schema. */
312
+ declare const getMarkBuilders: () => TypedMarkBuilders;
313
+ //#endregion
314
+ //#region src/extensions/inline-text-to-mark-chunks.d.ts
315
+ /**
316
+ * Walk a textblock's inline content and produce a list of mark chunks
317
+ * with positions relative to the start of `text` (i.e. zero-based).
318
+ * Callers shift the chunks into the document's coordinate space.
319
+ */
320
+ declare function inlineTextToMarkChunks(/** Typed mark builders bound to the target schema. */
321
+
322
+ marks: TypedMarkBuilders, /** The raw inline text of one textblock (no block prefix). */
323
+
324
+ text: string): MarkChunk[];
325
+ //#endregion
241
326
  //#region src/extensions/image-click.d.ts
242
327
  interface ImageClickPayload {
243
328
  /** The markdown `src`, exactly as written in `![alt](src)`. */
@@ -290,6 +375,12 @@ declare function defineMarkdownCopy(): PlainExtension;
290
375
  */
291
376
  declare function defineBulletAfterHeading(): PlainExtension;
292
377
  //#endregion
378
+ //#region src/extensions/wikilink-trigger.d.ts
379
+ /**
380
+ * Binds `Mod-Shift-k` to open the wikilink menu.
381
+ */
382
+ declare function defineWikilinkTrigger(): PlainExtension;
383
+ //#endregion
293
384
  //#region src/extensions/key-bindings.d.ts
294
385
  /** Human-readable descriptions of the editor's formatting and heading shortcuts. */
295
386
  declare const EDITOR_KEY_BINDINGS: {
@@ -337,9 +428,6 @@ interface DocToMarkdownOptions {
337
428
  */
338
429
  declare function docToMarkdown(node: ProseMirrorNode, options?: DocToMarkdownOptions): string;
339
430
  //#endregion
340
- //#region src/extensions/schema.d.ts
341
- type TypedNodeBuilders = ExtractNodeBuilders<EditorExtension>;
342
- //#endregion
343
431
  //#region src/converters/md-to-pm.d.ts
344
432
  /** Options for {@link markdownToDoc}. */
345
433
  interface MarkdownToDocOptions {
@@ -382,4 +470,15 @@ interface CheckRoundTripOptions {
382
470
  /** Classify how `markdown` survives the editor's parse-then-serialize round trip. */
383
471
  declare function checkRoundTrip(markdown: string, options?: CheckRoundTripOptions): RoundTripFidelity;
384
472
  //#endregion
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 };
473
+ //#region src/extensions/node-names.d.ts
474
+ /**
475
+ * Every ProseMirror node name the editor schema knows about.
476
+ */
477
+ declare const NODE_NAMES: readonly ["doc", "text", "paragraph", "heading", "blockquote", "list", "codeBlock", "horizontalRule", "table", "tableRow", "tableCell", "tableHeaderCell"];
478
+ type NodeName = (typeof NODE_NAMES)[number];
479
+ //#endregion
480
+ //#region src/extensions/mark-names.d.ts
481
+ declare const MARK_NAMES: readonly ["mdImageView", "mdImageSource", "mdMark", "mdEm", "mdStrong", "mdCode", "mdLinkText", "mdLinkUri", "mdDel", "mdTag", "mdWikilinkSource", "mdWikilinkView", "mdPack"];
482
+ type MarkName = (typeof MARK_NAMES)[number];
483
+ //#endregion
484
+ export { type CheckRoundTripOptions, type CodeBlockAttrs, type CodeToken, type DocToMarkdownOptions, EDITOR_KEY_BINDINGS, type EditorExtension, type EmbedDescriptor, type ImageClickHandler, type ImageClickPayload, type ImageOptions, type LinkClickHandler, type LinkClickPayload, type MarkChunk, type MarkMode, type MarkName, type MarkdownToDocOptions, type MdImageViewAttrs, type MdLinkTextAttrs, type MdWikilinkViewAttrs, type NodeName, type PlaceholderOptions, Priority, type RoundTripFidelity, type TypedEditor, type TypedMarkBuilders, type WikilinkClickHandler, type WikilinkClickPayload, checkRoundTrip, codeBlockLanguages, defaultResolveImageUrl, defineBulletAfterHeading, defineCodeBlockSyntaxHighlight, defineEditorExtension, defineEmbedPaste, defineHTMLPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineMarkMode, defineMarkdownCopy, definePlaceholder, defineReadonly, defineWikilinkClickHandler, defineWikilinkTrigger, docToMarkdown, getCodeTokens, getMarkBuilders, inlineTextToMarkChunks, listenForTweetHeight, markdownToDoc, matchEmbed, withPriority };
package/dist/index.js CHANGED
@@ -1,25 +1,25 @@
1
- import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,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(`
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,highlightTree as xe}from"@lezer/highlight";import{createParser as Se}from"prosemirror-highlight/lezer";import{defineHeadingCommands as Ce,defineHeadingInputRule as we,defineHeadingSpec as Te}from"@prosekit/extensions/heading";import{defineHorizontalRule as Ee}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as De,Step as Oe,StepResult as ke,Transform as Ae}from"@prosekit/pm/transform";import{DOMSerializer as je,Mark as Me}from"@prosekit/pm/model";import{GFM as Ne,parser as Pe}from"@lezer/markdown";import{once as x}from"@ocavue/utils";import{defineInputRule as Fe}from"@prosekit/extensions/input-rule";import{defineListCommands as Ie,defineListDropIndicator as Le,defineListKeymap as Re,defineListPlugins as ze,defineListSerializer as Be,defineListSpec as Ve,wrapInList as S}from"@prosekit/extensions/list";import{wrappingListInputRule as C}from"prosemirror-flat-list";import{defineParagraphCommands as He,defineParagraphKeymap as Ue}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as We,defineTableCommands as Ge,defineTableDropIndicator as Ke,defineTableEditingPlugin as qe,defineTableHeaderCellSpec as Je,defineTableRowSpec as Ye,defineTableSpec as Xe,deleteTable as Ze,isCellSelection as Qe}from"@prosekit/extensions/table";import{closeHistory as $e}from"@prosekit/pm/history";import et from"rehype-parse";import tt from"rehype-remark";import nt from"remark-gfm";import rt from"remark-stringify";import{unified as it}from"unified";import{triggerAutocomplete as at}from"@prosekit/extensions/autocomplete";import{definePlaceholder as ot}from"@prosekit/extensions/placeholder";import{defineReadonly as st}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 ct=new Set([`mdMark`,`mdLinkUri`]),lt=new Set([`mdImageSource`,`mdWikilinkSource`]),ut=new v(`mark-mode`);function dt(e){return new _({key:ut,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>ht(e):void 0,clipboardTextSerializer:e===`show`?void 0:mt}})}function ft(e){return p(dt(e))}function pt(e){return ut.getState(e)}function mt(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(!e.marks.some(e=>lt.has(e.type.name))&&e.marks.some(e=>ct.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
+ `)}function ht(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=pt(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 gt(e,t){return y.create(e.doc,t.from,t.to)}function _t(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(gt(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 vt(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(gt(t,e))),!0):!1}let a=k(t,r);return a?(n?.(t.tr.setSelection(y.create(t.doc,a.from))),!0):!1}}function yt(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 bt(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 xt(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 St({marks:e,selectedClass:n}){return h(g(c({ArrowRight:_t(e),ArrowLeft:vt(e),Backspace:yt(e),Delete:bt(e)}),t.high),p(xt(e,n)))}const A=new Map,Ct=new Map;async function wt(e){let t=A.get(e);if(t!==void 0)return t;let n=ve.matchLanguageName(ye,e,!0);if(!n)return A.set(e,null),null;let r=n.support;if(!r)try{r=await n.load()}catch(t){return console.error(`[meowdown] Failed to load language "${e}":`,t),A.set(e,null),null}return A.set(e,r),r}function Tt(e,t){let n=Ct.get(e);if(n)return n;let r=Se({parse:e=>t.language.parser.parse(e.content),highlighter:be});return Ct.set(e,r),r}const Et=e=>{let t=e.language?.trim();if(!t)return[];let n=A.get(t);return n===null?[]:n?Tt(t,n)(e):wt(t).then(()=>void 0)};function Dt(){return de({parser:Et,nodeTypes:[`codeBlock`]})}function Ot(e,t){let n=t.language.parser.parse(e),r=[];return xe(n,be,(e,t,n)=>{r.push([e,t,n])}),r}function kt(e,t){let n=t.trim();if(!n)return[];let r=A.get(n);return r===null?[]:r?Ot(e,r):wt(n).then(t=>t?Ot(e,t):[])}function At(){return d({type:`doc`,attr:`frontmatter`,default:null})}function jt(){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 j(e){return ce(ae({type:`heading`,attrs:{level:e}}))}const Nt=(e,t,n)=>re(e,n)?.parent.type.name===`heading`?oe()(e,t,n):!1;function Pt(){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:Nt})}function Ft(){return h(Te(),jt(),Mt(),we(),Ce(),Pt())}function It(){return d({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function Lt(){return h(Ee(),It())}function Rt(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function zt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>Me.fromJSON(e,t))]}var M=class e extends Oe{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return ke.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 Ae(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new Ae(e),n.addMark(i,c,t));return!1})}return ke.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return Bt;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 De(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(Rt)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>zt(t,e)))}};Oe.jsonID(`batchSetMark`,M);const Bt=new M([]),Vt=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),Ht=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function Ut(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function Wt(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!Vt.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!Ht.test(e))return!1;return!0}function Gt(e){return e===32||e===9||e===10||e===13}const Kt=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,qt=/[\s(*_~]/;function Jt(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function Yt(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function Xt(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&Yt(e,t,`)`)>Yt(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 Zt={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!Jt(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!qt.test(r))return-1;let i=Kt.exec(e.slice(n,e.end));if(!i)return-1;let a=Xt(i[0]);return a===0||!Wt(Ut(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function Qt(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 $t(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const en={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(!Qt(t))break;i||=$t(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},tn={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 nn(e){return e.end}const N=Pe.configure([Ne,en,tn,Zt]),rn=N.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:nn}]});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 an(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const I=an(N);function on(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function sn(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function cn(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view`;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 ln(){return u({name:`mdWikilinkView`,constructor:cn()})}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 un(e,t){let n=P(t),r=[];return R(n,[],0,t.length,t,e,r),r}function dn(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||Wt(Ut(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)fn(n,t,i,a,o);else if(e===I.Image)pn(n,t,i,a,o);else if(e===I.Wikilink)mn(n,t,i,a,o);else if(e===I.URL){let e=dn(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 fn(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){mn(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 pn(e,t,n,r,i){let a=e.children.find(e=>e.type===I.URL);if(!a){fn(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 mn(e,t,n,r,i){let{target:a,display:o}=sn(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&&on(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const hn=x(()=>{let e=Or().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),gn=x(()=>r(hn())),_n=x(()=>n(hn())),vn=`meowdown_mark_builders`;function yn(e){let t=e.cached[vn];if(t)return t;let r=n(e);return e.cached[vn]=r,r}const bn=`meowdown_node_builders`;function xn(e){let t=e.cached[bn];if(t)return t;let n=r(e);return e.cached[bn]=n,n}const Sn=`inline-marks-applied`,Cn=new WeakMap;let wn=0,Tn=0;function En(e,t,n){let r=Cn.get(e);if(r?Tn++:(wn++,r=un(yn(n),e.textContent),Cn.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 Dn(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 On(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=En(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function kn(){return new _({key:new v(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(Sn))return null;let r=On(n,Dn(e,n));if(r.length===0)return null;let i=n.tr.step(new M(r));return i.setMeta(Sn,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(An(e.state)),{}}})}function An(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function jn(){return p(kn())}function Mn(){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 Nn(){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 Pn(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function Fn(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function In(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function Ln(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function Rn(){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 zn(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function Bn(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function Vn(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function Hn(){return l({name:`mdWikilinkSource`,inclusive:!1,attrs:{target:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-source`},0],parseDOM:[{tag:`span.md-wikilink-source`}]})}function Un(){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 Wn(){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 Gn(){return h(Pn(),Fn(),In(),Ln(),Rn(),zn(),Bn(),Vn(),Hn(),Un(),Nn(),Mn(),Wn())}function Kn(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:`~~`}},qn=new Set([I.EmphasisMark,I.CodeMark,I.LinkMark,I.StrikethroughMark]);function V(e){return[e.children[0],e.children.at(-1)]}function Jn(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=Jn(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 Yn(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return Yn(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const U=e=>e===` `||e===` `;function Xn(e,t,n){for(;t<n&&U(e[t]);)t++;for(;n>t&&U(e[n-1]);)n--;return[t,n]}function Zn(e,t,n,r){let i=F(P(e),e=>e.type===r.node||qn.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 Qn(e,t,n,r,i){let a=P(e),o=F(a,e=>e.type===r.node);return i?tr(e,o,t,n):$n(e,a,o,t,n,r)}function $n(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]=er(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function er(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(Kn(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function tr(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]=Yn(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 nr(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 rr(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function rr(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=Jn(n);return!e||t<e[0]||t>e[1]?!0:rr(n.children,t)}return!1}function W(e){return(t,n)=>{if(t.selection.empty)return ir(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]=Xn(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:Zn(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>Qn(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 ir(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=nr(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 ar(){return o({toggleEm:()=>W(B.em),toggleStrong:()=>W(B.strong),toggleCode:()=>W(B.code),toggleDel:()=>W(B.del)})}function or(){return c({"Mod-b":W(B.strong),"Mod-i":W(B.em),"Mod-e":W(B.code),"Mod-Shift-x":W(B.del)})}function sr(){return h(ar(),or())}function cr(){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 lr(){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 ur(e){return e===2||e===3||e===4}function dr(){return d({type:`list`,attr:`markerGap`,default:1,splittable:!0,toDOM:e=>ur(e)?[`data-list-marker-gap`,String(e)]:null,parseDOM:e=>{let t=Number.parseInt(e.getAttribute(`data-list-marker-gap`)??``,10);return ur(t)?t:1}})}const fr=[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 pr(){return h(fr.map(Fe))}function mr(){return S({kind:`task`,marker:`+`})}function hr(){return S({kind:`task`,marker:null})}function gr(){return o({wrapInCircleTask:mr,wrapInSquareTask:hr})}function _r(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 vr(){return(e,t,n)=>{let r=_r(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 yr(){return(e,t,n)=>{let r=_r(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 br(){return c({"Mod-Enter":vr(),"Mod-Shift-Enter":yr()})}function xr(){return h(Ve(),ze(),Re(),Ie(),Be(),Le(),pr(),br(),cr(),lr(),dr(),gr())}function Sr(){return f({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function Cr(){return h(g(Sr(),t.highest),He(),Ue())}const wr=(e,t)=>{let{selection:n}=e;return!Qe(n)||!n.isColSelection()||!n.isRowSelection()?!1:Ze(e,t)};function Tr(){return g(c({Backspace:wr,Delete:wr}),t.high)}function Er(){return h(Xe(),Ye(),We(),Je(),qe({allowTableNodeSelection:!0}),Ge(),Ke(),Tr())}function Dr(){return h(Cr(),fe(),At(),he(),le(),xr(),Ft(),Er(),ue(),Lt(),Gn(),Dt(),jn(),sr(),ln(),St({marks:[{name:`mdImageSource`,modes:[`hide`]},{name:`mdWikilinkSource`,modes:[`hide`,`focus`,`show`]}],selectedClass:`md-atomic-selected`}),a(),i(),s(),pe(),ge(),me())}function Or(){return Dr()}function kr(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 Ar=new v(`meowdown-wikilink-click`);function jr(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 Mr(e){return kr({key:Ar,selector:`.md-wikilink-label, .md-wikilink-source`,preventDefault:!1,findHitAt:(e,t)=>{let n=jr(e,t);return n?{from:n.from,to:n.to,payload:n.target}:void 0},onClick:(t,n)=>e({target:t,event:n})})}const Nr=new v(`meowdown-link-click`);function Pr(e,t){let n=w(e,t,`mdLinkText`);if(n)return{from:n.from,to:n.to,href:n.mark.attrs.href}}function Fr(e){return kr({key:Nr,selector:`.md-link`,preventDefault:!0,findHitAt:(e,t)=>{let n=Pr(e,t);return n?{from:n.from,to:n.to,payload:n.href}:void 0},onClick:(t,n)=>e({href:t,event:n})})}function Ir(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const Lr=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,Rr=/\/status(?:es)?\/(\d+)/;function zr(e){let t;try{t=new URL(e)}catch{return}if(Lr.test(t.hostname))return Rr.exec(t.pathname)?.[1]}const Br=e=>{let t=zr(e);if(!t)return;let n=Ir()?`dark`:`light`;return{kind:`tweet`,key:`tweet:${t}`,src:`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${n}&dnt=true`,title:`Tweet`,className:`md-embed md-embed-tweet`,testid:`tweet-embed`}};function Vr(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=!1,r=()=>{n||(n=!0,window.removeEventListener(`message`,t),i.disconnect())},i=new MutationObserver(()=>{e.isConnected||r()});return i.observe(document.body,{childList:!0,subtree:!0}),r}const Hr=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,Ur=/^(?:www\.)?youtu\.be$/i,Wr=/^[\w-]{11}$/;function Gr(e){let t;try{t=new URL(e)}catch{return}let n=null;if(Ur.test(t.hostname))n=t.pathname.slice(1);else if(Hr.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||!Wr.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?Kr(r):void 0;return{videoId:n,startSeconds:i}}function Kr(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 qr=[e=>{let t=Gr(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{kind:`youtube`,key:`youtube:${t.videoId}:${t.startSeconds??0}`,src:`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,title:`YouTube video`,className:`md-embed md-embed-youtube`,testid:`youtube-embed`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,allowFullscreen:!0}},Br];function G(e){for(let t of qr){let n=t(e);if(n)return n}}function Jr(e){return/^https?:\/\//i.test(e)?e:void 0}function Yr(e){let t=document.createElement(`iframe`);return t.src=e.src,t.title=e.title,t.className=e.className,t.dataset.testid=e.testid,t.loading=`lazy`,t.referrerPolicy=`strict-origin-when-cross-origin`,t.setAttribute(`frameborder`,`0`),e.allow&&(t.allow=e.allow),e.allowFullscreen&&(t.allowFullscreen=!0),e.kind===`tweet`&&Vr(t),t}function Xr(e,t,n){let r=G(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-preview md-image-preview-embed`,e.appendChild(Yr(r)),e}let i=(n.resolveImageUrl??Jr)(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 Zr(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=Xr(n.src,n.alt,e);return a&&(a.contentEditable=`false`,r.appendChild(a)),{dom:r,contentDOM:i,ignoreMutation:e=>!i.contains(e.target)}}}function Qr(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 ei(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 ti(e){return new _({key:new v(`image-input`),props:{handlePaste:(t,n)=>{let r=Qr(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(ei(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=Qr(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(ei(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function ni(e={}){return h(u({name:`mdImageView`,constructor:Zr(e)}),g(p(ti(e)),t.high))}const ri=new v(`meowdown-image-click`);function ii(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 ai(e){return p(new _({key:ri,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=ii(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}const oi=new v(`meowdown-embed-paste`);function si(e){let t=e.trim();if(!(!t||/\s/.test(t)))return G(t)?t:void 0}function ci(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
3
+ `)}function li(e,t){let{from:n,to:r}=e.state.selection;e.dispatch($e(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch($e(i))}function ui(){return p(new _({key:oi,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=ci(t,n);if(!i)return!1;let a=si(i);return a?(li(e,a),!0):!1}}}))}function di(){return it().use(et).use(tt).use(nt).use(rt,{bullet:`-`,emphasis:`*`,strong:`*`,fence:"`",fences:!0,rule:`-`,ruleRepetition:3,listItemIndent:`one`}).freeze()}const fi=x(di);function pi(e){return String(fi().processSync(e))}function K(e,t={}){let{nodes:n=gn(),frontmatter:r=!1}=t,i,a=e;if(r){let[t,n]=hi(e);i=t,n&&(a=e.slice(n))}let o=gi(n,rn.parse(a).cursor(),a);return n.doc(i===void 0?{}:{frontmatter:i},o)}const mi=/^---[ \t]*\r?\n([\s\S]*?\n)?---[ \t]*(?:\r?\n|$)/;function hi(e){let t=mi.exec(e);return t?[(t[1]??``).replace(/\r?\n$/,``),t[0].length]:[]}function gi(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...q(e,t,n));while(t.nextSibling());return t.parent(),r}function q(e,t,n){switch(t.type.id){case I.ATXHeading1:return[J(e,t,n,1,!1)];case I.ATXHeading2:return[J(e,t,n,2,!1)];case I.ATXHeading3:return[J(e,t,n,3,!1)];case I.ATXHeading4:return[J(e,t,n,4,!1)];case I.ATXHeading5:return[J(e,t,n,5,!1)];case I.ATXHeading6:return[J(e,t,n,6,!1)];case I.SetextHeading1:return[J(e,t,n,1,!0)];case I.SetextHeading2:return[J(e,t,n,2,!0)];case I.Paragraph:return[Z(e,t,n)];case I.HTMLBlock:case I.CommentBlock:case I.ProcessingInstructionBlock:return[Z(e,t,n)];case I.Blockquote:return[bi(e,t,n)];case I.BulletList:return xi(e,t,n,`bullet`);case I.OrderedList:return xi(e,t,n,`ordered`);case I.FencedCode:case I.CodeBlock:return[Ci(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[wi(e,t,n)];case I.Task:return[Z(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[Z(e,t,n)])}}function J(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=yi(n.slice(o,s),Y(n,o)).trim(),d=i?_i(n,c,l)||1:null;return e.heading({level:r,setextUnderline:d},u)}function _i(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 Y(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 vi(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 yi(e,t){return t===0||!e.includes(`
5
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(`
6
+ `).map((e,n)=>n===0?e:vi(e,t)).join(`
7
+ `)}function X(e,t,n){return e.paragraph(yi(t,n))}function Z(e,t,n){let r=t.from,i=t.to,a=Y(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===I.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,Gt(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),X(e,o,a)}return X(e,n.slice(r,i),a)}function bi(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===I.QuoteMark)continue;r.push(...q(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function xi(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===I.ListItem&&i.push(Si(e,t,n,r));while(t.nextSibling());t.parent()}return i}function Si(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=Y(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=Y(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()}Gt(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(X(e,c,Y(n,r)));continue}i.push(...q(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 Ci(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 wi(e,t,n){let r=0;if(t.firstChild()){do t.type.id===I.TableDelimiter&&(r=Ti(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(Ei(e,t,n,!0,r)):a===I.TableRow&&i.push(Ei(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function Ti(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function Ei(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 Di=new v(`meowdown-html-paste`);function Oi(){return p(new _({key:Di,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=pi(e);if(!r.trim())return e;let i=K(r,{nodes:xn(t.state.schema)}),a=je.fromSchema(t.state.schema),o=document.createElement(`div`);return o.append(a.serializeFragment(i.content)),o.innerHTML}}}))}function ki(e,t={}){let n=new Ni;return t.frontmatter&&Ai(e.attrs.frontmatter,n),Pi(e,n),n.finish()}function Ai(e,t){e!==null&&(t.write(`---`),t.write(`
8
8
  `),e!==``&&(t.write(e),t.write(`
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(`
9
+ `)),t.write(`---`),t.closeBlock())}const ji=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function Mi(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(ji[n.level]??`# `),$(e,t),t.closeBlock()}var Ni=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(`
11
11
  `)){this.parts.push(e);return}let t=e.split(`
12
12
  `);for(let e=0;e<t.length;e++)e>0&&this.parts.push(`
13
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(`
14
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+$/,``)+`
15
15
  `}emitDeferredBlankLine(){let e=this.deferredBlankPrefix;e!==null&&(this.parts.push(e.trimEnd(),`
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(`
16
+ `),this.deferredBlankPrefix=null)}};function Pi(e,t){switch(e.type.name){case`doc`:Q(e,t);return;case`paragraph`:$(e,t),t.closeBlock();return;case`heading`:Mi(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>Q(e,t)),t.closeBlock();return;case`list`:Li(e,t,Ii(e));return;case`codeBlock`:Ri(e,t);return;case`horizontalRule`:{let{marker:n}=e.attrs;t.write(n||`---`),t.closeBlock();return}case`table`:zi(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(),Pi(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=Fi(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),Li(e.child(r),t,s);i=o}}function Fi(e,t,n){for(let r=t;r<n;r++)if(!Ii(e.child(r)))return!1;return!0}function Ii(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 Li(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 Ri(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(Kn(r,2)+1);t.write(i),n&&t.write(n),t.write(`
17
17
  `),r&&(t.write(r),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(`
18
+ `)),t.write(i),t.closeBlock()}function zi(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(Vi(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(Bi(s,i)),t.write(`
19
19
  `),t.write(o);for(let e=0;e<n;e++)e!==a&&(t.write(`
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(`
20
+ `),t.write(Bi(r[e],i)));t.closeBlock()}function Bi(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function Vi(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
21
21
  `)?t:t.replaceAll(`|`,String.raw`\|`).replaceAll(`
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,`
22
+ `,` `)}const Hi=new v(`meowdown-markdown-copy`);function Ui(){return p(new _({key:Hi,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?ki(r).replace(/\n+$/,``):n.textBetween(0,n.size,`
23
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};
24
+ `)}}}))}const Wi=(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 Gi(){return g(c({Enter:Wi}),t.high)}const Ki=(e,t)=>{let{selection:n}=e;if(!n.empty&&!n.$head.sameParent(n.$anchor))return!1;let r=e.doc.textBetween(n.from,n.to);if(r.startsWith(`[[`))return!1;r.startsWith(`[`)&&(r=r.slice(1));let i=`[[`+r;if(t){let r=e.tr.insertText(i,n.from,n.to);r.setSelection(y.create(r.doc,n.from+i.length)),at(r),t(r.scrollIntoView())}return!0};function qi(){return c({"Mod-Shift-k":Ki})}const Ji={"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`},Yi=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Xi=ye.map(e=>e.name).filter(e=>!Yi.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function Zi(e){return e.replace(/\n+$/u,``)}function Qi(e){return/^[\s>]*$/u.test(e)}function $i(e){return e.split(`
25
+ `).filter(e=>!Qi(e))}function ea(e,t={}){let n=ki(K(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(Zi(n)===Zi(e))return`exact`;let r=$i(e),i=$i(n);return r.length===i.length&&r.every((e,t)=>e.trimEnd()===i[t].trimEnd())?`normalizing`:`lossy`}export{Ji as EDITOR_KEY_BINDINGS,e as Priority,ea as checkRoundTrip,Xi as codeBlockLanguages,Jr as defaultResolveImageUrl,Gi as defineBulletAfterHeading,Dt as defineCodeBlockSyntaxHighlight,Or as defineEditorExtension,ui as defineEmbedPaste,Oi as defineHTMLPaste,ni as defineImage,ai as defineImageClickHandler,Fr as defineLinkClickHandler,ft as defineMarkMode,Ui as defineMarkdownCopy,ot as definePlaceholder,st as defineReadonly,Mr as defineWikilinkClickHandler,qi as defineWikilinkTrigger,ki as docToMarkdown,kt as getCodeTokens,_n as getMarkBuilders,un as inlineTextToMarkChunks,Vr as listenForTweetHeight,K as markdownToDoc,G as matchEmbed,se as withPriority};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/core",
3
3
  "type": "module",
4
- "version": "0.19.0",
4
+ "version": "0.21.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -25,7 +25,7 @@
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.7",
28
+ "@prosekit/extensions": "^0.18.0-beta.9",
29
29
  "@prosekit/pm": "^0.1.19-beta.0",
30
30
  "prosemirror-flat-list": "^0.6.0",
31
31
  "prosemirror-highlight": "^0.15.2",