import {PluginKey,Plugin}from'prosemirror-state';var p=new PluginKey("selectionTracker");function k(t){let{selection:e,doc:i}=t,{from:o,to:m,empty:l}=e,g=i.resolve(o),c=0,a=0;i.forEach((u,f,y)=>{if(f>m)return  false;f<=o&&(c=y),f<=m&&(a=y);});let r=L(t),n=g.parent,s={};n.type.name==="paragraph"&&(n.attrs.alignment&&(s.alignment=n.attrs.alignment),n.attrs.lineSpacing&&(s.lineSpacing=n.attrs.lineSpacing,s.lineSpacingRule=n.attrs.lineSpacingRule),n.attrs.indentLeft&&(s.indentLeft=n.attrs.indentLeft),n.attrs.indentRight&&(s.indentRight=n.attrs.indentRight),n.attrs.indentFirstLine&&(s.indentFirstLine=n.attrs.indentFirstLine),n.attrs.hangingIndent&&(s.hangingIndent=n.attrs.hangingIndent),n.attrs.tabs&&(s.tabs=n.attrs.tabs),n.attrs.numPr&&(s.numPr=n.attrs.numPr),n.attrs.styleId&&(s.styleId=n.attrs.styleId));let d=n.attrs?.numPr,b=!!d?.numId,I=d?.numId===1?"bullet":d?.numId?"numbered":void 0,P=d?.ilvl,C=t.storedMarks||(l?g.marks():[]),h=[],x=false,S=false;for(let u of C)u.type.name==="comment"&&u.attrs.commentId&&h.push(u.attrs.commentId),u.type.name==="insertion"&&(x=true),u.type.name==="deletion"&&(S=true);return {hasSelection:!l,isMultiParagraph:c!==a,textFormatting:r,paragraphFormatting:s,startParagraphIndex:c,endParagraphIndex:a,inList:b,listType:I,listLevel:P,activeCommentIds:h,inInsertion:x,inDeletion:S}}function L(t){let{selection:e,doc:i}=t,{empty:o,$from:m,from:l,to:g}=e,c=t.storedMarks;if(!c)if(o)c=m.marks();else {let r=null;i.nodesBetween(l,g,n=>r?false:n.isText?(r=n.marks,false):true),c=r??m.marks();}let a={};for(let r of c)switch(r.type.name){case "bold":a.bold=true;break;case "italic":a.italic=true;break;case "underline":a.underline={style:r.attrs.style||"single",color:r.attrs.color};break;case "strike":r.attrs.double?a.doubleStrike=true:a.strike=true;break;case "textColor":a.color={rgb:r.attrs.rgb,themeColor:r.attrs.themeColor,themeTint:r.attrs.themeTint,themeShade:r.attrs.themeShade};break;case "highlight":a.highlight=r.attrs.color;break;case "fontSize":a.fontSize=r.attrs.size??r.attrs.sizeCs,r.attrs.sizeCs!=null&&(a.fontSizeCs=r.attrs.sizeCs);break;case "fontFamily":a.fontFamily={ascii:r.attrs.ascii,hAnsi:r.attrs.hAnsi,asciiTheme:r.attrs.asciiTheme};break;case "superscript":a.vertAlign="superscript";break;case "subscript":a.vertAlign="subscript";break}return a}function w(t){return new Plugin({key:p,state:{init(e,i){return k(i)},apply(e,i,o,m){if(!e.selectionSet&&!e.docChanged)return i;let l=k(m);return t&&!E(i,l)&&setTimeout(()=>t(l),0),l}},view(){return {update(e,i){if(!t||e.state.selection.eq(i.selection)&&e.state.doc.eq(i.doc))return;let o=p.getState(e.state);o&&t(o);}}}})}function v(t,e){if(t===e)return  true;if(!t||!e||t.length!==e.length)return  false;for(let i=0;i<t.length;i++)if(t[i]!==e[i])return  false;return  true}function E(t,e){return t.hasSelection===e.hasSelection&&t.isMultiParagraph===e.isMultiParagraph&&t.startParagraphIndex===e.startParagraphIndex&&t.endParagraphIndex===e.endParagraphIndex&&t.inList===e.inList&&t.listType===e.listType&&t.listLevel===e.listLevel&&t.inInsertion===e.inInsertion&&t.inDeletion===e.inDeletion&&v(t.activeCommentIds,e.activeCommentIds)&&JSON.stringify(t.textFormatting)===JSON.stringify(e.textFormatting)&&JSON.stringify(t.paragraphFormatting)===JSON.stringify(e.paragraphFormatting)}function z(t){return p.getState(t)||null}export{p as a,k as b,w as c,z as d};