md-editor-rt
Version:
Markdown editor for react, developed in jsx and typescript, dark theme、beautify content by prettier、render articles directly、paste or clip the picture and upload it...
40 lines (39 loc) • 61.9 kB
JavaScript
"use strict";var ka=Object.defineProperty;var Ta=(e,n,o)=>n in e?ka(e,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[n]=o;var K=(e,n,o)=>Ta(e,typeof n!="symbol"?n+"":n,o);const a=require("react/jsx-runtime"),c=require("react"),W=require("./ContentPreview.cjs"),$=require("./index3.cjs"),t=require("./config.cjs"),V=require("./context.cjs"),Se=require("@vavt/util"),m=require("./event-name.cjs"),se=require("./index4.cjs"),E=require("./index.cjs"),wa=require("./dom.cjs"),Le=require("./index2.cjs"),J=require("codemirror"),te=require("@codemirror/view"),$a=require("@codemirror/language-data"),Ea=require("@codemirror/lang-markdown"),D=require("@codemirror/state"),X=require("@codemirror/commands"),me=require("@codemirror/language"),u=require("@lezer/highlight"),Na=require("@codemirror/autocomplete"),ya=require("@codemirror/search"),Ia=()=>a.jsx("div",{className:`${t.prefix}-divider`}),ja=e=>{var g,b,v,p,d;const{editorId:n,usedLanguageText:o}=c.useContext(V.EditorContext),i=c.useMemo(()=>{var r,x;switch(e.type){case"link":return(r=o.linkModalTips)==null?void 0:r.linkTitle;case"image":return(x=o.linkModalTips)==null?void 0:x.imageTitle;default:return""}},[e.type,o]),[s,l]=c.useState({desc:"",url:""});return c.useEffect(()=>{e.visible||setTimeout(()=>{l({desc:"",url:""})},200)},[e.visible]),c.useMemo(()=>{var r,x,k,w,h;return a.jsxs(E.Modal,{title:i,visible:e.visible,onClose:e.onCancel,children:[a.jsxs("div",{className:`${t.prefix}-form-item`,children:[a.jsx("label",{className:`${t.prefix}-label`,htmlFor:`link-desc-${n}`,children:(r=o.linkModalTips)==null?void 0:r.descLabel}),a.jsx("input",{placeholder:(x=o.linkModalTips)==null?void 0:x.descLabelPlaceHolder,className:`${t.prefix}-input`,id:`link-desc-${n}`,type:"text",value:s.desc,onChange:N=>{l(f=>({...f,desc:N.target.value}))}})]}),a.jsxs("div",{className:`${t.prefix}-form-item`,children:[a.jsx("label",{className:`${t.prefix}-label`,htmlFor:`link-url-${n}`,children:(k=o.linkModalTips)==null?void 0:k.urlLabel}),a.jsx("input",{placeholder:(w=o.linkModalTips)==null?void 0:w.urlLabelPlaceHolder,className:`${t.prefix}-input`,id:`link-url-${n}`,type:"text",value:s.url,onChange:N=>{l(f=>({...f,url:N.target.value}))}})]}),a.jsx("div",{className:`${t.prefix}-form-item`,children:a.jsx("button",{className:`${t.prefix}-btn ${t.prefix}-btn-row`,type:"button",onClick:()=>{e.onOk(s),l(N=>({...N,desc:"",url:""}))},children:(h=o.linkModalTips)==null?void 0:h.buttonOK})})]})},[i,e,n,(g=o.linkModalTips)==null?void 0:g.descLabel,(b=o.linkModalTips)==null?void 0:b.descLabelPlaceHolder,(v=o.linkModalTips)==null?void 0:v.urlLabel,(p=o.linkModalTips)==null?void 0:p.urlLabelPlaceHolder,(d=o.linkModalTips)==null?void 0:d.buttonOK,s])};let z=null;const Sa=e=>{var w,h,N;const n=c.useContext(V.EditorContext),{editorId:o,usedLanguageText:i,rootRef:s}=n,l=t.globalConfig.editorExtensions.cropper.instance,g=c.useRef(null),b=c.useRef(null),v=c.useRef(null),[p,d]=c.useState({cropperInited:!1,imgSelected:!1,imgSrc:"",isFullscreen:!1});c.useEffect(()=>{e.visible&&!p.cropperInited&&(window.Cropper=l||window.Cropper,g.current.onchange=()=>{if(!window.Cropper){m.bus.emit(o,m.ERROR_CATCHER,{name:"Cropper",message:"Cropper is undefined"});return}const f=g.current.files||[];if((f==null?void 0:f.length)>0){const C=new FileReader;C.onload=y=>{d(j=>({...j,imgSelected:!0,imgSrc:y.target.result}))},C.readAsDataURL(f[0])}})},[e.visible,p.cropperInited,l,o]),c.useEffect(()=>{var f;(f=v.current)==null||f.setAttribute("style","")},[p.imgSelected]),c.useEffect(()=>{var f,C;z==null||z.destroy(),(f=v.current)==null||f.setAttribute("style",""),b.current&&p.imgSrc&&(z=new window.Cropper(b.current,{viewMode:2,preview:((C=s.current)==null?void 0:C.getRootNode()).querySelector(`.${t.prefix}-clip-preview-target`)}))},[p.imgSrc,p.isFullscreen,s]);const r=c.useMemo(()=>p.isFullscreen?{width:"100%",height:"100%"}:{width:"668px",height:"392px"},[p.isFullscreen]),x=()=>{z.clear(),z.destroy(),z=null,g.current.value="",d(f=>({...f,imgSrc:"",imgSelected:!1}))},k=c.useCallback(f=>{d(C=>({...C,isFullscreen:f}))},[]);return c.useMemo(()=>{var f,C,y;return a.jsxs(E.Modal,{className:`${t.prefix}-modal-clip`,title:(f=i.clipModalTips)==null?void 0:f.title,visible:e.visible,onClose:e.onCancel,showAdjust:!0,isFullscreen:p.isFullscreen,onAdjust:k,...r,children:[a.jsxs("div",{className:`${t.prefix}-form-item ${t.prefix}-clip`,children:[a.jsx("div",{className:`${t.prefix}-clip-main`,children:p.imgSelected?a.jsxs("div",{className:`${t.prefix}-clip-cropper`,children:[a.jsx("img",{src:p.imgSrc,ref:b,style:{display:"none"},alt:""}),a.jsx("div",{className:`${t.prefix}-clip-delete`,onClick:x,children:a.jsx(E.IconIns,{name:"delete"})})]}):a.jsx("div",{className:`${t.prefix}-clip-upload`,onClick:()=>{g.current.click()},role:"button",tabIndex:0,"aria-label":(C=i.imgTitleItem)==null?void 0:C.upload,children:a.jsx(E.IconIns,{name:"upload"})})}),a.jsx("div",{className:`${t.prefix}-clip-preview`,children:a.jsx("div",{className:`${t.prefix}-clip-preview-target`,ref:v})})]}),a.jsx("div",{className:`${t.prefix}-form-item`,children:a.jsx("button",{className:`${t.prefix}-btn`,type:"button",onClick:()=>{if(z){const j=z.getCroppedCanvas();m.bus.emit(o,m.UPLOAD_IMAGE,[$.base642File(j.toDataURL("image/png"))],e.onOk),x()}},children:(y=i.linkModalTips)==null?void 0:y.buttonOK})}),a.jsx("input",{ref:g,accept:"image/*",type:"file",multiple:!1,style:{display:"none"},"aria-hidden":"true"})]})},[(w=i.clipModalTips)==null?void 0:w.title,(h=i.linkModalTips)==null?void 0:h.buttonOK,(N=i.imgTitleItem)==null?void 0:N.upload,e.visible,e.onCancel,e.onOk,p.isFullscreen,p.imgSelected,p.imgSrc,k,r,o])},La=e=>a.jsxs(a.Fragment,{children:[a.jsx(ja,{type:e.type,visible:e.linkVisible,onOk:e.onOk,onCancel:e.onCancel}),a.jsx(Sa,{visible:e.clipVisible,onOk:e.onOk,onCancel:e.onCancel})]}),Aa=e=>{const[n,o]=c.useState({x:-1,y:-1}),i=c.useMemo(()=>JSON.stringify(e.tableShape),[e.tableShape]),s=c.useCallback(()=>{const b=[...JSON.parse(i)];return(!b[2]||b[2]<b[0])&&(b[2]=b[0]),(!b[3]||b[3]<b[3])&&(b[3]=b[1]),b},[i]),[l,g]=c.useState(s);return c.useEffect(()=>{g(s),o({x:-1,y:-1})},[s]),a.jsx("div",{className:`${t.prefix}-table-shape`,onMouseLeave:()=>{g(s),o({x:-1,y:-1})},children:new Array(l[1]).fill("").map((b,v)=>a.jsx("div",{className:`${t.prefix}-table-shape-row`,children:new Array(l[0]).fill("").map((p,d)=>a.jsx("div",{className:`${t.prefix}-table-shape-col`,onMouseEnter:()=>{o({x:v,y:d}),d+1===l[0]&&d+1<l[2]?g(r=>{const x=[...r];return x[0]=r[0]+1,x}):d+2<l[0]&&l[0]>e.tableShape[0]&&g(r=>{const x=[...r];return x[0]=r[0]-1,x}),v+1===l[1]&&v+1<l[3]?g(r=>{const x=[...r];return x[1]=r[1]+1,x}):v+2<l[1]&&l[1]>e.tableShape[1]&&g(r=>{const x=[...r];return x[1]=r[1]-1,x})},onClick:()=>{e.onSelected(n)},children:a.jsx("div",{className:[`${t.prefix}-table-shape-col-default`,v<=n.x&&d<=n.y&&`${t.prefix}-table-shape-col-include`].filter(r=>!!r).join(" ")})},`table-shape-col-${d}`))},`table-shape-row-${v}`))})},Ra=e=>{const{updateSetting:n}=e,{editorId:o}=c.useContext(V.EditorContext),i=c.useRef(t.globalConfig.editorExtensions.screenfull.instance),s=c.useRef(!1),l=c.useCallback(g=>{if(!i.current){m.bus.emit(o,m.ERROR_CATCHER,{name:"fullscreen",message:"fullscreen is undefined"});return}i.current.isEnabled?(s.current=!s.current,(g===void 0?!i.current.isFullscreen:g)?i.current.request():i.current.exit()):console.error("browser does not support screenfull!")},[o]);return c.useEffect(()=>{const g=()=>{n("fullscreen",s.current)};let b=-1;if(!i.current){const{editorExtensions:v,editorExtensionsAttrs:p}=t.globalConfig;b=requestAnimationFrame(()=>{var d;wa.appendHandler("script",{...(d=p.screenfull)==null?void 0:d.js,src:v.screenfull.js,id:W.CDN_IDS.screenfull,onload(){i.current=window.screenfull,i.current&&i.current.isEnabled&&i.current.on("change",g)}},"screenfull")})}return i.current&&i.current.isEnabled&&i.current.on("change",g),()=>{i.current||cancelAnimationFrame(b),i.current&&i.current.isEnabled&&i.current.off("change",g)}},[n]),c.useEffect(()=>(m.bus.on(o,{name:m.CHANGE_FULL_SCREEN,callback:l}),()=>{m.bus.remove(o,m.CHANGE_FULL_SCREEN,l)}),[o,l]),{fullscreenHandler:l}},Pa=(e,n)=>{const{editorId:o}=c.useContext(V.EditorContext),[i,s]=c.useState({type:"link",linkVisible:!1,clipVisible:!1}),l=c.useCallback(()=>{s(b=>({...b,linkVisible:!1,clipVisible:!1}))},[]),g=c.useCallback(b=>{b&&n(i.type,{desc:b.desc,url:b.url,transform:i.type==="image"}),l()},[n,i.type,l]);return c.useEffect(()=>{m.bus.on(o,{name:m.OPEN_MODALS,callback(v){s(p=>({...p,type:v,linkVisible:!0}))}});const b=()=>{m.bus.emit(o,m.UPLOAD_IMAGE,Array.from(e.current.files||[])),e.current.value=""};e.current.addEventListener("change",b)},[o,e]),{modalData:i,setModalData:s,onCancel:l,onOk:g}},Da=e=>{const[n,o]=c.useState({title:!1,catalog:!1,image:!1,table:!1,mermaid:!1,katex:!1}),i=c.useCallback(k=>{o(w=>({...w,title:k}))},[]),s=c.useCallback(()=>{o(k=>({...k,title:!1}))},[]),l=c.useCallback(k=>{o(w=>({...w,image:k}))},[]),g=c.useCallback(()=>{o(k=>({...k,image:!1}))},[]),b=c.useCallback(k=>{o(w=>({...w,table:k}))},[]),v=c.useCallback(k=>{e("table",{selectedShape:k})},[e]),p=c.useCallback(k=>{o(w=>({...w,mermaid:k}))},[]),d=c.useCallback(()=>{o(k=>({...k,mermaid:!1}))},[]),r=c.useCallback(k=>{o(w=>({...w,katex:k}))},[]),x=c.useCallback(()=>{o(k=>({...k,katex:!1}))},[]);return{visible:n,onTitleChange:i,onTitleClose:s,onImageChange:l,onImageClose:g,onTableChange:b,onTableSelected:v,onMermaidChange:p,onMermaidClose:d,onKatexChange:r,onKatexClose:x}};let Ma=0;const Oa=e=>{var re,oe,ke,Q,Te,we,_,le,$e,Ee,Re,Pe,De,Me,Oe,Ve,Fe,He,_e,qe,Be,We,Ke,ze,Ge,Ue,Ze,Xe,Je,Ye,Qe,et,tt,at,rt,ot,lt,nt,it,st,ct,dt,mt,ut,ft,gt,bt,ht,xt,pt;const{toolbars:n,toolbarsExclude:o,updateSetting:i,codeTheme:s}=e,{editorId:l,usedLanguageText:g,theme:b,previewTheme:v,language:p,disabled:d}=c.useContext(V.EditorContext),r=g,[x]=c.useState(()=>`${l}-toolbar-wrapper`),k=c.useRef(null),w=c.useRef(null),h=c.useCallback((I,S)=>{if(d)return!1;m.bus.emit(l,m.REPLACE,I,S)},[d,l]),{fullscreenHandler:N}=Ra(e),{modalData:f,setModalData:C,onCancel:y,onOk:j}=Pa(w,h),{visible:T,onTitleChange:L,onTitleClose:A,onImageChange:F,onImageClose:G,onTableChange:q,onTableSelected:ue,onMermaidChange:fe,onMermaidClose:ge,onKatexChange:be,onKatexClose:he}=Da(h),xe=c.useMemo(()=>{var I,S,M,O,P,H,U,Z;return a.jsx(se.DropDown,{relative:`#${x}`,visible:T.title,onChange:L,overlay:a.jsxs("ul",{className:`${t.prefix}-menu`,onClick:A,role:"menu",children:[a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-title`,onClick:()=>{h("h1")},role:"menuitem",tabIndex:0,children:(I=r.titleItem)==null?void 0:I.h1}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-title`,onClick:()=>{h("h2")},role:"menuitem",tabIndex:0,children:(S=r.titleItem)==null?void 0:S.h2}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-title`,onClick:()=>{h("h3")},role:"menuitem",tabIndex:0,children:(M=r.titleItem)==null?void 0:M.h3}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-title`,onClick:()=>{h("h4")},role:"menuitem",tabIndex:0,children:(O=r.titleItem)==null?void 0:O.h4}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-title`,onClick:()=>{h("h5")},role:"menuitem",tabIndex:0,children:(P=r.titleItem)==null?void 0:P.h5}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-title`,onClick:()=>{h("h6")},role:"menuitem",tabIndex:0,children:(H=r.titleItem)==null?void 0:H.h6})]},"bar-title-overlay"),disabled:d,children:a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(U=r.toolbarTips)==null?void 0:U.title,children:[a.jsx(E.IconIns,{name:"title"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Z=r.toolbarTips)==null?void 0:Z.title})]},"bar-title-trigger")},"bar-title")},[x,T.title,L,A,(re=r.titleItem)==null?void 0:re.h1,(oe=r.titleItem)==null?void 0:oe.h2,(ke=r.titleItem)==null?void 0:ke.h3,(Q=r.titleItem)==null?void 0:Q.h4,(Te=r.titleItem)==null?void 0:Te.h5,(we=r.titleItem)==null?void 0:we.h6,(_=r.toolbarTips)==null?void 0:_.title,d,e.showToolbarName,h]),pe=c.useMemo(()=>{var I,S,M,O,P;return a.jsx(se.DropDown,{relative:`#${x}`,visible:T.image,onChange:F,overlay:a.jsxs("ul",{className:`${t.prefix}-menu`,onClick:G,role:"menu",children:[a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-image`,onClick:()=>{e.insertLinkDirect?h("image"):C(H=>({...H,type:"image",linkVisible:!0}))},role:"menuitem",tabIndex:0,children:(I=r.imgTitleItem)==null?void 0:I.link}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-image`,onClick:()=>{w.current.click()},role:"menuitem",tabIndex:0,children:(S=r.imgTitleItem)==null?void 0:S.upload}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-image`,onClick:()=>{C(H=>({...H,type:"image",clipVisible:!0}))},role:"menuitem",tabIndex:0,children:(M=r.imgTitleItem)==null?void 0:M.clip2upload})]},"bar-image-overlay"),disabled:d,children:a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(O=r.toolbarTips)==null?void 0:O.image,children:[a.jsx(E.IconIns,{name:"image"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(P=r.toolbarTips)==null?void 0:P.image})]},"bar-image-trigger")},"bar-image")},[x,T.image,F,G,(le=r.imgTitleItem)==null?void 0:le.link,($e=r.imgTitleItem)==null?void 0:$e.upload,(Ee=r.imgTitleItem)==null?void 0:Ee.clip2upload,(Re=r.toolbarTips)==null?void 0:Re.image,d,e.showToolbarName,e.insertLinkDirect,h,C]),Ce=c.useMemo(()=>{var I,S;return a.jsx(se.DropDown,{relative:`#${x}`,visible:T.table,onChange:q,disabled:d,overlay:a.jsx(Aa,{tableShape:e.tableShape,onSelected:ue},"bar-table-overlay"),children:a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(I=r.toolbarTips)==null?void 0:I.table,children:[a.jsx(E.IconIns,{name:"table"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(S=r.toolbarTips)==null?void 0:S.table})]},"bar-table-trigger")},"bar-table")},[x,T.table,q,d,e.tableShape,e.showToolbarName,ue,(Pe=r.toolbarTips)==null?void 0:Pe.table]),ve=c.useMemo(()=>{var I,S,M,O,P,H,U,Z,ne,ie;return a.jsx(se.DropDown,{relative:`#${x}`,visible:T.mermaid,onChange:fe,overlay:a.jsxs("ul",{className:`${t.prefix}-menu`,onClick:ge,role:"menu",children:[a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-mermaid`,onClick:()=>{h("flow")},role:"menuitem",tabIndex:0,children:(I=r.mermaid)==null?void 0:I.flow}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-mermaid`,onClick:()=>{h("sequence")},role:"menuitem",tabIndex:0,children:(S=r.mermaid)==null?void 0:S.sequence}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-mermaid`,onClick:()=>{h("gantt")},role:"menuitem",tabIndex:0,children:(M=r.mermaid)==null?void 0:M.gantt}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-mermaid`,onClick:()=>{h("class")},role:"menuitem",tabIndex:0,children:(O=r.mermaid)==null?void 0:O.class}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-mermaid`,onClick:()=>{h("state")},role:"menuitem",tabIndex:0,children:(P=r.mermaid)==null?void 0:P.state}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-mermaid`,onClick:()=>{h("pie")},role:"menuitem",tabIndex:0,children:(H=r.mermaid)==null?void 0:H.pie}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-mermaid`,onClick:()=>{h("relationship")},role:"menuitem",tabIndex:0,children:(U=r.mermaid)==null?void 0:U.relationship}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-mermaid`,onClick:()=>{h("journey")},role:"menuitem",tabIndex:0,children:(Z=r.mermaid)==null?void 0:Z.journey})]},"bar-mermaid-overlay"),disabled:d,children:a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(ne=r.toolbarTips)==null?void 0:ne.mermaid,children:[a.jsx(E.IconIns,{name:"mermaid"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(ie=r.toolbarTips)==null?void 0:ie.mermaid})]},"bar-mermaid-trigger")},"bar-mermaid")},[x,T.mermaid,fe,ge,(De=r.mermaid)==null?void 0:De.flow,(Me=r.mermaid)==null?void 0:Me.sequence,(Oe=r.mermaid)==null?void 0:Oe.gantt,(Ve=r.mermaid)==null?void 0:Ve.class,(Fe=r.mermaid)==null?void 0:Fe.state,(He=r.mermaid)==null?void 0:He.pie,(_e=r.mermaid)==null?void 0:_e.relationship,(qe=r.mermaid)==null?void 0:qe.journey,(Be=r.toolbarTips)==null?void 0:Be.mermaid,d,e.showToolbarName,h]),R=c.useMemo(()=>{var I,S,M,O;return a.jsx(se.DropDown,{relative:`#${x}`,visible:T.katex,onChange:be,overlay:a.jsxs("ul",{className:`${t.prefix}-menu`,onClick:he,role:"menu",children:[a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-katex`,onClick:()=>{h("katexInline")},role:"menuitem",tabIndex:0,children:(I=r.katex)==null?void 0:I.inline}),a.jsx("li",{className:`${t.prefix}-menu-item ${t.prefix}-menu-item-katex`,onClick:()=>{h("katexBlock")},role:"menuitem",tabIndex:0,children:(S=r.katex)==null?void 0:S.block})]},"bar-katex-overlay"),disabled:d,children:a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(M=r.toolbarTips)==null?void 0:M.katex,children:[a.jsx(E.IconIns,{name:"formula"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(O=r.toolbarTips)==null?void 0:O.katex})]},"bar-katex-trigger")},"bar-katex")},[x,T.katex,be,he,(We=r.katex)==null?void 0:We.inline,(Ke=r.katex)==null?void 0:Ke.block,(ze=r.toolbarTips)==null?void 0:ze.katex,d,e.showToolbarName,h]),Y=c.useCallback(I=>{var S,M,O,P,H,U,Z,ne,ie,Ct,vt,kt,Tt,wt,$t,Et,Nt,yt,It,jt,St,Lt,At,Rt,Pt,Dt,Mt,Ot,Vt,Ft,Ht,_t,qt,Bt,Wt,Kt,zt,Gt,Ut,Zt,Xt,Jt,Yt,Qt,ea,ta,aa,ra,oa,la;if(t.allToolbar.includes(I))switch(I){case"-":return a.jsx(Ia,{},`bar-${Ma++}`);case"bold":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(S=r.toolbarTips)==null?void 0:S.bold,onClick:()=>{h("bold")},children:[a.jsx(E.IconIns,{name:"bold"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(M=r.toolbarTips)==null?void 0:M.bold})]},"bar-bold");case"underline":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(O=r.toolbarTips)==null?void 0:O.underline,onClick:()=>{h("underline")},children:[a.jsx(E.IconIns,{name:"underline"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(P=r.toolbarTips)==null?void 0:P.underline})]},"bar-underline");case"italic":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(H=r.toolbarTips)==null?void 0:H.italic,onClick:()=>{h("italic")},children:[a.jsx(E.IconIns,{name:"italic"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(U=r.toolbarTips)==null?void 0:U.italic})]},"bar-italic");case"strikeThrough":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(Z=r.toolbarTips)==null?void 0:Z.strikeThrough,onClick:()=>{h("strikeThrough")},children:[a.jsx(E.IconIns,{name:"strike-through"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(ne=r.toolbarTips)==null?void 0:ne.strikeThrough})]},"bar-strikeThrough");case"title":return xe;case"sub":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(ie=r.toolbarTips)==null?void 0:ie.sub,onClick:()=>{h("sub")},children:[a.jsx(E.IconIns,{name:"sub"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Ct=r.toolbarTips)==null?void 0:Ct.sub})]},"bar-sub");case"sup":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(vt=r.toolbarTips)==null?void 0:vt.sup,onClick:()=>{h("sup")},children:[a.jsx(E.IconIns,{name:"sup"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(kt=r.toolbarTips)==null?void 0:kt.sup})]},"bar-sup");case"quote":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(Tt=r.toolbarTips)==null?void 0:Tt.quote,onClick:()=>{h("quote")},children:[a.jsx(E.IconIns,{name:"quote"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(wt=r.toolbarTips)==null?void 0:wt.quote})]},"bar-quote");case"unorderedList":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:($t=r.toolbarTips)==null?void 0:$t.unorderedList,onClick:()=>{h("unorderedList")},children:[a.jsx(E.IconIns,{name:"unordered-list"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Et=r.toolbarTips)==null?void 0:Et.unorderedList})]},"bar-unorderedList");case"orderedList":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(Nt=r.toolbarTips)==null?void 0:Nt.orderedList,onClick:()=>{h("orderedList")},children:[a.jsx(E.IconIns,{name:"ordered-list"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(yt=r.toolbarTips)==null?void 0:yt.orderedList})]},"bar-orderedList");case"task":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(It=r.toolbarTips)==null?void 0:It.task,onClick:()=>{h("task")},children:[a.jsx(E.IconIns,{name:"task"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(jt=r.toolbarTips)==null?void 0:jt.task})]},"bar-task");case"codeRow":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(St=r.toolbarTips)==null?void 0:St.codeRow,onClick:()=>{h("codeRow")},children:[a.jsx(E.IconIns,{name:"code-row"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Lt=r.toolbarTips)==null?void 0:Lt.codeRow})]},"bar-codeRow");case"code":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(At=r.toolbarTips)==null?void 0:At.code,onClick:()=>{h("code")},children:[a.jsx(E.IconIns,{name:"code"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Rt=r.toolbarTips)==null?void 0:Rt.code})]},"bar-code");case"link":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(Pt=r.toolbarTips)==null?void 0:Pt.link,onClick:()=>{if(d)return!1;e.insertLinkDirect?h("link"):C({...f,type:"link",linkVisible:!0})},children:[a.jsx(E.IconIns,{name:"link"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Dt=r.toolbarTips)==null?void 0:Dt.link})]},"bar-link");case"image":return e.noUploadImg?a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(Mt=r.toolbarTips)==null?void 0:Mt.image,onClick:()=>{if(d)return!1;e.insertLinkDirect?h("image"):C(B=>({...B,type:"image",linkVisible:!0}))},children:[a.jsx(E.IconIns,{name:"image"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Ot=r.toolbarTips)==null?void 0:Ot.image})]},"bar-image-no-upload"):pe;case"table":return Ce;case"revoke":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(Vt=r.toolbarTips)==null?void 0:Vt.revoke,onClick:()=>{if(d)return!1;m.bus.emit(l,m.CTRL_Z)},children:[a.jsx(E.IconIns,{name:"revoke"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Ft=r.toolbarTips)==null?void 0:Ft.revoke})]},"bar-revoke");case"next":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(Ht=r.toolbarTips)==null?void 0:Ht.next,onClick:()=>{if(d)return!1;m.bus.emit(l,m.CTRL_SHIFT_Z)},children:[a.jsx(E.IconIns,{name:"next"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(_t=r.toolbarTips)==null?void 0:_t.next})]},"bar-next");case"save":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(qt=r.toolbarTips)==null?void 0:qt.save,onClick:()=>{if(d)return!1;m.bus.emit(l,m.ON_SAVE)},children:[a.jsx(E.IconIns,{name:"save"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Bt=r.toolbarTips)==null?void 0:Bt.save})]},"bar-save");case"prettier":return e.noPrettier?"":a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(Wt=r.toolbarTips)==null?void 0:Wt.prettier,onClick:()=>{h("prettier")},children:[a.jsx(E.IconIns,{name:"prettier"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Kt=r.toolbarTips)==null?void 0:Kt.prettier})]},"bar-prettier");case"pageFullscreen":return!e.setting.fullscreen&&a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,e.setting.pageFullscreen&&`${t.prefix}-toolbar-active`,d&&`${t.prefix}-disabled`]),title:(zt=r.toolbarTips)==null?void 0:zt.pageFullscreen,onClick:()=>{if(d)return!1;i("pageFullscreen")},children:[a.jsx(E.IconIns,{name:e.setting.pageFullscreen?"minimize":"maximize"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Gt=r.toolbarTips)==null?void 0:Gt.pageFullscreen})]},"bar-pageFullscreen");case"fullscreen":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,e.setting.fullscreen&&`${t.prefix}-toolbar-active`,d&&`${t.prefix}-disabled`]),title:(Ut=r.toolbarTips)==null?void 0:Ut.fullscreen,onClick:()=>{if(d)return!1;N()},children:[a.jsx(E.IconIns,{name:e.setting.fullscreen?"fullscreen-exit":"fullscreen"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Zt=r.toolbarTips)==null?void 0:Zt.fullscreen})]},"bar-fullscreen");case"catalog":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,e.catalogVisible&&`${t.prefix}-toolbar-active`,d&&`${t.prefix}-disabled`]),title:(Xt=r.toolbarTips)==null?void 0:Xt.catalog,onClick:()=>{if(d)return!1;m.bus.emit(l,m.CHANGE_CATALOG_VISIBLE)},children:[a.jsx(E.IconIns,{name:"catalog"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Jt=r.toolbarTips)==null?void 0:Jt.catalog})]},"bar-catalog");case"preview":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,e.setting.preview&&`${t.prefix}-toolbar-active`,d&&`${t.prefix}-disabled`]),title:(Yt=r.toolbarTips)==null?void 0:Yt.preview,onClick:()=>{if(d)return!1;i("preview")},children:[a.jsx(E.IconIns,{name:"preview"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(Qt=r.toolbarTips)==null?void 0:Qt.preview})]},"bar-preview");case"previewOnly":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,e.setting.previewOnly&&`${t.prefix}-toolbar-active`,d&&`${t.prefix}-disabled`]),title:(ea=r.toolbarTips)==null?void 0:ea.previewOnly,onClick:()=>{if(d)return!1;i("previewOnly")},children:[a.jsx(E.IconIns,{name:"preview-only"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(ta=r.toolbarTips)==null?void 0:ta.previewOnly})]},"bar-preview-only");case"htmlPreview":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,e.setting.htmlPreview&&`${t.prefix}-toolbar-active`,d&&`${t.prefix}-disabled`]),title:(aa=r.toolbarTips)==null?void 0:aa.htmlPreview,onClick:()=>{if(d)return!1;i("htmlPreview")},children:[a.jsx(E.IconIns,{name:"preview-html"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(ra=r.toolbarTips)==null?void 0:ra.htmlPreview})]},"bar-htmlPreview");case"github":return a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar-item`,d&&`${t.prefix}-disabled`]),title:(oa=r.toolbarTips)==null?void 0:oa.github,onClick:()=>{if(d)return!1;Se.linkTo("https://github.com/imzbf/md-editor-rt")},children:[a.jsx(E.IconIns,{name:"github"}),e.showToolbarName&&a.jsx("div",{className:`${t.prefix}-toolbar-item-name`,children:(la=r.toolbarTips)==null?void 0:la.github})]},"bar-github");case"mermaid":return ve;case"katex":return R}else if(e.defToolbars){const B=e.defToolbars[I];return B?c.cloneElement(B,{theme:B.props.theme||b,codeTheme:B.props.codeTheme||s,previewTheme:B.props.previewTheme||v,language:B.props.language||p,disabled:B.props.disabled||d,showToolbarName:B.props.showToolbarName||e.showToolbarName,insert(va){m.bus.emit(l,m.REPLACE,"universal",{generate:va})}}):""}else return""},[e,d,(Ge=r.toolbarTips)==null?void 0:Ge.bold,(Ue=r.toolbarTips)==null?void 0:Ue.underline,(Ze=r.toolbarTips)==null?void 0:Ze.italic,(Xe=r.toolbarTips)==null?void 0:Xe.strikeThrough,(Je=r.toolbarTips)==null?void 0:Je.sub,(Ye=r.toolbarTips)==null?void 0:Ye.sup,(Qe=r.toolbarTips)==null?void 0:Qe.quote,(et=r.toolbarTips)==null?void 0:et.unorderedList,(tt=r.toolbarTips)==null?void 0:tt.orderedList,(at=r.toolbarTips)==null?void 0:at.task,(rt=r.toolbarTips)==null?void 0:rt.codeRow,(ot=r.toolbarTips)==null?void 0:ot.code,(lt=r.toolbarTips)==null?void 0:lt.link,(nt=r.toolbarTips)==null?void 0:nt.image,(it=r.toolbarTips)==null?void 0:it.revoke,(st=r.toolbarTips)==null?void 0:st.next,(ct=r.toolbarTips)==null?void 0:ct.save,(dt=r.toolbarTips)==null?void 0:dt.prettier,(mt=r.toolbarTips)==null?void 0:mt.pageFullscreen,(ut=r.toolbarTips)==null?void 0:ut.fullscreen,(ft=r.toolbarTips)==null?void 0:ft.catalog,(gt=r.toolbarTips)==null?void 0:gt.preview,(bt=r.toolbarTips)==null?void 0:bt.previewOnly,(ht=r.toolbarTips)==null?void 0:ht.htmlPreview,(xt=r.toolbarTips)==null?void 0:xt.github,h,xe,C,f,pe,Ce,l,i,N,ve,R,b,s,v,p]),ae=c.useMemo(()=>{const I=n.filter(P=>!o.includes(P)),S=I.indexOf("="),M=S===-1?I:I.slice(0,S+1),O=S===-1?[]:I.slice(S,Number.MAX_SAFE_INTEGER);return[M.map(P=>Y(P)),O.map(P=>Y(P))]},[n,o,Y]);return c.useEffect(()=>{let I=()=>{};return k.current&&(I=Se.draggingScroll(k.current)),()=>{I()}},[n]),a.jsxs(a.Fragment,{children:[n.length>0&&a.jsx("div",{className:`${t.prefix}-toolbar-wrapper`,ref:k,id:x,children:a.jsxs("div",{className:$.classnames([`${t.prefix}-toolbar`,e.showToolbarName&&`${t.prefix}-stn`]),children:[a.jsx("div",{className:`${t.prefix}-toolbar-left`,children:ae[0]}),a.jsx("div",{className:`${t.prefix}-toolbar-right`,children:ae[1]})]})}),a.jsx("label",{htmlFor:`${x}_label`,style:{display:"none"},"aria-label":(pt=r.imgTitleItem)==null?void 0:pt.upload}),a.jsx("input",{id:`${x}_label`,ref:w,accept:"image/*",type:"file",multiple:!0,style:{display:"none"}}),a.jsx(La,{linkVisible:f.linkVisible,clipVisible:f.clipVisible,type:f.type,onCancel:y,onOk:j})]})},Va=c.memo(Oa),Fa=(e,n,o)=>{const{editorId:i}=c.useContext(V.EditorContext),[s,l]=c.useState({clear(){},init(){}});c.useEffect(()=>{var d;const g=(d=o.current)==null?void 0:d.view.contentDOM.getRootNode(),b=g.querySelector(`#${i} .cm-scroller`),v=g.querySelector(`[id="${i}-preview-wrapper"]`),p=g.querySelector(`[id="${i}-html-wrapper"]`);if(v||p){const r=v?Le.scrollAuto:Le.scrollAutoWithScale,x=v||p,[k,w]=r(b,x,o.current);l({init:k,clear:w})}},[n,e.setting.fullscreen,e.setting.pageFullscreen,e.setting.preview,e.setting.htmlPreview,i,o]),c.useEffect(()=>(e.scrollAuto&&!e.setting.previewOnly&&(e.setting.preview||e.setting.htmlPreview)?s.init():s.clear(),()=>{s.clear()}),[s,e.scrollAuto,e.setting.preview,e.setting.htmlPreview,e.setting.previewOnly])},ye=async(e,n,o)=>{if(/^h[1-6]$/.test(e))return Ha(e,n);if(e==="prettier")return await _a(n,o);switch(e){case"bold":case"underline":case"italic":case"strikeThrough":case"sub":case"sup":case"codeRow":case"katexInline":case"katexBlock":return Ba(e,n);case"quote":case"orderedList":case"unorderedList":case"task":return Ka(e,n);case"code":return za(o,n);case"table":return Za(o);case"link":{const{desc:i="",url:s=""}=o,l=`[${i}](${s})`;return{text:l,options:{select:s==="",deviationStart:l.length-s.length-1,deviationEnd:-1}}}case"image":return Ua(o);case"flow":case"sequence":case"gantt":case"class":case"state":case"pie":case"relationship":case"journey":return Ga(e);case"universal":return Xa(n.getSelectedText(),o);default:return{text:"",options:{}}}},Ha=(e,n)=>{const o=e.slice(1),i="#".repeat(Number(o)),[s,l,g]=Ae(n,{wholeLine:!0});return{text:`${i} ${s}`,options:{deviationStart:i.length+1,replaceStart:l,replaceEnd:g}}},_a=async(e,n)=>{var s,l,g;const o=window.prettier||((s=t.globalConfig.editorExtensions.prettier)==null?void 0:s.prettierInstance),i=[((l=window.prettierPlugins)==null?void 0:l.markdown)||((g=t.globalConfig.editorExtensions.prettier)==null?void 0:g.parserMarkdownInstance)];return!o||!i[0]?(m.bus.emit(n.editorId,m.ERROR_CATCHER,{name:"prettier",message:"prettier is undefined"}),{text:e.getValue(),options:{select:!1,replaceAll:!0}}):{text:await o.format(e.getValue(),{parser:"markdown",plugins:i}),options:{select:!1,replaceAll:!0}}},qa={bold:["**","**",2,-2],underline:["<u>","</u>",3,-4],italic:["*","*",1,-1],strikeThrough:["~~","~~",2,-2],sub:["~","~",1,-1],sup:["^","^",1,-1],codeRow:["`","`",1,-1],katexInline:["$","$",1,-1],katexBlock:[`
$$
`,`
$$
`,4,-4]},Ba=(e,n)=>{const o=n.getSelectedText(),[i,s,l,g]=qa[e];return{text:`${i}${o}${s}`,options:{deviationStart:l,deviationEnd:g}}},Wa={quote:"> ",unorderedList:"- ",orderedList:1,task:"- [ ] "},Ka=(e,n)=>{const[o,i,s]=Ae(n,{wholeLine:!0}),l=o.split(`
`),g=Wa[e],b=e==="orderedList"?l.map((d,r)=>`${g+r}. ${d}`):l.map(d=>`${g}${d}`),v=e==="orderedList"?"1. ":g.toString(),p=l.length===1?v.length:0;return{text:b.join(`
`),options:{deviationStart:p,replaceStart:i,replaceEnd:s}}},za=(e,n)=>{const[o,i,s]=Ae(n),l=e.mode||"language",g=`
\`\`\`${l}
${e.text||o||""}
\`\`\`
`;return{text:g,options:{deviationStart:4,deviationEnd:4+l.length-g.length,replaceStart:i,replaceEnd:s}}},Ga=e=>({text:`
\`\`\`mermaid
${{flow:`flowchart TD
Start --> Stop`,sequence:`sequenceDiagram
A->>B: hello!
B-->>A: hi!`,gantt:`gantt
title Gantt Chart
dateFormat YYYY-MM-DD`,class:`classDiagram
class Animal`,state:`stateDiagram-v2
s1 --> s2`,pie:`pie
"Dogs" : 386
"Cats" : 85
"Rats" : 15`,relationship:`erDiagram
CAR ||--o{ NAMED-DRIVER : allows`,journey:`journey
title My Journey`,...t.globalConfig.editorConfig.mermaidTemplate}[e]}
\`\`\`
`,options:{deviationStart:12,deviationEnd:-5}}),Ua=e=>{const{desc:n="",url:o="",urls:i}=e;let s="";const l=o===""&&(!i||i instanceof Array&&i.length===0);return i instanceof Array?s=i.reduce((g,b)=>{const{url:v="",alt:p="",title:d=""}=typeof b=="object"?b:{url:b};return g+`
`},""):s=`
`,{text:s,options:{select:o==="",deviationStart:l?s.length-o.length-2:s.length,deviationEnd:l?-2:0}}},Za=e=>{const{selectedShape:n={x:1,y:1}}=e,{x:o,y:i}=n;let s=`
| Column`;for(let l=0;l<=i;l++)s+=" |";s+=`
|`;for(let l=0;l<=i;l++)s+=" - |";for(let l=0;l<=o;l++){s+=`
|`;for(let g=0;g<=i;g++)s+=" |"}return s+=`
`,{text:s,options:{deviationStart:3,deviationEnd:10-s.length}}},Xa=(e,n)=>{const{generate:o}=n,i=o(e);return{text:i.targetValue,options:{select:i.select??!0,deviationStart:i.deviationStart||0,deviationEnd:i.deviationEnd||0}}},Ae=(e,n={wholeLine:!1})=>{const o=e.view.state,i=o.selection.main;if(i.empty){const s=o.doc.lineAt(i.from);return[o.doc.lineAt(i.from).text,s.from,s.to]}else if(n.wholeLine){const s=o.doc.lineAt(i.from),l=o.doc.lineAt(i.to);return[o.doc.sliceString(s.from,l.to),s.from,l.to]}return[o.doc.sliceString(i.from,i.to),i.from,i.to]},ee=e=>{const n=new D.Compartment;return i=>(n.get(e.state)?e.dispatch({effects:n.reconfigure(i)}):e.dispatch({effects:D.StateEffect.appendConfig.of(n.of(i))}),!0)};class Ja{constructor(n){K(this,"view");K(this,"maxLength",Number.MAX_SAFE_INTEGER);K(this,"toggleTabSize");K(this,"togglePlaceholder");K(this,"setExtensions");K(this,"toggleDisabled");K(this,"toggleReadOnly");K(this,"toggleMaxlength");this.view=n,this.toggleTabSize=ee(this.view),this.togglePlaceholder=ee(this.view),this.setExtensions=ee(this.view),this.toggleDisabled=ee(this.view),this.toggleReadOnly=ee(this.view),this.toggleMaxlength=ee(this.view)}getValue(){return this.view.state.doc.toString()}setValue(n,o=0,i=this.view.state.doc.length){this.view.dispatch({changes:{from:o,to:i,insert:n}})}getSelectedText(){const{from:n,to:o}=this.view.state.selection.main;return this.view.state.sliceDoc(n,o)}replaceSelectedText(n,o,i){const s={select:!0,deviationStart:0,deviationEnd:0,replaceAll:!1,replaceStart:-1,replaceEnd:-1,...o};try{if(s.replaceAll){if(this.setValue(n),n.length>this.maxLength)throw new Error("The input text is too long");return}if(this.view.state.doc.length-this.getSelectedText().length+n.length>this.maxLength)throw new Error("The input text is too long");const{from:l}=this.view.state.selection.main;s.replaceStart!==-1?this.view.dispatch({changes:{from:s.replaceStart,to:s.replaceEnd,insert:n}}):this.view.dispatch(this.view.state.replaceSelection(n)),s.select&&this.view.dispatch({selection:{anchor:s.replaceStart===-1?l+s.deviationStart:s.replaceStart+s.deviationStart,head:s.replaceStart===-1?l+n.length+s.deviationEnd:s.replaceStart+n.length+s.deviationEnd}}),this.view.focus()}catch(l){if(l.message==="The input text is too long")m.bus.emit(i,m.ERROR_CATCHER,{name:"overlength",message:l.message,data:n});else throw l}}setTabSize(n){this.toggleTabSize([D.EditorState.tabSize.of(n),me.indentUnit.of(" ".repeat(n))])}setPlaceholder(n){this.togglePlaceholder(te.placeholder(n))}focus(n){if(this.view.focus(),!n)return;let o=0,i=0,s=0;switch(n){case"start":break;case"end":{o=i=s=this.getValue().length;break}default:o=n.rangeAnchor||n.cursorPos,i=n.rangeHead||n.cursorPos,s=n.cursorPos}this.view.dispatch({scrollIntoView:!0,selection:D.EditorSelection.create([D.EditorSelection.range(o,i),D.EditorSelection.cursor(s)],1)})}setDisabled(n){this.toggleDisabled([te.EditorView.editable.of(!n)])}setReadOnly(n){this.toggleReadOnly([D.EditorState.readOnly.of(n)])}setMaxLength(n){this.maxLength=n,this.toggleMaxlength([D.EditorState.changeFilter.of(o=>o.newDoc.length<=n)])}}const Ya="#e5c07b",na="var(--md-color)",Qa="#56b6c2",er="#ffffff",ce="var(--md-color)",ia="#e5c07b",tr="#e5c07b",ar="var(--md-color)",sa="#d19a66",rr="#c678dd",or="#21252b",lr="#2c313a",ca="var(--md-bk-color)",Ie="var(--md-bk-color)",nr="#ceedfa33",da="#528bff",ir=te.EditorView.theme({"&":{color:ce,backgroundColor:ca},".cm-content":{caretColor:da},".cm-cursor, .cm-dropCursor":{borderLeftColor:da},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:nr},".cm-panels":{backgroundColor:or,color:ce},".cm-panels.cm-panels-top":{borderBottom:"1px solid var(--md-border-color)"},".cm-panels.cm-panels-bottom":{borderTop:"1px solid var(--md-border-color)"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#ceedfa33"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:ca,color:ce,borderRight:"1px solid",borderColor:"var(--md-border-color)"},".cm-activeLineGutter":{backgroundColor:lr},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"1px solid var(--md-border-color)",backgroundColor:Ie},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Ie,borderBottomColor:Ie},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{color:ce}}},{dark:!0}),sr=me.HighlightStyle.define([{tag:u.tags.keyword,color:rr},{tag:[u.tags.name,u.tags.deleted,u.tags.character,u.tags.propertyName,u.tags.macroName],color:na},{tag:[u.tags.function(u.tags.variableName),u.tags.labelName],color:tr},{tag:[u.tags.color,u.tags.constant(u.tags.name),u.tags.standard(u.tags.name)],color:sa},{tag:[u.tags.definition(u.tags.name),u.tags.separator],color:ce},{tag:[u.tags.typeName,u.tags.className,u.tags.number,u.tags.changed,u.tags.annotation,u.tags.modifier,u.tags.self,u.tags.namespace],color:Ya},{tag:[u.tags.operator,u.tags.operatorKeyword,u.tags.url,u.tags.escape,u.tags.regexp,u.tags.link,u.tags.special(u.tags.string)],color:Qa},{tag:[u.tags.meta,u.tags.comment],color:ia},{tag:u.tags.strong,fontWeight:"bold"},{tag:u.tags.emphasis,fontStyle:"italic"},{tag:u.tags.strikethrough,textDecoration:"line-through"},{tag:u.tags.link,color:ia,textDecoration:"underline"},{tag:u.tags.heading,fontWeight:"bold",color:na},{tag:[u.tags.atom,u.tags.bool,u.tags.special(u.tags.variableName)],color:sa},{tag:[u.tags.processingInstruction,u.tags.string,u.tags.inserted],color:ar},{tag:u.tags.invalid,color:er}]),ma=[ir,me.syntaxHighlighting(sr)],cr="#e5c07b",ua="var(--md-color)",dr="#56b6c2",mr="#fff",de="#3f4a54",fa="#2d8cf0",ur="#2d8cf0",fr="#3f4a54",ga="#d19a66",gr="#c678dd",br="#f6f6f6",hr="#ceedfa33",ba="var(--md-bk-color)",je="var(--md-bk-color)",xr="#bad5fa",ha="#3f4a54",pr=te.EditorView.theme({"&":{color:de,backgroundColor:ba},".cm-content":{caretColor:ha},".cm-cursor, .cm-dropCursor":{borderLeftColor:ha},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:xr},".cm-panels":{backgroundColor:br,color:de},".cm-panels.cm-panels-top":{borderBottom:"1px solid var(--md-border-color)"},".cm-panels.cm-panels-bottom":{borderTop:"1px solid var(--md-border-color)"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#ceedfa33"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:ba,color:de,borderRight:"1px solid",borderColor:"var(--md-border-color)"},".cm-activeLineGutter":{backgroundColor:hr},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"1px solid var(--md-border-color)",backgroundColor:je},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:je,borderBottomColor:je},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{color:de}}}),Cr=me.HighlightStyle.define([{tag:u.tags.keyword,color:gr},{tag:[u.tags.name,u.tags.deleted,u.tags.character,u.tags.propertyName,u.tags.macroName],color:ua},{tag:[u.tags.function(u.tags.variableName),u.tags.labelName],color:ur},{tag:[u.tags.color,u.tags.constant(u.tags.name),u.tags.standard(u.tags.name)],color:ga},{tag:[u.tags.definition(u.tags.name),u.tags.separator],color:de},{tag:[u.tags.typeName,u.tags.className,u.tags.number,u.tags.changed,u.tags.annotation,u.tags.modifier,u.tags.self,u.tags.namespace],color:cr},{tag:[u.tags.operator,u.tags.operatorKeyword,u.tags.url,u.tags.escape,u.tags.regexp,u.tags.link,u.tags.special(u.tags.string)],color:dr},{tag:[u.tags.meta,u.tags.comment],color:fa},{tag:u.tags.strong,fontWeight:"bold"},{tag:u.tags.emphasis,fontStyle:"italic"},{tag:u.tags.strikethrough,textDecoration:"line-through"},{tag:u.tags.link,color:fa,textDecoration:"underline"},{tag:u.tags.heading,fontWeight:"bold",color:ua},{tag:[u.tags.atom,u.tags.bool,u.tags.special(u.tags.variableName)],color:ga},{tag:[u.tags.processingInstruction,u.tags.string,u.tags.inserted],color:fr},{tag:u.tags.invalid,color:mr}]),xa=[pr,me.syntaxHighlighting(Cr)],Ne=(e,n,o,i,s)=>(l,g,b,v)=>{const p=`${e}${n}${o}${i}`,d=b+g.label.length+(s==="title"?o.length:0);l.dispatch({changes:{from:b,to:v,insert:p},selection:D.EditorSelection.create([D.EditorSelection.range(b+g.label.length+(s==="title"?1:-n.length),d),D.EditorSelection.cursor(d)],1)}),l.focus()},pa=e=>(n,o,i,s)=>{const l=e.slice(s-i);n.dispatch(n.state.replaceSelection(`${l} `))},Ca=e=>{const n=o=>{const i=o.matchBefore(/^#+|^-\s*\[*\s*\]*|`+|\[|!\[*|^\|\s?\|?|\$\$?|!+\s*\w*/);return i===null||i.from==i.to&&o.explicit?null:{from:i.from,options:[...["h2","h3","h4","h5","h6"].map((s,l)=>{const g=new Array(l+2).fill("#").join("");return{label:g,type:"text",apply:pa(g)}}),...["unchecked","checked"].map(s=>{const l=s==="checked"?"- [x]":"- [ ]";return{label:l,type:"text",apply:pa(l)}}),...[["`",""],["```","language"],["```mermaid\n",""]].map(s=>({label:`${s[0]}${s[1]}`,type:"text",apply:Ne(s[0],s[1],"",s[0]==="`"?"`":"\n```","type")})),{label:"[]()",type:"text"},{label:"![]()",type:"text"},{label:"| |",type:"text",detail:"table",apply:`| col | col | col |
| - | - | - |
| content | content | content |
| content | content | content |`},{label:"$",type:"text",apply:Ne("$","","","$","type")},{label:"$$",type:"text",apply:Ne("$$","",`
`,`
$$`,"title")},...["note","abstract","info","tip","success","question","warning","failure","danger","bug","example","quote","hint","caution","error","attention"].map(s=>({label:`!!! ${s}`,type:"text",apply:Ne("!!!",` ${s}`," Title",`
!!!`,"title")}))]}};return Na.autocompletion({override:e?[n,...e]:[n]})},vr=(e,n)=>{const o={key:"Ctrl-b",mac:"Cmd-b",run:()=>(m.bus.emit(e,m.REPLACE,"bold"),!0)},i={key:"Ctrl-s",mac:"Cmd-s",run:j=>(m.bus.emit(e,m.ON_SAVE,j.state.doc.toString()),!0),shift:()=>(m.bus.emit(e,m.REPLACE,"strikeThrough"),!0)},s={key:"Ctrl-u",mac:"Cmd-u",preventDefault:!0,run:()=>(m.bus.emit(e,m.REPLACE,"underline"),!0),shift:()=>(m.bus.emit(e,m.REPLACE,"unorderedList"),!0)},l={key:"Ctrl-i",mac:"Cmd-i",preventDefault:!0,run:()=>(m.bus.emit(e,m.REPLACE,"italic"),!0),shift:()=>(m.bus.emit(e,m.OPEN_MODALS,"image"),!0)},g={key:"Ctrl-1",mac:"Cmd-1",run:()=>(m.bus.emit(e,m.REPLACE,"h1"),!0)},b={key:"Ctrl-2",mac:"Cmd-2",run:()=>(m.bus.emit(e,m.REPLACE,"h2"),!0)},v={key:"Ctrl-3",mac:"Cmd-3",run:()=>(m.bus.emit(e,m.REPLACE,"h3"),!0)},p={key:"Ctrl-4",mac:"Cmd-4",run:()=>(m.bus.emit(e,m.REPLACE,"h4"),!0)},d={key:"Ctrl-5",mac:"Cmd-5",run:()=>(m.bus.emit(e,m.REPLACE,"h5"),!0)},r={key:"Ctrl-6",mac:"Cmd-6",run:()=>(m.bus.emit(e,m.REPLACE,"h6"),!0)},x={key:"Ctrl-ArrowUp",mac:"Cmd-ArrowUp",run:()=>(m.bus.emit(e,m.REPLACE,"sup"),!0)},k={key:"Ctrl-ArrowDown",mac:"Cmd-ArrowDown",run:()=>(m.bus.emit(e,m.REPLACE,"sub"),!0)},w={key:"Ctrl-o",mac:"Cmd-o",run:()=>(m.bus.emit(e,m.REPLACE,"orderedList"),!0)},h={key:"Ctrl-c",mac:"Cmd-c",shift:()=>(m.bus.emit(e,m.REPLACE,"code"),!0),any(j,T){return(T.ctrlKey||T.metaKey)&&T.altKey&&T.code==="KeyC"?(m.bus.emit(e,m.REPLACE,"codeRow"),!0):!1}},N={key:"Ctrl-l",mac:"Cmd-l",run:()=>(m.bus.emit(e,m.OPEN_MODALS,"link"),!0)},f={key:"Ctrl-f",mac:"Cmd-f",shift:()=>n.noPrettier?!1:(m.bus.emit(e,m.REPLACE,"prettier"),!0)},C={any:(j,T)=>(T.ctrlKey||T.metaKey)&&T.altKey&&T.shiftKey&&T.code==="KeyT"?(m.bus.emit(e,m.REPLACE,"table"),!0):!1},y={key:"Ctrl-d",mac:"Cmd-d",run:X.deleteLine,preventDefault:!0};return[o,y,i,s,l,g,b,v,p,d,r,x,k,w,h,N,f,C,...ya.searchKeymap]},kr=(e,n)=>{const{editorId:o}=c.useContext(V.EditorContext),i=c.useCallback(l=>{l instanceof Promise?l.then(g=>{m.bus.emit(o,m.REPLACE,"universal",{generate(){return{targetValue:g}}})}).catch(g=>{console.error(g)}):m.bus.emit(o,m.REPLACE,"universal",{generate(){return{targetValue:l}}})},[o]);return c.useCallback(l=>{var x,k,w;if(!l.clipboardData)return;if(l.clipboardData.files.length>0){const{files:h}=l.clipboardData;m.bus.emit(o,m.UPLOAD_IMAGE,Array.from(h).filter(N=>/image\/.*/.test(N.type))),l.preventDefault();return}const g=l.clipboardData.getData("text/plain"),b=((x=n.current)==null?void 0:x.view.state.selection.main.to)||0,v=((k=n.current)==null?void 0:k.view.state.doc.lineAt(b).from)||0,p=((w=n.current)==null?void 0:w.view.state.doc.sliceString(v,b))||"",d=/!\[.*\]\(\s*$/.test(p),r=/!\[.*\]\((.*)\s?.*\)/.test(g);if(d){const h=e.transformImgUrl(g);i(h),l.preventDefault();return}else if(r){const h=g.match(new RegExp(`(?<=!\\[.*\\]\\()([^)\\s]+)(?=\\s?["']?.*["']?\\))`,"g"));h?Promise.all(h.map(N=>e.transformImgUrl(N))).then(N=>{i(N.reduce((f,C,y)=>f.replace(h[y],C),g))}):i(g),l.preventDefault();return}if(e.autoDetectCode&&l.clipboardData.types.includes("vscode-editor-data")){const h=JSON.parse(l.clipboardData.getData("vscode-editor-data"));m.bus.emit(o,m.REPLACE,"code",{mode:h.mode,text:l.clipboardData.getData("text/plain")}),l.preventDefault();return}e.maxLength&&g.length+e.modelValue.length>e.maxLength&&m.bus.emit(o,m.ERROR_CATCHER,{name:"overlength",message:"The input text is too long",data:g})},[n,o,i,e])};J.EditorView.EDIT_CONTEXT=!1;const Tr=e=>{const{tabWidth:n,editorId:o,theme:i}=c.useContext(V.EditorContext),s=c.useRef(null),l=c.useRef(),g=c.useRef(!0),[b]=c.useState(()=>({language:new D.Compartment,theme:new D.Compartment,autocompletion:new D.Compartment,update:new D.Compartment,domEvent:new D.Compartment,history:new D.Compartment})),[v]=c.useState(()=>vr(o,e)),p=c.useCallback(()=>[...v,...X.defaultKeymap,...X.historyKeymap,X.indentWithTab],[v]),d=kr(e,l),[r,x]=c.useState({}),k=c.useMemo(()=>{const f={paste:d,blur:e.onBlur,focus:e.onFocus,drop:e.onDrop,input:j=>{e.onInput&&e.onInput(j);const{data:T}=j;e.maxLength&&e.modelValue.length+T.length>e.maxLength&&m.bus.emit(o,m.ERROR_CATCHER,{name:"overlength",message:"The input text is too long",data:T})}},C={...f},y=Object.keys(f);for(const j in r){const T=j;y.includes(T)?C[T]=(L,A)=>{r[T](L,A),L.defaultPrevented||f[T](L,A)}:C[T]=r[T]}return C},[r,o,d,e]),[w]=c.useState(()=>[te.keymap.of(p()),b.history.of(X.history()),b.language.of(Ea.markdown({codeLanguages:$a.languages})),J.EditorView.lineWrapping,b.update.of(J.EditorView.updateListener.of(f=>{f.docChanged&&e.onChange(f.state.doc.toString())})),b.domEvent.of(J.EditorView.domEventHandlers(k)),te.drawSelection()]),[h]=c.useState(()=>t.globalConfig.codeMirrorExtensions(i,[...w,b.theme.of(i==="light"?xa:ma),b.autocompletion.of(Ca(e.comple