@meowdown/core 0.29.1 → 0.29.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -20,6 +20,6 @@ import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as
20
20
  `)?t:t.replaceAll(`|`,String.raw`\|`).replaceAll(`
21
21
  `,` `)}function Wi(e){return e.replace(/\n+$/u,``)}function Gi(e){return/^[\s>]*$/u.test(e)}function Ki(e){return e.split(`
22
22
  `).filter(e=>!Gi(e))}function qi(e){return e.trim().replaceAll(/\s+/gu,` `)}function Ji(e,t={}){let n=ki(J(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(Wi(n)===Wi(e))return`exact`;let r=Ki(e),i=Ki(n);return r.length===i.length&&r.every((e,t)=>qi(e)===qi(i[t]))?`normalizing`:`lossy`}const Yi=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=te(e.schema,`list`),i=te(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(S.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Xi(){return v(l({Enter:Yi}),t.high)}const Zi=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Qi=xe.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 $i(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const ea=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,ta=/\/status(?:es)?\/(\d+)/;function na(e){let t;try{t=new URL(e)}catch{return}if(ea.test(t.hostname))return ta.exec(t.pathname)?.[1]}const ra=e=>{let t=na(e);if(!t)return;let n=$i()?`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 ia(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 aa=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,oa=/^(?:www\.)?youtu\.be$/i,sa=/^[\w-]{11}$/;function ca(e){let t;try{t=new URL(e)}catch{return}let n=null;if(oa.test(t.hostname))n=t.pathname.slice(1);else if(aa.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||!sa.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?la(r):void 0;return{videoId:n,startSeconds:i}}function la(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 ua=[e=>{let t=ca(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}},ra];function da(e){for(let t of ua){let n=t(e);if(n)return n}}const fa=new x(`meowdown-embed-paste`);function pa(e){let t=e.trim();if(!(!t||/\s/.test(t)))return da(t)?t:void 0}function ma(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
23
- `)}function ha(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(at(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(at(i))}function ga(){return m(new b({key:fa,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=ma(t,n);if(!i)return!1;let a=pa(i);return a?(ha(e,a),!0):!1}}}))}const _a=new x(`meowdown-exit-boundary`);function va(e,t){let{$anchor:n,$head:r}=e.selection,i=t>0?n.max(r):n.min(r),a=i.parent.inlineContent?i.depth?e.doc.resolve(t>0?i.after():i.before()):void 0:i;return!!(a&&ye.findFrom(a,t))}function ya(e,t){let{state:n}=e,{selection:r}=n;return g(r)&&!r.empty||ne(r)||r.$from.parent.inlineContent&&!e.endOfTextblock(t<0?`up`:`down`)?!0:va(n,t)}function ba(e){return new b({key:_a,props:{handleKeyDown:(t,n)=>{if(n.shiftKey||n.altKey||n.ctrlKey||n.metaKey)return!1;let r=n.key===`ArrowUp`?-1:n.key===`ArrowDown`?1:void 0;return!(!r||ya(t,r)||e({direction:r<0?`up`:`down`,event:n})===!1)}}})}function xa(e){return v(m(ba(e)),t.low)}const Sa=(e,t)=>{let n={type:`highlight`,children:e.all(t)};return e.patch(t,n),n},Ca=(e,t,n,r)=>{let i=e,a=n.createTracker(r),o=a.move(`==`);return o+=a.move(n.containerPhrasing(i,{...a.current(),before:o,after:`=`})),o+=a.move(`==`),o};function wa(){return ut().use(ot).use(st,{handlers:{mark:Sa}}).use(ct).use(lt,{bullet:`-`,emphasis:`*`,strong:`*`,fence:"`",fences:!0,rule:`-`,ruleRepetition:3,listItemIndent:`one`,handlers:{highlight:Ca}}).freeze()}const Ta=y(wa);function Ea(e){return String(Ta().processSync(e))}const Da=new x(`meowdown-html-paste`);function Oa(){return m(new b({key:Da,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=Ea(e);if(!r.trim())return e;let i=J(r,{nodes:pi(t.state.schema)}),a=Ne.fromSchema(t.state.schema),o=document.createElement(`div`);return o.append(a.serializeFragment(i.content)),o.innerHTML}}}))}const ka=new x(`meowdown-image-click`);function Aa(e,t){let n=D(e,t,`mdImage`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function ja(e){return m(new b({key:ka,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-view-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Aa(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}function Ma(e){return/^https?:\/\//i.test(e)?e:void 0}function Na(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`&&ia(t),t}function Pa(e,t,n,r,i,a,o){let s=da(e);if(s){let e=document.createElement(`span`);return e.className=`md-image-view-preview md-atom-view-preview`,e.appendChild(Na(s)),e}let c=(i.resolveImageUrl??Ma)(e);if(!c)return;let l=document.createElement(`span`);return l.className=`md-image-view-preview md-atom-view-preview`,l.dataset.testid=`image-preview`,l.appendChild(Fa(c,t,n,r,a,o)),l}function Fa(e,t,n,r,i,a){ft(),dt();let o=document.createElement(`prosekit-resizable-root`);o.className=`md-image-resizable`,o.dataset.testid=`image-resizable`,n!=null&&o.setAttribute(`data-width`,String(n)),r!=null&&o.setAttribute(`data-height`,String(r));let s=document.createElement(`img`);s.src=e,s.alt=t,s.draggable=!1,s.addEventListener(`load`,()=>{let{naturalWidth:e,naturalHeight:t}=s,i=e/t;if(!Number.isFinite(i)||i<=0||(o.setAttribute(`data-aspect-ratio`,String(i)),n!=null&&r!=null))return;let a=n==null?Math.min(t,500):n/i,c=n??a*i;o.setAttribute(`data-width`,String(Math.round(c))),o.setAttribute(`data-height`,String(Math.round(a)))}),o.appendChild(s);let c=document.createElement(`prosekit-resizable-handle`);return c.className=`md-image-resize-handle`,c.setAttribute(`position`,`bottom-right`),c.addEventListener(`click`,e=>e.stopPropagation()),o.appendChild(c),o.addEventListener(`resizeEnd`,e=>{let{width:t,height:n}=e.detail;Ia(i,a,t,n)}),o}function Ia(e,t,n,r){let i=e.posAtDOM(t,0),a=D(e.state,i,`mdImage`);if(!a)return;let o=e.state.doc.textBetween(a.from,a.to),s=Tn(o),c=a.from+s.length,l=o.slice(s.length),u=wn({...Sn(l)??{},width:Math.round(n),height:Math.round(r)});u!==l&&e.dispatch(e.state.tr.insertText(u,c,a.to))}function La(e){return(t,n)=>{let{src:r,alt:i,width:a,height:o}=t.attrs,s=document.createElement(`span`);s.className=`md-image-view md-atom-view`;let c=document.createElement(`span`);c.className=`md-image-view-content md-atom-view-content`;let l=Pa(r,i,a,o,e,n,c);return l&&(l.contentEditable=`false`,s.appendChild(l)),s.appendChild(c),{dom:s,contentDOM:c,ignoreMutation:e=>!c.contains(e.target)}}}function Ra(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const za=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function Ba(e,t,n,r=za,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 Va(e){return new b({key:new x(`image-input`),props:{handlePaste:(t,n)=>{let r=Ra(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Ba(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=Ra(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Ba(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Ha(e={}){return _(d({name:`mdImage`,constructor:La(e)}),v(m(Va(e)),t.high))}const Ua={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-Shift-h":`Highlight`,"Mod-k":`Link`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`,"Mod-.":`Fold or unfold a bullet`};function Wa(e){return m(new b({key:e.key,props:{handleClick:(t,n,r)=>{if(!r.target?.closest?.(e.selector))return!1;let i=e.findPayloadAt(t.state,n);return i==null?!1:(e.preventDefault&&r.preventDefault(),e.onClick(i,r),!0)}}}))}const Ga=new x(`meowdown-link-click`);function Ka(e){return Wa({key:Ga,selector:`.md-link`,preventDefault:!0,findPayloadAt:(e,t)=>K(e,t)?.href,onClick:(t,n)=>e({href:t,event:n})})}function qa(e){let t,n=(n,r)=>{let i=r.target;if(!i||!ue(i))return;let a=i.closest(e.selector);if(!a||a===t)return;let o=n.posAtDOM(a,0),s=e.findPayloadAt(n.state,o);s!=null&&(t=a,e.onHoverChange({payload:s,element:a}))},r=n=>{if(!t)return;let r=n.relatedTarget;r&&t.contains(r)||(t=void 0,e.onHoverChange(void 0))};return _(s(`mouseover`,(e,t)=>n(e,t)),s(`mouseout`,(e,t)=>r(t)))}function Ja(e){return qa({selector:`.md-link`,findPayloadAt:(e,t)=>K(e,t),onHoverChange:e})}const Ya=new x(`meowdown-markdown-copy`);function Xa(){return m(new b({key:Ya,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
+ `)}function ha(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(at(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(at(i))}function ga(){return m(new b({key:fa,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=ma(t,n);if(!i)return!1;let a=pa(i);return a?(ha(e,a),!0):!1}}}))}const _a=new x(`meowdown-exit-boundary`);function va(e,t){let{$anchor:n,$head:r}=e.selection,i=t>0?n.max(r):n.min(r),a=i.parent.inlineContent?i.depth?e.doc.resolve(t>0?i.after():i.before()):void 0:i;return!!(a&&ye.findFrom(a,t))}function ya(e,t){let{state:n}=e,{selection:r}=n;return g(r)&&!r.empty||ne(r)||r.$from.parent.inlineContent&&!e.endOfTextblock(t<0?`up`:`down`)?!0:va(n,t)}function ba(e){return new b({key:_a,props:{handleKeyDown:(t,n)=>{if(n.shiftKey||n.altKey||n.ctrlKey||n.metaKey)return!1;let r=n.key===`ArrowUp`?-1:n.key===`ArrowDown`?1:void 0;return!(!r||ya(t,r)||e({direction:r<0?`up`:`down`,event:n})===!1)}}})}function xa(e){return v(m(ba(e)),t.low)}const Sa=(e,t)=>{let n={type:`highlight`,children:e.all(t)};return e.patch(t,n),n},Ca=(e,t,n,r)=>{let i=e,a=n.createTracker(r),o=a.move(`==`);return o+=a.move(n.containerPhrasing(i,{...a.current(),before:o,after:`=`})),o+=a.move(`==`),o};function wa(){return ut().use(ot).use(st,{handlers:{mark:Sa}}).use(ct).use(lt,{bullet:`-`,emphasis:`*`,strong:`*`,fence:"`",fences:!0,rule:`-`,ruleRepetition:3,listItemIndent:`one`,handlers:{highlight:Ca}}).freeze()}const Ta=y(wa);function Ea(e){return String(Ta().processSync(e))}const Da=new x(`meowdown-html-paste`);function Oa(){return m(new b({key:Da,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=Ea(e);if(!r.trim())return e;let i=J(r,{nodes:pi(t.state.schema)}),a=Ne.fromSchema(t.state.schema),o=document.createElement(`div`);return o.append(a.serializeFragment(i.content)),o.innerHTML}}}))}const ka=new x(`meowdown-image-click`);function Aa(e,t){let n=D(e,t,`mdImage`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function ja(e){return m(new b({key:ka,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-view-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Aa(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}function Ma(e){return/^https?:\/\//i.test(e)?e:void 0}function Na(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`&&ia(t),t}function Pa(e,t,n,r,i,a,o){let s=da(e);if(s){let e=document.createElement(`span`);return e.className=`md-image-view-preview md-atom-view-preview`,e.appendChild(Na(s)),e}let c=(i.resolveImageUrl??Ma)(e);if(!c)return;let l=document.createElement(`span`);return l.className=`md-image-view-preview md-atom-view-preview`,l.dataset.testid=`image-preview`,l.appendChild(Fa(c,t,n,r,a,o)),l}function Fa(e,t,n,r,i,a){ft(),dt();let o=document.createElement(`prosekit-resizable-root`);o.className=`md-image-resizable`,o.dataset.testid=`image-resizable`,o.setAttribute(`data-loading`,``),n!=null&&o.setAttribute(`data-width`,String(n)),r!=null&&o.setAttribute(`data-height`,String(r));let s=document.createElement(`img`);s.src=e,s.alt=t,s.draggable=!1,s.addEventListener(`load`,()=>{o.removeAttribute(`data-loading`);let{naturalWidth:e,naturalHeight:t}=s,i=e/t;if(!Number.isFinite(i)||i<=0||(o.setAttribute(`data-aspect-ratio`,String(i)),n!=null&&r!=null))return;let a=n==null?Math.min(t,500):n/i,c=n??a*i;o.setAttribute(`data-width`,String(Math.round(c))),o.setAttribute(`data-height`,String(Math.round(a)))}),s.addEventListener(`error`,()=>{o.removeAttribute(`data-loading`)}),o.appendChild(s);let c=document.createElement(`prosekit-resizable-handle`);return c.className=`md-image-resize-handle`,c.setAttribute(`position`,`bottom-right`),c.addEventListener(`click`,e=>e.stopPropagation()),o.appendChild(c),o.addEventListener(`resizeEnd`,e=>{let{width:t,height:n}=e.detail;Ia(i,a,t,n)}),o}function Ia(e,t,n,r){let i=e.posAtDOM(t,0),a=D(e.state,i,`mdImage`);if(!a)return;let o=e.state.doc.textBetween(a.from,a.to),s=Tn(o),c=a.from+s.length,l=o.slice(s.length),u=wn({...Sn(l)??{},width:Math.round(n),height:Math.round(r)});u!==l&&e.dispatch(e.state.tr.insertText(u,c,a.to))}function La(e){return(t,n)=>{let{src:r,alt:i,width:a,height:o}=t.attrs,s=document.createElement(`span`);s.className=`md-image-view md-atom-view`;let c=document.createElement(`span`);c.className=`md-image-view-content md-atom-view-content`;let l=Pa(r,i,a,o,e,n,c);return l&&(l.contentEditable=`false`,s.appendChild(l)),s.appendChild(c),{dom:s,contentDOM:c,ignoreMutation:e=>!c.contains(e.target)}}}function Ra(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const za=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function Ba(e,t,n,r=za,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 Va(e){return new b({key:new x(`image-input`),props:{handlePaste:(t,n)=>{let r=Ra(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Ba(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=Ra(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Ba(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Ha(e={}){return _(d({name:`mdImage`,constructor:La(e)}),v(m(Va(e)),t.high))}const Ua={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-Shift-h":`Highlight`,"Mod-k":`Link`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`,"Mod-.":`Fold or unfold a bullet`};function Wa(e){return m(new b({key:e.key,props:{handleClick:(t,n,r)=>{if(!r.target?.closest?.(e.selector))return!1;let i=e.findPayloadAt(t.state,n);return i==null?!1:(e.preventDefault&&r.preventDefault(),e.onClick(i,r),!0)}}}))}const Ga=new x(`meowdown-link-click`);function Ka(e){return Wa({key:Ga,selector:`.md-link`,preventDefault:!0,findPayloadAt:(e,t)=>K(e,t)?.href,onClick:(t,n)=>e({href:t,event:n})})}function qa(e){let t,n=(n,r)=>{let i=r.target;if(!i||!ue(i))return;let a=i.closest(e.selector);if(!a||a===t)return;let o=n.posAtDOM(a,0),s=e.findPayloadAt(n.state,o);s!=null&&(t=a,e.onHoverChange({payload:s,element:a}))},r=n=>{if(!t)return;let r=n.relatedTarget;r&&t.contains(r)||(t=void 0,e.onHoverChange(void 0))};return _(s(`mouseover`,(e,t)=>n(e,t)),s(`mouseout`,(e,t)=>r(t)))}function Ja(e){return qa({selector:`.md-link`,findPayloadAt:(e,t)=>K(e,t),onHoverChange:e})}const Ya=new x(`meowdown-markdown-copy`);function Xa(){return m(new b({key:Ya,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,`
24
24
  `,`
25
25
  `)}}}))}const Za=new x(`meowdown-tag-click`);function Qa(e,t){let n=D(e,t,`mdTag`);if(!n)return;let r=e.doc.textBetween(n.from,n.to),i=r.startsWith(`#`)?r.slice(1):r;return{from:n.from,to:n.to,tag:i}}function $a(e){return Wa({key:Za,selector:`.md-tag`,preventDefault:!1,findPayloadAt:(e,t)=>Qa(e,t)?.tag,onClick:(t,n)=>e({tag:t,event:n})})}const eo=new x(`meowdown-wikilink-click`);function to(e,t){let n=D(e,t,`mdWikilink`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function no(e){return Wa({key:eo,selector:`.md-wikilink-view-preview`,preventDefault:!1,findPayloadAt:(e,t)=>to(e,t)?.target,onClick:(t,n)=>e({target:t,event:n})})}const ro=(e,t)=>{let{selection:n}=e;if(!n.empty&&!n.$head.sameParent(n.$anchor))return!1;let r=e.doc.textBetween(n.from,n.to);if(r.startsWith(`[[`))return!1;r.startsWith(`[`)&&(r=r.slice(1));let i=`[[`+r;if(t){let r=e.tr.insertText(i,n.from,n.to);r.setSelection(S.create(r.doc,n.from+i.length)),pt(r),t(r.scrollIntoView())}return!0};function io(){return l({"Mod-Shift-k":ro})}function ao(e,t){let n=()=>{let n=e.coordsAtPos(t.from),r=e.coordsAtPos(t.to),i=Math.min(n.left,r.left),a=Math.max(n.right,r.right),o=Math.min(n.top,r.top),s=Math.max(n.bottom,r.bottom);return new DOMRect(i,o,a-i,s-o)};return{getBoundingClientRect:n,getClientRects:()=>[n()]}}export{Ua as EDITOR_KEY_BINDINGS,e as Priority,Ji as checkRoundTrip,Qi as codeBlockLanguages,Ma as defaultResolveImageUrl,Xi as defineBulletAfterHeading,Pt as defineCodeBlockSyntaxHighlight,oi as defineEditorExtension,ga as defineEmbedPaste,xa as defineExitBoundaryHandler,Yt as defineHTMLComment,Oa as defineHTMLPaste,Ha as defineImage,ja as defineImageClickHandler,Ka as defineLinkClickHandler,jr as defineLinkCommands,Nr as defineLinkEditKeymap,Ja as defineLinkHoverHandler,_t as defineMarkMode,Xa as defineMarkdownCopy,ce as definePlaceholder,le as defineReadonly,$a as defineTagClickHandler,no as defineWikilinkClickHandler,io as defineWikilinkTrigger,ki as docToMarkdown,It as getCodeTokens,K as getLinkUnitAt,li as getMarkBuilders,ao as getVirtualElementFromRange,jn as inlineTextToMarkChunks,Or as insertLink,$r as isSelectionInTableCell,ia as listenForTweetHeight,J as markdownToDoc,da as matchEmbed,Ar as removeLink,kr as updateLink,oe as withPriority};
package/dist/style.css CHANGED
@@ -156,6 +156,7 @@ img.ProseMirror-separator {
156
156
  --meowdown-highlight: light-dark(#fef08a, #854d0e);
157
157
  --meowdown-border: light-dark(#e4e4e7, #3f3f46);
158
158
  --meowdown-code-bg: light-dark(#f4f4f5, #18181b);
159
+ --meowdown-image-loading-bg: light-dark(#f4f4f5, #27272a);
159
160
  --meowdown-table-header-bg: light-dark(#fafafa, #27272a);
160
161
  --meowdown-autocomplete-bg: light-dark(#fff, #18181b);
161
162
  --meowdown-autocomplete-highlight-bg: light-dark(#f4f4f5, #27272a);
@@ -594,10 +595,11 @@ img.ProseMirror-separator {
594
595
  outline-offset: 2px;
595
596
  border-radius: 6px;
596
597
  max-width: 100%;
597
- display: inline-flex;
598
+ display: inline-block;
598
599
  }
599
600
 
600
601
  & .md-image-resizable {
602
+ vertical-align: bottom;
601
603
  isolation: isolate;
602
604
  min-width: 2.5rem;
603
605
  max-width: 100%;
@@ -606,6 +608,11 @@ img.ProseMirror-separator {
606
608
  position: relative;
607
609
  }
608
610
 
611
+ & .md-image-resizable[data-loading] {
612
+ background: var(--meowdown-image-loading-bg);
613
+ border-radius: var(--meowdown-image-radius, .5rem);
614
+ }
615
+
609
616
  & .md-image-resizable img {
610
617
  object-fit: contain;
611
618
  border-radius: var(--meowdown-image-radius, .5rem);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/core",
3
3
  "type": "module",
4
- "version": "0.29.1",
4
+ "version": "0.29.2",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -25,10 +25,10 @@
25
25
  "@lezer/highlight": "^1.2.3",
26
26
  "@lezer/markdown": "^1.6.4",
27
27
  "@ocavue/utils": "^1.7.0",
28
- "@prosekit/core": "^0.13.0-beta.3",
29
- "@prosekit/extensions": "^0.18.0-beta.10",
30
- "@prosekit/pm": "^0.1.19-beta.0",
31
- "@prosekit/web": "^0.9.0-beta.12",
28
+ "@prosekit/core": "^0.13.0-beta.4",
29
+ "@prosekit/extensions": "^0.18.0-beta.11",
30
+ "@prosekit/pm": "^0.1.19-beta.1",
31
+ "@prosekit/web": "^0.9.0-beta.14",
32
32
  "prosemirror-flat-list": "^0.6.0",
33
33
  "prosemirror-highlight": "^0.15.2",
34
34
  "rehype-parse": "^9.0.1",