@lax-wp/editor 0.4.13 → 0.4.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +4 -4
- package/dist/index.umd.js +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -97898,9 +97898,9 @@ const nj = ({
|
|
|
97898
97898
|
]
|
|
97899
97899
|
}
|
|
97900
97900
|
);
|
|
97901
|
-
}, Zj = () => {
|
|
97902
|
-
const { currentMode:
|
|
97903
|
-
return
|
|
97901
|
+
}, Zj = ({ isPresentationMode: e }) => {
|
|
97902
|
+
const { currentMode: t, editorConfig: n } = rp();
|
|
97903
|
+
return t === zi.VIEWING.value || n?.asViewer || e ? null : /* @__PURE__ */ h.jsx(D$, {});
|
|
97904
97904
|
}, Jj = () => {
|
|
97905
97905
|
const e = ye(null), t = ye(null), { editor: n, editorConfig: r, redlineItemWidth: i } = dt(), { pageClass: o, pageConfig: a, setPageConfig: s } = sN(), { isDarkMode: l } = jg(), { isPresentationMode: c, isLaserActive: d, onPresentationModeToggle: u, handleLaserToggle: p } = QV(n, t), m = Qj(), { changes: f } = m, g = r?.mode === zi.VIEWING.value || !!r?.asViewer, _ = f.length > 0 && !c && !g;
|
|
97906
97906
|
return se(() => {
|
|
@@ -97927,7 +97927,7 @@ const nj = ({
|
|
|
97927
97927
|
pageConfig: a,
|
|
97928
97928
|
setPageConfig: s,
|
|
97929
97929
|
children: /* @__PURE__ */ h.jsxs("div", { ref: t, className: `max-w-full h-full relative flex flex-col bg-neutral-200 dark:bg-black-900 editor-container ${c ? "editor-presentation-mode" : ""} ${d ? "laser-active" : ""} ${l ? "dark" : ""}`, id: "editor-shell-qwCfsxssdsfsd", children: [
|
|
97930
|
-
/* @__PURE__ */ h.jsx(Zj, {}),
|
|
97930
|
+
/* @__PURE__ */ h.jsx(Zj, { isPresentationMode: c }),
|
|
97931
97931
|
/* @__PURE__ */ h.jsxs("div", { className: "flex flex-1 min-h-0 dark:bg-black-600", children: [
|
|
97932
97932
|
/* @__PURE__ */ h.jsx(TW, { children: /* @__PURE__ */ h.jsx("div", { className: "flex-1 overflow-auto", children: /* @__PURE__ */ h.jsxs("div", { className: "min-h-full w-fit min-w-full flex justify-center items-start p-4", children: [
|
|
97933
97933
|
/* @__PURE__ */ h.jsx(Xj, { editorPageRef: e, isPresentationMode: c, pageClass: o }),
|
package/dist/index.umd.js
CHANGED
|
@@ -402,5 +402,5 @@ To suppress this warning, you need to explicitly provide the \`palette.${t}Chann
|
|
|
402
402
|
</div>
|
|
403
403
|
</body>
|
|
404
404
|
</html>
|
|
405
|
-
`),R.close();const A=document.title;D.contentWindow&&(D.contentWindow.document.title=p),document.title=p,setTimeout(()=>{D.contentWindow&&(D.contentWindow.document.title=p),document.title=p},100),setTimeout(()=>{try{if(D.contentWindow)D.contentWindow.matchMedia&&D.contentWindow.matchMedia("print").addEventListener("change",function(L){L.matches||(document.title=A,document.body.removeChild(D))}),D.contentWindow.document.title=p||"Untitled document",D.contentWindow.focus(),D.contentWindow.print(),setTimeout(()=>{document.body.contains(D)&&document.body.removeChild(D),document.title=A},1e3);else throw new Error("Cannot access iframe content window")}catch(M){document.body.removeChild(D),document.title=A,De.message.error("Failed to export: "+String(M))}},1e3)}catch(p){De.message.error("Failed to export: "+String(p))}},[t,e,a]);return{downloadTextFile:s,downloadJsonFile:l,downloadMarkdownFile:c,downloadHtmlFile:d,downloadPdfFile:u}},iW=[{value:"A4",label:"A4 (210 × 297 mm)",description:"210 × 297 mm"},{value:"A3",label:"A3 (297 × 420 mm)",description:"297 × 420 mm"},{value:"Letter",label:"Letter (8.5 × 11 in)",description:"8.5 × 11 in"},{value:"Legal",label:"Legal (8.5 × 14 in)",description:"8.5 × 14 in"},{value:"Tabloid",label:"Tabloid (11 × 17 in)",description:"11 × 17 in"}],oW=({onApply:e,onClose:t})=>{const{pageConfig:n,setPageConfig:r}=Cu(),{selectedBGColor:i,margins:o,inputValues:a,handleMarginInputChange:s,handleMarginInputBlur:l,handleMarginKeyDown:c,applyPresetMargins:d,handleSetPageBackgroundColor:u,applyMargins:p}=Jv(),m=w.useRef({pageConfig:{...n},bgColor:document.body.getAttribute("data-page-background-color")??i,margins:{...o}}),[f,g]=w.useState(!1),_=()=>{p(),m.current={pageConfig:{...n},bgColor:i,margins:{...o}},e?.(),t?.()},y=()=>{m.current&&(r(m.current.pageConfig),u(m.current.bgColor)),t?.()},S="w-16 text-xs p-1 border border-gray-300 dark:border-black-500 rounded bg-white dark:bg-black-700 text-neutral-900 dark:text-white";return h.jsxs("div",{className:"h-full flex flex-col bg-white dark:bg-black-800",children:[h.jsx(Mo,{title:"Page Settings",onClose:t?y:void 0}),h.jsxs("div",{className:"flex-1 overflow-y-auto p-4",children:[h.jsxs("div",{className:"mb-4",children:[h.jsx("h4",{className:"text-xs font-medium mb-2 text-neutral-700 dark:text-black-200",children:"Orientation"}),h.jsx(W.Tabs,{variant:"switch",size:"sm",fullWidth:!0,className:"w-full",tabs:["PORTRAIT","LANDSCAPE"],activeTab:n.orientation.toUpperCase(),onTabClick:E=>r({...n,orientation:E==="LANDSCAPE"?"landscape":"portrait"}),tabIcons:{PORTRAIT:h.jsx(ie.CropPortrait,{sx:{fontSize:18},className:"mb-0.5"}),LANDSCAPE:h.jsx(ie.CropLandscape,{sx:{fontSize:18},className:"mb-px"})}})]}),h.jsxs("div",{className:"mb-4 flex items-center gap-2",children:[h.jsxs("div",{className:"flex-1",children:[h.jsx("h4",{className:"text-xs font-medium mb-1 text-neutral-700 dark:text-black-200",children:"Page Size"}),h.jsx(W.SelectField,{value:n.size,onChange:E=>r({...n,size:E}),selectOptions:iW,placeholder:"Select Page Size",className:"w-full",suffixIcon:f?h.jsx(ie.ExpandLessOutlined,{sx:{fontSize:20}}):h.jsx(ie.ExpandMoreOutlined,{sx:{fontSize:20}}),onDropdownVisibleChange:E=>g(E),getPopupContainer:()=>document.getElementById("editor-shell-qwCfsxssdsfsd")??document.body})]}),h.jsxs("div",{className:"w-20",children:[h.jsx("h4",{className:"text-xs font-medium mb-1 text-neutral-700 dark:text-black-200",children:"Page Color"}),h.jsx(DG,{selectedBGColor:i,setSelectedBGColor:u})]})]}),h.jsxs("div",{className:"mb-4",children:[h.jsx("h4",{className:"text-xs font-medium mb-1 text-neutral-700 dark:text-black-200",children:"Preset Margins"}),h.jsx("div",{className:"grid grid-cols-2 gap-1",children:Object.entries(Kv).map(([E])=>h.jsx("button",{className:"h-8 text-xs py-1.5 px-2 bg-neutral-50 dark:bg-black-700 border border-neutral-200 dark:border-black-500 hover:bg-neutral-200 dark:hover:bg-black-600 text-neutral-900 dark:text-white rounded transition-colors",onClick:()=>d(E),children:E},E))})]}),h.jsx("div",{children:h.jsx("h4",{className:"text-xs font-medium mb-1 text-neutral-700 dark:text-black-200",children:"Margins"})}),h.jsx("div",{className:"mb-4 w-full bg-neutral-100 dark:bg-black-700 p-2 rounded border border-neutral-300 dark:border-black-500",children:h.jsxs("div",{className:"w-full flex gap-2 items-center justify-center",children:[h.jsx("div",{className:"flex items-center gap-1 justify-end",children:h.jsx("div",{className:"flex items-center",children:h.jsx("input",{type:"text",value:a.left,onChange:E=>s("left",E.target.value),onKeyDown:E=>c(E,"left"),onBlur:()=>l("left"),className:S,placeholder:"Left"})})}),h.jsxs("div",{className:"flex flex-col items-center gap-2",children:[h.jsx("div",{className:"flex flex-col items-center gap-0.5",children:h.jsx("div",{className:"flex items-center",children:h.jsx("input",{type:"text",value:a.top,onChange:E=>s("top",E.target.value),onKeyDown:E=>c(E,"top"),onBlur:()=>l("top"),className:S,placeholder:"Top"})})}),h.jsx("div",{className:"flex items-center justify-center",children:h.jsx("div",{className:`relative ${n.orientation==="portrait"?"w-24 h-32":"w-32 h-24"} border border-gray-300 dark:border-black-500 bg-white dark:bg-black-600`,children:h.jsx("div",{className:"absolute bg-primary-100 dark:bg-primary-900 border border-primary-300 dark:border-primary-600",style:{top:`${Math.min(o.top/10*100,80)}%`,left:`${Math.min(o.left/10*100,80)}%`,right:`${Math.min(o.right/10*100,80)}%`,bottom:`${Math.min(o.bottom/10*100,80)}%`}})})}),h.jsx("div",{className:"flex flex-col-reverse items-center gap-0.5",children:h.jsx("div",{className:"flex items-center",children:h.jsx("input",{type:"text",value:a.bottom,onChange:E=>s("bottom",E.target.value),onKeyDown:E=>c(E,"bottom"),onBlur:()=>l("bottom"),className:S,placeholder:"Bottom"})})})]}),h.jsx("div",{className:"flex flex-row-reverse items-center gap-1 justify-start",children:h.jsx("div",{className:"flex items-center",children:h.jsx("input",{type:"text",value:a.right,onChange:E=>s("right",E.target.value),onKeyDown:E=>c(E,"right"),onBlur:()=>l("right"),className:S,placeholder:"Right"})})})]})})]}),h.jsxs("div",{className:"px-4 py-3 border-t border-gray-200 dark:border-black-600 flex items-center justify-between bg-white dark:bg-black-800",children:[h.jsx("button",{onClick:y,className:"px-3 py-1.5 border border-neutral-300 dark:border-black-500 text-sm font-medium text-neutral-900 dark:text-white hover:bg-neutral-100 dark:hover:bg-black-700 rounded-lg transition-colors",children:"Cancel"}),h.jsx("button",{onClick:_,className:"px-3 py-1.5 text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 rounded-lg transition-colors",children:"Apply"})]})]})},aW=({position:e="right",currentMode:t})=>{const[n,r]=w.useState(!1),{isDarkMode:i}=Tu(),{editorConfig:o}=at();w.useEffect(()=>{r(!1)},[t]);const{downloadTextFile:a,downloadJsonFile:s,downloadMarkdownFile:l,downloadHtmlFile:c,downloadPdfFile:d}=rW(),u=g=>{switch(g.fileType.value){case"text":a();break;case"json":s();break;case"markdown":l();break;case"html":c();break;case"pdf":d();break;default:a();break}},p=g=>{console.log("Search:",g)},m=(g,_)=>{console.log("Replace:",g,"with",_)},f=[{id:"add",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"insert-icon",size:24}),label:"Add Element",content:h.jsx(U$,{onClose:()=>r(!1)}),notVisible:t==="viewing"},{id:"search",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"document-search",size:24}),label:"Find and Replace",content:h.jsx(w$,{currentMode:t,onSearch:p,onReplace:m,onClose:()=>r(!1)})},{id:"ai",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"ai-icon",size:24}),label:"AI Assistant",content:h.jsxs("div",{className:"h-full flex flex-col bg-white dark:bg-black-800",children:[h.jsx("div",{className:"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-black-600",children:h.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:"AI Assistant"})}),h.jsx("div",{className:"flex-1 overflow-y-auto p-4",children:h.jsx("p",{className:"text-sm text-gray-600 dark:text-black-300",children:"AI Assistant features coming soon..."})})]}),notVisible:!0},{id:"page-settings",icon:h.jsx(le,{className:"dark:text-neutral-100",name:i?"page-settings-dark":"page-settings",size:20}),label:"Page Settings",content:h.jsx(oW,{onClose:()=>r(!1)}),notVisible:t==="viewing"},{id:"pii-anonymization",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"pii-anonymization",size:24}),label:"PII Anonymization",content:h.jsx(WY,{onClose:()=>r(!1)}),notVisible:t==="viewing"||t==="suggesting"},{id:"export",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"download-rounded",size:18}),label:"Export Document",content:h.jsx(k$,{onExport:u,onClose:()=>r(!1)})},{id:"share",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"share",size:22,strokeWidth:5}),label:"Share document",content:h.jsx(G$,{onClose:()=>r(!1)}),notVisible:!o.shareConfig?.enabled}];return h.jsx(O$,{id:"editor-sidebar-qwCfsdsfsd",tools:f,position:e,isExpanded:n,expandedWidth:370,toggleToolbar:r})},zu="data-redline-column-action",Ha="data-redline-column-id",Hu=(e,t,n,r)=>{if(!e.isText||!e.text)return null;const i=e.marks.find(s=>s.type.name===n);if(!i)return null;const o=e.marks.some(s=>s.type.name==="link"),a={markId:i.attrs.id||`${r}-${t}-${Date.now()}`,pos:t,endPos:t+e.text.length,text:e.text,type:r,userId:i.attrs.userId||(r.includes("ai")?"ai":"unknown"),userName:i.attrs.userName||(r.includes("ai")?"AI":"User"),timestamp:i.attrs.timestamp||new Date().toISOString(),nodeType:i.attrs.linkData||o?"link":"text"};return i.attrs.formatChanges&&(a.formatChanges=i.attrs.formatChanges),i.attrs.groupId&&(a.groupId=i.attrs.groupId),i.attrs.linkData&&(a.linkData=i.attrs.linkData),a},sW=e=>{const t=[];return e.descendants(n=>{if(n.type.name==="tableCell"||n.type.name==="tableHeader"){const r=n.textContent.trim();r&&t.push(r)}}),t.join(" | ")},lW=e=>{const t=[];return e.forEach(n=>{if(n.type.name==="tableCell"||n.type.name==="tableHeader"){const r=n.textContent.trim();t.push(r.length>0?r:"empty cell")}}),t.join(" | ")},cW=(e,t)=>{const n=[];return e.descendants(r=>{if((r.type.name==="tableCell"||r.type.name==="tableHeader")&&r.attrs[Ha]===t){const i=r.textContent.trim();return n.push(i.length>0?i:"empty cell"),!1}return!0}),n.join(" | ")},dW=e=>{for(let t=e.depth;t>0;t--){const n=e.node(t);if(n.type.name==="tableRow")return!!(n.attrs["data-redline-row-action"]&&n.attrs["data-redline-type"])}return!1},uW=e=>{for(let t=e.depth;t>0;t--){const n=e.node(t);if(n.type.name==="table")return!!n.attrs["data-redline-type"]}return!1},pW=e=>{for(let t=e.depth;t>0;t--){const n=e.node(t);if(!(n.type.name!=="tableCell"&&n.type.name!=="tableHeader"))return!!(n.attrs[zu]&&n.attrs[Ha])}return!1},mW=e=>{for(let t=e.depth;t>0;t--){const n=e.node(t);if(n.type.name==="blockquote")return!!(n.attrs["data-redline-type"]&&n.attrs["data-redline-blockquote-action"]==="add")}return!1},fW=(e,t)=>{if(e.type.name!=="table")return null;const n=e.attrs["data-redline-type"];if(!n)return null;const r=sW(e);return{markId:e.attrs["data-redline-id"]||`table-${t}-${e.attrs["data-redline-timestamp"]||""}`,pos:t,endPos:t+e.nodeSize,text:"table",type:n,userId:e.attrs["data-redline-user-id"]||"unknown",userName:e.attrs["data-redline-user-name"]||"User",timestamp:e.attrs["data-redline-timestamp"]||new Date().toISOString(),nodeType:"table",tableData:r}},hW=(e,t)=>{if(e.type.name!=="tableRow")return null;const n=e.attrs["data-redline-type"],r=e.attrs["data-redline-row-action"];return!n||!r?null:{markId:`table-row-${t}-${e.attrs["data-redline-timestamp"]||""}`,pos:t,endPos:t+e.nodeSize,text:"row",type:n,userId:e.attrs["data-redline-user-id"]||"unknown",userName:e.attrs["data-redline-user-name"]||"User",timestamp:e.attrs["data-redline-timestamp"]||new Date().toISOString(),nodeType:"tableRow",tableRowData:JSON.stringify({action:r,rowId:e.attrs["data-row-id"]||"",content:lW(e)})}},gW=(e,t,n)=>{if(t.type.name!=="tableCell"&&t.type.name!=="tableHeader")return null;const r=t.attrs["data-redline-type"],i=t.attrs[zu],o=t.attrs[Ha];return!r||!i||!o?null:{markId:`table-column-${o}-${t.attrs["data-redline-timestamp"]||""}`,pos:n,endPos:n+t.nodeSize,text:"column",type:r,userId:t.attrs["data-redline-user-id"]||"unknown",userName:t.attrs["data-redline-user-name"]||"User",timestamp:t.attrs["data-redline-timestamp"]||new Date().toISOString(),nodeType:"tableColumn",tableColumnData:JSON.stringify({action:i,columnId:o,content:cW(e,o)})}},_W=(e,t)=>{if(e.type.name!=="signature")return null;const n=e.attrs.redlineType,r=e.attrs.redlineAction;return!n||!r?null:{markId:e.attrs.redlineId||`signature-${t}-${e.attrs.redlineTimestamp||""}`,pos:t,endPos:t+e.nodeSize,text:"signature",type:n,userId:e.attrs.redlineUserId||"unknown",userName:e.attrs.redlineUserName||"User",timestamp:e.attrs.redlineTimestamp||new Date().toISOString(),nodeType:"signature",signatureData:JSON.stringify({action:r,fileName:e.attrs.fileName??null,recipientEmail:e.attrs.recipientEmail??""})}},bW=(e,t)=>{if(e.type.name!=="variableText")return null;const n=e.attrs.redlineType,r=e.attrs.redlineAction;if(!n||!r)return null;let i={};try{i=e.attrs.redlinePreviousAttrs?JSON.parse(e.attrs.redlinePreviousAttrs):{}}catch{i={}}return{markId:e.attrs.redlineId||`variable-${t}-${e.attrs.redlineTimestamp||""}`,pos:t,endPos:t+e.nodeSize,text:e.attrs.value||`{{${e.attrs.variableName}}}`,type:n,userId:e.attrs.redlineUserId||"unknown",userName:e.attrs.redlineUserName||"User",timestamp:e.attrs.redlineTimestamp||new Date().toISOString(),nodeType:"variable",variableData:JSON.stringify({action:r,variableName:e.attrs.variableName,value:e.attrs.value??"",previousValue:i.value??""})}},EW=(e,t)=>{if(e.type.name!=="blockquote")return null;const n=e.attrs["data-redline-type"],r=e.attrs["data-redline-blockquote-action"];return!n||r!=="add"?null:{markId:`blockquote-${t}-${e.attrs["data-redline-timestamp"]||""}`,pos:t,endPos:t+e.nodeSize,text:"blockquote",type:n,userId:e.attrs["data-redline-user-id"]||"unknown",userName:e.attrs["data-redline-user-name"]||"User",timestamp:e.attrs["data-redline-timestamp"]||new Date().toISOString(),nodeType:"blockquote",formatChanges:JSON.stringify({blockquote:{old:!1,new:!0}})}},SW=(e,t)=>{if(e.type.name!=="image")return null;const n=e.attrs.redlineAction,r=e.attrs.redlineType;return!n||!r?null:{markId:e.attrs.redlineId||`image-${t}-${e.attrs.redlineTimestamp||""}`,pos:t,endPos:t+e.nodeSize,text:e.attrs.src||"image",type:r,userId:e.attrs.redlineUserId||"unknown",userName:e.attrs.redlineUserName||"User",timestamp:e.attrs.redlineTimestamp||new Date().toISOString(),nodeType:"image",imageData:{src:e.attrs.src||"",previousSrc:e.attrs.redlinePreviousSrc||null,width:e.attrs.width??null,height:e.attrs.height??null,previousWidth:e.attrs.redlinePreviousWidth??null,previousHeight:e.attrs.redlinePreviousHeight??null,alignment:e.attrs.align??null,previousAlignment:e.attrs.redlinePreviousAlignment??null,action:n}}},yW=(e,t)=>{if(e.type.name!=="horizontalRule")return null;const n=e.attrs.redlineAction,r=e.attrs.redlineType;return!n||!r?null:{markId:e.attrs.redlineId||`divider-${t}`,pos:t,endPos:t+e.nodeSize,text:"Horizontal divider",type:r,userId:e.attrs.redlineUserId||"unknown",userName:e.attrs.redlineUserName||"User",timestamp:e.attrs.redlineTimestamp||new Date().toISOString(),nodeType:"divider",dividerAction:n}},TW=(e,t)=>{const n=t.filter(i=>i.type.includes("deletion")).map(i=>({from:i.pos,to:i.endPos}));if(n.length===0)return e;const r=5;return e.filter(i=>{if(!i.type.includes("insertion"))return!0;const o=t.filter(l=>l.type.includes("insertion")&&(i.markIds?.includes(l.markId)||l.markId===i.id));if(o.length===0)return!0;const a=new Set(["text","link","blockquote"]);if(i.nodeType&&!a.has(i.nodeType)){const l=Math.min(...o.map(m=>m.pos)),c=Math.max(...o.map(m=>m.endPos)),d=n.some(m=>m.to>=l-r&&m.to<=l+r),u=n.some(m=>m.from>=c-r&&m.from<=c+r),p=n.some(m=>m.from<=l&&m.to>=c);return!(d&&u)&&!p}return!o.every(l=>n.some(c=>c.from<=l.pos&&c.to>=l.endPos))})},vW=e=>{const t=new Map,n=new Map;for(const r of e){const i=r.formatChanges&&r.groupId?r.groupId:r.markId,o=t.get(i);if(o){const a=n.get(i)??r.pos,s=r.pos-a;if(o.content+=s>1?" | "+r.text:r.text,n.set(i,r.endPos),o.markIds?.includes(r.markId)||(o.markIds=[...o.markIds??[o.id],r.markId]),r.linkData&&!o.linkData){o.position=r.pos,r.nodeType==="link"&&(o.nodeType="link");try{o.linkData=JSON.parse(r.linkData)}catch{}}}else{const a={id:r.markId,markIds:[r.markId],type:r.type,content:r.text,userId:r.userId,userName:r.userName,timestamp:r.timestamp,position:r.pos};if(r.nodeType==="table"&&(a.nodeType="table",a.tableData=r.tableData),r.nodeType==="tableRow"&&r.tableRowData){a.nodeType="tableRow";try{a.tableRowData=JSON.parse(r.tableRowData)}catch{}}if(r.nodeType==="tableColumn"&&r.tableColumnData){a.nodeType="tableColumn";try{a.tableColumnData=JSON.parse(r.tableColumnData)}catch{}}if(r.nodeType==="blockquote"&&(a.nodeType="blockquote"),r.nodeType==="signature"&&r.signatureData){a.nodeType="signature";try{a.signatureData=JSON.parse(r.signatureData)}catch{}}if(r.nodeType==="variable"&&r.variableData){a.nodeType="variable";try{a.variableData=JSON.parse(r.variableData)}catch{}}if(r.nodeType==="image"&&r.imageData&&(a.nodeType="image",a.imageData=r.imageData),r.nodeType==="divider"&&r.dividerAction&&(a.nodeType="divider",a.dividerAction=r.dividerAction),r.nodeType==="link"&&(a.nodeType="link"),r.linkData)try{a.linkData=JSON.parse(r.linkData)}catch{}r.formatChanges&&(a.formatChanges=r.formatChanges),t.set(i,a),n.set(i,r.endPos)}}return Array.from(t.values()).sort((r,i)=>r.position-i.position)},CW=e=>{const t=e.filter(n=>n.nodeType==="tableRow").map(n=>({start:n.pos,end:n.endPos}));return t.length===0?e:e.filter(n=>n.nodeType==="tableRow"||n.nodeType==="tableColumn"?!0:!t.some(r=>n.pos>=r.start&&n.endPos<=r.end))},xW=e=>{const t=e.filter(n=>n.nodeType==="tableColumn").map(n=>({start:n.pos,end:n.endPos}));return t.length===0?e:e.filter(n=>n.nodeType==="tableColumn"||n.nodeType==="tableRow"?!0:!t.some(r=>n.pos>=r.start&&n.endPos<=r.end))},NW=e=>{const t=new Set;return e.filter(n=>{if(n.nodeType!=="tableColumn"||!n.tableColumnData)return!0;try{const r=JSON.parse(n.tableColumnData),i=[n.type,n.userId,n.timestamp,r.action,r.columnId].join("::");return t.has(i)?!1:(t.add(i),!0)}catch{return!0}})},AW=e=>["bold","italic","underline","strike","superscript","subscript"].includes(e)?"text-formatting":["fontSize","fontFamily","lineHeight"].includes(e)?"font-styling":["color","backgroundColor","highlight"].includes(e)?"colors":["list","listLevel","heading","blockquote","indent"].includes(e)?"structure":e,rN=e=>{if(!e.formatChanges)return!1;try{return JSON.parse(e.formatChanges)?.list?.old==="none"}catch{return!1}},RW=e=>{if(!e.formatChanges)return[e];if(rN(e))return[e];try{const t=JSON.parse(e.formatChanges),n=new Map;return Object.keys(t).forEach(r=>{const i=AW(r),o=n.get(i)??{};o[r]=t[r],n.set(i,o)}),Array.from(n.entries()).map(([r,i])=>({...e,id:`${e.id}::${r}`,formatChanges:JSON.stringify(i)}))}catch{return[e]}},OW=e=>{const t=e.filter(n=>n.nodeType==="table").map(n=>({start:n.pos,end:n.endPos}));return t.length===0?e:e.filter(n=>n.nodeType==="table"?!0:!t.some(r=>n.pos>=r.start&&n.endPos<=r.end))},kW=e=>{const t=[];return e.flatMap(RW).sort((r,i)=>r.position-i.position).forEach(r=>{if(!r.formatChanges||rN(r)){t.push(r);return}const i=t[t.length-1];if(!!i&&!!i.formatChanges&&i.type===r.type&&i.userId===r.userId&&i.timestamp===r.timestamp&&(i.nodeType||"text")===(r.nodeType||"text")&&i.formatChanges===r.formatChanges&&Math.abs(r.position-i.position)<=4){i.position=Math.min(i.position,r.position);return}t.push(r)}),t},IW=(e,t,n,r)=>{e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n}).run();const i=()=>{e.isActive("taskList")?e.chain().setMeta(Ne,!0).focus().toggleTaskList().run():e.isActive("bulletList")?e.chain().setMeta(Ne,!0).focus().toggleList("bulletList","listItem").run():e.isActive("orderedList")&&e.chain().setMeta(Ne,!0).focus().toggleList("orderedList","listItem").run()};if(r==="none"){i();return}if(r==="task"){e.isActive("taskList")||(i(),e.chain().setMeta(Ne,!0).focus().toggleTaskList().run());return}if(r.startsWith("bullet:")){const o=r.slice(7);e.isActive("bulletList")||(i(),e.chain().setMeta(Ne,!0).focus().toggleList("bulletList","listItem").run()),e.chain().setMeta(Ne,!0).focus().updateAttributes("bulletList",{listType:o}).run();return}if(r.startsWith("ordered:")){const o=r.slice(8);e.isActive("orderedList")||(i(),e.chain().setMeta(Ne,!0).focus().toggleList("orderedList","listItem").run()),e.chain().setMeta(Ne,!0).focus().updateAttributes("orderedList",{listType:o}).run()}},wW=(e,t,n,r)=>{const i=e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n});if(r==="paragraph"){i.setParagraph().run();return}const o=Number(r.substring(1));o>=1&&o<=6&&i.setHeading({level:o}).run()},MW=(e,t,n,r)=>{e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n}).setTextAlign(r).run()},DW=(e,t,n,r)=>{e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n}).setSelectedListItemMarkerFontSize(r).setSelectedTaskItemMarkerFontSize(r).run()},LW=(e,t,n,r)=>{e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n}).run(),e.isActive("blockquote")!==r&&e.chain().setMeta(Ne,!0).focus().toggleBlockquote().run()},PW=(e,t,n,r)=>{const{state:i}=e,o=i.tr,a=new Set(["paragraph","heading","blockquote"]);i.doc.nodesBetween(t,n,(s,l)=>{if(!a.has(s.type.name))return;const c=s.attrs?.indent;(typeof c=="number"?c:typeof c=="string"&&Number.parseInt(c,10)||0)!==r&&o.setNodeMarkup(l,void 0,{...s.attrs,indent:r})}),o.docChanged&&(o.setMeta(Ne,!0),e.view.dispatch(o))},Gu=(e,t,n)=>{const{state:r}=e,{tr:i}=r,o=()=>{i.setMeta(Ne,!0),i.setMeta("addToHistory",!1),i.selectionSet||i.setSelection(r.selection.map(i.doc,i.mapping)),i.setMeta("scrollIntoView",!1),e.view.dispatch(i)};if(t.nodeType==="image"){let S=t.position,E=r.doc.nodeAt(S);const T=t.id;if(!E||E.type.name!=="image"||E.attrs.redlineId!==T){let N=null,x=null;r.doc.descendants((O,I)=>x?!1:O.type.name!=="image"||O.attrs.redlineId!==T?!0:(N=I,x=O,!1)),N!==null&&x&&(S=N,E=x)}if(!E||E.type.name!=="image")return!1;const b=t.imageData?.action,v={...E.attrs,redlineId:null,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousSrc:null,redlinePreviousWidth:null,redlinePreviousHeight:null,redlinePreviousAlignment:null,redlineGroupId:null};return b==="insert"?n==="accept"?i.setNodeMarkup(S,void 0,v):i.delete(S,S+E.nodeSize):b==="delete"?n==="accept"?i.delete(S,S+E.nodeSize):i.setNodeMarkup(S,void 0,v):b==="replace"?n==="accept"?i.setNodeMarkup(S,void 0,v):i.setNodeMarkup(S,void 0,{...v,src:t.imageData?.previousSrc||E.attrs.src}):b==="resize"?n==="accept"?i.setNodeMarkup(S,void 0,v):i.setNodeMarkup(S,void 0,{...v,width:t.imageData?.previousWidth??E.attrs.width,height:t.imageData?.previousHeight??E.attrs.height,align:t.imageData?.previousAlignment??E.attrs.align}):b==="align"&&(n==="accept"?i.setNodeMarkup(S,void 0,v):i.setNodeMarkup(S,void 0,{...v,align:t.imageData?.previousAlignment??E.attrs.align})),i.docChanged?(o(),!0):!1}if(t.nodeType==="divider"){const S=t.id;let E=t.position,T=r.doc.nodeAt(E);if((!T||T.type.name!=="horizontalRule"||T.attrs.redlineId!==S)&&r.doc.descendants((v,N)=>T&&T.attrs.redlineId===S?!1:v.type.name==="horizontalRule"&&v.attrs.redlineId===S?(E=N,T=v,!1):!0),!T||T.type.name!=="horizontalRule")return!1;const b={...T.attrs,redlineId:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineGroupId:null};return t.dividerAction==="insert"?n==="accept"?i.setNodeMarkup(E,void 0,b):i.delete(E,E+T.nodeSize):t.dividerAction==="delete"&&(n==="accept"?i.delete(E,E+T.nodeSize):i.setNodeMarkup(E,void 0,b)),i.docChanged?(o(),!0):!1}if(t.nodeType==="tableRow"){let S=t.position,E=r.doc.nodeAt(S);const T=(b,v)=>b?.type.name==="tableRow"&&b.attrs["data-redline-type"]===t.type&&b.attrs["data-redline-user-id"]===t.userId&&b.attrs["data-redline-timestamp"]===t.timestamp&&(v===void 0||b.attrs["data-row-id"]===v);if(!T(E,t.tableRowData?.rowId)){let b=null;r.doc.descendants((v,N)=>b?!1:T(v,t.tableRowData?.rowId)?(S=N,b=v,!1):!0),E=b}if(E&&E.type.name==="tableRow"){if(t.tableRowData?.action==="delete")n==="accept"?i.delete(S,S+E.nodeSize):i.setNodeMarkup(S,void 0,{...E.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-row-action":null});else if(n==="accept"){i.setNodeMarkup(S,void 0,{...E.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-row-action":null});const v=S+1,N=S+E.nodeSize-1;["userInsertion","userDeletion","aiInsertion","aiDeletion"].forEach(O=>{const I=r.schema.marks[O];I&&i.removeMark(v,N,I)})}else i.delete(S,S+E.nodeSize);return i.docChanged?(o(),!0):!1}}if(t.nodeType==="tableColumn"){const S=t.tableColumnData?.columnId;if(!S)return!1;const E=[];return r.doc.descendants((T,b)=>(T.type.name==="tableCell"||T.type.name==="tableHeader")&&T.attrs[Ha]===S&&T.attrs["data-redline-type"]===t.type&&T.attrs["data-redline-user-id"]===t.userId&&T.attrs["data-redline-timestamp"]===t.timestamp?(E.push({pos:b,node:T}),!1):!0),E.length===0?!1:(t.tableColumnData?.action==="delete"?E.sort((T,b)=>b.pos-T.pos).forEach(({pos:T})=>{const b=i.mapping.map(T),v=i.doc.nodeAt(b);if(v){if(n==="accept"){i.delete(b,b+v.nodeSize);return}i.setNodeMarkup(b,void 0,{...v.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,[zu]:null,[Ha]:null})}}):n==="accept"?E.sort((T,b)=>b.pos-T.pos).forEach(({pos:T})=>{const b=i.mapping.map(T),v=i.doc.nodeAt(b);if(!v)return;i.setNodeMarkup(b,void 0,{...v.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,[zu]:null,[Ha]:null});const N=b+1,x=b+v.nodeSize-1;["userInsertion","userDeletion","aiInsertion","aiDeletion"].forEach(I=>{const k=i.doc.type.schema.marks[I];k&&i.removeMark(N,x,k)})}):E.sort((T,b)=>b.pos-T.pos).forEach(({pos:T})=>{const b=i.mapping.map(T),v=i.doc.nodeAt(b);v&&i.delete(b,b+v.nodeSize)}),i.docChanged?(o(),!0):!1)}if(t.nodeType==="table"){const S=t.position,E=r.doc.nodeAt(S);if(E&&E.type.name==="table"){if(t.type.includes("insertion"))if(n==="accept"){i.setNodeMarkup(S,void 0,{...E.attrs,"data-redline-id":null,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null});const b=S+1,v=S+E.nodeSize-1;["userInsertion","userDeletion","aiInsertion","aiDeletion"].forEach(O=>{const I=r.schema.marks[O];I&&i.removeMark(b,v,I)});const x=[];E.descendants((O,I)=>O.type.name==="tableRow"&&O.attrs["data-redline-type"]?(x.push(S+I),!1):!0),x.sort((O,I)=>I-O),x.forEach(O=>{const I=i.mapping.map(O),k=i.doc.nodeAt(I);k?.type.name==="tableRow"&&i.setNodeMarkup(I,void 0,{...k.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-row-action":null})})}else i.delete(S,S+E.nodeSize);else if(n==="accept")i.delete(S,S+E.nodeSize);else{const b=E.attrs["data-redline-prior-type"];i.setNodeMarkup(S,void 0,{...E.attrs,"data-redline-id":b?E.attrs["data-redline-id"]:null,"data-redline-type":b??null,"data-redline-user-id":b?E.attrs["data-redline-user-id"]:null,"data-redline-user-name":b?E.attrs["data-redline-user-name"]:null,"data-redline-timestamp":b?E.attrs["data-redline-timestamp"]:null,"data-redline-prior-type":null})}return i.docChanged?(o(),!0):!1}}if(t.nodeType==="signature"){const S=t.position,E=r.doc.nodeAt(S);if(E&&E.type.name==="signature"){const T=t.signatureData?.action;if(T==="add")n==="accept"?i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null}):i.delete(S,S+E.nodeSize);else if(T==="delete")n==="accept"?i.delete(S,S+E.nodeSize):i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null});else if(T==="update")if(n==="accept")i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null});else{let b={};try{b=E.attrs.redlinePreviousAttrs?JSON.parse(E.attrs.redlinePreviousAttrs):{}}catch{b={}}i.setNodeMarkup(S,void 0,{...E.attrs,...b,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null})}return i.docChanged?(o(),!0):!1}}if(t.nodeType==="blockquote"){let S=t.position,E=r.doc.nodeAt(S);const T=b=>b?.type.name==="blockquote"&&b.attrs["data-redline-type"]===t.type&&b.attrs["data-redline-user-id"]===t.userId&&b.attrs["data-redline-timestamp"]===t.timestamp&&b.attrs["data-redline-blockquote-action"]==="add";if(!T(E)){let b=null;r.doc.descendants((v,N)=>b?!1:T(v)?(S=N,b=v,!1):!0),E=b}if(E&&E.type.name==="blockquote"){const b={...E.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-blockquote-action":null};if(n==="accept"){i.setNodeMarkup(S,void 0,b);const x=S+1,O=S+E.nodeSize-1;return["userInsertion","userDeletion","aiInsertion","aiDeletion"].forEach(I=>{const k=r.schema.marks[I];k&&i.removeMark(x,O,k)}),i.docChanged?(o(),!0):!1}i.setNodeMarkup(S,void 0,b),o();const v=S+1,N=Math.max(v,S+E.nodeSize-1);return e.chain().setMeta(Ne,!0).focus().setTextSelection({from:v,to:N}).toggleBlockquote().run(),!0}}if(t.nodeType==="variable"){const S=t.position,E=r.doc.nodeAt(S);if(E&&E.type.name==="variableText"){const T=t.variableData?.action;if(T==="add")n==="accept"?i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null}):i.delete(S,S+E.nodeSize);else if(T==="delete")if(n==="accept")i.delete(S,S+E.nodeSize);else{let b={};try{b=E.attrs.redlinePreviousAttrs?JSON.parse(E.attrs.redlinePreviousAttrs):{}}catch{b={}}i.setNodeMarkup(S,void 0,{...E.attrs,...b,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null})}else if(T==="update")if(n==="accept")i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null});else{let b={};try{b=E.attrs.redlinePreviousAttrs?JSON.parse(E.attrs.redlinePreviousAttrs):{}}catch{b={}}i.setNodeMarkup(S,void 0,{...E.attrs,...b,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null})}return i.docChanged?(o(),!0):!1}}if(t.nodeType==="link"&&t.linkData){const{action:S,url:E,oldUrl:T}=t.linkData,v=t.type.includes("ai")?"aiInsertion":"userInsertion",N=r.schema.marks[v],x=r.schema.marks.link;if(!N)return!1;const O=new Set((t.markIds?.length?t.markIds:[t.id]).filter(Boolean)),I=[];if(r.doc.descendants((k,C)=>{if(!k.isText)return;k.marks.find(R=>R.type.name===v&&O.has(R.attrs.id)&&R.attrs.linkData)&&k.text&&I.push({from:C,to:C+k.text.length})}),I.length===0)return!1;for(const k of I.sort((C,D)=>D.from-C.from))i.removeMark(k.from,k.to,N),n==="reject"&&(S==="add"?x&&i.removeMark(k.from,k.to,x):S==="remove"?x&&E&&i.addMark(k.from,k.to,x.create({href:E})):S==="change"&&x&&T&&(i.removeMark(k.from,k.to,x),i.addMark(k.from,k.to,x.create({href:T}))));return i.docChanged?(o(),!0):!1}const a=!!t.formatChanges,s=[],l=new Set((t.markIds&&t.markIds.length>0?t.markIds:[t.id]).filter(Boolean)),c=t.type.includes("insertion"),d=t.type.includes("deletion"),u=t.type.includes("ai")?c?"aiInsertion":"aiDeletion":c?"userInsertion":"userDeletion",p=r.schema.marks[u];if(!p||(r.doc.descendants((S,E)=>{if(!S.isText)return;S.marks.find(b=>b.type.name===u&&l.has(b.attrs.id))&&S.text&&s.push({from:E,to:E+S.text.length})}),s.length===0))return!1;if(a){let S={};try{t.formatChanges&&(S=JSON.parse(t.formatChanges))}catch{console.error("Failed to parse format changes")}let E=null,T=null,b=null,v=null,N=null,x=null,O=null,I=null,k=null,C=null,D=null,R=null,A=null,M=null,L,B=null;const P=[...s].sort((F,H)=>H.from-F.from);for(const F of P){const H=r.doc.nodeAt(F.from),$=H?.marks.find(q=>q.type.name===u&&l.has(q.attrs.id));let G={};if($?.attrs.formatChanges)try{G={...JSON.parse($.attrs.formatChanges)},Object.keys(S).forEach(ee=>{delete G[ee]})}catch{G={}}if(n==="accept")i.removeMark(F.from,F.to,p),Object.keys(G).length>0&&i.addMark(F.from,F.to,p.create({...$?.attrs,formatChanges:JSON.stringify(G)}));else{i.removeMark(F.from,F.to,p);const q={};let ee=!1;const Y=H?.marks.find(j=>j.type.name==="textStyle")?.attrs||{};if(Object.keys(S).forEach(j=>{const{old:J,new:oe}=S[j];if(["bold","italic","underline","strike","superscript","subscript"].includes(j)){const Q=r.schema.marks[j];Q&&(oe&&i.removeMark(F.from,F.to,Q),J&&i.addMark(F.from,F.to,Q.create()))}else if(["color","backgroundColor","fontSize","fontFamily","lineHeight"].includes(j))q[j]=J,ee=!0,j==="fontSize"&&(typeof J=="string"||J===null)&&(L=J,B=B?{from:Math.min(B.from,F.from),to:Math.max(B.to,F.to)}:{from:F.from,to:F.to});else if(j==="highlight"&&r.schema.marks.highlight)i.removeMark(F.from,F.to,r.schema.marks.highlight),J&&J!==null&&i.addMark(F.from,F.to,r.schema.marks.highlight.create({color:J}));else if(j==="list"&&typeof J=="string")E=J,T=T?{from:Math.min(T.from,F.from),to:Math.max(T.to,F.to)}:{from:F.from,to:F.to};else if(j==="heading"&&typeof J=="string")O=J,I=I?{from:Math.min(I.from,F.from),to:Math.max(I.to,F.to)}:{from:F.from,to:F.to};else if(j==="textAlign"&&typeof J=="string")k=J,C=C?{from:Math.min(C.from,F.from),to:Math.max(C.to,F.to)}:{from:F.from,to:F.to};else if(j==="blockquote"&&typeof J=="boolean")D=J,R=R?{from:Math.min(R.from,F.from),to:Math.max(R.to,F.to)}:{from:F.from,to:F.to};else if(j==="indent"&&(typeof J=="string"||typeof J=="number")){const Q=Number.parseInt(String(J),10);Number.isFinite(Q)&&(A=Q,M=M?{from:Math.min(M.from,F.from),to:Math.max(M.to,F.to)}:{from:F.from,to:F.to})}else if(j==="listLevel"&&typeof J=="string"&&typeof oe=="string"){const[Q,ve]=J.split(":"),[,$e]=oe.split(":"),Pe=Number.parseInt(ve,10),Ce=Number.parseInt($e,10);Number.isFinite(Pe)&&Number.isFinite(Ce)&&(b=Pe,v=Ce,N=Q||"listItem",x=x?{from:Math.min(x.from,F.from),to:Math.max(x.to,F.to)}:{from:F.from,to:F.to})}}),ee&&r.schema.marks.textStyle){i.removeMark(F.from,F.to,r.schema.marks.textStyle);const j={...Y,...q};Object.keys(j).forEach(J=>{(j[J]===null||j[J]===void 0)&&delete j[J]}),Object.keys(j).length>0&&i.addMark(F.from,F.to,r.schema.marks.textStyle.create(j))}Object.keys(G).length>0&&i.addMark(F.from,F.to,p.create({...$?.attrs,formatChanges:JSON.stringify(G)}))}}if(i.docChanged){if(o(),n==="reject"&&E&&T!==null){const{from:F,to:H}=T;IW(e,F,H,E)}if(n==="reject"&&O&&I!==null){const{from:F,to:H}=I;wW(e,F,H,O)}if(n==="reject"&&k&&C!==null){const{from:F,to:H}=C;MW(e,F,H,k)}if(n==="reject"&&D!==null&&R!==null){const{from:F,to:H}=R;LW(e,F,H,D)}if(n==="reject"&&A!==null&&M!==null){const{from:F,to:H}=M;PW(e,F,H,A)}if(n==="reject"&&B!==null&&L!==void 0){const{from:F,to:H}=B;DW(e,F,H,L)}if(n==="reject"&&b!==null&&v!==null&&N!==null&&x!==null){const{from:F,to:H}=x,$=v-b,G=N;if(e.chain().setMeta(Ne,!0).focus().setTextSelection({from:F,to:H}).run(),$>0)for(let q=0;q<$;q++)e.chain().setMeta(Ne,!0).focus().liftListItem(G).run();else if($<0)for(let q=0;q<Math.abs($);q++)e.chain().setMeta(Ne,!0).focus().sinkListItem(G).run()}return!0}}else{const S=[...s];(c&&n==="reject"||d&&n==="accept")&&S.sort((E,T)=>T.from-E.from);for(const E of S)c?n==="accept"?i.removeMark(E.from,E.to,p):i.delete(E.from,E.to):d&&(n==="accept"?i.delete(E.from,E.to):i.removeMark(E.from,E.to,p));if(d&&n==="accept"){const E=new Set(["orderedList","bulletList","taskList"]),T=new Set(["listItem","taskItem"]),b=[],v=new Set;i.doc.descendants((x,O)=>{if(E.has(x.type.name)){let I=x.childCount>0;if(x.forEach(k=>{k.textContent.length>0&&(I=!1)}),I){b.push({pos:O,size:x.nodeSize});let k=1;return x.forEach(C=>{v.add(O+k),k+=C.nodeSize}),!1}return!0}return T.has(x.type.name)?(!v.has(O)&&x.textContent.length===0&&b.push({pos:O,size:x.nodeSize}),!1):!0});for(const{pos:x,size:O}of b.sort((I,k)=>k.pos-I.pos))i.delete(x,x+O);const N=[];i.doc.descendants((x,O)=>x.type.name==="blockquote"&&x.textContent.length===0?(N.push({pos:O,size:x.nodeSize}),!1):!0);for(const{pos:x,size:O}of N.sort((I,k)=>k.pos-I.pos))i.delete(x,x+O)}}const m=[];r.doc.descendants((S,E)=>{if(S.type.name!=="horizontalRule")return!0;if(!l.has(S.attrs.redlineId))return!1;const T=S.attrs.redlineAction;return T&&m.push({pos:E,action:T}),!1});for(const{pos:S,action:E}of m.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="horizontalRule")continue;const v={...b.attrs,redlineId:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineGroupId:null};E==="insert"?n==="accept"?i.setNodeMarkup(T,void 0,{...v,redlinePriorAction:null}):i.delete(T,T+b.nodeSize):E==="delete"&&(n==="accept"?i.delete(T,T+b.nodeSize):b.attrs.redlinePriorAction==="insert"?i.setNodeMarkup(T,void 0,{...b.attrs,redlineAction:"insert",redlinePriorAction:null}):i.setNodeMarkup(T,void 0,{...v,redlinePriorAction:null}))}const f=[];r.doc.descendants((S,E)=>{if(S.type.name!=="table")return!0;if(!l.has(S.attrs["data-redline-id"]))return!1;const T=S.attrs["data-redline-type"];return T&&f.push({pos:E,redlineType:T}),!1});for(const{pos:S,redlineType:E}of f.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="table")continue;const v={...b.attrs,"data-redline-id":null,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-prior-type":null};if(E.includes("insertion"))n==="accept"?i.setNodeMarkup(T,void 0,v):i.delete(T,T+b.nodeSize);else if(n==="accept")i.delete(T,T+b.nodeSize);else{const x=b.attrs["data-redline-prior-type"];x?i.setNodeMarkup(T,void 0,{...v,"data-redline-type":x,"data-redline-id":b.attrs["data-redline-id"],"data-redline-user-id":b.attrs["data-redline-user-id"],"data-redline-user-name":b.attrs["data-redline-user-name"],"data-redline-timestamp":b.attrs["data-redline-timestamp"]}):i.setNodeMarkup(T,void 0,v)}}const g=[];r.doc.descendants((S,E)=>{if(S.type.name!=="image")return!0;if(!l.has(S.attrs.redlineId))return!1;const T=S.attrs.redlineAction;return T&&g.push({pos:E,action:T}),!1});for(const{pos:S,action:E}of g.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="image")continue;const v={...b.attrs,redlineId:null,redlineType:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlinePriorAction:null};E==="insert"?n==="accept"?i.setNodeMarkup(T,void 0,v):i.delete(T,T+b.nodeSize):E==="delete"&&(n==="accept"?i.delete(T,T+b.nodeSize):b.attrs.redlinePriorAction==="insert"?i.setNodeMarkup(T,void 0,{...b.attrs,redlineAction:"insert",redlinePriorAction:null}):i.setNodeMarkup(T,void 0,v))}const _=[];r.doc.descendants((S,E)=>{if(S.type.name!=="signature")return!0;if(!l.has(S.attrs.redlineId))return!1;const T=S.attrs.redlineAction;return T&&_.push({pos:E,action:T}),!1});for(const{pos:S,action:E}of _.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="signature")continue;const v={...b.attrs,redlineId:null,redlineType:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlinePriorAction:null};E==="add"?n==="accept"?i.setNodeMarkup(T,void 0,v):i.delete(T,T+b.nodeSize):E==="delete"&&(n==="accept"?i.delete(T,T+b.nodeSize):b.attrs.redlinePriorAction==="add"?i.setNodeMarkup(T,void 0,{...b.attrs,redlineAction:"add",redlinePriorAction:null}):i.setNodeMarkup(T,void 0,v))}const y=[];r.doc.descendants((S,E)=>{if(S.type.name!=="variableText")return!0;if(!l.has(S.attrs.redlineId))return!1;const T=S.attrs.redlineAction;return T&&y.push({pos:E,action:T}),!1});for(const{pos:S,action:E}of y.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="variableText")continue;const v={...b.attrs,redlineId:null,redlineType:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlinePriorAction:null};E==="add"?n==="accept"?i.setNodeMarkup(T,void 0,v):i.delete(T,T+b.nodeSize):E==="delete"&&(n==="accept"?i.delete(T,T+b.nodeSize):b.attrs.redlinePriorAction==="add"?i.setNodeMarkup(T,void 0,{...b.attrs,redlineAction:"add",redlinePriorAction:null}):i.setNodeMarkup(T,void 0,v))}return i.docChanged?(o(),!0):!1},BW=()=>{const{editor:e,editorConfig:t}=at(),[n,r]=w.useState([]),[i,o]=w.useState([]),a=!!t.currentUser?.isExternalUser,s=w.useCallback(()=>{if(!e)return;const{state:E}=e,{doc:T}=E,b=[],v=[];T.descendants((I,k)=>I.type.name==="tableCell"||I.type.name==="tableHeader"?(v.push({from:k,to:k+I.nodeSize,cellPos:k}),!1):!0);const N=I=>{for(const k of v)if(I>=k.from&&I<k.to)return k.cellPos;return null};T.descendants((I,k)=>{const C=fW(I,k);if(C)return b.push(C),!1;const D=_W(I,k);if(D)return b.push(D),!1;const R=hW(I,k);if(R)return b.push(R),!0;const A=gW(T,I,k);if(A)return b.push(A),!1;const M=EW(I,k);if(M)return b.push(M),!1;const L=SW(I,k);if(L)return b.push(L),!1;if(uW(T.resolve(k))||pW(T.resolve(k))||dW(T.resolve(k))||mW(T.resolve(k)))return!1;const B=bW(I,k);if(B)return b.push(B),!1;const P=Hu(I,k,"userInsertion","user-insertion");P&&(P.cellId=N(k),b.push(P));const F=Hu(I,k,"userDeletion","user-deletion");F&&(F.cellId=N(k),b.push(F));const H=Hu(I,k,"aiInsertion","ai-insertion");H&&(H.cellId=N(k),b.push(H));const $=Hu(I,k,"aiDeletion","ai-deletion");$&&($.cellId=N(k),b.push($));const G=yW(I,k);if(G)return b.push(G),!1});const x=CW(xW(NW(OW(b))));x.sort((I,k)=>I.pos-k.pos);const O=kW(vW(x));r(O),o(TW(O,x))},[e]);w.useEffect(()=>{if(!e)return;s();const E=()=>s();return e.on("update",E),()=>{e.off("update",E)}},[e,s]);const l=w.useCallback(E=>{if(!e||a)return;const T=i.find(b=>b.id===E)||n.find(b=>b.id===E);T&&Gu(e,T,"accept")},[e,i,n,a]),c=w.useCallback(E=>{if(!e||a)return;const T=i.find(b=>b.id===E)||n.find(b=>b.id===E);T&&Gu(e,T,"reject")},[e,i,n,a]),d=w.useCallback(()=>{if(!e||a||n.length===0)return;[...n].map(b=>({change:b,from:b.position,to:b.position+Math.max(b.content?.length||1,1)})).sort((b,v)=>v.from-b.from).forEach(({change:b})=>{Gu(e,b,"accept")})},[e,n,a]),u=w.useCallback(()=>{if(!e||a||n.length===0)return;[...n].map(b=>({change:b,from:b.position,to:b.position+Math.max(b.content?.length||1,1)})).sort((b,v)=>v.from-b.from).forEach(({change:b})=>{Gu(e,b,"reject")})},[e,n,a]),p=w.useCallback((E,T,b)=>{if(e)try{e.commands.focus(),e.commands.setTextSelection(E),T!==void 0&&e.commands.highlightMark(T,b);const{view:v}=e,N=v.coordsAtPos(E);N&&document.elementFromPoint(N.left,N.top)?.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}catch(v){console.error("Error navigating to change:",v)}},[e]),m=w.useCallback(E=>{if(e)try{e.commands.highlightMark(E)}catch(T){console.error("Error highlighting mark:",T)}},[e]),f=w.useCallback(()=>{if(e)try{e.commands.highlightMark(null)}catch(E){console.error("Error clearing mark highlight:",E)}},[e]),g=w.useCallback((E,T)=>{o(b=>b.map(v=>{if(v.id===E){const N={id:`comment-${Date.now()}-${Math.random()}`,userId:t.currentUser?.id||"unknown",userName:t.currentUser?.name||"User",timestamp:new Date().toISOString(),text:T};return{...v,comments:[...v.comments||[],N]}}return v}))},[t.currentUser]),_=w.useCallback((E,T,b)=>{o(v=>v.map(N=>N.id===E&&N.comments?{...N,comments:N.comments.map(x=>x.id===T?{...x,text:b}:x)}:N))},[]),y=w.useCallback((E,T)=>{o(b=>b.map(v=>v.id===E&&v.comments?{...v,comments:v.comments.filter(N=>N.id!==T)}:v))},[]),S=w.useCallback(E=>i.find(T=>T.id===E||!!T.markIds?.includes(E))||null,[i]);return{changes:i,acceptChange:l,rejectChange:c,acceptAllChanges:d,rejectAllChanges:u,navigateToChange:p,scanChanges:s,addComment:g,editComment:_,deleteComment:y,findChangeByMark:S,highlightMark:m,clearMarkHighlight:f}},FW=({editorPageRef:e,isPresentationMode:t,pageClass:n})=>{const{editor:r,editorConfig:i}=at(),{currentMode:o}=Cu(),a=i.editable&&!i.asViewer&&!t&&o!==Ii.VIEWING.value;return h.jsxs("div",{className:`${i.enablePagination?n:""} editor-content`,ref:e,id:"editor-content-qwCfsdsfsd",children:[h.jsx(p0,{editor:r}),a&&h.jsx(KV,{editor:r})]})},UW=()=>{const{currentMode:e,editorConfig:t}=Cu();return e===Ii.VIEWING.value||t?.asViewer?null:h.jsx(wG,{})},zW=()=>{const e=w.useRef(null),t=w.useRef(null),{editor:n,editorConfig:r,redlineItemWidth:i}=at(),{pageClass:o,pageConfig:a,setPageConfig:s}=Jv(),{isDarkMode:l}=Tu(),{isPresentationMode:c,isLaserActive:d,onPresentationModeToggle:u,handleLaserToggle:p}=KH(n,t),m=BW(),{changes:f}=m,g=r?.mode===Ii.VIEWING.value||!!r?.asViewer,_=f.length>0&&!c&&!g;return w.useEffect(()=>{if(!n||!e.current)return;const y=S=>{const E=S.target;if(!E||!e.current?.contains(E)||E.closest("button, input, textarea, select, a, [role='button']"))return;if(n.view.dom.contains(E)){n.commands.focus();return}const b=n.view.posAtCoords({left:S.clientX,top:S.clientY})?.pos??n.state.selection.to;n.chain().focus().setTextSelection(b).run()};return document.addEventListener("click",y),()=>{document.removeEventListener("click",y)}},[n]),h.jsx(MG,{editorConfig:r,onPresentationModeToggle:u,pageConfig:a,setPageConfig:s,children:h.jsxs("div",{ref:t,className:`max-w-full h-full relative flex flex-col bg-neutral-200 dark:bg-black-900 editor-container ${c?"editor-presentation-mode":""} ${d?"laser-active":""} ${l?"dark":""}`,id:"editor-shell-qwCfsxssdsfsd",children:[h.jsx(UW,{}),h.jsxs("div",{className:"flex flex-1 min-h-0 dark:bg-black-600",children:[h.jsx(S$,{children:h.jsx("div",{className:"flex-1 overflow-auto",children:h.jsxs("div",{className:"min-h-full w-fit min-w-full flex justify-center items-start p-4",children:[h.jsx(FW,{editorPageRef:e,isPresentationMode:c,pageClass:o}),_&&h.jsx("div",{style:{width:`${i+40}px`,transition:"width 220ms ease"}})]})})}),!c&&!r?.asViewer&&h.jsx(aW,{position:"left",currentMode:r?.mode||"viewing"}),!c&&!g&&h.jsx(R$,{redline:m})]}),!c&&!r?.asViewer&&h.jsx(JV,{onPresentationModeToggle:u}),c&&h.jsx(t$,{onPresentationModeToggle:u,onLaserToggle:p})]})})},HW=140;function iN(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!1}const GW=({config:e={}})=>{const t={...QM,...e},n=w.useRef(t);n.current=t;const r=w.useRef(null),i=w.useRef(!1),o=w.useRef(null),a=w.useRef(void 0),s=t.content!==null&&typeof t.content=="object"?Lm(t.content,t.piiAnonymization?.settings?.placeholderFormat??"numbered"):t.content,l=Pm(t),c=Ow({extensions:jH(t),...l?{}:{content:s},autofocus:!1,editable:!t.asViewer&&t.editable,onUpdate:({editor:f})=>{r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{t.onContentChange&&t.onContentChange(f)},t.debounceTimeForContentChange)}},l?[t.file?.id??""]:[t.content]),d=w.useCallback(async()=>{try{await document.fonts?.ready}catch{}await new Promise(f=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>f())})})},[]),u=w.useCallback(()=>{const f=o.current;return f?f.querySelector("#editor-content-qwCfsdsfsd")??f.querySelector(".editor-content"):null},[]),p=w.useCallback(async f=>{const g=n.current.screenshot,_=(f?.fileName??g?.fileName??"editor-thumbnail").trim()||"editor-thumbnail",y=f?.mimeType??g?.mimeType??"image/png",S=f?.quality??g?.quality??.92,E=Number.isFinite(S)?Math.min(1,Math.max(0,S)):.92,T=u();if(!T)throw new Error("Unable to capture screenshot: editor container not found.");await d();const b=T.getBoundingClientRect(),v=window.getComputedStyle(T),N=Number.parseFloat(v.width||""),x=Number.parseFloat(v.minHeight||""),O=Number.isFinite(x)&&x>0?x:b.height,I=Math.max(1,Math.round(Number.isFinite(N)&&N>0?N:b.width)),k=Math.max(1,Math.round(O))-HW,C=await kM(T,{cacheBust:!0,pixelRatio:window.devicePixelRatio||1,type:y,quality:y==="image/jpeg"?E:void 0,width:I,height:k,canvasWidth:I,canvasHeight:k,style:{width:`${I}px`,height:`${k}px`,maxHeight:`${k}px`,overflow:"hidden",zoom:"100%"}});if(!C)throw new Error("Unable to capture screenshot: generated blob is empty.");const D=y==="image/jpeg"?"jpg":"png";return new File([C],`${_}.${D}`,{type:y,lastModified:Date.now()})},[u,d]);w.useEffect(()=>{i.current=!1},[t.file?.id,l]),w.useEffect(()=>{if(!l||!c||c.isDestroyed)return;const f=t.collaborativeEditing;if(!f?.provider||!iN(s))return;const g=f.provider;if(typeof g.on!="function")return;const _=()=>{queueMicrotask(()=>{if(!(i.current||!c||c.isDestroyed)){if(!c.isEmpty){i.current=!0;return}if(!iN(s)){i.current=!0;return}i.current=!0,c.commands.setContent(s)}})};return g.on("synced",_),g.synced&&_(),()=>g.off?.("synced",_)},[c,l,t.collaborativeEditing,s]),w.useEffect(()=>{if(!c||c.isDestroyed||!t.piiAnonymization?.onScanComplete)return;const f=g=>{const _=c;if(!_||_.isDestroyed)return;const S=n.current.piiAnonymization?.settings?.placeholderFormat??"numbered";if(typeof g=="string"){_.commands.setContent(g);return}if(g!==null&&typeof g=="object"&&!Array.isArray(g)){const E=Lm(g,S);_.commands.setContent(E)}};t.piiAnonymization?.onScanComplete(f)},[c,t.piiAnonymization?.onScanComplete]),w.useEffect(()=>{const f=t.screenshot,g=f?.requestId;g&&a.current!==g&&(a.current=g,(async()=>{try{const _=await p();f?.onSuccess?.(_)}catch(_){const y=_ instanceof Error?_:new Error(String(_));f?.onError?.(y)}})())},[p,t.screenshot]);const m=w.useMemo(()=>_c.map(({value:f})=>`.lax-wp-editor-host .ProseMirror .${Am(f)} { font-family: ${f} !important; }`).join(`
|
|
405
|
+
`),R.close();const A=document.title;D.contentWindow&&(D.contentWindow.document.title=p),document.title=p,setTimeout(()=>{D.contentWindow&&(D.contentWindow.document.title=p),document.title=p},100),setTimeout(()=>{try{if(D.contentWindow)D.contentWindow.matchMedia&&D.contentWindow.matchMedia("print").addEventListener("change",function(L){L.matches||(document.title=A,document.body.removeChild(D))}),D.contentWindow.document.title=p||"Untitled document",D.contentWindow.focus(),D.contentWindow.print(),setTimeout(()=>{document.body.contains(D)&&document.body.removeChild(D),document.title=A},1e3);else throw new Error("Cannot access iframe content window")}catch(M){document.body.removeChild(D),document.title=A,De.message.error("Failed to export: "+String(M))}},1e3)}catch(p){De.message.error("Failed to export: "+String(p))}},[t,e,a]);return{downloadTextFile:s,downloadJsonFile:l,downloadMarkdownFile:c,downloadHtmlFile:d,downloadPdfFile:u}},iW=[{value:"A4",label:"A4 (210 × 297 mm)",description:"210 × 297 mm"},{value:"A3",label:"A3 (297 × 420 mm)",description:"297 × 420 mm"},{value:"Letter",label:"Letter (8.5 × 11 in)",description:"8.5 × 11 in"},{value:"Legal",label:"Legal (8.5 × 14 in)",description:"8.5 × 14 in"},{value:"Tabloid",label:"Tabloid (11 × 17 in)",description:"11 × 17 in"}],oW=({onApply:e,onClose:t})=>{const{pageConfig:n,setPageConfig:r}=Cu(),{selectedBGColor:i,margins:o,inputValues:a,handleMarginInputChange:s,handleMarginInputBlur:l,handleMarginKeyDown:c,applyPresetMargins:d,handleSetPageBackgroundColor:u,applyMargins:p}=Jv(),m=w.useRef({pageConfig:{...n},bgColor:document.body.getAttribute("data-page-background-color")??i,margins:{...o}}),[f,g]=w.useState(!1),_=()=>{p(),m.current={pageConfig:{...n},bgColor:i,margins:{...o}},e?.(),t?.()},y=()=>{m.current&&(r(m.current.pageConfig),u(m.current.bgColor)),t?.()},S="w-16 text-xs p-1 border border-gray-300 dark:border-black-500 rounded bg-white dark:bg-black-700 text-neutral-900 dark:text-white";return h.jsxs("div",{className:"h-full flex flex-col bg-white dark:bg-black-800",children:[h.jsx(Mo,{title:"Page Settings",onClose:t?y:void 0}),h.jsxs("div",{className:"flex-1 overflow-y-auto p-4",children:[h.jsxs("div",{className:"mb-4",children:[h.jsx("h4",{className:"text-xs font-medium mb-2 text-neutral-700 dark:text-black-200",children:"Orientation"}),h.jsx(W.Tabs,{variant:"switch",size:"sm",fullWidth:!0,className:"w-full",tabs:["PORTRAIT","LANDSCAPE"],activeTab:n.orientation.toUpperCase(),onTabClick:E=>r({...n,orientation:E==="LANDSCAPE"?"landscape":"portrait"}),tabIcons:{PORTRAIT:h.jsx(ie.CropPortrait,{sx:{fontSize:18},className:"mb-0.5"}),LANDSCAPE:h.jsx(ie.CropLandscape,{sx:{fontSize:18},className:"mb-px"})}})]}),h.jsxs("div",{className:"mb-4 flex items-center gap-2",children:[h.jsxs("div",{className:"flex-1",children:[h.jsx("h4",{className:"text-xs font-medium mb-1 text-neutral-700 dark:text-black-200",children:"Page Size"}),h.jsx(W.SelectField,{value:n.size,onChange:E=>r({...n,size:E}),selectOptions:iW,placeholder:"Select Page Size",className:"w-full",suffixIcon:f?h.jsx(ie.ExpandLessOutlined,{sx:{fontSize:20}}):h.jsx(ie.ExpandMoreOutlined,{sx:{fontSize:20}}),onDropdownVisibleChange:E=>g(E),getPopupContainer:()=>document.getElementById("editor-shell-qwCfsxssdsfsd")??document.body})]}),h.jsxs("div",{className:"w-20",children:[h.jsx("h4",{className:"text-xs font-medium mb-1 text-neutral-700 dark:text-black-200",children:"Page Color"}),h.jsx(DG,{selectedBGColor:i,setSelectedBGColor:u})]})]}),h.jsxs("div",{className:"mb-4",children:[h.jsx("h4",{className:"text-xs font-medium mb-1 text-neutral-700 dark:text-black-200",children:"Preset Margins"}),h.jsx("div",{className:"grid grid-cols-2 gap-1",children:Object.entries(Kv).map(([E])=>h.jsx("button",{className:"h-8 text-xs py-1.5 px-2 bg-neutral-50 dark:bg-black-700 border border-neutral-200 dark:border-black-500 hover:bg-neutral-200 dark:hover:bg-black-600 text-neutral-900 dark:text-white rounded transition-colors",onClick:()=>d(E),children:E},E))})]}),h.jsx("div",{children:h.jsx("h4",{className:"text-xs font-medium mb-1 text-neutral-700 dark:text-black-200",children:"Margins"})}),h.jsx("div",{className:"mb-4 w-full bg-neutral-100 dark:bg-black-700 p-2 rounded border border-neutral-300 dark:border-black-500",children:h.jsxs("div",{className:"w-full flex gap-2 items-center justify-center",children:[h.jsx("div",{className:"flex items-center gap-1 justify-end",children:h.jsx("div",{className:"flex items-center",children:h.jsx("input",{type:"text",value:a.left,onChange:E=>s("left",E.target.value),onKeyDown:E=>c(E,"left"),onBlur:()=>l("left"),className:S,placeholder:"Left"})})}),h.jsxs("div",{className:"flex flex-col items-center gap-2",children:[h.jsx("div",{className:"flex flex-col items-center gap-0.5",children:h.jsx("div",{className:"flex items-center",children:h.jsx("input",{type:"text",value:a.top,onChange:E=>s("top",E.target.value),onKeyDown:E=>c(E,"top"),onBlur:()=>l("top"),className:S,placeholder:"Top"})})}),h.jsx("div",{className:"flex items-center justify-center",children:h.jsx("div",{className:`relative ${n.orientation==="portrait"?"w-24 h-32":"w-32 h-24"} border border-gray-300 dark:border-black-500 bg-white dark:bg-black-600`,children:h.jsx("div",{className:"absolute bg-primary-100 dark:bg-primary-900 border border-primary-300 dark:border-primary-600",style:{top:`${Math.min(o.top/10*100,80)}%`,left:`${Math.min(o.left/10*100,80)}%`,right:`${Math.min(o.right/10*100,80)}%`,bottom:`${Math.min(o.bottom/10*100,80)}%`}})})}),h.jsx("div",{className:"flex flex-col-reverse items-center gap-0.5",children:h.jsx("div",{className:"flex items-center",children:h.jsx("input",{type:"text",value:a.bottom,onChange:E=>s("bottom",E.target.value),onKeyDown:E=>c(E,"bottom"),onBlur:()=>l("bottom"),className:S,placeholder:"Bottom"})})})]}),h.jsx("div",{className:"flex flex-row-reverse items-center gap-1 justify-start",children:h.jsx("div",{className:"flex items-center",children:h.jsx("input",{type:"text",value:a.right,onChange:E=>s("right",E.target.value),onKeyDown:E=>c(E,"right"),onBlur:()=>l("right"),className:S,placeholder:"Right"})})})]})})]}),h.jsxs("div",{className:"px-4 py-3 border-t border-gray-200 dark:border-black-600 flex items-center justify-between bg-white dark:bg-black-800",children:[h.jsx("button",{onClick:y,className:"px-3 py-1.5 border border-neutral-300 dark:border-black-500 text-sm font-medium text-neutral-900 dark:text-white hover:bg-neutral-100 dark:hover:bg-black-700 rounded-lg transition-colors",children:"Cancel"}),h.jsx("button",{onClick:_,className:"px-3 py-1.5 text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 rounded-lg transition-colors",children:"Apply"})]})]})},aW=({position:e="right",currentMode:t})=>{const[n,r]=w.useState(!1),{isDarkMode:i}=Tu(),{editorConfig:o}=at();w.useEffect(()=>{r(!1)},[t]);const{downloadTextFile:a,downloadJsonFile:s,downloadMarkdownFile:l,downloadHtmlFile:c,downloadPdfFile:d}=rW(),u=g=>{switch(g.fileType.value){case"text":a();break;case"json":s();break;case"markdown":l();break;case"html":c();break;case"pdf":d();break;default:a();break}},p=g=>{console.log("Search:",g)},m=(g,_)=>{console.log("Replace:",g,"with",_)},f=[{id:"add",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"insert-icon",size:24}),label:"Add Element",content:h.jsx(U$,{onClose:()=>r(!1)}),notVisible:t==="viewing"},{id:"search",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"document-search",size:24}),label:"Find and Replace",content:h.jsx(w$,{currentMode:t,onSearch:p,onReplace:m,onClose:()=>r(!1)})},{id:"ai",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"ai-icon",size:24}),label:"AI Assistant",content:h.jsxs("div",{className:"h-full flex flex-col bg-white dark:bg-black-800",children:[h.jsx("div",{className:"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-black-600",children:h.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:"AI Assistant"})}),h.jsx("div",{className:"flex-1 overflow-y-auto p-4",children:h.jsx("p",{className:"text-sm text-gray-600 dark:text-black-300",children:"AI Assistant features coming soon..."})})]}),notVisible:!0},{id:"page-settings",icon:h.jsx(le,{className:"dark:text-neutral-100",name:i?"page-settings-dark":"page-settings",size:20}),label:"Page Settings",content:h.jsx(oW,{onClose:()=>r(!1)}),notVisible:t==="viewing"},{id:"pii-anonymization",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"pii-anonymization",size:24}),label:"PII Anonymization",content:h.jsx(WY,{onClose:()=>r(!1)}),notVisible:t==="viewing"||t==="suggesting"},{id:"export",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"download-rounded",size:18}),label:"Export Document",content:h.jsx(k$,{onExport:u,onClose:()=>r(!1)})},{id:"share",icon:h.jsx(le,{className:"dark:text-neutral-100",name:"share",size:22,strokeWidth:5}),label:"Share document",content:h.jsx(G$,{onClose:()=>r(!1)}),notVisible:!o.shareConfig?.enabled}];return h.jsx(O$,{id:"editor-sidebar-qwCfsdsfsd",tools:f,position:e,isExpanded:n,expandedWidth:370,toggleToolbar:r})},zu="data-redline-column-action",Ha="data-redline-column-id",Hu=(e,t,n,r)=>{if(!e.isText||!e.text)return null;const i=e.marks.find(s=>s.type.name===n);if(!i)return null;const o=e.marks.some(s=>s.type.name==="link"),a={markId:i.attrs.id||`${r}-${t}-${Date.now()}`,pos:t,endPos:t+e.text.length,text:e.text,type:r,userId:i.attrs.userId||(r.includes("ai")?"ai":"unknown"),userName:i.attrs.userName||(r.includes("ai")?"AI":"User"),timestamp:i.attrs.timestamp||new Date().toISOString(),nodeType:i.attrs.linkData||o?"link":"text"};return i.attrs.formatChanges&&(a.formatChanges=i.attrs.formatChanges),i.attrs.groupId&&(a.groupId=i.attrs.groupId),i.attrs.linkData&&(a.linkData=i.attrs.linkData),a},sW=e=>{const t=[];return e.descendants(n=>{if(n.type.name==="tableCell"||n.type.name==="tableHeader"){const r=n.textContent.trim();r&&t.push(r)}}),t.join(" | ")},lW=e=>{const t=[];return e.forEach(n=>{if(n.type.name==="tableCell"||n.type.name==="tableHeader"){const r=n.textContent.trim();t.push(r.length>0?r:"empty cell")}}),t.join(" | ")},cW=(e,t)=>{const n=[];return e.descendants(r=>{if((r.type.name==="tableCell"||r.type.name==="tableHeader")&&r.attrs[Ha]===t){const i=r.textContent.trim();return n.push(i.length>0?i:"empty cell"),!1}return!0}),n.join(" | ")},dW=e=>{for(let t=e.depth;t>0;t--){const n=e.node(t);if(n.type.name==="tableRow")return!!(n.attrs["data-redline-row-action"]&&n.attrs["data-redline-type"])}return!1},uW=e=>{for(let t=e.depth;t>0;t--){const n=e.node(t);if(n.type.name==="table")return!!n.attrs["data-redline-type"]}return!1},pW=e=>{for(let t=e.depth;t>0;t--){const n=e.node(t);if(!(n.type.name!=="tableCell"&&n.type.name!=="tableHeader"))return!!(n.attrs[zu]&&n.attrs[Ha])}return!1},mW=e=>{for(let t=e.depth;t>0;t--){const n=e.node(t);if(n.type.name==="blockquote")return!!(n.attrs["data-redline-type"]&&n.attrs["data-redline-blockquote-action"]==="add")}return!1},fW=(e,t)=>{if(e.type.name!=="table")return null;const n=e.attrs["data-redline-type"];if(!n)return null;const r=sW(e);return{markId:e.attrs["data-redline-id"]||`table-${t}-${e.attrs["data-redline-timestamp"]||""}`,pos:t,endPos:t+e.nodeSize,text:"table",type:n,userId:e.attrs["data-redline-user-id"]||"unknown",userName:e.attrs["data-redline-user-name"]||"User",timestamp:e.attrs["data-redline-timestamp"]||new Date().toISOString(),nodeType:"table",tableData:r}},hW=(e,t)=>{if(e.type.name!=="tableRow")return null;const n=e.attrs["data-redline-type"],r=e.attrs["data-redline-row-action"];return!n||!r?null:{markId:`table-row-${t}-${e.attrs["data-redline-timestamp"]||""}`,pos:t,endPos:t+e.nodeSize,text:"row",type:n,userId:e.attrs["data-redline-user-id"]||"unknown",userName:e.attrs["data-redline-user-name"]||"User",timestamp:e.attrs["data-redline-timestamp"]||new Date().toISOString(),nodeType:"tableRow",tableRowData:JSON.stringify({action:r,rowId:e.attrs["data-row-id"]||"",content:lW(e)})}},gW=(e,t,n)=>{if(t.type.name!=="tableCell"&&t.type.name!=="tableHeader")return null;const r=t.attrs["data-redline-type"],i=t.attrs[zu],o=t.attrs[Ha];return!r||!i||!o?null:{markId:`table-column-${o}-${t.attrs["data-redline-timestamp"]||""}`,pos:n,endPos:n+t.nodeSize,text:"column",type:r,userId:t.attrs["data-redline-user-id"]||"unknown",userName:t.attrs["data-redline-user-name"]||"User",timestamp:t.attrs["data-redline-timestamp"]||new Date().toISOString(),nodeType:"tableColumn",tableColumnData:JSON.stringify({action:i,columnId:o,content:cW(e,o)})}},_W=(e,t)=>{if(e.type.name!=="signature")return null;const n=e.attrs.redlineType,r=e.attrs.redlineAction;return!n||!r?null:{markId:e.attrs.redlineId||`signature-${t}-${e.attrs.redlineTimestamp||""}`,pos:t,endPos:t+e.nodeSize,text:"signature",type:n,userId:e.attrs.redlineUserId||"unknown",userName:e.attrs.redlineUserName||"User",timestamp:e.attrs.redlineTimestamp||new Date().toISOString(),nodeType:"signature",signatureData:JSON.stringify({action:r,fileName:e.attrs.fileName??null,recipientEmail:e.attrs.recipientEmail??""})}},bW=(e,t)=>{if(e.type.name!=="variableText")return null;const n=e.attrs.redlineType,r=e.attrs.redlineAction;if(!n||!r)return null;let i={};try{i=e.attrs.redlinePreviousAttrs?JSON.parse(e.attrs.redlinePreviousAttrs):{}}catch{i={}}return{markId:e.attrs.redlineId||`variable-${t}-${e.attrs.redlineTimestamp||""}`,pos:t,endPos:t+e.nodeSize,text:e.attrs.value||`{{${e.attrs.variableName}}}`,type:n,userId:e.attrs.redlineUserId||"unknown",userName:e.attrs.redlineUserName||"User",timestamp:e.attrs.redlineTimestamp||new Date().toISOString(),nodeType:"variable",variableData:JSON.stringify({action:r,variableName:e.attrs.variableName,value:e.attrs.value??"",previousValue:i.value??""})}},EW=(e,t)=>{if(e.type.name!=="blockquote")return null;const n=e.attrs["data-redline-type"],r=e.attrs["data-redline-blockquote-action"];return!n||r!=="add"?null:{markId:`blockquote-${t}-${e.attrs["data-redline-timestamp"]||""}`,pos:t,endPos:t+e.nodeSize,text:"blockquote",type:n,userId:e.attrs["data-redline-user-id"]||"unknown",userName:e.attrs["data-redline-user-name"]||"User",timestamp:e.attrs["data-redline-timestamp"]||new Date().toISOString(),nodeType:"blockquote",formatChanges:JSON.stringify({blockquote:{old:!1,new:!0}})}},SW=(e,t)=>{if(e.type.name!=="image")return null;const n=e.attrs.redlineAction,r=e.attrs.redlineType;return!n||!r?null:{markId:e.attrs.redlineId||`image-${t}-${e.attrs.redlineTimestamp||""}`,pos:t,endPos:t+e.nodeSize,text:e.attrs.src||"image",type:r,userId:e.attrs.redlineUserId||"unknown",userName:e.attrs.redlineUserName||"User",timestamp:e.attrs.redlineTimestamp||new Date().toISOString(),nodeType:"image",imageData:{src:e.attrs.src||"",previousSrc:e.attrs.redlinePreviousSrc||null,width:e.attrs.width??null,height:e.attrs.height??null,previousWidth:e.attrs.redlinePreviousWidth??null,previousHeight:e.attrs.redlinePreviousHeight??null,alignment:e.attrs.align??null,previousAlignment:e.attrs.redlinePreviousAlignment??null,action:n}}},yW=(e,t)=>{if(e.type.name!=="horizontalRule")return null;const n=e.attrs.redlineAction,r=e.attrs.redlineType;return!n||!r?null:{markId:e.attrs.redlineId||`divider-${t}`,pos:t,endPos:t+e.nodeSize,text:"Horizontal divider",type:r,userId:e.attrs.redlineUserId||"unknown",userName:e.attrs.redlineUserName||"User",timestamp:e.attrs.redlineTimestamp||new Date().toISOString(),nodeType:"divider",dividerAction:n}},TW=(e,t)=>{const n=t.filter(i=>i.type.includes("deletion")).map(i=>({from:i.pos,to:i.endPos}));if(n.length===0)return e;const r=5;return e.filter(i=>{if(!i.type.includes("insertion"))return!0;const o=t.filter(l=>l.type.includes("insertion")&&(i.markIds?.includes(l.markId)||l.markId===i.id));if(o.length===0)return!0;const a=new Set(["text","link","blockquote"]);if(i.nodeType&&!a.has(i.nodeType)){const l=Math.min(...o.map(m=>m.pos)),c=Math.max(...o.map(m=>m.endPos)),d=n.some(m=>m.to>=l-r&&m.to<=l+r),u=n.some(m=>m.from>=c-r&&m.from<=c+r),p=n.some(m=>m.from<=l&&m.to>=c);return!(d&&u)&&!p}return!o.every(l=>n.some(c=>c.from<=l.pos&&c.to>=l.endPos))})},vW=e=>{const t=new Map,n=new Map;for(const r of e){const i=r.formatChanges&&r.groupId?r.groupId:r.markId,o=t.get(i);if(o){const a=n.get(i)??r.pos,s=r.pos-a;if(o.content+=s>1?" | "+r.text:r.text,n.set(i,r.endPos),o.markIds?.includes(r.markId)||(o.markIds=[...o.markIds??[o.id],r.markId]),r.linkData&&!o.linkData){o.position=r.pos,r.nodeType==="link"&&(o.nodeType="link");try{o.linkData=JSON.parse(r.linkData)}catch{}}}else{const a={id:r.markId,markIds:[r.markId],type:r.type,content:r.text,userId:r.userId,userName:r.userName,timestamp:r.timestamp,position:r.pos};if(r.nodeType==="table"&&(a.nodeType="table",a.tableData=r.tableData),r.nodeType==="tableRow"&&r.tableRowData){a.nodeType="tableRow";try{a.tableRowData=JSON.parse(r.tableRowData)}catch{}}if(r.nodeType==="tableColumn"&&r.tableColumnData){a.nodeType="tableColumn";try{a.tableColumnData=JSON.parse(r.tableColumnData)}catch{}}if(r.nodeType==="blockquote"&&(a.nodeType="blockquote"),r.nodeType==="signature"&&r.signatureData){a.nodeType="signature";try{a.signatureData=JSON.parse(r.signatureData)}catch{}}if(r.nodeType==="variable"&&r.variableData){a.nodeType="variable";try{a.variableData=JSON.parse(r.variableData)}catch{}}if(r.nodeType==="image"&&r.imageData&&(a.nodeType="image",a.imageData=r.imageData),r.nodeType==="divider"&&r.dividerAction&&(a.nodeType="divider",a.dividerAction=r.dividerAction),r.nodeType==="link"&&(a.nodeType="link"),r.linkData)try{a.linkData=JSON.parse(r.linkData)}catch{}r.formatChanges&&(a.formatChanges=r.formatChanges),t.set(i,a),n.set(i,r.endPos)}}return Array.from(t.values()).sort((r,i)=>r.position-i.position)},CW=e=>{const t=e.filter(n=>n.nodeType==="tableRow").map(n=>({start:n.pos,end:n.endPos}));return t.length===0?e:e.filter(n=>n.nodeType==="tableRow"||n.nodeType==="tableColumn"?!0:!t.some(r=>n.pos>=r.start&&n.endPos<=r.end))},xW=e=>{const t=e.filter(n=>n.nodeType==="tableColumn").map(n=>({start:n.pos,end:n.endPos}));return t.length===0?e:e.filter(n=>n.nodeType==="tableColumn"||n.nodeType==="tableRow"?!0:!t.some(r=>n.pos>=r.start&&n.endPos<=r.end))},NW=e=>{const t=new Set;return e.filter(n=>{if(n.nodeType!=="tableColumn"||!n.tableColumnData)return!0;try{const r=JSON.parse(n.tableColumnData),i=[n.type,n.userId,n.timestamp,r.action,r.columnId].join("::");return t.has(i)?!1:(t.add(i),!0)}catch{return!0}})},AW=e=>["bold","italic","underline","strike","superscript","subscript"].includes(e)?"text-formatting":["fontSize","fontFamily","lineHeight"].includes(e)?"font-styling":["color","backgroundColor","highlight"].includes(e)?"colors":["list","listLevel","heading","blockquote","indent"].includes(e)?"structure":e,rN=e=>{if(!e.formatChanges)return!1;try{return JSON.parse(e.formatChanges)?.list?.old==="none"}catch{return!1}},RW=e=>{if(!e.formatChanges)return[e];if(rN(e))return[e];try{const t=JSON.parse(e.formatChanges),n=new Map;return Object.keys(t).forEach(r=>{const i=AW(r),o=n.get(i)??{};o[r]=t[r],n.set(i,o)}),Array.from(n.entries()).map(([r,i])=>({...e,id:`${e.id}::${r}`,formatChanges:JSON.stringify(i)}))}catch{return[e]}},OW=e=>{const t=e.filter(n=>n.nodeType==="table").map(n=>({start:n.pos,end:n.endPos}));return t.length===0?e:e.filter(n=>n.nodeType==="table"?!0:!t.some(r=>n.pos>=r.start&&n.endPos<=r.end))},kW=e=>{const t=[];return e.flatMap(RW).sort((r,i)=>r.position-i.position).forEach(r=>{if(!r.formatChanges||rN(r)){t.push(r);return}const i=t[t.length-1];if(!!i&&!!i.formatChanges&&i.type===r.type&&i.userId===r.userId&&i.timestamp===r.timestamp&&(i.nodeType||"text")===(r.nodeType||"text")&&i.formatChanges===r.formatChanges&&Math.abs(r.position-i.position)<=4){i.position=Math.min(i.position,r.position);return}t.push(r)}),t},IW=(e,t,n,r)=>{e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n}).run();const i=()=>{e.isActive("taskList")?e.chain().setMeta(Ne,!0).focus().toggleTaskList().run():e.isActive("bulletList")?e.chain().setMeta(Ne,!0).focus().toggleList("bulletList","listItem").run():e.isActive("orderedList")&&e.chain().setMeta(Ne,!0).focus().toggleList("orderedList","listItem").run()};if(r==="none"){i();return}if(r==="task"){e.isActive("taskList")||(i(),e.chain().setMeta(Ne,!0).focus().toggleTaskList().run());return}if(r.startsWith("bullet:")){const o=r.slice(7);e.isActive("bulletList")||(i(),e.chain().setMeta(Ne,!0).focus().toggleList("bulletList","listItem").run()),e.chain().setMeta(Ne,!0).focus().updateAttributes("bulletList",{listType:o}).run();return}if(r.startsWith("ordered:")){const o=r.slice(8);e.isActive("orderedList")||(i(),e.chain().setMeta(Ne,!0).focus().toggleList("orderedList","listItem").run()),e.chain().setMeta(Ne,!0).focus().updateAttributes("orderedList",{listType:o}).run()}},wW=(e,t,n,r)=>{const i=e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n});if(r==="paragraph"){i.setParagraph().run();return}const o=Number(r.substring(1));o>=1&&o<=6&&i.setHeading({level:o}).run()},MW=(e,t,n,r)=>{e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n}).setTextAlign(r).run()},DW=(e,t,n,r)=>{e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n}).setSelectedListItemMarkerFontSize(r).setSelectedTaskItemMarkerFontSize(r).run()},LW=(e,t,n,r)=>{e.chain().setMeta(Ne,!0).focus().setTextSelection({from:t,to:n}).run(),e.isActive("blockquote")!==r&&e.chain().setMeta(Ne,!0).focus().toggleBlockquote().run()},PW=(e,t,n,r)=>{const{state:i}=e,o=i.tr,a=new Set(["paragraph","heading","blockquote"]);i.doc.nodesBetween(t,n,(s,l)=>{if(!a.has(s.type.name))return;const c=s.attrs?.indent;(typeof c=="number"?c:typeof c=="string"&&Number.parseInt(c,10)||0)!==r&&o.setNodeMarkup(l,void 0,{...s.attrs,indent:r})}),o.docChanged&&(o.setMeta(Ne,!0),e.view.dispatch(o))},Gu=(e,t,n)=>{const{state:r}=e,{tr:i}=r,o=()=>{i.setMeta(Ne,!0),i.setMeta("addToHistory",!1),i.selectionSet||i.setSelection(r.selection.map(i.doc,i.mapping)),i.setMeta("scrollIntoView",!1),e.view.dispatch(i)};if(t.nodeType==="image"){let S=t.position,E=r.doc.nodeAt(S);const T=t.id;if(!E||E.type.name!=="image"||E.attrs.redlineId!==T){let N=null,x=null;r.doc.descendants((O,I)=>x?!1:O.type.name!=="image"||O.attrs.redlineId!==T?!0:(N=I,x=O,!1)),N!==null&&x&&(S=N,E=x)}if(!E||E.type.name!=="image")return!1;const b=t.imageData?.action,v={...E.attrs,redlineId:null,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousSrc:null,redlinePreviousWidth:null,redlinePreviousHeight:null,redlinePreviousAlignment:null,redlineGroupId:null};return b==="insert"?n==="accept"?i.setNodeMarkup(S,void 0,v):i.delete(S,S+E.nodeSize):b==="delete"?n==="accept"?i.delete(S,S+E.nodeSize):i.setNodeMarkup(S,void 0,v):b==="replace"?n==="accept"?i.setNodeMarkup(S,void 0,v):i.setNodeMarkup(S,void 0,{...v,src:t.imageData?.previousSrc||E.attrs.src}):b==="resize"?n==="accept"?i.setNodeMarkup(S,void 0,v):i.setNodeMarkup(S,void 0,{...v,width:t.imageData?.previousWidth??E.attrs.width,height:t.imageData?.previousHeight??E.attrs.height,align:t.imageData?.previousAlignment??E.attrs.align}):b==="align"&&(n==="accept"?i.setNodeMarkup(S,void 0,v):i.setNodeMarkup(S,void 0,{...v,align:t.imageData?.previousAlignment??E.attrs.align})),i.docChanged?(o(),!0):!1}if(t.nodeType==="divider"){const S=t.id;let E=t.position,T=r.doc.nodeAt(E);if((!T||T.type.name!=="horizontalRule"||T.attrs.redlineId!==S)&&r.doc.descendants((v,N)=>T&&T.attrs.redlineId===S?!1:v.type.name==="horizontalRule"&&v.attrs.redlineId===S?(E=N,T=v,!1):!0),!T||T.type.name!=="horizontalRule")return!1;const b={...T.attrs,redlineId:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineGroupId:null};return t.dividerAction==="insert"?n==="accept"?i.setNodeMarkup(E,void 0,b):i.delete(E,E+T.nodeSize):t.dividerAction==="delete"&&(n==="accept"?i.delete(E,E+T.nodeSize):i.setNodeMarkup(E,void 0,b)),i.docChanged?(o(),!0):!1}if(t.nodeType==="tableRow"){let S=t.position,E=r.doc.nodeAt(S);const T=(b,v)=>b?.type.name==="tableRow"&&b.attrs["data-redline-type"]===t.type&&b.attrs["data-redline-user-id"]===t.userId&&b.attrs["data-redline-timestamp"]===t.timestamp&&(v===void 0||b.attrs["data-row-id"]===v);if(!T(E,t.tableRowData?.rowId)){let b=null;r.doc.descendants((v,N)=>b?!1:T(v,t.tableRowData?.rowId)?(S=N,b=v,!1):!0),E=b}if(E&&E.type.name==="tableRow"){if(t.tableRowData?.action==="delete")n==="accept"?i.delete(S,S+E.nodeSize):i.setNodeMarkup(S,void 0,{...E.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-row-action":null});else if(n==="accept"){i.setNodeMarkup(S,void 0,{...E.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-row-action":null});const v=S+1,N=S+E.nodeSize-1;["userInsertion","userDeletion","aiInsertion","aiDeletion"].forEach(O=>{const I=r.schema.marks[O];I&&i.removeMark(v,N,I)})}else i.delete(S,S+E.nodeSize);return i.docChanged?(o(),!0):!1}}if(t.nodeType==="tableColumn"){const S=t.tableColumnData?.columnId;if(!S)return!1;const E=[];return r.doc.descendants((T,b)=>(T.type.name==="tableCell"||T.type.name==="tableHeader")&&T.attrs[Ha]===S&&T.attrs["data-redline-type"]===t.type&&T.attrs["data-redline-user-id"]===t.userId&&T.attrs["data-redline-timestamp"]===t.timestamp?(E.push({pos:b,node:T}),!1):!0),E.length===0?!1:(t.tableColumnData?.action==="delete"?E.sort((T,b)=>b.pos-T.pos).forEach(({pos:T})=>{const b=i.mapping.map(T),v=i.doc.nodeAt(b);if(v){if(n==="accept"){i.delete(b,b+v.nodeSize);return}i.setNodeMarkup(b,void 0,{...v.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,[zu]:null,[Ha]:null})}}):n==="accept"?E.sort((T,b)=>b.pos-T.pos).forEach(({pos:T})=>{const b=i.mapping.map(T),v=i.doc.nodeAt(b);if(!v)return;i.setNodeMarkup(b,void 0,{...v.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,[zu]:null,[Ha]:null});const N=b+1,x=b+v.nodeSize-1;["userInsertion","userDeletion","aiInsertion","aiDeletion"].forEach(I=>{const k=i.doc.type.schema.marks[I];k&&i.removeMark(N,x,k)})}):E.sort((T,b)=>b.pos-T.pos).forEach(({pos:T})=>{const b=i.mapping.map(T),v=i.doc.nodeAt(b);v&&i.delete(b,b+v.nodeSize)}),i.docChanged?(o(),!0):!1)}if(t.nodeType==="table"){const S=t.position,E=r.doc.nodeAt(S);if(E&&E.type.name==="table"){if(t.type.includes("insertion"))if(n==="accept"){i.setNodeMarkup(S,void 0,{...E.attrs,"data-redline-id":null,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null});const b=S+1,v=S+E.nodeSize-1;["userInsertion","userDeletion","aiInsertion","aiDeletion"].forEach(O=>{const I=r.schema.marks[O];I&&i.removeMark(b,v,I)});const x=[];E.descendants((O,I)=>O.type.name==="tableRow"&&O.attrs["data-redline-type"]?(x.push(S+I),!1):!0),x.sort((O,I)=>I-O),x.forEach(O=>{const I=i.mapping.map(O),k=i.doc.nodeAt(I);k?.type.name==="tableRow"&&i.setNodeMarkup(I,void 0,{...k.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-row-action":null})})}else i.delete(S,S+E.nodeSize);else if(n==="accept")i.delete(S,S+E.nodeSize);else{const b=E.attrs["data-redline-prior-type"];i.setNodeMarkup(S,void 0,{...E.attrs,"data-redline-id":b?E.attrs["data-redline-id"]:null,"data-redline-type":b??null,"data-redline-user-id":b?E.attrs["data-redline-user-id"]:null,"data-redline-user-name":b?E.attrs["data-redline-user-name"]:null,"data-redline-timestamp":b?E.attrs["data-redline-timestamp"]:null,"data-redline-prior-type":null})}return i.docChanged?(o(),!0):!1}}if(t.nodeType==="signature"){const S=t.position,E=r.doc.nodeAt(S);if(E&&E.type.name==="signature"){const T=t.signatureData?.action;if(T==="add")n==="accept"?i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null}):i.delete(S,S+E.nodeSize);else if(T==="delete")n==="accept"?i.delete(S,S+E.nodeSize):i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null});else if(T==="update")if(n==="accept")i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null});else{let b={};try{b=E.attrs.redlinePreviousAttrs?JSON.parse(E.attrs.redlinePreviousAttrs):{}}catch{b={}}i.setNodeMarkup(S,void 0,{...E.attrs,...b,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null})}return i.docChanged?(o(),!0):!1}}if(t.nodeType==="blockquote"){let S=t.position,E=r.doc.nodeAt(S);const T=b=>b?.type.name==="blockquote"&&b.attrs["data-redline-type"]===t.type&&b.attrs["data-redline-user-id"]===t.userId&&b.attrs["data-redline-timestamp"]===t.timestamp&&b.attrs["data-redline-blockquote-action"]==="add";if(!T(E)){let b=null;r.doc.descendants((v,N)=>b?!1:T(v)?(S=N,b=v,!1):!0),E=b}if(E&&E.type.name==="blockquote"){const b={...E.attrs,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-blockquote-action":null};if(n==="accept"){i.setNodeMarkup(S,void 0,b);const x=S+1,O=S+E.nodeSize-1;return["userInsertion","userDeletion","aiInsertion","aiDeletion"].forEach(I=>{const k=r.schema.marks[I];k&&i.removeMark(x,O,k)}),i.docChanged?(o(),!0):!1}i.setNodeMarkup(S,void 0,b),o();const v=S+1,N=Math.max(v,S+E.nodeSize-1);return e.chain().setMeta(Ne,!0).focus().setTextSelection({from:v,to:N}).toggleBlockquote().run(),!0}}if(t.nodeType==="variable"){const S=t.position,E=r.doc.nodeAt(S);if(E&&E.type.name==="variableText"){const T=t.variableData?.action;if(T==="add")n==="accept"?i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null}):i.delete(S,S+E.nodeSize);else if(T==="delete")if(n==="accept")i.delete(S,S+E.nodeSize);else{let b={};try{b=E.attrs.redlinePreviousAttrs?JSON.parse(E.attrs.redlinePreviousAttrs):{}}catch{b={}}i.setNodeMarkup(S,void 0,{...E.attrs,...b,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null})}else if(T==="update")if(n==="accept")i.setNodeMarkup(S,void 0,{...E.attrs,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null});else{let b={};try{b=E.attrs.redlinePreviousAttrs?JSON.parse(E.attrs.redlinePreviousAttrs):{}}catch{b={}}i.setNodeMarkup(S,void 0,{...E.attrs,...b,redlineType:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineAction:null,redlinePreviousAttrs:null})}return i.docChanged?(o(),!0):!1}}if(t.nodeType==="link"&&t.linkData){const{action:S,url:E,oldUrl:T}=t.linkData,v=t.type.includes("ai")?"aiInsertion":"userInsertion",N=r.schema.marks[v],x=r.schema.marks.link;if(!N)return!1;const O=new Set((t.markIds?.length?t.markIds:[t.id]).filter(Boolean)),I=[];if(r.doc.descendants((k,C)=>{if(!k.isText)return;k.marks.find(R=>R.type.name===v&&O.has(R.attrs.id)&&R.attrs.linkData)&&k.text&&I.push({from:C,to:C+k.text.length})}),I.length===0)return!1;for(const k of I.sort((C,D)=>D.from-C.from))i.removeMark(k.from,k.to,N),n==="reject"&&(S==="add"?x&&i.removeMark(k.from,k.to,x):S==="remove"?x&&E&&i.addMark(k.from,k.to,x.create({href:E})):S==="change"&&x&&T&&(i.removeMark(k.from,k.to,x),i.addMark(k.from,k.to,x.create({href:T}))));return i.docChanged?(o(),!0):!1}const a=!!t.formatChanges,s=[],l=new Set((t.markIds&&t.markIds.length>0?t.markIds:[t.id]).filter(Boolean)),c=t.type.includes("insertion"),d=t.type.includes("deletion"),u=t.type.includes("ai")?c?"aiInsertion":"aiDeletion":c?"userInsertion":"userDeletion",p=r.schema.marks[u];if(!p||(r.doc.descendants((S,E)=>{if(!S.isText)return;S.marks.find(b=>b.type.name===u&&l.has(b.attrs.id))&&S.text&&s.push({from:E,to:E+S.text.length})}),s.length===0))return!1;if(a){let S={};try{t.formatChanges&&(S=JSON.parse(t.formatChanges))}catch{console.error("Failed to parse format changes")}let E=null,T=null,b=null,v=null,N=null,x=null,O=null,I=null,k=null,C=null,D=null,R=null,A=null,M=null,L,B=null;const P=[...s].sort((F,H)=>H.from-F.from);for(const F of P){const H=r.doc.nodeAt(F.from),$=H?.marks.find(q=>q.type.name===u&&l.has(q.attrs.id));let G={};if($?.attrs.formatChanges)try{G={...JSON.parse($.attrs.formatChanges)},Object.keys(S).forEach(ee=>{delete G[ee]})}catch{G={}}if(n==="accept")i.removeMark(F.from,F.to,p),Object.keys(G).length>0&&i.addMark(F.from,F.to,p.create({...$?.attrs,formatChanges:JSON.stringify(G)}));else{i.removeMark(F.from,F.to,p);const q={};let ee=!1;const Y=H?.marks.find(j=>j.type.name==="textStyle")?.attrs||{};if(Object.keys(S).forEach(j=>{const{old:J,new:oe}=S[j];if(["bold","italic","underline","strike","superscript","subscript"].includes(j)){const Q=r.schema.marks[j];Q&&(oe&&i.removeMark(F.from,F.to,Q),J&&i.addMark(F.from,F.to,Q.create()))}else if(["color","backgroundColor","fontSize","fontFamily","lineHeight"].includes(j))q[j]=J,ee=!0,j==="fontSize"&&(typeof J=="string"||J===null)&&(L=J,B=B?{from:Math.min(B.from,F.from),to:Math.max(B.to,F.to)}:{from:F.from,to:F.to});else if(j==="highlight"&&r.schema.marks.highlight)i.removeMark(F.from,F.to,r.schema.marks.highlight),J&&J!==null&&i.addMark(F.from,F.to,r.schema.marks.highlight.create({color:J}));else if(j==="list"&&typeof J=="string")E=J,T=T?{from:Math.min(T.from,F.from),to:Math.max(T.to,F.to)}:{from:F.from,to:F.to};else if(j==="heading"&&typeof J=="string")O=J,I=I?{from:Math.min(I.from,F.from),to:Math.max(I.to,F.to)}:{from:F.from,to:F.to};else if(j==="textAlign"&&typeof J=="string")k=J,C=C?{from:Math.min(C.from,F.from),to:Math.max(C.to,F.to)}:{from:F.from,to:F.to};else if(j==="blockquote"&&typeof J=="boolean")D=J,R=R?{from:Math.min(R.from,F.from),to:Math.max(R.to,F.to)}:{from:F.from,to:F.to};else if(j==="indent"&&(typeof J=="string"||typeof J=="number")){const Q=Number.parseInt(String(J),10);Number.isFinite(Q)&&(A=Q,M=M?{from:Math.min(M.from,F.from),to:Math.max(M.to,F.to)}:{from:F.from,to:F.to})}else if(j==="listLevel"&&typeof J=="string"&&typeof oe=="string"){const[Q,ve]=J.split(":"),[,$e]=oe.split(":"),Pe=Number.parseInt(ve,10),Ce=Number.parseInt($e,10);Number.isFinite(Pe)&&Number.isFinite(Ce)&&(b=Pe,v=Ce,N=Q||"listItem",x=x?{from:Math.min(x.from,F.from),to:Math.max(x.to,F.to)}:{from:F.from,to:F.to})}}),ee&&r.schema.marks.textStyle){i.removeMark(F.from,F.to,r.schema.marks.textStyle);const j={...Y,...q};Object.keys(j).forEach(J=>{(j[J]===null||j[J]===void 0)&&delete j[J]}),Object.keys(j).length>0&&i.addMark(F.from,F.to,r.schema.marks.textStyle.create(j))}Object.keys(G).length>0&&i.addMark(F.from,F.to,p.create({...$?.attrs,formatChanges:JSON.stringify(G)}))}}if(i.docChanged){if(o(),n==="reject"&&E&&T!==null){const{from:F,to:H}=T;IW(e,F,H,E)}if(n==="reject"&&O&&I!==null){const{from:F,to:H}=I;wW(e,F,H,O)}if(n==="reject"&&k&&C!==null){const{from:F,to:H}=C;MW(e,F,H,k)}if(n==="reject"&&D!==null&&R!==null){const{from:F,to:H}=R;LW(e,F,H,D)}if(n==="reject"&&A!==null&&M!==null){const{from:F,to:H}=M;PW(e,F,H,A)}if(n==="reject"&&B!==null&&L!==void 0){const{from:F,to:H}=B;DW(e,F,H,L)}if(n==="reject"&&b!==null&&v!==null&&N!==null&&x!==null){const{from:F,to:H}=x,$=v-b,G=N;if(e.chain().setMeta(Ne,!0).focus().setTextSelection({from:F,to:H}).run(),$>0)for(let q=0;q<$;q++)e.chain().setMeta(Ne,!0).focus().liftListItem(G).run();else if($<0)for(let q=0;q<Math.abs($);q++)e.chain().setMeta(Ne,!0).focus().sinkListItem(G).run()}return!0}}else{const S=[...s];(c&&n==="reject"||d&&n==="accept")&&S.sort((E,T)=>T.from-E.from);for(const E of S)c?n==="accept"?i.removeMark(E.from,E.to,p):i.delete(E.from,E.to):d&&(n==="accept"?i.delete(E.from,E.to):i.removeMark(E.from,E.to,p));if(d&&n==="accept"){const E=new Set(["orderedList","bulletList","taskList"]),T=new Set(["listItem","taskItem"]),b=[],v=new Set;i.doc.descendants((x,O)=>{if(E.has(x.type.name)){let I=x.childCount>0;if(x.forEach(k=>{k.textContent.length>0&&(I=!1)}),I){b.push({pos:O,size:x.nodeSize});let k=1;return x.forEach(C=>{v.add(O+k),k+=C.nodeSize}),!1}return!0}return T.has(x.type.name)?(!v.has(O)&&x.textContent.length===0&&b.push({pos:O,size:x.nodeSize}),!1):!0});for(const{pos:x,size:O}of b.sort((I,k)=>k.pos-I.pos))i.delete(x,x+O);const N=[];i.doc.descendants((x,O)=>x.type.name==="blockquote"&&x.textContent.length===0?(N.push({pos:O,size:x.nodeSize}),!1):!0);for(const{pos:x,size:O}of N.sort((I,k)=>k.pos-I.pos))i.delete(x,x+O)}}const m=[];r.doc.descendants((S,E)=>{if(S.type.name!=="horizontalRule")return!0;if(!l.has(S.attrs.redlineId))return!1;const T=S.attrs.redlineAction;return T&&m.push({pos:E,action:T}),!1});for(const{pos:S,action:E}of m.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="horizontalRule")continue;const v={...b.attrs,redlineId:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlineGroupId:null};E==="insert"?n==="accept"?i.setNodeMarkup(T,void 0,{...v,redlinePriorAction:null}):i.delete(T,T+b.nodeSize):E==="delete"&&(n==="accept"?i.delete(T,T+b.nodeSize):b.attrs.redlinePriorAction==="insert"?i.setNodeMarkup(T,void 0,{...b.attrs,redlineAction:"insert",redlinePriorAction:null}):i.setNodeMarkup(T,void 0,{...v,redlinePriorAction:null}))}const f=[];r.doc.descendants((S,E)=>{if(S.type.name!=="table")return!0;if(!l.has(S.attrs["data-redline-id"]))return!1;const T=S.attrs["data-redline-type"];return T&&f.push({pos:E,redlineType:T}),!1});for(const{pos:S,redlineType:E}of f.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="table")continue;const v={...b.attrs,"data-redline-id":null,"data-redline-type":null,"data-redline-user-id":null,"data-redline-user-name":null,"data-redline-timestamp":null,"data-redline-prior-type":null};if(E.includes("insertion"))n==="accept"?i.setNodeMarkup(T,void 0,v):i.delete(T,T+b.nodeSize);else if(n==="accept")i.delete(T,T+b.nodeSize);else{const x=b.attrs["data-redline-prior-type"];x?i.setNodeMarkup(T,void 0,{...v,"data-redline-type":x,"data-redline-id":b.attrs["data-redline-id"],"data-redline-user-id":b.attrs["data-redline-user-id"],"data-redline-user-name":b.attrs["data-redline-user-name"],"data-redline-timestamp":b.attrs["data-redline-timestamp"]}):i.setNodeMarkup(T,void 0,v)}}const g=[];r.doc.descendants((S,E)=>{if(S.type.name!=="image")return!0;if(!l.has(S.attrs.redlineId))return!1;const T=S.attrs.redlineAction;return T&&g.push({pos:E,action:T}),!1});for(const{pos:S,action:E}of g.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="image")continue;const v={...b.attrs,redlineId:null,redlineType:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlinePriorAction:null};E==="insert"?n==="accept"?i.setNodeMarkup(T,void 0,v):i.delete(T,T+b.nodeSize):E==="delete"&&(n==="accept"?i.delete(T,T+b.nodeSize):b.attrs.redlinePriorAction==="insert"?i.setNodeMarkup(T,void 0,{...b.attrs,redlineAction:"insert",redlinePriorAction:null}):i.setNodeMarkup(T,void 0,v))}const _=[];r.doc.descendants((S,E)=>{if(S.type.name!=="signature")return!0;if(!l.has(S.attrs.redlineId))return!1;const T=S.attrs.redlineAction;return T&&_.push({pos:E,action:T}),!1});for(const{pos:S,action:E}of _.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="signature")continue;const v={...b.attrs,redlineId:null,redlineType:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlinePriorAction:null};E==="add"?n==="accept"?i.setNodeMarkup(T,void 0,v):i.delete(T,T+b.nodeSize):E==="delete"&&(n==="accept"?i.delete(T,T+b.nodeSize):b.attrs.redlinePriorAction==="add"?i.setNodeMarkup(T,void 0,{...b.attrs,redlineAction:"add",redlinePriorAction:null}):i.setNodeMarkup(T,void 0,v))}const y=[];r.doc.descendants((S,E)=>{if(S.type.name!=="variableText")return!0;if(!l.has(S.attrs.redlineId))return!1;const T=S.attrs.redlineAction;return T&&y.push({pos:E,action:T}),!1});for(const{pos:S,action:E}of y.sort((T,b)=>b.pos-T.pos)){const T=i.mapping.map(S),b=i.doc.nodeAt(T);if(!b||b.type.name!=="variableText")continue;const v={...b.attrs,redlineId:null,redlineType:null,redlineAction:null,redlineUserId:null,redlineUserName:null,redlineTimestamp:null,redlinePriorAction:null};E==="add"?n==="accept"?i.setNodeMarkup(T,void 0,v):i.delete(T,T+b.nodeSize):E==="delete"&&(n==="accept"?i.delete(T,T+b.nodeSize):b.attrs.redlinePriorAction==="add"?i.setNodeMarkup(T,void 0,{...b.attrs,redlineAction:"add",redlinePriorAction:null}):i.setNodeMarkup(T,void 0,v))}return i.docChanged?(o(),!0):!1},BW=()=>{const{editor:e,editorConfig:t}=at(),[n,r]=w.useState([]),[i,o]=w.useState([]),a=!!t.currentUser?.isExternalUser,s=w.useCallback(()=>{if(!e)return;const{state:E}=e,{doc:T}=E,b=[],v=[];T.descendants((I,k)=>I.type.name==="tableCell"||I.type.name==="tableHeader"?(v.push({from:k,to:k+I.nodeSize,cellPos:k}),!1):!0);const N=I=>{for(const k of v)if(I>=k.from&&I<k.to)return k.cellPos;return null};T.descendants((I,k)=>{const C=fW(I,k);if(C)return b.push(C),!1;const D=_W(I,k);if(D)return b.push(D),!1;const R=hW(I,k);if(R)return b.push(R),!0;const A=gW(T,I,k);if(A)return b.push(A),!1;const M=EW(I,k);if(M)return b.push(M),!1;const L=SW(I,k);if(L)return b.push(L),!1;if(uW(T.resolve(k))||pW(T.resolve(k))||dW(T.resolve(k))||mW(T.resolve(k)))return!1;const B=bW(I,k);if(B)return b.push(B),!1;const P=Hu(I,k,"userInsertion","user-insertion");P&&(P.cellId=N(k),b.push(P));const F=Hu(I,k,"userDeletion","user-deletion");F&&(F.cellId=N(k),b.push(F));const H=Hu(I,k,"aiInsertion","ai-insertion");H&&(H.cellId=N(k),b.push(H));const $=Hu(I,k,"aiDeletion","ai-deletion");$&&($.cellId=N(k),b.push($));const G=yW(I,k);if(G)return b.push(G),!1});const x=CW(xW(NW(OW(b))));x.sort((I,k)=>I.pos-k.pos);const O=kW(vW(x));r(O),o(TW(O,x))},[e]);w.useEffect(()=>{if(!e)return;s();const E=()=>s();return e.on("update",E),()=>{e.off("update",E)}},[e,s]);const l=w.useCallback(E=>{if(!e||a)return;const T=i.find(b=>b.id===E)||n.find(b=>b.id===E);T&&Gu(e,T,"accept")},[e,i,n,a]),c=w.useCallback(E=>{if(!e||a)return;const T=i.find(b=>b.id===E)||n.find(b=>b.id===E);T&&Gu(e,T,"reject")},[e,i,n,a]),d=w.useCallback(()=>{if(!e||a||n.length===0)return;[...n].map(b=>({change:b,from:b.position,to:b.position+Math.max(b.content?.length||1,1)})).sort((b,v)=>v.from-b.from).forEach(({change:b})=>{Gu(e,b,"accept")})},[e,n,a]),u=w.useCallback(()=>{if(!e||a||n.length===0)return;[...n].map(b=>({change:b,from:b.position,to:b.position+Math.max(b.content?.length||1,1)})).sort((b,v)=>v.from-b.from).forEach(({change:b})=>{Gu(e,b,"reject")})},[e,n,a]),p=w.useCallback((E,T,b)=>{if(e)try{e.commands.focus(),e.commands.setTextSelection(E),T!==void 0&&e.commands.highlightMark(T,b);const{view:v}=e,N=v.coordsAtPos(E);N&&document.elementFromPoint(N.left,N.top)?.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}catch(v){console.error("Error navigating to change:",v)}},[e]),m=w.useCallback(E=>{if(e)try{e.commands.highlightMark(E)}catch(T){console.error("Error highlighting mark:",T)}},[e]),f=w.useCallback(()=>{if(e)try{e.commands.highlightMark(null)}catch(E){console.error("Error clearing mark highlight:",E)}},[e]),g=w.useCallback((E,T)=>{o(b=>b.map(v=>{if(v.id===E){const N={id:`comment-${Date.now()}-${Math.random()}`,userId:t.currentUser?.id||"unknown",userName:t.currentUser?.name||"User",timestamp:new Date().toISOString(),text:T};return{...v,comments:[...v.comments||[],N]}}return v}))},[t.currentUser]),_=w.useCallback((E,T,b)=>{o(v=>v.map(N=>N.id===E&&N.comments?{...N,comments:N.comments.map(x=>x.id===T?{...x,text:b}:x)}:N))},[]),y=w.useCallback((E,T)=>{o(b=>b.map(v=>v.id===E&&v.comments?{...v,comments:v.comments.filter(N=>N.id!==T)}:v))},[]),S=w.useCallback(E=>i.find(T=>T.id===E||!!T.markIds?.includes(E))||null,[i]);return{changes:i,acceptChange:l,rejectChange:c,acceptAllChanges:d,rejectAllChanges:u,navigateToChange:p,scanChanges:s,addComment:g,editComment:_,deleteComment:y,findChangeByMark:S,highlightMark:m,clearMarkHighlight:f}},FW=({editorPageRef:e,isPresentationMode:t,pageClass:n})=>{const{editor:r,editorConfig:i}=at(),{currentMode:o}=Cu(),a=i.editable&&!i.asViewer&&!t&&o!==Ii.VIEWING.value;return h.jsxs("div",{className:`${i.enablePagination?n:""} editor-content`,ref:e,id:"editor-content-qwCfsdsfsd",children:[h.jsx(p0,{editor:r}),a&&h.jsx(KV,{editor:r})]})},UW=({isPresentationMode:e})=>{const{currentMode:t,editorConfig:n}=Cu();return t===Ii.VIEWING.value||n?.asViewer||e?null:h.jsx(wG,{})},zW=()=>{const e=w.useRef(null),t=w.useRef(null),{editor:n,editorConfig:r,redlineItemWidth:i}=at(),{pageClass:o,pageConfig:a,setPageConfig:s}=Jv(),{isDarkMode:l}=Tu(),{isPresentationMode:c,isLaserActive:d,onPresentationModeToggle:u,handleLaserToggle:p}=KH(n,t),m=BW(),{changes:f}=m,g=r?.mode===Ii.VIEWING.value||!!r?.asViewer,_=f.length>0&&!c&&!g;return w.useEffect(()=>{if(!n||!e.current)return;const y=S=>{const E=S.target;if(!E||!e.current?.contains(E)||E.closest("button, input, textarea, select, a, [role='button']"))return;if(n.view.dom.contains(E)){n.commands.focus();return}const b=n.view.posAtCoords({left:S.clientX,top:S.clientY})?.pos??n.state.selection.to;n.chain().focus().setTextSelection(b).run()};return document.addEventListener("click",y),()=>{document.removeEventListener("click",y)}},[n]),h.jsx(MG,{editorConfig:r,onPresentationModeToggle:u,pageConfig:a,setPageConfig:s,children:h.jsxs("div",{ref:t,className:`max-w-full h-full relative flex flex-col bg-neutral-200 dark:bg-black-900 editor-container ${c?"editor-presentation-mode":""} ${d?"laser-active":""} ${l?"dark":""}`,id:"editor-shell-qwCfsxssdsfsd",children:[h.jsx(UW,{isPresentationMode:c}),h.jsxs("div",{className:"flex flex-1 min-h-0 dark:bg-black-600",children:[h.jsx(S$,{children:h.jsx("div",{className:"flex-1 overflow-auto",children:h.jsxs("div",{className:"min-h-full w-fit min-w-full flex justify-center items-start p-4",children:[h.jsx(FW,{editorPageRef:e,isPresentationMode:c,pageClass:o}),_&&h.jsx("div",{style:{width:`${i+40}px`,transition:"width 220ms ease"}})]})})}),!c&&!r?.asViewer&&h.jsx(aW,{position:"left",currentMode:r?.mode||"viewing"}),!c&&!g&&h.jsx(R$,{redline:m})]}),!c&&!r?.asViewer&&h.jsx(JV,{onPresentationModeToggle:u}),c&&h.jsx(t$,{onPresentationModeToggle:u,onLaserToggle:p})]})})},HW=140;function iN(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!1}const GW=({config:e={}})=>{const t={...QM,...e},n=w.useRef(t);n.current=t;const r=w.useRef(null),i=w.useRef(!1),o=w.useRef(null),a=w.useRef(void 0),s=t.content!==null&&typeof t.content=="object"?Lm(t.content,t.piiAnonymization?.settings?.placeholderFormat??"numbered"):t.content,l=Pm(t),c=Ow({extensions:jH(t),...l?{}:{content:s},autofocus:!1,editable:!t.asViewer&&t.editable,onUpdate:({editor:f})=>{r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{t.onContentChange&&t.onContentChange(f)},t.debounceTimeForContentChange)}},l?[t.file?.id??""]:[t.content]),d=w.useCallback(async()=>{try{await document.fonts?.ready}catch{}await new Promise(f=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>f())})})},[]),u=w.useCallback(()=>{const f=o.current;return f?f.querySelector("#editor-content-qwCfsdsfsd")??f.querySelector(".editor-content"):null},[]),p=w.useCallback(async f=>{const g=n.current.screenshot,_=(f?.fileName??g?.fileName??"editor-thumbnail").trim()||"editor-thumbnail",y=f?.mimeType??g?.mimeType??"image/png",S=f?.quality??g?.quality??.92,E=Number.isFinite(S)?Math.min(1,Math.max(0,S)):.92,T=u();if(!T)throw new Error("Unable to capture screenshot: editor container not found.");await d();const b=T.getBoundingClientRect(),v=window.getComputedStyle(T),N=Number.parseFloat(v.width||""),x=Number.parseFloat(v.minHeight||""),O=Number.isFinite(x)&&x>0?x:b.height,I=Math.max(1,Math.round(Number.isFinite(N)&&N>0?N:b.width)),k=Math.max(1,Math.round(O))-HW,C=await kM(T,{cacheBust:!0,pixelRatio:window.devicePixelRatio||1,type:y,quality:y==="image/jpeg"?E:void 0,width:I,height:k,canvasWidth:I,canvasHeight:k,style:{width:`${I}px`,height:`${k}px`,maxHeight:`${k}px`,overflow:"hidden",zoom:"100%"}});if(!C)throw new Error("Unable to capture screenshot: generated blob is empty.");const D=y==="image/jpeg"?"jpg":"png";return new File([C],`${_}.${D}`,{type:y,lastModified:Date.now()})},[u,d]);w.useEffect(()=>{i.current=!1},[t.file?.id,l]),w.useEffect(()=>{if(!l||!c||c.isDestroyed)return;const f=t.collaborativeEditing;if(!f?.provider||!iN(s))return;const g=f.provider;if(typeof g.on!="function")return;const _=()=>{queueMicrotask(()=>{if(!(i.current||!c||c.isDestroyed)){if(!c.isEmpty){i.current=!0;return}if(!iN(s)){i.current=!0;return}i.current=!0,c.commands.setContent(s)}})};return g.on("synced",_),g.synced&&_(),()=>g.off?.("synced",_)},[c,l,t.collaborativeEditing,s]),w.useEffect(()=>{if(!c||c.isDestroyed||!t.piiAnonymization?.onScanComplete)return;const f=g=>{const _=c;if(!_||_.isDestroyed)return;const S=n.current.piiAnonymization?.settings?.placeholderFormat??"numbered";if(typeof g=="string"){_.commands.setContent(g);return}if(g!==null&&typeof g=="object"&&!Array.isArray(g)){const E=Lm(g,S);_.commands.setContent(E)}};t.piiAnonymization?.onScanComplete(f)},[c,t.piiAnonymization?.onScanComplete]),w.useEffect(()=>{const f=t.screenshot,g=f?.requestId;g&&a.current!==g&&(a.current=g,(async()=>{try{const _=await p();f?.onSuccess?.(_)}catch(_){const y=_ instanceof Error?_:new Error(String(_));f?.onError?.(y)}})())},[p,t.screenshot]);const m=w.useMemo(()=>_c.map(({value:f})=>`.lax-wp-editor-host .ProseMirror .${Am(f)} { font-family: ${f} !important; }`).join(`
|
|
406
406
|
`),[]);return w.useEffect(()=>{if(!c||c.isDestroyed)return;const f=c.state.schema.marks.textStyle;if(!f)return;let g=c.state.tr,_=!1;c.state.doc.descendants((y,S)=>{!y.isText||y.marks.length===0||y.marks.forEach(E=>{if(E.type!==f)return;const T=E.attrs.fontFamily;if(!T||typeof T!="string")return;const b=Am(T);E.attrs.class!==b&&(g=g.removeMark(S,S+y.nodeSize,E),g=g.addMark(S,S+y.nodeSize,f.create({...E.attrs,class:b})),_=!0)})}),_&&(g=g.setMeta("addToHistory",!1),c.view.dispatch(g))},[c]),w.useEffect(()=>()=>{c&&!c.isDestroyed&&c.storage?.viewModeDocumentPreview?.previewActive&&(c.commands.toggleRedlineMode(!1),c.commands.exitViewModeCleanPreview()),c?.destroy()},[c]),c?h.jsxs("div",{ref:o,className:"lax-wp-editor-host h-full w-full",children:[h.jsx("style",{children:m}),h.jsx(pz,{editor:c,editorConfig:t,captureScreenshot:p,children:h.jsx(De.ConfigProvider,{prefixCls:"editor",children:h.jsx(zW,{})})})]}):null},VW=({config:e={},children:t})=>{const n=eC(),r=e.theme?.isDarkMode??n;return h.jsx(tC.Provider,{value:{config:e,isDarkMode:r},children:t})};hn.Editor=GW,hn.EditorProvider=VW,hn.useEditorProvider=Tu,Object.defineProperty(hn,Symbol.toStringTag,{value:"Module"})}));
|