@alxgrn/prose-editor 0.0.11 → 0.0.13
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/prose-editor.umd.js
CHANGED
|
@@ -62,5 +62,5 @@ Check the top-level render call using <`+x+">."),O}var E=m,P=Symbol.for("react.t
|
|
|
62
62
|
*
|
|
63
63
|
* This source code is licensed under the MIT license found in the
|
|
64
64
|
* LICENSE file in the root directory of this source tree.
|
|
65
|
-
*/var Du;function Zy(){return Du||(Du=1,process.env.NODE_ENV!=="production"&&function(){function n(s){var i=s,l=s;if(s.alternate)for(;i.return;)i=i.return;else{s=i;do i=s,i.flags&4098&&(l=i.return),s=i.return;while(s)}return i.tag===3?l:null}function e(s){if(n(s)!==s)throw Error("Unable to find node on an unmounted component.")}function t(s){var i=s.alternate;if(!i){if(i=n(s),i===null)throw Error("Unable to find node on an unmounted component.");return i!==s?null:s}for(var l=s,a=i;;){var c=l.return;if(c===null)break;var u=c.alternate;if(u===null){if(a=c.return,a!==null){l=a;continue}break}if(c.child===u.child){for(u=c.child;u;){if(u===l)return e(c),s;if(u===a)return e(c),i;u=u.sibling}throw Error("Unable to find node on an unmounted component.")}if(l.return!==a.return)l=c,a=u;else{for(var f=!1,d=c.child;d;){if(d===l){f=!0,l=c,a=u;break}if(d===a){f=!0,a=c,l=u;break}d=d.sibling}if(!f){for(d=u.child;d;){if(d===l){f=!0,l=u,a=c;break}if(d===a){f=!0,a=u,l=c;break}d=d.sibling}if(!f)throw Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.")}}if(l.alternate!==a)throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.")}if(l.tag!==3)throw Error("Unable to find node on an unmounted component.");return l.stateNode.current===l?s:i}function r(s){var i=s.tag;if(i===5||i===26||i===27||i===6)return s;for(s=s.child;s!==null;){if(i=r(s),i!==null)return i;s=s.sibling}return null}function o(s){var i=s.tag;if(i===5||i===26||i===27||i===6)return s;for(s=s.child;s!==null;){if(s.tag!==4&&(i=o(s),i!==null))return i;s=s.sibling}return null}ve.doesFiberContain=function(s,i){for(var l=s.alternate;i!==null;){if(i===s||i===l)return!0;i=i.return}return!1},ve.findCurrentFiberUsingSlowPath=t,ve.findCurrentHostFiber=function(s){return s=t(s),s!==null?r(s):null},ve.findCurrentHostFiberWithNoPortals=function(s){return s=t(s),s!==null?o(s):null},ve.getContainerFromFiber=function(s){return s.tag===3?s.stateNode.containerInfo:null},ve.getNearestMountedFiber=n,ve.getSuspenseInstanceFromFiber=function(s){if(s.tag===13){var i=s.memoizedState;if(i===null&&(s=s.alternate,s!==null&&(i=s.memoizedState)),i!==null)return i.dehydrated}return null},ve.isFiberMounted=function(s){return n(s)===s},ve.isFiberSuspenseAndTimedOut=function(s){var i=s.memoizedState;return s.tag===13&&i!==null&&i.dehydrated===null},ve.isMounted=function(s){return(s=s._reactInternals)?n(s)===s:!1}}()),ve}process.env.NODE_ENV==="production"?Ks.exports=Qy():Ks.exports=Zy();var eb=Ks.exports;function tb(n){return n._reactInternals}function O0(n){return n}function nb(n){const e=tb(n);if(e===void 0){if(typeof n.render=="function")throw new Error("Unable to find node on an unmounted component.");{const r=Object.keys(n).join(",");throw new Error(`Argument appears to not be a ReactComponent. Keys: ${r}`)}}const t=eb.findCurrentHostFiber(e);return t===null?null:t.stateNode}function rb(n){return nb(n)}function ob(n,e){if(n===e)return!0;if(!n||!e)return!1;const t=Object.keys(n),r=Object.keys(e),o=t.length;if(r.length!==o)return!1;for(let s=0;s<o;s++){const i=t[s];if(n[i]!==e[i]||!Object.prototype.hasOwnProperty.call(e,i))return!1}return!0}class sb extends m.Component{constructor(){super(...arguments);$(this,"viewDescRef",null);$(this,"renderRef",null)}updateEffect(){const{view:t,decorations:r,siblingsRef:o,parentRef:s,getPos:i,node:l}=this.props,a=rb(this);if(!a){if(!(t!=null&&t.composing))return;this.viewDescRef=new Xr(s.current,()=>i.current(),document.createElement("div"),document.createTextNode(l.text??""),l.text??"");return}let c=a;for(;c.firstChild;)c=c.firstChild;!this.viewDescRef||this.viewDescRef instanceof Xr?this.viewDescRef=new Ny(void 0,[],()=>i.current(),l,r,H.empty,a,c):(this.viewDescRef.parent=s.current,this.viewDescRef.children=[],this.viewDescRef.node=l,this.viewDescRef.getPos=()=>i.current(),this.viewDescRef.outerDeco=r,this.viewDescRef.innerDeco=H.empty,this.viewDescRef.dom=a,this.viewDescRef.dom.pmViewDesc=this.viewDescRef,this.viewDescRef.nodeDOM=c),o.current.includes(this.viewDescRef)||o.current.push(this.viewDescRef),o.current.sort(Jt)}shouldComponentUpdate(t){return!ob(this.props,t)}componentDidMount(){this.updateEffect()}componentDidUpdate(){this.updateEffect()}componentWillUnmount(){const{siblingsRef:t}=this.props;if(this.viewDescRef&&t.current.includes(this.viewDescRef)){const r=t.current.indexOf(this.viewDescRef);t.current.splice(r,1)}}render(){const{view:t,getPos:r,node:o,decorations:s}=this.props;return t!=null&&t.composing&&t.state.selection.from>=r.current()&&t.state.selection.from<=r.current()+o.nodeSize?this.renderRef:(this.renderRef=s.reduce(Qr,o.text),this.renderRef)}}function ib(n){let{getPos:e}=n;const{siblingsRef:t,parentRef:r}=m.useContext(Ce),o=m.useRef(null),s=m.useRef(null);return K(()=>{const i=t.current;return()=>{if(o.current&&i.includes(o.current)){const l=i.indexOf(o.current);i.splice(l,1)}}},[t]),K(()=>{s.current&&(o.current?(o.current.parent=r.current,o.current.dom=s.current,o.current.getPos=()=>e.current()):o.current=new Zn(r.current,[],()=>e.current(),s.current,null),t.current.includes(o.current)||t.current.push(o.current),t.current.sort(Jt))}),m.createElement("br",{ref:s,className:"ProseMirror-trailingBreak"})}function lb(n){let{widget:e,getPos:t}=n;const{siblingsRef:r,parentRef:o}=m.useContext(Ce),s=m.useRef(null),i=m.useRef(()=>t.current()).current,l=m.useRef(null);K(()=>{const c=r.current;return()=>{if(s.current&&c.includes(s.current)){const u=c.indexOf(s.current);c.splice(u,1)}}},[r]),K(()=>{l.current&&(s.current?(s.current.parent=o.current,s.current.widget=e,s.current.getPos=()=>t.current(),s.current.dom=l.current):s.current=new Ws(o.current,()=>t.current(),e,l.current),r.current.includes(s.current)||r.current.push(s.current),r.current.sort(Jt))});const{Component:a}=e.type;return a&&m.createElement(a,{ref:l,widget:e,getPos:i,contentEditable:!1})}function Qr(n,e){const{nodeName:t,...r}=e.type.attrs,o=Su(r);return t||typeof n=="string"?m.createElement(t??"span",o,n):m.cloneElement(n,ku(n.props,o))}function Ys(n,e){var t,r,o;return n.type===e.type&&n.marks.every(s=>s.isInSet(e.marks))&&e.marks.every(s=>s.isInSet(n.marks))&&n.key===e.key&&(n.type==="node"?((t=n.outerDeco)==null?void 0:t.length)===((r=e.outerDeco)==null?void 0:r.length)&&((o=n.outerDeco)==null?void 0:o.every(s=>{var i;return(i=e.outerDeco)==null?void 0:i.some(l=>s.from===l.from&&s.to&&l.to&&s.type.eq(l.type))}))&&n.innerDeco.eq(e.innerDeco):!0)&&n.node===e.node&&n.widget===e.widget}const ab=m.memo(function(e){let{child:t,getInnerPos:r}=e;const{view:o}=m.useContext(wt),s=m.useRef(()=>r.current()+t.offset);return s.current=()=>r.current()+t.offset,t.type==="widget"?m.createElement(lb,{key:t.key,widget:t.widget,getPos:s}):t.type==="native-widget"?m.createElement(_y,{key:t.key,widget:t.widget,getPos:s}):t.node.isText?m.createElement(Ce.Consumer,{key:t.key},i=>{let{siblingsRef:l,parentRef:a}=i;return m.createElement(sb,{view:o,node:t.node,getPos:s,siblingsRef:l,parentRef:a,decorations:t.outerDeco})}):m.createElement(Nu,{key:t.key,node:t.node,getPos:s,outerDeco:t.outerDeco,innerDeco:t.innerDeco})}),cb=m.memo(function(e){let{childViews:t,getInnerPos:r}=e;const o=t[0],s=m.useRef(()=>r.current()+o.offset);s.current=()=>r.current()+o.offset;const i=o.marks[0];return i?m.createElement(wu,{getPos:s,key:o.key,mark:i},m.createElement(Gs,{key:o.key,getInnerPos:r,childViews:t.map(l=>({...l,marks:l.marks.slice(1)}))})):m.createElement(m.Fragment,null,t.map(l=>m.createElement(ab,{key:l.key,child:l,getInnerPos:r})))}),Gs=m.memo(function(e){let{getInnerPos:t,childViews:r}=e;const o=r.reduce((s,i)=>{var c;const l=s[s.length-1];if(!l)return[[i]];const a=l[l.length-1];return a?!i.marks.length&&!a.marks.length||i.marks.length&&a.marks.length&&((c=i.marks[0])!=null&&c.eq(a.marks[0]))?[...s.slice(0,s.length-1),[...l.slice(0,l.length),i]]:[...s,[i]]:[...s.slice(0,s.length),[i]]},[]);return m.createElement(m.Fragment,null,o.map(s=>{const i=s[0];return i?m.createElement(cb,{key:i.key,childViews:s,getInnerPos:t}):null}))});function Us(n,e,t,r,o,s){const i=n+e,l=r==null?void 0:r.get(i);if(t==="widget"||t==="native-widget")return o.type.spec.key?o.type.spec.key:(console.warn(`Widget at position ${i} doesn't have a key specified. This may cause issues.`),`${l}-${s}`);if(l)return l;const a=n-1,c=r==null?void 0:r.get(a);return c?`${c}-${e}`:i}function ub(n,e){if(!e||e.widget.type.side>=0||!n||!n.node.isInline)return;const t=n.marks;e.marks=e.marks.reduce((r,o)=>o.addToSet(r),t)}function fb(n,e){if(!e.node.isInline)return;const t=e.marks;for(let r=n.length-1;r>=0;r--){const o=n[r];o.widget.type.side<0||(o.marks=o.marks.reduce((s,i)=>i.addToSet(s),t))}}const db=m.memo(function(e){let{child:t,getInnerPos:r}=e;const o=m.useRef(()=>r.current()+t.offset);return o.current=()=>r.current()+t.offset,t.type==="node"?t.marks.reduce((s,i)=>m.createElement(wu,{getPos:o,mark:i},s),m.createElement(Nu,{key:t.key,outerDeco:t.outerDeco,node:t.node,innerDeco:t.innerDeco,getPos:o})):m.createElement(Gs,{key:t.key,childViews:[t],getInnerPos:r})});function hb(n,e){return n.length?n.every(t=>t.type!=="node"||t.node.isInline)?[m.createElement(Gs,{key:n[0].key,childViews:n,getInnerPos:e})]:n.map(t=>m.createElement(db,{key:t.key,child:t,getInnerPos:e})):[]}const er=m.memo(function(e){let{getPos:t,node:r,innerDecorations:o}=e;const s=jy(),i=m.useRef(()=>t.current()+1),l=m.useRef(new Map).current;if(!r)return null;const a=new Set;let c=[],u=null;$y(r,o,(p,b,g,k)=>{const C=p.type.spec.marks??[];let E;if(b){E=Us(i.current(),g,"native-widget",s==null?void 0:s.posToKey,p,k);const A={type:"native-widget",widget:p,marks:C,offset:g,index:k,key:E},D=l.get(E);D&&Ys(D,A)?D.offset=g:l.set(E,A),a.add(E)}else{E=Us(i.current(),g,"widget",s==null?void 0:s.posToKey,p,k);const A={type:"widget",widget:p,marks:C,offset:g,index:k,key:E},D=l.get(E);D&&Ys(D,A)?D.offset=g:l.set(E,A),a.add(E)}const P=l.get(E);c.push(P),ub(u,l.get(E))},(p,b,g,k)=>{const C=Us(i.current(),k,"node",s==null?void 0:s.posToKey),E={type:"node",node:p,marks:p.marks,innerDeco:g,outerDeco:b,offset:k,key:C},P=l.get(C);P&&Ys(P,E)?(P.offset=k,u=P):(l.set(C,E),u=E),a.add(C),fb(c,u),c=[]});for(const p of l.keys())a.has(p)||l.delete(p);const f=Array.from(l.values()).sort((p,b)=>p.offset-b.offset),d=hb(f,i),h=f[f.length-1];return(!h||h.type!=="node"||h.node.isInline&&!h.node.isText||/\n$/.test(h.node.text))&&d.push(m.createElement(Xy,{getPos:i,key:"trailing-hack-img"}),m.createElement(ib,{getPos:i,key:"trailing-hack-br"})),m.createElement(m.Fragment,null,d)}),Xs={current(){return-1}},pb=m.memo(m.forwardRef(function(e,t){let{className:r,node:o,innerDeco:s,outerDeco:i,as:l,viewDesc:a,...c}=e;const u=m.useRef(null);m.useImperativeHandle(t,()=>u.current,[]);const{childDescriptors:f,nodeViewDescRef:d}=Hs(o,()=>Xs.current(),u,u,s,i,a),h=m.useMemo(()=>({parentRef:d,siblingsRef:f}),[f,d]),p={...c,ref:u,className:r,suppressContentEditableWarning:!0},b=l?m.cloneElement(l,p,m.createElement(Ce.Provider,{value:h},m.createElement(er,{getPos:Xs,node:o,innerDecorations:s}))):m.createElement("div",p,m.createElement(Ce.Provider,{value:h},m.createElement(er,{getPos:Xs,node:o,innerDecorations:s})));if(!o)return b;const g=i.filter(C=>!C.inline);return g.length?g.reduce(Qr,b):b})),Ou=m.createContext(null);function mb(n,e){let{as:t,...r}=n;const o=m.useRef([]),s=m.useRef(null),{setMount:i,...l}=m.useContext(Ou),a=m.useRef(void 0);m.useImperativeHandle(e,()=>s.current,[]);const c=m.useMemo(()=>({parentRef:a,siblingsRef:o}),[o,a]);return m.createElement(Ce.Provider,{value:c},m.createElement(pb,{ref:u=>{s.current=u,i(u)},...r,...l,as:t}))}const Tu=m.forwardRef(mb),gb=[];function yb(n){var p;let{className:e,children:t,nodeViews:r,customNodeViews:o,...s}=n;const[i,l]=m.useState(null),{editor:a,state:c}=Vy(i,{...s,nodeViews:o}),u=a.view?Zg(a.view,a.cursorWrapper):H.empty,f=a.view?Gg(a.view):gb,d=m.useMemo(()=>({nodeViews:r??{}}),[r]),h=m.useMemo(()=>{var b;return{className:e,setMount:l,node:(b=a.view)==null?void 0:b.state.doc,innerDeco:u,outerDeco:f,viewDesc:a.docViewDescRef.current}},[e,a.docViewDescRef,(p=a.view)==null?void 0:p.state.doc,u,f]);return m.createElement(wt.Provider,{value:a},m.createElement(Yg.Provider,{value:c},m.createElement(qc.Provider,{value:d},m.createElement(Ou.Provider,{value:h},t))))}function vu(n){return m.createElement(Ry,null,m.createElement(yb,n))}function pe(n){const e=m.useRef(n),{view:t}=m.useContext(wt);return tt(()=>{e.current=n},[n]),m.useCallback(function(){for(var r=arguments.length,o=new Array(r),s=0;s<r;s++)o[s]=arguments[s];return e.current(t,...o)},[t])}function Qs(n){const e=m.useContext(Mu),t=pe(n);tt(()=>{e(t)},[e,t])}const bb=["p",0],xb=["blockquote",0],kb=["hr"],Sb=["pre",["code",0]],Cb=["br"],wb={doc:{content:"block+"},paragraph:{content:"inline*",group:"block",parseDOM:[{tag:"p"}],toDOM(){return bb}},blockquote:{content:"block+",group:"block",defining:!0,parseDOM:[{tag:"blockquote"}],toDOM(){return xb}},horizontal_rule:{group:"block",parseDOM:[{tag:"hr"}],toDOM(){return kb}},heading:{attrs:{level:{default:1,validate:"number"}},content:"inline*",group:"block",defining:!0,parseDOM:[{tag:"h1",attrs:{level:1}},{tag:"h2",attrs:{level:2}},{tag:"h3",attrs:{level:3}},{tag:"h4",attrs:{level:4}},{tag:"h5",attrs:{level:5}},{tag:"h6",attrs:{level:6}}],toDOM(n){return["h"+n.attrs.level,0]}},code_block:{content:"text*",marks:"",group:"block",code:!0,defining:!0,parseDOM:[{tag:"pre",preserveWhitespace:"full"}],toDOM(){return Sb}},text:{group:"inline"},image:{inline:!0,attrs:{src:{validate:"string"},alt:{default:null,validate:"string|null"},title:{default:null,validate:"string|null"}},group:"inline",draggable:!0,parseDOM:[{tag:"img[src]",getAttrs(n){return{src:n.getAttribute("src"),title:n.getAttribute("title"),alt:n.getAttribute("alt")}}}],toDOM(n){let{src:e,alt:t,title:r}=n.attrs;return["img",{src:e,alt:t,title:r}]}},hard_break:{inline:!0,group:"inline",selectable:!1,parseDOM:[{tag:"br"}],toDOM(){return Cb}}},Mb=["em",0],Nb=["strong",0],Eb=["code",0],Db={link:{attrs:{href:{validate:"string"},title:{default:null,validate:"string|null"}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs(n){return{href:n.getAttribute("href"),title:n.getAttribute("title")}}}],toDOM(n){let{href:e,title:t}=n.attrs;return["a",{href:e,title:t},0]}},em:{parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style=italic"},{style:"font-style=normal",clearMark:n=>n.type.name=="em"}],toDOM(){return Mb}},strong:{parseDOM:[{tag:"strong"},{tag:"b",getAttrs:n=>n.style.fontWeight!="normal"&&null},{style:"font-weight=400",clearMark:n=>n.type.name=="strong"},{style:"font-weight",getAttrs:n=>/^(bold(er)?|[5-9]\d{2,})$/.test(n)&&null}],toDOM(){return Nb}},code:{code:!0,parseDOM:[{tag:"code"}],toDOM(){return Eb}}},Au=new hr({nodes:wb,marks:Db}),Pu=Au.spec.marks.append({underline:{parseDOM:[{tag:"u"},{style:"font-style=underline"}],toDOM(){return["u",0]}},strikethrough:{parseDOM:[{tag:"s"},{style:"font-style=strike"},{style:"font-style=strikethrough"}],toDOM(){return["s",0]}}}),Zr="https://dailytelefrag.ru/api",eo="https://dailytelefrag.ru/error_image.png",Iu="https://dailytelefrag.ru/error_embed.png",Ob=(n,e)=>{try{const t=new URL(n);if(t.hostname!=="vkvideo.ru"&&t.hostname!=="vk.com")throw new Error;let r,o;if(t.pathname==="/video_ext.php")r=t.searchParams.get("id"),o=t.searchParams.get("oid");else if(t.pathname.startsWith("/video"))[o,r]=t.pathname.slice(6).split("_");else throw new Error;if(!r||!o)throw new Error;return e?`https://vkvideo.ru/video_ext.php?oid=${o}&id=${r}&hd=2`:!0}catch{return""}},Tb=(n,e)=>{try{const t=new URL(n);if(t.hostname!=="rutube.ru")throw new Error;let r;if(t.pathname.startsWith("/video/"))r=t.pathname.split("/")[2];else if(t.pathname.startsWith("/play/embed/"))r=t.pathname.split("/")[3];else throw new Error;if(!r)throw new Error;return e?`https://rutube.ru/play/embed/${r}`:!0}catch{return""}},vb=(n,e)=>{try{const t=new URL(n);if(t.hostname!=="youtube.com"&&t.hostname!=="www.youtube.com"&&t.hostname!=="youtu.be")throw new Error;if(t.hostname==="youtu.be")return e?`https://youtube.com/embed${t.pathname}`:!0;let r;if(t.pathname==="/watch")r=t.searchParams.get("v");else if(t.pathname.startsWith("/live/"))r=t.pathname.split("/")[2];else if(t.pathname.startsWith("/embed/"))r=t.pathname.split("/")[2];else throw new Error;if(!r)throw new Error;return e?`https://youtube.com/embed/${r}`:!0}catch{return""}},to=n=>{try{const e=new URL(n);switch(e.hostname){case"vkvideo.ru":case"vk.com":return Ob(e,!0)+"";case"rutube.ru":return Tb(e,!0)+"";case"youtube.com":case"www.youtube.com":case"youtu.be":return vb(e,!0)+"";default:throw new Error}}catch{return""}},Ab={atom:!0,attrs:{fid:{default:null,validate:"string|null|number"},src:{default:null,validate:"string|null"},alt:{default:null,validate:"string|null"},title:{default:null,validate:"string|null"}},group:"block",draggable:!0,parseDOM:[{tag:"img[src]",getAttrs(n){return{fid:n.getAttribute("fid"),src:n.getAttribute("src"),alt:n.getAttribute("alt"),title:n.getAttribute("title")}}}],toDOM(n){let{fid:e,src:t,alt:r,title:o}=n.attrs;return e&&(t=`${Zr}/files/${e}`),t||(t=eo),["div",{title:o,class:"image"},["img",{fid:e,src:t,alt:r,title:o}]]}},Pb={atom:!0,attrs:{src:{validate:"string"},title:{default:null,validate:"string|null"}},group:"block",draggable:!0,parseDOM:[{tag:"iframe[src]",getAttrs(n){return{src:n.getAttribute("src"),title:n.getAttribute("title")}}}],toDOM(n){const{src:e,title:t}=n.attrs,r="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share";return to(e)?["div",{title:t,class:"video"},["iframe",{src:e,title:t,allow:r}]]:["div",{title:t,class:"image"},["img",{src:Iu}]]}},Ib={content:"inline*",group:"block",attrs:{align:{default:null,validate:"string|null"}},parseDOM:[{tag:"p",getAttrs(n){let e=n.getAttribute("align");return e!=="right"&&e!=="center"&&e!=="justify"&&(e=null),{align:e}}}],toDOM(n){const{align:e}=n.attrs;return["p",{align:e},0]}},Vb={attrs:{level:{default:1,validate:"number"}},content:"inline*",marks:"underline strikethrough",group:"block",defining:!0,parseDOM:[{tag:"h1",attrs:{level:1}},{tag:"h2",attrs:{level:2}},{tag:"h3",attrs:{level:3}},{tag:"h4",attrs:{level:4}},{tag:"h5",attrs:{level:5}},{tag:"h6",attrs:{level:6}}],toDOM(n){return["h"+n.attrs.level,0]}},Rb={atom:!0,content:"image*",group:"block",toDOM(){return["div",{class:"carousel"},0]}},Vu=Au.spec.nodes.remove("image").append({image:Ab,video:Pb}),no=new hr({nodes:Vu.remove("horizontal_rule").remove("heading"),marks:Pu}),zb=Vu.remove("heading").remove("paragraph").prepend({paragraph:Ib}).append({heading:Vb}).append({carousel:Rb}).append(ag({tableGroup:"block",cellContent:"(paragraph | ordered_list | bullet_list)*",cellAttributes:{halign:{default:null,getFromDOM(n){const e=n.getAttribute("align")||null;return e==="left"||e==="right"||e==="center"?e:null},setDOMAttr(n,e){n&&(e.style=(e.style||"")+`text-align: ${n};`)}},valign:{default:null,getFromDOM(n){const e=n.style.verticalAlign||null;return e==="top"||e==="bottom"||e==="middle"?e:null},setDOMAttr(n,e){n&&(e.style=(e.style||"")+`vertical-align: ${n};`)}}}})),Nt=new hr({nodes:Bp(zb,"(paragraph | ordered_list | bullet_list)*","block"),marks:Pu}),$b=n=>{if(n)try{const e=be.fromJSON(Nt,JSON.parse(n)),t=$e.fromSchema(Nt).serializeFragment(e.content);return Pt.fromSchema(no).parse(t)}catch(e){console.error(`Can not convert content to simple schema: ${e}`)}},tr=({ref:n,item:e})=>{const[t,r]=m.useState(!0),[o,s]=m.useState(!1),[i,l]=m.useState(!1);tt(c=>{c&&(r(e.isActive&&e.isActive(c.state)),l(e.isSelected&&!e.isSelected(c.state)),e.isDisabled?s(e.isDisabled(c.state)):s(!e.command(c.state)))});const a=pe(c=>{c&&(o||e.command(c.state,c.dispatch,c),c.focus())});return i?null:y.jsx("div",{ref:n,className:`MenuItem ${t?"active":""} ${o?"disabled":""}`,onClick:c=>{c.stopPropagation(),c.preventDefault(),a()},children:e.icon})},Ru=({schema:n})=>{const[e,t]=m.useState(void 0),[r,o]=m.useState(void 0);return m.useEffect(()=>{if(t(void 0),o(void 0),n.nodes.paragraph){const s=n.nodes.paragraph;t({icon:y.jsx(M.Icons.Type,{}),command:on(s)})}if(n.nodes.code_block){const s=n.nodes.code_block;o({icon:y.jsx(M.Icons.CodeXml,{}),command:on(s)})}},[n]),y.jsxs(y.Fragment,{children:[e&&y.jsx(tr,{item:e}),r&&y.jsx(tr,{item:r})]})},ro=({items:n})=>y.jsx("div",{className:"MenuBlock",children:n.map((e,t)=>y.jsx(tr,{item:e},t))}),jb=({schema:n,isOpen:e,onClose:t})=>{const r=pe((o,s)=>{o&&(ke(n.marks.link,{href:s})(o.state,o.dispatch),t(),o.focus())});return y.jsx(M.Prompt,{title:"Введите URL для ссылки",isOpen:e,onCancel:t,onSubmit:r})},zu=({schema:n})=>{const[e,t]=m.useState([]),[r,o]=m.useState(!1);return m.useEffect(()=>{const s=[];if(n.marks.strong){const i=n.marks.strong;s.push({icon:y.jsx(M.Icons.Bold,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.em){const i=n.marks.em;s.push({icon:y.jsx(M.Icons.Italic,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.underline){const i=n.marks.underline;s.push({icon:y.jsx(M.Icons.Underline,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.strikethrough){const i=n.marks.strikethrough;s.push({icon:y.jsx(M.Icons.Strikethrough,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.code){const i=n.marks.code;s.push({icon:y.jsx(M.Icons.Code,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.link){const i=n.marks.link;s.push({icon:y.jsx(M.Icons.Link,{}),isActive:l=>Kt(l,i),isDisabled:l=>l.selection.empty?!0:!ke(i)(l),command:(l,a,c)=>(Kt(l,i)?(ke(i)(l,a),c==null||c.focus()):o(!0),!0)})}t(s)},[n]),e.length<1?null:y.jsxs(y.Fragment,{children:[y.jsx(ro,{items:e}),y.jsx(jb,{isOpen:r,schema:n,onClose:()=>o(!1)})]})};function Kt(n,e){let{from:t,$from:r,to:o,empty:s}=n.selection;return s?!!e.isInSet(n.storedMarks||r.marks()):n.doc.rangeHasMark(t,o,e)}const $u=()=>y.jsxs("div",{className:"MenuBlock",children:[y.jsx(tr,{item:{icon:y.jsx(M.Icons.Undo,{}),command:To}}),y.jsx(tr,{item:{icon:y.jsx(M.Icons.Redo,{}),command:Sr}})]}),ju=({schema:n})=>{const[e,t]=m.useState([]);return m.useEffect(()=>{const r=[];if(n.nodes.bullet_list){const o=n.nodes.bullet_list;r.push({icon:y.jsx(M.Icons.List,{}),command:(s,i)=>Pr(o)(s,i)})}if(n.nodes.ordered_list){const o=n.nodes.ordered_list;r.push({icon:y.jsx(M.Icons.ListOrdered,{}),command:(s,i)=>Pr(o)(s,i)})}if(n.nodes.blockquote){const o=n.nodes.blockquote;r.push({icon:y.jsx(M.Icons.Quote,{}),command:(s,i)=>Sl(o)(s,i)})}t(r)},[n]),e.length<1?null:y.jsx(ro,{items:e})},Fu=({pos:n,isOpen:e,onClose:t})=>{const[r,o]=m.useState(""),[s,i]=m.useState(),[l,a]=m.useState(""),[c,u]=m.useState(!1);m.useEffect(()=>{o(""),a(""),i(void 0)},[e]),tt(d=>{if(!d||!e)return;const h=et.getState(d.state);u(h.upload!==void 0)},[e]);const f=pe(d=>{d&&(c?pm(d,s,l,n):mm(d,r,l,n),d.focus(),t())});return y.jsxs(M.Modal,{isOpen:e,onClose:t,children:[y.jsx("h1",{children:"Вставка картинки"}),y.jsxs(M.Form,{submit:"Вставить",submitType:"Success",onSubmit:f,onCancel:t,children:[c?y.jsx(M.Image,{id:"image",value:s,onChange:i,text:y.jsxs("span",{children:[y.jsx(M.Icons.Image,{}),y.jsx("br",{}),"Выберите файл"]}),required:!0,label:"Картинка"}):y.jsx(M.Input,{id:"href",value:r,onChange:o,required:!0,label:"Ссылка на картинку"}),y.jsx(M.Input,{id:"value",value:l,onChange:a,label:"Подпись"})]})]})},Fb=({schema:n,isOpen:e,onClose:t})=>{const[r,o]=m.useState(""),[s,i]=m.useState("");m.useEffect(()=>{o(""),i("")},[e]);const l=pe(a=>{const c=n.nodes.video;if(!a||!r||!c)return;const u=to(r);a.dispatch(a.state.tr.replaceSelectionWith(c.create({src:u,title:s}))),a.focus(),t()});return n.nodes.video?y.jsxs(M.Modal,{isOpen:e,onClose:t,children:[y.jsx("h1",{children:"Вставка видео"}),y.jsxs(M.Form,{submit:"Вставить",submitType:"Success",onSubmit:l,onCancel:t,children:[y.jsx(M.Input,{id:"src",value:r,onChange:o,label:"Ссылка на видео",bottom:"Поддерживаются VK Video, RuTube и YouTube",required:!0}),y.jsx(M.Input,{id:"value",value:s,onChange:i,label:"Подпись"})]})]}):null},Bu=({schema:n})=>{const[e,t]=m.useState([]),[r,o]=m.useState(!1),[s,i]=m.useState(!1);return m.useEffect(()=>{const l=[];if(n.nodes.image){const a=n.nodes.image;l.push({icon:y.jsx(M.Icons.Image,{}),isDisabled:c=>!Zs(c,a),command:()=>(o(!0),!0)})}if(n.nodes.video){const a=n.nodes.video;l.push({icon:y.jsx(M.Icons.Film,{}),isDisabled:c=>!Zs(c,a),command:()=>(i(!0),!0)})}if(n.nodes.horizontal_rule){const a=n.nodes.horizontal_rule;l.push({icon:y.jsx(M.Icons.FlipVertical,{}),isDisabled:c=>!Zs(c,a),command:(c,u)=>u?(u(c.tr.replaceSelectionWith(a.create())),!0):!1})}n.nodes.table&&l.push({icon:y.jsx(M.Icons.Table,{}),isDisabled:Oe,command:Bb()}),t(l)},[n]),e.length<1?null:y.jsxs(y.Fragment,{children:[y.jsx(ro,{items:e}),y.jsx(Fu,{isOpen:r,onClose:()=>o(!1)}),y.jsx(Fb,{isOpen:s,schema:n,onClose:()=>i(!1)})]})},Zs=(n,e)=>{let t=n.selection.$from;for(let r=t.depth;r>=0;r--){let o=t.index(r);if(t.node(r).canReplaceWith(o,o,e))return!0}return!1};function Bb(){return(n,e)=>{const t=n.tr.selection.anchor+1,r=n.tr,o=n.schema.nodes.table_cell.createAndFill(),s=n.schema.nodes.table.create(null,S.fromArray([n.schema.nodes.table_row.create(null,S.fromArray([o,o,o])),n.schema.nodes.table_row.create(null,S.fromArray([o,o,o]))]));return e&&e(r.replaceSelectionWith(s).scrollIntoView().setSelection(I.near(r.doc.resolve(t)))),!0}}const Lu=()=>y.jsx(ro,{items:[{icon:y.jsx(M.Icons.JoinUp,{}),command:ml},{icon:y.jsx(M.Icons.IndentDecrease,{}),command:gl},{icon:y.jsx(M.Icons.SquareDashed,{}),command:bl}]}),Lb=({schema:n})=>y.jsxs("div",{className:"SimpleMenuBar",children:[y.jsx("div",{className:"MenuBlock",children:y.jsx(Ru,{schema:n})}),y.jsx(zu,{schema:n}),y.jsx(Bu,{schema:n}),y.jsx(ju,{schema:n}),y.jsx(Lu,{}),y.jsx($u,{})]}),Wu=m.forwardRef(function({children:e,nodeProps:t,...r},o){const[s,i]=m.useState(t.node.attrs.title??""),[l,a]=m.useState(!1),[c,u]=m.useState("");Qs(()=>!0),tt(p=>{if(u(""),a(!1),!p||!p.state.schema.nodes.carousel)return;const b=t.getPos(),g=p.state.doc.resolve(b).parent;if(a(g.type.name!=="carousel"),g.type.name==="carousel"){let k=0;g.forEach((C,E)=>{C===t.node&&(k=E+1)}),u(k?`${k} / ${g.childCount}`:"")}});const f=pe((p,b)=>{if(!p)return;i(b);const g=p.state.tr,k=t.getPos();p.dispatch(g.setNodeMarkup(k,null,{...t.node.attrs,title:b})),p.focus()}),d=pe(p=>{if(!p)return;const b=t.getPos(),g=t.node.nodeSize,k=t.node.attrs,C=p.state.schema,E=C.nodes.carousel.create(null,C.nodes.image.create(k));p.dispatch(p.state.tr.replaceWith(b,b+g,E))}),h=pe(p=>{if(!p)return;const b=p.state.tr,g=t.getPos(),k=t.node.nodeSize,C=p.state.doc.resolve(g).parent;C.type.name==="carousel"&&C.childCount===1?p.dispatch(b.delete(g-1,g-1+C.nodeSize)):p.dispatch(b.delete(g,g+k))});return y.jsxs("div",{...r,ref:o,className:"image",title:t.node.attrs.title,children:[y.jsxs("div",{className:"image-buttons",children:[l&&y.jsx("div",{onClick:d,className:"text-button",children:"Сделать карусель"}),c&&y.jsx("div",{className:"text-button",children:c}),y.jsx("div",{onClick:h,children:y.jsx(M.Icons.Trash,{})})]}),y.jsx("img",{title:t.node.attrs.title,alt:t.node.attrs.alt,src:t.node.attrs.fid?`${Zr}/files/${t.node.attrs.fid}`:t.node.attrs.src}),y.jsx("div",{children:y.jsx(M.Editable,{value:s,placeholder:"Подпись под изображением (не обязательно)",onChange:f,empty:!0,style:{textAlign:"center",cursor:"text"}})})]})}),_u=m.forwardRef(function({children:e,nodeProps:t,...r},o){const[s,i]=m.useState(""),[l,a]=m.useState(t.node.attrs.title??""),c="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share";Qs(()=>!0),m.useEffect(()=>{i(to(t.node.attrs.src))},[t]);const u=pe((f,d)=>{if(!f)return;a(d);const{$from:h,$to:p}=f.state.selection,b=h.blockRange(p);if(b){const g=f.state.doc;let k=f.state.tr;g.nodesBetween(b.start,b.end,(C,E)=>{C.type.name==="video"&&(k=k.setNodeMarkup(E,null,{...t.node.attrs,title:d}))}),f.dispatch(k)}f.focus()});return y.jsxs("div",{...r,ref:o,className:s?"video":"image",title:t.node.attrs.title,children:[s?y.jsx("iframe",{src:s,allow:c}):y.jsx("img",{src:Iu}),y.jsx("div",{children:y.jsx(M.Editable,{value:l,placeholder:"Подпись под видео (не обязательно)",onChange:u,empty:!0,style:{textAlign:"center",cursor:"text"}})})]})}),qu=({onSave:n,disabled:e=!1,notEmpty:t=!0,wasChanged:r=!0})=>{const[o,s]=m.useState(!0);tt(l=>{let a=!1;const c=l.state.doc,u=!!c.textBetween(0,c.content.size,void 0," ").length,f=!!vo(l.state);r&&t?a=u&&f:r?a=f:t&&(a=u),s(a)});const i=pe(l=>{try{let a;const c=Ts(l.state);if(c){const u=l.state.apply(c.setMeta("addToHistory",!1));a=JSON.stringify(u.doc.toJSON())}else a=JSON.stringify(l.state.doc.toJSON());n({content:a,format:"prose"})}catch(a){console.error(`Can not save doc: ${a}`)}});return y.jsx(M.Button,{type:"Accent",disabled:e||!o,label:"Сохранить",size:"Small",onClick:i})},Wb=({title:n=!1,content:e,onSave:t,onCancel:r,onChange:o,onUpload:s})=>{const[i,l]=m.useState(""),[a,c]=m.useState();m.useEffect(()=>{const h=Ke.create({doc:$b(e),schema:no,plugins:_c({schema:no,upload:s})});c(h),n!==!1&&l(typeof n=="string"?n:"")},[n,e]);const u=()=>n!==!1?i.trim().length>0:!0,f=h=>{!t||!u()||t({...h,name:i})},d=()=>{r&&r()};return a?y.jsxs("div",{className:"ProseNotes",children:[n!==!1&&y.jsx("input",{className:"ProseNotesTitle",onChange:h=>l(h.currentTarget.value),value:i,placeholder:"Укажите заголовок"}),y.jsxs(vu,{state:a,dispatchTransaction:h=>c(p=>{const b=p==null?void 0:p.apply(h);return b&&o&&o(!!vo(b)),b}),nodeViews:{image:Wu,video:_u},children:[y.jsxs("div",{className:"ProseNotesContent",children:[y.jsx(Lb,{schema:no}),y.jsx(Tu,{})]}),(t||r)&&y.jsxs("div",{className:"ProseNotesButtons",children:[r&&y.jsx("span",{className:"a small",onClick:d,children:"Отменить"}),t&&y.jsx(qu,{onSave:f,disabled:!u(),wasChanged:!1})]})]})]}):null},_b=({schema:n})=>{const e=m.useRef(null),[t,r]=m.useState([]),[o,s]=m.useState([]),[i,l]=m.useState(!1);tt(c=>{const u=n.nodes.heading;if(!c||!u||!i)return;const f=[],d=[];for(let h=2;h<7;h++){const b=on(u,{level:h});d[h]=b,f[h]={id:h,icon:y.jsx(qb,{level:h}),text:`уровень ${h}`,disabled:!b(c.state)}}r(f),s(d)},[i]);const a=pe((c,u)=>{!c||!u.id||(o[u.id](c.state,c.dispatch,c),l(!1),c.focus())});return n.nodes.heading?y.jsxs(y.Fragment,{children:[y.jsx("div",{ref:e,className:"MenuItem",onClick:()=>l(!0),children:y.jsx(M.Icons.Heading,{})}),e.current&&y.jsx(M.Menu,{parent:e.current,items:t,isOpen:i,onClose:()=>l(!1),onClick:a,horizontal:"inner-left"})]}):null},qb=({level:n})=>{switch(n){case 2:return y.jsx(M.Icons.Heading2,{});case 3:return y.jsx(M.Icons.Heading3,{});case 4:return y.jsx(M.Icons.Heading4,{});case 5:return y.jsx(M.Icons.Heading5,{});case 6:return y.jsx(M.Icons.Heading6,{});default:return y.jsx(M.Icons.Heading,{})}},Hb=[{id:"left",icon:y.jsx(M.Icons.AlignLeft,{}),text:"Прижать влево"},{id:"right",icon:y.jsx(M.Icons.AlignRight,{}),text:"Прижать вправо"},{id:"center",icon:y.jsx(M.Icons.AlignCenter,{}),text:"Отцентровать"},{id:"justify",icon:y.jsx(M.Icons.AlignJustify,{}),text:"Выровнять по краям"}],Jb=({schema:n})=>{const e=m.useRef(null),[t,r]=m.useState(!1),o=pe((s,i)=>{if(!s||!i.id)return;const l=i.id==="left"?null:i.id,{$from:a,$to:c}=s.state.selection,u=a.blockRange(c);if(u){const f=s.state.doc;let d=s.state.tr;f.nodesBetween(u.start,u.end,(h,p)=>{h.type.name==="paragraph"&&(d=d.setNodeMarkup(p,null,{align:l}))}),s.dispatch(d)}s.focus(),r(!1)});return n.nodes.paragraph?y.jsxs(y.Fragment,{children:[y.jsx("div",{ref:e,className:"MenuItem",onClick:()=>r(!0),children:y.jsx(M.Icons.AlignLeft,{})}),e.current&&y.jsx(M.Menu,{parent:e.current,items:Hb,isOpen:t,onClose:()=>r(!1),onClick:o,horizontal:"inner-left"})]}):null},Kb=({schema:n,onSave:e})=>y.jsxs("div",{className:"MenuBar",children:[y.jsxs("div",{className:"MenuBlock",children:[y.jsx(_b,{schema:n}),y.jsx(Ru,{schema:n})]}),y.jsx(zu,{schema:n}),y.jsx(Bu,{schema:n}),y.jsx(ju,{schema:n}),y.jsx(Jb,{schema:n}),y.jsx(Lu,{}),y.jsx($u,{}),y.jsx("div",{className:"MenuBlock",children:y.jsx(qu,{onSave:e})})]}),Yb=n=>{if(n.type.name!=="table")return[];let e=[];n.content.content.forEach(s=>{if(s.type.name!=="table_row")return;let i=0;s.content.content.forEach(l=>{if(l.type.name!=="table_header"&&l.type.name!=="table_cell")return;const a=l.attrs.colspan,c=l.attrs.colwidth;for(let u=0;u<a;u++){const f=i+u,d=c?Math.round(c/a):1;(!e[f]||a===1)&&(e[f]=d)}i+=a})});const r=e.reduce((s,i)=>s+i,0);e=e.map(s=>Math.round(s*100/r));const o=100-e.reduce((s,i)=>s+i,0);return e[e.length-1]+=o,e},Gb=n=>{var r;const e=(r=n.parentElement)==null?void 0:r.closest("TABLE");if(!e)return[];let t=[];for(let o=0;o<e.rows.length;o++){const s=e.rows[o];let i=0;for(let l=0;l<s.cells.length;l++){const a=s.cells[l],c=a.colSpan,u=a.clientWidth;for(let f=0;f<c;f++){const d=i+f,h=u?Math.round(u/c):1;(!t[d]||c===1)&&(t[d]=h)}i+=c}}return t},Ub=m.forwardRef(function({children:e,nodeProps:t,...r},o){const[s,i]=m.useState([]);m.useEffect(()=>{i(Yb(t.node))},[t]);const l=pe(a=>{jg(a.state,a.dispatch)});return y.jsxs("table",{ref:o,...r,children:[y.jsx("colgroup",{children:s.map((a,c)=>y.jsx("col",{style:{width:`${a}%`}},c))}),y.jsx("caption",{onClick:l,children:y.jsx(M.Icons.Trash,{})}),y.jsx("tbody",{children:e})]})}),Xb=[{id:"toggleHeaderRow",text:"Toggle header row",icon:y.jsx(M.Icons.Heading,{})},{id:"addRowBefore",text:"Insert row before",icon:y.jsx(M.Icons.RowInsertBefore,{})},{id:"addRowAfter",text:"Insert row after",icon:y.jsx(M.Icons.RowInsertAfter,{})},{id:"deleteRow",text:"Delete row",icon:y.jsx(M.Icons.Trash,{})}],Qb=[{id:"toggleHeaderColumn",text:"Toggle header column",icon:y.jsx(M.Icons.Heading,{})},{id:"addColumnBefore",text:"Insert column before",icon:y.jsx(M.Icons.ColumnInsertBefore,{})},{id:"addColumnAfter",text:"Insert column after",icon:y.jsx(M.Icons.ColumnInsertAfter,{})},{id:"deleteColumn",text:"Delete column",icon:y.jsx(M.Icons.Trash,{})}],Zb=[{id:"toggleHeaderCell",text:"Toggle header",icon:y.jsx(M.Icons.Heading,{})},{id:"alignLeft",text:"Horizontal align left",icon:y.jsx(M.Icons.AlignLeft,{})},{id:"alignCenter",text:"Horizontal align center",icon:y.jsx(M.Icons.AlignCenter,{})},{id:"alignRight",text:"Horizontal align Right",icon:y.jsx(M.Icons.AlignRight,{})},{id:"alignTop",text:"Vertical align top",icon:y.jsx(M.Icons.AlignTop,{})},{id:"alignMiddle",text:"Vertical align middle",icon:y.jsx(M.Icons.AlignMiddle,{})},{id:"alignBottom",text:"Vertical align bottom",icon:y.jsx(M.Icons.AlignBottom,{})},{id:"mergeCells",text:"Merge cells",icon:y.jsx(M.Icons.CellsMerge,{})},{id:"splitCell",text:"Split cell",icon:y.jsx(M.Icons.CellsSplit,{})}],Hu=({parent:n,isRowMenuOpen:e,isCellMenuOpen:t,isColumnMenuOpen:r,onRowMenuClose:o,onCellMenuClose:s,onColumnMenuClose:i})=>{const l=pe((a,c)=>{if(a){switch(c.id){case"toggleHeaderRow":Vg(a.state,a.dispatch);break;case"addRowBefore":Ng(a.state,a.dispatch);break;case"addRowAfter":Eg(a.state,a.dispatch);break;case"deleteRow":Og(a.state,a.dispatch);break;case"toggleHeaderColumn":Rg(a.state,a.dispatch);break;case"addColumnBefore":kg(a.state,a.dispatch);break;case"addColumnAfter":Sg(a.state,a.dispatch);break;case"deleteColumn":wg(a.state,a.dispatch);break;case"mergeCells":vg(a.state,a.dispatch);break;case"splitCell":Ag(a.state,a.dispatch);break;case"toggleHeaderCell":zg(a.state,a.dispatch);break;case"alignLeft":mn("halign","left")(a.state,a.dispatch);break;case"alignCenter":mn("halign","center")(a.state,a.dispatch);break;case"alignRight":mn("halign","right")(a.state,a.dispatch);break;case"alignTop":mn("valign","top")(a.state,a.dispatch);break;case"alignMiddle":mn("valign","middle")(a.state,a.dispatch);break;case"alignBottom":mn("valign","bottom")(a.state,a.dispatch);break}o(),s(),i(),a.focus()}});return n?y.jsxs(y.Fragment,{children:[y.jsx(M.Menu,{parent:n,items:Xb,isOpen:e,onClose:o,onClick:l,vertical:"top",horizontal:"inner-left"}),y.jsx(M.Menu,{parent:n,items:Zb,isOpen:t,onClose:s,onClick:l,horizontal:"inner-left"}),y.jsx(M.Menu,{parent:n,items:Qb,isOpen:r,onClose:i,onClick:l,vertical:"top",horizontal:"inner-left",margin:"var(--alxgrn-unit)"})]}):null},Ju=({parent:n,isResizible:e,onWidth:t})=>{const[r,o]=m.useState(!1),[s,i]=m.useState(0);m.useEffect(()=>{const a=()=>{o(!1)},c=u=>{if(!r||!n||!t)return;u.preventDefault(),u.stopPropagation(),t(u.screenX-s);const f=Gb(n);console.log(`COLS: ${f} px`)};return document.addEventListener("mouseup",a),document.addEventListener("mousemove",c),()=>{document.removeEventListener("mouseup",a),document.removeEventListener("mousemove",c)}},[n,r,t]);const l=a=>{a.preventDefault(),a.stopPropagation(),o(!0),i(a.screenX)};return!n||!e||!t?null:y.jsx("div",{className:`ProseMirror-cell-resizer ${r?"dragging":""}`,onMouseDown:l})},Ku=m.forwardRef(function({children:e,nodeProps:t,...r},o){const s=m.useRef(null),[i,l]=m.useState(!1),[a,c]=m.useState(!1),[u,f]=m.useState(!1),[d,h]=m.useState(!1),[p,b]=m.useState();m.useEffect(()=>{const C=E=>{s.current!==E.target&&(l(!1),c(!1),f(!1))};return document.addEventListener("contextmenu",C,!0),()=>document.removeEventListener("contextmenu",C,!0)},[]),m.useEffect(()=>{const C=s.current;if(!C||!C.parentNode)return;const E=Array.prototype.indexOf.call(C.parentNode.children,C);h(E<C.parentNode.children.length-1),h(!1)},[s]);const g=C=>{C.preventDefault(),C.stopPropagation(),l(!1),c(!1),f(!1);const E=C.currentTarget.getBoundingClientRect();C.clientY<E.y?f(!0):C.clientX<E.x?l(!0):c(!0)},k=C=>{b(C)};return t.node.type.spec.tableRole==="header_cell"?y.jsxs("th",{...r,datatype:`width-${t.node.attrs.colwidth}`,colSpan:t.node.attrs.colspan,rowSpan:t.node.attrs.rowspan,style:{textAlign:t.node.attrs.halign,verticalAlign:t.node.attrs.valign},onContextMenu:g,ref:C=>{s.current=C,o&&(typeof o=="function"?o(C):o.current=C)},children:[e,y.jsx(Ju,{parent:s.current,isResizible:d,onWidth:k}),y.jsx(Hu,{parent:s.current,isRowMenuOpen:i,onRowMenuClose:()=>l(!1),isCellMenuOpen:a,onCellMenuClose:()=>c(!1),isColumnMenuOpen:u,onColumnMenuClose:()=>f(!1)})]}):y.jsxs("td",{...r,datatype:`width-${p}`,colSpan:t.node.attrs.colspan,rowSpan:t.node.attrs.rowspan,style:{textAlign:t.node.attrs.halign,verticalAlign:t.node.attrs.valign},onContextMenu:g,ref:C=>{s.current=C,o&&(typeof o=="function"?o(C):o.current=C)},children:[e,y.jsx(Ju,{parent:s.current,isResizible:d,onWidth:k}),y.jsx(Hu,{parent:s.current,isRowMenuOpen:i,onRowMenuClose:()=>l(!1),isCellMenuOpen:a,onCellMenuClose:()=>c(!1),isColumnMenuOpen:u,onColumnMenuClose:()=>f(!1)})]})}),e0=m.forwardRef(function({children:e,nodeProps:t,...r},o){const s=m.useRef(null),[i,l]=m.useState(!1),[a,c]=m.useState(!1),[u,f]=m.useState(!1),[d,h]=m.useState(!1),[p,b]=m.useState(),g=A=>{const D=A.scrollLeft,j=A.clientWidth,R=A.scrollWidth;f(D>0),h(D<R-j*1.5)};Qs(()=>!0),m.useEffect(()=>{b(t.getPos()+t.node.nodeSize-1),c(t.node.childCount>1),s.current&&t.node.childCount>1&&g(s.current)},[t,s]);const k=pe(A=>{if(!A)return;const D=t.getPos(),j=t.node.nodeSize;A.dispatch(A.state.tr.delete(D,D+j))}),C=()=>{l(!0)},E=A=>{g(A.currentTarget)},P=(A,D)=>{if(A.stopPropagation(),!s.current)return;const j=s.current.clientWidth;let R=s.current.scrollLeft+D*j;s.current.scrollLeft=R};return y.jsxs("div",{ref:o,...r,className:"carousel",children:[y.jsx("div",{className:"carousel-list",ref:s,onScroll:E,children:e}),y.jsxs("div",{className:"carousel-buttons",children:[y.jsx("div",{onClick:k,className:"text-button",children:"Удалить карусель"}),y.jsx("div",{onClick:C,children:y.jsx(M.Icons.Plus,{})})]}),a&&y.jsxs(y.Fragment,{children:[u&&y.jsx("div",{className:"carousel-prev",onClick:A=>P(A,-1),children:y.jsx(M.Icons.ChevronLeft,{})}),d&&y.jsx("div",{className:"carousel-next",onClick:A=>P(A,1),children:y.jsx(M.Icons.ChevronRight,{})})]}),y.jsx(Fu,{pos:p,isOpen:i,onClose:()=>l(!1)})]})}),t0=({content:n,onSave:e,onChange:t,onUpload:r})=>{const[o,s]=m.useState();return m.useEffect(()=>{let i;if(n)try{i=be.fromJSON(Nt,JSON.parse(n))}catch(c){console.error(`Can not parse Prose format: ${c}`)}let l=Ke.create({doc:i,schema:Nt,plugins:_c({schema:Nt,upload:r})});const a=Ts(l);a&&(l=l.apply(a.setMeta("addToHistory",!1))),s(l)},[n]),o?y.jsx("div",{className:"ProseEditor",children:y.jsxs(vu,{state:o,dispatchTransaction:i=>s(l=>{const a=l==null?void 0:l.apply(i);return a&&t&&t(!!vo(a)),a}),nodeViews:{image:Wu,video:_u,table:Ub,table_header:Ku,table_cell:Ku,carousel:e0},children:[y.jsx(Kb,{schema:Nt,onSave:e}),y.jsx(Tu,{})]})}):null},n0=({node:n})=>{const[e,t]=m.useState();return m.useEffect(()=>{var o;const r=(o=n.attrs)==null?void 0:o.align;t(r!=="right"&&r!=="center"&&r!=="justify"?void 0:{textAlign:r})},[n]),y.jsx("p",{style:e,children:Array.isArray(n.content)&&n.content.map((r,o)=>y.jsx(Y,{node:r},o))})},r0=({node:n})=>{if(!n.text)return null;const e=(t,r)=>{var i;if(!Array.isArray(n.marks))return y.jsx(y.Fragment,{children:r});if(!t.length)return y.jsx(y.Fragment,{children:r});const o=t[0].type,s=(i=t[0].attrs)==null?void 0:i.href;switch(o){case"em":return y.jsx("em",{children:e(t.slice(1),r)});case"code":return y.jsx("code",{children:e(t.slice(1),r)});case"strong":return y.jsx("strong",{children:e(t.slice(1),r)});case"underline":return y.jsx("u",{children:e(t.slice(1),r)});case"strikethrough":return y.jsx("s",{children:e(t.slice(1),r)});case"link":return s?y.jsx("a",{target:"_blank",href:s,children:e(t.slice(1),r)}):y.jsx(y.Fragment,{children:e(t.slice(1),r)});default:return y.jsx(y.Fragment,{children:e(t.slice(1),r)})}};return e(n.marks,n.text)},o0=({node:n,className:e})=>y.jsx("div",{className:e,children:Array.isArray(n.content)&&n.content.map((t,r)=>y.jsx(Y,{node:t},r))}),s0=({node:n})=>{const e=m.useRef(null),[t,r]=m.useState(""),[o,s]=m.useState(""),[i,l]=m.useState(!1);m.useEffect(()=>{const c=()=>{l(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",c),()=>document.removeEventListener("fullscreenchange",c)},[]),m.useEffect(()=>{var f,d,h,p,b;let c=(f=n.attrs)==null?void 0:f.fid,u=(d=n.attrs)!=null&&d.src?`${(h=n.attrs)==null?void 0:h.src}`:"";c&&(u=`${Zr}/files/${c}`),u||(u=eo),r(u),s((p=n.attrs)!=null&&p.title?`${(b=n.attrs)==null?void 0:b.title}`:"")},[n]);const a=c=>{var u;c.stopPropagation(),i?document.exitFullscreen():(u=e.current)==null||u.requestFullscreen()};return t?y.jsxs("div",{ref:e,title:o,className:"image",children:[y.jsx("img",{src:t,onClick:a}),y.jsx("div",{className:"image-full",onClick:a,children:i?y.jsx(M.Icons.Minimize,{}):y.jsx(M.Icons.Maximize,{})})]}):null},i0=({node:n})=>y.jsx("blockquote",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))}),l0=({node:n})=>y.jsx("table",{children:y.jsx("tbody",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))})}),a0=({node:n})=>y.jsx("tr",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))}),c0=({node:n})=>{const[e,t]=m.useState(),[r,o]=m.useState(),[s,i]=m.useState(),[l,a]=m.useState();return m.useEffect(()=>{var c,u,f,d;t((c=n.attrs)==null?void 0:c.halign),o((u=n.attrs)==null?void 0:u.valign),i((f=n.attrs)!=null&&f.rowspan?parseInt(n.attrs.rowspan+""):1),a((d=n.attrs)!=null&&d.colspan?parseInt(n.attrs.colspan+""):1)},[n]),n.type==="table_header"?y.jsx("th",{colSpan:l,rowSpan:s,style:{textAlign:e,verticalAlign:r},children:Array.isArray(n.content)&&n.content.map((c,u)=>y.jsx(Y,{node:c},u))}):y.jsx("td",{colSpan:l,rowSpan:s,style:{textAlign:e,verticalAlign:r},children:Array.isArray(n.content)&&n.content.map((c,u)=>y.jsx(Y,{node:c},u))})},u0=({node:n})=>{var e;if(!Array.isArray(n.content))return null;switch((e=n.attrs)==null?void 0:e.level){case 1:return y.jsx("h1",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 2:return y.jsx("h2",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 3:return y.jsx("h3",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 4:return y.jsx("h4",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 5:return y.jsx("h5",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 6:return y.jsx("h6",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});default:return y.jsx("h2",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))})}},f0=({node:n})=>Array.isArray(n.content)?n.type==="bullet_list"?y.jsx("ul",{children:n.content.map((e,t)=>y.jsx(Y,{node:e},t))}):y.jsx("ol",{children:n.content.map((e,t)=>y.jsx(Y,{node:e},t))}):null,d0=({node:n})=>y.jsx("li",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))}),h0=({node:n})=>y.jsx("pre",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))}),p0=()=>y.jsx("hr",{}),m0=({node:n})=>{const[e,t]=m.useState(""),[r,o]=m.useState(""),s="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share";return m.useEffect(()=>{var i,l,a,c;t((i=n.attrs)!=null&&i.src?`${(l=n.attrs)==null?void 0:l.src}`:""),o((a=n.attrs)!=null&&a.title?`${(c=n.attrs)==null?void 0:c.title}`:"")},[n]),to(e)?y.jsx("div",{title:r,className:"video",children:y.jsx("iframe",{src:e,allow:s})}):y.jsx("div",{title:r,className:"image",children:y.jsx("img",{src:eo})})},g0=()=>y.jsx("br",{}),y0=({node:n})=>{const e=m.useRef(null),t=m.useRef(null),[r,o]=m.useState(!1),[s,i]=m.useState(!1),[l,a]=m.useState(!1),[c,u]=m.useState(1),[f,d]=m.useState(1),h=g=>{const k=g.scrollLeft,C=g.clientWidth,E=g.scrollWidth;i(k>C/2),a(k<E-C*1.5),u(Math.round(k/C+1))};m.useEffect(()=>{var g;a(Array.isArray(n.content)&&n.content.length>1),d(((g=n.content)==null?void 0:g.length)??1),u(1)},[n]),m.useEffect(()=>{const g=()=>{o(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",g),()=>document.removeEventListener("fullscreenchange",g)},[]),m.useEffect(()=>{if(!r)return;const g=k=>{k.key==="ArrowLeft"&&b(null,-1),k.key==="ArrowRight"&&b(null,1)};return document.body.addEventListener("keydown",g),()=>document.body.removeEventListener("keydown",g)},[r]);const p=g=>{var k;g.stopPropagation(),r?document.exitFullscreen():(k=t.current)==null||k.requestFullscreen()},b=(g,k)=>{if(g==null||g.stopPropagation(),!e.current)return;const C=e.current.clientWidth;let E=e.current.scrollLeft+k*C;e.current.scrollLeft=E};return Array.isArray(n.content)?y.jsxs("div",{className:"carousel",ref:t,children:[y.jsx("div",{className:"carousel-list",ref:e,onScroll:g=>h(g.currentTarget),children:n.content.map((g,k)=>y.jsx(b0,{node:g,onClick:p},k))}),y.jsxs("div",{className:"carousel-numb",children:[c," / ",f]}),y.jsx("div",{className:"carousel-full",onClick:p,children:r?y.jsx(M.Icons.Minimize,{}):y.jsx(M.Icons.Maximize,{})}),s&&y.jsx("div",{className:"carousel-prev",onClick:g=>b(g,-1),children:y.jsx(M.Icons.ChevronLeft,{})}),l&&y.jsx("div",{className:"carousel-next",onClick:g=>b(g,1),children:y.jsx(M.Icons.ChevronRight,{})})]}):null},b0=({node:n,onClick:e})=>{const[t,r]=m.useState(""),[o,s]=m.useState("");return m.useEffect(()=>{var c,u,f,d;let i=(c=n.attrs)==null?void 0:c.fid,l=(u=n.attrs)!=null&&u.src?`${(f=n.attrs)==null?void 0:f.src}`:"",a=(d=n.attrs)!=null&&d.title?`${n.attrs.title}`:"";i&&(l=`${Zr}/files/${i}`),l||(l=eo),r(l),s(a)},[n]),n.type!=="image"?null:y.jsx("div",{className:"image",title:o,children:t&&y.jsx("img",{src:t,onClick:e})})},Y=({node:n,className:e})=>n?(r=>{switch(r.type){case"doc":return y.jsx(o0,{node:r,className:e});case"list_item":return y.jsx(d0,{node:r});case"bullet_list":case"ordered_list":return y.jsx(f0,{node:r});case"image":return y.jsx(s0,{node:r});case"video":return y.jsx(m0,{node:r});case"text":return y.jsx(r0,{node:r});case"table":return y.jsx(l0,{node:r});case"table_row":return y.jsx(a0,{node:r});case"table_cell":case"table_header":return y.jsx(c0,{node:r});case"heading":return y.jsx(u0,{node:r});case"code_block":return y.jsx(h0,{node:r});case"paragraph":return y.jsx(n0,{node:r});case"blockquote":return y.jsx(i0,{node:r});case"carousel":return y.jsx(y0,{node:r});case"horizontal_rule":return y.jsx(p0,{});case"hard_break":return y.jsx(g0,{});default:return y.jsx("span",{className:"unknown_node_type",children:r.type})}})(n):null,x0=({content:n})=>{const[e,t]=m.useState(),[r,o]=m.useState(!1);return m.useEffect(()=>{try{o(!1);const s=JSON.parse(n);t(s)}catch(s){o(!0),console.error(`Can not parse Prose format: ${s}`)}},[n]),r?y.jsx("div",{className:"error",children:"ОШИБКА"}):y.jsx(Y,{node:e,className:"ProseViewer"})},k0=({content:n})=>{const e=m.useRef(null),[t,r]=m.useState(!1);return m.useEffect(()=>{var o;try{r(!1);const s=be.fromJSON(Nt,JSON.parse(n)),i=$e.fromSchema(Nt).serializeFragment(s.content);(o=e.current)==null||o.appendChild(i)}catch(s){r(!0),console.error(`Can not parse Prose format: ${s}`)}},[e,n]),y.jsx("div",{ref:e,className:"ProseViewer",children:t&&y.jsx("div",{className:"error",children:"ОШИБКА"})})};G.DOM=k0,G.Editor=t0,G.Notes=Wb,G.Viewer=x0,Object.defineProperty(G,Symbol.toStringTag,{value:"Module"})});
|
|
65
|
+
*/var Du;function Zy(){return Du||(Du=1,process.env.NODE_ENV!=="production"&&function(){function n(s){var i=s,l=s;if(s.alternate)for(;i.return;)i=i.return;else{s=i;do i=s,i.flags&4098&&(l=i.return),s=i.return;while(s)}return i.tag===3?l:null}function e(s){if(n(s)!==s)throw Error("Unable to find node on an unmounted component.")}function t(s){var i=s.alternate;if(!i){if(i=n(s),i===null)throw Error("Unable to find node on an unmounted component.");return i!==s?null:s}for(var l=s,a=i;;){var c=l.return;if(c===null)break;var u=c.alternate;if(u===null){if(a=c.return,a!==null){l=a;continue}break}if(c.child===u.child){for(u=c.child;u;){if(u===l)return e(c),s;if(u===a)return e(c),i;u=u.sibling}throw Error("Unable to find node on an unmounted component.")}if(l.return!==a.return)l=c,a=u;else{for(var f=!1,d=c.child;d;){if(d===l){f=!0,l=c,a=u;break}if(d===a){f=!0,a=c,l=u;break}d=d.sibling}if(!f){for(d=u.child;d;){if(d===l){f=!0,l=u,a=c;break}if(d===a){f=!0,a=u,l=c;break}d=d.sibling}if(!f)throw Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.")}}if(l.alternate!==a)throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.")}if(l.tag!==3)throw Error("Unable to find node on an unmounted component.");return l.stateNode.current===l?s:i}function r(s){var i=s.tag;if(i===5||i===26||i===27||i===6)return s;for(s=s.child;s!==null;){if(i=r(s),i!==null)return i;s=s.sibling}return null}function o(s){var i=s.tag;if(i===5||i===26||i===27||i===6)return s;for(s=s.child;s!==null;){if(s.tag!==4&&(i=o(s),i!==null))return i;s=s.sibling}return null}ve.doesFiberContain=function(s,i){for(var l=s.alternate;i!==null;){if(i===s||i===l)return!0;i=i.return}return!1},ve.findCurrentFiberUsingSlowPath=t,ve.findCurrentHostFiber=function(s){return s=t(s),s!==null?r(s):null},ve.findCurrentHostFiberWithNoPortals=function(s){return s=t(s),s!==null?o(s):null},ve.getContainerFromFiber=function(s){return s.tag===3?s.stateNode.containerInfo:null},ve.getNearestMountedFiber=n,ve.getSuspenseInstanceFromFiber=function(s){if(s.tag===13){var i=s.memoizedState;if(i===null&&(s=s.alternate,s!==null&&(i=s.memoizedState)),i!==null)return i.dehydrated}return null},ve.isFiberMounted=function(s){return n(s)===s},ve.isFiberSuspenseAndTimedOut=function(s){var i=s.memoizedState;return s.tag===13&&i!==null&&i.dehydrated===null},ve.isMounted=function(s){return(s=s._reactInternals)?n(s)===s:!1}}()),ve}process.env.NODE_ENV==="production"?Ks.exports=Qy():Ks.exports=Zy();var eb=Ks.exports;function tb(n){return n._reactInternals}function O0(n){return n}function nb(n){const e=tb(n);if(e===void 0){if(typeof n.render=="function")throw new Error("Unable to find node on an unmounted component.");{const r=Object.keys(n).join(",");throw new Error(`Argument appears to not be a ReactComponent. Keys: ${r}`)}}const t=eb.findCurrentHostFiber(e);return t===null?null:t.stateNode}function rb(n){return nb(n)}function ob(n,e){if(n===e)return!0;if(!n||!e)return!1;const t=Object.keys(n),r=Object.keys(e),o=t.length;if(r.length!==o)return!1;for(let s=0;s<o;s++){const i=t[s];if(n[i]!==e[i]||!Object.prototype.hasOwnProperty.call(e,i))return!1}return!0}class sb extends m.Component{constructor(){super(...arguments);$(this,"viewDescRef",null);$(this,"renderRef",null)}updateEffect(){const{view:t,decorations:r,siblingsRef:o,parentRef:s,getPos:i,node:l}=this.props,a=rb(this);if(!a){if(!(t!=null&&t.composing))return;this.viewDescRef=new Xr(s.current,()=>i.current(),document.createElement("div"),document.createTextNode(l.text??""),l.text??"");return}let c=a;for(;c.firstChild;)c=c.firstChild;!this.viewDescRef||this.viewDescRef instanceof Xr?this.viewDescRef=new Ny(void 0,[],()=>i.current(),l,r,H.empty,a,c):(this.viewDescRef.parent=s.current,this.viewDescRef.children=[],this.viewDescRef.node=l,this.viewDescRef.getPos=()=>i.current(),this.viewDescRef.outerDeco=r,this.viewDescRef.innerDeco=H.empty,this.viewDescRef.dom=a,this.viewDescRef.dom.pmViewDesc=this.viewDescRef,this.viewDescRef.nodeDOM=c),o.current.includes(this.viewDescRef)||o.current.push(this.viewDescRef),o.current.sort(Jt)}shouldComponentUpdate(t){return!ob(this.props,t)}componentDidMount(){this.updateEffect()}componentDidUpdate(){this.updateEffect()}componentWillUnmount(){const{siblingsRef:t}=this.props;if(this.viewDescRef&&t.current.includes(this.viewDescRef)){const r=t.current.indexOf(this.viewDescRef);t.current.splice(r,1)}}render(){const{view:t,getPos:r,node:o,decorations:s}=this.props;return t!=null&&t.composing&&t.state.selection.from>=r.current()&&t.state.selection.from<=r.current()+o.nodeSize?this.renderRef:(this.renderRef=s.reduce(Qr,o.text),this.renderRef)}}function ib(n){let{getPos:e}=n;const{siblingsRef:t,parentRef:r}=m.useContext(Ce),o=m.useRef(null),s=m.useRef(null);return K(()=>{const i=t.current;return()=>{if(o.current&&i.includes(o.current)){const l=i.indexOf(o.current);i.splice(l,1)}}},[t]),K(()=>{s.current&&(o.current?(o.current.parent=r.current,o.current.dom=s.current,o.current.getPos=()=>e.current()):o.current=new Zn(r.current,[],()=>e.current(),s.current,null),t.current.includes(o.current)||t.current.push(o.current),t.current.sort(Jt))}),m.createElement("br",{ref:s,className:"ProseMirror-trailingBreak"})}function lb(n){let{widget:e,getPos:t}=n;const{siblingsRef:r,parentRef:o}=m.useContext(Ce),s=m.useRef(null),i=m.useRef(()=>t.current()).current,l=m.useRef(null);K(()=>{const c=r.current;return()=>{if(s.current&&c.includes(s.current)){const u=c.indexOf(s.current);c.splice(u,1)}}},[r]),K(()=>{l.current&&(s.current?(s.current.parent=o.current,s.current.widget=e,s.current.getPos=()=>t.current(),s.current.dom=l.current):s.current=new Ws(o.current,()=>t.current(),e,l.current),r.current.includes(s.current)||r.current.push(s.current),r.current.sort(Jt))});const{Component:a}=e.type;return a&&m.createElement(a,{ref:l,widget:e,getPos:i,contentEditable:!1})}function Qr(n,e){const{nodeName:t,...r}=e.type.attrs,o=Su(r);return t||typeof n=="string"?m.createElement(t??"span",o,n):m.cloneElement(n,ku(n.props,o))}function Ys(n,e){var t,r,o;return n.type===e.type&&n.marks.every(s=>s.isInSet(e.marks))&&e.marks.every(s=>s.isInSet(n.marks))&&n.key===e.key&&(n.type==="node"?((t=n.outerDeco)==null?void 0:t.length)===((r=e.outerDeco)==null?void 0:r.length)&&((o=n.outerDeco)==null?void 0:o.every(s=>{var i;return(i=e.outerDeco)==null?void 0:i.some(l=>s.from===l.from&&s.to&&l.to&&s.type.eq(l.type))}))&&n.innerDeco.eq(e.innerDeco):!0)&&n.node===e.node&&n.widget===e.widget}const ab=m.memo(function(e){let{child:t,getInnerPos:r}=e;const{view:o}=m.useContext(wt),s=m.useRef(()=>r.current()+t.offset);return s.current=()=>r.current()+t.offset,t.type==="widget"?m.createElement(lb,{key:t.key,widget:t.widget,getPos:s}):t.type==="native-widget"?m.createElement(_y,{key:t.key,widget:t.widget,getPos:s}):t.node.isText?m.createElement(Ce.Consumer,{key:t.key},i=>{let{siblingsRef:l,parentRef:a}=i;return m.createElement(sb,{view:o,node:t.node,getPos:s,siblingsRef:l,parentRef:a,decorations:t.outerDeco})}):m.createElement(Nu,{key:t.key,node:t.node,getPos:s,outerDeco:t.outerDeco,innerDeco:t.innerDeco})}),cb=m.memo(function(e){let{childViews:t,getInnerPos:r}=e;const o=t[0],s=m.useRef(()=>r.current()+o.offset);s.current=()=>r.current()+o.offset;const i=o.marks[0];return i?m.createElement(wu,{getPos:s,key:o.key,mark:i},m.createElement(Gs,{key:o.key,getInnerPos:r,childViews:t.map(l=>({...l,marks:l.marks.slice(1)}))})):m.createElement(m.Fragment,null,t.map(l=>m.createElement(ab,{key:l.key,child:l,getInnerPos:r})))}),Gs=m.memo(function(e){let{getInnerPos:t,childViews:r}=e;const o=r.reduce((s,i)=>{var c;const l=s[s.length-1];if(!l)return[[i]];const a=l[l.length-1];return a?!i.marks.length&&!a.marks.length||i.marks.length&&a.marks.length&&((c=i.marks[0])!=null&&c.eq(a.marks[0]))?[...s.slice(0,s.length-1),[...l.slice(0,l.length),i]]:[...s,[i]]:[...s.slice(0,s.length),[i]]},[]);return m.createElement(m.Fragment,null,o.map(s=>{const i=s[0];return i?m.createElement(cb,{key:i.key,childViews:s,getInnerPos:t}):null}))});function Us(n,e,t,r,o,s){const i=n+e,l=r==null?void 0:r.get(i);if(t==="widget"||t==="native-widget")return o.type.spec.key?o.type.spec.key:(console.warn(`Widget at position ${i} doesn't have a key specified. This may cause issues.`),`${l}-${s}`);if(l)return l;const a=n-1,c=r==null?void 0:r.get(a);return c?`${c}-${e}`:i}function ub(n,e){if(!e||e.widget.type.side>=0||!n||!n.node.isInline)return;const t=n.marks;e.marks=e.marks.reduce((r,o)=>o.addToSet(r),t)}function fb(n,e){if(!e.node.isInline)return;const t=e.marks;for(let r=n.length-1;r>=0;r--){const o=n[r];o.widget.type.side<0||(o.marks=o.marks.reduce((s,i)=>i.addToSet(s),t))}}const db=m.memo(function(e){let{child:t,getInnerPos:r}=e;const o=m.useRef(()=>r.current()+t.offset);return o.current=()=>r.current()+t.offset,t.type==="node"?t.marks.reduce((s,i)=>m.createElement(wu,{getPos:o,mark:i},s),m.createElement(Nu,{key:t.key,outerDeco:t.outerDeco,node:t.node,innerDeco:t.innerDeco,getPos:o})):m.createElement(Gs,{key:t.key,childViews:[t],getInnerPos:r})});function hb(n,e){return n.length?n.every(t=>t.type!=="node"||t.node.isInline)?[m.createElement(Gs,{key:n[0].key,childViews:n,getInnerPos:e})]:n.map(t=>m.createElement(db,{key:t.key,child:t,getInnerPos:e})):[]}const er=m.memo(function(e){let{getPos:t,node:r,innerDecorations:o}=e;const s=jy(),i=m.useRef(()=>t.current()+1),l=m.useRef(new Map).current;if(!r)return null;const a=new Set;let c=[],u=null;$y(r,o,(p,b,g,k)=>{const C=p.type.spec.marks??[];let E;if(b){E=Us(i.current(),g,"native-widget",s==null?void 0:s.posToKey,p,k);const A={type:"native-widget",widget:p,marks:C,offset:g,index:k,key:E},D=l.get(E);D&&Ys(D,A)?D.offset=g:l.set(E,A),a.add(E)}else{E=Us(i.current(),g,"widget",s==null?void 0:s.posToKey,p,k);const A={type:"widget",widget:p,marks:C,offset:g,index:k,key:E},D=l.get(E);D&&Ys(D,A)?D.offset=g:l.set(E,A),a.add(E)}const P=l.get(E);c.push(P),ub(u,l.get(E))},(p,b,g,k)=>{const C=Us(i.current(),k,"node",s==null?void 0:s.posToKey),E={type:"node",node:p,marks:p.marks,innerDeco:g,outerDeco:b,offset:k,key:C},P=l.get(C);P&&Ys(P,E)?(P.offset=k,u=P):(l.set(C,E),u=E),a.add(C),fb(c,u),c=[]});for(const p of l.keys())a.has(p)||l.delete(p);const f=Array.from(l.values()).sort((p,b)=>p.offset-b.offset),d=hb(f,i),h=f[f.length-1];return(!h||h.type!=="node"||h.node.isInline&&!h.node.isText||/\n$/.test(h.node.text))&&d.push(m.createElement(Xy,{getPos:i,key:"trailing-hack-img"}),m.createElement(ib,{getPos:i,key:"trailing-hack-br"})),m.createElement(m.Fragment,null,d)}),Xs={current(){return-1}},pb=m.memo(m.forwardRef(function(e,t){let{className:r,node:o,innerDeco:s,outerDeco:i,as:l,viewDesc:a,...c}=e;const u=m.useRef(null);m.useImperativeHandle(t,()=>u.current,[]);const{childDescriptors:f,nodeViewDescRef:d}=Hs(o,()=>Xs.current(),u,u,s,i,a),h=m.useMemo(()=>({parentRef:d,siblingsRef:f}),[f,d]),p={...c,ref:u,className:r,suppressContentEditableWarning:!0},b=l?m.cloneElement(l,p,m.createElement(Ce.Provider,{value:h},m.createElement(er,{getPos:Xs,node:o,innerDecorations:s}))):m.createElement("div",p,m.createElement(Ce.Provider,{value:h},m.createElement(er,{getPos:Xs,node:o,innerDecorations:s})));if(!o)return b;const g=i.filter(C=>!C.inline);return g.length?g.reduce(Qr,b):b})),Ou=m.createContext(null);function mb(n,e){let{as:t,...r}=n;const o=m.useRef([]),s=m.useRef(null),{setMount:i,...l}=m.useContext(Ou),a=m.useRef(void 0);m.useImperativeHandle(e,()=>s.current,[]);const c=m.useMemo(()=>({parentRef:a,siblingsRef:o}),[o,a]);return m.createElement(Ce.Provider,{value:c},m.createElement(pb,{ref:u=>{s.current=u,i(u)},...r,...l,as:t}))}const Tu=m.forwardRef(mb),gb=[];function yb(n){var p;let{className:e,children:t,nodeViews:r,customNodeViews:o,...s}=n;const[i,l]=m.useState(null),{editor:a,state:c}=Vy(i,{...s,nodeViews:o}),u=a.view?Zg(a.view,a.cursorWrapper):H.empty,f=a.view?Gg(a.view):gb,d=m.useMemo(()=>({nodeViews:r??{}}),[r]),h=m.useMemo(()=>{var b;return{className:e,setMount:l,node:(b=a.view)==null?void 0:b.state.doc,innerDeco:u,outerDeco:f,viewDesc:a.docViewDescRef.current}},[e,a.docViewDescRef,(p=a.view)==null?void 0:p.state.doc,u,f]);return m.createElement(wt.Provider,{value:a},m.createElement(Yg.Provider,{value:c},m.createElement(qc.Provider,{value:d},m.createElement(Ou.Provider,{value:h},t))))}function vu(n){return m.createElement(Ry,null,m.createElement(yb,n))}function pe(n){const e=m.useRef(n),{view:t}=m.useContext(wt);return tt(()=>{e.current=n},[n]),m.useCallback(function(){for(var r=arguments.length,o=new Array(r),s=0;s<r;s++)o[s]=arguments[s];return e.current(t,...o)},[t])}function Qs(n){const e=m.useContext(Mu),t=pe(n);tt(()=>{e(t)},[e,t])}const bb=["p",0],xb=["blockquote",0],kb=["hr"],Sb=["pre",["code",0]],Cb=["br"],wb={doc:{content:"block+"},paragraph:{content:"inline*",group:"block",parseDOM:[{tag:"p"}],toDOM(){return bb}},blockquote:{content:"block+",group:"block",defining:!0,parseDOM:[{tag:"blockquote"}],toDOM(){return xb}},horizontal_rule:{group:"block",parseDOM:[{tag:"hr"}],toDOM(){return kb}},heading:{attrs:{level:{default:1,validate:"number"}},content:"inline*",group:"block",defining:!0,parseDOM:[{tag:"h1",attrs:{level:1}},{tag:"h2",attrs:{level:2}},{tag:"h3",attrs:{level:3}},{tag:"h4",attrs:{level:4}},{tag:"h5",attrs:{level:5}},{tag:"h6",attrs:{level:6}}],toDOM(n){return["h"+n.attrs.level,0]}},code_block:{content:"text*",marks:"",group:"block",code:!0,defining:!0,parseDOM:[{tag:"pre",preserveWhitespace:"full"}],toDOM(){return Sb}},text:{group:"inline"},image:{inline:!0,attrs:{src:{validate:"string"},alt:{default:null,validate:"string|null"},title:{default:null,validate:"string|null"}},group:"inline",draggable:!0,parseDOM:[{tag:"img[src]",getAttrs(n){return{src:n.getAttribute("src"),title:n.getAttribute("title"),alt:n.getAttribute("alt")}}}],toDOM(n){let{src:e,alt:t,title:r}=n.attrs;return["img",{src:e,alt:t,title:r}]}},hard_break:{inline:!0,group:"inline",selectable:!1,parseDOM:[{tag:"br"}],toDOM(){return Cb}}},Mb=["em",0],Nb=["strong",0],Eb=["code",0],Db={link:{attrs:{href:{validate:"string"},title:{default:null,validate:"string|null"}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs(n){return{href:n.getAttribute("href"),title:n.getAttribute("title")}}}],toDOM(n){let{href:e,title:t}=n.attrs;return["a",{href:e,title:t},0]}},em:{parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style=italic"},{style:"font-style=normal",clearMark:n=>n.type.name=="em"}],toDOM(){return Mb}},strong:{parseDOM:[{tag:"strong"},{tag:"b",getAttrs:n=>n.style.fontWeight!="normal"&&null},{style:"font-weight=400",clearMark:n=>n.type.name=="strong"},{style:"font-weight",getAttrs:n=>/^(bold(er)?|[5-9]\d{2,})$/.test(n)&&null}],toDOM(){return Nb}},code:{code:!0,parseDOM:[{tag:"code"}],toDOM(){return Eb}}},Au=new hr({nodes:wb,marks:Db}),Pu=Au.spec.marks.append({underline:{parseDOM:[{tag:"u"},{style:"font-style=underline"}],toDOM(){return["u",0]}},strikethrough:{parseDOM:[{tag:"s"},{style:"font-style=strike"},{style:"font-style=strikethrough"}],toDOM(){return["s",0]}}}),Zr="https://dailytelefrag.ru/api",eo="https://dailytelefrag.ru/error_image.png",Iu="https://dailytelefrag.ru/error_embed.png",Ob=(n,e)=>{try{const t=new URL(n);if(t.hostname!=="vkvideo.ru"&&t.hostname!=="vk.com")throw new Error;let r,o;if(t.pathname==="/video_ext.php")r=t.searchParams.get("id"),o=t.searchParams.get("oid");else if(t.pathname.startsWith("/video"))[o,r]=t.pathname.slice(6).split("_");else throw new Error;if(!r||!o)throw new Error;return e?`https://vkvideo.ru/video_ext.php?oid=${o}&id=${r}&hd=2`:!0}catch{return""}},Tb=(n,e)=>{try{const t=new URL(n);if(t.hostname!=="rutube.ru")throw new Error;let r;if(t.pathname.startsWith("/video/"))r=t.pathname.split("/")[2];else if(t.pathname.startsWith("/play/embed/"))r=t.pathname.split("/")[3];else throw new Error;if(!r)throw new Error;return e?`https://rutube.ru/play/embed/${r}`:!0}catch{return""}},vb=(n,e)=>{try{const t=new URL(n);if(t.hostname!=="youtube.com"&&t.hostname!=="www.youtube.com"&&t.hostname!=="youtu.be")throw new Error;if(t.hostname==="youtu.be")return e?`https://youtube.com/embed${t.pathname}`:!0;let r;if(t.pathname==="/watch")r=t.searchParams.get("v");else if(t.pathname.startsWith("/live/"))r=t.pathname.split("/")[2];else if(t.pathname.startsWith("/embed/"))r=t.pathname.split("/")[2];else throw new Error;if(!r)throw new Error;return e?`https://youtube.com/embed/${r}`:!0}catch{return""}},to=n=>{try{const e=new URL(n);switch(e.hostname){case"vkvideo.ru":case"vk.com":return Ob(e,!0)+"";case"rutube.ru":return Tb(e,!0)+"";case"youtube.com":case"www.youtube.com":case"youtu.be":return vb(e,!0)+"";default:throw new Error}}catch{return""}},Ab={atom:!0,attrs:{fid:{default:null,validate:"string|null|number"},src:{default:null,validate:"string|null"},alt:{default:null,validate:"string|null"},title:{default:null,validate:"string|null"}},group:"block",parseDOM:[{tag:"img[src]",getAttrs(n){return{fid:n.getAttribute("fid"),src:n.getAttribute("src"),alt:n.getAttribute("alt"),title:n.getAttribute("title")}}}],toDOM(n){let{fid:e,src:t,alt:r,title:o}=n.attrs;return e&&(t=`${Zr}/files/${e}`),t||(t=eo),["div",{title:o,class:"image"},["img",{fid:e,src:t,alt:r,title:o}]]}},Pb={atom:!0,attrs:{src:{validate:"string"},title:{default:null,validate:"string|null"}},group:"block",parseDOM:[{tag:"iframe[src]",getAttrs(n){return{src:n.getAttribute("src"),title:n.getAttribute("title")}}}],toDOM(n){const{src:e,title:t}=n.attrs,r="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share";return to(e)?["div",{title:t,class:"video"},["iframe",{src:e,title:t,allow:r}]]:["div",{title:t,class:"image"},["img",{src:Iu}]]}},Ib={content:"inline*",group:"block",attrs:{align:{default:null,validate:"string|null"}},parseDOM:[{tag:"p",getAttrs(n){let e=n.getAttribute("align");return e!=="right"&&e!=="center"&&e!=="justify"&&(e=null),{align:e}}}],toDOM(n){const{align:e}=n.attrs;return["p",{align:e},0]}},Vb={attrs:{level:{default:1,validate:"number"}},content:"inline*",marks:"underline strikethrough",group:"block",parseDOM:[{tag:"h1",attrs:{level:1}},{tag:"h2",attrs:{level:2}},{tag:"h3",attrs:{level:3}},{tag:"h4",attrs:{level:4}},{tag:"h5",attrs:{level:5}},{tag:"h6",attrs:{level:6}}],toDOM(n){return["h"+n.attrs.level,0]}},Rb={atom:!0,content:"image*",group:"block",toDOM(){return["div",{class:"carousel"},0]}},Vu=Au.spec.nodes.remove("image").append({image:Ab,video:Pb}),no=new hr({nodes:Vu.remove("horizontal_rule").remove("heading"),marks:Pu}),zb=Vu.remove("heading").remove("paragraph").prepend({paragraph:Ib}).append({heading:Vb}).append({carousel:Rb}).append(ag({tableGroup:"block",cellContent:"(paragraph | ordered_list | bullet_list)+",cellAttributes:{halign:{default:null,getFromDOM(n){const e=n.getAttribute("align")||null;return e==="left"||e==="right"||e==="center"?e:null},setDOMAttr(n,e){n&&(e.style=(e.style||"")+`text-align: ${n};`)}},valign:{default:null,getFromDOM(n){const e=n.style.verticalAlign||null;return e==="top"||e==="bottom"||e==="middle"?e:null},setDOMAttr(n,e){n&&(e.style=(e.style||"")+`vertical-align: ${n};`)}}}})),Nt=new hr({nodes:Bp(zb,"(paragraph | ordered_list | bullet_list)*","block"),marks:Pu}),$b=n=>{if(n)try{const e=be.fromJSON(Nt,JSON.parse(n)),t=$e.fromSchema(Nt).serializeFragment(e.content);return Pt.fromSchema(no).parse(t)}catch(e){console.error(`Can not convert content to simple schema: ${e}`)}},tr=({ref:n,item:e})=>{const[t,r]=m.useState(!0),[o,s]=m.useState(!1),[i,l]=m.useState(!1);tt(c=>{c&&(r(e.isActive&&e.isActive(c.state)),l(e.isSelected&&!e.isSelected(c.state)),e.isDisabled?s(e.isDisabled(c.state)):s(!e.command(c.state)))});const a=pe(c=>{c&&(o||e.command(c.state,c.dispatch,c),c.focus())});return i?null:y.jsx("div",{ref:n,className:`MenuItem ${t?"active":""} ${o?"disabled":""}`,onClick:c=>{c.stopPropagation(),c.preventDefault(),a()},children:e.icon})},Ru=({schema:n})=>{const[e,t]=m.useState(void 0),[r,o]=m.useState(void 0);return m.useEffect(()=>{if(t(void 0),o(void 0),n.nodes.paragraph){const s=n.nodes.paragraph;t({icon:y.jsx(M.Icons.Type,{}),command:on(s)})}if(n.nodes.code_block){const s=n.nodes.code_block;o({icon:y.jsx(M.Icons.CodeXml,{}),command:on(s)})}},[n]),y.jsxs(y.Fragment,{children:[e&&y.jsx(tr,{item:e}),r&&y.jsx(tr,{item:r})]})},ro=({items:n})=>y.jsx("div",{className:"MenuBlock",children:n.map((e,t)=>y.jsx(tr,{item:e},t))}),jb=({schema:n,isOpen:e,onClose:t})=>{const r=pe((o,s)=>{o&&(ke(n.marks.link,{href:s})(o.state,o.dispatch),t(),o.focus())});return y.jsx(M.Prompt,{title:"Введите URL для ссылки",isOpen:e,onCancel:t,onSubmit:r})},zu=({schema:n})=>{const[e,t]=m.useState([]),[r,o]=m.useState(!1);return m.useEffect(()=>{const s=[];if(n.marks.strong){const i=n.marks.strong;s.push({icon:y.jsx(M.Icons.Bold,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.em){const i=n.marks.em;s.push({icon:y.jsx(M.Icons.Italic,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.underline){const i=n.marks.underline;s.push({icon:y.jsx(M.Icons.Underline,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.strikethrough){const i=n.marks.strikethrough;s.push({icon:y.jsx(M.Icons.Strikethrough,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.code){const i=n.marks.code;s.push({icon:y.jsx(M.Icons.Code,{}),command:ke(i),isActive:l=>Kt(l,i)})}if(n.marks.link){const i=n.marks.link;s.push({icon:y.jsx(M.Icons.Link,{}),isActive:l=>Kt(l,i),isDisabled:l=>l.selection.empty?!0:!ke(i)(l),command:(l,a,c)=>(Kt(l,i)?(ke(i)(l,a),c==null||c.focus()):o(!0),!0)})}t(s)},[n]),e.length<1?null:y.jsxs(y.Fragment,{children:[y.jsx(ro,{items:e}),y.jsx(jb,{isOpen:r,schema:n,onClose:()=>o(!1)})]})};function Kt(n,e){let{from:t,$from:r,to:o,empty:s}=n.selection;return s?!!e.isInSet(n.storedMarks||r.marks()):n.doc.rangeHasMark(t,o,e)}const $u=()=>y.jsxs("div",{className:"MenuBlock",children:[y.jsx(tr,{item:{icon:y.jsx(M.Icons.Undo,{}),command:To}}),y.jsx(tr,{item:{icon:y.jsx(M.Icons.Redo,{}),command:Sr}})]}),ju=({schema:n})=>{const[e,t]=m.useState([]);return m.useEffect(()=>{const r=[];if(n.nodes.bullet_list){const o=n.nodes.bullet_list;r.push({icon:y.jsx(M.Icons.List,{}),command:(s,i)=>Pr(o)(s,i)})}if(n.nodes.ordered_list){const o=n.nodes.ordered_list;r.push({icon:y.jsx(M.Icons.ListOrdered,{}),command:(s,i)=>Pr(o)(s,i)})}if(n.nodes.blockquote){const o=n.nodes.blockquote;r.push({icon:y.jsx(M.Icons.Quote,{}),command:(s,i)=>Sl(o)(s,i)})}t(r)},[n]),e.length<1?null:y.jsx(ro,{items:e})},Fu=({pos:n,isOpen:e,onClose:t})=>{const[r,o]=m.useState(""),[s,i]=m.useState(),[l,a]=m.useState(""),[c,u]=m.useState(!1);m.useEffect(()=>{o(""),a(""),i(void 0)},[e]),tt(d=>{if(!d||!e)return;const h=et.getState(d.state);u(h.upload!==void 0)},[e]);const f=pe(d=>{d&&(c?pm(d,s,l,n):mm(d,r,l,n),d.focus(),t())});return y.jsxs(M.Modal,{isOpen:e,onClose:t,children:[y.jsx("h1",{children:"Вставка картинки"}),y.jsxs(M.Form,{submit:"Вставить",submitType:"Success",onSubmit:f,onCancel:t,children:[c?y.jsx(M.Image,{id:"image",value:s,onChange:i,text:y.jsxs("span",{children:[y.jsx(M.Icons.Image,{}),y.jsx("br",{}),"Выберите файл"]}),required:!0,label:"Картинка"}):y.jsx(M.Input,{id:"href",value:r,onChange:o,required:!0,label:"Ссылка на картинку"}),y.jsx(M.Input,{id:"value",value:l,onChange:a,label:"Подпись"})]})]})},Fb=({schema:n,isOpen:e,onClose:t})=>{const[r,o]=m.useState(""),[s,i]=m.useState("");m.useEffect(()=>{o(""),i("")},[e]);const l=pe(a=>{const c=n.nodes.video;if(!a||!r||!c)return;const u=to(r);a.dispatch(a.state.tr.replaceSelectionWith(c.create({src:u,title:s}))),a.focus(),t()});return n.nodes.video?y.jsxs(M.Modal,{isOpen:e,onClose:t,children:[y.jsx("h1",{children:"Вставка видео"}),y.jsxs(M.Form,{submit:"Вставить",submitType:"Success",onSubmit:l,onCancel:t,children:[y.jsx(M.Input,{id:"src",value:r,onChange:o,label:"Ссылка на видео",bottom:"Поддерживаются VK Video, RuTube и YouTube",required:!0}),y.jsx(M.Input,{id:"value",value:s,onChange:i,label:"Подпись"})]})]}):null},Bu=({schema:n})=>{const[e,t]=m.useState([]),[r,o]=m.useState(!1),[s,i]=m.useState(!1);return m.useEffect(()=>{const l=[];if(n.nodes.image){const a=n.nodes.image;l.push({icon:y.jsx(M.Icons.Image,{}),isDisabled:c=>!Zs(c,a),command:()=>(o(!0),!0)})}if(n.nodes.video){const a=n.nodes.video;l.push({icon:y.jsx(M.Icons.Film,{}),isDisabled:c=>!Zs(c,a),command:()=>(i(!0),!0)})}if(n.nodes.horizontal_rule){const a=n.nodes.horizontal_rule;l.push({icon:y.jsx(M.Icons.FlipVertical,{}),isDisabled:c=>!Zs(c,a),command:(c,u)=>u?(u(c.tr.replaceSelectionWith(a.create())),!0):!1})}n.nodes.table&&l.push({icon:y.jsx(M.Icons.Table,{}),isDisabled:Oe,command:Bb()}),t(l)},[n]),e.length<1?null:y.jsxs(y.Fragment,{children:[y.jsx(ro,{items:e}),y.jsx(Fu,{isOpen:r,onClose:()=>o(!1)}),y.jsx(Fb,{isOpen:s,schema:n,onClose:()=>i(!1)})]})},Zs=(n,e)=>{let t=n.selection.$from;for(let r=t.depth;r>=0;r--){let o=t.index(r);if(t.node(r).canReplaceWith(o,o,e))return!0}return!1};function Bb(){return(n,e)=>{const t=n.tr.selection.anchor+1,r=n.tr,o=n.schema.nodes.table_cell.createAndFill(),s=n.schema.nodes.table.create(null,S.fromArray([n.schema.nodes.table_row.create(null,S.fromArray([o,o,o])),n.schema.nodes.table_row.create(null,S.fromArray([o,o,o]))]));return e&&e(r.replaceSelectionWith(s).scrollIntoView().setSelection(I.near(r.doc.resolve(t)))),!0}}const Lu=()=>y.jsx(ro,{items:[{icon:y.jsx(M.Icons.JoinUp,{}),command:ml},{icon:y.jsx(M.Icons.IndentDecrease,{}),command:gl},{icon:y.jsx(M.Icons.SquareDashed,{}),command:bl}]}),Lb=({schema:n})=>y.jsxs("div",{className:"SimpleMenuBar",children:[y.jsx("div",{className:"MenuBlock",children:y.jsx(Ru,{schema:n})}),y.jsx(zu,{schema:n}),y.jsx(Bu,{schema:n}),y.jsx(ju,{schema:n}),y.jsx(Lu,{}),y.jsx($u,{})]}),Wu=m.forwardRef(function({children:e,nodeProps:t,...r},o){const[s,i]=m.useState(t.node.attrs.title??""),[l,a]=m.useState(!1),[c,u]=m.useState("");Qs(()=>!0),tt(p=>{if(u(""),a(!1),!p||!p.state.schema.nodes.carousel)return;const b=t.getPos(),g=p.state.doc.resolve(b).parent;if(a(g.type.name!=="carousel"),g.type.name==="carousel"){let k=0;g.forEach((C,E)=>{C===t.node&&(k=E+1)}),u(k?`${k} / ${g.childCount}`:"")}});const f=pe((p,b)=>{if(!p)return;i(b);const g=p.state.tr,k=t.getPos();p.dispatch(g.setNodeMarkup(k,null,{...t.node.attrs,title:b})),p.focus()}),d=pe(p=>{if(!p)return;const b=t.getPos(),g=t.node.nodeSize,k=t.node.attrs,C=p.state.schema,E=C.nodes.carousel.create(null,C.nodes.image.create(k));p.dispatch(p.state.tr.replaceWith(b,b+g,E))}),h=pe(p=>{if(!p)return;const b=p.state.tr,g=t.getPos(),k=t.node.nodeSize,C=p.state.doc.resolve(g).parent;C.type.name==="carousel"&&C.childCount===1?p.dispatch(b.delete(g-1,g-1+C.nodeSize)):p.dispatch(b.delete(g,g+k))});return y.jsxs("div",{...r,ref:o,className:"image",title:t.node.attrs.title,children:[y.jsxs("div",{className:"image-buttons",children:[l&&y.jsx("div",{onClick:d,className:"text-button",children:"Сделать карусель"}),c&&y.jsx("div",{className:"text-button",children:c}),y.jsx("div",{onClick:h,children:y.jsx(M.Icons.Trash,{})})]}),y.jsx("img",{title:t.node.attrs.title,alt:t.node.attrs.alt,src:t.node.attrs.fid?`${Zr}/files/${t.node.attrs.fid}`:t.node.attrs.src}),y.jsx("div",{children:y.jsx(M.Editable,{value:s,placeholder:"Подпись под изображением (не обязательно)",onChange:f,empty:!0,style:{textAlign:"center",cursor:"text"}})})]})}),_u=m.forwardRef(function({children:e,nodeProps:t,...r},o){const[s,i]=m.useState(""),[l,a]=m.useState(t.node.attrs.title??""),c="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share";Qs(()=>!0),m.useEffect(()=>{i(to(t.node.attrs.src))},[t]);const u=pe((f,d)=>{if(!f)return;a(d);const{$from:h,$to:p}=f.state.selection,b=h.blockRange(p);if(b){const g=f.state.doc;let k=f.state.tr;g.nodesBetween(b.start,b.end,(C,E)=>{C.type.name==="video"&&(k=k.setNodeMarkup(E,null,{...t.node.attrs,title:d}))}),f.dispatch(k)}f.focus()});return y.jsxs("div",{...r,ref:o,className:s?"video":"image",title:t.node.attrs.title,children:[s?y.jsx("iframe",{src:s,allow:c}):y.jsx("img",{src:Iu}),y.jsx("div",{children:y.jsx(M.Editable,{value:l,placeholder:"Подпись под видео (не обязательно)",onChange:u,empty:!0,style:{textAlign:"center",cursor:"text"}})})]})}),qu=({onSave:n,disabled:e=!1,notEmpty:t=!0,wasChanged:r=!0})=>{const[o,s]=m.useState(!0);tt(l=>{let a=!1;const c=l.state.doc,u=!!c.textBetween(0,c.content.size,void 0," ").length,f=!!vo(l.state);r&&t?a=u&&f:r?a=f:t&&(a=u),s(a)});const i=pe(l=>{try{let a;const c=Ts(l.state);if(c){const u=l.state.apply(c.setMeta("addToHistory",!1));a=JSON.stringify(u.doc.toJSON())}else a=JSON.stringify(l.state.doc.toJSON());n({content:a,format:"prose"})}catch(a){console.error(`Can not save doc: ${a}`)}});return y.jsx(M.Button,{type:"Accent",disabled:e||!o,label:"Сохранить",size:"Small",onClick:i})},Wb=({title:n=!1,content:e,onSave:t,onCancel:r,onChange:o,onUpload:s})=>{const[i,l]=m.useState(""),[a,c]=m.useState();m.useEffect(()=>{const h=Ke.create({doc:$b(e),schema:no,plugins:_c({schema:no,upload:s})});c(h),n!==!1&&l(typeof n=="string"?n:"")},[n,e]);const u=()=>n!==!1?i.trim().length>0:!0,f=h=>{!t||!u()||t({...h,name:i})},d=()=>{r&&r()};return a?y.jsxs("div",{className:"ProseNotes",children:[n!==!1&&y.jsx("input",{className:"ProseNotesTitle",onChange:h=>l(h.currentTarget.value),value:i,placeholder:"Укажите заголовок"}),y.jsxs(vu,{state:a,dispatchTransaction:h=>c(p=>{const b=p==null?void 0:p.apply(h);return b&&o&&o(!!vo(b)),b}),nodeViews:{image:Wu,video:_u},children:[y.jsxs("div",{className:"ProseNotesContent",children:[y.jsx(Lb,{schema:no}),y.jsx(Tu,{})]}),(t||r)&&y.jsxs("div",{className:"ProseNotesButtons",children:[r&&y.jsx("span",{className:"a small",onClick:d,children:"Отменить"}),t&&y.jsx(qu,{onSave:f,disabled:!u(),wasChanged:!1})]})]})]}):null},_b=({schema:n})=>{const e=m.useRef(null),[t,r]=m.useState([]),[o,s]=m.useState([]),[i,l]=m.useState(!1);tt(c=>{const u=n.nodes.heading;if(!c||!u||!i)return;const f=[],d=[];for(let h=2;h<7;h++){const b=on(u,{level:h});d[h]=b,f[h]={id:h,icon:y.jsx(qb,{level:h}),text:`уровень ${h}`,disabled:!b(c.state)}}r(f),s(d)},[i]);const a=pe((c,u)=>{!c||!u.id||(o[u.id](c.state,c.dispatch,c),l(!1),c.focus())});return n.nodes.heading?y.jsxs(y.Fragment,{children:[y.jsx("div",{ref:e,className:"MenuItem",onClick:()=>l(!0),children:y.jsx(M.Icons.Heading,{})}),e.current&&y.jsx(M.Menu,{parent:e.current,items:t,isOpen:i,onClose:()=>l(!1),onClick:a,horizontal:"inner-left"})]}):null},qb=({level:n})=>{switch(n){case 2:return y.jsx(M.Icons.Heading2,{});case 3:return y.jsx(M.Icons.Heading3,{});case 4:return y.jsx(M.Icons.Heading4,{});case 5:return y.jsx(M.Icons.Heading5,{});case 6:return y.jsx(M.Icons.Heading6,{});default:return y.jsx(M.Icons.Heading,{})}},Hb=[{id:"left",icon:y.jsx(M.Icons.AlignLeft,{}),text:"Прижать влево"},{id:"right",icon:y.jsx(M.Icons.AlignRight,{}),text:"Прижать вправо"},{id:"center",icon:y.jsx(M.Icons.AlignCenter,{}),text:"Отцентровать"},{id:"justify",icon:y.jsx(M.Icons.AlignJustify,{}),text:"Выровнять по краям"}],Jb=({schema:n})=>{const e=m.useRef(null),[t,r]=m.useState(!1),o=pe((s,i)=>{if(!s||!i.id)return;const l=i.id==="left"?null:i.id,{$from:a,$to:c}=s.state.selection,u=a.blockRange(c);if(u){const f=s.state.doc;let d=s.state.tr;f.nodesBetween(u.start,u.end,(h,p)=>{h.type.name==="paragraph"&&(d=d.setNodeMarkup(p,null,{align:l}))}),s.dispatch(d)}s.focus(),r(!1)});return n.nodes.paragraph?y.jsxs(y.Fragment,{children:[y.jsx("div",{ref:e,className:"MenuItem",onClick:()=>r(!0),children:y.jsx(M.Icons.AlignLeft,{})}),e.current&&y.jsx(M.Menu,{parent:e.current,items:Hb,isOpen:t,onClose:()=>r(!1),onClick:o,horizontal:"inner-left"})]}):null},Kb=({schema:n,onSave:e})=>y.jsxs("div",{className:"MenuBar",children:[y.jsxs("div",{className:"MenuBlock",children:[y.jsx(_b,{schema:n}),y.jsx(Ru,{schema:n})]}),y.jsx(zu,{schema:n}),y.jsx(Bu,{schema:n}),y.jsx(ju,{schema:n}),y.jsx(Jb,{schema:n}),y.jsx(Lu,{}),y.jsx($u,{}),y.jsx("div",{className:"MenuBlock",children:y.jsx(qu,{onSave:e})})]}),Yb=n=>{if(n.type.name!=="table")return[];let e=[];n.content.content.forEach(s=>{if(s.type.name!=="table_row")return;let i=0;s.content.content.forEach(l=>{if(l.type.name!=="table_header"&&l.type.name!=="table_cell")return;const a=l.attrs.colspan,c=l.attrs.colwidth;for(let u=0;u<a;u++){const f=i+u,d=c?Math.round(c/a):1;(!e[f]||a===1)&&(e[f]=d)}i+=a})});const r=e.reduce((s,i)=>s+i,0);e=e.map(s=>Math.round(s*100/r));const o=100-e.reduce((s,i)=>s+i,0);return e[e.length-1]+=o,e},Gb=n=>{var r;const e=(r=n.parentElement)==null?void 0:r.closest("TABLE");if(!e)return[];let t=[];for(let o=0;o<e.rows.length;o++){const s=e.rows[o];let i=0;for(let l=0;l<s.cells.length;l++){const a=s.cells[l],c=a.colSpan,u=a.clientWidth;for(let f=0;f<c;f++){const d=i+f,h=u?Math.round(u/c):1;(!t[d]||c===1)&&(t[d]=h)}i+=c}}return t},Ub=m.forwardRef(function({children:e,nodeProps:t,...r},o){const[s,i]=m.useState([]);m.useEffect(()=>{i(Yb(t.node))},[t]);const l=pe(a=>{jg(a.state,a.dispatch)});return y.jsxs("table",{ref:o,...r,children:[y.jsx("colgroup",{children:s.map((a,c)=>y.jsx("col",{style:{width:`${a}%`}},c))}),y.jsx("caption",{onClick:l,children:y.jsx(M.Icons.Trash,{})}),y.jsx("tbody",{children:e})]})}),Xb=[{id:"toggleHeaderRow",text:"Toggle header row",icon:y.jsx(M.Icons.Heading,{})},{id:"addRowBefore",text:"Insert row before",icon:y.jsx(M.Icons.RowInsertBefore,{})},{id:"addRowAfter",text:"Insert row after",icon:y.jsx(M.Icons.RowInsertAfter,{})},{id:"deleteRow",text:"Delete row",icon:y.jsx(M.Icons.Trash,{})}],Qb=[{id:"toggleHeaderColumn",text:"Toggle header column",icon:y.jsx(M.Icons.Heading,{})},{id:"addColumnBefore",text:"Insert column before",icon:y.jsx(M.Icons.ColumnInsertBefore,{})},{id:"addColumnAfter",text:"Insert column after",icon:y.jsx(M.Icons.ColumnInsertAfter,{})},{id:"deleteColumn",text:"Delete column",icon:y.jsx(M.Icons.Trash,{})}],Zb=[{id:"toggleHeaderCell",text:"Toggle header",icon:y.jsx(M.Icons.Heading,{})},{id:"alignLeft",text:"Horizontal align left",icon:y.jsx(M.Icons.AlignLeft,{})},{id:"alignCenter",text:"Horizontal align center",icon:y.jsx(M.Icons.AlignCenter,{})},{id:"alignRight",text:"Horizontal align Right",icon:y.jsx(M.Icons.AlignRight,{})},{id:"alignTop",text:"Vertical align top",icon:y.jsx(M.Icons.AlignTop,{})},{id:"alignMiddle",text:"Vertical align middle",icon:y.jsx(M.Icons.AlignMiddle,{})},{id:"alignBottom",text:"Vertical align bottom",icon:y.jsx(M.Icons.AlignBottom,{})},{id:"mergeCells",text:"Merge cells",icon:y.jsx(M.Icons.CellsMerge,{})},{id:"splitCell",text:"Split cell",icon:y.jsx(M.Icons.CellsSplit,{})}],Hu=({parent:n,isRowMenuOpen:e,isCellMenuOpen:t,isColumnMenuOpen:r,onRowMenuClose:o,onCellMenuClose:s,onColumnMenuClose:i})=>{const l=pe((a,c)=>{if(a){switch(c.id){case"toggleHeaderRow":Vg(a.state,a.dispatch);break;case"addRowBefore":Ng(a.state,a.dispatch);break;case"addRowAfter":Eg(a.state,a.dispatch);break;case"deleteRow":Og(a.state,a.dispatch);break;case"toggleHeaderColumn":Rg(a.state,a.dispatch);break;case"addColumnBefore":kg(a.state,a.dispatch);break;case"addColumnAfter":Sg(a.state,a.dispatch);break;case"deleteColumn":wg(a.state,a.dispatch);break;case"mergeCells":vg(a.state,a.dispatch);break;case"splitCell":Ag(a.state,a.dispatch);break;case"toggleHeaderCell":zg(a.state,a.dispatch);break;case"alignLeft":mn("halign","left")(a.state,a.dispatch);break;case"alignCenter":mn("halign","center")(a.state,a.dispatch);break;case"alignRight":mn("halign","right")(a.state,a.dispatch);break;case"alignTop":mn("valign","top")(a.state,a.dispatch);break;case"alignMiddle":mn("valign","middle")(a.state,a.dispatch);break;case"alignBottom":mn("valign","bottom")(a.state,a.dispatch);break}o(),s(),i(),a.focus()}});return n?y.jsxs(y.Fragment,{children:[y.jsx(M.Menu,{parent:n,items:Xb,isOpen:e,onClose:o,onClick:l,vertical:"top",horizontal:"inner-left"}),y.jsx(M.Menu,{parent:n,items:Zb,isOpen:t,onClose:s,onClick:l,horizontal:"inner-left"}),y.jsx(M.Menu,{parent:n,items:Qb,isOpen:r,onClose:i,onClick:l,vertical:"top",horizontal:"inner-left",margin:"var(--alxgrn-unit)"})]}):null},Ju=({parent:n,isResizible:e,onWidth:t})=>{const[r,o]=m.useState(!1),[s,i]=m.useState(0);m.useEffect(()=>{const a=()=>{o(!1)},c=u=>{if(!r||!n||!t)return;u.preventDefault(),u.stopPropagation(),t(u.screenX-s);const f=Gb(n);console.log(`COLS: ${f} px`)};return document.addEventListener("mouseup",a),document.addEventListener("mousemove",c),()=>{document.removeEventListener("mouseup",a),document.removeEventListener("mousemove",c)}},[n,r,t]);const l=a=>{a.preventDefault(),a.stopPropagation(),o(!0),i(a.screenX)};return!n||!e||!t?null:y.jsx("div",{className:`ProseMirror-cell-resizer ${r?"dragging":""}`,onMouseDown:l})},Ku=m.forwardRef(function({children:e,nodeProps:t,...r},o){const s=m.useRef(null),[i,l]=m.useState(!1),[a,c]=m.useState(!1),[u,f]=m.useState(!1),[d,h]=m.useState(!1),[p,b]=m.useState();m.useEffect(()=>{const C=E=>{s.current!==E.target&&(l(!1),c(!1),f(!1))};return document.addEventListener("contextmenu",C,!0),()=>document.removeEventListener("contextmenu",C,!0)},[]),m.useEffect(()=>{const C=s.current;if(!C||!C.parentNode)return;const E=Array.prototype.indexOf.call(C.parentNode.children,C);h(E<C.parentNode.children.length-1),h(!1)},[s]);const g=C=>{C.preventDefault(),C.stopPropagation(),l(!1),c(!1),f(!1);const E=C.currentTarget.getBoundingClientRect();C.clientY<E.y?f(!0):C.clientX<E.x?l(!0):c(!0)},k=C=>{b(C)};return t.node.type.spec.tableRole==="header_cell"?y.jsxs("th",{...r,datatype:`width-${t.node.attrs.colwidth}`,colSpan:t.node.attrs.colspan,rowSpan:t.node.attrs.rowspan,style:{textAlign:t.node.attrs.halign,verticalAlign:t.node.attrs.valign},onContextMenu:g,ref:C=>{s.current=C,o&&(typeof o=="function"?o(C):o.current=C)},children:[e,y.jsx(Ju,{parent:s.current,isResizible:d,onWidth:k}),y.jsx(Hu,{parent:s.current,isRowMenuOpen:i,onRowMenuClose:()=>l(!1),isCellMenuOpen:a,onCellMenuClose:()=>c(!1),isColumnMenuOpen:u,onColumnMenuClose:()=>f(!1)})]}):y.jsxs("td",{...r,datatype:`width-${p}`,colSpan:t.node.attrs.colspan,rowSpan:t.node.attrs.rowspan,style:{textAlign:t.node.attrs.halign,verticalAlign:t.node.attrs.valign},onContextMenu:g,ref:C=>{s.current=C,o&&(typeof o=="function"?o(C):o.current=C)},children:[e,y.jsx(Ju,{parent:s.current,isResizible:d,onWidth:k}),y.jsx(Hu,{parent:s.current,isRowMenuOpen:i,onRowMenuClose:()=>l(!1),isCellMenuOpen:a,onCellMenuClose:()=>c(!1),isColumnMenuOpen:u,onColumnMenuClose:()=>f(!1)})]})}),e0=m.forwardRef(function({children:e,nodeProps:t,...r},o){const s=m.useRef(null),[i,l]=m.useState(!1),[a,c]=m.useState(!1),[u,f]=m.useState(!1),[d,h]=m.useState(!1),[p,b]=m.useState(),g=A=>{const D=A.scrollLeft,j=A.clientWidth,R=A.scrollWidth;f(D>0),h(D<R-j*1.5)};Qs(()=>!0),m.useEffect(()=>{b(t.getPos()+t.node.nodeSize-1),c(t.node.childCount>1),s.current&&t.node.childCount>1&&g(s.current)},[t,s]);const k=pe(A=>{if(!A)return;const D=t.getPos(),j=t.node.nodeSize;A.dispatch(A.state.tr.delete(D,D+j))}),C=()=>{l(!0)},E=A=>{g(A.currentTarget)},P=(A,D)=>{if(A.stopPropagation(),!s.current)return;const j=s.current.clientWidth;let R=s.current.scrollLeft+D*j;s.current.scrollLeft=R};return y.jsxs("div",{ref:o,...r,className:"carousel",children:[y.jsx("div",{className:"carousel-list",ref:s,onScroll:E,children:e}),y.jsxs("div",{className:"carousel-buttons",children:[y.jsx("div",{onClick:k,className:"text-button",children:"Удалить карусель"}),y.jsx("div",{onClick:C,children:y.jsx(M.Icons.Plus,{})})]}),a&&y.jsxs(y.Fragment,{children:[u&&y.jsx("div",{className:"carousel-prev",onClick:A=>P(A,-1),children:y.jsx(M.Icons.ChevronLeft,{})}),d&&y.jsx("div",{className:"carousel-next",onClick:A=>P(A,1),children:y.jsx(M.Icons.ChevronRight,{})})]}),y.jsx(Fu,{pos:p,isOpen:i,onClose:()=>l(!1)})]})}),t0=({content:n,onSave:e,onChange:t,onUpload:r})=>{const[o,s]=m.useState();return m.useEffect(()=>{let i;if(n)try{i=be.fromJSON(Nt,JSON.parse(n))}catch(c){console.error(`Can not parse Prose format: ${c}`)}let l=Ke.create({doc:i,schema:Nt,plugins:_c({schema:Nt,upload:r})});const a=Ts(l);a&&(l=l.apply(a.setMeta("addToHistory",!1))),s(l)},[n]),o?y.jsx("div",{className:"ProseEditor",children:y.jsxs(vu,{state:o,dispatchTransaction:i=>s(l=>{const a=l==null?void 0:l.apply(i);return a&&t&&t(!!vo(a)),a}),nodeViews:{image:Wu,video:_u,table:Ub,table_header:Ku,table_cell:Ku,carousel:e0},children:[y.jsx(Kb,{schema:Nt,onSave:e}),y.jsx(Tu,{})]})}):null},n0=({node:n})=>{const[e,t]=m.useState();return m.useEffect(()=>{var o;const r=(o=n.attrs)==null?void 0:o.align;t(r!=="right"&&r!=="center"&&r!=="justify"?void 0:{textAlign:r})},[n]),y.jsx("p",{style:e,children:Array.isArray(n.content)&&n.content.map((r,o)=>y.jsx(Y,{node:r},o))})},r0=({node:n})=>{if(!n.text)return null;const e=(t,r)=>{var i;if(!Array.isArray(n.marks))return y.jsx(y.Fragment,{children:r});if(!t.length)return y.jsx(y.Fragment,{children:r});const o=t[0].type,s=(i=t[0].attrs)==null?void 0:i.href;switch(o){case"em":return y.jsx("em",{children:e(t.slice(1),r)});case"code":return y.jsx("code",{children:e(t.slice(1),r)});case"strong":return y.jsx("strong",{children:e(t.slice(1),r)});case"underline":return y.jsx("u",{children:e(t.slice(1),r)});case"strikethrough":return y.jsx("s",{children:e(t.slice(1),r)});case"link":return s?y.jsx("a",{target:"_blank",href:s,children:e(t.slice(1),r)}):y.jsx(y.Fragment,{children:e(t.slice(1),r)});default:return y.jsx(y.Fragment,{children:e(t.slice(1),r)})}};return e(n.marks,n.text)},o0=({node:n,className:e})=>y.jsx("div",{className:e,children:Array.isArray(n.content)&&n.content.map((t,r)=>y.jsx(Y,{node:t},r))}),s0=({node:n})=>{const e=m.useRef(null),[t,r]=m.useState(""),[o,s]=m.useState(""),[i,l]=m.useState(!1);m.useEffect(()=>{const c=()=>{l(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",c),()=>document.removeEventListener("fullscreenchange",c)},[]),m.useEffect(()=>{var f,d,h,p,b;let c=(f=n.attrs)==null?void 0:f.fid,u=(d=n.attrs)!=null&&d.src?`${(h=n.attrs)==null?void 0:h.src}`:"";c&&(u=`${Zr}/files/${c}`),u||(u=eo),r(u),s((p=n.attrs)!=null&&p.title?`${(b=n.attrs)==null?void 0:b.title}`:"")},[n]);const a=c=>{var u;c.stopPropagation(),i?document.exitFullscreen():(u=e.current)==null||u.requestFullscreen()};return t?y.jsxs("div",{ref:e,title:o,className:"image",children:[y.jsx("img",{src:t,onClick:a}),y.jsx("div",{className:"image-full",onClick:a,children:i?y.jsx(M.Icons.Minimize,{}):y.jsx(M.Icons.Maximize,{})})]}):null},i0=({node:n})=>y.jsx("blockquote",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))}),l0=({node:n})=>y.jsx("table",{children:y.jsx("tbody",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))})}),a0=({node:n})=>y.jsx("tr",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))}),c0=({node:n})=>{const[e,t]=m.useState(),[r,o]=m.useState(),[s,i]=m.useState(),[l,a]=m.useState();return m.useEffect(()=>{var c,u,f,d;t((c=n.attrs)==null?void 0:c.halign),o((u=n.attrs)==null?void 0:u.valign),i((f=n.attrs)!=null&&f.rowspan?parseInt(n.attrs.rowspan+""):1),a((d=n.attrs)!=null&&d.colspan?parseInt(n.attrs.colspan+""):1)},[n]),n.type==="table_header"?y.jsx("th",{colSpan:l,rowSpan:s,style:{textAlign:e,verticalAlign:r},children:Array.isArray(n.content)&&n.content.map((c,u)=>y.jsx(Y,{node:c},u))}):y.jsx("td",{colSpan:l,rowSpan:s,style:{textAlign:e,verticalAlign:r},children:Array.isArray(n.content)&&n.content.map((c,u)=>y.jsx(Y,{node:c},u))})},u0=({node:n})=>{var e;if(!Array.isArray(n.content))return null;switch((e=n.attrs)==null?void 0:e.level){case 1:return y.jsx("h1",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 2:return y.jsx("h2",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 3:return y.jsx("h3",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 4:return y.jsx("h4",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 5:return y.jsx("h5",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});case 6:return y.jsx("h6",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))});default:return y.jsx("h2",{children:n.content.map((t,r)=>y.jsx(Y,{node:t},r))})}},f0=({node:n})=>Array.isArray(n.content)?n.type==="bullet_list"?y.jsx("ul",{children:n.content.map((e,t)=>y.jsx(Y,{node:e},t))}):y.jsx("ol",{children:n.content.map((e,t)=>y.jsx(Y,{node:e},t))}):null,d0=({node:n})=>y.jsx("li",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))}),h0=({node:n})=>y.jsx("pre",{children:Array.isArray(n.content)&&n.content.map((e,t)=>y.jsx(Y,{node:e},t))}),p0=()=>y.jsx("hr",{}),m0=({node:n})=>{const[e,t]=m.useState(""),[r,o]=m.useState(""),s="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share";return m.useEffect(()=>{var i,l,a,c;t((i=n.attrs)!=null&&i.src?`${(l=n.attrs)==null?void 0:l.src}`:""),o((a=n.attrs)!=null&&a.title?`${(c=n.attrs)==null?void 0:c.title}`:"")},[n]),to(e)?y.jsx("div",{title:r,className:"video",children:y.jsx("iframe",{src:e,allow:s})}):y.jsx("div",{title:r,className:"image",children:y.jsx("img",{src:eo})})},g0=()=>y.jsx("br",{}),y0=({node:n})=>{const e=m.useRef(null),t=m.useRef(null),[r,o]=m.useState(!1),[s,i]=m.useState(!1),[l,a]=m.useState(!1),[c,u]=m.useState(1),[f,d]=m.useState(1),h=g=>{const k=g.scrollLeft,C=g.clientWidth,E=g.scrollWidth;i(k>C/2),a(k<E-C*1.5),u(Math.round(k/C+1))};m.useEffect(()=>{var g;a(Array.isArray(n.content)&&n.content.length>1),d(((g=n.content)==null?void 0:g.length)??1),u(1)},[n]),m.useEffect(()=>{const g=()=>{o(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",g),()=>document.removeEventListener("fullscreenchange",g)},[]),m.useEffect(()=>{if(!r)return;const g=k=>{k.key==="ArrowLeft"&&b(null,-1),k.key==="ArrowRight"&&b(null,1)};return document.body.addEventListener("keydown",g),()=>document.body.removeEventListener("keydown",g)},[r]);const p=g=>{var k;g.stopPropagation(),r?document.exitFullscreen():(k=t.current)==null||k.requestFullscreen()},b=(g,k)=>{if(g==null||g.stopPropagation(),!e.current)return;const C=e.current.clientWidth;let E=e.current.scrollLeft+k*C;e.current.scrollLeft=E};return Array.isArray(n.content)?y.jsxs("div",{className:"carousel",ref:t,children:[y.jsx("div",{className:"carousel-list",ref:e,onScroll:g=>h(g.currentTarget),children:n.content.map((g,k)=>y.jsx(b0,{node:g,onClick:p},k))}),y.jsxs("div",{className:"carousel-numb",children:[c," / ",f]}),y.jsx("div",{className:"carousel-full",onClick:p,children:r?y.jsx(M.Icons.Minimize,{}):y.jsx(M.Icons.Maximize,{})}),s&&y.jsx("div",{className:"carousel-prev",onClick:g=>b(g,-1),children:y.jsx(M.Icons.ChevronLeft,{})}),l&&y.jsx("div",{className:"carousel-next",onClick:g=>b(g,1),children:y.jsx(M.Icons.ChevronRight,{})})]}):null},b0=({node:n,onClick:e})=>{const[t,r]=m.useState(""),[o,s]=m.useState("");return m.useEffect(()=>{var c,u,f,d;let i=(c=n.attrs)==null?void 0:c.fid,l=(u=n.attrs)!=null&&u.src?`${(f=n.attrs)==null?void 0:f.src}`:"",a=(d=n.attrs)!=null&&d.title?`${n.attrs.title}`:"";i&&(l=`${Zr}/files/${i}`),l||(l=eo),r(l),s(a)},[n]),n.type!=="image"?null:y.jsx("div",{className:"image",title:o,children:t&&y.jsx("img",{src:t,onClick:e})})},Y=({node:n,className:e})=>n?(r=>{switch(r.type){case"doc":return y.jsx(o0,{node:r,className:e});case"list_item":return y.jsx(d0,{node:r});case"bullet_list":case"ordered_list":return y.jsx(f0,{node:r});case"image":return y.jsx(s0,{node:r});case"video":return y.jsx(m0,{node:r});case"text":return y.jsx(r0,{node:r});case"table":return y.jsx(l0,{node:r});case"table_row":return y.jsx(a0,{node:r});case"table_cell":case"table_header":return y.jsx(c0,{node:r});case"heading":return y.jsx(u0,{node:r});case"code_block":return y.jsx(h0,{node:r});case"paragraph":return y.jsx(n0,{node:r});case"blockquote":return y.jsx(i0,{node:r});case"carousel":return y.jsx(y0,{node:r});case"horizontal_rule":return y.jsx(p0,{});case"hard_break":return y.jsx(g0,{});default:return y.jsx("span",{className:"unknown_node_type",children:r.type})}})(n):null,x0=({content:n})=>{const[e,t]=m.useState(),[r,o]=m.useState(!1);return m.useEffect(()=>{try{o(!1);const s=JSON.parse(n);t(s)}catch(s){o(!0),console.error(`Can not parse Prose format: ${s}`)}},[n]),r?y.jsx("div",{className:"error",children:"ОШИБКА"}):y.jsx(Y,{node:e,className:"ProseViewer"})},k0=({content:n})=>{const e=m.useRef(null),[t,r]=m.useState(!1);return m.useEffect(()=>{var o;try{r(!1);const s=be.fromJSON(Nt,JSON.parse(n)),i=$e.fromSchema(Nt).serializeFragment(s.content);(o=e.current)==null||o.appendChild(i)}catch(s){r(!0),console.error(`Can not parse Prose format: ${s}`)}},[e,n]),y.jsx("div",{ref:e,className:"ProseViewer",children:t&&y.jsx("div",{className:"error",children:"ОШИБКА"})})};G.DOM=k0,G.Editor=t0,G.Notes=Wb,G.Viewer=x0,Object.defineProperty(G,Symbol.toStringTag,{value:"Module"})});
|
|
66
66
|
//# sourceMappingURL=prose-editor.umd.js.map
|