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.
- package/dist/index.mjs +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:!
|
|
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.
|
|
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/
|
|
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/
|
|
176
|
+
"@rme-sdk/react-core": "1.5.0",
|
|
177
177
|
"@rme-sdk/types": "1.5.0",
|
|
178
|
-
"@rme-sdk/
|
|
179
|
-
"@rme-sdk/
|
|
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",
|