rme 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +2 -2
  2. package/package.json +7 -7
package/dist/index.mjs CHANGED
@@ -1703,7 +1703,7 @@ ${n}`);return gu(i,o)}function yu(e,t){if(t.length===0||e.length===0)return;let
1703
1703
  `)||o.text(`
1704
1704
  `),o.write("$$"),o.closeBlock(r),o.ensureNewLine()}};je=v([hf({defaultOptions:{}})],je);import{convertCommand as Ef,extension as Sf,isElementDomNode as Tf,NodeExtension as vf,nodeInputRule as Mf}from"@rme-sdk/core";import{setBlockType as Pf}from"@rme-sdk/pm/commands";import{TextSelection as Nf}from"@rme-sdk/pm/state";import{Compartment as Cf}from"@codemirror/state";import wf from"mermaid";import kf from"js-event-bus";var kt=new kf;var Ns={count:0},ho=class{constructor(t,o,r,n){this._htmlSrcElt=null;this.destroying=!1;this.renderViewId=null;this.ignoreMutation=()=>!0;this.changeTheme=()=>{this.renderHtml()};this._node=t,this._outerView=o,this._getPos=r,this.schema=t.type.schema,this.options=n,this.dom=document.createElement("div"),this.dom.classList.add("mermaid-node"),this._htmlRenderElt=document.createElement("p"),this._htmlRenderElt.textContent="",this._htmlRenderElt.classList.add("html-node-render"),Le(this.dom,{labelName:"Mermaid"}).addEventListener("click",()=>this.ensureFocus()),this.dom.appendChild(this._htmlRenderElt),this.dom.appendChild(this._htmlRenderElt),this._htmlSrcElt=document.createElement("span"),this._htmlSrcElt.classList.add("mermaid-src","node-hide"),this.languageConf=new Cf,this.dom.appendChild(this._htmlSrcElt),this.renderHtml(),kt.on("change-theme",this.changeTheme)}ensureFocus(){this._outerView.hasFocus()&&(this._innerView?this._innerView.focus():this.openEditor())}update(t){return this._node=t,!!this.mfCodemirrorView?.update(t)}stopEvent(){return!0}renderHtml(){if(!this._htmlRenderElt)return;let t=this.mfCodemirrorView?.content||this._node.textContent;try{this._htmlRenderElt.innerHTML="",this._htmlRenderElt.classList.remove("node-hide"),this._htmlRenderElt.classList.add("node-show"),Ns.count++;let o=`mermaid-${Ns.count}`;wf.render(o,t).then(({svg:r,bindFunctions:n})=>{this._htmlRenderElt&&(this._htmlRenderElt.innerHTML=r,n?.(this._htmlRenderElt))}).catch(r=>{document.getElementById("d"+o)?.remove(),console.error("\u6E32\u67D3\u5931\u8D25:",o,r)})}catch{}}setSelection(t,o){this._innerView?this.mfCodemirrorView?.setSelection(t,o):(this.openEditor(),this.mfCodemirrorView.setSelection(t,o))}openEditor(){if(this._innerView)throw Error("inner view should not exist!");this.mfCodemirrorView=new W({view:this._outerView,node:this._node,getPos:this._getPos,languageName:"mermaid",extensions:this.options?.codemirrorExtensions||[lr],options:{useProsemirrorHistoryKey:!0,codemirrorEditorViewConfig:{parent:this._htmlSrcElt},copyButton:{enabled:!0,customCopyFunction:this.options?.customCopyFunction}}}),this._htmlSrcElt.classList.remove("node-hide"),this._innerView=this.mfCodemirrorView.cm,this._htmlRenderElt?.classList.add("node-hide");let t=this._node.textContent.length||0;this.setSelection(t,t),this._innerView.focus(),this._innerView.contentDOM.addEventListener("blur",()=>{this.destroying||this.closeEditor(!0)}),this.mfCodemirrorView.forwardSelection()}destroy(){this.destroying=!0,this.closeEditor(!1),this._htmlRenderElt&&(this._htmlRenderElt.remove(),delete this._htmlRenderElt),this._htmlSrcElt&&(this._htmlSrcElt.remove(),this._htmlSrcElt=null),this.dom.remove(),kt.detach("change-theme",this.changeTheme)}closeEditor(t=!0){this._innerView&&(this._innerView.destroy(),this._innerView=void 0),this.mfCodemirrorView&&(this.mfCodemirrorView.destroy(),this.mfCodemirrorView=void 0),t&&this.renderHtml()}};var Qe=class extends vf{constructor(){super(...arguments);this.createMermaidBlock=()=>Ef(Pf(this.type))}get name(){return"mermaid_node"}createNodeSpec(o,r){return{group:"block",content:"text*",defining:!0,...r,code:!0,marks:"",attrs:{...o.defaults()},parseDOM:[{tag:"pre",getAttrs:n=>Tf(n)?o.parse(n):!1},...r.parseDOM??[]],toDOM(){return["pre",{"data-type":"mermaid"},0]},isolating:!0}}createNodeViews(){return(o,r,n)=>new ho(o,r,n,this.options)}createInputRules(){return[Mf({regexp:/^```mermaid$/,type:this.type,beforeDispatch:({tr:r,start:n,match:i})=>{let s=r.doc.resolve(n);r.setSelection(Nf.near(s))}})]}createCommands(){return{createMermaidBlock:this.createMermaidBlock}}fromMarkdown(){return[{type:2,token:"mermaid_node",node:this.name,hasOpenClose:!1}]}toMarkdown({state:o,node:r}){o.write("```mermaid\n"),o.text(r.textContent,!1),o.text(`
1705
1705
  `),o.write("```"),o.closeBlock(r),o.ensureNewLine()}};Qe=v([Sf({defaultOptions:{customCopyFunction:void 0},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],Qe);import{isHTMLElement as _s}from"@ocavue/utils";import{PlainExtension as $f}from"@rme-sdk/core";import{NodeSelection as Bs,TextSelection as zf}from"@rme-sdk/pm/state";import{isHTMLElement as Rf}from"@ocavue/utils";import{NodeSelection as If}from"@rme-sdk/pm/state";function Af(e){let t=[[-1,e.state.doc]],o=[];for(;t.length>0;){let[r,n]=t.pop();if(r>=0){let i=e.nodeDOM(r);if(i&&Rf(i)){let s=i.getBoundingClientRect(),{top:a,bottom:l,left:c,right:d}=s;o.push([r,[c,a,d,a]],[r+n.nodeSize,[c,l,d,l]])}}if(n.isBlock&&!n.isTextblock){let i=r+1;for(let s of n.children)t.push([i,s]),i+=s.nodeSize}}return o}function As(e,t){let o=[],r,n,i=()=>{let d=e.dom.getBoundingClientRect(),m=e.state.doc;return o&&r&&n&&d.width===n.width&&d.height===n.height&&d.x===n.x&&d.y===n.y&&r.eq(m)||(n=d,r=m,o=Af(e)),o},s=(d,m)=>{if(!e.editable||e.isDestroyed)return;let p=(y,b)=>{let[x,E]=y,[k,h]=b,g=Is(d,E),S=Is(d,h);return g-S||x-k},f=i();f.sort(p),f=f.slice(0,8);let u=f.find(y=>t?.({view:e,pos:y[0],event:m})!==!1);if(!(u&&_f(e,u[0])))return u},a,l;return(d,m)=>(a&&Lf(a,d)||(a=d,l=s(d,m)),l)}function Lf(e,t){return e[0]===t[0]&&e[1]===t[1]}function Rs(e,t){return Math.abs(e[0]-t[0])+Math.abs(e[1]-t[1])}function Is(e,t){return Math.min(Rs(e,[t[0],t[1]]),Rs(e,[t[2],t[3]]))}function _f(e,t){let o=e.dragging;if(!o)return;let{move:r}=o;if(!r)return;let n=e.state.selection;if(!(n instanceof If))return;let{from:i,to:s}=n;return i<=t&&t<=s}import{isElement as Hr,isTextNode as Bf}from"@ocavue/utils";function se(e){let t=e.getBoundingClientRect();if(t.width===0&&t.height===0&&t.x===0&&t.y===0&&e.getClientRects().length===0){let r=Array.from(e.children).map(l=>se(l));if(r.length===0)return t;if(r.length===1)return r[0];let{top:n,bottom:i,left:s,right:a}=r[0];for(let l=1;l<r.length;l++){let c=r[l];c.top<n&&(n=c.top),c.bottom>i&&(i=c.bottom),c.left<s&&(s=c.left),c.right>a&&(a=c.right)}return{top:n,bottom:i,left:s,right:a}}return t}function Ls(e,t,o){let r=se(e.dom);if(!Hf(r,t,o))return;let n=e.state.doc,i=-1;for(;n;){if(n.isBlock&&(n.isTextblock||n.isAtom||n.type.spec.isolating))return{node:n,pos:i};let s=[],a=[];n.forEach((d,m)=>{s.push(d),a.push(m+i+1)});let l=0,c=s.length-1;for(;l<=c;){let d=c-(c-l>>1),m=e.nodeDOM(a[d]),p=Of(m);if(!p){console.warn(`[rme] Unable to get rect at position: ${a[d]}`);return}if(p.top>o)c=d-1;else if(p.bottom<o)l=d+1;else{l=d;break}}if(l>c)return;n=s[l],i=a[l]}}function Of(e){if(e&&Hr(e)&&e.isConnected)return se(e)}function Hf(e,t,o){return t>=e.left&&t<=e.right&&o>=e.top&&o<=e.bottom}function Dr(e,t){if(!(e&&!e.isConnected)&&!(t&&!t.isConnected))if(e&&t){let o=Df(e),r=Or(t);if(o&&r){let{top:n,bottom:i}=r,{left:s,right:a}=o;return{top:n,bottom:i,left:s,right:a}}else return o||r}else{if(e)return Or(e);if(t)return Or(t)}}function Df(e){if(!Hr(e))return;let t=se(e),o=e.ownerDocument.defaultView?.getComputedStyle(e),r=o&&Number.parseInt(o.marginLeft,10)||0,n=o&&Number.parseInt(o.marginRight,10)||0,i=t.left-r,s=t.right+n;return{top:t.top,bottom:t.bottom,left:i,right:s}}function Or(e){if(Hr(e))return Ff(e);if(Bf(e))return Vf(e)}function Vf(e){let t=e.ownerDocument;if(!t)return;let o=t.createRange();return o.setStart(e,0),o.setEnd(e,0),o.getClientRects()[0]}function Ff(e){if(e.nodeName==="BR")return e.getBoundingClientRect();let t=se(e),o=e.ownerDocument.defaultView?.getComputedStyle(e),r=o&&Number.parseInt(o.marginLeft,10)||0,n=o&&Number.parseInt(o.marginRight,10)||0,i=t.left-r,s=t.right+n,a=o&&Number.parseInt(o.lineHeight,10)||24,l=o&&Number.parseInt(o.paddingTop,10)||0,c=o&&Number.parseInt(o.borderTopWidth,10)||0,d=t.top+l+c,m=d+a;return{top:d,bottom:m,left:i,right:s}}var Ee=class extends $f{get name(){return"nodeIndicator"}createPlugin(){let t,o={node:null,pos:null,rect:null};return{initialState:o,state:{init:()=>o,apply:(r,n)=>{let i=r.getMeta(this.pluginKey);return i?{...n,...i}:r.docChanged?{...n}:n}},view:r=>(t=As(r),{}),props:{handleDrop:(r,n,i,s)=>{if(!t)return!1;let a=t([n.clientX,n.clientY],n);if(!a)return!1;n.preventDefault();let l=a[0],c=r.state.tr;if(s){let{node:u}=r.dragging||{};u?u.replace(c):c.deleteSelection()}let d=c.mapping.map(l),m=i.openStart==0&&i.openEnd==0&&i.content.childCount==1,p=c.doc;if(m?c.replaceRangeWith(d,d,i.content.firstChild):c.replaceRange(d,d,i),c.doc.eq(p))return!1;let f=c.doc.resolve(d);if(m&&Bs.isSelectable(i.content.firstChild)&&f.nodeAfter&&f.nodeAfter.sameMarkup(i.content.firstChild))c.setSelection(new Bs(f));else{let u=c.mapping.map(l);c.mapping.maps[c.mapping.maps.length-1].forEach((y,b,x,E)=>u=E),c.setSelection(Kf(r,f,c.doc.resolve(u)))}return r.focus(),r.dispatch(c.setMeta("uiEvent","drop")),!0},handleDOMEvents:{pointerout:(r,n)=>{let i=n.relatedTarget;return i&&r.dom.contains(i)||i&&i instanceof HTMLElement&&i.closest(".rme-block-handler")||this.pluginKey.getState(r.state)?.node!==null&&r.dispatch(r.state.tr.setMeta(this.pluginKey,{node:null,pos:null,rect:null})),!1},pointermove:(r,n)=>{r.__nodeIndicatorThrottled||(r.__nodeIndicatorThrottled=!0,requestAnimationFrame(()=>{r.__nodeIndicatorThrottled=!1,Wf(r,n,this.pluginKey)}))}}}}}};function Kf(e,t,o,r){return e.someProp("createSelectionBetween",n=>n(e,t,o))||zf.between(t,o,r)}function Wf(e,t,o){let r=o.getState(e.state),{x:n,y:i}=t,s=Ls(e,n,i);if(!s){r?.node!==null&&e.dispatch(e.state.tr.setMeta(o,{node:null,pos:null,rect:null}));return}let{node:a,pos:l}=s,c=e.nodeDOM(l);if(!c||!_s(c)){r?.node!==null&&e.dispatch(e.state.tr.setMeta(o,{node:null,pos:null,rect:null}));return}let d=a,m=l,p=e.state.doc.resolve(l);if(p.depth>0&&p.index(p.depth)===0){let y=p.before(p.depth);d=p.parent,m=y}if(r?.pos===m&&r?.node&&d.type===r?.node.type)return;let f=e.nodeDOM(m);if(!f||!_s(f))return;let u;if(p.depth>0&&p.index(p.depth)===0){let y=e.nodeDOM(p.before(p.depth));u=Dr(y,f)}else u=Dr(void 0,f);e.dispatch(e.state.tr.setMeta(o,{node:d,pos:m,rect:u||{}}))}import{ParagraphExtension as Uf}from"@rme-sdk/main/extensions";var go=class extends Uf{createNodeSpec(t,o){return{...super.createNodeSpec(t,o),whitespace:"pre"}}fromMarkdown(){return[{type:2,token:"paragraph",node:this.name,hasOpenClose:!0}]}toMarkdown({state:t,node:o}){t.renderInline(o),t.closeBlock(o)}};import{extension as qf,ManagerPhase as Gf,PlainExtension as jf}from"@rme-sdk/core";import{Decoration as Qf,DecorationSet as Xf}from"@rme-sdk/pm/view";var Xe=class extends jf{get name(){return"placeholder"}createAttributes(){return{"aria-placeholder":this.options.placeholder}}createPlugin(){return{props:{decorations:t=>Yf({state:t,extension:this})}}}onSetOptions(t){let{changes:o}=t;o.placeholder.changed&&this.store.phase>=Gf.EditorView&&this.store.updateAttributes()}};Xe=v([qf({defaultOptions:{placeholder:""},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],Xe);function Yf(e){let{extension:t,state:o}=e,{emptyNodeClass:r,placeholder:n}=t.options,i=[];return o.doc.descendants((s,a,l)=>{if(s.type.name==="paragraph"&&s.content.size===0&&n&&o.selection.from-1===a&&l?.type.name==="doc"){let c=Qf.node(a,a+s.nodeSize,{class:r,"data-placeholder":n});i.push(c)}}),Xf.create(o.doc,i)}import{extension as Jf,ExtensionTag as bo,findParentNodeOfType as Zf,isElementDomNode as eh,NodeExtension as th,nodeInputRule as oh}from"@rme-sdk/core";import{Decoration as rh,DecorationSet as Os}from"@rme-sdk/pm/view";var Ye=class extends th{get name(){return"reference_def"}createTags(){return[bo.LastNodeCompatible,bo.TextBlock,bo.Block,bo.FormattingNode]}createNodeSpec(t,o){return{group:"reference",content:"reference_label reference_href reference_title*",...o,attrs:{...t.defaults(),label:{default:""},href:{default:""},title:{default:""}},parseDOM:[{tag:"div[data-reference-definition]",getAttrs:r=>{if(!eh(r))return!1;let n=r.getAttribute("data-reference-label")||"",i=r.getAttribute("data-reference-href")||"",s=r.getAttribute("data-reference-title")||"";return{...t.parse(r),label:n,href:i,title:s}}},...o.parseDOM??[]],toDOM:r=>["div",{...t.dom(r),class:"reference-def"},0]}}createDecorations(t){let o=Zf({types:this.type,selection:t.selection});return o?Os.create(t.doc,[rh.node(o.pos,o.pos+o.node.nodeSize,{class:"rme-block-focus"})]):Os.empty}createInputRules(){return[oh({regexp:/^\[([^\]]*)\]:\s*([^\s"]+(:\s+[^\s"]+)*)?(?:\s+"(.*?)")?/,type:this.type,getAttributes:t=>{let[,o,r,n]=t;return console.log("matchmatch",t),{label:o,ref:r,title:n}}})]}fromMarkdown(){return[{type:2,node:this.name,token:"reference_def",hasOpenClose:!0,getAttrs:t=>({label:t.attrs?.[0]?.[1]||"",href:t.attrs?.[1]?.[1]||"",title:t.attrs?.[2]?.[1]||""})}]}toMarkdown({state:t,node:o}){t.renderInline(o),t.closeBlock(o)}};Ye=v([Jf({defaultOptions:{},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],Ye);import{extension as Vr,ExtensionTag as Fr,NodeExtension as $r}from"@rme-sdk/core";var Je=class extends $r{get name(){return"reference_label"}createTags(){return[Fr.InlineNode]}createNodeSpec(t,o){return{inline:!0,group:"reference_inline",content:"text*",...o,attrs:{...t.defaults()},toDOM:r=>["span",{...t.dom(r),class:"reference-definition-node__label"},["span",{contenteditable:"false",disabled:"true"},"\u200B"],["span",{},0],["span",{contenteditable:"false",disabled:"true"},"\u200B"]]}}fromMarkdown(){return[{type:6,token:"reference_label",getText:t=>t.content}]}toMarkdown({state:t,node:o}){t.write("["),t.text(o.textContent||""),t.write("]: ")}createKeymap(){return{Backspace:({state:t,dispatch:o})=>{let{selection:r}=t,{$from:n}=r;if(n.parent.type.name!==this.name)return!1;if(n.parent.textContent.length===0){let i=null,s=-1;for(let a=n.depth-1;a>=0;a--){let l=n.node(a);if(l.type.name==="reference_def"){i=l,s=n.start(a);break}}if(i&&s!==-1&&o)return o(t.tr.delete(s,s+i.nodeSize)),!0}return!1}}}};Je=v([Vr({defaultOptions:{},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],Je);var Ze=class extends $r{get name(){return"reference_href"}createTags(){return[Fr.InlineNode]}createNodeSpec(t,o){return{inline:!0,group:"reference_inline",content:"text*",...o,attrs:{...t.defaults()},toDOM:r=>["span",{...t.dom(r),class:"reference-definition-node__href"},0]}}fromMarkdown(){return[{type:6,token:"reference_href",getText:t=>t.content}]}toMarkdown({state:t,node:o}){t.text(`${o.textContent||""} `)}};Ze=v([Vr({defaultOptions:{},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],Ze);var et=class extends $r{get name(){return"reference_title"}createTags(){return[Fr.InlineNode]}createNodeSpec(t,o){return{inline:!0,group:"reference_inline",content:"text*",...o,attrs:{...t.defaults()},toDOM:r=>["span",{...t.dom(r),class:"reference-definition-node__title"},0]}}fromMarkdown(){return[{type:6,token:"reference_title",getText:t=>t.content}]}toMarkdown({state:t,node:o}){o.textContent&&(t.write('"'),t.text(o.textContent||""),t.write('"'))}};et=v([Vr({defaultOptions:{},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],et);import{TextSelection as oP}from"@rme-sdk/pm/state";import{extension as sh,PlainExtension as ah}from"@rme-sdk/main";var nh=(e=!1)=>({shouldOpen:(t,o,r)=>{if(o.isComposing)return!1;let n=r.state,s=(n.selection.from<0||n.selection.from>n.doc.content.size?null:n.doc.resolve(n.selection.from))?.parent,a=s?.type.name==="paragraph",l=n.selection.$head.parentOffset,c=n.selection.$head.parent.textContent.slice(l-1,l),d=a&&s?.textContent===c,m=c==="\u200A"||c===""||c===" ";return!t.open&&ye(o)&&a&&(d||m||n.selection.from!==n.selection.to&&e)},shouldClose:(t,o)=>t.open&&(ye(o)||o.key==="Escape"||o.key==="Backspace")&&t.filter.length===0}),Hs=(e,t,o,r,n,i)=>{if(t.isComposing)return t.key==="Escape"||t.key==="Backspace"&&e.filter.length===0?"closeMenu":"Ignore";let s=n||nh(i);if(s.shouldOpen(e,t,o))return"openMenu";if(s.shouldClose(e,t,o))return"closeMenu";if(e.open){if(t.key==="ArrowDown")return"NextItem";if(t.key==="ArrowUp")return"PrevItem";if(t.key==="Enter"||t.key==="Tab")return"Execute";if(t.key==="Escape"||t.key==="Backspace"&&e.filter.length===0)return"closeMenu";if(e.filter.length>0&&t.key==="Backspace")return"removeChar";if(!r.includes(t.key))return"addChar";if(t.key==="ArrowLeft"||t.key==="ArrowRight")return"Catch"}return"Ignore"};var ae=class extends ah{get name(){return"slash-menu"}createPlugin(){let t={open:!1,filter:"",ignoredKeys:zi};return{props:{handleKeyDown(o,r){let n=o.state;if(!n)return!1;let i=this.getState(n);if(!i)return!1;switch(Hs(i,r,o,t.ignoredKeys)){case"openMenu":let a=n.selection.from<0||n.selection.from>n.doc.content.size?null:n.doc.resolve(n.selection.from),l=a?.parent,c=l?.type.name==="paragraph";return a?.depth===1?(c&&l.textContent==="/"&&a&&o.dispatch(n.tr.delete(a.start(),a.end()).setMeta(this.spec.key,{type:"open"})),be(o,this.spec.key,{type:"open"}),!0):!1;case"closeMenu":return r.isComposing?be(o,this.spec.key,{type:"close"}):ye(r)?o.dispatch(n.tr.insertText("/").setMeta(this.spec.key,{type:"close"})):be(o,this.spec.key,{type:"close"}),!0;case"Execute":case"NextItem":case"PrevItem":case"addChar":case"removeChar":case"Catch":return!0;default:return!1}}},state:{init(){return t},apply(o,r){switch(o.getMeta(this.spec.key)?.type){case"open":return{...t,open:!0};case"close":return t;case"execute":return{...t,open:!0};default:return r}}},initialState:t}}};ae=v([sh({defaultOptions:{}})],ae);import{TextExtension as lh}from"@rme-sdk/main/extensions";var yo=class extends lh{fromMarkdown(){return[{type:1,token:"text",getText:t=>t.content},{type:1,token:"inline",getText:t=>t.content},{type:1,token:"softbreak",getText:t=>`
1706
- `}]}toMarkdown({state:t,node:o}){t.text(o.text||"")}};import{PlainExtension as ch,extension as dh}from"@rme-sdk/core";var le=class extends ch{get name(){return"transformer"}createPlugin(){let t={isTransformerFlag:!0,stringToDoc:null,docToString:null};return{state:{init(){return t},apply:(o,r)=>{let n=o.getMeta(this.pluginKey);return n?{...r,stringToDoc:n.stringToDoc,docToString:n.docToString}:r}},initialState:t}}};le=v([dh({defaultOptions:{}})],le);import{extension as mh,isTextSelection as ph,PlainExtension as uh}from"@rme-sdk/core";import{ViewPlugin as fh}from"@codemirror/view";var Ds=32;function hh(e){let o=window.getComputedStyle(e).overflowY;return o!=="visible"&&o!=="clip"&&e.scrollHeight>e.clientHeight}function gh(e){let t=e.dom.parentElement;for(;t;){if(hh(t))return t;t=t.parentElement}return document}function Ct(e){return e===document?window.scrollY:e.scrollTop}function bh(e){return e===document?window.innerHeight:e.clientHeight}function yh(e){if(e===document){let t=document.scrollingElement;return t?t.scrollHeight-window.innerHeight:0}return e.scrollHeight-e.clientHeight}function xh(e,t){if(e===document){window.scrollTo({top:t,behavior:"smooth"});return}e.scrollTo({top:t,behavior:"smooth"})}function Vs(e){return e===document?0:e.getBoundingClientRect().top}var J=class extends uh{get name(){return"typewriterScroll"}createCodeMirrorExtension(){let t=this;return fh.fromClass(class{constructor(){this.rafId=null}update(o){t.options.enabled&&(!o.docChanged&&!o.selectionSet||this.scheduleCenter(o))}scheduleCenter(o){this.rafId!==null&&cancelAnimationFrame(this.rafId),this.rafId=requestAnimationFrame(()=>{this.rafId=null,this.centerCaretLine(o)})}centerCaretLine(o){let{view:r}=o,i=r.state.selection.main.head,a=r.state.doc.lineAt(i).from,l=r.coordsAtPos(a);if(!l)return;let c=l.top,d=l.bottom,m=(c+d)/2,p=window.innerHeight/2,f=m-p;if(Math.abs(f)<=Ds)return;let u=window.scrollY,y=Math.max(0,Math.min(document.documentElement.scrollHeight-window.innerHeight,u+f));y!==u&&window.scrollTo({top:y,behavior:"smooth"})}destroy(){this.rafId!==null&&cancelAnimationFrame(this.rafId)}})}createPlugin(){let t=null,o=!1,r=()=>{t!==null&&(cancelAnimationFrame(t),t=null)},n=c=>{let d=document.activeElement;return!d||d===c.dom||!c.dom.contains(d)?!1:!!d.closest(".cm-editor")},i=c=>{if(!this.options.enabled||o||!c.hasFocus())return;let d=gh(c),m=yh(d);if(!(m<=0))try{let p,f;if(n(c)){let k=document.activeElement?.closest(".cm-editor");if(!k||!k.querySelector(".cm-content"))return;let g=window.getSelection();if(!g||g.rangeCount===0)return;let C=g.getRangeAt(0).getClientRects();if(C.length===0)return;let w=C[0],T=Ct(d),I=Vs(d);p=T+w.top-I,f=T+w.bottom-I}else{let{selection:E}=c.state;if(!ph(E)||!E.empty)return;let k=c.coordsAtPos(E.head);if(!k)return;let h=Ct(d),g=Vs(d);p=h+k.top-g,f=h+k.bottom-g}let u=(p+f)/2,y=Ct(d)+bh(d)/2,b=u-y;if(Math.abs(b)<=Ds)return;let x=Math.max(0,Math.min(m,Ct(d)+b));x!==Ct(d)&&xh(d,x)}catch{return}},s=c=>{r(),t=requestAnimationFrame(()=>{t=null,i(c)})},a=()=>{l&&n(l)&&s(l)},l=null;return{view:c=>{l=c;let d=()=>{l&&n(l)&&s(l)};return document.addEventListener("selectionchange",d),{update:(m,p)=>{if(m!==c)return;let f=!m.state.doc.eq(p.doc),u=!m.state.selection.eq(p.selection);!f&&!u||s(m)},destroy:()=>{r(),document.removeEventListener("selectionchange",d),l=null}}},props:{handleDOMEvents:{compositionstart:()=>(o=!0,!1),compositionend:c=>(o=!1,s(c),!1),focus:c=>(s(c),!1),blur:()=>(r(),o=!1,!1)}}}}};J=v([mh({defaultOptions:{enabled:!0},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],J);function Sh(e){let t=f=>(navigator.clipboard.writeText(f),!0),{handleViewImgSrcUrl:o,imageHostingHandler:r,imagePasteHandler:n,customCopyFunction:i=t,clipboardReadFunction:s=St,codemirrorOptions:a={},typewriterScroll:l={}}=e,c=new J(l),d=l.enabled!==!1?[c.createCodeMirrorExtension()]:[],m={customCopyFunction:i,codemirrorExtensions:[...cr({...a,lineNumbers:!0}),...d]},p=[...wh({excludeExtensions:["paragraph","text"]}),...gs({handleViewImgSrcUrl:o}),new De,new Ch({}),new Ke({handleViewImgSrcUrl:o,imageHostingHandler:r,imagePasteHandler:n}),new We({handleViewImgSrcUrl:o,imageHostingHandler:r,imagePasteHandler:n,uploadHandler:e.uploadImageHandler}),new Ut,new fe,new $e({enableResizing:!0}),new Xe({placeholder:"Type '/' for commands"}),new go,new yo,new qt,new Ft,new Gt({}),new co,new ce({extensions:[...cr({...a,lineNumbers:!0}),...d],useProsemirrorHistoryKey:!0,customCopyFunction:i}),new jt({}),new Ot({resizable:!1}),new Dt,new Ht,new Vt,new ne({decoration:{style:"background-color: yellow; color: black"},activeDecoration:{style:"background-color: orange; color: black"}}),new he({handleViewImgSrcUrl:o}),new He({imagePasteHandler:n,clipboardReadFunction:s}),new Eh({}),new kh({className:"rme-drop-cursor"}),new ae,new xt,new so,new je(m),new Fe({...m,handleViewImgSrcUrl:o}),new Qe(m),new we({}),new Ye({}),new Je({}),new Ze({}),new et({}),new le({}),new Ee,c];return e.ai&&(p.unshift(new Oe(e.ai)),e.ai.copilot&&p.unshift(new Ve(e.ai.copilot))),p}var zr=Sh;var Kr=class{constructor(t){this.nodes=t,this.delimiter="",this.out="",this.closed=null,this.inTightList=!1}flushClose(t=2){if(this.closed){if(this.ensureNewLine(),t>1){let o=this.delimiter,r=/\s+$/.exec(o);r&&(o=o.slice(0,o.length-r[0].length));for(let n=1;n<t;n++)this.out+=o+`
1706
+ `}]}toMarkdown({state:t,node:o}){t.text(o.text||"")}};import{PlainExtension as ch,extension as dh}from"@rme-sdk/core";var le=class extends ch{get name(){return"transformer"}createPlugin(){let t={isTransformerFlag:!0,stringToDoc:null,docToString:null};return{state:{init(){return t},apply:(o,r)=>{let n=o.getMeta(this.pluginKey);return n?{...r,stringToDoc:n.stringToDoc,docToString:n.docToString}:r}},initialState:t}}};le=v([dh({defaultOptions:{}})],le);import{extension as mh,isTextSelection as ph,PlainExtension as uh}from"@rme-sdk/core";import{ViewPlugin as fh}from"@codemirror/view";var Ds=32;function hh(e){let o=window.getComputedStyle(e).overflowY;return o!=="visible"&&o!=="clip"&&e.scrollHeight>e.clientHeight}function gh(e){let t=e.dom.parentElement;for(;t;){if(hh(t))return t;t=t.parentElement}return document}function Ct(e){return e===document?window.scrollY:e.scrollTop}function bh(e){return e===document?window.innerHeight:e.clientHeight}function yh(e){if(e===document){let t=document.scrollingElement;return t?t.scrollHeight-window.innerHeight:0}return e.scrollHeight-e.clientHeight}function xh(e,t){if(e===document){window.scrollTo({top:t,behavior:"smooth"});return}e.scrollTo({top:t,behavior:"smooth"})}function Vs(e){return e===document?0:e.getBoundingClientRect().top}var J=class extends uh{get name(){return"typewriterScroll"}createCodeMirrorExtension(){let t=this;return fh.fromClass(class{constructor(){this.rafId=null}update(o){t.options.enabled&&(!o.docChanged&&!o.selectionSet||this.scheduleCenter(o))}scheduleCenter(o){this.rafId!==null&&cancelAnimationFrame(this.rafId),this.rafId=requestAnimationFrame(()=>{this.rafId=null,this.centerCaretLine(o)})}centerCaretLine(o){let{view:r}=o,i=r.state.selection.main.head,a=r.state.doc.lineAt(i).from,l=r.coordsAtPos(a);if(!l)return;let c=l.top,d=l.bottom,m=(c+d)/2,p=window.innerHeight/2,f=m-p;if(Math.abs(f)<=Ds)return;let u=window.scrollY,y=Math.max(0,Math.min(document.documentElement.scrollHeight-window.innerHeight,u+f));y!==u&&window.scrollTo({top:y,behavior:"smooth"})}destroy(){this.rafId!==null&&cancelAnimationFrame(this.rafId)}})}createPlugin(){let t=null,o=!1,r=()=>{t!==null&&(cancelAnimationFrame(t),t=null)},n=c=>{let d=document.activeElement;return!d||d===c.dom||!c.dom.contains(d)?!1:!!d.closest(".cm-editor")},i=c=>{if(!this.options.enabled||o||!c.hasFocus())return;let d=gh(c),m=yh(d);if(!(m<=0))try{let p,f;if(n(c)){let k=document.activeElement?.closest(".cm-editor");if(!k||!k.querySelector(".cm-content"))return;let g=window.getSelection();if(!g||g.rangeCount===0)return;let C=g.getRangeAt(0).getClientRects();if(C.length===0)return;let w=C[0],T=Ct(d),I=Vs(d);p=T+w.top-I,f=T+w.bottom-I}else{let{selection:E}=c.state;if(!ph(E)||!E.empty)return;let k=c.coordsAtPos(E.head);if(!k)return;let h=Ct(d),g=Vs(d);p=h+k.top-g,f=h+k.bottom-g}let u=(p+f)/2,y=Ct(d)+bh(d)/2,b=u-y;if(Math.abs(b)<=Ds)return;let x=Math.max(0,Math.min(m,Ct(d)+b));x!==Ct(d)&&xh(d,x)}catch{return}},s=c=>{r(),t=requestAnimationFrame(()=>{t=null,i(c)})},a=()=>{l&&n(l)&&s(l)},l=null;return{view:c=>{l=c;let d=()=>{l&&n(l)&&s(l)};return document.addEventListener("selectionchange",d),{update:(m,p)=>{if(m!==c)return;let f=!m.state.doc.eq(p.doc),u=!m.state.selection.eq(p.selection);!f&&!u||s(m)},destroy:()=>{r(),document.removeEventListener("selectionchange",d),l=null}}},props:{handleDOMEvents:{compositionstart:()=>(o=!0,!1),compositionend:c=>(o=!1,s(c),!1),focus:c=>(s(c),!1),blur:()=>(r(),o=!1,!1)}}}}};J=v([mh({defaultOptions:{enabled:!1},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],J);function Sh(e){let t=f=>(navigator.clipboard.writeText(f),!0),{handleViewImgSrcUrl:o,imageHostingHandler:r,imagePasteHandler:n,customCopyFunction:i=t,clipboardReadFunction:s=St,codemirrorOptions:a={},typewriterScroll:l={}}=e,c=new J(l),d=l.enabled===!0?[c.createCodeMirrorExtension()]:[],m={customCopyFunction:i,codemirrorExtensions:[...cr({...a,lineNumbers:!0}),...d]},p=[...wh({excludeExtensions:["paragraph","text"]}),...gs({handleViewImgSrcUrl:o}),new De,new Ch({}),new Ke({handleViewImgSrcUrl:o,imageHostingHandler:r,imagePasteHandler:n}),new We({handleViewImgSrcUrl:o,imageHostingHandler:r,imagePasteHandler:n,uploadHandler:e.uploadImageHandler}),new Ut,new fe,new $e({enableResizing:!0}),new Xe({placeholder:"Type '/' for commands"}),new go,new yo,new qt,new Ft,new Gt({}),new co,new ce({extensions:[...cr({...a,lineNumbers:!0}),...d],useProsemirrorHistoryKey:!0,customCopyFunction:i}),new jt({}),new Ot({resizable:!1}),new Dt,new Ht,new Vt,new ne({decoration:{style:"background-color: yellow; color: black"},activeDecoration:{style:"background-color: orange; color: black"}}),new he({handleViewImgSrcUrl:o}),new He({imagePasteHandler:n,clipboardReadFunction:s}),new Eh({}),new kh({className:"rme-drop-cursor"}),new ae,new xt,new so,new je(m),new Fe({...m,handleViewImgSrcUrl:o}),new Qe(m),new we({}),new Ye({}),new Je({}),new Ze({}),new et({}),new le({}),new Ee,c];return e.ai&&(p.unshift(new Oe(e.ai)),e.ai.copilot&&p.unshift(new Ve(e.ai.copilot))),p}var zr=Sh;var Kr=class{constructor(t){this.nodes=t,this.delimiter="",this.out="",this.closed=null,this.inTightList=!1}flushClose(t=2){if(this.closed){if(this.ensureNewLine(),t>1){let o=this.delimiter,r=/\s+$/.exec(o);r&&(o=o.slice(0,o.length-r[0].length));for(let n=1;n<t;n++)this.out+=o+`
1707
1707
  `}this.closed=null}}wrapBlock(t,o,r,n){let i=this.delimiter;this.write(o||t),this.delimiter=this.delimiter+t,n(),this.delimiter=i,this.closeBlock(r)}atBlank(){return/(^|\n)$/.test(this.out)}ensureNewLine(){this.atBlank()||(this.out+=`
1708
1708
  `)}write(t){this.flushClose(),this.delimiter&&this.atBlank()&&(this.out+=this.delimiter),t&&(this.out+=t)}closeBlock(t){this.closed=t}text(t,o=!0){let r=t.split(`
1709
1709
  `);for(let n=0;n<r.length;n++){let i=this.atBlank()||this.closed;this.write(),this.out+=o?this.esc(r[n],!!i):r[n],n!=r.length-1&&(this.out+=`
@@ -1713,7 +1713,7 @@ ${n}`);return gu(i,o)}function yu(e,t){if(t.length===0||e.length===0)return;let
1713
1713
  `),o.write(`---
1714
1714
  `);return}else r.attrs.language!==Co?(o.write("```"+(r.attrs.language||"")+`
1715
1715
  `),o.text(r.textContent,!1),o.text(`
1716
- `),o.write("```"),o.closeBlock(r)):(o.wrapBlock(" "," ",r,()=>o.renderContent(r)),o.closeBlock(r));o.ensureNewLine()}createDecorations(o){if(this.options.hideDecoration)return Eo.empty;let r=Ks({types:this.type,selection:o.selection});if(!r||r.node.attrs["front-matter"]===!0)return Eo.empty;if(!zs||zs.length<=1)return Eo.empty;let{create:n,destroy:i}=$s(r),s=Hh.widget(r.pos,n,{ignoreSelection:!0,stopEvent:()=>!0,key:"language-menu",destroy:i});return Eo.create(o.doc,[s])}};ce=v([Ih({defaultOptions:{hideDecoration:!1,extensions:null,toggleName:"paragraph",useProsemirrorHistoryKey:!1,onCodemirrorViewLoad:()=>{},showCopyButton:!0},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],ce);function Kh(e){let t=e?.typewriterScroll??{},o=new J(t),r=t.enabled!==!1?[o.createCodeMirrorExtension()]:[];return zh(()=>[new Fh({}),new $h({content:"codeMirror"}),new ne({}),new ce({hideDecoration:!0,showCopyButton:!1,extensions:[Ai,Vh(),...r],onCodemirrorViewLoad:e?.onCodemirrorViewLoad,commandKeymapOptions:{overrideShortcutMap:e?.overrideShortcutMap,disableAllBuildInShortcuts:e?.disableAllBuildInShortcuts,clipboardReadFunction:e?.clipboardReadFunction}}),o])}var So=e=>{let t=Kh(e);return{manager:t,stringToDoc:n=>{let i=t.schema,s={language:e?.language||"markdown"},a=n?i.text(n):void 0;return i.nodes.doc.create({},i.nodes.codeMirror.create(s,a))},docToString:n=>n.textContent,view:"SourceCode"}};import{jsx as Se,jsxs as Jh}from"react/jsx-runtime";var[jh,Qh]=Dn(({props:e})=>({...e})),Xh=Us(e=>{let{markdownToolBar:t,styleToken:o,textContainerProps:r={}}=e,{content:n,markText:i,hooks:s,isTesting:a,editable:l}=Qh(),c;try{c=i.stringToDoc(n)}catch(d){return Se(Re,{hasError:!0,error:d,...e.errorHandler||{}})}return Se(Re,{...e.errorHandler||{},children:Se(En,{...o,children:Jh(Uh,{manager:i.manager,initialContent:c,hooks:s,editable:l,onChange:e.onChange,autoRender:!1,children:[Se(Vn,{...r}),t||null,a?Se(Wh,{}):null]})})})}),Yh=e=>{let{content:t,delegate:o,isTesting:r,hooks:n,markdownToolBar:i,styleToken:s=To,sourceCodeTextContainerProps:a={}}=e,l=Gh(()=>o??So(),[o]),c=qh(d=>{try{e.onChange?.(d)}catch(m){console.error(m)}},[l,e]);return Se(jh,{content:t,isTesting:r,markText:l,hooks:n,children:Se(Xh,{styleToken:s,textContainerProps:a,markdownToolBar:i,onChange:c,errorHandler:e.errorHandler})})},Ur=Us(Yh);import{useRemirrorContext as Zh}from"@rme-sdk/react-core";import{useEffect as eg}from"react";var qs=e=>{let t=Zh();eg(()=>{e&&e(t)},[e,t])};import{ProsemirrorDevTools as Ly}from"@rme-sdk/dev";import{Remirror as _y}from"@rme-sdk/react";import{memo as By,useCallback as Oy,useEffect as Hy,useMemo as Dy}from"react";import{isHTMLElement as bg}from"@ocavue/utils";import{NodeSelection as yg}from"@rme-sdk/pm/state";import{useCommands as xg,useExtension as kg,useRemirrorContext as Cg}from"@rme-sdk/react-core";import{t as wt}from"i18next";import{memo as wg,useCallback as ot,useEffect as ea,useMemo as vo,useRef as ta,useState as oa}from"react";import ra from"styled-components";import{Dropdown as Eg}from"zens";import{isHTMLElement as Qs}from"@ocavue/utils";import{Fragment as tg,Slice as og}from"@rme-sdk/pm";import{NodeSelection as rg}from"@rme-sdk/pm/state";function Gs(e){let t=e.ownerDocument.defaultView;if(!t)return;let r=t.getComputedStyle(e).display;return r==="contents"&&e.childElementCount===1?e.firstElementChild:r==="none"?void 0:e}function js(e,t){let{top:o,bottom:r,left:n,right:i}=se(t),s=i-n,a=r-o,l=n,c=o,{clientX:d,clientY:m}=e,p=t.ownerDocument,f=p.createElement("div"),u=Math.round(l-d),y=Math.round(c-m),b=Math.max(u,0),x=Math.max(y,0);Object.assign(f.style,{position:"fixed",top:"-1000vh",left:"-1000vw",pointerEvents:"none",zIndex:"2147483647",borderLeft:`${b}px solid transparent`,borderTop:`${x}px solid transparent`,boxSizing:"border-box",width:`${s+b}px`,height:`${a+x}px`});let[E,k]=oi(t,!0);E.style.setProperty("opacity","0.7","important"),E.style.setProperty("margin","0","important"),E.style.setProperty("outline-color","transparent","important"),p.body.appendChild(f),f.appendChild(E),ri(f,k),e.dataTransfer?.setDragImage(f,Math.max(-u,0),Math.max(-y,0)),requestAnimationFrame(()=>{f.remove()})}function Xs(e,t,o){if(!o.dataTransfer)return;let{pos:r}=t;if(r==null)return;let n=e.nodeDOM(r);if(!n||!Qs(n))return;let i=Gs(n);!i||!Qs(i)||(o.dataTransfer.clearData(),o.dataTransfer.setData("text/html",i.outerHTML),o.dataTransfer.effectAllowed="copyMove",js(o,i))}function Ys(e,t){let{node:o,pos:r}=t,n={slice:new og(tg.from(o),0,0),move:!0,node:rg.create(e.state.doc,r)};e.dragging=n}import{TextSelection as jr}from"@rme-sdk/pm/state";import{useCommands as zR}from"@rme-sdk/react-core";import{useMemo as ng}from"react";import{useTranslation as UR}from"react-i18next";var ig=e=>t=>t.type.name==="heading"&&t.attrs.level===e,sg=e=>e.type.name==="paragraph",ag=e=>e.type.name==="codeMirror",lg=e=>e.type.name==="blockquote",qr=e=>t=>t.type.name==="list"&&t.attrs.kind===e,Js=e=>["paragraph","heading","codeMirror","blockquote","list"].includes(e.type.name),Gr=e=>["paragraph","heading","codeMirror","blockquote","list"].includes(e.type.name),cg=e=>["paragraph","heading","blockquote","list"].includes(e.type.name),dg=e=>["paragraph","heading","codeMirror","list"].includes(e.type.name),mg=e=>{let{view:t,pos:o,node:r,tr:n}=e;n.delete(o,o+r.nodeSize);let i=Math.max(0,Math.min(o,n.doc.content.size));return n.setSelection(jr.create(n.doc,i)),t.dispatch(n),t.focus(),!0},pg=e=>t=>{let{view:o,pos:r,tr:n}=t,i=o.state.schema.nodes.heading;return i?(n.setBlockType(r,r+t.node.nodeSize,i,{level:e}),o.dispatch(n),!0):!1},ug=e=>{let{view:t,pos:o,tr:r}=e,n=t.state.schema.nodes.paragraph;return n?(r.setBlockType(o,o+e.node.nodeSize,n),t.dispatch(r),!0):!1},fg=e=>{let{view:t,pos:o,node:r,tr:n}=e,i=t.state.schema.nodes.codeMirror;if(!i)return!1;let s=gg(r);n.delete(o,o+r.nodeSize);let a=i.create({language:""},t.state.schema.text(s));n.insert(o,a);let l=o+1;return n.setSelection(jr.create(n.doc,l)),t.dispatch(n),!0},hg=e=>{let{view:t,pos:o,node:r,tr:n}=e,i=t.state.schema.nodes.blockquote,s=t.state.schema.nodes.paragraph;if(!i||!s)return!1;let a=r.content,l=s.create(null,a),c=i.create(null,l);n.delete(o,o+r.nodeSize),n.insert(o,c);let d=o+1;return n.setSelection(jr.create(n.doc,d)),t.dispatch(n),!0},gg=e=>{let t="";return e.descendants(o=>{o.isText&&(t+=o.text)}),t},Zs=(e,t)=>ng(()=>{let r=Array.from({length:6},(s,a)=>{let l=a+1;return{key:`heading-${l}`,label:e("blockType.heading",{level:l})||`Heading ${l}`,icon:B[`heading-${l}`]||"ri-heading",group:"transform",isActive:ig(l),isAvailable:Js,transform:pg(l)}}),n=[{key:"paragraph",label:e("blockType.paragraph")||"Paragraph",icon:B.paragraph,group:"transform",isActive:sg,isAvailable:Js,transform:ug},...r,{key:"code-block",label:e("blockType.codeBlock")||"Code Block",icon:B.codeMirror,group:"transform",isActive:ag,isAvailable:cg,transform:fg},{key:"blockquote",label:e("blockType.blockquote")||"Quote",icon:B.blockquote,group:"transform",isActive:lg,isAvailable:dg,transform:hg},{key:"bullet-list",label:e("blockType.bulletList")||"Bullet List",icon:B["list-bullet"],group:"transform",isActive:qr("bullet"),isAvailable:Gr,transform:s=>t.toggleBulletList?.enabled?.()?(t.toggleBulletList(),!0):!1},{key:"ordered-list",label:e("blockType.orderedList")||"Ordered List",icon:B["list-ordered"],group:"transform",isActive:qr("ordered"),isAvailable:Gr,transform:s=>t.toggleOrderedList?.enabled?.()?(t.toggleOrderedList(),!0):!1},{key:"task-list",label:e("blockType.taskList")||"Task List",icon:B["list-task"],group:"transform",isActive:qr("task"),isAvailable:Gr,transform:s=>t.toggleTaskList?.enabled?.()?(t.toggleTaskList(),!0):!1}],i=[{key:"delete",label:e("blockType.delete")||"Delete",icon:"ri-delete-bin-line",group:"actions",action:mg}];return[...n,...i]},[e,t]);import{jsx as de,jsxs as vg}from"react/jsx-runtime";var na=wg(()=>{let{view:e}=Cg({autoUpdate:!0}),t=kg(Ee),o=t?.getPluginState(),[r,n]=oa(!1),[i,s]=oa(null),a=xg(),l=Zs(wt,a),c=ta(null),d=ta(o),m=ot(()=>{if(e&&t&&o&&o.pos!==null&&o.node){let C=e.state.tr;C.setSelection(yg.create(C.doc,o.pos)),e.dispatch(C)}},[e,t,o]),p=ot(C=>{if(e&&o&&o.pos!==null&&o.node&&o.node.isBlock){e.dom.classList.add("rme-dragging"),m();let w=e.nodeDOM(o.pos);w&&bg(w)&&(C.dataTransfer&&(C.dataTransfer.effectAllowed="move"),Xs(e,o,C),Ys(e,o))}},[e,o,m]),f=ot(()=>{e&&e.dom.classList.remove("rme-dragging")},[e]),u=ot(C=>{let w=d.current;if(!e||!w||w.pos===null||!w.node)return;let T=l.find(Q=>Q.key===C);if(!T)return;let R=e.state.tr,N={view:e,pos:w.pos,node:w.node,tr:R},V=!1;T.group==="transform"&&T.transform?V=T.transform(N):T.group==="actions"&&T.action&&(V=T.action(N)),V&&n(!1)},[e,l]);ea(()=>{r||(d.current=o)},[o,r]),ea(()=>{if(r){let C=d.current;C?.rect&&s({left:C.rect.left-38,top:C.rect.top})}else s(null)},[r]);let y=r?d.current:o,b=vo(()=>{let C=y?.node;return C?l.filter(w=>w.group==="transform"&&(!w.isAvailable||w.isAvailable(C))):[]},[l,y?.node]),x=vo(()=>{let C=y?.node;return C?l.filter(w=>w.group==="actions"&&(!w.isAvailable||w.isAvailable(C))):[]},[l,y?.node]),E=vo(()=>b.reduce((C,w)=>{let T=w.key.startsWith("heading")?"text":w.key.includes("list")?"list":"other";return C[T]||(C[T]=[]),C[T].push(w),C},{}),[b]),k={text:wt("blockTypeGroup.text")||"Text",list:wt("blockTypeGroup.list")||"List",other:wt("blockTypeGroup.other")||"Other"},h=vo(()=>{if(!y?.node)return[];let C=[],w=[];return Object.entries(E).forEach(([T,I],R)=>{R>0&&w.push({type:"divider"}),w.push({key:`group-${T}`,label:k[T],disabled:!0}),I.forEach(N=>{w.push({key:N.key,label:N.label,icon:de("i",{className:N.icon})})})}),w.length>0&&C.push({key:"transform",label:wt("blockType.transformTo")||"Transform to",icon:de("i",{className:"ri-exchange-line"}),children:w}),x.length>0&&(C.push({type:"divider"}),x.forEach(T=>{C.push({key:T.key,label:T.label,icon:de("i",{className:T.icon}),danger:T.key==="delete"})})),C},[y?.node,E,x,k]),g=ot(C=>{u(C.key)},[u]),S=ot(()=>{if(!y?.node)return null;let C=y.node.type?.name||"";y.node.type?.name==="heading"&&(C=`heading-${y.node.attrs?.level}`),y.node.type?.name==="list"&&(C=`list-${y.node.attrs?.kind}`);let w=B[C];return w?de("i",{className:w}):null},[y?.node]);return!e||!y?.node?null:de(Eg,{menu:{items:h,onClick:g},trigger:["click"],placement:"bottomLeft",getPopupContainer:()=>document.body,raw:!0,open:r,onOpenChange:n,triggerRef:c,children:vg(Sg,{ref:c,className:"rme-block-handler",draggable:"true",onClick:()=>n(!r),onDragStart:p,onDragEnd:f,style:{position:"fixed",left:`${i?.left??(o?.rect?.left?o.rect.left-38:0)}px`,top:`${i?.top??o?.rect?.top??0}px`},children:[de(Tg,{onClick:m,children:S()}),de("div",{className:"rme-draggable-handler",children:de("i",{className:"ri-draggable"})})]},"rme-block-handler")})}),Sg=ra.div`
1716
+ `),o.write("```"),o.closeBlock(r)):(o.wrapBlock(" "," ",r,()=>o.renderContent(r)),o.closeBlock(r));o.ensureNewLine()}createDecorations(o){if(this.options.hideDecoration)return Eo.empty;let r=Ks({types:this.type,selection:o.selection});if(!r||r.node.attrs["front-matter"]===!0)return Eo.empty;if(!zs||zs.length<=1)return Eo.empty;let{create:n,destroy:i}=$s(r),s=Hh.widget(r.pos,n,{ignoreSelection:!0,stopEvent:()=>!0,key:"language-menu",destroy:i});return Eo.create(o.doc,[s])}};ce=v([Ih({defaultOptions:{hideDecoration:!1,extensions:null,toggleName:"paragraph",useProsemirrorHistoryKey:!1,onCodemirrorViewLoad:()=>{},showCopyButton:!0},staticKeys:[],handlerKeys:[],customHandlerKeys:[]})],ce);function Kh(e){let t=e?.typewriterScroll??{},o=new J(t),r=t.enabled===!0?[o.createCodeMirrorExtension()]:[];return zh(()=>[new Fh({}),new $h({content:"codeMirror"}),new ne({}),new ce({hideDecoration:!0,showCopyButton:!1,extensions:[Ai,Vh(),...r],onCodemirrorViewLoad:e?.onCodemirrorViewLoad,commandKeymapOptions:{overrideShortcutMap:e?.overrideShortcutMap,disableAllBuildInShortcuts:e?.disableAllBuildInShortcuts,clipboardReadFunction:e?.clipboardReadFunction}}),o])}var So=e=>{let t=Kh(e);return{manager:t,stringToDoc:n=>{let i=t.schema,s={language:e?.language||"markdown"},a=n?i.text(n):void 0;return i.nodes.doc.create({},i.nodes.codeMirror.create(s,a))},docToString:n=>n.textContent,view:"SourceCode"}};import{jsx as Se,jsxs as Jh}from"react/jsx-runtime";var[jh,Qh]=Dn(({props:e})=>({...e})),Xh=Us(e=>{let{markdownToolBar:t,styleToken:o,textContainerProps:r={}}=e,{content:n,markText:i,hooks:s,isTesting:a,editable:l}=Qh(),c;try{c=i.stringToDoc(n)}catch(d){return Se(Re,{hasError:!0,error:d,...e.errorHandler||{}})}return Se(Re,{...e.errorHandler||{},children:Se(En,{...o,children:Jh(Uh,{manager:i.manager,initialContent:c,hooks:s,editable:l,onChange:e.onChange,autoRender:!1,children:[Se(Vn,{...r}),t||null,a?Se(Wh,{}):null]})})})}),Yh=e=>{let{content:t,delegate:o,isTesting:r,hooks:n,markdownToolBar:i,styleToken:s=To,sourceCodeTextContainerProps:a={}}=e,l=Gh(()=>o??So(),[o]),c=qh(d=>{try{e.onChange?.(d)}catch(m){console.error(m)}},[l,e]);return Se(jh,{content:t,isTesting:r,markText:l,hooks:n,children:Se(Xh,{styleToken:s,textContainerProps:a,markdownToolBar:i,onChange:c,errorHandler:e.errorHandler})})},Ur=Us(Yh);import{useRemirrorContext as Zh}from"@rme-sdk/react-core";import{useEffect as eg}from"react";var qs=e=>{let t=Zh();eg(()=>{e&&e(t)},[e,t])};import{ProsemirrorDevTools as Ly}from"@rme-sdk/dev";import{Remirror as _y}from"@rme-sdk/react";import{memo as By,useCallback as Oy,useEffect as Hy,useMemo as Dy}from"react";import{isHTMLElement as bg}from"@ocavue/utils";import{NodeSelection as yg}from"@rme-sdk/pm/state";import{useCommands as xg,useExtension as kg,useRemirrorContext as Cg}from"@rme-sdk/react-core";import{t as wt}from"i18next";import{memo as wg,useCallback as ot,useEffect as ea,useMemo as vo,useRef as ta,useState as oa}from"react";import ra from"styled-components";import{Dropdown as Eg}from"zens";import{isHTMLElement as Qs}from"@ocavue/utils";import{Fragment as tg,Slice as og}from"@rme-sdk/pm";import{NodeSelection as rg}from"@rme-sdk/pm/state";function Gs(e){let t=e.ownerDocument.defaultView;if(!t)return;let r=t.getComputedStyle(e).display;return r==="contents"&&e.childElementCount===1?e.firstElementChild:r==="none"?void 0:e}function js(e,t){let{top:o,bottom:r,left:n,right:i}=se(t),s=i-n,a=r-o,l=n,c=o,{clientX:d,clientY:m}=e,p=t.ownerDocument,f=p.createElement("div"),u=Math.round(l-d),y=Math.round(c-m),b=Math.max(u,0),x=Math.max(y,0);Object.assign(f.style,{position:"fixed",top:"-1000vh",left:"-1000vw",pointerEvents:"none",zIndex:"2147483647",borderLeft:`${b}px solid transparent`,borderTop:`${x}px solid transparent`,boxSizing:"border-box",width:`${s+b}px`,height:`${a+x}px`});let[E,k]=oi(t,!0);E.style.setProperty("opacity","0.7","important"),E.style.setProperty("margin","0","important"),E.style.setProperty("outline-color","transparent","important"),p.body.appendChild(f),f.appendChild(E),ri(f,k),e.dataTransfer?.setDragImage(f,Math.max(-u,0),Math.max(-y,0)),requestAnimationFrame(()=>{f.remove()})}function Xs(e,t,o){if(!o.dataTransfer)return;let{pos:r}=t;if(r==null)return;let n=e.nodeDOM(r);if(!n||!Qs(n))return;let i=Gs(n);!i||!Qs(i)||(o.dataTransfer.clearData(),o.dataTransfer.setData("text/html",i.outerHTML),o.dataTransfer.effectAllowed="copyMove",js(o,i))}function Ys(e,t){let{node:o,pos:r}=t,n={slice:new og(tg.from(o),0,0),move:!0,node:rg.create(e.state.doc,r)};e.dragging=n}import{TextSelection as jr}from"@rme-sdk/pm/state";import{useCommands as zR}from"@rme-sdk/react-core";import{useMemo as ng}from"react";import{useTranslation as UR}from"react-i18next";var ig=e=>t=>t.type.name==="heading"&&t.attrs.level===e,sg=e=>e.type.name==="paragraph",ag=e=>e.type.name==="codeMirror",lg=e=>e.type.name==="blockquote",qr=e=>t=>t.type.name==="list"&&t.attrs.kind===e,Js=e=>["paragraph","heading","codeMirror","blockquote","list"].includes(e.type.name),Gr=e=>["paragraph","heading","codeMirror","blockquote","list"].includes(e.type.name),cg=e=>["paragraph","heading","blockquote","list"].includes(e.type.name),dg=e=>["paragraph","heading","codeMirror","list"].includes(e.type.name),mg=e=>{let{view:t,pos:o,node:r,tr:n}=e;n.delete(o,o+r.nodeSize);let i=Math.max(0,Math.min(o,n.doc.content.size));return n.setSelection(jr.create(n.doc,i)),t.dispatch(n),t.focus(),!0},pg=e=>t=>{let{view:o,pos:r,tr:n}=t,i=o.state.schema.nodes.heading;return i?(n.setBlockType(r,r+t.node.nodeSize,i,{level:e}),o.dispatch(n),!0):!1},ug=e=>{let{view:t,pos:o,tr:r}=e,n=t.state.schema.nodes.paragraph;return n?(r.setBlockType(o,o+e.node.nodeSize,n),t.dispatch(r),!0):!1},fg=e=>{let{view:t,pos:o,node:r,tr:n}=e,i=t.state.schema.nodes.codeMirror;if(!i)return!1;let s=gg(r);n.delete(o,o+r.nodeSize);let a=i.create({language:""},t.state.schema.text(s));n.insert(o,a);let l=o+1;return n.setSelection(jr.create(n.doc,l)),t.dispatch(n),!0},hg=e=>{let{view:t,pos:o,node:r,tr:n}=e,i=t.state.schema.nodes.blockquote,s=t.state.schema.nodes.paragraph;if(!i||!s)return!1;let a=r.content,l=s.create(null,a),c=i.create(null,l);n.delete(o,o+r.nodeSize),n.insert(o,c);let d=o+1;return n.setSelection(jr.create(n.doc,d)),t.dispatch(n),!0},gg=e=>{let t="";return e.descendants(o=>{o.isText&&(t+=o.text)}),t},Zs=(e,t)=>ng(()=>{let r=Array.from({length:6},(s,a)=>{let l=a+1;return{key:`heading-${l}`,label:e("blockType.heading",{level:l})||`Heading ${l}`,icon:B[`heading-${l}`]||"ri-heading",group:"transform",isActive:ig(l),isAvailable:Js,transform:pg(l)}}),n=[{key:"paragraph",label:e("blockType.paragraph")||"Paragraph",icon:B.paragraph,group:"transform",isActive:sg,isAvailable:Js,transform:ug},...r,{key:"code-block",label:e("blockType.codeBlock")||"Code Block",icon:B.codeMirror,group:"transform",isActive:ag,isAvailable:cg,transform:fg},{key:"blockquote",label:e("blockType.blockquote")||"Quote",icon:B.blockquote,group:"transform",isActive:lg,isAvailable:dg,transform:hg},{key:"bullet-list",label:e("blockType.bulletList")||"Bullet List",icon:B["list-bullet"],group:"transform",isActive:qr("bullet"),isAvailable:Gr,transform:s=>t.toggleBulletList?.enabled?.()?(t.toggleBulletList(),!0):!1},{key:"ordered-list",label:e("blockType.orderedList")||"Ordered List",icon:B["list-ordered"],group:"transform",isActive:qr("ordered"),isAvailable:Gr,transform:s=>t.toggleOrderedList?.enabled?.()?(t.toggleOrderedList(),!0):!1},{key:"task-list",label:e("blockType.taskList")||"Task List",icon:B["list-task"],group:"transform",isActive:qr("task"),isAvailable:Gr,transform:s=>t.toggleTaskList?.enabled?.()?(t.toggleTaskList(),!0):!1}],i=[{key:"delete",label:e("blockType.delete")||"Delete",icon:"ri-delete-bin-line",group:"actions",action:mg}];return[...n,...i]},[e,t]);import{jsx as de,jsxs as vg}from"react/jsx-runtime";var na=wg(()=>{let{view:e}=Cg({autoUpdate:!0}),t=kg(Ee),o=t?.getPluginState(),[r,n]=oa(!1),[i,s]=oa(null),a=xg(),l=Zs(wt,a),c=ta(null),d=ta(o),m=ot(()=>{if(e&&t&&o&&o.pos!==null&&o.node){let C=e.state.tr;C.setSelection(yg.create(C.doc,o.pos)),e.dispatch(C)}},[e,t,o]),p=ot(C=>{if(e&&o&&o.pos!==null&&o.node&&o.node.isBlock){e.dom.classList.add("rme-dragging"),m();let w=e.nodeDOM(o.pos);w&&bg(w)&&(C.dataTransfer&&(C.dataTransfer.effectAllowed="move"),Xs(e,o,C),Ys(e,o))}},[e,o,m]),f=ot(()=>{e&&e.dom.classList.remove("rme-dragging")},[e]),u=ot(C=>{let w=d.current;if(!e||!w||w.pos===null||!w.node)return;let T=l.find(Q=>Q.key===C);if(!T)return;let R=e.state.tr,N={view:e,pos:w.pos,node:w.node,tr:R},V=!1;T.group==="transform"&&T.transform?V=T.transform(N):T.group==="actions"&&T.action&&(V=T.action(N)),V&&n(!1)},[e,l]);ea(()=>{r||(d.current=o)},[o,r]),ea(()=>{if(r){let C=d.current;C?.rect&&s({left:C.rect.left-38,top:C.rect.top})}else s(null)},[r]);let y=r?d.current:o,b=vo(()=>{let C=y?.node;return C?l.filter(w=>w.group==="transform"&&(!w.isAvailable||w.isAvailable(C))):[]},[l,y?.node]),x=vo(()=>{let C=y?.node;return C?l.filter(w=>w.group==="actions"&&(!w.isAvailable||w.isAvailable(C))):[]},[l,y?.node]),E=vo(()=>b.reduce((C,w)=>{let T=w.key.startsWith("heading")?"text":w.key.includes("list")?"list":"other";return C[T]||(C[T]=[]),C[T].push(w),C},{}),[b]),k={text:wt("blockTypeGroup.text")||"Text",list:wt("blockTypeGroup.list")||"List",other:wt("blockTypeGroup.other")||"Other"},h=vo(()=>{if(!y?.node)return[];let C=[],w=[];return Object.entries(E).forEach(([T,I],R)=>{R>0&&w.push({type:"divider"}),w.push({key:`group-${T}`,label:k[T],disabled:!0}),I.forEach(N=>{w.push({key:N.key,label:N.label,icon:de("i",{className:N.icon})})})}),w.length>0&&C.push({key:"transform",label:wt("blockType.transformTo")||"Transform to",icon:de("i",{className:"ri-exchange-line"}),children:w}),x.length>0&&(C.push({type:"divider"}),x.forEach(T=>{C.push({key:T.key,label:T.label,icon:de("i",{className:T.icon}),danger:T.key==="delete"})})),C},[y?.node,E,x,k]),g=ot(C=>{u(C.key)},[u]),S=ot(()=>{if(!y?.node)return null;let C=y.node.type?.name||"";y.node.type?.name==="heading"&&(C=`heading-${y.node.attrs?.level}`),y.node.type?.name==="list"&&(C=`list-${y.node.attrs?.kind}`);let w=B[C];return w?de("i",{className:w}):null},[y?.node]);return!e||!y?.node?null:de(Eg,{menu:{items:h,onClick:g},trigger:["click"],placement:"bottomLeft",getPopupContainer:()=>document.body,raw:!0,open:r,onOpenChange:n,triggerRef:c,children:vg(Sg,{ref:c,className:"rme-block-handler",draggable:"true",onClick:()=>n(!r),onDragStart:p,onDragEnd:f,style:{position:"fixed",left:`${i?.left??(o?.rect?.left?o.rect.left-38:0)}px`,top:`${i?.top??o?.rect?.top??0}px`},children:[de(Tg,{onClick:m,children:S()}),de("div",{className:"rme-draggable-handler",children:de("i",{className:"ri-draggable"})})]},"rme-block-handler")})}),Sg=ra.div`
1717
1717
  display: flex;
1718
1718
  align-items: center;
1719
1719
  justify-content: center;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rme",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -162,21 +162,21 @@
162
162
  "@rme-sdk/core": "1.5.0",
163
163
  "@rme-sdk/core-utils": "1.5.0",
164
164
  "@rme-sdk/dev": "1.5.0",
165
- "@rme-sdk/extension-codemirror6": "1.5.0",
166
- "@rme-sdk/extension-count": "1.5.0",
167
165
  "@rme-sdk/extension-hard-break": "1.5.0",
166
+ "@rme-sdk/extension-count": "1.5.0",
168
167
  "@rme-sdk/extension-heading": "1.5.0",
169
168
  "@rme-sdk/extension-positioner": "1.5.0",
170
169
  "@rme-sdk/extension-tables": "1.5.0",
171
170
  "@rme-sdk/icons": "1.5.0",
172
- "@rme-sdk/preset-core": "1.5.0",
171
+ "@rme-sdk/main": "1.5.0",
173
172
  "@rme-sdk/pm": "1.5.0",
174
173
  "@rme-sdk/prosemirror-flat-list": "1.5.0",
174
+ "@rme-sdk/react-components": "1.5.0",
175
175
  "@rme-sdk/react": "1.5.0",
176
- "@rme-sdk/main": "1.5.0",
176
+ "@rme-sdk/react-core": "1.5.0",
177
177
  "@rme-sdk/types": "1.5.0",
178
- "@rme-sdk/react-components": "1.5.0",
179
- "@rme-sdk/react-core": "1.5.0"
178
+ "@rme-sdk/preset-core": "1.5.0",
179
+ "@rme-sdk/extension-codemirror6": "1.5.0"
180
180
  },
181
181
  "scripts": {
182
182
  "build": "pnpm clear && pnpm build-esbuild && pnpm types",