2026-08-31 14:25:22 +03:00
var Am = Object . defineProperty ; var oo = ( t , e )=>{ for ( var n in e ) Am ( t , n ,{ get : e [ n ], enumerable :! 0 })}; var ei = {}; oo ( ei ,{ CommandManager : ()=> Dr , Editor : ()=> j0 , Extendable : ()=> Yo , Extension : ()=> j , Fragment : ()=> K0 , InputRule : ()=> $t , MappablePosition : ()=> Jl , Mark : ()=> ee , MarkView : ()=> H0 , Node : ()=> $ , NodePos : ()=> Tf , NodeView : ()=> X0 , PasteRule : ()=> jn , ResizableNodeView : ()=> Zo , ResizableNodeview : ()=> G0 , Tracker : ()=> Z0 , attrsEqual : ()=> rf , callOrReturn : ()=> q , canInsertNode : ()=> Xl , combineTransactionSteps : ()=> _o , commands : ()=> Pl , createAtomBlockMarkdownSpec : ()=> af , createBlockMarkdownSpec : ()=> Ht , createChainableState : ()=> Rr , createDocument : ()=> zo , createElement : ()=> q0 , createInlineMarkdownSpec : ()=> cf , createMappablePosition : ()=> ef , createNodeFromContent : ()=> cn , createStyleTag : ()=> of , decodeHtmlEntities : ()=> O0 , defaultBlockAt : ()=> un , deleteProps : ()=> Rl , elementFromString : ()=> $n , encodeHtmlEntities : ()=> R0 , escapeForRegEx : ()=> Yl , extensions : ()=> hf , findChildren : ()=> fn , findChildrenInRange : ()=> $l , findDuplicates : ()=> qu , findParentNode : ()=> qe , findParentNodeClosestToPos : ()=> Vo , flattenExtensions : ()=> Wo , fromString : ()=> Ku , generateHTML : ()=> t0 , generateJSON : ()=> n0 , generateText : ()=> r0 , getAttributes : ()=> qo , getAttributesFromExtensions : ()=> _l , getChangedRanges : ()=> Vn , getDebugJSON : ()=> Xu , getExtensionField : ()=> P , getHTMLFromFragment : ()=> Ir , getMarkAttributes : ()=> Hl , getMarkRange : ()=> Fo , getMarkType : ()=> nt , getMarksBetween : ()=> Pr , getNodeAtPosition : ()=> Ul , getNodeAttributes : ()=> Ju , getNodeType : ()=> re , getRenderedAttributes : ()=> kt , getSchema : ()=> Uo , getSchemaByResolvedExtensions : ()=> Vl , getSchemaTypeByName : ()=> Hn , getSchemaTypeNameByName : ()=> Lr , getSplittedAttributes : ()=> Er , getStyleProperty : ()=> Ql , getText : ()=> jl , getTextBetween : ()=> Wl , getTextContentFromNodes : ()=> Yu , getTextSerializersFromSchema : ()=> Ko , getUpdatedPosition : ()=> Zu , h : ()=> q0 , injectExtensionAttributesToParseRule : ()=> Dl , inputRulesPlugin : ()=> df , isActive : ()=> Jo , isAndroid : ()=> Or , isAtEndOfNode : ()=> Kl , isAtStartOfNode : ()=> ql , isEmptyObject : ()=> Uu , isExtensionRulesEnabled : ()=> Ll , isFirefox : ()=> D0 , isFunction : ()=> Fl , isList : ()=> Po , isMacOS : ()=> zl , isMarkActive : ()=> Ho , isNodeActive : ()=> Ke , isNodeEmpty : ()=> hn , isNodeSelection : ()=> Br , isNodeViewSelected : ()=> i0 , isNumber : ()=> sf , isPlainObject : ()=> Tr , isRegExp : ()=> $o , isSafari : ()=> Wu , isString : ()=> I0 , isTextSelection : ()=> _n , isiOS : ()=> an , markInputRule : ()=> Me , markPasteRule : ()=> ge , markdown : ()=> lf , marksEqual : ()=> z0 , mergeAttributes : ()=> N , mergeDeep : ()=> Zl , minMax : ()=> tt , nodeInputRule : ()=> Hr , nodePasteRule : ()=> Y0 , objectIncludes : ()=> Nr , parseAttributes : ()=> Go , parseIndentedBlocks : ()=> zr , pasteRulesPlugin : ()=> ff , posToDOMRect : ()=> Gl , removeDuplicates : ()=> Gu , renderNestedMarkdownContent : ()=> Wn , resolveExtensions : ()=> jo , resolveFocusPosition : ()=> Bo , rewriteUnknownContent : ()=> s0 , selectionToInsertionEnd : ()=> Bl , serializeAttributes : ()=> Xo , sortExtensions : ()=> Fn , splitExtensions : ()=> dn , textInputRule : ()=> U0 , textPasteRule : ()=> Q0 , textblockTypeInputRule : ()=> Un , updateMarkViewAttributes : ()=> ea , wrappingInputRule : ()=> Je }); function be ( t ){ this . content = t } be . prototype = { constructor : be , find : function ( t ){ for ( var e = 0 ; e < this . content . length ; e += 2 ) if ( this . content [ e ] === t ) return e ; return - 1 }, get : function ( t ){ var e = this . find ( t ); return e ==- 1 ? void 0 : this . content [ e + 1 ]}, update : function ( t , e , n ){ var r = n && n != t ? this . remove ( n ) : this , o = r . find ( t ), i = r . content . slice (); return o ==- 1 ? i . push ( n || t , e ) : ( i [ o + 1 ] = e , n && ( i [ o ] = n )), new be ( i )}, remove : function ( t ){ var e = this . find ( t ); if ( e ==- 1 ) return this ; var n = this . content . slice (); return n . splice ( e , 2 ), new be ( n )}, addToStart : function ( t , e ){ return new be ([ t , e ]. concat ( this . remove ( t ). content ))}, addToEnd : function ( t , e ){ var n = this . remove ( t ). content . slice (); return n . push ( t , e ), new be ( n )}, addBefore : function ( t , e , n ){ var r = this . remove ( e ), o = r . content . slice (), i = r . find ( t ); return o . splice ( i ==- 1 ? o . length : i , 0 , e , n ), new be ( o )}, forEach : function ( t ){ for ( var e = 0 ; e < this . content . length ; e += 2 ) t ( this . content [ e ], this . content [ e + 1 ])}, prepend : function ( t ){ return t = be . from ( t ), t . size ? new be ( t . content . concat ( this . subtract ( t ). content )) : this }, append : function ( t ){ return t = be . from ( t ), t . size ? new be ( this . subtract ( t ). content . concat ( t . content )) : this }, subtract : function ( t ){ var e = this ; t = be . from ( t ); for ( var n = 0 ; n < t . content . le
`)}};Ot.empty=new Ot(!0);var ys=class{constructor(e,n){this.string=e,this.nodeTypes=n,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),this.tokens[this.tokens.length-1]==""&&this.tokens.pop(),this.tokens[0]==""&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+" (in content expression '"+this.string+"')")}};function Dc(t){let e=[];do e.push(Dm(t));while(t.eat("|"));return e.length==1?e[0]:{type:"choice",exprs:e}}function Dm(t){let e=[];do e.push(Lm(t));while(t.next&&t.next!=")"&&t.next!="|");return e.length==1?e[0]:{type:"seq",exprs:e}}function Lm(t){let e=Bm(t);for(;;)if(t.eat("+"))e={type:"plus",expr:e};else if(t.eat("*"))e={type:"star",expr:e};else if(t.eat("?"))e={type:"opt",expr:e};else if(t.eat("{"))e=Im(t,e);else break;return e}function pc(t){/\D/.test(t.next)&&t.err("Expected number, got '"+t.next+"'");let e=Number(t.next);return t.pos++,e}function Im(t,e){let n=pc(t),r=n;return t.eat(",")&&(t.next!="}"?r=pc(t):r=-1),t.eat("}")||t.err("Unclosed braced range"),{type:"range",min:n,max:r,expr:e}}function Pm(t,e){let n=t.nodeTypes,r=n[e];if(r)return[r];let o=[];for(let i in n){let s=n[i];s.isInGroup(e)&&o.push(s)}return o.length==0&&t.err("No node type or group '"+e+"' found"),o}function Bm(t){if(t.eat("(")){let e=Dc(t);return t.eat(")")||t.err("Missing closing paren"),e}else if(/\W/.test(t.next))t.err("Unexpected token '"+t.next+"'");else{let e=Pm(t,t.next).map(n=>(t.inline==null?t.inline=n.isInline:t.inline!=n.isInline&&t.err("Mixing inline and block content"),{type:"name",value:n}));return t.pos++,e.length==1?e[0]:{type:"choice",exprs:e}}}function zm(t){let e=[[]];return o(i(t,0),n()),e;function n(){return e.push([])-1}function r(s,l,a){let c={term:a,to:l};return e[s].push(c),c}function o(s,l){s.forEach(a=>a.to=l)}function i(s,l){if(s.type=="choice")return s.exprs.reduce((a,c)=>a.concat(i(c,l)),[]);if(s.type=="seq")for(let a=0;;a++){let c=i(s.exprs[a],l);if(a==s.exprs.length-1)return c;o(c,l=n())}else if(s.type=="star"){let a=n();return r(l,a),o(i(s.expr,a),a),[r(a)]}else if(s.type=="plus"){let a=n();return o(i(s.expr,l),a),o(i(s.expr,a),a),[r(a)]}else{if(s.type=="opt")return[r(l)].concat(i(s.expr,l));if(s.type=="range"){let a=l;for(let c=0;c<s.min;c++){let d=n();o(i(s.expr,a),d),a=d}if(s.max==-1)o(i(s.expr,a),a);else for(let c=s.min;c<s.max;c++){let d=n();r(a,d),o(i(s.expr,a),d),a=d}return[r(a)]}else{if(s.type=="name")return[r(l,void 0,s.value)];throw new Error("Unknown expr type")}}}}function Lc(t,e){return e-t}function mc(t,e){let n=[];return r(e),n.sort(Lc);function r(o){let i=t[o];if(i.length==1&&!i[0].term)return r(i[0].to);n.push(o);for(let s=0;s<i.length;s++){let{term:l,to:a}=i[s];!l&&n.indexOf(a)==-1&&r(a)}}}function Hm(t){let e=Object.create(null);return n(mc(t,0));function n(r){let o=[];r.forEach(s=>{t[s].forEach(({term:l,to:a})=>{if(!l)return;let c;for(let d=0;d<o.length;d++)o[d][0]==l&&(c=o[d][1]);mc(t,a).forEach(d=>{c||o.push([l,c=[]]),c.indexOf(d)==-1&&c.push(d)})})});let i=e[r.join(",")]=new Ot(r.indexOf(t.length-1)>-1);for(let s=0;s<o.length;s++){let l=o[s][1].sort(Lc);i.next.push({type:o[s][0],next:e[l.join(",")]||n(l)})}return i}}function $m(t,e){for(let n=0,r=[t];n<r.length;n++){let o=r[n],i=!o.validEnd,s=[];for(let l=0;l<o.next.length;l++){let{type:a,next:c}=o.next[l];s.push(a.name),i&&!(a.isText||a.hasRequiredAttrs())&&(i=!1),r.indexOf(c)==-1&&r.push(c)}i&&e.err("Only non-generatable nodes ("+s.join(", ")+") in a required position (see https://prosemirror.net/docs/guide/#generatable)")}}function Ic(t){let e=Object.create(null);for(let n in t){let r=t[n];if(!r.hasDefault)return null;e[n]=r.default}return e}function Pc(t,e){let n=Object.create(null);for(let r in t){let o=e&&e[r];if(o===void 0){let i=t[r];if(i.hasDefault)o=i.default;else throw new RangeError("No value supplied for attribute "+r)}n[r]=o}return n}function Bc(t,e,n,r){for(let o in e)if(!(o in t))throw new RangeError(` Unsupported attribute $ { o } for $ { n } of type $ { r } `);for(let o in t)t[o].validate&&t[o].validate(e[o])}function zc(
` ); else if ( s . linebreakReplacement && /[\r\n]/ . test ( r ) && this . top . findWrapping ( s . linebreakReplacement . create ())){ let l = r . split ( /\r?\n|\r/ ); for ( let a = 0 ; a < l . length ; a ++ ) a && this . insertNode ( s . linebreakReplacement . create (), n , ! 0 ), l [ a ] && this . insertNode ( s . text ( l [ a ]), n , ! /\S/ . test ( l [ a ])); r = "" } else r = r . replace ( /\r?\n|\r/g , " " ); else if ( r = r . replace ( /[ \t\r\n\u000c]+/g , " " ), /^[ \t\r\n\u000c]/ . test ( r ) && this . open == this . nodes . length - 1 ){ let l = o . content [ o . content . length - 1 ], a = e . previousSibling ;( ! l || a && a . nodeName == "BR" || l . isText && /[ \t\r\n\u000c]$/ . test ( l . text )) && ( r = r . slice ( 1 ))} r && this . insertNode ( s . text ( r ), n , ! /\S/ . test ( r )), this . findInText ( e )} else this . findInside ( e )} addElement ( e , n , r ){ let o = this . localPreserveWS , i = this . top ;( e . tagName == "PRE" || /pre/ . test ( e . style && e . style . whiteSpace )) && ( this . localPreserveWS =! 0 ); let s = e . nodeName . toLowerCase (), l ; $c . hasOwnProperty ( s ) && this . parser . normalizeLists && jm ( e ); let a = this . options . ruleFromNode && this . options . ruleFromNode ( e ) || ( l = this . parser . matchTag ( e , this , r )); e : if ( a ? a . ignore : Wm . hasOwnProperty ( s )) this . findInside ( e ), this . ignoreFallback ( e , n ); else if ( ! a || a . skip || a . closeParent ){ a && a . closeParent ? this . open = Math . max ( 0 , this . open - 1 ) : a && a . skip . nodeType && ( e = a . skip ); let c , d = this . needsBlock ; if ( Hc . hasOwnProperty ( s )) i . content . length && i . content [ 0 ]. isInline && this . open && ( this . open -- , i = this . top ), c =! 0 , i . type || ( this . needsBlock =! 0 ); else if ( ! e . firstChild ){ this . leafFallback ( e , n ); break e } let u = a && a . skip ? n : this . readStyles ( e , n ); u && this . addAll ( e , u ), c && this . sync ( i ), this . needsBlock = d } else { let c = this . readStyles ( e , n ); c && this . addElementByRule ( e , a , c , a . consuming ===! 1 ? l : void 0 )} this . localPreserveWS = o } leafFallback ( e , n ){ e . nodeName == "BR" && this . top . type && this . top . type . inlineContent && this . addTextNode ( e . ownerDocument . createTextNode ( `
` ), n )} ignoreFallback ( e , n ){ e . nodeName == "BR" && ( ! this . top . type ||! this . top . type . inlineContent ) && this . findPlace ( this . parser . schema . text ( "-" ), n , ! 0 )} readStyles ( e , n ){ let r = e . style ; if ( r && r . length ) for ( let o = 0 ; o < this . parser . matchedStyles . length ; o ++ ){ let i = this . parser . matchedStyles [ o ], s = r . getPropertyValue ( i ); if ( s ) for ( let l = void 0 ;;){ let a = this . parser . matchStyle ( i , s , this , l ); if ( ! a ) break ; if ( a . ignore ) return null ; if ( a . clearMark ? n = n . filter ( c => ! a . clearMark ( c )) : n = n . concat ( this . parser . schema . marks [ a . mark ]. create ( a . attrs )), a . consuming ===! 1 ) l = a ; else break }} return n } addElementByRule ( e , n , r , o ){ let i , s ; if ( n . node ) if ( s = this . parser . schema . nodes [ n . node ], s . isLeaf ) this . insertNode ( s . create ( n . attrs ), r , e . nodeName == "BR" ) || this . leafFallback ( e , r ); else { let a = this . enter ( s , n . attrs || null , r , n . preserveWhitespace ); a && ( i =! 0 , r = a )} else { let a = this . parser . schema . marks [ n . mark ]; r = r . concat ( a . create ( n . attrs ))} let l = this . top ; if ( s && s . isLeaf ) this . findInside ( e ); else if ( o ) this . addElement ( e , r , o ); else if ( n . getContent ) this . findInside ( e ), n . getContent ( e , this . parser . schema ). forEach ( a => this . insertNode ( a , r , ! 1 )); else { let a = e ; typeof n . contentElement == "string" ? a = e . querySelector ( n . contentElement ) : typeof n . contentElement == "function" ? a = n . contentElement ( e ) : n . contentElement && ( a = n . contentElement ), this . findAround ( e , a , ! 0 ), this . addAll ( a , r ), this . findAround ( e , a , ! 1 )} i && this . sync ( l ) && this . open -- } addAll ( e , n , r , o ){ let i = r || 0 ; for ( let s = r ? e . childNodes [ r ] : e . firstChild , l = o == null ? null : e . childNodes [ o ]; s != l ; s = s . nextSibling , ++ i ) this . findAtPoint ( e , i ), this . addDOM ( s , n ); this . findAtPoint ( e , i )} findPlace ( e , n , r ){ let o , i ; for ( let s = this . open , l = 0 ; s >= 0 ; s -- ){ let a = this . nodes [ s ], c = a . findWrapping ( e ); if ( c && ( ! o || o . length > c . length + l ) && ( o = c , i = a , ! c . length )) break ; if ( a . solid ){ if ( r ) break ; l += 2 }} if ( ! o ) return null ; this . sync ( i ); for ( let s = 0 ; s < o . length ; s ++ ) n = this . enterInner ( o [ s ], null , n , ! 1 ); return n } insertNode ( e , n , r ){ if ( e . isInline && this . needsBlock &&! this . top . type ){ let i = this . textblockFromContext (); i && ( n = this . enterInner ( i , null , n ))} let o = this . findPlace ( e , n , r ); if ( o ){ this . closeExtra (); let i = this . top ; i . match && ( i . match = i . match . matchType ( e . type )); let s = G . none ; for ( let l of o . concat ( e . marks ))( i . type ? i . type . allowsMarkType ( l . type ) : wc ( l . type , e . type )) && ( s = l . addToSet ( s )); return i . content . push ( e . mark ( s )), ! 0 } return ! 1 } enter ( e , n , r , o ){ let i = this . findPlace ( e . create ( n ), r , ! 1 ); return i && ( i = this . enterInner ( e , n , r , ! 0 , o )), i } enterInner ( e , n , r , o =! 1 , i ){ this . closeExtra (); let s = this . top ; s . match = s . match && s . match . matchType ( e ); let l = yc ( e , i , s . options ); s . options & nr && s . content . length == 0 && ( l |= nr ); let a = G . none ; return r = r . filter ( c =>( s . type ? s . type . allowsMarkType ( c . type ) : wc ( c . type , e )) ? ( a = c . addToSet ( a ), ! 1 ) :! 0 ), this . nodes . push ( new vn ( e , n , a , o , null , l )), this . open ++ , r } closeExtra ( e =! 1 ){ let n = this . nodes . length - 1 ; if ( n > this . open ){ for (; n > this . open ; n -- ) this . nodes [ n - 1 ]. content . push ( this . nodes [ n ]. finish ( e )); this . nodes . length = this . open + 1 }} finish (){ return this . open = 0 , this . closeExtra ( this . isOpen ), this . nodes [ 0 ]. finish ( !! ( this . isOpen || this . options . topOpen ))} sync ( e ){ for ( let n = this . open ; n >= 0 ; n -- ){ if ( this . nodes [ n ] == e ) return this . open = n , ! 0 ; this . localPreserveWS && ( this . nodes [ n ]. options |= ir )} return ! 1 } get currentPos (){ this . closeExtra (); let e = 0 ; for ( let n = this . open ; n >= 0 ; n -- ){ let r = this . nodes [ n ]. content ; for ( let o = r . length - 1 ; o >= 0 ; o -- ) e += r [ o ]. nodeSize ; n && e ++ } return e } findAtPoint ( e , n ){ if ( this . find ) for ( let r = 0 ; r < this . find . length ; r ++ ) this . find [ r ]. node == e && this . find [ r ]. offset == n && ( this . find [ r ]. pos = this . currentPos )} findInside ( e ){ if ( this . find ) for ( let n = 0 ; n < this . find . length ; n ++ ) this . find [ n ]. pos == null && e . nodeType == 1 && e . contains ( this . find [ n ]. node ) && ( this . find [ n ]. pos = this . currentPos )} findAround ( e , n , r ){ if ( e != n && this . find ) for ( let o = 0 ; o < this . find . length ; o ++ ) this . find [ o ]. pos == null && e . nodeType == 1 && e . contains ( this . find [ o ]. node ) && n . compareDocumentPosition ( this . find [ o ]. node ) & ( r ? 2 : 4 ) && ( this . find [ o ]. pos = this . currentPos )} findInText ( e ){ if ( this . find ) for ( let n = 0 ; n < this . find . length ; n ++ ) this . find [ n ]. node == e && ( this . find [ n ]. pos = this . currentPos - ( e . nodeValue . length - this . find [ n ]. offset ))} matchesContext ( e ){ if ( e . indexOf ( "|" ) >- 1 ) return e . split ( /\s*\|\s*/ ). some ( this . matchesContext , this ); let n = e . split ( "/" ), r = this . options . context , o =! this . isOpen && ( ! r || r .
`))}})}function og(t,e,n){let r=t.resolve(e),o=r.index();return r.parent.canReplaceWith(o,o+1,n)}function ig(t,e,n,r,o){let i=t.doc.nodeAt(e);if(!i)throw new RangeError("No node at given position");n||(n=i.type);let s=n.create(r,null,o||i.marks);if(i.isLeaf)return t.replaceWith(e,e+i.nodeSize,s);if(!n.validContent(i.content))throw new RangeError("Invalid content for node type "+n.name);t.step(new le(e,e+i.nodeSize,e+1,e+i.nodeSize-1,new A(v.from(s),0,0),1,!0))}function Oe(t,e,n=1,r){let o=t.resolve(e),i=o.depth-n,s=r&&r[r.length-1]||o.parent;if(i<0||o.parent.type.spec.isolating||!o.parent.canReplace(o.index(),o.parent.childCount)||!s.type.validContent(o.parent.content.cutByIndex(o.index(),o.parent.childCount)))return!1;for(let c=o.depth-1,d=n-2;c>i;c--,d--){let u=o.node(c),f=o.index(c);if(u.type.spec.isolating)return!1;let h=u.content.cutByIndex(f,u.childCount),p=r&&r[d+1];p&&(h=h.replaceChild(0,p.type.create(p.attrs)));let m=r&&r[d]||u;if(!u.canReplace(f+1,u.childCount)||!m.type.validContent(h))return!1}let l=o.indexAfter(i),a=r&&r[0];return o.node(i).canReplaceWith(l,l,a?a.type:o.node(i+1).type)}function sg(t,e,n=1,r){let o=t.doc.resolve(e),i=v.empty,s=v.empty;for(let l=o.depth,a=o.depth-n,c=n-1;l>a;l--,c--){i=v.from(o.node(l).copy(i));let d=r&&r[c];s=v.from(d?d.type.create(d.attrs,s):o.node(l).copy(s))}t.step(new pe(e,e,new A(i.append(s),n,n),!0))}function Ie(t,e){let n=t.resolve(e),r=n.index();return Gc(n.nodeBefore,n.nodeAfter)&&n.parent.canReplace(r,r+1)}function lg(t,e){e.content.size||t.type.compatibleContent(e.type);let n=t.contentMatchAt(t.childCount),{linebreakReplacement:r}=t.type.schema;for(let o=0;o<e.childCount;o++){let i=e.child(o),s=i.type==r?t.type.schema.nodes.text:i.type;if(n=n.matchType(s),!n||!t.type.allowsMarks(i.marks))return!1}return n.validEnd}function Gc(t,e){return!!(t&&e&&!t.isLeaf&&lg(t,e))}function Gt(t,e,n=-1){let r=t.resolve(e);for(let o=r.depth;;o--){let i,s,l=r.index(o);if(o==r.depth?(i=r.nodeBefore,s=r.nodeAfter):n>0?(i=r.node(o+1),l++,s=r.node(o).maybeChild(l)):(i=r.node(o).maybeChild(l-1),s=r.node(o+1)),i&&!i.isTextblock&&Gc(i,s)&&r.node(o).canReplace(l,l+1))return e;if(o==0)break;e=n<0?r.before(o):r.after(o)}}function ag(t,e,n){let r=null,{linebreakReplacement:o}=t.doc.type.schema,i=t.doc.resolve(e-n),s=i.node().type;if(o&&s.inlineContent){let d=s.whitespace=="pre",u=!!s.contentMatch.matchType(o);d&&!u?r=!1:!d&&u&&(r=!0)}let l=t.steps.length;if(r===!1){let d=t.doc.resolve(e+n);Jc(t,d.node(),d.before(),l)}s.inlineContent&&Ts(t,e+n-1,s,i.node().contentMatchAt(i.index()),r==null);let a=t.mapping.slice(l),c=a.map(e-n);if(t.step(new pe(c,a.map(e+n,-1),A.empty,!0)),r===!0){let d=t.doc.resolve(c);qc(t,d.node(),d.before(),t.steps.length)}return t}function cg(t,e,n){let r=t.resolve(e);if(r.parent.canReplaceWith(r.index(),r.index(),n))return e;if(r.parentOffset==0)for(let o=r.depth-1;o>=0;o--){let i=r.index(o);if(r.node(o).canReplaceWith(i,i,n))return r.before(o+1);if(i>0)return null}if(r.parentOffset==r.parent.content.size)for(let o=r.depth-1;o>=0;o--){let i=r.indexAfter(o);if(r.node(o).canReplaceWith(i,i,n))return r.after(o+1);if(i<r.node(o).childCount)return null}return null}function mo(t,e,n){let r=t.resolve(e);if(!n.content.size)return e;let o=n.content;for(let i=0;i<n.openStart;i++)o=o.firstChild.content;for(let i=1;i<=(n.openStart==0&&n.size?2:1);i++)for(let s=r.depth;s>=0;s--){let l=s==r.depth?0:r.pos<=(r.start(s+1)+r.end(s+1))/2?-1:1,a=r.index(s)+(l>0?1:0),c=r.node(s),d=!1;if(i==1)d=c.canReplace(a,a,o);else{let u=c.contentMatchAt(a).findWrapping(o.firstChild.type);d=u&&c.canReplaceWith(a,a,u[0])}if(d)return l==0?r.pos:l<0?r.before(s+1):r.after(s+1)}return null}function fr(t,e,n=e,r=A.empty){if(e==n&&!r.size)return null;let o=t.resolve(e),i=t.resolve(n);return Xc(o,i,r)?new pe(e,n,r):new vs(o,i,r).fit()}function Xc(t,e,n){return!n.openStart&&!n.openEnd&&t.start()==e.start()&&t.parent.canReplace(t.index(),e.index(),n.content)}var vs=class{constructor(e,n,r){this.$from=e,this.$to=n,this.unplaced=r,this.frontier=[],this.placed=v.empty;for(let o=0;o<=e.depth;o++){let i=e.node(o);this.fro
` ). scrollIntoView ()), ! 0 )}; function Hs ( t ){ for ( let e = 0 ; e < t . edgeCount ; e ++ ){ let { type : n } = t . edge ( e ); if ( n . isTextblock &&! n . hasRequiredAttrs ()) return n } return null } var $s = ( t , e )=>{ let { $head : n , $anchor : r } = t . selection ; if ( ! n . parent . type . spec . code ||! n . sameParent ( r )) return ! 1 ; let o = n . node ( - 1 ), i = n . indexAfter ( - 1 ), s = Hs ( o . contentMatchAt ( i )); if ( ! s ||! o . canReplaceWith ( i , i , s )) return ! 1 ; if ( e ){ let l = n . after (), a = t . tr . replaceWith ( l , l , s . createAndFill ()); a . setSelection ( I . near ( a . doc . resolve ( l ), 1 )), e ( a . scrollIntoView ())} return ! 0 }, Fs = ( t , e )=>{ let n = t . selection ,{ $from : r , $to : o } = n ; if ( n instanceof we || r . parent . inlineContent || o . parent . inlineContent ) return ! 1 ; let i = Hs ( o . parent . contentMatchAt ( o . indexAfter ())); if ( ! i ||! i . isTextblock ) return ! 1 ; if ( e ){ let s = ( ! r . parentOffset && o . index () < o . parent . childCount ? r : o ). pos , l = t . tr . insert ( s , i . createAndFill ()); l . setSelection ( E . create ( l . doc , s + 1 )), e ( l . scrollIntoView ())} return ! 0 }, _s = ( t , e )=>{ let { $cursor : n } = t . selection ; if ( ! n || n . parent . content . size ) return ! 1 ; if ( n . depth > 1 && n . after () != n . end ( - 1 )){ let i = n . before (); if ( Oe ( t . doc , i )) return e && e ( t . tr . split ( i ). scrollIntoView ()), ! 0 } let r = n . blockRange (), o = r && pt ( r ); return o == null ?! 1 : ( e && e ( t . tr . lift ( r , o ). scrollIntoView ()), ! 0 )}; function yg ( t ){ return ( e , n )=>{ let { $from : r , $to : o } = e . selection ; if ( e . selection instanceof L && e . selection . node . isBlock ) return ! r . parentOffset ||! Oe ( e . doc , r . pos ) ?! 1 : ( n && n ( e . tr . split ( r . pos ). scrollIntoView ()), ! 0 ); if ( ! r . depth ) return ! 1 ; let i = [], s , l , a =! 1 , c =! 1 ; for ( let h = r . depth ;; h -- ) if ( r . node ( h ). isBlock ){ a = r . end ( h ) == r . pos + ( r . depth - h ), c = r . start ( h ) == r . pos - ( r . depth - h ), l = Hs ( r . node ( h - 1 ). contentMatchAt ( r . indexAfter ( h - 1 ))); let m = t && t ( o . parent , a , r ); i . unshift ( m || ( a && l ? { type : l } : null )), s = h ; break } else { if ( h == 1 ) return ! 1 ; i . unshift ( null )} let d = e . tr ;( e . selection instanceof E || e . selection instanceof we ) && d . deleteSelection (); let u = d . mapping . map ( r . pos ), f = Oe ( d . doc , u , i . length , i ); if ( f || ( i [ 0 ] = l ? { type : l } : null , f = Oe ( d . doc , u , i . length , i )), ! f ) return ! 1 ; if ( d . split ( u , i . length , i ), ! a && c && r . node ( s ). type != l ){ let h = d . mapping . map ( r . before ( s )), p = d . doc . resolve ( h ); l && r . node ( s - 1 ). canReplaceWith ( p . index (), p . index () + 1 , l ) && d . setNodeMarkup ( d . mapping . map ( r . before ( s )), l )} return n && n ( d . scrollIntoView ()), ! 0 }} var bg = yg (); var bd = ( t , e )=>{ let { $from : n , to : r } = t . selection , o , i = n . sharedDepth ( r ); return i == 0 ?! 1 : ( o = n . before ( i ), e && e ( t . tr . setSelection ( L . create ( t . doc , o ))), ! 0 )}, wg = ( t , e )=>( e && e ( t . tr . setSelection ( new we ( t . doc ))), ! 0 ); function xg ( t , e , n ){ let r = e . nodeBefore , o = e . nodeAfter , i = e . index (); return ! r ||! o ||! r . type . compatibleContent ( o . type ) ?! 1 :! r . content . size && e . parent . canReplace ( i - 1 , i ) ? ( n && n ( t . tr . delete ( e . pos - r . nodeSize , e . pos ). scrollIntoView ()), ! 0 ) :! e . parent . canReplace ( i , i + 1 ) ||! ( o . isTextblock || Ie ( t . doc , e . pos )) ?! 1 : ( n && n ( t . tr . join ( e . pos ). scrollIntoView ()), ! 0 )} function wd ( t , e , n , r ){ let o = e . nodeBefore , i = e . nodeAfter , s , l , a = o . type . spec . isolating || i . type . spec . isolating ; if ( ! a && xg ( t , e , n )) return ! 0 ; let c =! a && e . parent . canReplace ( e . index (), e . index () + 1 ); if ( c && ( s = ( l = o . contentMatchAt ( o . childCount )). findWrapping ( i . type )) && l . matchType ( s [ 0 ] || i . type ). validEnd ){ if ( n ){ let h = e . pos + i . nodeSize , p = v . empty ; for ( let y = s . length - 1 ; y >= 0 ; y -- ) p = v . from ( s [ y ]. create ( null , p )); p = v . from ( o . copy ( p )); let m = t . tr . step ( new le ( e . pos - 1 , h , e . pos , h , new A ( p , 1 , 0 ), s . length , ! 0 )), g = m . doc . resolve ( h + 2 * s . length ); g . nodeAfter && g . nodeAfter . type == o . type && Ie ( m . doc , g . pos ) && m . join ( g . pos ), n ( m . scrollIntoView ())} return ! 0 } let d = i . type . spec . isolating || r > 0 && a ? null : I . findFrom ( e , 1 ), u = d && d . $from . blockRange ( d . $to ), f = u && pt ( u ); if ( f != null && f >= e . depth ) return n && n ( t . tr . lift ( u , f ). scrollIntoView ()), ! 0 ; if ( c && Rn ( i , "start" , ! 0 ) && Rn ( o , "end" )){ let h = o , p = []; for (; p . push ( h ), ! h . isTextblock ;) h = h . lastChild ; let m = i , g = 1 ; for (; ! m . isTextblock ; m = m . firstChild ) g ++ ; if ( h . canReplace ( h . childCount , h . childCount , m . content )){ if ( n ){ let y = v . empty ; for ( let b = p . length - 1 ; b >= 0 ; b -- ) y = v . from ( p [ b ]. copy ( y )); let x = t . tr . step ( new le ( e . pos - p . length , e . pos + i . nodeSize , e . pos + g , e . pos + i . nodeSize - g , new A ( y , p . length , 0 ), 0 , ! 0 )); n ( x . scrollIntoView ())} return ! 0 }} return ! 1 } function xd ( t ){ return function ( e , n ){ let r = e . selection , o = t < 0 ? r . $from : r . $to , i = o . depth ; for (; o . node ( i ). isInline ;){ if ( ! i ) return ! 1 ; i -- } return o . node ( i ). isTextblock ? ( n && n ( e . tr . setSelection ( E . create ( e . doc , t < 0 ? o . start ( i ) : o . end ( i )))), ! 0 ) :! 1 }
`),u&&p==h.nodeValue.length)for(let m=h,g;m;m=m.parentNode){if(g=m.nextSibling){g.nodeName=="BR"&&(l=a={node:g.parentNode,offset:me(g)+1});break}let y=m.pmViewDesc;if(y&&y.node&&y.node.isBlock)break}}else{let m=h.childNodes[p-1];u=m&&(m.nodeName=="BR"||m.contentEditable=="false")}}if(ze&&d.focusNode&&d.focusNode!=a.node&&d.focusNode.nodeType==1){let h=d.focusNode.childNodes[d.focusOffset];h&&h.contentEditable=="false"&&(o=!0)}if(!(o||u&&ke)&&sn(l.node,l.offset,d.anchorNode,d.anchorOffset)&&sn(a.node,a.offset,d.focusNode,d.focusOffset))return;let f=!1;if((c.extend||e==n)&&!(u&&ze)){c.collapse(l.node,l.offset);try{e!=n&&c.extend(a.node,a.offset),f=!0}catch{}}if(!f){if(e>n){let p=l;l=a,a=p}let h=document.createRange();h.setEnd(a.node,a.offset),h.setStart(l.node,l.offset),c.removeAllRanges(),c.addRange(h)}}ignoreMutation(e){return!this.contentDOM&&e.type!="selection"}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,n){for(let r=0,o=0;o<this.children.length;o++){let i=this.children[o],s=r+i.size;if(r==s?e<=s&&n>=r:e<s&&n>r){let l=r+i.border,a=s-i.border;if(e>=l&&n<=a){this.dirty=e==r||n==s?Zt:Rd,e==l&&n==a&&(i.contentLost||i.dom.parentNode!=this.contentDOM)?i.dirty=Ue:i.markDirty(e-l,n-l);return}else i.dirty=i.dom==i.contentDOM&&i.dom.parentNode==this.contentDOM&&!i.children.length?Zt:Ue}r=s}this.dirty=Zt}markParentsDirty(){let e=1;for(let n=this.parent;n;n=n.parent,e++){let r=e==1?Zt:Rd;n.dirty<r&&(n.dirty=r)}}get domAtom(){return!1}get ignoreForCoords(){return!1}get ignoreForSelection(){return!1}isText(e){return!1}},xo=class extends ln{constructor(e,n,r,o){let i,s=n.type.toDOM;if(typeof s=="function"&&(s=s(r,()=>{if(!i)return o;if(i.parent)return i.parent.posBeforeChild(i)})),!n.type.spec.raw){if(s.nodeType!=1){let l=document.createElement("span");l.appendChild(s),s=l}s.contentEditable="false",s.classList.add("ProseMirror-widget")}super(e,[],s,null),this.widget=n,this.widget=n,i=this}matchesWidget(e){return this.dirty==He&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let n=this.widget.spec.stopEvent;return n?n(e):!1}ignoreMutation(e){return e.type!="selection"||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get ignoreForSelection(){return!!this.widget.type.spec.relaxedSide}get side(){return this.widget.type.side}},rl=class extends ln{constructor(e,n,r,o){super(e,[],n,null),this.textDOM=r,this.text=o}get size(){return this.text.length}localPosFromDOM(e,n){return e!=this.textDOM?this.posAtStart+(n?this.size:0):this.posAtStart+n}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return e.type==="characterData"&&e.target.nodeValue==e.oldValue}},tn=class t extends ln{constructor(e,n,r,o,i){super(e,[],r,o),this.mark=n,this.spec=i}static create(e,n,r,o){let i=o.nodeViews[n.type.name],s=i&&i(n,o,r);return(!s||!s.dom)&&(s=Ze.renderSpec(document,n.type.spec.toDOM(n,r),null,n.attrs)),new t(e,n,s.dom,s.contentDOM||s.dom,s)}parseRule(){return this.dirty&Ue||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return this.dirty!=Ue&&this.mark.eq(e)}markDirty(e,n){if(super.markDirty(e,n),this.dirty!=He){let r=this.parent;for(;!r.node;)r=r.parent;r.dirty<this.dirty&&(r.dirty=this.dirty),this.dirty=He}}slice(e,n,r){let o=t.create(this.parent,this.mark,!0,r),i=this.children,s=this.size;n<s&&(i=ll(i,n,s,r)),e>0&&(i=ll(i,0,e,r));for(let l=0;l<i.length;l++)i[l].parent=o;return o.children=i,o}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}},Bt=class t extends ln{constructor(e,n,r,o,i,s,l){super(e,[],i,s),this.node=n,this.outerDeco=r,this.innerDeco=o,this.nodeDOM=l}static create(e,n,r,o,i,s){let l=i.nodeViews[n.type.name],a,c=l&&l(n,i,()=>{if(!a)return s;if(a.parent)return a.parent.posBeforeChild(a)},r,o),d=c&&c.dom,u=c&&c.contentDOM;if(n.isText){if(!d)d=document.createTe
2026-07-03 13:46:54 +00:00
2026-08-31 14:25:22 +03:00
` ); return { dom : a , text : f , slice : e }} function Sl ( t , e , n , r , o ){ let i = o . parent . type . spec . code , s , l ; if ( ! n &&! e ) return null ; let a =!! e && ( r || i ||! n ); if ( a ){ if ( t . someProp ( "transformPastedText" , f =>{ e = f ( e , i || r , t )}), i ) return l = new A ( v . from ( t . state . schema . text ( e . replace ( /\r\n?/g , `
` ))), 0 , 0 ), t . someProp ( "transformPasted" , f =>{ l = f ( l , t , ! 0 )}), l ; let u = t . someProp ( "clipboardTextParser" , f => f ( e , o , r , t )); if ( u ) l = u ; else { let f = o . marks (),{ schema : h } = t . state , p = Ze . fromSchema ( h ); s = document . createElement ( "div" ), e . split ( /(?:\r\n?|\n)+/ ). forEach ( m =>{ let g = s . appendChild ( document . createElement ( "p" )); m && g . appendChild ( p . serializeNode ( h . text ( m , f )))})}} else t . someProp ( "transformPastedHTML" , u =>{ n = u ( n , t )}), s = py ( n ), Sr && my ( s ); let c = s && s . querySelector ( "[data-pm-slice]" ), d = c && /^(\d+) (\d+)(?: -(\d+))? (.*)/ . exec ( c . getAttribute ( "data-pm-slice" ) || "" ); if ( d && d [ 3 ]) for ( let u =+ d [ 3 ]; u > 0 ; u -- ){ let f = s . firstChild ; for (; f && f . nodeType != 1 ;) f = f . nextSibling ; if ( ! f ) break ; s = f } if ( l || ( l = ( t . someProp ( "clipboardParser" ) || t . someProp ( "domParser" ) || Te . fromSchema ( t . state . schema )). parseSlice ( s ,{ preserveWhitespace :!! ( a || d ), context : o , ruleFromNode ( f ){ return f . nodeName == "BR" &&! f . nextSibling && f . parentNode &&! uy . test ( f . parentNode . nodeName ) ? { ignore :! 0 } : null }})), d ) l = gy ( jd ( l , + d [ 1 ], + d [ 2 ]), d [ 4 ]); else if ( l = A . maxOpen ( fy ( l . content , o ), ! 0 ), l . openStart || l . openEnd ){ let u = 0 , f = 0 ; for ( let h = l . content . firstChild ; u < l . openStart &&! h . type . spec . isolating ; u ++ , h = h . firstChild ); for ( let h = l . content . lastChild ; f < l . openEnd &&! h . type . spec . isolating ; f ++ , h = h . lastChild ); l = jd ( l , u , f )} return t . someProp ( "transformPasted" , u =>{ l = u ( l , t , a )}), l } var uy = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i ; function fy ( t , e ){ if ( t . childCount < 2 ) return t ; for ( let n = e . depth ; n >= 0 ; n -- ){ let o = e . node ( n ). contentMatchAt ( e . index ( n )), i , s = []; if ( t . forEach ( l =>{ if ( ! s ) return ; let a = o . findWrapping ( l . type ), c ; if ( ! a ) return s = null ; if ( c = s . length && i . length && bu ( a , i , l , s [ s . length - 1 ], 0 )) s [ s . length - 1 ] = c ; else { s . length && ( s [ s . length - 1 ] = wu ( s [ s . length - 1 ], i . length )); let d = yu ( l , a ); s . push ( d ), o = o . matchType ( d . type ), i = a }}), s ) return v . from ( s )} return t } function yu ( t , e , n = 0 ){ for ( let r = e . length - 1 ; r >= n ; r -- ) t = e [ r ]. create ( null , v . from ( t )); return t } function bu ( t , e , n , r , o ){ if ( o < t . length && o < e . length && t [ o ] == e [ o ]){ let i = bu ( t , e , n , r . lastChild , o + 1 ); if ( i ) return r . copy ( r . content . replaceChild ( r . childCount - 1 , i )); if ( r . contentMatchAt ( r . childCount ). matchType ( o == t . length - 1 ? n . type : t [ o + 1 ])) return r . copy ( r . content . append ( v . from ( yu ( n , t , o + 1 ))))}} function wu ( t , e ){ if ( e == 0 ) return t ; let n = t . content . replaceChild ( t . childCount - 1 , wu ( t . lastChild , e - 1 )), r = t . contentMatchAt ( t . childCount ). fillBefore ( v . empty , ! 0 ); return t . copy ( n . append ( r ))} function dl ( t , e , n , r , o , i ){ let s = e < 0 ? t . firstChild : t . lastChild , l = s . content ; return t . childCount > 1 && ( i = 0 ), o < r - 1 && ( l = dl ( l , e , n , r , o + 1 , i )), o >= n && ( l = e < 0 ? s . contentMatchAt ( 0 ). fillBefore ( l , i <= o ). append ( l ) : l . append ( s . contentMatchAt ( s . childCount ). fillBefore ( v . empty , ! 0 ))), t . replaceChild ( e < 0 ? 0 : t . childCount - 1 , s . copy ( l ))} function jd ( t , e , n ){ return e < t . openStart && ( t = new A ( dl ( t . content , - 1 , e , t . openStart , 0 , t . openEnd ), e , t . openEnd )), n < t . openEnd && ( t = new A ( dl ( t . content , 1 , n , t . openEnd , 0 , 0 ), t . openStart , n )), t } var xu = { thead : [ "table" ], tbody : [ "table" ], tfoot : [ "table" ], caption : [ "table" ], colgroup : [ "table" ], col : [ "table" , "colgroup" ], tr : [ "table" , "tbody" ], td : [ "table" , "tbody" , "tr" ], th : [ "table" , "tbody" , "tr" ]}; function ku (){ return document . implementation . createHTMLDocument ( "title" )} var Gs = null ; function hy ( t ){ let e = window . trustedTypes ; return e ? ( Gs || ( Gs = e . defaultPolicy || e . createPolicy ( "ProseMirrorClipboard" ,{ createHTML : n => n })), Gs . createHTML ( t )) : t } function py ( t ){ let e = /^(\s*<meta [^>]*>)*/ . exec ( t ); e && ( t = t . slice ( e [ 0 ]. length )); let n = ku (), r = n . body , o = /<([a-z][^>\s]+)/i . exec ( t ), i ; if (( i = o && xu [ o [ 1 ]. toLowerCase ()]) && ( t = i . map ( s => "<" + s + ">" ). join ( "" ) + t + i . map ( s => "</" + s + ">" ). reverse (). join ( "" )), r . innerHTML = hy ( t ), i ) for ( let s = 0 ; s < i . length ; s ++ ) r = r . querySelector ( i [ s ]) || r ; for ( let s = 0 ; s < n . styleSheets . length ; s ++ ){ let l = n . styleSheets [ s ]; for ( let a = 0 ; a < l . rules . length ; a ++ ){ let c = l . rules [ a ]; if ( c instanceof CSSStyleRule ){ let d = r . querySelectorAll ( c . selectorText ); for ( let u = 0 ; u < d . length ; u ++ ) d [ u ]. style . cssText += c . style . cssText }}} return r } function my ( t ){ let e = t . querySelectorAll ( ue ? "span:not([class]):not([style])" : "span.Apple-converted-space" ); for ( let n = 0 ; n < e . length ; n ++ ){ let r = e [ n ]; r . childNodes . length == 1 && r . textContent == "\xA0" && r . parentNode && r . parentNode . replaceChild ( t . ownerDocument . creat
2026-07-03 13:46:54 +00:00
2026-08-31 14:25:22 +03:00
`,textSerializers:s={}}=n||{},l="";return t.nodesBetween(r,o,(a,c,d,u)=>{var f;a.isBlock&&c>r&&(l+=i);let h=s?.[a.type.name];if(h)return d&&(l+=h({node:a,pos:c,parent:d,index:u,range:e})),!1;a.isText&&(l+=(f=a?.text)==null?void 0:f.slice(Math.max(r,c)-c,o-c))}),l}function jl(t,e){let n={from:0,to:t.content.size};return Wl(t,n,e)}function Ko(t){return Object.fromEntries(Object.entries(t.nodes).filter(([,e])=>e.spec.toText).map(([e,n])=>[e,n.spec.toText]))}function r0(t,e,n){let{blockSeparator:r=`
`,textSerializers:o={}}=n||{},i=Uo(e),s=te.fromJSON(i,t);return jl(s,{blockSeparator:r,textSerializers:{...Ko(i),...o}})}function Ju(t,e){let n=re(e,t.schema),{from:r,to:o}=t.selection,i=[];t.doc.nodesBetween(r,o,l=>{i.push(l)});let s=i.reverse().find(l=>l.type.name===n.name);return s?{...s.attrs}:{}}function qo(t,e){let n=Lr(typeof e=="string"?e:e.name,t.schema);return n==="node"?Ju(t,e):n==="mark"?Hl(t,e):{}}function Gu(t,e=JSON.stringify){let n={};return t.filter(r=>{let o=e(r);return Object.prototype.hasOwnProperty.call(n,o)?!1:n[o]=!0})}function o0(t){let e=Gu(t);return e.length===1?e:e.filter((n,r)=>!e.filter((i,s)=>s!==r).some(i=>n.oldRange.from>=i.oldRange.from&&n.oldRange.to<=i.oldRange.to&&n.newRange.from>=i.newRange.from&&n.newRange.to<=i.newRange.to))}function Vn(t){let{mapping:e,steps:n}=t,r=[];return e.maps.forEach((o,i)=>{let s=[];if(o.ranges.length)o.forEach((l,a)=>{s.push({from:l,to:a})});else{let{from:l,to:a}=n[i];if(l===void 0||a===void 0)return;s.push({from:l,to:a})}s.forEach(({from:l,to:a})=>{let c=e.slice(i).map(l,-1),d=e.slice(i).map(a),u=e.invert().map(c,-1),f=e.invert().map(d);r.push({oldRange:{from:u,to:f},newRange:{from:c,to:d}})})}),o0(r)}function Xu(t,e=0){let r=t.type===t.type.schema.topNodeType?0:1,o=e,i=o+t.nodeSize,s=t.marks.map(c=>{let d={type:c.type.name};return Object.keys(c.attrs).length&&(d.attrs={...c.attrs}),d}),l={...t.attrs},a={type:t.type.name,from:o,to:i};return Object.keys(l).length&&(a.attrs=l),s.length&&(a.marks=s),t.content.childCount&&(a.content=[],t.forEach((c,d)=>{var u;(u=a.content)==null||u.push(Xu(c,e+d+r))})),t.text&&(a.text=t.text),a}function Pr(t,e,n){let r=[];return t===e?n.resolve(t).marks().forEach(o=>{let i=n.resolve(t),s=Fo(i,o.type);s&&r.push({mark:o,...s})}):n.nodesBetween(t,e,(o,i)=>{!o||o?.nodeSize===void 0||r.push(...o.marks.map(s=>({from:i,to:i+o.nodeSize,mark:s})))}),r}var Ul=(t,e,n,r=20)=>{let o=t.doc.resolve(n),i=r,s=null;for(;i>0&&s===null;){let l=o.node(i);l?.type.name===e?s=l:i-=1}return[s,i]};function Hn(t,e){return e.nodes[t]||e.marks[t]||null}function Er(t,e,n){return Object.fromEntries(Object.entries(n).filter(([r])=>{let o=t.find(i=>i.type===e&&i.name===r);return o?o.attribute.keepOnSplit:!1}))}var Yu=(t,e=500)=>{let n="",r=t.parentOffset;return t.parent.nodesBetween(Math.max(0,r-e),r,(o,i,s,l)=>{var a,c;let d=((c=(a=o.type.spec).toText)==null?void 0:c.call(a,{node:o,pos:i,parent:s,index:l}))||o.textContent||"%leaf%";n+=o.isAtom&&!o.isText?d:d.slice(0,Math.max(0,r-i))}),n};function Ho(t,e,n={}){let{empty:r,ranges:o}=t.selection,i=e?nt(e,t.schema):null;if(r)return!!(t.storedMarks||t.selection.$from.marks()).filter(u=>i?i.name===u.type.name:!0).find(u=>Nr(u.attrs,n,{strict:!1}));let s=0,l=[];if(o.forEach(({$from:u,$to:f})=>{let h=u.pos,p=f.pos;t.doc.nodesBetween(h,p,(m,g)=>{if(i&&m.inlineContent&&!m.type.allowsMarkType(i))return!1;if(!m.isText&&!m.marks.length)return;let y=Math.max(h,g),x=Math.min(p,g+m.nodeSize),b=x-y;s+=b,l.push(...m.marks.map(w=>({mark:w,from:y,to:x})))})}),s===0)return!1;let a=l.filter(u=>i?i.name===u.mark.type.name:!0).filter(u=>Nr(u.mark.attrs,n,{strict:!1})).reduce((u,f)=>u+f.to-f.from,0),c=l.filter(u=>i?u.mark.type!==i&&u.mark.type.excludes(i):!0).reduce((u,f)=>u+f.to-f.from,0);return(a>0?a+c:a)>=s}function Jo(t,e,n={}){if(!e)return Ke(t,null,n)||Ho(t,null,n);let r=Lr(e,t.schema);return r==="node"?Ke(t,e,n):r==="mark"?Ho(t,e,n):!1}var Kl=(t,e)=>{let{$from:n,$to:r,$anchor:o}=t.selection;if(e){let i=qe(l=>l.type.name===e)(t.selection);if(!i)return!1;let s=t.doc.resolve(i.pos+1);return o.pos+1===s.end()}return!(r.parentOffset<r.parent.nodeSize-2||n.pos!==r.pos)},ql=t=>{let{$from:e,$to:n}=t.selection;return!(e.parentOffset>0||e.pos!==n.pos)};function Ll(t,e){return Array.isArray(e)?e.some(n=>(typeof n=="string"?n:n.name)===t.name):e}function Po(t,e){let{nodeExtensions:n}=dn(e),r=n.find(s=>s.name===t);if(!r)return!1;let o={name:r.name,options:r.options,storage:r.storage},i=q(P(r,"group",o));return typeof i!="string"?!1:i.split(" ").includes("list")}function hn(t,{checkChildren:e=!0,ignoreWhitespace:n=!1}={}){var r;if(n){if(t
` ); return `::: ${ c }${ m }
${ g }
:::` }}} function P0 ( t ){ if ( ! t . trim ()) return {}; let e = {}, n = /(\w+)=(?:"([^"]*)"|'([^']*)')/g , r = n . exec ( t ); for (; r !== null ;){ let [, o , i , s ] = r ; e [ o ] = i || s , r = n . exec ( t )} return e } function B0 ( t ){ return Object . entries ( t ). filter (([, e ])=> e != null ). map (([ e , n ])=> ` ${ e } =" ${ n } "` ). join ( " " )} function cf ( t ){ let { nodeName : e , name : n , getContent : r , parseAttributes : o = P0 , serializeAttributes : i = B0 , defaultAttributes : s = {}, selfClosing : l =! 1 , allowedAttributes : a } = t , c = n || e , d = f =>{ if ( ! a ) return f ; let h = {}; return a . forEach ( p =>{ let m = typeof p == "string" ? p : p . name , g = typeof p == "string" ? void 0 : p . skipIfDefault ; if ( m in f ){ let y = f [ m ]; if ( g !== void 0 && y === g ) return ; h [ m ] = y }}), h }, u = c . replace ( /[.*+?^${}()|[\]\\]/g , "\\$&" ); return { parseMarkdown : ( f , h )=>{ let p = {... s ,... f . attributes }; if ( l ) return h . createNode ( e , p ); let m = r ? r ( f ) : f . content || "" ; return m ? h . createNode ( e , p ,[ h . createTextNode ( m )]) : h . createNode ( e , p ,[])}, markdownTokenizer : { name : e , level : "inline" , start ( f ){ let h = l ? new RegExp ( `\\[ ${ u } \\s*[^\\]]*\\]` ) : new RegExp ( `\\[ ${ u } \\s*[^\\]]*\\][\\s\\S]*?\\[\\/ ${ u } \\]` ), p = f . match ( h ), m = p ? . index ; return m !== void 0 ? m :- 1 }, tokenize ( f , h , p ){ let m = l ? new RegExp ( `^\\[ ${ u } \\s*([^\\]]*)\\]` ) : new RegExp ( `^\\[ ${ u } \\s*([^\\]]*)\\]([\\s\\S]*?)\\[\\/ ${ u } \\]` ), g = f . match ( m ); if ( ! g ) return ; let y = "" , x = "" ; if ( l ){ let [, w ] = g ; x = w } else { let [, w , k ] = g ; x = w , y = k || "" } let b = o ( x . trim ()); return { type : e , raw : g [ 0 ], content : y . trim (), attributes : b }}}, renderMarkdown : f =>{ let h = "" ; r ? h = r ( f ) : f . content && f . content . length > 0 && ( h = f . content . filter ( y => y . type === "text" ). map ( y => y . text ). join ( "" )); let p = d ( f . attrs || {}), m = i ( p ), g = m ? ` ${ m } ` : "" ; return l ? `[ ${ c }${ g } ]` : `[ ${ c }${ g } ] ${ h } [/ ${ c } ]` }}} function zr ( t , e , n ){ var r , o , i , s ; let l = t . split ( `
` ), a = [], c = "" , d = 0 , u = e . baseIndentSize || 2 ; for (; d < l . length ;){ let f = l [ d ], h = f . match ( e . itemPattern ); if ( ! h ){ if ( a . length > 0 ) break ; if ( f . trim () === "" ){ d += 1 , c = ` ${ c }${ f }
` ; continue } else return } let p = e . extractItemData ( h ),{ indentLevel : m , mainContent : g } = p ; c = ` ${ c }${ f }
` ; let y = [ g ]; for ( d += 1 ; d < l . length ;){ let k = l [ d ]; if ( k . trim () === "" ){ let S = l . slice ( d + 1 ). findIndex ( O => O . trim () !== "" ); if ( S ===- 1 ) break ; if (((( o = ( r = l [ d + 1 + S ]. match ( /^(\s*)/ )) == null ? void 0 : r [ 1 ]) == null ? void 0 : o . length ) || 0 ) > m ){ y . push ( k ), c = ` ${ c }${ k }
` , d += 1 ; continue } else break } if (((( s = ( i = k . match ( /^(\s*)/ )) == null ? void 0 : i [ 1 ]) == null ? void 0 : s . length ) || 0 ) > m ) y . push ( k ), c = ` ${ c }${ k }
` , d += 1 ; else break } let x , b = y . slice ( 1 ); if ( b . length > 0 ){ let k = b . map ( C => C . slice ( m + u )). join ( `
` ); k . trim () && ( e . customNestedParser ? x = e . customNestedParser ( k ) : x = n . blockTokens ( k ))} let w = e . createToken ( p , x ); a . push ( w )} if ( a . length !== 0 ) return { items : a , raw : c }} function Wn ( t , e , n , r ){ if ( ! t ||! Array . isArray ( t . content )) return "" ; let o = typeof n == "function" ? n ( r ) : n ,[ i ,... s ] = t . content , l = e . renderChildren ([ i ]), a = ` ${ o }${ l } ` ; return s && s . length > 0 && s . forEach (( c , d )=>{ var u , f ; let h = ( f = ( u = e . renderChild ) == null ? void 0 : u . call ( e , c , d + 1 )) != null ? f : e . renderChildren ([ c ]); if ( h != null ){ let p = h . split ( `
` ). map ( m => m ? e . indent ( m ) : e . indent ( "" )). join ( `
` ); a += c . type === "paragraph" ? `
${ p } ` : `
${ p } ` }}), a } function _u ( t ){ return typeof t . type == "string" ? t . type : t . type . name } function z0 ( t , e ){ if ( t . length !== e . length ) return ! 1 ; let n = Array . from ({ length : e . length },()=> ! 1 ); return t . every ( r =>{ let o = _u ( r ), i = e . findIndex (( s , l )=> ! n [ l ] && o === _u ( s ) && rf ( r . attrs , s . attrs )); return i ===- 1 ?! 1 : ( n [ i ] =! 0 , ! 0 )})} function Zl ( t , e ){ let n = {... t }; return Tr ( t ) && Tr ( e ) && Object . keys ( e ). forEach ( r =>{ Tr ( e [ r ]) && Tr ( t [ r ]) ? n [ r ] = Zl ( t [ r ], e [ r ]) : n [ r ] = e [ r ]}), n } function ea ( t , e , n = {}){ let { state : r } = e ,{ doc : o , tr : i } = r , s = t ; o . descendants (( l , a )=>{ let c = i . mapping . map ( a ), d = i . mapping . map ( a ) + l . nodeSize , u = null ; if ( l . marks . forEach ( h =>{ if ( h !== s ) return ! 1 ; u = h }), ! u ) return ; let f =! 1 ; if ( Object . keys ( n ). forEach ( h =>{ n [ h ] !== u . attrs [ h ] && ( f =! 0 )}), f ){ let h = t . type . create ({... t . attrs ,... n }); i . removeMark ( c , d , t . type ), i . addMark ( c , d , h )}}), i . docChanged && e . view . dispatch ( i )} var H0 = class { constructor ( t , e , n ){ this . component = t , this . editor = e . editor , this . options = {... n }, this . mark = e . mark , this . HTMLAttributes = e . HTMLAttributes } get dom (){ return this . editor . view . dom } get contentDOM (){ return null } updateAttributes ( t , e ){ ea ( e || this . mark , this . editor , t )} ignoreMutation ( t ){ return ! this . dom ||! this . contentDOM ?! 0 : typeof this . options . ignoreMutation == "function" ? this . options . ignoreMutation ({ mutation : t }) : t . type === "selection" || this . dom . contains ( t . target ) && t . type === "childList" && ( an () || Or ()) && this . editor . isFocused && [... Array . from ( t . addedNodes ),... Array . from ( t . removedNodes )]. every ( n => n . isContentEditable ) ?! 1 : this . contentDOM === t . target && t . type === "attributes" ?! 0 :! this . contentDOM . contains ( t . target )}}, $t = class { constructor ( t ){ var e ; this . find = t . find , this . handler = t . handler , this . undoable = ( e = t . undoable ) != null ? e :! 0 }}, $0 = ( t , e )=>{ if ( $o ( e )) return e . exec ( t ); let n = e ( t ); if ( ! n ) return null ; let r = [ n . text ]; return r . index = n . index , r . input = t , r . data = n . data , n . replaceWith && ( n . text . includes ( n . replaceWith ) || console . warn ( '[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".' ), r . push ( n . replaceWith )), r }; function Lo ( t ){ var e ; let { editor : n , from : r , to : o , text : i , rules : s , plugin : l } = t ,{ view : a } = n ; if ( a . composing ) return ! 1 ; let c = a . state . doc . resolve ( r ); if ( c . parent . type . spec . code || ( e = c . nodeBefore || c . nodeAfter ) != null && e . marks . find ( f => f . type . spec . code )) return ! 1 ; let d =! 1 , u = Yu ( c ) + i ; return s . forEach ( f =>{ if ( d ) return ; let h = $0 ( u , f . find ); if ( ! h ) return ; let p = h [ 0 ]. length - i . length ; if ( p > 0 ){ let C = c . parentOffset - p ; if ( C < 0 || c . parent . textBetween ( C , c . parentOffset ) !== h [ 0 ]. slice ( 0 , p )) return } let m = a . state . tr , g = Rr ({ state : a . state , transaction : m }), y = { from : r - ( h [ 0 ]. length - i . length ), to : o },{ commands : x , chain : b , can : w } = new Dr ({ editor : n , state : g }); f . handler ({ state : g , range : y , match : h , commands : x , chain : b , can : w }) === null ||! m . steps . length || ( f . undoable && m . setMeta ( l ,{ transform : m , from : r , to : o , text : i }), a . dispatch ( m ), d =! 0 )}), d } function df ( t ){ let { editor : e , rules : n } = t , r = new D ({ state : { init (){ return null }, apply ( o , i , s ){ let l = o . getMeta ( r ); if ( l ) return l ; let a = o . getMeta ( "applyInputRules" ); return a && setTimeout (()=>{ let { text : d } = a ; typeof d == "string" ? d = d : d = Ir ( v . from ( d ), s . schema ); let { from : u } = a , f = u + d . length ; Lo ({ editor : e , from : u , to : f , text : d , rules : n , plugin : r })}), o . selectionSet || o . docChanged ? null : i }}, props : { handleTextInput ( o , i , s , l ){ return Lo ({ editor : e , from : i , to : s , text : l , rules : n , plugin : r })}, handleDOMEvents : { compositionend : o =>( setTimeout (()=>{ let { $cursor : i } = o . state . selection ; i && Lo ({ editor : e , from : i . pos , to : i . pos , text : "" , rules : n , plugin : r })}), ! 1 )}, handleKeyDown ( o , i ){ if ( i . key !== "Enter" ) return ! 1 ; let { $cursor : s } = o . state . selection ; return s ? Lo ({ editor : e , from : s . pos , to : s . pos , text : `
` , rules : n , plugin : r }) :! 1 }}, isInputRules :! 0 }); return r } var Yo = class { constructor ( t = {}){ this . type = "extendable" , this . parent = null , this . child = null , this . name = "" , this . config = { name : this . name }, this . config = {... this . config ,... t }, this . name = this . config . name } get options (){ return {... q ( P ( this , "addOptions" ,{ name : this . name }))}} get storage (){ return {... q ( P ( this , "addStorage" ,{ name : this . name , options : this . options }))}} configure ( t = {}){ let e = this . extend ({... this . config , addOptions : ()=> Zl ( this . options , t )}); return e . name = this . name , e . parent = this . parent , this . child = null , e } extend ( t = {}){ let e = new this . constructor ({... this . config ,... t }); return e . parent = this , this . child = e , e . name = "name" in t ? t . name : e . parent . name , e }}, ee = class uf extends Yo { constructor (){ super (... arguments ), this . type = "mark" } static create ( e = {}){ let n = typeof e == "function" ? e () : e ; return new uf ( n )} static handleExit ({ editor : e , mark : n }){ let { tr : r } = e . state , o = e . state . selection . $from ; if ( o . pos === o . end ()){ let s = o . marks (); if ( !!! s . find ( c => c ? . type . name === n . name )) return ! 1 ; let a = s . find ( c => c ? . type . name === n . name ); return a && r . removeStoredMark ( a ), r . insertText ( " " , o . pos ), e . view . dispatch ( r ), ! 0 } return ! 1 } configure ( e ){ return super . configure ( e )} extend ( e ){ let n = typeof e == "function" ? e () : e ; return super . extend ( n )}}, jn = class { constructor ( t ){ this . find = t . find , this . handler = t . handler }}, F0 = ( t , e , n )=>{ if ( $o ( e )) return [... t . matchAll ( e )]; let r = e ( t , n ); return r ? r . map ( o =>{ let i = [ o . text ]; return i . index = o . index , i . input = t , i . data = o . data , o . replaceWith && ( o . text . includes ( o . replaceWith ) || console . warn ( '[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".' ), i . push ( o . replaceWith )), i }) : []}; function _0 ( t ){ let { editor : e , state : n , from : r , to : o , rule : i , pasteEvent : s , dropEvent : l } = t ,{ commands : a , chain : c , can : d } = new Dr ({ editor : e , state : n }), u = []; return n . doc . nodesBetween ( r , o ,( h , p )=>{ var m , g , y , x , b ; if (( g = ( m = h . type ) == null ? void 0 : m . spec ) != null && g . code ||! ( h . isText || h . isTextblock || h . isInline )) return ; let w = ( b = ( x = ( y = h . content ) == null ? void 0 : y . size ) != null ? x : h . nodeSize ) != null ? b : 0 , k = Math . max ( r , p ), C = Math . min ( o , p + w ); if ( k >= C ) return ; let S = h . isText ? h . text || "" : h . textBetween ( k - p , C - p , void 0 , "\uFFFC" ); F0 ( S , i . find , s ). forEach ( T =>{ if ( T . index === void 0 ) return ; let O = k + T . index + 1 , z = O + T [ 0 ]. length , F = { from : n . tr . mapping . map ( O ), to : n . tr . mapping . map ( z )}, B = i . handler ({ state : n , range : F , match : T , commands : a , chain : c , can : d , pasteEvent : s , dropEvent : l }); u . push ( B )})}), u . every ( h => h !== null )} var Io = null , V0 = t =>{ var e ; let n = new ClipboardEvent ( "paste" ,{ clipboardData : new DataTransfer }); return ( e = n . clipboardData ) == null || e . setData ( "text/html" , t ), n }; function ff ( t ){ let { editor : e , rules : n } = t , r = null , o =! 1 , i =! 1 , s = typeof ClipboardEvent < "u" ? new ClipboardEvent ( "paste" ) : null , l ; try { l = typeof DragEvent < "u" ? new DragEvent ( "drop" ) : null } catch { l = null } let a = ({ state : d , from : u , to : f , rule : h , pasteEvt : p })=>{ let m = d . tr , g = Rr ({ state : d , transaction : m }); if ( ! ( ! _0 ({ editor : e , state : g , from : Math . max ( u - 1 , 0 ), to : f . b - 1 , rule : h , pasteEvent : p , dropEvent : l }) ||! m . steps . length )){ try { l = typeof DragEvent < "u" ? new DragEvent ( "drop" ) : null } catch { l = null } return s = typeof ClipboardEvent < "u" ? new ClipboardEvent ( "paste" ) : null , m }}; return n . map ( d => new D ({ view ( u ){ let f = p =>{ var m ; r = ( m = u . dom . parentElement ) != null && m . contains ( p . target ) ? u . dom . parentElement : null , r && ( Io = e )}, h = ()=>{ Io && ( Io = null )}; return window . addEventListener ( "dragstart" , f ), window . addEventListener ( "dragend" , h ),{ destroy (){ window . removeEventListener ( "dragstart" , f ), window . removeEventListener ( "dragend" , h )}}}, props : { handleDOMEvents : { drop : ( u , f )=>{ if ( i = r === u . dom . parentElement , l = f , ! i ){ let h = Io ; h ? . isEditable && setTimeout (()=>{ let p = h . state . selection ; p && h . commands . deleteRange ({ from : p . from , to : p . to })}, 10 )} return ! 1 }, paste : ( u , f )=>{ var h ; let p = ( h = f . clipboardData ) == null ? void 0 : h . getData ( "text/html" ); return s = f , o =!! p ? . includes ( "data-pm-slice" ), ! 1 }}}, appendTransaction : ( u , f , h )=>{ let p = u [ 0 ], m = p . getMeta ( "uiEvent" ) === "paste" &&! o , g = p . getMeta ( "uiEvent" ) === "drop" &&! i , y = p . getMeta ( "applyPasteRules" ), x =!! y ; if ( ! m &&! g &&! x ) return ; if ( x ){ let { text : k } = y ; typeof k == "string" ? k = k : k = Ir ( v . from ( k ), h . schema ); let { from : C } = y , S = C + k . length , R = V0 ( k ); return a ({ rule : d , state : h , from : C , to : { b : S }, pasteEvt : R })} let b = f . doc . content . findDiffStart ( h . doc . content ), w = f . doc .
`)}}})]}}),gf=j.create({name:"commands",addCommands(){return{...Pl}}}),yf=j.create({name:"delete",onUpdate({transaction:t,appendedTransactions:e}){var n,r,o;let i=()=>{var s,l,a,c;if((c=(a=(l=(s=this.editor.options.coreExtensionOptions)==null?void 0:s.delete)==null?void 0:l.filterTransaction)==null?void 0:a.call(l,t))!=null?c:t.getMeta("y-sync$"))return;let d=_o(t.before,[t,...e]);Vn(d).forEach(h=>{d.mapping.mapResult(h.oldRange.from).deletedAfter&&d.mapping.mapResult(h.oldRange.to).deletedBefore&&d.before.nodesBetween(h.oldRange.from,h.oldRange.to,(p,m)=>{let g=m+p.nodeSize-2,y=h.oldRange.from<=m&&g<=h.oldRange.to;this.editor.emit("delete",{type:"node",node:p,from:m,to:g,newFrom:d.mapping.map(m),newTo:d.mapping.map(g),deletedRange:h.oldRange,newRange:h.newRange,partial:!y,editor:this.editor,transaction:t,combinedTransform:d})})});let f=d.mapping;d.steps.forEach((h,p)=>{var m,g;if(h instanceof ht){let y=f.slice(p).map(h.from,-1),x=f.slice(p).map(h.to),b=f.invert().map(y,-1),w=f.invert().map(x),k=y>0?(m=d.doc.nodeAt(y-1))==null?void 0:m.marks.some(S=>S.eq(h.mark)):!1,C=(g=d.doc.nodeAt(x))==null?void 0:g.marks.some(S=>S.eq(h.mark));this.editor.emit("delete",{type:"mark",mark:h.mark,from:h.from,to:h.to,deletedRange:{from:b,to:w},newRange:{from:y,to:x},partial:!!(C||k),editor:this.editor,transaction:t,combinedTransform:d})}})};(o=(r=(n=this.editor.options.coreExtensionOptions)==null?void 0:n.delete)==null?void 0:r.async)==null||o?setTimeout(i,0):i()}}),bf=j.create({name:"drop",addProseMirrorPlugins(){return[new D({key:new H("tiptapDrop"),props:{handleDrop:(t,e,n,r)=>{this.editor.emit("drop",{editor:this.editor,event:e,slice:n,moved:r})}}})]}}),wf=j.create({name:"editable",addProseMirrorPlugins(){return[new D({key:new H("editable"),props:{editable:()=>this.editor.options.editable}})]}}),xf=new H("focusEvents"),kf=j.create({name:"focusEvents",addProseMirrorPlugins(){let{editor:t}=this;return[new D({key:xf,props:{handleDOMEvents:{focus:(e,n)=>{t.isFocused=!0;let r=t.state.tr.setMeta("focus",{event:n}).setMeta("addToHistory",!1);return e.dispatch(r),!1},blur:(e,n)=>{t.isFocused=!1;let r=t.state.tr.setMeta("blur",{event:n}).setMeta("addToHistory",!1);return e.dispatch(r),!1}}}})]}}),Sf=j.create({name:"keymap",addKeyboardShortcuts(){let t=()=>this.editor.commands.first(({commands:s})=>[()=>s.undoInputRule(),()=>s.command(({tr:l})=>{let{selection:a,doc:c}=l,{empty:d,$anchor:u}=a,{pos:f,parent:h}=u,p=u.parent.isTextblock&&f>0?l.doc.resolve(f-1):u,m=p.parent.type.spec.isolating,g=u.pos-u.parentOffset,y=m&&p.parent.childCount===1?g===u.pos:I.atStart(c).from===f;return!d||!h.type.isTextblock||h.textContent.length||!y||y&&u.parent.type.name==="paragraph"?!1:s.clearNodes()}),()=>s.deleteSelection(),()=>s.joinBackward(),()=>s.selectNodeBackward()]),e=()=>this.editor.commands.first(({commands:s})=>[()=>s.deleteSelection(),()=>s.deleteCurrentNode(),()=>s.joinForward(),()=>s.selectNodeForward()]),r={Enter:()=>this.editor.commands.first(({commands:s})=>[()=>s.newlineInCode(),()=>s.createParagraphNear(),()=>s.liftEmptyBlock(),()=>s.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:t,"Mod-Backspace":t,"Shift-Backspace":t,Delete:e,"Mod-Delete":e,"Mod-a":()=>this.editor.commands.selectAll()},o={...r},i={...r,"Ctrl-h":t,"Alt-Backspace":t,"Ctrl-d":e,"Ctrl-Alt-Backspace":e,"Alt-Delete":e,"Alt-d":e,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return an()||zl()?i:o},addProseMirrorPlugins(){return[new D({key:new H("clearDocument"),appendTransaction:(t,e,n)=>{if(t.some(m=>m.getMeta("composition")))return;let r=t.some(m=>m.docChanged)&&!e.doc.eq(n.doc),o=t.some(m=>m.getMeta("preventClearDocument"));if(!r||o)return;let{empty:i,from:s,to:l}=e.selection,a=I.atStart(e.doc).from,c=I.atEnd(e.doc).to;if(i||!(s===a&&l===c)||!hn(n.doc))return;let f=n.tr,h=Rr({state:n,transaction:f}),{commands:p}=new Dr({editor:this.editor,state:h});if(p.clearNodes(),!!f.steps.length)return f}})]}}),Cf=j.create({name:"paste",addProseMirrorPlugins(){return[new D({key:new H("tiptapPaste"),pro
position: relative;
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
.ProseMirror {
word-wrap: break-word;
white-space: pre-wrap;
white-space: break-spaces;
-webkit-font-variant-ligatures: none;
font-variant-ligatures: none;
font-feature-settings: "liga" 0; /* the above doesn't seem to work in Edge */
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
.ProseMirror [contenteditable="false"] {
white-space: normal;
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
.ProseMirror [contenteditable="false"] [contenteditable="true"] {
white-space: pre-wrap;
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
.ProseMirror pre {
white-space: pre-wrap;
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
img.ProseMirror-separator {
display: inline !important;
border: none !important;
margin: 0 !important;
width: 0 !important;
height: 0 !important;
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
.ProseMirror-gapcursor {
display: none;
pointer-events: none;
position: absolute;
margin: 0;
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
.ProseMirror-gapcursor:after {
content: "";
display: block;
position: absolute;
top: -2px;
width: 20px;
border-top: 1px solid black;
animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
@keyframes ProseMirror-cursor-blink {
to {
visibility: hidden;
}
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
.ProseMirror-hideselection *::selection {
background: transparent;
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
.ProseMirror-hideselection *::-moz-selection {
background: transparent;
2026-07-03 13:46:54 +00:00
}
2026-08-31 14:25:22 +03:00
.ProseMirror-hideselection * {
caret-color: transparent;
}
2026-07-03 13:46:54 +00:00
2026-08-31 14:25:22 +03:00
.ProseMirror-focused .ProseMirror-gapcursor {
display: block;
}` , j0 = class extends N0 { constructor ( t = {}){ super (), this . css = null , this . className = "tiptap" , this . editorView = null , this . isFocused =! 1 , this . destroyed =! 1 , this . isInitialized =! 1 , this . extensionStorage = {}, this . instanceId = Math . random (). toString ( 36 ). slice ( 2 , 9 ), this . options = { element : typeof document < "u" ? document . createElement ( "div" ) : null , content : "" , injectCSS :! 0 , injectNonce : void 0 , extensions : [], autofocus :! 1 , editable :! 0 , textDirection : void 0 , editorProps : {}, parseOptions : {}, coreExtensionOptions : {}, enableInputRules :! 0 , enablePasteRules :! 0 , enableCoreExtensions :! 0 , enableContentCheck :! 1 , emitContentError :! 1 , onBeforeCreate : ()=> null , onCreate : ()=> null , onMount : ()=> null , onUnmount : ()=> null , onUpdate : ()=> null , onSelectionUpdate : ()=> null , onTransaction : ()=> null , onFocus : ()=> null , onBlur : ()=> null , onDestroy : ()=> null , onContentError : ({ error : n })=>{ throw n }, onPaste : ()=> null , onDrop : ()=> null , onDelete : ()=> null , enableExtensionDispatchTransaction :! 0 }, this . isCapturingTransaction =! 1 , this . capturedTransaction = null , this . utils = { getUpdatedPosition : Zu , createMappablePosition : ef }, this . setOptions ( t ), this . createExtensionManager (), this . createCommandManager (), this . createSchema (), this . on ( "beforeCreate" , this . options . onBeforeCreate ), this . emit ( "beforeCreate" ,{ editor : this }), this . on ( "mount" , this . options . onMount ), this . on ( "unmount" , this . options . onUnmount ), this . on ( "contentError" , this . options . onContentError ), this . on ( "create" , this . options . onCreate ), this . on ( "update" , this . options . onUpdate ), this . on ( "selectionUpdate" , this . options . onSelectionUpdate ), this . on ( "transaction" , this . options . onTransaction ), this . on ( "focus" , this . options . onFocus ), this . on ( "blur" , this . options . onBlur ), this . on ( "destroy" , this . options . onDestroy ), this . on ( "drop" ,({ event : n , slice : r , moved : o })=> this . options . onDrop ( n , r , o )), this . on ( "paste" ,({ event : n , slice : r })=> this . options . onPaste ( n , r )), this . on ( "delete" , this . options . onDelete ); let e = this . createDoc (); if ( ! this . editorState ){ let n = Bo ( e , this . options . autofocus ); this . editorState = On . create ({ doc : e , schema : this . schema , selection : n || void 0 })} this . options . element && this . mount ( this . options . element )} mount ( t ){ if ( typeof document > "u" ) throw new Error ( "[tiptap error]: The editor cannot be mounted because there is no 'document' defined in this environment." ); this . createView ( t ), this . emit ( "mount" ,{ editor : this }), this . css &&! document . head . contains ( this . css ) && document . head . appendChild ( this . css ), window . setTimeout (()=>{ this . isDestroyed || ( this . options . autofocus !==! 1 && this . options . autofocus !== null && this . commands . focus ( this . options . autofocus ), this . emit ( "create" ,{ editor : this }), this . isInitialized =! 0 )}, 0 )} unmount (){ if ( this . editorView ){ let t = this . editorView . dom ; t ? . editor && delete t . editor , this . editorView . destroy ()} if ( this . editorView = null , this . isInitialized =! 1 , this . css &&! document . querySelectorAll ( `. ${ this . className } ` ). length ) try { typeof this . css . remove == "function" ? this . css . remove () : this . css . parentNode && this . css . parentNode . removeChild ( this . css )} catch ( t ){ console . warn ( "Failed to remove CSS element:" , t )} this . css = null , this . emit ( "unmount" ,{ editor : this })} get storage (){ return this . extensionStorage } get commands (){ return this . commandManager . commands } chain (){ return this . commandManager . chain ()} can (){ return this . commandManager . can ()} injectCSS (){ this . options . injectCSS && typeof document < "u" && ( this . css = of ( W0 , this . options . injectNonce ))} setOptions ( t = {}){ this . options = {... this . options ,... t }, ! ( ! this . editorView ||! this . state || this . isDestroyed ) && ( this . options . editorProps && this . view . setProps ( this . options . editorProps ), this . view . updateState ( this . state ))} setEditable ( t , e =! 0 ){ this . setOptions ({ editable : t }), e && this . emit ( "update" ,{ editor : this , transaction : this . state . tr , appendedTransactions : []})} get isEditable (){ return this . options . editable && this . view && this . view . editable } get view (){ return this . editorView ? this . editorView : new Proxy ({ state : this . editorState , updateState : t =>{ this . editorState = t }, dispatch : t =>{ this . dispatchTransaction ( t )}, composing :! 1 , dragging : null , editable :! 0 , isDestroyed :! 1 },{ get : ( t , e )=>{ if ( this . editorView ) return this . editorView [ e ]; if ( e === "state" ) return this . editorState ; if ( e in t ) return Reflect . get ( t , e ); throw new Error ( `[tiptap error]: The editor view is not a
` , textSerializers : n = {}} = t || {}; return jl ( this . state . doc ,{ blockSeparator : e , textSerializers : {... Ko ( this . schema ),... n }})} get isEmpty (){ return hn ( this . state . doc )} destroy (){ this . destroyed || ( this . destroyed =! 0 , this . emit ( "destroy" ), this . unmount (), this . removeAllListeners (), this . extensionManager . destroy (), this . extensionManager = null , this . schema = null , this . commandManager = null , this . extensionStorage = {})} get isDestroyed (){ var t , e ; return ( e = ( t = this . editorView ) == null ? void 0 : t . isDestroyed ) != null ? e :! 0 } $node ( t , e ){ var n ; return (( n = this . $doc ) == null ? void 0 : n . querySelector ( t , e )) || null } $nodes ( t , e ){ var n ; return (( n = this . $doc ) == null ? void 0 : n . querySelectorAll ( t , e )) || null } $pos ( t ){ let e = this . state . doc . resolve ( t ), n = t > 0 && e . nodeAfter &&! e . nodeAfter . isText && e . nodeAfter . isAtom ? e . nodeAfter : null ; return new Tf ( e , this , ! 1 , n )} get $doc (){ return this . $pos ( 0 )}}; function Me ( t ){ return new $t ({ find : t . find , handler : ({ state : e , range : n , match : r })=>{ let o = q ( t . getAttributes , void 0 , r ); if ( o ===! 1 || o === null ) return null ; let { tr : i } = e , s = r [ r . length - 1 ], l = r [ 0 ]; if ( s ){ let a = l . search ( /\S/ ), c = n . from + l . indexOf ( s ), d = c + s . length ; if ( Pr ( n . from , n . to , e . doc ). filter ( h => h . mark . type . excluded . find ( m => m === t . type && m !== h . mark . type )). filter ( h => h . to > c ). length ) return null ; d < n . to && i . delete ( d , n . to ), c > n . from && i . delete ( n . from + a , c ); let f = n . from + a + s . length ; i . addMark ( n . from + a , f , t . type . create ( o || {})), i . removeStoredMark ( t . type )}}, undoable : t . undoable })} function Hr ( t ){ return new $t ({ find : t . find , handler : ({ state : e , range : n , match : r })=>{ let o = q ( t . getAttributes , void 0 , r ) || {},{ tr : i } = e , s = n . from , l = n . to , a = t . type . create ( o ); if ( r [ 1 ]){ let c = r [ 0 ]. lastIndexOf ( r [ 1 ]), d = s + c ; d > l ? d = l : l = d + r [ 1 ]. length ; let u = r [ 0 ][ r [ 0 ]. length - 1 ]; i . insertText ( u , s + r [ 0 ]. length - 1 ), i . replaceWith ( d , l , a )} else if ( r [ 0 ]){ let c = t . type . isInline ? s : s - 1 ; i . insert ( c , t . type . create ( o )). delete ( i . mapping . map ( s ), i . mapping . map ( l ))} i . scrollIntoView ()}, undoable : t . undoable })} function Un ( t ){ return new $t ({ find : t . find , handler : ({ state : e , range : n , match : r })=>{ let o = e . doc . resolve ( n . from ), i = q ( t . getAttributes , void 0 , r ) || {}; if ( ! o . node ( - 1 ). canReplaceWith ( o . index ( - 1 ), o . indexAfter ( - 1 ), t . type )) return null ; e . tr . delete ( n . from , n . to ). setBlockType ( n . from , n . from , t . type , i )}, undoable : t . undoable })} function U0 ( t ){ return new $t ({ find : t . find , handler : ({ state : e , range : n , match : r })=>{ let o = t . replace , i = n . from , s = n . to ; if ( r [ 1 ]){ let l = r [ 0 ]. lastIndexOf ( r [ 1 ]); o += r [ 0 ]. slice ( l + r [ 1 ]. length ), i += l ; let a = i - s ; a > 0 && ( o = r [ 0 ]. slice ( l - a , l ) + o , i = s )} e . tr . insertText ( o , i , s )}, undoable : t . undoable })} function Je ( t ){ return new $t ({ find : t . find , handler : ({ state : e , range : n , match : r , chain : o })=>{ let i = q ( t . getAttributes , void 0 , r ) || {}, s = e . tr . delete ( n . from , n . to ), a = s . doc . resolve ( n . from ). blockRange (), c = a && En ( a , t . type , i ); if ( ! c ) return null ; if ( s . wrap ( a , c ), t . keepMarks && t . editor ){ let { selection : u , storedMarks : f } = e ,{ splittableMarks : h } = t . editor . extensionManager , p = f || u . $to . parentOffset && u . $from . marks (); if ( p ){ let m = p . filter ( g => h . includes ( g . type . name )); s . ensureMarks ( m )}} if ( t . keepAttributes ){ let u = t . type . name === "bulletList" || t . type . name === "orderedList" ? "listItem" : "taskList" ; o (). updateAttributes ( u , i ). run ()} let d = s . doc . resolve ( n . from - 1 ). nodeBefore ; d && d . type === t . type && Ie ( s . doc , n . from - 1 ) && ( ! t . joinPredicate || t . joinPredicate ( r , d )) && s . join ( n . from - 1 )}, undoable : t . undoable })} function K0 ( t ){ return t . children } var q0 = ( t , e )=>{ if ( t === "slot" ) return 0 ; if ( t instanceof Function ) return t ( e ); let { children : n ,... r } = e ?? {}; if ( t === "svg" ) throw new Error ( "SVG elements are not supported in the JSX syntax, use the array syntax instead" ); return [ t , r , n ]}, J0 = t => "touches" in t , Zo = class { constructor ( t ){ this . directions = [ "bottom-left" , "bottom-right" , "top-left" , "top-right" ], this . minSize = { height : 8 , width : 8 }, this . preserveAspectRatio =! 1 , this . classNames = { container : "" , wrapper : "" , handle : "" , resizing : "" }, this . initialWidth = 0 , this . initialHeight = 0 , this . aspectRatio = 1 , this . isResizing =! 1 , this . activeHandle = null , this . startX = 0 , this . startY = 0 , this . startWidth = 0 , this . startHeight = 0 , this . isShiftKeyPressed =! 1 , this . lastEditableState = void 0 , this . handleMap = new Map , this . handleMouseMove = l =>{ if ( ! this . isResizing ||! this . activeHandle ) return ; let a = l . clientX - this . startX , c = l . clientY - this . startY ; this . handleResize ( a , c )}, this . handleTouchMove = l =>{ if ( ! this .
`).map(u=>u.trim()===""?n:` $ { n } $ { u } `);r.push(d.join(`
`))}),r.join(`
$ { n }
`)},addCommands(){return{setBlockquote:()=>({commands:t})=>t.wrapIn(this.name),toggleBlockquote:()=>({commands:t})=>t.toggleWrap(this.name),unsetBlockquote:()=>({commands:t})=>t.lift(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-b":()=>this.editor.commands.toggleBlockquote(),Backspace:()=>Aw(this.editor,this.type)}},addInputRules(){return[Je({find:Ew,type:this.type})]}}),Uf=Nw;var Ow=/(?:^|\s)(\*\*(?!\s+\*\*)((?:[^*]+))\*\*(?!\s+\*\*))$/,Rw=/(?:^|\s)(\*\*(?!\s+\*\*)((?:[^*]+))\*\*(?!\s+\*\*))/g,Dw=/(?:^|\s)(__(?!\s+__)((?:[^_]+))__(?!\s+__))$/,Lw=/(?:^|\s)(__(?!\s+__)((?:[^_]+))__(?!\s+__))/g,Iw=ee.create({name:"bold",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"strong"},{tag:"b",getAttrs:t=>t.style.fontWeight!=="normal"&&null},{style:"font-weight=400",clearMark:t=>t.type.name===this.name},{style:"font-weight",getAttrs:t=>/^(bold(er)?|[5-9]\d{2,})$/.test(t)&&null}]},renderHTML({HTMLAttributes:t}){return Kn("strong",{...N(this.options.HTMLAttributes,t),children:Kn("slot",{})})},markdownTokenName:"strong",parseMarkdown:(t,e)=>e.applyMark("bold",e.parseInline(t.tokens||[])),markdownOptions:{htmlReopen:{open:"<strong>",close:"</strong>"}},renderMarkdown:(t,e)=>` ** $ { e . renderChildren ( t )} ** `,addCommands(){return{setBold:()=>({commands:t})=>t.setMark(this.name),toggleBold:()=>({commands:t})=>t.toggleMark(this.name),unsetBold:()=>({commands:t})=>t.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-b":()=>this.editor.commands.toggleBold(),"Mod-B":()=>this.editor.commands.toggleBold()}},addInputRules(){return[Me({find:Ow,type:this.type}),Me({find:Dw,type:this.type})]},addPasteRules(){return[ge({find:Rw,type:this.type}),ge({find:Lw,type:this.type})]}}),Kf=Iw;var Pw=t=>{let e=/` ([ ^ `]+)` ( ?! `)$/.exec(t);return!e||e.index>0&&t[e.index-1]==="` "?null:{index:e.index,text:e[0],replaceWith:e[1]}},Bw=t=>{let e=/`([^`]+)`(?!`)/g,n=[],r;for(;(r=e.exec(t))!==null;)r.index>0&&t[r.index-1]===" `"||n.push({index:r.index,text:r[0],replaceWith:r[1]});return n},zw=ee.create({name:"code",addOptions(){return{HTMLAttributes:{}}},excludes:"_",code:!0,exitable:!0,parseHTML(){return[{tag:"code"}]},renderHTML({HTMLAttributes:t}){return["code",N(this.options.HTMLAttributes,t),0]},markdownTokenName:"codespan",parseMarkdown:(t,e)=>e.applyMark("code",[{type:"text",text:t.text||""}]),renderMarkdown:(t,e)=>t.content?` \ ` ${ e . renderChildren ( t . content ) } \`` : "" , addCommands (){ return { setCode : ()=>({ commands : t })=> t . setMark ( this . name ), toggleCode : ()=>({ commands : t })=> t . toggleMark ( this . name ), unsetCode : ()=>({ commands : t })=> t . unsetMark ( this . name )}}, addKeyboardShortcuts (){ return { "Mod-e" : ()=> this . editor . commands . toggleCode ()}}, addInputRules (){ return [ Me ({ find : Pw , type : this . type })]}, addPasteRules (){ return [ ge ({ find : Bw , type : this . type })]}}), qf = zw ; var da = 4 , Hw = /^```([a-z]+)?[\s\n]$/ , $w = /^~~~([a-z]+)?[\s\n]$/ , Fw = $ . create ({ name : "codeBlock" , addOptions (){ return { languageClassPrefix : "language-" , exitOnTripleEnter :! 0 , exitOnArrowDown :! 0 , exitOnArrowUp :! 0 , defaultLanguage : null , enableTabIndentation :! 1 , tabSize : da , HTMLAttributes : {}}}, content : "text*" , marks : "" , group : "block" , code :! 0 , defining :! 0 , addAttributes (){ return { language : { default : this . options . defaultLanguage , parseHTML : t =>{ var e ; let { languageClassPrefix : n } = this . options ; if ( ! n ) return null ; let i = [...(( e = t . firstElementChild ) == null ? void 0 : e . classList ) || []]. filter ( s => s . startsWith ( n )). map ( s => s . replace ( n , "" ))[ 0 ]; return i || null }, rendered :! 1 }}}, parseHTML (){ return [{ tag : "pre" , preserveWhitespace : "full" }]}, renderHTML ({ node : t , HTMLAttributes : e }){ return [ "pre" , N ( this . options . HTMLAttributes , e ),[ "code" ,{ class : t . attrs . language ? this . options . languageClassPrefix + t . attrs . language : null }, 0 ]]}, markdownTokenName : "code" , parseMarkdown : ( t , e )=>{ var n , r ; return (( n = t . raw ) == null ? void 0 : n . startsWith ( "```" )) ===! 1 && (( r = t . raw ) == null ? void 0 : r . startsWith ( "~~~" )) ===! 1 && t . codeBlockStyle !== "indented" ? [] : e . createNode ( "codeBlock" ,{ language : t . lang || null }, t . text ? [ e . createTextNode ( t . text )] : [])}, renderMarkdown : ( t , e )=>{ var n ; let r = "" , o = (( n = t . attrs ) == null ? void 0 : n . language ) || "" ; return t . content ? r = [ `\`\`\` ${ o } ` , e . renderChildren ( t . content ), "```" ]. join ( `
` ) : r = `\`\`\` ${ o }
\`\`\`` , r }, addCommands (){ return { setCodeBlock : t =>({ commands : e })=> e . setNode ( this . name , t ), toggleCodeBlock : t =>({ commands : e })=> e . toggleNode ( this . name , "paragraph" , t )}}, addKeyboardShortcuts (){ return { "Mod-Alt-c" : ()=> this . editor . commands . toggleCodeBlock (), Backspace : ()=>{ let { empty : t , $anchor : e } = this . editor . state . selection , n = e . pos === 1 ; return ! t || e . parent . type . name !== this . name ?! 1 : n ||! e . parent . textContent . length ? this . editor . commands . clearNodes () :! 1 }, Tab : ({ editor : t })=>{ var e ; if ( ! this . options . enableTabIndentation ) return ! 1 ; let n = ( e = this . options . tabSize ) != null ? e : da ,{ state : r } = t ,{ selection : o } = r ,{ $from : i , empty : s } = o ; if ( i . parent . type !== this . type ) return ! 1 ; let l = " " . repeat ( n ); return s ? t . commands . insertContent ( l ) : t . commands . command (({ tr : a })=>{ let { from : c , to : d } = o , h = r . doc . textBetween ( c , d , `
` , `
` ). split ( `
` ). map ( p => l + p ). join ( `
` ); return a . replaceWith ( c , d , r . schema . text ( h )), ! 0 })}, "Shift-Tab" : ({ editor : t })=>{ var e ; if ( ! this . options . enableTabIndentation ) return ! 1 ; let n = ( e = this . options . tabSize ) != null ? e : da ,{ state : r } = t ,{ selection : o } = r ,{ $from : i , empty : s } = o ; return i . parent . type !== this . type ?! 1 : s ? t . commands . command (({ tr : l })=>{ var a ; let { pos : c } = i , d = i . start (), u = i . end (), h = r . doc . textBetween ( d , u , `
` , `
` ). split ( `
` ), p = 0 , m = 0 , g = c - d ; for ( let C = 0 ; C < h . length ; C += 1 ){ if ( m + h [ C ]. length >= g ){ p = C ; break } m += h [ C ]. length + 1 } let x = (( a = h [ p ]. match ( /^ */ )) == null ? void 0 : a [ 0 ]) || "" , b = Math . min ( x . length , n ); if ( b === 0 ) return ! 0 ; let w = d ; for ( let C = 0 ; C < p ; C += 1 ) w += h [ C ]. length + 1 ; return l . delete ( w , w + b ), c - w <= b && l . setSelection ( E . create ( l . doc , w )), ! 0 }) : t . commands . command (({ tr : l })=>{ let { from : a , to : c } = o , f = r . doc . textBetween ( a , c , `
` , `
` ). split ( `
` ). map ( h =>{ var p ; let m = (( p = h . match ( /^ */ )) == null ? void 0 : p [ 0 ]) || "" , g = Math . min ( m . length , n ); return h . slice ( g )}). join ( `
` ); return l . replaceWith ( a , c , r . schema . text ( f )), ! 0 })}, Enter : ({ editor : t })=>{ if ( ! this . options . exitOnTripleEnter ) return ! 1 ; let { state : e } = t ,{ selection : n } = e ,{ $from : r , empty : o } = n ; if ( ! o || r . parent . type !== this . type ) return ! 1 ; let i = r . parentOffset === r . parent . nodeSize - 2 , s = r . parent . textContent . endsWith ( `
` ); return ! i ||! s ?! 1 : t . chain (). command (({ tr : l })=>( l . delete ( r . pos - 2 , r . pos ), ! 0 )). exitCode (). run ()}, ArrowUp : ({ editor : t })=>{ if ( ! this . options . exitOnArrowUp ) return ! 1 ; let { state : e } = t ,{ selection : n } = e ,{ $from : r , empty : o } = n ; if ( ! o || r . parent . type !== this . type || r . parentOffset !== 0 ) return ! 1 ; let i = r . before (); return i > 0 ?! 1 : t . commands . insertDefaultBlock ({ pos : i })}, ArrowDown : ({ editor : t })=>{ if ( ! this . options . exitOnArrowDown ) return ! 1 ; let { state : e } = t ,{ selection : n , doc : r } = e ,{ $from : o , empty : i } = n ; if ( ! i || o . parent . type !== this . type ||! ( o . parentOffset === o . parent . nodeSize - 2 )) return ! 1 ; let l = o . after (); return l === void 0 ?! 1 : r . nodeAt ( l ) ? t . commands . command (({ tr : c })=>( c . setSelection ( I . near ( r . resolve ( l ))), ! 0 )) : t . commands . exitCode ()}}}, addInputRules (){ return [ Un ({ find : Hw , type : this . type , getAttributes : t =>({ language : t [ 1 ]})}), Un ({ find : $w , type : this . type , getAttributes : t =>({ language : t [ 1 ]})})]}, addProseMirrorPlugins (){ return [ new D ({ key : new H ( "codeBlockVSCodeHandler" ), props : { handlePaste : ( t , e )=>{ if ( ! e . clipboardData || this . editor . isActive ( this . type . name )) return ! 1 ; let n = e . clipboardData . getData ( "text/plain" ), r = e . clipboardData . getData ( "vscode-editor-data" ), o = r ? JSON . parse ( r ) : void 0 , i = o ? . mode ; if ( ! n ||! i ) return ! 1 ; let { tr : s , schema : l } = t . state , a = l . text ( n . replace ( /\r\n?/g , `
` )); return s . replaceSelectionWith ( this . type . create ({ language : i }, a )), s . selection . $from . parent . type !== this . type && s . setSelection ( E . near ( s . doc . resolve ( Math . max ( 0 , s . selection . from - 2 )))), s . setMeta ( "paste" , ! 0 ), t . dispatch ( s ), ! 0 }}})]}}), Jf = Fw ; var Gf = $ . create ({ name : "customBlock" , group : "block" , atom :! 0 , defining :! 0 , draggable :! 0 , selectable :! 0 , isolating :! 0 , allowGapCursor :! 0 , inline :! 1 , addNodeView (){ return ({ editor : t , node : e , getPos : n , HTMLAttributes : r , decorations : o , extension : i })=>{ let s = document . createElement ( "div" ); s . setAttribute ( "data-config" , JSON . stringify ( e . attrs . config )), s . setAttribute ( "data-id" , e . attrs . id ), s . setAttribute ( "data-type" , "customBlock" ); let l = document . createElement ( "div" ); if ( l . className = "fi-fo-rich-editor-custom-block-header fi-not-prose" , s . appendChild ( l ), t . isEditable && typeof e . attrs . config == "object" && e . attrs . config !== null && Object . keys ( e . attrs . config ). length > 0 ){ let c = document . createElement ( "div" ); c . className = "fi-fo-rich-editor-custom-block-edit-btn-ctn" , l . appendChild ( c ); let d = document . createElement ( "button" ); d . className = "fi-icon-btn" , d . type = "button" , d . innerHTML = i . options . editCustomBlockButtonIconHtml , d . addEventListener ( "click" ,()=> i . options . editCustomBlockUsing ( e . attrs . id , e . attrs . config )), c . appendChild ( d )} let a = document . createElement ( "p" ); if ( a . className = "fi-fo-rich-editor-custom-block-heading" , a . textContent = e . attrs . label , l . appendChild ( a ), t . isEditable ){ let c = document . createElement ( "div" ); c . className = "fi-fo-rich-editor-custom-block-delete-btn-ctn" , l . appendChild ( c ); let d = document . createElement ( "button" ); d . className = "fi-icon-btn" , d . type = "button" , d . innerHTML = i . options . deleteCustomBlockButtonIconHtml , d . addEventListener ( "click" ,()=> t . chain (). setNodeSelection ( n ()). deleteSelection (). run ()), c . appendChild ( d )} if ( e . attrs . preview ){ let c = document . createElement ( "div" ), d = [ "fi-fo-rich-editor-custom-block-preview" ]; e . attrs . shouldApplyProseStylingToPreview || d . push ( "fi-not-prose" ), c . className = d . join ( " " ), c . innerHTML = new TextDecoder (). decode ( Uint8Array . from ( atob ( e . attrs . preview ), u => u . charCodeAt ( 0 ))), s . appendChild ( c )} return { dom : s }}}, addOptions (){ return { deleteCustomBlockButtonIconHtml : null , editCustomBlockButtonIconHtml : null , editCustomBlockUsing : ()=>{}, insertCustomBlockUsing : ()=>{}}}, addAttributes (){ return { config : { default : null , parseHTML : t => JSON . parse ( t . getAttribute ( "data-config" )), renderHTML : t => t . config ? { "data-config" : JSON . stringify ( t . config )} : {}}, id : { default : null , parseHTML : t => t . getAttribute ( "data-id" ), renderHTML : t => t . id ? { "data-id" : t . id } : {}}, label : { default : null , parseHTML : t => t . getAttribute ( "data-label" ), rendered :! 1 }, preview : { default : null , parseHTML : t => t . getAttribute ( "data-preview" ), rendered :! 1 }, shouldApplyProseStylingToPreview : { default :! 1 , rendered :! 1 }}}, parseHTML (){ return [{ tag : `div[data-type=" ${ this . name } "]` }]}, renderHTML ({ HTMLAttributes : t }){ return [ "div" , N ({ "data-type" : "customBlock" }, t )]}, addKeyboardShortcuts (){ return { Backspace : ()=> this . editor . commands . command (({ tr : t , state : e })=>{ let n =! 1 ,{ selection : r } = e ,{ empty : o , anchor : i } = r ; if ( ! o ) return ! 1 ; let s = new te , l = 0 ; return e . doc . nodesBetween ( i - 1 , i ,( a , c )=>{ if ( a . type . name === this . name ) return n =! 0 , s = a , l = c , ! 1 }), n })}}, addProseMirrorPlugins (){ let { insertCustomBlockUsing : t } = this . options ; return [ new D ({ props : { handleDrop ( e , n ){ if ( ! n || ( n . preventDefault (), ! n . dataTransfer . getData ( "customBlock" ))) return ! 1 ; let r = n . dataTransfer . getData ( "customBlock" ); return t ( r , e . posAtCoords ({ left : n . clientX , top : n . clientY }). pos ), ! 1 }}})]}}); var ii = ( t , e )=>{ let n = e . view . domAtPos ( t ). node , r = n . nodeType === Node . ELEMENT_NODE ? n : n . parentElement ; return r ? r . offsetParent !== null :! 1 }, _w = ( t , e , n )=>{ for ( let r = t . depth ; r > 0 ; r -= 1 ){ let o = t . node ( r ), i = e ( o ), s = ii ( t . start ( r ), n ); if ( i && s ) return { pos : r > 0 ? t . before ( r ) : 0 , start : t . start ( r ), depth : r , node : o }}}, Xf = ( t , e )=>{ let { state : n , view : r , extensionManager : o } = t ,{ schema : i , selection : s } = n ,{ empty : l , $anchor : a } = s , c =!! o . extensions . find ( y => y . name === "gapCursor" ); if ( ! l || a . parent . type !== i . nodes . detailsSummary ||! c || e === "right" && a . parentOffset !== a . parent . nodeSize - 2 ) return ! 1 ; let d = qe ( y => y . type === i . nodes . details )( s ); if ( ! d ) return ! 1 ; let u = fn ( d . node , y => y . type === i . nodes . detailsContent ); if ( ! u . length || ii ( d . start + u [ 0 ]. pos + 1 , t )) return ! 1 ; let h = n . doc . resolve ( d .
`):""}),eh=Vw;var th=$.create({name:"grid",group:"block",defining:!0,isolating:!0,allowGapCursor:!1,content:"gridColumn+",addOptions(){return{HTMLAttributes:{class:"grid-layout"}}},addAttributes(){return{"data-cols":{default:2,parseHTML:t=>t.getAttribute("data-cols")},"data-from-breakpoint":{default:"md",parseHTML:t=>t.getAttribute("data-from-breakpoint")},style:{default:null,parseHTML:t=>t.getAttribute("style"),renderHTML:t=>({style:` grid - template - columns : repeat ( $ { t [ "data-cols" ]}, 1 fr ) `})}}},parseHTML(){return[{tag:"div",getAttrs:t=>t.classList.contains("grid-layout")&&null}]},renderHTML({HTMLAttributes:t}){return["div",N(this.options.HTMLAttributes,t),0]},addCommands(){return{insertGrid:({columns:t=[1,1],fromBreakpoint:e,coordinates:n=null}={})=>({tr:r,dispatch:o,editor:i})=>{let s=i.schema.nodes.gridColumn,l=Array.isArray(t)&&t.length?t:[1,1],a=[];for(let u=0;u<l.length;u+=1)a.push(s.createAndFill({"data-col-span":Number(l[u]??1)||1}));let c=l.map(u=>Number(u)||1).reduce((u,f)=>u+f,0),d=i.schema.nodes.grid.createChecked({"data-cols":c,"data-from-breakpoint":e},a);if(o){let u=r.selection.anchor+1;[null,void 0].includes(n?.from)?r.replaceSelectionWith(d).scrollIntoView().setSelection(E.near(r.doc.resolve(u))):r.replaceRangeWith(n.from,n.to,d).scrollIntoView().setSelection(E.near(r.doc.resolve(n.from)))}return!0}}}});var nh=$.create({name:"gridColumn",content:"block+",isolating:!0,addOptions(){return{HTMLAttributes:{class:"grid-layout-col"}}},addAttributes(){return{"data-col-span":{default:1,parseHTML:t=>t.getAttribute("data-col-span"),renderHTML:t=>({"data-col-span":t["data-col-span"]??1})},style:{default:null,parseHTML:t=>t.getAttribute("style"),renderHTML:t=>({style:` grid - column : span $ { t [ "data-col-span" ] ?? 1 }; `})}}},parseHTML(){return[{tag:"div",getAttrs:t=>t.classList.contains("grid-layout-col")&&null}]},renderHTML({HTMLAttributes:t}){return["div",N(this.options.HTMLAttributes,t),0]}});var Ww=$.create({name:"hardBreak",markdownTokenName:"br",addOptions(){return{keepMarks:!0,HTMLAttributes:{}}},inline:!0,group:"inline",selectable:!1,linebreakReplacement:!0,parseHTML(){return[{tag:"br"}]},renderHTML({HTMLAttributes:t}){return["br",N(this.options.HTMLAttributes,t)]},renderText(){return`
`},renderMarkdown:()=>`
`,parseMarkdown:()=>({type:"hardBreak"}),addCommands(){return{setHardBreak:()=>({commands:t,chain:e,state:n,editor:r})=>t.first([()=>t.exitCode(),()=>t.command(()=>{let{selection:o,storedMarks:i}=n;if(o.$from.parent.type.spec.isolating)return!1;let{keepMarks:s}=this.options,{splittableMarks:l}=r.extensionManager,a=i||o.$to.parentOffset&&o.$from.marks();return e().insertContent({type:this.name}).command(({tr:c,dispatch:d})=>{if(d&&a&&s){let u=a.filter(f=>l.includes(f.type.name));c.ensureMarks(u)}return!0}).scrollIntoView().run()})])}},addKeyboardShortcuts(){return{"Mod-Enter":()=>this.editor.commands.setHardBreak(),"Shift-Enter":()=>this.editor.commands.setHardBreak()}}}),rh=Ww;var jw=$.create({name:"heading",addOptions(){return{levels:[1,2,3,4,5,6],HTMLAttributes:{}}},content:"inline*",group:"block",defining:!0,addAttributes(){return{level:{default:1,rendered:!1}}},parseHTML(){return this.options.levels.map(t=>({tag:` h$ { t } `,attrs:{level:t}}))},renderHTML({node:t,HTMLAttributes:e}){return[` h$ { this . options . levels . includes ( t . attrs . level ) ? t . attrs . level : this . options . levels [ 0 ]} `,N(this.options.HTMLAttributes,e),0]},parseMarkdown:(t,e)=>e.createNode("heading",{level:t.depth||1},e.parseInline(t.tokens||[])),renderMarkdown:(t,e)=>{var n;let r=(n=t.attrs)!=null&&n.level?parseInt(t.attrs.level,10):1,o="#".repeat(r);return t.content?` $ { o } $ { e . renderChildren ( t . content )} `:""},addCommands(){return{setHeading:t=>({commands:e})=>this.options.levels.includes(t.level)?e.setNode(this.name,t):!1,toggleHeading:t=>({commands:e})=>this.options.levels.includes(t.level)?e.toggleNode(this.name,"paragraph",t):!1}},addKeyboardShortcuts(){return this.options.levels.reduce((t,e)=>({...t,[` Mod - Alt - $ { e } `]:()=>this.editor.commands.toggleHeading({level:e})}),{})},addInputRules(){return this.options.levels.map(t=>Un({find:new RegExp(` ^ ( # { $ { Math . min (... this . options . levels )}, $ { t }}) \\ s$ `),type:this.type,getAttributes:{level:t}}))}}),oh=jw;var Uw=/(?:^|\s)(==(?!\s+==)((?:[^=]+))==(?!\s+==))$/,Kw=/(?:^|\s)(==(?!\s+==)((?:[^=]+))==(?!\s+==))/g,qw=ee.create({name:"highlight",addOptions(){return{multicolor:!1,HTMLAttributes:{}}},addAttributes(){return this.options.multicolor?{color:{default:null,parseHTML:t=>t.getAttribute("data-color")||Ql(t,"background-color")||t.style.backgroundColor,renderHTML:t=>t.color?{"data-color":t.color,style:` background - color : $ { t . color }; color : inherit `}:{}}}:{}},parseHTML(){return[{tag:"mark"}]},renderHTML({HTMLAttributes:t}){return["mark",N(this.options.HTMLAttributes,t),0]},renderMarkdown:(t,e)=>` == $ { e . renderChildren ( t )} == `,parseMarkdown:(t,e)=>e.applyMark("highlight",e.parseInline(t.tokens||[])),markdownTokenizer:{name:"highlight",level:"inline",start:t=>t.indexOf("=="),tokenize(t,e,n){let o=/^(==)([^=]+)(==)/.exec(t);if(o){let i=o[2].trim(),s=n.inlineTokens(i);return{type:"highlight",raw:o[0],text:i,tokens:s}}}},addCommands(){return{setHighlight:t=>({commands:e})=>e.setMark(this.name,t),toggleHighlight:t=>({commands:e})=>e.toggleMark(this.name,t),unsetHighlight:()=>({commands:t})=>t.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-h":()=>this.editor.commands.toggleHighlight()}},addInputRules(){return[Me({find:Uw,type:this.type})]},addPasteRules(){return[ge({find:Kw,type:this.type})]}}),ih=qw;var Jw=$.create({name:"horizontalRule",addOptions(){return{HTMLAttributes:{},nextNodeType:"paragraph"}},group:"block",parseHTML(){return[{tag:"hr"}]},renderHTML({HTMLAttributes:t}){return["hr",N(this.options.HTMLAttributes,t)]},markdownTokenName:"hr",parseMarkdown:(t,e)=>e.createNode("horizontalRule"),renderMarkdown:()=>"---",addCommands(){return{setHorizontalRule:()=>({chain:t,state:e})=>{if(!Xl(e,e.schema.nodes[this.name]))return!1;let{selection:n}=e,{$to:r}=n,o=t();return Br(n)?o.insertContentAt(r.pos,{type:this.name}):o.insertContent({type:this.name}),o.command(({state:i,tr:s,dispatch:l})=>{if(l){let{$to:a}=s.selection,c=a.end();if(a.nodeAfter)a.nodeAfter.isTextblock?s.setSelection(E.create(s.doc,a.pos+1)):a.nodeAfter.isBlock?s.setSelection(L.create(s.doc,a.pos)):s.setSelection(E.create(s.doc,a.pos));else{let d=i.schema.nod
` , ax = "\uFE0F" , cx = "\u200D" , ma = "\uFFFC" , si = null , li = null ; function dx ( t = []){ let e = {}; Ee . groups = e ; let n = new Ee ; si == null && ( si = ph ( nx )), li == null && ( li = ph ( rx )), M ( n , "'" , Mi ), M ( n , "{" , jr ), M ( n , "}" , Ur ), M ( n , "[" , di ), M ( n , "]" , ui ), M ( n , "(" , fi ), M ( n , ")" , hi ), M ( n , "<" , pi ), M ( n , ">" , mi ), M ( n , "\uFF08" , gi ), M ( n , "\uFF09" , yi ), M ( n , "\u300C" , bi ), M ( n , "\u300D" , wi ), M ( n , "\u300E" , xi ), M ( n , "\u300F" , ki ), M ( n , "\uFF1C" , Si ), M ( n , "\uFF1E" , Ci ), M ( n , "&" , vi ), M ( n , "*" , Ti ), M ( n , "@" , _t ), M ( n , "`" , Ei ), M ( n , "^" , Ni ), M ( n , ":" , yn ), M ( n , "," , Aa ), M ( n , "$" , Oi ), M ( n , "." , it ), M ( n , "=" , Ri ), M ( n , "!" , Ea ), M ( n , "-" , Fe ), M ( n , "%" , Kr ), M ( n , "|" , Di ), M ( n , "+" , Li ), M ( n , "#" , Ii ), M ( n , "?" , qr ), M ( n , '"' , Na ), M ( n , "/" , st ), M ( n , ";" , Oa ), M ( n , "~" , Jr ), M ( n , "_" , Pi ), M ( n , "\\" , Ai ), M ( n , "\u30FB" , xh ); let r = oe ( n , Ct , Ma ,{[ ya ] :! 0 }); oe ( r , Ct , r ); let o = oe ( r , St , bh ,{[ Wr ] :! 0 }), i = oe ( r , _r , wh ,{[ Vr ] :! 0 }), s = oe ( n , St , vt ,{[ ba ] :! 0 }); oe ( s , Ct , o ), oe ( s , St , s ), oe ( o , Ct , o ), oe ( o , St , o ); let l = oe ( n , _r , ka ,{[ wa ] :! 0 }); oe ( l , St ), oe ( l , Ct , i ), oe ( l , _r , l ), oe ( i , Ct , i ), oe ( i , St ), oe ( i , _r , i ); let a = M ( n , pa , Ta ,{[ ua ] :! 0 }), c = M ( n , hh , va ,{[ ua ] :! 0 }), d = oe ( n , ha , va ,{[ ua ] :! 0 }); M ( n , ma , d ), M ( c , pa , a ), M ( c , ma , d ), oe ( c , ha , d ), M ( d , hh ), M ( d , pa ), oe ( d , ha , d ), M ( d , ma , d ); let u = oe ( n , fa , kh ,{[ yh ] :! 0 }); M ( u , "#" ), oe ( u , fa , u ), M ( u , ax , u ); let f = M ( u , cx ); M ( f , "#" ), oe ( f , fa , u ); let h = [[ St , s ],[ Ct , o ]], p = [[ St , null ],[ _r , l ],[ Ct , i ]]; for ( let m = 0 ; m < si . length ; m ++ ) Ft ( n , si [ m ], Sa , vt , h ); for ( let m = 0 ; m < li . length ; m ++ ) Ft ( n , li [ m ], Ca , ka , p ); gn ( Sa ,{ tld :! 0 , ascii :! 0 }, e ), gn ( Ca ,{ utld :! 0 , alpha :! 0 }, e ), Ft ( n , "file" , ci , vt , h ), Ft ( n , "mailto" , ci , vt , h ), Ft ( n , "http" , qn , vt , h ), Ft ( n , "https" , qn , vt , h ), Ft ( n , "ftp" , qn , vt , h ), Ft ( n , "ftps" , qn , vt , h ), gn ( ci ,{ scheme :! 0 , ascii :! 0 }, e ), gn ( qn ,{ slashscheme :! 0 , ascii :! 0 }, e ), t = t . sort (( m , g )=> m [ 0 ] > g [ 0 ] ? 1 :- 1 ); for ( let m = 0 ; m < t . length ; m ++ ){ let g = t [ m ][ 0 ], x = t [ m ][ 1 ] ? {[ ox ] :! 0 } : {[ ix ] :! 0 }; g . indexOf ( "-" ) >= 0 ? x [ xa ] =! 0 : St . test ( g ) ? Ct . test ( g ) ? x [ Wr ] =! 0 : x [ ba ] =! 0 : x [ ya ] =! 0 , fh ( n , g , g , x )} return fh ( n , "localhost" , Gr ,{ ascii :! 0 }), n . jd = new Ee ( Bi ),{ start : n , tokens : Object . assign ({ groups : e }, Sh )}} function Ch ( t , e ){ let n = ux ( e . replace ( /[A-Z]/g , l => l . toLowerCase ())), r = n . length , o = [], i = 0 , s = 0 ; for (; s < r ;){ let l = t , a = null , c = 0 , d = null , u =- 1 , f =- 1 ; for (; s < r && ( a = l . go ( n [ s ]));) l = a , l . accepts () ? ( u = 0 , f = 0 , d = l ) : u >= 0 && ( u += n [ s ]. length , f ++ ), c += n [ s ]. length , i += n [ s ]. length , s ++ ; i -= u , s -= f , c -= u , o . push ({ t : d . t , v : e . slice ( i - c , i ), s : i - c , e : i })} return o } function ux ( t ){ let e = [], n = t . length , r = 0 ; for (; r < n ;){ let o = t . charCodeAt ( r ), i , s = o < 55296 || o > 56319 || r + 1 === n || ( i = t . charCodeAt ( r + 1 )) < 56320 || i > 57343 ? t [ r ] : t . slice ( r , r + 2 ); e . push ( s ), r += s . length } return e } function Ft ( t , e , n , r , o ){ let i , s = e . length ; for ( let l = 0 ; l < s - 1 ; l ++ ){ let a = e [ l ]; t . j [ a ] ? i = t . j [ a ] : ( i = new Ee ( r ), i . jr = o . slice (), t . j [ a ] = i ), t = i } return i = new Ee ( n ), i . jr = o . slice (), t . j [ e [ s - 1 ]] = i , i } function ph ( t ){ let e = [], n = [], r = 0 , o = "0123456789" ; for (; r < t . length ;){ let i = 0 ; for (; o . indexOf ( t [ r + i ]) >= 0 ;) i ++ ; if ( i > 0 ){ e . push ( n . join ( "" )); for ( let s = parseInt ( t . substring ( r , r + i ), 10 ); s > 0 ; s -- ) n . pop (); r += i } else n . push ( t [ r ]), r ++ } return e } var Xr = { defaultProtocol : "http" , events : null , format : mh , formatHref : mh , nl2br :! 1 , tagName : "a" , target : null , rel : null , validate :! 0 , truncate : 1 / 0 , className : null , attributes : null , ignoreTags : [], render : null }; function Ra ( t , e = null ){ let n = Object . assign ({}, Xr ); t && ( n = Object . assign ( n , t instanceof Ra ? t . o : t )); let r = n . ignoreTags , o = []; for ( let i = 0 ; i < r . length ; i ++ ) o . push ( r [ i ]. toUpperCase ()); this . o = n , e && ( this . defaultRender = e ), this . ignoreTags = o } Ra . prototype = { o : Xr , ignoreTags : [], defaultRender ( t ){ return t }, check ( t ){ return this . get ( "validate" , t . toString (), t )}, get ( t , e , n ){ let r = e != null , o = this . o [ t ]; return o && ( typeof o == "object" ? ( o = n . t in o ? o [ n . t ] : Xr [ t ], typeof o == "function" && r && ( o = o ( e , n ))) : typeof o == "function" && r && ( o = o ( e , n . t , n )), o )}, getObj ( t , e , n ){ let r = this . o [ t ]; return typeof r == "function" && e != null && ( r = r ( e , n . t , n )), r }, render ( t ){ let e = t . render ( this ); return ( this . get ( "render" , null , t ) || this . defaultRender )( e , t . t , t )}}; function mh ( t ){ return t } function vh ( t , e ){ this . t = "token" , this . v = t , this . tk = e } vh . prototype = { isLink :! 1 , toString (){ return this . v }, toHref ( t ){ return this . toString ()}, toFormattedString ( t ){ let e = this . toString (), n = t . get ( "truncate" , e , this ), r = t . get ( "format" , e , this ); return n && r . length > n ? r . substring ( 0 , n ) + "\u2026" : r }, toFormattedHref ( t ){ return t . get ( "formatHref" , this . toHref ( t . get ( "defaultProtocol" )), this )}, startIndex (){ return this . tk
1. Must only contain digits , lowercase ASCII letters or "-"
2. Cannot start or end with "-"
3. "-" cannot repeat `);Z.customSchemes.push([t,e])}function bx(){Z.scanner=dx(Z.customSchemes);for(let t=0;t<Z.tokenQueue.length;t++)Z.tokenQueue[t][1]({scanner:Z.scanner});Z.parser=px(Z.scanner.tokens);for(let t=0;t<Z.pluginQueue.length;t++)Z.pluginQueue[t][1]({scanner:Z.scanner,parser:Z.parser});return Z.initialized=!0,Z}function Hi(t){return Z.initialized||bx(),mx(Z.parser.start,t,Ch(Z.scanner.start,t))}Hi.scan=Ch;function $i(t,e=null,n=null){if(e&&typeof e=="object"){if(n)throw Error(` linkifyjs : Invalid link type $ { e }; must be a string `);n=e,e=null}let r=new Ra(n),o=Hi(t),i=[];for(let s=0;s<o.length;s++){let l=o[s];l.isLink&&(!e||l.t===e)&&r.check(l)&&i.push(l.toFormattedObject(r))}return i}var La="[\0- \xA0\u1680\u180E\u2000-\u2029\u205F\u3000]",wx=new RegExp(La),xx=new RegExp(` $ { La } $ `),kx=new RegExp(La,"g");function Sx(t){return t.length===1?t[0].isLink:t.length===3&&t[1].isLink?["()","[]"].includes(t[0].value+t[2].value):!1}function Cx(t){return new D({key:new H("autolink"),appendTransaction:(e,n,r)=>{let o=e.some(c=>c.docChanged)&&!n.doc.eq(r.doc),i=e.some(c=>c.getMeta("preventAutolink"));if(!o||i)return;let{tr:s}=r,l=_o(n.doc,[...e]);if(Vn(l).forEach(({newRange:c})=>{let d=$l(r.doc,c,h=>h.isTextblock),u,f;if(d.length>1)u=d[0],f=r.doc.textBetween(u.pos,u.pos+u.node.nodeSize,void 0," ");else if(d.length){let h=r.doc.textBetween(c.from,c.to," "," ");if(!xx.test(h))return;u=d[0],f=r.doc.textBetween(u.pos,c.to,void 0," ")}if(u&&f){let h=f.split(wx).filter(Boolean);if(h.length<=0)return!1;let p=h[h.length-1],m=u.pos+f.lastIndexOf(p);if(!p)return!1;let g=Hi(p).map(y=>y.toObject(t.defaultProtocol));if(!Sx(g))return!1;g.filter(y=>y.isLink).map(y=>({...y,from:m+y.start+1,to:m+y.end+1})).filter(y=>r.schema.marks.code?!r.doc.rangeHasMark(y.from,y.to,r.schema.marks.code):!0).filter(y=>t.validate(y.value)).filter(y=>t.shouldAutoLink(y.value)).forEach(y=>{Pr(y.from,y.to,r.doc).some(x=>x.mark.type===t.type)||s.addMark(y.from,y.to,t.type.create({href:y.href}))})}}),!!s.steps.length)return s}})}function vx(t){return new D({key:new H("handleClickLink"),props:{handleClick:(e,n,r)=>{var o,i;if(r.button!==0||!e.editable)return!1;let s=null;if(r.target instanceof HTMLAnchorElement)s=r.target;else{let a=r.target;if(!a)return!1;let c=t.editor.view.dom;s=a.closest("a"),s&&!c.contains(s)&&(s=null)}if(!s)return!1;let l=!1;if(t.enableClickSelection&&(l=t.editor.commands.extendMarkRange(t.type.name)),t.openOnClick){let a=qo(e.state,t.type.name),c=(o=s.href)!=null?o:a.href,d=(i=s.target)!=null?i:a.target;c&&(window.open(c,d),l=!0)}return l}}})}var Mx=/\[([^[\]]+)\]\(((?:[^\s()]|\([^\s()]*\))+)(?:\s+(?:(["'])(.*?)\3|“(.*?)”|‘ (.*?)’ ))?\)$/,Tx=/\[([^[\]]+)\]\(((?:[^\s()]|\([^\s()]*\))+)(?:\s+(?:(["'])(.*?)\3|“(.*?)”|‘ (.*?)’ ))?\)/g;function Th(t,e){let n=0;for(let r=e-1;r>=0&&t[r]==="\\";r-=1)n+=1;return n%2===1}function Ax(t,e){let n=0,r=0;for(;r<e;){if(t[r]!=="` "){r+=1;continue}if(n===0&&Th(t,r)){r+=1;continue}let o=0;for(;r<e&&t[r]===" `";)o+=1,r+=1;n===0?n=o:o===n&&(n=0)}return n>0}function Ah(t,e,n){var r,o;let[,i,s]=e;return(e.index?t[e.index-1]:void 0)==="!"||Th(t,(r=e.index)!=null?r:0)||Ax(t,(o=e.index)!=null?o:0)?!1:!!i.trim()&&n(s)}function Eh(t){var e,n;let[r,o,i,,s,l,a]=t,c=(e=s??l)!=null?e:a;return{index:(n=t.index)!=null?n:0,text:r,replaceWith:o,data:{href:i,title:c||null,markdown:!0}}}function Ex(t,e){return t.index<e.index+e.text.length&&e.index<t.index+t.text.length}function Nh(t){var e,n,r;return{href:(e=t.data)==null?void 0:e.href,title:(r=(n=t.data)==null?void 0:n.title)!=null?r:null}}function Nx(t){let e=Me({find:n=>{let r=Mx.exec(n);return!r||!Ah(n,r,t.isAllowedHref)?null:Eh(r)},type:t.type,getAttributes:Nh});return new $t({find:e.find,handler:n=>{let r=e.handler(n);return r!==null&&n.state.tr.steps.length&&n.state.tr.setMeta("preventAutolink",!0),r}})}function Ox(t){let e=ge({find:n=>{var r,o;let i=[];for(let l of n.matchAll(Tx))Ah(n,l,t.isAllowedHref)&&i.push(Eh(l));let s=((o=(r=t.findPlainUrls)==null?void 0:r.call(t,n))!=null?o:[]).filter(l=>!i.some(a=>Ex(a,l)));return[...i,...s]},type:t.type,getAttributes
` ) : "" , markdownOptions : { indentsContent :! 0 }, addCommands (){ return { toggleBulletList : ()=>({ commands : t , chain : e })=> this . options . keepAttributes ? e (). toggleList ( this . name , this . options . itemTypeName , this . options . keepMarks ). updateAttributes ( Px , this . editor . getAttributes ( Rh )). run () : t . toggleList ( this . name , this . options . itemTypeName , this . options . keepMarks )}}, addKeyboardShortcuts (){ return { "Mod-Shift-8" : ()=> this . editor . commands . toggleBulletList ()}}, addInputRules (){ let t = Je ({ find : Dh , type : this . type }); return ( this . options . keepMarks || this . options . keepAttributes ) && ( t = Je ({ find : Dh , type : this . type , keepMarks : this . options . keepMarks , keepAttributes : this . options . keepAttributes , getAttributes : ()=> this . editor . getAttributes ( Rh ), editor : this . editor })),[ t ]}}), Bx = ( t , e , n )=>{ let { selection : r } = t ; if ( ! r . empty ) return null ; let { $from : o } = r ; if ( ! o . parent . isTextblock || o . parentOffset !== o . parent . content . size ) return null ; let i =- 1 ; for ( let h = o . depth ; h > 0 ; h -= 1 ) if ( o . node ( h ). type . name === e ){ i = h ; break } if ( i < 0 ) return null ; let s = o . node ( i ), l = o . index ( i ); if ( l + 1 >= s . childCount ) return null ; let a = s . child ( l + 1 ); if ( ! n . includes ( a . type . name )) return null ; let c = t . schema . nodes [ e ], d =! 1 ; if ( a . forEach ( h =>{ h . type === c && h . childCount > 1 && ( d =! 0 )}), ! d ) return null ; let u = t . doc . resolve ( o . after ()). nodeAfter ; if ( ! u ||! n . includes ( u . type . name )) return null ; let f = []; return u . forEach ( h =>{ f . push ( h )}), f . length === 0 ? null : { listItemDepth : i , nestedList : u , nestedListPos : o . after (), insertPos : o . after ( i ), items : f }}, zx = ( t , e , n , r )=>{ let o = Bx ( t , n , r ); if ( ! o ) return ! 1 ; let { selection : i } = t ,{ nestedList : s , nestedListPos : l , insertPos : a , items : c } = o , d = t . tr ; d . delete ( l , l + s . nodeSize ); let u = d . mapping . map ( a ); return d . insert ( u , v . from ( c )), d . setSelection ( i . map ( d . doc , d . mapping )), e && e ( d ), ! 0 }, Hx = ( t , e , n )=> zx ( t . state , t . view . dispatch , e , n ), Bh = ( t , e )=> j . create ({ name : ` ${ t } BranchingDeleteKeymap` , priority : 101 , addKeyboardShortcuts (){ let n = ()=> Hx ( this . editor , t , e ); return { Delete : n , "Mod-Delete" : n }}}), zh = [[ 1e3 , "m" ],[ 900 , "cm" ],[ 500 , "d" ],[ 400 , "cd" ],[ 100 , "c" ],[ 90 , "xc" ],[ 50 , "l" ],[ 40 , "xl" ],[ 10 , "x" ],[ 9 , "ix" ],[ 5 , "v" ],[ 4 , "iv" ],[ 1 , "i" ]], Fi = "abcdefghijklmnopqrstuvwxyz" , $x = "[a-zA-Z]{1,2}" , Hh = String . raw `\d+|[ivxlcdmIVXLCDM]+| ${ $x } ` ; function Vi ( t ){ let e = t , n = "" ; for ( let [ r , o ] of zh ) for (; e >= r ;) n += o , e -= r ; return n } function Ha ( t ){ return Vi ( t ). toUpperCase ()} function $h ( t ){ let e = t . toLowerCase (), n = 0 , r = 0 ; for (; n < e . length ;){ let o =! 1 ; for ( let [ i , s ] of zh ) if ( e . startsWith ( s , n )){ r += i , n += s . length , o =! 0 ; break } if ( ! o ) return 0 } return r } function Fx ( t ){ if ( ! /^[ivxlcdmIVXLCDM]+$/ . test ( t )) return ! 1 ; let e = $h ( t ); return e <= 0 ?! 1 : ( t === t . toLowerCase () ? Vi ( e ) : Ha ( e )) === t } function _x ( t ){ let e = t . toLowerCase (); if ( e . length === 1 ) return e . charCodeAt ( 0 ) - 97 + 1 ; if ( e . length === 2 ){ let n = e . charCodeAt ( 0 ) - 97 , r = e . charCodeAt ( 1 ) - 97 ; return ( n + 1 ) * 26 + r + 1 } return 0 } function _i ( t ){ if ( t <= 26 ) return Fi [ t - 1 ]; let e = Math . floor (( t - 1 ) / 26 ) - 1 , n = ( t - 1 ) % 26 ; return e < 0 ? Fi [ n ] : Fi [ e ] + Fi [ n ]} function Wi ( t ){ if ( ! ( ! t || /^\d+$/ . test ( t ))){ if ( Fx ( t )) return t === t . toLowerCase () ? "i" : "I" ; if ( /^[a-z]{1,2}$/ . test ( t )) return "a" ; if ( /^[A-Z]{1,2}$/ . test ( t )) return "A" }} function $a ( t ){ if ( /^\d+$/ . test ( t )) return parseInt ( t , 10 ); let e = Wi ( t ); if ( e === "i" || e === "I" ) return $h ( t ); if ( e === "a" || e === "A" ){ let r = _x ( t ); return r > 0 ? r : 1 } let n = parseInt ( t , 10 ); return Number . isNaN ( n ) ? 1 : n } function Vx ( t , e ){ if ( t === "numeric" ) return String ( e ); switch ( t ){ case "a" : return _i ( e ); case "A" : return _i ( e ). toUpperCase (); case "i" : return Vi ( e ); case "I" : return Ha ( e ); default : return String ( e )}} function Wx ( t ){ var e ; if ( t . length === 0 ) return ! 1 ; let n = ( e = Wi ( t [ 0 ])) != null ? e : "numeric" , r = $a ( t [ 0 ]); if ( r < 1 ) return ! 1 ; for ( let o = 0 ; o < t . length ; o ++ ){ let i = Vx ( n , r + o ); if ( t [ o ] !== i ) return ! 1 } return ! 0 } function jx ( t ){ return { type : Wi ( t ), start : $a ( t )}} function Ux ( t ){ let { type : e , start : n } = jx ( t ), r = {}; return e && ( r . type = e ), n !== 1 && ( r . start = n ), r } function Kx ( t , e , n = ". " ){ let r = e + 1 ; if ( ! t || t === "1" ) return ` ${ r }${ n } ` ; switch ( t ){ case "a" : return ` ${ _i ( r ) }${ n } ` ; case "A" : return ` ${ _i ( r ). toUpperCase () }${ n } ` ; case "i" : return ` ${ Vi ( r ) }${ n } ` ; case "I" : return ` ${ Ha ( r ) }${ n } ` ; default : return ` ${ r }${ n } ` }} function qx ( t ){ var e , n ; let r = ( e = t . tokens ) == null ? void 0 : e [ 0 ]; return !! ( t . text && (( n = t . tokens ) == null ? void 0 : n . length ) === 1 && r ? . type === "list" && r . ordered && r . raw === t . text )} function Jx ( t , e ){ return e . tokenizeInline ? e . parseInline ( e . tokeni
`).trim(),contentLines:p,raw:g.join(`
`)}),r=m,n=m}return[e,r]}var sk=new RegExp(` ^ ( $ { Hh })([.)]) \\ s + (. + ) $ `);function lk(t){let e=t.split(`
`).filter(i=>i.trim().length>0);if(e.length===0)return null;let n=[];for(let i of e){let s=i.trim().match(sk);if(!s)return null;n.push({marker:s[1],content:s[3]})}let r=n.map(i=>i.marker);return Wx(r)?{type:"orderedList",attrs:Ux(n[0].marker),content:n.map(i=>({type:"listItem",content:[{type:"paragraph",content:[{type:"text",text:i.content}]}]}))}:null}function Wh(t,e,n){let r=[],o=0;for(;o<t.length;){let i=t[o];if(i.indent===e){let{paragraphLines:s,blockLines:l}=ok(i.contentLines),a=s.join(`
`).trim(),c=[];a&&c.push({type:"paragraph",raw:a,tokens:n.inlineTokens(a)});let d=l.join(`
`).trim();if(d){let h=n.blockTokens(d);c.push(...h)}let u=o+1,f=[];for(;u<t.length&&t[u].indent>e;)f.push(t[u]),u+=1;if(f.length>0){let h=Math.min(...f.map(m=>m.indent)),p=Wh(f,h,n);c.push({type:"list",ordered:!0,start:f[0].number,typeMarker:f[0].type,items:p,raw:f.map(m=>m.raw).join(`
`)})}r.push({type:"list_item",raw:i.raw,tokens:c}),o=u}else o+=1}return r}function ak(t,e){return t.map(n=>{if(n.type!=="list_item")return e.parseChildren([n])[0];let r=[];return n.tokens&&n.tokens.length>0&&n.tokens.forEach(o=>{if(o.type==="paragraph"||o.type==="list"||o.type==="blockquote"||o.type==="code")r.push(...e.parseChildren([o]));else if(o.type==="text"&&o.tokens){let i=e.parseChildren([o]);r.push({type:"paragraph",content:i})}else{let i=e.parseChildren([o]);i.length>0&&r.push(...i)}}),{type:"listItem",content:r}})}var ck="listItem",Lh="textStyle",Ih=/^(\d+)\.\s$/;function Ph(t){let e=t.match(/list-style-type\s*:\s*([^;]+)/i);if(!e)return null;switch(e[1].trim().toLowerCase()){case"upper-roman":return"I";case"lower-roman":return"i";case"upper-alpha":case"upper-latin":return"A";case"lower-alpha":case"lower-latin":return"a";default:return null}}var Va=$.create({name:"orderedList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return` $ { this . options . itemTypeName } + `},addAttributes(){return{start:{default:1,parseHTML:t=>t.hasAttribute("start")?parseInt(t.getAttribute("start")||"",10):1},type:{default:null,parseHTML:t=>{let e=t.getAttribute("type");if(e)return e;let n=t.getAttribute("style");if(n){let o=Ph(n);if(o)return o}let r=t.querySelector("li");if(r){let o=r.getAttribute("style");if(o){let i=Ph(o);if(i)return i}}return null}}}},parseHTML(){return[{tag:"ol"}]},renderHTML({HTMLAttributes:t}){let{start:e,type:n,...r}=t,o=N(this.options.HTMLAttributes,r);return e!==1&&(o.start=e),n&&n!=="1"&&(o.type=n),["ol",o,0]},markdownTokenName:"list",parseMarkdown:(t,e)=>{if(t.type!=="list"||!t.ordered)return[];let n=t.start||1,r=t.typeMarker,o=t.items?ak(t.items,e):[],i={};return n!==1&&(i.start=n),r&&(i.type=r),Object.keys(i).length>0?{type:"orderedList",attrs:i,content:o}:{type:"orderedList",content:o}},renderMarkdown:(t,e)=>t.content?e.renderChildren(t.content,`
`):"",markdownTokenizer:{name:"orderedList",level:"block",start:()=>-1,tokenize:(t,e,n)=>{var r,o;let i=t.split(`
`),[s,l]=ik(i);if(s.length===0)return;let a=Wh(s,s[0].indent,n);if(a.length===0)return;let c=((r=s[0])==null?void 0:r.number)||1,d=(o=s[0])==null?void 0:o.type;return{type:"list",ordered:!0,start:c,typeMarker:d,items:a,raw:i.slice(0,l).join(`
`)}}},markdownOptions:{indentsContent:!0},addCommands(){return{toggleOrderedList:()=>({commands:t,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(ck,this.editor.getAttributes(Lh)).run():t.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-7":()=>this.editor.commands.toggleOrderedList()}},addProseMirrorPlugins(){return[new D({props:{handlePaste:(t,e)=>{var n,r;let o=(n=e.clipboardData)==null?void 0:n.getData("text/html");if(o?.trim())return!1;let i=(r=e.clipboardData)==null?void 0:r.getData("text/plain");if(!i)return!1;let s=lk(i);if(!s)return!1;try{let l=t.state.schema.nodeFromJSON(s),a=t.state.tr.replaceSelectionWith(l);return t.dispatch(a),!0}catch{return!1}}}})]},addInputRules(){let t=(n,r)=>(!r.attrs.type||r.attrs.type==="1")&&r.childCount+r.attrs.start===+n[1],e=Je({find:Ih,type:this.type,getAttributes:n=>({start:+n[1]}),joinPredicate:t});return(this.options.keepMarks||this.options.keepAttributes)&&(e=Je({find:Ih,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:n=>({start:+n[1],...this.editor.getAttributes(Lh)}),joinPredicate:t,editor:this.editor})),[e]}}),dk=/^\s*(\[([( |x])?\])\s$/,uk=$.create({name:"taskItem",addOptions(){return{nested:!1,HTMLAttributes:{},taskListTypeName:"taskList",a11y:void 0}},content(){return this.options.nested?"paragraph block*":"paragraph+"},defining:!0,addAttributes(){return{checked:{default:!1,keepOnSplit:!1,parseHTML:t=>{let e=t.getAttribute("data-checked");return e===""||e==="true"},renderHTML:t=>({"data-checked":t.checked})}}},parseHTML(){return[{tag:` li [ data - type = "${this.name}" ] `,priority:51}]},renderHTML({node:t,HTMLAttributes:e}){return["li",N(this.options.HTMLAttributes,e,{"data-type":this.name}),["label",["input",{type:"checkbox",checked:t.attrs.checked?"checked":null}],["span"]],["div",0]]},parseMarkdown:(t,e)=>{let n=[];if(t.tokens&&t.tokens.length>0?n.push(e.createNode("paragraph",{},e.parseInline(t.tokens))):t.text?n.push(e.createNode("paragraph",{},[e.createNode("text",{text:t.text})])):n.push(e.createNode("paragraph",{},[])),t.nestedTokens&&t.nestedTokens.length>0){let r=e.parseChildren(t.nestedTokens);n.push(...r)}return e.createNode("taskItem",{checked:t.checked||!1},n)},renderMarkdown:(t,e)=>{var n;let o=` - [ $ {( n = t . attrs ) != null && n . checked ? "x" : " " }] `;return Wn(t,e,o)},addExtensions(){return this.options.nested?[Bh(this.name,[this.options.taskListTypeName])]:[]},addKeyboardShortcuts(){let t={Enter:()=>this.editor.commands.splitListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)};return this.options.nested?{...t,Tab:()=>this.editor.commands.sinkListItem(this.name)}:t},addNodeView(){return({node:t,HTMLAttributes:e,getPos:n,editor:r})=>{let o=document.createElement("li"),i=document.createElement("label"),s=document.createElement("span"),l=document.createElement("input"),a=document.createElement("div"),c=u=>{var f,h;l.ariaLabel=((h=(f=this.options.a11y)==null?void 0:f.checkboxLabel)==null?void 0:h.call(f,u,l.checked))||` Task item checkbox for $ { u . textContent || "empty task item" } `};c(t),i.contentEditable="false",l.type="checkbox",l.addEventListener("mousedown",u=>u.preventDefault()),l.addEventListener("change",u=>{if(!r.isEditable&&!this.options.onReadOnlyChecked){l.checked=!l.checked;return}let{checked:f}=u.target;r.isEditable&&typeof n=="function"&&r.chain().focus(void 0,{scrollIntoView:!1}).command(({tr:h})=>{let p=n();if(typeof p!="number")return!1;let m=h.doc.nodeAt(p);return h.setNodeMarkup(p,void 0,{...m?.attrs,checked:f}),!0}).run(),!r.isEditable&&this.options.onReadOnlyChecked&&(this.options.onReadOnlyChecked(t,f)||(l.checked=!l.checked))}),Object.entries(this.options.HTMLAttributes).forEach(([u,f])=>{o.setAttribute(u,f)}),o.dataset.checked=t.attrs.checked,l.checked=t.attrs.checked,i.append(l,s),o.append(i,a),Object.entries(e).forEach(([u,f])=>{o.setAttribute(u,f)});let d=new Set(Object.keys(e));return{dom:o,contentDOM:a,update:u=>{if(u.typ
` ) : "" , markdownTokenizer : { name : "taskList" , level : "block" , start ( t ){ var e ; let n = ( e = t . match ( /^\s*[-+*]\s+\[([ xX])\]\s+/ )) == null ? void 0 : e . index ; return n !== void 0 ? n :- 1 }, tokenize ( t , e , n ){ let r = i =>{ let s = zr ( i ,{ itemPattern : /^(\s*)([-+*])\s+\[([ xX])\]\s+(.*)$/ , extractItemData : l =>({ indentLevel : l [ 1 ]. length , mainContent : l [ 4 ], checked : l [ 3 ]. toLowerCase () === "x" }), createToken : ( l , a )=>({ type : "taskItem" , raw : "" , mainContent : l . mainContent , indentLevel : l . indentLevel , checked : l . checked , text : l . mainContent , tokens : n . inlineTokens ( l . mainContent ), nestedTokens : a }), customNestedParser : r }, n ); if ( s ){ let l = { type : "taskList" , raw : s . raw , items : s . items }, a = i . slice ( s . raw . length ); return a . trim () ? [ l ,... n . blockTokens ( a )] : [ l ]} return n . blockTokens ( i )}, o = zr ( t ,{ itemPattern : /^(\s*)([-+*])\s+\[([ xX])\]\s+(.*)$/ , extractItemData : i =>({ indentLevel : i [ 1 ]. length , mainContent : i [ 4 ], checked : i [ 3 ]. toLowerCase () === "x" }), createToken : ( i , s )=>({ type : "taskItem" , raw : "" , mainContent : i . mainContent , indentLevel : i . indentLevel , checked : i . checked , text : i . mainContent , tokens : n . inlineTokens ( i . mainContent ), nestedTokens : s }), customNestedParser : r }, n ); if ( o ) return { type : "taskList" , raw : o . raw , items : o . items }}}, markdownOptions : { indentsContent :! 0 }, addCommands (){ return { toggleTaskList : ()=>({ commands : t })=> t . toggleList ( this . name , this . options . itemTypeName )}}, addKeyboardShortcuts (){ return { "Mod-Shift-9" : ()=> this . editor . commands . toggleTaskList ()}}}), JT = j . create ({ name : "listKit" , addExtensions (){ let t = []; return this . options . bulletList !==! 1 && t . push ( za . configure ( this . options . bulletList )), this . options . listItem !==! 1 && t . push ( Fa . configure ( this . options . listItem )), this . options . listKeymap !==! 1 && t . push ( Zx . configure ( this . options . listKeymap )), this . options . orderedList !==! 1 && t . push ( Va . configure ( this . options . orderedList )), this . options . taskItem !==! 1 && t . push ( uk . configure ( this . options . taskItem )), this . options . taskList !==! 1 && t . push ( fk . configure ( this . options . taskList )), t }}); var Jn = ( t , e , n = {})=>{ t . dom . closest ( "form" ) ? . dispatchEvent ( new CustomEvent ( e ,{ composed :! 0 , cancelable :! 0 , detail : n }))}, Wa = ({ files : t , acceptedTypes : e , acceptedTypesValidationMessage : n , maxSize : r , maxSizeValidationMessage : o })=>{ for ( let i of t ){ if ( e &&! e . includes ( i . type )) return n ; if ( r && i . size >+ r * 1024 ) return o } return null }, ja = ()=>( "10000000-1000-4000-8000" +- 1e11 ). replace ( /[018]/g , t =>( t ^ crypto . getRandomValues ( new Uint8Array ( 1 ))[ 0 ] & 15 >> t / 4 ). toString ( 16 )), hk = ({ editor : t , acceptedTypes : e , acceptedTypesValidationMessage : n , get$WireUsing : r , key : o , maxSize : i , maxSizeValidationMessage : s , statePath : l , uploadingMessage : a })=>{ let c = d => r (). callSchemaComponentMethod ( o , "getUploadedFileAttachmentTemporaryUrl" ,{ attachment : d }); return new D ({ key : new H ( "localFiles" ), props : { handleDrop ( d , u ){ if ( ! u . dataTransfer ? . files . length ) return ! 1 ; let f = Array . from ( u . dataTransfer . files ), h = Wa ({ files : f , acceptedTypes : e , acceptedTypesValidationMessage : n , maxSize : i , maxSizeValidationMessage : s }); if ( h ) return d . dom . dispatchEvent ( new CustomEvent ( "rich-editor-file-validation-message" ,{ bubbles :! 0 , detail : { key : o , livewireId : r (). id , validationMessage : h }})), ! 1 ; if ( ! f . length ) return ! 1 ; Jn ( d , "form-processing-started" ,{ message : a }), u . preventDefault (), u . stopPropagation (); let p = d . posAtCoords ({ left : u . clientX , top : u . clientY }); return f . forEach (( m , g )=>{ t . setEditable ( ! 1 ), d . dom . dispatchEvent ( new CustomEvent ( "rich-editor-uploading-file" ,{ bubbles :! 0 , detail : { key : o , livewireId : r (). id }})); let y = ja (); r (). upload ( `componentFileAttachments. ${ l } . ${ y } ` , m ,()=>{ c ( y ). then ( x =>{ x && ( t . chain (). insertContentAt ( p ? . pos ?? 0 ,{ type : "image" , attrs : { id : y , src : x }}). run (), t . setEditable ( ! 0 ), d . dom . dispatchEvent ( new CustomEvent ( "rich-editor-uploaded-file" ,{ bubbles :! 0 , detail : { key : o , livewireId : r (). id }})), g === f . length - 1 && Jn ( d , "form-processing-finished" ))})})}), ! 0 }, handlePaste ( d , u ){ let f = u . clipboardData ? . files ? . length ? Array . from ( u . clipboardData . files ) : [], h = u . clipboardData ? . getData ( "text" ) ? . length > 0 , p = u . clipboardData ? . getData ( "text/html" ) || "" ; if ( f . length &&! h ){ let m = Wa ({ files : f , acceptedTypes : e , acceptedTypesValidationMessage : n , maxSize : i , maxSizeValidationMessage : s }); return m ? ( d . dom . dispatchEvent ( new CustomEvent ( "rich-editor-file-validation-message" ,{ bubbles :! 0 , detail : { key : o , livewireId : r (). id , validationMessage : m }})), ! 1 )
`);return/\s/.test(r)}):!1}function Wk(t){return()=>{let e=t.state.selection.$anchor.pos,n=t.view.coordsAtPos(e),{top:r,right:o,bottom:i,left:s}=n;try{return new DOMRect(s,r,o-s,i-r)}catch{return null}}}function jk(t,e,n,r){return n?()=>{let o=r.getState(t.state),i=o?.decorationId,s=e.dom.querySelector(` [ data - decoration - id = "${i}" ] `);return s?.getBoundingClientRect()||null}:Wk(t)}function Uk({match:t,dismissedRange:e,state:n,transaction:r,editor:o,shouldResetDismissed:i,effectiveAllowSpaces:s}){return i?.({editor:o,state:n,range:e,match:t,transaction:r,allowSpaces:s})?!1:s?t.range.from===e.from:t.range.from===e.from&&!Vk(r)}function Kk({view:t,pluginKeyRef:e}){let n=t.state.tr.setMeta(e,{exit:!0});t.dispatch(n)}function qk({pluginKey:t,decorationTag:e,decorationClass:n,decorationContent:r,decorationEmptyClass:o,renderer:i,dispatchExit:s}){return{handleKeyDown(l,a){var c,d;let u=t.getState(l.state);return u.active?a.key==="Escape"||a.key==="Esc"?((c=i?.onKeyDown)==null||c.call(i,{view:l,event:a,range:u.range}),s(l),!0):((d=i?.onKeyDown)==null?void 0:d.call(i,{view:l,event:a,range:u.range}))||!1:!1},decorations(l){let a=t.getState(l),{active:c,range:d,decorationId:u,query:f}=a;if(!c)return null;let h=!f?.length,p=[n];return h&&p.push(o),X.create(l.doc,[ne.inline(d.from,d.to,{nodeName:e,class:p.join(" "),"data-decoration-id":u||void 0,"data-decoration-content":r})])}}}function Jk({editor:t,char:e,effectiveAllowSpaces:n,allowToIncludeChar:r,allowedPrefixes:o,startOfLine:i,findSuggestionMatch:s,allow:l,shouldShow:a,shouldKeepDismissed:c,pluginKey:d}){return{init(){return{active:!1,range:{from:0,to:0},query:null,text:null,composing:!1,dismissedRange:null}},apply(u,f,h,p){let{isEditable:m}=t,{composing:g}=t.view,{selection:y}=u,{empty:x,from:b}=y,w={...f},k=u.getMeta(d);if(k&&k.exit)return w.active=!1,w.decorationId=null,w.range={from:0,to:0},w.query=null,w.text=null,w.dismissedRange=f.active?{...f.range}:f.dismissedRange,w;if(w.composing=g,u.docChanged&&w.dismissedRange!==null&&(w.dismissedRange={from:u.mapping.map(w.dismissedRange.from),to:u.mapping.map(w.dismissedRange.to)}),m&&(x||t.view.composing)){(b<f.range.from||b>f.range.to)&&!g&&!f.composing&&(w.active=!1);let C=s({char:e,allowSpaces:n,allowToIncludeChar:r,allowedPrefixes:o,startOfLine:i,$position:y.$from}),S=` id_$ { Math . floor ( Math . random () * 4294967295 )} `;C&&l({editor:t,state:p,range:C.range,isActive:f.active})&&(!a||a({editor:t,range:C.range,query:C.query,text:C.text,transaction:u}))?(w.dismissedRange!==null&&!c({match:C,dismissedRange:w.dismissedRange,state:p,transaction:u})&&(w.dismissedRange=null),w.dismissedRange===null?(w.active=!0,w.decorationId=f.decorationId||S,w.range=C.range,w.query=C.query,w.text=C.text):w.active=!1):(C||(w.dismissedRange=null),w.active=!1)}else w.active=!1;return w.active||(w.decorationId=null,w.range={from:0,to:0},w.query=null,w.text=null),w}}}function Gk({editor:t,items:e}){let n=null,r=null,o=null,i=()=>{r!==null&&(clearTimeout(r),r=null),o?.(),o=null},s=c=>new Promise(d=>{o=d,r=setTimeout(()=>{r=null;let u=o;o=null,u?.()},c)}),l=()=>{n?.abort(),i(),n=null};return{abort:l,fetch:async(c,d)=>{l(),n=new AbortController;let u=n;if(d>0&&await s(d),n!==u||u.signal.aborted)return{status:"aborted"};try{let f=await e({editor:t,query:c,signal:u.signal});return n!==u||u.signal.aborted?{status:"aborted"}:{status:"resolved",items:f}}catch{return n!==u||u.signal.aborted?{status:"aborted"}:{status:"error"}}}}}function Xk({placement:t,offset:e,flip:n,floatingUi:r}){var o,i,s,l;let a=[es({mainAxis:(o=e.mainAxis)!=null?o:4,crossAxis:(i=e.crossAxis)!=null?i:0})];return n&&a.push(Vt()),(s=r?.middleware)!=null&&s.length&&a.push(...r.middleware),{placement:t,strategy:(l=r?.strategy)!=null?l:"absolute",middleware:a}}function Yk(t){if(t instanceof HTMLElement)return t;if(typeof t=="string")try{let e=document.querySelector(t);if(e)return e}catch{return document.body}return document.body}function Qk({getReferenceRect:t,contextElement:e,config:n,container:r,dismissOnOutsideClick:o,dismiss:i}){return(s,l={})=>{let a={getBoundingClientRect:()=>{var p;return(p=t())!=
` ). map ( e => ! e . includes ( "|" ) ||! e . includes ( "`" ) ? e : c1 ( e )). join ( `
` )} function u1 ( t ){ return ( t || "" ). replace ( /\s+/g , " " ). trim ()} function f1 ( t , e , n = {}){ var r ; let o = ( r = n . cellLineSeparator ) != null ? r : a1 ; if ( ! t ||! t . content || t . content . length === 0 ) return "" ; let i = []; t . content . forEach ( m =>{ let g = []; m . content && m . content . forEach ( y =>{ let x = "" ; y . content && Array . isArray ( y . content ) && y . content . length > 1 ? x = y . content . map ( S => e . renderChildren ( S )). join ( o ) : x = y . content ? e . renderChildren ( y . content ) : "" ; let b = u1 ( x . split ( o ). join ( `
` ). replace ( /[ \t]*\r?\n[ \t]*/g , "<br>" )), w = y . type === "tableHeader" , k = YS ( y . attrs ); g . push ({ text : b , isHeader : w , align : k })}), i . push ( g )}); let s = i . reduce (( m , g )=> Math . max ( m , g . length ), 0 ); if ( s === 0 ) return "" ; let l = Array . from ({ length : s }). fill ( 0 ); i . forEach ( m =>{ var g ; for ( let y = 0 ; y < s ; y += 1 ){ let b = ((( g = m [ y ]) == null ? void 0 : g . text ) || "" ). length ; b > l [ y ] && ( l [ y ] = b ), l [ y ] < 3 && ( l [ y ] = 3 )}}); let a = ( m , g )=> m + " " . repeat ( Math . max ( 0 , g - m . length )), c = i [ 0 ], d = c . some ( m => m . isHeader ), u = Array . from ({ length : s }). fill ( null ); i . forEach ( m =>{ var g ; for ( let y = 0 ; y < s ; y += 1 ) ! u [ y ] && (( g = m [ y ]) != null && g . align ) && ( u [ y ] = m [ y ]. align )}); let f = `
` , h = Array . from ({ length : s }). map (( m , g )=> d && c [ g ] && c [ g ]. text || "" ); return f += `| ${ h . map (( m , g )=> a ( m , l [ g ])). join ( " | " ) } |
` , f += `| ${ l . map (( m , g )=>{ let y = Math . max ( 3 , m ), x = u [ g ]; return x === "left" ? `: ${ "-" . repeat ( y ) } ` : x === "right" ? ` ${ "-" . repeat ( y ) } :` : x === "center" ? `: ${ "-" . repeat ( y ) } :` : "-" . repeat ( y ) } ).join(" | ")} |
` ,( d ? i . slice ( 1 ) : i ). forEach ( m =>{ f += `| ${ Array . from ({ length : s } ).fill(0).map((g,y)=>a(m[y]&&m[y].text||"",l[y])).join(" | ")} |
` }), f } var h1 = f1 , p1 = $ . create ({ name : "table" , addOptions (){ return { HTMLAttributes : {}, resizable :! 1 , renderWrapper :! 1 , handleWidth : 5 , cellMinWidth : 25 , View : r1 , lastColumnResizable :! 0 , allowTableNodeSelection :! 1 }}, content : "tableRow+" , tableRole : "table" , isolating :! 0 , group : "block" , parseHTML (){ return [{ tag : "table" }]}, renderHTML ({ node : t , HTMLAttributes : e }){ let { colgroup : n , tableWidth : r , tableMinWidth : o } = o1 ( t , this . options . cellMinWidth ), i = e . style ; function s (){ return i || ( r ? `width: ${ r } ` : `min-width: ${ o } ` )} let l = [ "table" , N ( this . options . HTMLAttributes , e ,{ style : s ()}), n ,[ "tbody" , 0 ]]; return this . options . renderWrapper ? [ "div" ,{ class : "tableWrapper" }, l ] : l }, parseMarkdown : ( t , e )=>{ let n = [], r = Array . isArray ( t . align ) ? t . align : []; if ( t . header ){ let o = []; t . header . forEach (( i , s )=>{ var l ; let a = us (( l = r [ s ]) != null ? l : i . align ), c = a ? { align : a } : {}; o . push ( e . createNode ( "tableHeader" , c ,[{ type : "paragraph" , content : e . parseInline ( i . tokens )}]))}), n . push ( e . createNode ( "tableRow" ,{}, o ))} return t . rows && t . rows . forEach ( o =>{ let i = []; o . forEach (( s , l )=>{ var a ; let c = us (( a = r [ l ]) != null ? a : s . align ), d = c ? { align : c } : {}; i . push ( e . createNode ( "tableCell" , d ,[{ type : "paragraph" , content : e . parseInline ( s . tokens )}]))}), n . push ( e . createNode ( "tableRow" ,{}, i ))}), e . createNode ( "table" , void 0 , n )}, renderMarkdown : ( t , e )=> h1 ( t , e ), markdownTokenizer : { name : "table" , level : "block" , start : t =>{ let e = t . split ( `
` ); if ( e . length < 2 ) return - 1 ; let n = e [ 1 ]; return ! /^[ \t|:]*-[ \t|:-]*$/ . test ( n ) ||! n . includes ( "|" ) ?- 1 : e [ 0 ]. includes ( "|" ) ? 0 :- 1 }, tokenize ( t , e , n ){ let r = t . indexOf ( `
` ), o = r >= 0 ? t . slice ( 0 , r ) : t , i = o . split ( `
` ); if ( i . length < 2 ) return ; let s = i [ 1 ]; if ( ! /^[ \t|:]*-[ \t|:-]*$/ . test ( s ) ||! s . includes ( "|" )) return ; let l = d1 ( o ); if ( l === o ) return ; let c = n . blockTokens ( l )[ 0 ]; if ( c ? . type !== "table" ||! c . raw ) return ; let d = c . raw . split ( `
` ). length , u = t . split ( `
` ). slice ( 0 , d ). join ( `
` ); return {... c , raw : u }}}, addCommands (){ return { insertTable : ({ rows : t = 3 , cols : e = 3 , withHeaderRow : n =! 0 } = {})=>({ tr : r , dispatch : o , editor : i })=>{ let s = s1 ( i . schema , t , e , n ); if ( o ){ let l = r . selection . from + 1 ; r . replaceSelectionWith ( s ). scrollIntoView (). setSelection ( E . near ( r . doc . resolve ( l )))} return ! 0 }, addColumnBefore : ()=>({ state : t , dispatch : e })=> em ( t , e ), addColumnAfter : ()=>({ state : t , dispatch : e })=> tm ( t , e ), deleteColumn : ()=>({ state : t , dispatch : e })=> nm ( t , e ), addRowBefore : ()=>({ state : t , dispatch : e })=> om ( t , e ), addRowAfter : ()=>({ state : t , dispatch : e })=> im ( t , e ), deleteRow : ()=>({ state : t , dispatch : e })=> sm ( t , e ), deleteTable : ()=>({ state : t , dispatch : e })=> cm ( t , e ), mergeCells : ()=>({ state : t , dispatch : e })=> ac ( t , e ), splitCell : ()=>({ state : t , dispatch : e })=> cc ( t , e ), toggleHeaderColumn : ()=>({ state : t , dispatch : e })=> Zn ( "column" )( t , e ), toggleHeaderRow : ()=>({ state : t , dispatch : e })=> Zn ( "row" )( t , e ), toggleHeaderCell : ()=>({ state : t , dispatch : e })=> am ( t , e ), mergeOrSplit : ()=>({ state : t , dispatch : e })=> ac ( t , e ) ?! 0 : cc ( t , e ), setCellAttribute : ( t , e )=>({ state : n , dispatch : r })=> lm ( t , e )( n , r ), goToNextCell : ()=>({ state : t , dispatch : e })=> dc ( 1 )( t , e ), goToPreviousCell : ()=>({ state : t , dispatch : e })=> dc ( - 1 )( t , e ), fixTables : ()=>({ state : t , dispatch : e })=>( e && lc ( t ), ! 0 ), setCellSelection : t =>({ tr : e , dispatch : n })=>{ if ( n ){ let r = Y . create ( e . doc , t . anchorCell , t . headCell ); e . setSelection ( r )} return ! 0 }}}, addKeyboardShortcuts (){ return { Tab : ()=> this . editor . commands . goToNextCell () ?! 0 : this . editor . can (). addRowAfter () ? this . editor . chain (). addRowAfter (). goToNextCell (). run () :! 1 , "Shift-Tab" : ()=> this . editor . commands . goToPreviousCell (), Backspace : ds , "Mod-Backspace" : ds , Delete : ds , "Mod-Delete" : ds }}, addProseMirrorPlugins (){ return [... this . options . resizable && this . editor . isEditable ? [ um ({ handleWidth : this . options . handleWidth , cellMinWidth : this . options . cellMinWidth , defaultCellMinWidth : this . options . cellMinWidth , View : this . options . View , lastColumnResizable : this . options . lastColumnResizable })] : [], hm ({ allowTableNodeSelection : this . options . allowTableNodeSelection })]}, addNodeView (){ let t = this . options . resizable && this . editor . isEditable , e = this . options . View ; return t ||! e ? null : ({ node : n , view : r , HTMLAttributes : o })=>{ let i = N ( this . options . HTMLAttributes , o ); return new e ( n , this . options . cellMinWidth , r , i )}}, extendNodeSchema ( t ){ let e = { name : t . name , options : t . options , storage : t . storage }; return { tableRole : q ( P ( t , "tableRole" , e ))}}}), xm = j . create ({ name : "tableKit" , addExtensions (){ let t = []; return this . options . table !==! 1 && t . push ( p1 . configure ( this . options . table )), this . options . tableCell !==! 1 && t . push ( e1 . configure ( this . options . tableCell )), this . options . tableHeader !==! 1 && t . push ( t1 . configure ( this . options . tableHeader )), this . options . tableRow !==! 1 && t . push ( n1 . configure ( this . options . tableRow )), t }}); var m1 = $ . create ({ name : "text" , group : "inline" , parseMarkdown : t =>({ type : "text" , text : t . text || "" }), renderMarkdown : t => t . text || "" }), km = m1 ; var g1 = j . create ({ name : "textAlign" , addOptions (){ return { types : [], alignments : [ "left" , "center" , "right" , "justify" ], defaultAlignment : null }}, addGlobalAttributes (){ return [{ types : this . options . types , attributes : { textAlign : { default : this . options . defaultAlignment , parseHTML : t =>{ let e = t . style . textAlign ; return this . options . alignments . includes ( e ) ? e : this . options . defaultAlignment }, renderHTML : t => t . textAlign ? { style : `text-align: ${ t . textAlign } ` } : {}}}}]}, addCommands (){ return { setTextAlign : t =>({ commands : e })=> this . options . alignments . includes ( t ) ? this . options . types . map ( n => e . updateAttributes ( n ,{ textAlign : t })). some ( n => n ) :! 1 , unsetTextAlign : ()=>({ commands : t })=> this . options . types . map ( e => t . resetAttributes ( e , "textAlign" )). some ( e => e ), toggleTextAlign : t =>({ editor : e , commands : n })=> this . options . alignments . includes ( t ) ? e . isActive ({ textAlign : t }) ? n . unsetTextAlign () : n . setTextAlign ( t ) :! 1 }}, addKeyboardShortcuts (){ return { "Mod-Shift-l" : ()=> this . editor . commands . setTextAlign ( "left" ), "Mod-Shift-e" : ()=> this . editor . commands . setTextAlign ( "center" ), "Mod-Shift-r" : ()=> this . editor . commands . setTextAlign ( "right" ), "Mod-Shift-j" : ()=> this . editor . commands . setTextAlign ( "justify" )}}}), Sm = g1 ; var y1 = ee . create ({ name : "underline" , addOptions (){ return { HTMLAttributes : {}}}, parseHTML (){ return [{ tag : "u" },{ style : "text-decoration" , consuming :! 1 , getAttrs : t => t . includes ( "underline" ) ?