@univerjs/docs-thread-comment-ui 0.2.4 → 0.2.5

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/lib/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var re=Object.defineProperty;var ie=(e,t,n)=>t in e?re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var F=(e,t,n)=>ie(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@univerjs/core"),C=require("@wendellhu/redi"),S=require("@univerjs/thread-comment-ui"),R=require("@univerjs/engine-render"),p=require("@univerjs/ui"),h=require("@univerjs/docs"),N=require("@univerjs/thread-comment"),b=require("@wendellhu/redi/react-bindings"),_=require("react"),L=require("rxjs"),Y=require("@univerjs/docs-ui"),oe="DOC_THREAD_COMMENT_UI_PLUGIN",M="default_doc";var v=function(){return v=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++){t=arguments[n];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e},v.apply(this,arguments)},ce=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},J=_.forwardRef(function(e,t){var n=e.icon,r=e.id,i=e.className,o=e.extend,c=ce(e,["icon","id","className","extend"]),d="univerjs-icon univerjs-icon-".concat(r," ").concat(i||"").trim(),l=_.useRef("_".concat(de()));return Q(n,"".concat(r),{defIds:n.defIds,idSuffix:l.current},v({ref:t,className:d},c),o)});function Q(e,t,n,r,i){return _.createElement(e.tag,v(v({key:t},se(e,n,i)),r),(ae(e,n).children||[]).map(function(o,c){return Q(o,"".concat(t,"-").concat(e.tag,"-").concat(c),n,void 0,i)}))}function se(e,t,n){var r=v({},e.attrs);n!=null&&n.colorChannel1&&r.fill==="colorChannel1"&&(r.fill=n.colorChannel1);var i=t.defIds;return!i||i.length===0||(e.tag==="use"&&r["xlink:href"]&&(r["xlink:href"]=r["xlink:href"]+t.idSuffix),Object.entries(r).forEach(function(o){var c=o[0],d=o[1];typeof d=="string"&&(r[c]=d.replace(/url\(#(.*)\)/,"url(#$1".concat(t.idSuffix,")")))})),r}function ae(e,t){var n,r=t.defIds;return!r||r.length===0?e:e.tag==="defs"&&(!((n=e.children)===null||n===void 0)&&n.length)?v(v({},e),{children:e.children.map(function(i){return typeof i.attrs.id=="string"&&r&&r.indexOf(i.attrs.id)>-1?v(v({},i),{attrs:v(v({},i.attrs),{id:i.attrs.id+t.idSuffix})}):i})}):e}function de(){return Math.random().toString(36).substring(2,8)}J.displayName="UniverIcon";var me={tag:"svg",attrs:{fill:"none",viewBox:"0 0 17 17",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521C5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345ZM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521C8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345ZM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521C11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345Z",fillRule:"evenodd",clipRule:"evenodd"}},{tag:"path",attrs:{fill:"currentColor",d:"M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521 5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345zM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521 8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345zM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521 11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345z"}},{tag:"path",attrs:{fill:"currentColor",d:"M1.84351 3.41861C1.84351 3.01861 2.15531 2.69434 2.53993 2.69434H14.9381C15.3228 2.69434 15.6346 3.01861 15.6346 3.41861V12.4611C15.6346 12.8612 15.3228 13.1854 14.9381 13.1854H8.82117L6.06643 14.6179C5.85054 14.7301 5.59416 14.7181 5.38884 14.5862C5.18352 14.4542 5.05855 14.2211 5.05855 13.9701V13.1854H2.53993C2.15531 13.1854 1.84351 12.8612 1.84351 12.4611L1.84351 3.41861ZM6.45141 12.7982L8.34531 12.0135C8.44201 11.9632 8.54864 11.9371 8.65676 11.9371H14.2417C14.3522 11.9371 14.4417 11.8475 14.4417 11.7371V4.14271C14.4417 4.03225 14.3522 3.94271 14.2417 3.94271H3.23636C3.12591 3.94271 3.03636 4.03225 3.03636 4.14271L3.03636 11.7371C3.03636 11.8475 3.12591 11.9371 3.23636 11.9371L5.75498 11.9371C6.1396 11.9371 6.45141 12.0611 6.45141 12.4611V12.7982Z",fillRule:"evenodd",clipRule:"evenodd"}}]},k=_.forwardRef(function(e,t){return _.createElement(J,Object.assign({},e,{id:"comment-single",ref:t,icon:me}))});k.displayName="CommentSingle";const W={id:"docs.command.add-comment",type:s.CommandType.COMMAND,async handler(e,t){if(!t)return!1;const{comment:n,unitId:r}=t,o=await e.get(N.IThreadCommentDataSourceService).addComment(n),c=e.get(s.ICommandService),d=h.addCustomDecorationBySelectionFactory(e,{id:o.id,type:s.CustomDecorationType.COMMENT});if(d){const l={id:N.AddCommentMutation.id,params:{unitId:r,subUnitId:M,comment:o}},m={id:S.SetActiveCommentOperation.id,params:{unitId:r,subUnitId:M,commentId:o.id}};return(await s.sequenceExecuteAsync([l,d,m],c)).result}return!1}};var le=Object.defineProperty,ue=Object.getOwnPropertyDescriptor,Ce=(e,t,n,r)=>{for(var i=r>1?void 0:r?ue(t,n):t,o=e.length-1,c;o>=0;o--)(c=e[o])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&le(t,n,i),i},K=(e,t)=>(n,r)=>t(n,r,e);let y=class extends s.Disposable{constructor(t,n){super();F(this,"_addingComment$",new L.BehaviorSubject(void 0));F(this,"addingComment$",this._addingComment$.asObservable());this._sidebarService=t,this._threadCommentPanelService=n,this.disposeWithMe(()=>{this._addingComment$.complete()})}get addingComment(){return this._addingComment$.getValue()}startAdd(t){this._addingComment$.next(t)}endAdd(){this._addingComment$.next(void 0)}};y=Ce([K(0,p.ISidebarService),K(1,C.Inject(S.ThreadCommentPanelService))],y);const x={id:"docs.operation.show-comment-panel",type:s.CommandType.OPERATION,handler(e,t){const n=e.get(S.ThreadCommentPanelService),r=e.get(p.ISidebarService);return n.panelVisible||(r.open({header:{title:"threadCommentUI.panel.title"},children:{label:Z.componentKey},width:320,onClose:()=>n.setPanelVisible(!1)}),n.setPanelVisible(!0)),t&&n.setActiveComment(t==null?void 0:t.activeComment),!0}},B={id:"docs.operation.start-add-comment",type:s.CommandType.OPERATION,handler(e){var I,A;const t=e.get(S.ThreadCommentPanelService),r=e.get(s.IUniverInstanceService).getCurrentUnitForType(s.UniverInstanceType.UNIVER_DOC),i=e.get(h.TextSelectionManagerService),o=e.get(s.UserManagerService),c=e.get(y),d=e.get(s.ICommandService),l=e.get(p.ISidebarService),m=i.getActiveRange();if(!r||!m)return!1;if(m.collapsed)return t.panelVisible?(t.setPanelVisible(!1),l.close()):d.executeCommand(x.id),!0;t.panelVisible||d.executeCommand(x.id);const f=r.getUnitId(),O=h.getSelectionText((A=(I=r.getBody())==null?void 0:I.dataStream)!=null?A:"",m.startOffset,m.endOffset),g=M,u="",a={unitId:f,subUnitId:g,id:u,ref:O,dT:S.getDT(),personId:o.getCurrentUser().userID,text:{dataStream:`\r
2
- `},startOffset:m.startOffset,endOffset:m.endOffset,collapsed:!0,threadId:u};return c.startAdd(a),t.setActiveComment({unitId:f,subUnitId:g,commentId:u}),!0}},H={id:"docs.command.delete-comment",type:s.CommandType.COMMAND,async handler(e,t){if(!t)return!1;const{commentId:n,unitId:r}=t,i=e.get(s.ICommandService),o=h.deleteCustomDecorationFactory(e,{id:n,unitId:r});return o?(await s.sequenceExecute([o],i)).result:!1}},Z=()=>{var u;const e=b.useDependency(s.IUniverInstanceService),t=_.useMemo(()=>e.getCurrentTypeOfUnit$(s.UniverInstanceType.UNIVER_DOC),[e]),n=b.useObservable(t),r=_.useMemo(()=>new L.Observable(a=>a.next(M)),[]),i=b.useDependency(h.TextSelectionManagerService),o=(u=b.useObservable(i.textSelection$))==null?void 0:u.textRanges[0],c=b.useDependency(s.ICommandService),d=b.useDependency(y),l=b.useObservable(d.addingComment$),[m,f]=_.useState([]);if(_.useEffect(()=>{var z;const a=new Set,I=n==null?void 0:n.getCustomDecorations();f((z=I==null?void 0:I.map(D=>D.id).filter(D=>{const E=a.has(D);return a.add(D),!E}))!=null?z:[]);const A=c.onCommandExecuted(D=>{var E;if(D.id===h.RichTextEditingMutation.id){const G=new Set,q=n==null?void 0:n.getCustomDecorations();f((E=q==null?void 0:q.map(w=>w.id).filter(w=>{const ne=G.has(w);return G.add(w),!ne}))!=null?E:[])}});return()=>{A.dispose()}},[c,n]),!n)return null;const O=o&&o.endOffset===o.startOffset,g=n.getUnitId();return _.createElement(S.ThreadCommentPanel,{unitId:g,subUnitId$:r,type:s.UniverInstanceType.UNIVER_DOC,onAdd:()=>{c.executeCommand(B.id)},getSubUnitName:()=>"",disableAdd:O,tempComment:l,onAddComment:a=>{if(!a.parentId){const I={unitId:g,range:l,comment:a};return c.executeCommand(W.id,I),d.endAdd(),!1}return!0},onDeleteComment:a=>{if(!a.parentId){const I={unitId:g,commentId:a.id};return c.executeCommand(H.id,I),!1}return!0},showComments:m})};Z.componentKey="univer.doc.thread-comment-panel";const ve=e=>{const n=e.get(R.IRenderManagerService).getCurrent(),r=n==null?void 0:n.with(h.DocSkeletonManagerService).getSkeleton(),i=r==null?void 0:r.getViewModel().getEditArea();return i===R.DocumentEditArea.FOOTER||i===R.DocumentEditArea.HEADER};function fe(e){return{id:B.id,group:p.MenuGroup.TOOLBAR_LAYOUT,type:p.MenuItemType.BUTTON,icon:"CommentSingle",title:"threadCommentUI.panel.addComment",tooltip:"threadCommentUI.panel.addComment",positions:[p.MenuPosition.TOOLBAR_START,p.MenuPosition.CONTEXT_MENU],hidden$:p.getMenuHiddenObservable(e,s.UniverInstanceType.UNIVER_DOC),disabled$:new L.Observable(function(t){const r=e.get(h.TextSelectionManagerService).textSelection$.pipe(L.debounceTime(16)).subscribe(()=>{t.next(ve(e))});return()=>{r.unsubscribe()}})}}var he=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,Ie=(e,t,n,r)=>{for(var i=r>1?void 0:r?ge(t,n):t,o=e.length-1,c;o>=0;o--)(c=e[o])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&he(t,n,i),i},j=(e,t)=>(n,r)=>t(n,r,e);let P=class extends s.Disposable{constructor(e,t,n,r,i){super(),this._config=e,this._commandService=t,this._menuService=n,this._injector=r,this._componentManager=i,this._initCommands(),this._initMenus(),this._initComponents()}_initCommands(){[W,H,x,B].forEach(e=>{this.disposeWithMe(this._commandService.registerCommand(e))})}_initMenus(){[fe].forEach(e=>{this.disposeWithMe(this._menuService.addMenuItem(e(this._injector),this._config.menu))})}_initComponents(){[Z].forEach(e=>{this.disposeWithMe(this._componentManager.register(e.componentKey,e))}),this.disposeWithMe(this._componentManager.register("CommentSingle",k))}};P=Ie([s.OnLifecycle(s.LifecycleStages.Rendered,P),j(1,s.ICommandService),j(2,p.IMenuService),j(3,C.Inject(C.Injector)),j(4,C.Inject(p.ComponentManager))],P);var pe=Object.defineProperty,_e=Object.getOwnPropertyDescriptor,Se=(e,t,n,r)=>{for(var i=r>1?void 0:r?_e(t,n):t,o=e.length-1,c;o>=0;o--)(c=e[o])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&pe(t,n,i),i},T=(e,t)=>(n,r)=>t(n,r,e);let V=class extends s.Disposable{constructor(e,t,n,r,i,o){super(),this._threadCommentPanelService=e,this._univerInstanceService=t,this._commandService=n,this._docThreadCommentService=r,this._renderManagerService=i,this._threadCommentModel=o,this._initSelectionChange(),this._initActiveCommandChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var t,n,r,i;if(e.id===h.SetTextSelectionsOperation.id){const o=e.params,{unitId:c,ranges:d}=o,l=this._univerInstanceService.getUnit(c,s.UniverInstanceType.UNIVER_DOC),m=d[0];if(m&&l){const{startOffset:f,endOffset:O,collapsed:g}=m;let u;if(g?u=(n=(t=l.getBody())==null?void 0:t.customDecorations)==null?void 0:n.find(a=>a.startIndex<=f&&a.endIndex>=O-1):u=(i=(r=l.getBody())==null?void 0:r.customDecorations)==null?void 0:i.find(a=>a.startIndex<=f&&a.endIndex>=O-1),u){const a=this._threadCommentModel.getComment(c,M,u.id);a&&!a.resolved&&this._commandService.executeCommand(x.id,{activeComment:{unitId:c,subUnitId:M,commentId:u.id}});return}}this._commandService.executeCommand(S.SetActiveCommentOperation.id)}}))}_initActiveCommandChange(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(e=>{var t,n,r;if(e){const i=this._univerInstanceService.getUnit(e.unitId);if(i){const o=(t=this._renderManagerService.getRenderById(e.unitId))==null?void 0:t.with(Y.DocBackScrollRenderController),c=(n=i.getCustomRanges())==null?void 0:n.find(d=>d.rangeId===e.commentId);c&&o&&o.scrollToRange(e.unitId,{startOffset:c.startIndex,endOffset:c.endIndex,collapsed:!1})}}(!e||e.commentId!==((r=this._docThreadCommentService.addingComment)==null?void 0:r.id))&&this._docThreadCommentService.endAdd()}))}};V=Se([s.OnLifecycle(s.LifecycleStages.Rendered,V),T(0,C.Inject(S.ThreadCommentPanelService)),T(1,s.IUniverInstanceService),T(2,s.ICommandService),T(3,C.Inject(y)),T(4,R.IRenderManagerService),T(5,C.Inject(N.ThreadCommentModel))],V);var Oe=Object.defineProperty,be=Object.getOwnPropertyDescriptor,Me=(e,t,n,r)=>{for(var i=r>1?void 0:r?be(t,n):t,o=e.length-1,c;o>=0;o--)(c=e[o])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&Oe(t,n,i),i},U=(e,t)=>(n,r)=>t(n,r,e);let $=class extends s.Disposable{constructor(e,t,n,r,i,o){super(),this._context=e,this._docInterceptorService=t,this._threadCommentPanelService=n,this._docRenderController=r,this._univerInstanceService=i,this._threadCommentModel=o,this._interceptorViewModel(),this._initReRender()}_initReRender(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(e=>{var n;if(e){this._docRenderController.reRender(e.unitId);return}const t=(n=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_DOC))==null?void 0:n.getUnitId();t&&this._docRenderController.reRender(t)})),this.disposeWithMe(this._threadCommentModel.commentUpdate$.subscribe(e=>{e.type==="resolve"&&this._docRenderController.reRender(e.unitId)}))}_interceptorViewModel(){this._docInterceptorService.intercept(h.DOC_INTERCEPTOR_POINT.CUSTOM_DECORATION,{handler:(e,t,n)=>{if(!e)return n(e);const{unitId:r,index:i,customDecorations:o}=t,c=this._threadCommentPanelService.activeCommentId,{commentId:d,unitId:l}=c||{},m=o.find(u=>u.id===d),f=this._threadCommentModel.getComment(r,M,e.id);if(!f)return n({...e,show:!1});const O=m&&i>=m.startIndex&&i<=m.endIndex,g=l===r&&e.id===d;return n({...e,active:g||O,show:!f.resolved})}})}};$=Me([s.OnLifecycle(s.LifecycleStages.Starting,$),U(1,C.Inject(h.DocInterceptorService)),U(2,C.Inject(S.ThreadCommentPanelService)),U(3,C.Inject(Y.DocRenderController)),U(4,s.IUniverInstanceService),U(5,C.Inject(N.ThreadCommentModel))],$);var ee=Object.defineProperty,De=Object.getOwnPropertyDescriptor,Te=(e,t,n)=>t in e?ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ye=(e,t,n,r)=>{for(var i=r>1?void 0:r?De(t,n):t,o=e.length-1,c;o>=0;o--)(c=e[o])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&ee(t,n,i),i},X=(e,t)=>(n,r)=>t(n,r,e),te=(e,t,n)=>Te(e,typeof t!="symbol"?t+"":t,n);exports.UniverDocsThreadCommentUIPlugin=class extends s.Plugin{constructor(t={menu:{}},n,r){super(),this._config=t,this._injector=n,this._renderManagerSrv=r}onStarting(t){[[P,{useFactory:()=>this._injector.createInstance(P,this._config)}],[V],[y]].forEach(n=>{t.add(n)})}onRendered(){this._initRenderModule()}_initRenderModule(){[$].forEach(t=>{this._renderManagerSrv.registerRenderModule(s.UniverInstanceType.UNIVER_DOC,t)})}};te(exports.UniverDocsThreadCommentUIPlugin,"pluginName",oe);te(exports.UniverDocsThreadCommentUIPlugin,"type",s.UniverInstanceType.UNIVER_DOC);exports.UniverDocsThreadCommentUIPlugin=ye([s.DependentOn(S.UniverThreadCommentUIPlugin),X(1,C.Inject(C.Injector)),X(2,R.IRenderManagerService)],exports.UniverDocsThreadCommentUIPlugin);exports.AddDocCommentComment=W;exports.DeleteDocCommentComment=H;exports.ShowCommentPanelOperation=x;exports.StartAddCommentOperation=B;
1
+ "use strict";var ne=Object.defineProperty;var re=(e,t,n)=>t in e?ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var F=(e,t,n)=>re(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@univerjs/core"),I=require("@univerjs/thread-comment-ui"),M=require("@univerjs/engine-render"),u=require("@univerjs/ui"),g=require("@univerjs/docs"),$=require("@univerjs/thread-comment"),p=require("react"),R=require("rxjs"),z=require("@univerjs/docs-ui"),ie="DOC_THREAD_COMMENT_UI_PLUGIN",O="default_doc";var h=function(){return h=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++){t=arguments[n];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e},h.apply(this,arguments)},oe=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},X=p.forwardRef(function(e,t){var n=e.icon,r=e.id,i=e.className,c=e.extend,s=oe(e,["icon","id","className","extend"]),d="univerjs-icon univerjs-icon-".concat(r," ").concat(i||"").trim(),C=p.useRef("_".concat(ae()));return J(n,"".concat(r),{defIds:n.defIds,idSuffix:C.current},h({ref:t,className:d},s),c)});function J(e,t,n,r,i){return p.createElement(e.tag,h(h({key:t},ce(e,n,i)),r),(se(e,n).children||[]).map(function(c,s){return J(c,"".concat(t,"-").concat(e.tag,"-").concat(s),n,void 0,i)}))}function ce(e,t,n){var r=h({},e.attrs);n!=null&&n.colorChannel1&&r.fill==="colorChannel1"&&(r.fill=n.colorChannel1);var i=t.defIds;return!i||i.length===0||(e.tag==="use"&&r["xlink:href"]&&(r["xlink:href"]=r["xlink:href"]+t.idSuffix),Object.entries(r).forEach(function(c){var s=c[0],d=c[1];typeof d=="string"&&(r[s]=d.replace(/url\(#(.*)\)/,"url(#$1".concat(t.idSuffix,")")))})),r}function se(e,t){var n,r=t.defIds;return!r||r.length===0?e:e.tag==="defs"&&(!((n=e.children)===null||n===void 0)&&n.length)?h(h({},e),{children:e.children.map(function(i){return typeof i.attrs.id=="string"&&r&&r.indexOf(i.attrs.id)>-1?h(h({},i),{attrs:h(h({},i.attrs),{id:i.attrs.id+t.idSuffix})}):i})}):e}function ae(){return Math.random().toString(36).substring(2,8)}X.displayName="UniverIcon";var de={tag:"svg",attrs:{fill:"none",viewBox:"0 0 17 17",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521C5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345ZM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521C8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345ZM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521C11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345Z",fillRule:"evenodd",clipRule:"evenodd"}},{tag:"path",attrs:{fill:"currentColor",d:"M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521 5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345zM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521 8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345zM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521 11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345z"}},{tag:"path",attrs:{fill:"currentColor",d:"M1.84351 3.41861C1.84351 3.01861 2.15531 2.69434 2.53993 2.69434H14.9381C15.3228 2.69434 15.6346 3.01861 15.6346 3.41861V12.4611C15.6346 12.8612 15.3228 13.1854 14.9381 13.1854H8.82117L6.06643 14.6179C5.85054 14.7301 5.59416 14.7181 5.38884 14.5862C5.18352 14.4542 5.05855 14.2211 5.05855 13.9701V13.1854H2.53993C2.15531 13.1854 1.84351 12.8612 1.84351 12.4611L1.84351 3.41861ZM6.45141 12.7982L8.34531 12.0135C8.44201 11.9632 8.54864 11.9371 8.65676 11.9371H14.2417C14.3522 11.9371 14.4417 11.8475 14.4417 11.7371V4.14271C14.4417 4.03225 14.3522 3.94271 14.2417 3.94271H3.23636C3.12591 3.94271 3.03636 4.03225 3.03636 4.14271L3.03636 11.7371C3.03636 11.8475 3.12591 11.9371 3.23636 11.9371L5.75498 11.9371C6.1396 11.9371 6.45141 12.0611 6.45141 12.4611V12.7982Z",fillRule:"evenodd",clipRule:"evenodd"}}]},Q=p.forwardRef(function(e,t){return p.createElement(X,Object.assign({},e,{id:"comment-single",ref:t,icon:de}))});Q.displayName="CommentSingle";const H={id:"docs.command.add-comment",type:o.CommandType.COMMAND,async handler(e,t){if(!t)return!1;const{comment:n,unitId:r}=t,c=await e.get($.IThreadCommentDataSourceService).addComment(n),s=e.get(o.ICommandService),d=g.addCustomDecorationBySelectionFactory(e,{id:c.id,type:o.CustomDecorationType.COMMENT});if(d){const C={id:$.AddCommentCommand.id,params:{unitId:r,subUnitId:O,comment:c}},v={id:I.SetActiveCommentOperation.id,params:{unitId:r,subUnitId:O,commentId:c.id}};return(await o.sequenceExecuteAsync([C,d,v],s)).result}return!1}};var me=Object.defineProperty,le=Object.getOwnPropertyDescriptor,ue=(e,t,n,r)=>{for(var i=r>1?void 0:r?le(t,n):t,c=e.length-1,s;c>=0;c--)(s=e[c])&&(i=(r?s(t,n,i):s(i))||i);return r&&i&&me(t,n,i),i},G=(e,t)=>(n,r)=>t(n,r,e);let D=class extends o.Disposable{constructor(t,n){super();F(this,"_addingComment$",new R.BehaviorSubject(void 0));F(this,"addingComment$",this._addingComment$.asObservable());this._sidebarService=t,this._threadCommentPanelService=n,this.disposeWithMe(()=>{this._addingComment$.complete()})}get addingComment(){return this._addingComment$.getValue()}startAdd(t){this._addingComment$.next(t)}endAdd(){this._addingComment$.next(void 0)}};D=ue([G(0,u.ISidebarService),G(1,o.Inject(I.ThreadCommentPanelService))],D);const x={id:"docs.operation.show-comment-panel",type:o.CommandType.OPERATION,handler(e,t){const n=e.get(I.ThreadCommentPanelService),r=e.get(u.ISidebarService);return n.panelVisible||(r.open({header:{title:"threadCommentUI.panel.title"},children:{label:B.componentKey},width:320,onClose:()=>n.setPanelVisible(!1)}),n.setPanelVisible(!0)),t&&n.setActiveComment(t==null?void 0:t.activeComment),!0}},Y={id:"docs.operation.toggle-comment-panel",type:o.CommandType.OPERATION,handler(e){const t=e.get(I.ThreadCommentPanelService),n=e.get(u.ISidebarService);return t.panelVisible?(n.close(),t.setPanelVisible(!1),t.setActiveComment(null)):(n.open({header:{title:"threadCommentUI.panel.title"},children:{label:B.componentKey},width:320,onClose:()=>t.setPanelVisible(!1)}),t.setPanelVisible(!0)),!0}},L={id:"docs.operation.start-add-comment",type:o.CommandType.OPERATION,handler(e){var A,U;const t=e.get(I.ThreadCommentPanelService),r=e.get(o.IUniverInstanceService).getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC),i=e.get(g.TextSelectionManagerService),c=e.get(M.ITextSelectionRenderManager),s=e.get(o.UserManagerService),d=e.get(D),C=e.get(o.ICommandService),v=e.get(u.ISidebarService),a=i.getActiveRange();if(!r||!a)return!1;if(a.collapsed)return t.panelVisible?(t.setPanelVisible(!1),v.close()):C.executeCommand(x.id),!0;t.panelVisible||C.executeCommand(x.id);const f=r.getUnitId(),_=g.getSelectionText((U=(A=r.getBody())==null?void 0:A.dataStream)!=null?U:"",a.startOffset,a.endOffset),S=O,m="",l={unitId:f,subUnitId:S,id:m,ref:_,dT:I.getDT(),personId:s.getCurrentUser().userID,text:{dataStream:`\r
2
+ `},startOffset:a.startOffset,endOffset:a.endOffset,collapsed:!0,threadId:m};return c.blurEditor(),d.startAdd(l),t.setActiveComment({unitId:f,subUnitId:S,commentId:m}),!0}},W={id:"docs.command.delete-comment",type:o.CommandType.COMMAND,async handler(e,t){if(!t)return!1;const{commentId:n,unitId:r}=t,i=e.get(o.ICommandService),c=g.deleteCustomDecorationFactory(e,{id:n,unitId:r});return c?(await o.sequenceExecute([c],i)).result:!1}},B=()=>{const e=o.useDependency(o.IUniverInstanceService),t=p.useMemo(()=>e.getCurrentTypeOfUnit$(o.UniverInstanceType.UNIVER_DOC),[e]),n=o.useObservable(t),r=p.useMemo(()=>new R.Observable(m=>m.next(O)),[]),i=o.useDependency(g.TextSelectionManagerService),c=p.useMemo(()=>i.textSelection$.pipe(R.debounceTime(16)),[i.textSelection$]);o.useObservable(c);const s=o.useDependency(o.ICommandService),d=o.useDependency(D),C=o.useObservable(d.addingComment$),[v,a]=p.useState([]);if(p.useEffect(()=>{var U;const m=new Set,l=n==null?void 0:n.getCustomDecorations();a((U=l==null?void 0:l.map(b=>b.id).filter(b=>{const E=m.has(b);return m.add(b),!E}))!=null?U:[]);const A=s.onCommandExecuted(b=>{var E;if(b.id===g.RichTextEditingMutation.id){const Z=new Set,q=n==null?void 0:n.getCustomDecorations();a((E=q==null?void 0:q.map(w=>w.id).filter(w=>{const te=Z.has(w);return Z.add(w),!te}))!=null?E:[])}});return()=>{A.dispose()}},[s,n]),!n)return null;const f=i.getActiveRange(),_=!!(f&&(f.endOffset===f.startOffset||f.segmentId)),S=n.getUnitId();return p.createElement(I.ThreadCommentPanel,{unitId:S,subUnitId$:r,type:o.UniverInstanceType.UNIVER_DOC,onAdd:()=>{s.executeCommand(L.id)},getSubUnitName:()=>"",disableAdd:_,tempComment:C,onAddComment:m=>{if(!m.parentId){const l={unitId:S,range:C,comment:m};return s.executeCommand(H.id,l),d.endAdd(),!1}return!0},onDeleteComment:m=>{if(!m.parentId){const l={unitId:S,commentId:m.id};return s.executeCommand(W.id,l),!1}return!0},showComments:v})};B.componentKey="univer.doc.thread-comment-panel";const Ce=e=>{const t=e.get(M.IRenderManagerService),n=e.get(g.TextSelectionManagerService),r=t.getCurrent(),i=r==null?void 0:r.with(g.DocSkeletonManagerService).getSkeleton(),c=i==null?void 0:i.getViewModel().getEditArea();if(c===M.DocumentEditArea.FOOTER||c===M.DocumentEditArea.HEADER)return!0;const s=n.getActiveRange();return!!(!s||s.collapsed)};function ve(e){return{id:L.id,group:u.MenuGroup.CONTEXT_MENU_DATA,type:u.MenuItemType.BUTTON,icon:"CommentSingle",title:"threadCommentUI.panel.addComment",tooltip:"threadCommentUI.panel.addComment",positions:[u.MenuPosition.CONTEXT_MENU],hidden$:u.getMenuHiddenObservable(e,o.UniverInstanceType.UNIVER_DOC),disabled$:new R.Observable(function(t){const r=e.get(g.TextSelectionManagerService).textSelection$.pipe(R.debounceTime(16)).subscribe(()=>{t.next(Ce(e))});return()=>{r.unsubscribe()}})}}function fe(e){return{id:Y.id,group:u.MenuGroup.CONTEXT_MENU_DATA,type:u.MenuItemType.BUTTON,icon:"CommentSingle",title:"threadCommentUI.panel.addComment",tooltip:"threadCommentUI.panel.addComment",positions:[u.MenuPosition.TOOLBAR_START],hidden$:u.getMenuHiddenObservable(e,o.UniverInstanceType.UNIVER_DOC)}}var he=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,pe=(e,t,n,r)=>{for(var i=r>1?void 0:r?ge(t,n):t,c=e.length-1,s;c>=0;c--)(s=e[c])&&(i=(r?s(t,n,i):s(i))||i);return r&&i&&he(t,n,i),i},N=(e,t)=>(n,r)=>t(n,r,e);let P=class extends o.Disposable{constructor(e,t,n,r,i){super(),this._config=e,this._commandService=t,this._menuService=n,this._injector=r,this._componentManager=i,this._initCommands(),this._initMenus(),this._initComponents()}_initCommands(){[H,W,x,L,Y].forEach(e=>{this.disposeWithMe(this._commandService.registerCommand(e))})}_initMenus(){[ve,fe].forEach(e=>{this.disposeWithMe(this._menuService.addMenuItem(e(this._injector),this._config.menu))})}_initComponents(){[B].forEach(e=>{this.disposeWithMe(this._componentManager.register(e.componentKey,e))}),this.disposeWithMe(this._componentManager.register("CommentSingle",Q))}};P=pe([o.OnLifecycle(o.LifecycleStages.Rendered,P),N(1,o.ICommandService),N(2,u.IMenuService),N(3,o.Inject(o.Injector)),N(4,o.Inject(u.ComponentManager))],P);var Ie=Object.defineProperty,Se=Object.getOwnPropertyDescriptor,_e=(e,t,n,r)=>{for(var i=r>1?void 0:r?Se(t,n):t,c=e.length-1,s;c>=0;c--)(s=e[c])&&(i=(r?s(t,n,i):s(i))||i);return r&&i&&Ie(t,n,i),i},T=(e,t)=>(n,r)=>t(n,r,e);let V=class extends o.Disposable{constructor(e,t,n,r,i,c){super(),this._threadCommentPanelService=e,this._univerInstanceService=t,this._commandService=n,this._docThreadCommentService=r,this._renderManagerService=i,this._threadCommentModel=c,this._initSelectionChange(),this._initActiveCommandChange()}_initSelectionChange(){let e;this.disposeWithMe(this._commandService.onCommandExecuted(t=>{var n,r,i,c;if(t.id===g.SetTextSelectionsOperation.id){const s=t.params,{unitId:d,ranges:C}=s,v=this._univerInstanceService.getUnit(d,o.UniverInstanceType.UNIVER_DOC),a=C[0];if((e==null?void 0:e.startOffset)===(a==null?void 0:a.startOffset)&&(e==null?void 0:e.endOffset)===(a==null?void 0:a.endOffset))return;if(e=a,a&&v){const{startOffset:f,endOffset:_,collapsed:S}=a;let m;if(S?m=(r=(n=v.getBody())==null?void 0:n.customDecorations)==null?void 0:r.find(l=>l.startIndex<=f&&l.endIndex>=_-1):m=(c=(i=v.getBody())==null?void 0:i.customDecorations)==null?void 0:c.find(l=>l.startIndex<=f&&l.endIndex>=_-1),m){const l=this._threadCommentModel.getComment(d,O,m.id);l&&!l.resolved&&this._commandService.executeCommand(x.id,{activeComment:{unitId:d,subUnitId:O,commentId:m.id}});return}}this._commandService.executeCommand(I.SetActiveCommentOperation.id)}}))}_initActiveCommandChange(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(e=>{var t,n,r;if(e){const i=this._univerInstanceService.getUnit(e.unitId);if(i){const c=(t=this._renderManagerService.getRenderById(e.unitId))==null?void 0:t.with(z.DocBackScrollRenderController),s=(n=i.getCustomRanges())==null?void 0:n.find(d=>d.rangeId===e.commentId);s&&c&&c.scrollToRange(e.unitId,{startOffset:s.startIndex,endOffset:s.endIndex,collapsed:!1})}}(!e||e.commentId!==((r=this._docThreadCommentService.addingComment)==null?void 0:r.id))&&this._docThreadCommentService.endAdd()}))}};V=_e([o.OnLifecycle(o.LifecycleStages.Rendered,V),T(0,o.Inject(I.ThreadCommentPanelService)),T(1,o.IUniverInstanceService),T(2,o.ICommandService),T(3,o.Inject(D)),T(4,M.IRenderManagerService),T(5,o.Inject($.ThreadCommentModel))],V);var Oe=Object.defineProperty,be=Object.getOwnPropertyDescriptor,Te=(e,t,n,r)=>{for(var i=r>1?void 0:r?be(t,n):t,c=e.length-1,s;c>=0;c--)(s=e[c])&&(i=(r?s(t,n,i):s(i))||i);return r&&i&&Oe(t,n,i),i},y=(e,t)=>(n,r)=>t(n,r,e);let j=class extends o.Disposable{constructor(e,t,n,r,i,c){super(),this._context=e,this._docInterceptorService=t,this._threadCommentPanelService=n,this._docRenderController=r,this._univerInstanceService=i,this._threadCommentModel=c,this._interceptorViewModel(),this._initReRender()}_initReRender(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(e=>{var n;if(e){this._docRenderController.reRender(e.unitId);return}const t=(n=this._univerInstanceService.getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC))==null?void 0:n.getUnitId();t&&this._docRenderController.reRender(t)})),this.disposeWithMe(this._threadCommentModel.commentUpdate$.subscribe(e=>{e.type==="resolve"&&this._docRenderController.reRender(e.unitId)}))}_interceptorViewModel(){this._docInterceptorService.intercept(g.DOC_INTERCEPTOR_POINT.CUSTOM_DECORATION,{handler:(e,t,n)=>{if(!e)return n(e);const{unitId:r,index:i,customDecorations:c}=t,s=this._threadCommentPanelService.activeCommentId,{commentId:d,unitId:C}=s||{},v=c.find(S=>S.id===d),a=this._threadCommentModel.getComment(r,O,e.id);if(!a)return n({...e,show:!1});const f=v&&i>=v.startIndex&&i<=v.endIndex,_=C===r&&e.id===d;return n({...e,active:_||f,show:!a.resolved})}})}};j=Te([o.OnLifecycle(o.LifecycleStages.Starting,j),y(1,o.Inject(g.DocInterceptorService)),y(2,o.Inject(I.ThreadCommentPanelService)),y(3,o.Inject(z.DocRenderController)),y(4,o.IUniverInstanceService),y(5,o.Inject($.ThreadCommentModel))],j);var k=Object.defineProperty,Me=Object.getOwnPropertyDescriptor,De=(e,t,n)=>t in e?k(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ue=(e,t,n,r)=>{for(var i=r>1?void 0:r?Me(t,n):t,c=e.length-1,s;c>=0;c--)(s=e[c])&&(i=(r?s(t,n,i):s(i))||i);return r&&i&&k(t,n,i),i},K=(e,t)=>(n,r)=>t(n,r,e),ee=(e,t,n)=>De(e,typeof t!="symbol"?t+"":t,n);exports.UniverDocsThreadCommentUIPlugin=class extends o.Plugin{constructor(t={menu:{}},n,r){super(),this._config=t,this._injector=n,this._renderManagerSrv=r}onStarting(t){[[P,{useFactory:()=>this._injector.createInstance(P,this._config)}],[V],[D]].forEach(n=>{t.add(n)})}onRendered(){this._initRenderModule()}_initRenderModule(){[j].forEach(t=>{this._renderManagerSrv.registerRenderModule(o.UniverInstanceType.UNIVER_DOC,t)})}};ee(exports.UniverDocsThreadCommentUIPlugin,"pluginName",ie);ee(exports.UniverDocsThreadCommentUIPlugin,"type",o.UniverInstanceType.UNIVER_DOC);exports.UniverDocsThreadCommentUIPlugin=Ue([o.DependentOn(I.UniverThreadCommentUIPlugin),K(1,o.Inject(o.Injector)),K(2,M.IRenderManagerService)],exports.UniverDocsThreadCommentUIPlugin);exports.AddDocCommentComment=H;exports.DeleteDocCommentComment=W;exports.ShowCommentPanelOperation=x;exports.StartAddCommentOperation=L;
package/lib/es/index.js CHANGED
@@ -1,44 +1,42 @@
1
- var ve = Object.defineProperty;
2
- var _e = (e, t, n) => t in e ? ve(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
- var L = (e, t, n) => _e(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { CommandType as $, ICommandService as M, CustomDecorationType as pe, sequenceExecuteAsync as ge, Disposable as N, IUniverInstanceService as j, UniverInstanceType as p, UserManagerService as Se, sequenceExecute as Ie, OnLifecycle as W, LifecycleStages as H, DependentOn as Oe, Plugin as Me } from "@univerjs/core";
5
- import { Inject as C, Injector as ne } from "@wendellhu/redi";
6
- import { SetActiveCommentOperation as re, ThreadCommentPanelService as R, getDT as be, ThreadCommentPanel as De, UniverThreadCommentUIPlugin as Re } from "@univerjs/thread-comment-ui";
7
- import { IRenderManagerService as Z, DocumentEditArea as J } from "@univerjs/engine-render";
8
- import { ISidebarService as z, MenuGroup as xe, MenuItemType as ye, MenuPosition as Q, getMenuHiddenObservable as Te, ComponentManager as Pe, IMenuService as Ue } from "@univerjs/ui";
9
- import { addCustomDecorationBySelectionFactory as Ee, TextSelectionManagerService as G, getSelectionText as Ae, deleteCustomDecorationFactory as we, RichTextEditingMutation as Ve, DocSkeletonManagerService as $e, SetTextSelectionsOperation as Ne, DocInterceptorService as je, DOC_INTERCEPTOR_POINT as Be } from "@univerjs/docs";
10
- import { IThreadCommentDataSourceService as Le, AddCommentMutation as Fe, ThreadCommentModel as ie } from "@univerjs/thread-comment";
11
- import { useDependency as P, useObservable as F } from "@wendellhu/redi/react-bindings";
12
- import We, { forwardRef as oe, useRef as He, createElement as se, useMemo as k, useState as Ze, useEffect as ze } from "react";
13
- import { BehaviorSubject as Ge, Observable as ce, debounceTime as Ke } from "rxjs";
14
- import { DocBackScrollRenderController as qe, DocRenderController as Xe } from "@univerjs/docs-ui";
15
- const Ye = "DOC_THREAD_COMMENT_UI_PLUGIN", g = "default_doc";
16
- var u = function() {
17
- return u = Object.assign || function(e) {
1
+ var Se = Object.defineProperty;
2
+ var Oe = (e, t, n) => t in e ? Se(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
+ var Z = (e, t, n) => Oe(e, typeof t != "symbol" ? t + "" : t, n);
4
+ import { CommandType as x, ICommandService as b, CustomDecorationType as be, sequenceExecuteAsync as Me, Inject as h, Disposable as j, IUniverInstanceService as B, UniverInstanceType as g, UserManagerService as De, sequenceExecute as Re, useDependency as E, useObservable as K, OnLifecycle as G, LifecycleStages as X, Injector as te, DependentOn as Te, Plugin as xe } from "@univerjs/core";
5
+ import { SetActiveCommentOperation as ne, ThreadCommentPanelService as M, getDT as Pe, ThreadCommentPanel as Ue, UniverThreadCommentUIPlugin as ye } from "@univerjs/thread-comment-ui";
6
+ import { ITextSelectionRenderManager as Ee, IRenderManagerService as q, DocumentEditArea as Y } from "@univerjs/engine-render";
7
+ import { ISidebarService as L, MenuGroup as re, MenuItemType as ie, MenuPosition as oe, getMenuHiddenObservable as se, ComponentManager as Ae, IMenuService as Ne } from "@univerjs/ui";
8
+ import { addCustomDecorationBySelectionFactory as Ve, TextSelectionManagerService as F, getSelectionText as we, deleteCustomDecorationFactory as $e, RichTextEditingMutation as je, DocSkeletonManagerService as Be, SetTextSelectionsOperation as Le, DocInterceptorService as Fe, DOC_INTERCEPTOR_POINT as We } from "@univerjs/docs";
9
+ import { IThreadCommentDataSourceService as He, AddCommentCommand as Ze, ThreadCommentModel as ce } from "@univerjs/thread-comment";
10
+ import Ke, { forwardRef as de, useRef as ze, createElement as ae, useMemo as z, useState as Ge, useEffect as Xe } from "react";
11
+ import { BehaviorSubject as qe, Observable as me, debounceTime as le } from "rxjs";
12
+ import { DocBackScrollRenderController as Je, DocRenderController as Qe } from "@univerjs/docs-ui";
13
+ const Ye = "DOC_THREAD_COMMENT_UI_PLUGIN", _ = "default_doc";
14
+ var C = function() {
15
+ return C = Object.assign || function(e) {
18
16
  for (var t, n = 1, r = arguments.length; n < r; n++) {
19
17
  t = arguments[n];
20
18
  for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
21
19
  }
22
20
  return e;
23
- }, u.apply(this, arguments);
24
- }, Je = function(e, t) {
21
+ }, C.apply(this, arguments);
22
+ }, ke = function(e, t) {
25
23
  var n = {};
26
24
  for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]);
27
25
  if (e != null && typeof Object.getOwnPropertySymbols == "function")
28
26
  for (var i = 0, r = Object.getOwnPropertySymbols(e); i < r.length; i++)
29
27
  t.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[i]) && (n[r[i]] = e[r[i]]);
30
28
  return n;
31
- }, de = oe(function(e, t) {
32
- var n = e.icon, r = e.id, i = e.className, o = e.extend, s = Je(e, ["icon", "id", "className", "extend"]), d = "univerjs-icon univerjs-icon-".concat(r, " ").concat(i || "").trim(), m = He("_".concat(et()));
33
- return ae(n, "".concat(r), { defIds: n.defIds, idSuffix: m.current }, u({ ref: t, className: d }, s), o);
29
+ }, ue = de(function(e, t) {
30
+ var n = e.icon, r = e.id, i = e.className, o = e.extend, s = ke(e, ["icon", "id", "className", "extend"]), d = "univerjs-icon univerjs-icon-".concat(r, " ").concat(i || "").trim(), l = ze("_".concat(nt()));
31
+ return fe(n, "".concat(r), { defIds: n.defIds, idSuffix: l.current }, C({ ref: t, className: d }, s), o);
34
32
  });
35
- function ae(e, t, n, r, i) {
36
- return se(e.tag, u(u({ key: t }, Qe(e, n, i)), r), (ke(e, n).children || []).map(function(o, s) {
37
- return ae(o, "".concat(t, "-").concat(e.tag, "-").concat(s), n, void 0, i);
33
+ function fe(e, t, n, r, i) {
34
+ return ae(e.tag, C(C({ key: t }, et(e, n, i)), r), (tt(e, n).children || []).map(function(o, s) {
35
+ return fe(o, "".concat(t, "-").concat(e.tag, "-").concat(s), n, void 0, i);
38
36
  }));
39
37
  }
40
- function Qe(e, t, n) {
41
- var r = u({}, e.attrs);
38
+ function et(e, t, n) {
39
+ var r = C({}, e.attrs);
42
40
  n != null && n.colorChannel1 && r.fill === "colorChannel1" && (r.fill = n.colorChannel1);
43
41
  var i = t.defIds;
44
42
  return !i || i.length === 0 || (e.tag === "use" && r["xlink:href"] && (r["xlink:href"] = r["xlink:href"] + t.idSuffix), Object.entries(r).forEach(function(o) {
@@ -46,68 +44,68 @@ function Qe(e, t, n) {
46
44
  typeof d == "string" && (r[s] = d.replace(/url\(#(.*)\)/, "url(#$1".concat(t.idSuffix, ")")));
47
45
  })), r;
48
46
  }
49
- function ke(e, t) {
47
+ function tt(e, t) {
50
48
  var n, r = t.defIds;
51
- return !r || r.length === 0 ? e : e.tag === "defs" && (!((n = e.children) === null || n === void 0) && n.length) ? u(u({}, e), { children: e.children.map(function(i) {
52
- return typeof i.attrs.id == "string" && r && r.indexOf(i.attrs.id) > -1 ? u(u({}, i), { attrs: u(u({}, i.attrs), { id: i.attrs.id + t.idSuffix }) }) : i;
49
+ return !r || r.length === 0 ? e : e.tag === "defs" && (!((n = e.children) === null || n === void 0) && n.length) ? C(C({}, e), { children: e.children.map(function(i) {
50
+ return typeof i.attrs.id == "string" && r && r.indexOf(i.attrs.id) > -1 ? C(C({}, i), { attrs: C(C({}, i.attrs), { id: i.attrs.id + t.idSuffix }) }) : i;
53
51
  }) }) : e;
54
52
  }
55
- function et() {
53
+ function nt() {
56
54
  return Math.random().toString(36).substring(2, 8);
57
55
  }
58
- de.displayName = "UniverIcon";
59
- var tt = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 17 17", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521C5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345ZM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521C8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345ZM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521C11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345Z", fillRule: "evenodd", clipRule: "evenodd" } }, { tag: "path", attrs: { fill: "currentColor", d: "M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521 5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345zM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521 8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345zM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521 11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345z" } }, { tag: "path", attrs: { fill: "currentColor", d: "M1.84351 3.41861C1.84351 3.01861 2.15531 2.69434 2.53993 2.69434H14.9381C15.3228 2.69434 15.6346 3.01861 15.6346 3.41861V12.4611C15.6346 12.8612 15.3228 13.1854 14.9381 13.1854H8.82117L6.06643 14.6179C5.85054 14.7301 5.59416 14.7181 5.38884 14.5862C5.18352 14.4542 5.05855 14.2211 5.05855 13.9701V13.1854H2.53993C2.15531 13.1854 1.84351 12.8612 1.84351 12.4611L1.84351 3.41861ZM6.45141 12.7982L8.34531 12.0135C8.44201 11.9632 8.54864 11.9371 8.65676 11.9371H14.2417C14.3522 11.9371 14.4417 11.8475 14.4417 11.7371V4.14271C14.4417 4.03225 14.3522 3.94271 14.2417 3.94271H3.23636C3.12591 3.94271 3.03636 4.03225 3.03636 4.14271L3.03636 11.7371C3.03636 11.8475 3.12591 11.9371 3.23636 11.9371L5.75498 11.9371C6.1396 11.9371 6.45141 12.0611 6.45141 12.4611V12.7982Z", fillRule: "evenodd", clipRule: "evenodd" } }] }, me = oe(function(e, t) {
60
- return se(de, Object.assign({}, e, {
56
+ ue.displayName = "UniverIcon";
57
+ var rt = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 17 17", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521C5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345ZM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521C8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345ZM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521C11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345Z", fillRule: "evenodd", clipRule: "evenodd" } }, { tag: "path", attrs: { fill: "currentColor", d: "M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521 5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345zM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521 8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345zM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521 11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345z" } }, { tag: "path", attrs: { fill: "currentColor", d: "M1.84351 3.41861C1.84351 3.01861 2.15531 2.69434 2.53993 2.69434H14.9381C15.3228 2.69434 15.6346 3.01861 15.6346 3.41861V12.4611C15.6346 12.8612 15.3228 13.1854 14.9381 13.1854H8.82117L6.06643 14.6179C5.85054 14.7301 5.59416 14.7181 5.38884 14.5862C5.18352 14.4542 5.05855 14.2211 5.05855 13.9701V13.1854H2.53993C2.15531 13.1854 1.84351 12.8612 1.84351 12.4611L1.84351 3.41861ZM6.45141 12.7982L8.34531 12.0135C8.44201 11.9632 8.54864 11.9371 8.65676 11.9371H14.2417C14.3522 11.9371 14.4417 11.8475 14.4417 11.7371V4.14271C14.4417 4.03225 14.3522 3.94271 14.2417 3.94271H3.23636C3.12591 3.94271 3.03636 4.03225 3.03636 4.14271L3.03636 11.7371C3.03636 11.8475 3.12591 11.9371 3.23636 11.9371L5.75498 11.9371C6.1396 11.9371 6.45141 12.0611 6.45141 12.4611V12.7982Z", fillRule: "evenodd", clipRule: "evenodd" } }] }, Ce = de(function(e, t) {
58
+ return ae(ue, Object.assign({}, e, {
61
59
  id: "comment-single",
62
60
  ref: t,
63
- icon: tt
61
+ icon: rt
64
62
  }));
65
63
  });
66
- me.displayName = "CommentSingle";
67
- const le = {
64
+ Ce.displayName = "CommentSingle";
65
+ const he = {
68
66
  id: "docs.command.add-comment",
69
- type: $.COMMAND,
67
+ type: x.COMMAND,
70
68
  async handler(e, t) {
71
69
  if (!t)
72
70
  return !1;
73
- const { comment: n, unitId: r } = t, o = await e.get(Le).addComment(n), s = e.get(M), d = Ee(
71
+ const { comment: n, unitId: r } = t, o = await e.get(He).addComment(n), s = e.get(b), d = Ve(
74
72
  e,
75
73
  {
76
74
  id: o.id,
77
- type: pe.COMMENT
75
+ type: be.COMMENT
78
76
  }
79
77
  );
80
78
  if (d) {
81
- const m = {
82
- id: Fe.id,
79
+ const l = {
80
+ id: Ze.id,
83
81
  params: {
84
82
  unitId: r,
85
- subUnitId: g,
83
+ subUnitId: _,
86
84
  comment: o
87
85
  }
88
- }, a = {
89
- id: re.id,
86
+ }, u = {
87
+ id: ne.id,
90
88
  params: {
91
89
  unitId: r,
92
- subUnitId: g,
90
+ subUnitId: _,
93
91
  commentId: o.id
94
92
  }
95
93
  };
96
- return (await ge([m, d, a], s)).result;
94
+ return (await Me([l, d, u], s)).result;
97
95
  }
98
96
  return !1;
99
97
  }
100
98
  };
101
- var nt = Object.defineProperty, rt = Object.getOwnPropertyDescriptor, it = (e, t, n, r) => {
102
- for (var i = r > 1 ? void 0 : r ? rt(t, n) : t, o = e.length - 1, s; o >= 0; o--)
99
+ var it = Object.defineProperty, ot = Object.getOwnPropertyDescriptor, st = (e, t, n, r) => {
100
+ for (var i = r > 1 ? void 0 : r ? ot(t, n) : t, o = e.length - 1, s; o >= 0; o--)
103
101
  (s = e[o]) && (i = (r ? s(t, n, i) : s(i)) || i);
104
- return r && i && nt(t, n, i), i;
105
- }, ee = (e, t) => (n, r) => t(n, r, e);
106
- let O = class extends N {
102
+ return r && i && it(t, n, i), i;
103
+ }, k = (e, t) => (n, r) => t(n, r, e);
104
+ let O = class extends j {
107
105
  constructor(t, n) {
108
106
  super();
109
- L(this, "_addingComment$", new Ge(void 0));
110
- L(this, "addingComment$", this._addingComment$.asObservable());
107
+ Z(this, "_addingComment$", new qe(void 0));
108
+ Z(this, "addingComment$", this._addingComment$.asObservable());
111
109
  this._sidebarService = t, this._threadCommentPanelService = n, this.disposeWithMe(() => {
112
110
  this._addingComment$.complete();
113
111
  });
@@ -122,148 +120,167 @@ let O = class extends N {
122
120
  this._addingComment$.next(void 0);
123
121
  }
124
122
  };
125
- O = it([
126
- ee(0, z),
127
- ee(1, C(R))
123
+ O = st([
124
+ k(0, L),
125
+ k(1, h(M))
128
126
  ], O);
129
127
  const w = {
130
128
  id: "docs.operation.show-comment-panel",
131
- type: $.OPERATION,
129
+ type: x.OPERATION,
132
130
  handler(e, t) {
133
- const n = e.get(R), r = e.get(z);
131
+ const n = e.get(M), r = e.get(L);
134
132
  return n.panelVisible || (r.open({
135
133
  header: { title: "threadCommentUI.panel.title" },
136
- children: { label: q.componentKey },
134
+ children: { label: W.componentKey },
137
135
  width: 320,
138
136
  onClose: () => n.setPanelVisible(!1)
139
137
  }), n.setPanelVisible(!0)), t && n.setActiveComment(t == null ? void 0 : t.activeComment), !0;
140
138
  }
141
- }, K = {
139
+ }, ve = {
140
+ id: "docs.operation.toggle-comment-panel",
141
+ type: x.OPERATION,
142
+ handler(e) {
143
+ const t = e.get(M), n = e.get(L);
144
+ return t.panelVisible ? (n.close(), t.setPanelVisible(!1), t.setActiveComment(null)) : (n.open({
145
+ header: { title: "threadCommentUI.panel.title" },
146
+ children: { label: W.componentKey },
147
+ width: 320,
148
+ onClose: () => t.setPanelVisible(!1)
149
+ }), t.setPanelVisible(!0)), !0;
150
+ }
151
+ }, J = {
142
152
  id: "docs.operation.start-add-comment",
143
- type: $.OPERATION,
153
+ type: x.OPERATION,
144
154
  handler(e) {
145
- var v, x;
146
- const t = e.get(R), r = e.get(j).getCurrentUnitForType(p.UNIVER_DOC), i = e.get(G), o = e.get(Se), s = e.get(O), d = e.get(M), m = e.get(z), a = i.getActiveRange();
147
- if (!r || !a)
155
+ var P, D;
156
+ const t = e.get(M), r = e.get(B).getCurrentUnitForType(g.UNIVER_DOC), i = e.get(F), o = e.get(Ee), s = e.get(De), d = e.get(O), l = e.get(b), u = e.get(L), c = i.getActiveRange();
157
+ if (!r || !c)
148
158
  return !1;
149
- if (a.collapsed)
150
- return t.panelVisible ? (t.setPanelVisible(!1), m.close()) : d.executeCommand(w.id), !0;
151
- t.panelVisible || d.executeCommand(w.id);
152
- const f = r.getUnitId(), _ = Ae((x = (v = r.getBody()) == null ? void 0 : v.dataStream) != null ? x : "", a.startOffset, a.endOffset), h = g, l = "", c = {
159
+ if (c.collapsed)
160
+ return t.panelVisible ? (t.setPanelVisible(!1), u.close()) : l.executeCommand(w.id), !0;
161
+ t.panelVisible || l.executeCommand(w.id);
162
+ const f = r.getUnitId(), p = we((D = (P = r.getBody()) == null ? void 0 : P.dataStream) != null ? D : "", c.startOffset, c.endOffset), v = _, a = "", m = {
153
163
  unitId: f,
154
- subUnitId: h,
155
- id: l,
156
- ref: _,
157
- dT: be(),
158
- personId: o.getCurrentUser().userID,
164
+ subUnitId: v,
165
+ id: a,
166
+ ref: p,
167
+ dT: Pe(),
168
+ personId: s.getCurrentUser().userID,
159
169
  text: {
160
170
  dataStream: `\r
161
171
  `
162
172
  },
163
- startOffset: a.startOffset,
164
- endOffset: a.endOffset,
173
+ startOffset: c.startOffset,
174
+ endOffset: c.endOffset,
165
175
  collapsed: !0,
166
- threadId: l
176
+ threadId: a
167
177
  };
168
- return s.startAdd(c), t.setActiveComment({
178
+ return o.blurEditor(), d.startAdd(m), t.setActiveComment({
169
179
  unitId: f,
170
- subUnitId: h,
171
- commentId: l
180
+ subUnitId: v,
181
+ commentId: a
172
182
  }), !0;
173
183
  }
174
- }, ue = {
184
+ }, ge = {
175
185
  id: "docs.command.delete-comment",
176
- type: $.COMMAND,
186
+ type: x.COMMAND,
177
187
  async handler(e, t) {
178
188
  if (!t)
179
189
  return !1;
180
- const { commentId: n, unitId: r } = t, i = e.get(M), o = we(e, {
190
+ const { commentId: n, unitId: r } = t, i = e.get(b), o = $e(e, {
181
191
  id: n,
182
192
  unitId: r
183
193
  });
184
- return o ? (await Ie([o], i)).result : !1;
194
+ return o ? (await Re([o], i)).result : !1;
185
195
  }
186
- }, q = () => {
187
- var l;
188
- const e = P(j), t = k(() => e.getCurrentTypeOfUnit$(p.UNIVER_DOC), [e]), n = F(t), r = k(() => new ce((c) => c.next(g)), []), i = P(G), o = (l = F(i.textSelection$)) == null ? void 0 : l.textRanges[0], s = P(M), d = P(O), m = F(d.addingComment$), [a, f] = Ze([]);
189
- if (ze(() => {
190
- var X;
191
- const c = /* @__PURE__ */ new Set(), v = n == null ? void 0 : n.getCustomDecorations();
192
- f((X = v == null ? void 0 : v.map((S) => S.id).filter((S) => {
193
- const y = c.has(S);
194
- return c.add(S), !y;
195
- })) != null ? X : []);
196
- const x = s.onCommandExecuted((S) => {
197
- var y;
198
- if (S.id === Ve.id) {
199
- const Y = /* @__PURE__ */ new Set(), B = n == null ? void 0 : n.getCustomDecorations();
200
- f((y = B == null ? void 0 : B.map((T) => T.id).filter((T) => {
201
- const he = Y.has(T);
202
- return Y.add(T), !he;
203
- })) != null ? y : []);
196
+ }, W = () => {
197
+ const e = E(B), t = z(() => e.getCurrentTypeOfUnit$(g.UNIVER_DOC), [e]), n = K(t), r = z(() => new me((a) => a.next(_)), []), i = E(F), o = z(
198
+ () => i.textSelection$.pipe(le(16)),
199
+ [i.textSelection$]
200
+ );
201
+ K(o);
202
+ const s = E(b), d = E(O), l = K(d.addingComment$), [u, c] = Ge([]);
203
+ if (Xe(() => {
204
+ var D;
205
+ const a = /* @__PURE__ */ new Set(), m = n == null ? void 0 : n.getCustomDecorations();
206
+ c((D = m == null ? void 0 : m.map((I) => I.id).filter((I) => {
207
+ const U = a.has(I);
208
+ return a.add(I), !U;
209
+ })) != null ? D : []);
210
+ const P = s.onCommandExecuted((I) => {
211
+ var U;
212
+ if (I.id === je.id) {
213
+ const Q = /* @__PURE__ */ new Set(), H = n == null ? void 0 : n.getCustomDecorations();
214
+ c((U = H == null ? void 0 : H.map((y) => y.id).filter((y) => {
215
+ const Ie = Q.has(y);
216
+ return Q.add(y), !Ie;
217
+ })) != null ? U : []);
204
218
  }
205
219
  });
206
220
  return () => {
207
- x.dispose();
221
+ P.dispose();
208
222
  };
209
223
  }, [s, n]), !n)
210
224
  return null;
211
- const _ = o && o.endOffset === o.startOffset, h = n.getUnitId();
212
- return /* @__PURE__ */ We.createElement(
213
- De,
225
+ const f = i.getActiveRange(), p = !!(f && (f.endOffset === f.startOffset || f.segmentId)), v = n.getUnitId();
226
+ return /* @__PURE__ */ Ke.createElement(
227
+ Ue,
214
228
  {
215
- unitId: h,
229
+ unitId: v,
216
230
  subUnitId$: r,
217
- type: p.UNIVER_DOC,
231
+ type: g.UNIVER_DOC,
218
232
  onAdd: () => {
219
- s.executeCommand(K.id);
233
+ s.executeCommand(J.id);
220
234
  },
221
235
  getSubUnitName: () => "",
222
- disableAdd: _,
223
- tempComment: m,
224
- onAddComment: (c) => {
225
- if (!c.parentId) {
226
- const v = {
227
- unitId: h,
228
- range: m,
229
- comment: c
236
+ disableAdd: p,
237
+ tempComment: l,
238
+ onAddComment: (a) => {
239
+ if (!a.parentId) {
240
+ const m = {
241
+ unitId: v,
242
+ range: l,
243
+ comment: a
230
244
  };
231
- return s.executeCommand(le.id, v), d.endAdd(), !1;
245
+ return s.executeCommand(he.id, m), d.endAdd(), !1;
232
246
  }
233
247
  return !0;
234
248
  },
235
- onDeleteComment: (c) => {
236
- if (!c.parentId) {
237
- const v = {
238
- unitId: h,
239
- commentId: c.id
249
+ onDeleteComment: (a) => {
250
+ if (!a.parentId) {
251
+ const m = {
252
+ unitId: v,
253
+ commentId: a.id
240
254
  };
241
- return s.executeCommand(ue.id, v), !1;
255
+ return s.executeCommand(ge.id, m), !1;
242
256
  }
243
257
  return !0;
244
258
  },
245
- showComments: a
259
+ showComments: u
246
260
  }
247
261
  );
248
262
  };
249
- q.componentKey = "univer.doc.thread-comment-panel";
250
- const ot = (e) => {
251
- const n = e.get(Z).getCurrent(), r = n == null ? void 0 : n.with($e).getSkeleton(), i = r == null ? void 0 : r.getViewModel().getEditArea();
252
- return i === J.FOOTER || i === J.HEADER;
263
+ W.componentKey = "univer.doc.thread-comment-panel";
264
+ const ct = (e) => {
265
+ const t = e.get(q), n = e.get(F), r = t.getCurrent(), i = r == null ? void 0 : r.with(Be).getSkeleton(), o = i == null ? void 0 : i.getViewModel().getEditArea();
266
+ if (o === Y.FOOTER || o === Y.HEADER)
267
+ return !0;
268
+ const s = n.getActiveRange();
269
+ return !!(!s || s.collapsed);
253
270
  };
254
- function st(e) {
271
+ function dt(e) {
255
272
  return {
256
- id: K.id,
257
- group: xe.TOOLBAR_LAYOUT,
258
- type: ye.BUTTON,
273
+ id: J.id,
274
+ group: re.CONTEXT_MENU_DATA,
275
+ type: ie.BUTTON,
259
276
  icon: "CommentSingle",
260
277
  title: "threadCommentUI.panel.addComment",
261
278
  tooltip: "threadCommentUI.panel.addComment",
262
- positions: [Q.TOOLBAR_START, Q.CONTEXT_MENU],
263
- hidden$: Te(e, p.UNIVER_DOC),
264
- disabled$: new ce(function(t) {
265
- const r = e.get(G).textSelection$.pipe(Ke(16)).subscribe(() => {
266
- t.next(ot(e));
279
+ positions: [oe.CONTEXT_MENU],
280
+ hidden$: se(e, g.UNIVER_DOC),
281
+ disabled$: new me(function(t) {
282
+ const r = e.get(F).textSelection$.pipe(le(16)).subscribe(() => {
283
+ t.next(ct(e));
267
284
  });
268
285
  return () => {
269
286
  r.unsubscribe();
@@ -271,74 +288,93 @@ function st(e) {
271
288
  })
272
289
  };
273
290
  }
274
- var ct = Object.defineProperty, dt = Object.getOwnPropertyDescriptor, at = (e, t, n, r) => {
275
- for (var i = r > 1 ? void 0 : r ? dt(t, n) : t, o = e.length - 1, s; o >= 0; o--)
291
+ function at(e) {
292
+ return {
293
+ id: ve.id,
294
+ group: re.CONTEXT_MENU_DATA,
295
+ type: ie.BUTTON,
296
+ icon: "CommentSingle",
297
+ title: "threadCommentUI.panel.addComment",
298
+ tooltip: "threadCommentUI.panel.addComment",
299
+ positions: [oe.TOOLBAR_START],
300
+ hidden$: se(e, g.UNIVER_DOC)
301
+ };
302
+ }
303
+ var mt = Object.defineProperty, lt = Object.getOwnPropertyDescriptor, ut = (e, t, n, r) => {
304
+ for (var i = r > 1 ? void 0 : r ? lt(t, n) : t, o = e.length - 1, s; o >= 0; o--)
276
305
  (s = e[o]) && (i = (r ? s(t, n, i) : s(i)) || i);
277
- return r && i && ct(t, n, i), i;
278
- }, U = (e, t) => (n, r) => t(n, r, e);
279
- let D = class extends N {
306
+ return r && i && mt(t, n, i), i;
307
+ }, A = (e, t) => (n, r) => t(n, r, e);
308
+ let T = class extends j {
280
309
  constructor(e, t, n, r, i) {
281
310
  super(), this._config = e, this._commandService = t, this._menuService = n, this._injector = r, this._componentManager = i, this._initCommands(), this._initMenus(), this._initComponents();
282
311
  }
283
312
  _initCommands() {
284
313
  [
285
- le,
286
- ue,
314
+ he,
315
+ ge,
287
316
  w,
288
- K
317
+ J,
318
+ ve
289
319
  ].forEach((e) => {
290
320
  this.disposeWithMe(this._commandService.registerCommand(e));
291
321
  });
292
322
  }
293
323
  _initMenus() {
294
- [st].forEach((e) => {
324
+ [
325
+ dt,
326
+ at
327
+ ].forEach((e) => {
295
328
  this.disposeWithMe(this._menuService.addMenuItem(e(this._injector), this._config.menu));
296
329
  });
297
330
  }
298
331
  _initComponents() {
299
- [q].forEach((e) => {
332
+ [W].forEach((e) => {
300
333
  this.disposeWithMe(this._componentManager.register(e.componentKey, e));
301
- }), this.disposeWithMe(this._componentManager.register("CommentSingle", me));
334
+ }), this.disposeWithMe(this._componentManager.register("CommentSingle", Ce));
302
335
  }
303
336
  };
304
- D = at([
305
- W(H.Rendered, D),
306
- U(1, M),
307
- U(2, Ue),
308
- U(3, C(ne)),
309
- U(4, C(Pe))
310
- ], D);
311
- var mt = Object.defineProperty, lt = Object.getOwnPropertyDescriptor, ut = (e, t, n, r) => {
312
- for (var i = r > 1 ? void 0 : r ? lt(t, n) : t, o = e.length - 1, s; o >= 0; o--)
337
+ T = ut([
338
+ G(X.Rendered, T),
339
+ A(1, b),
340
+ A(2, Ne),
341
+ A(3, h(te)),
342
+ A(4, h(Ae))
343
+ ], T);
344
+ var ft = Object.defineProperty, Ct = Object.getOwnPropertyDescriptor, ht = (e, t, n, r) => {
345
+ for (var i = r > 1 ? void 0 : r ? Ct(t, n) : t, o = e.length - 1, s; o >= 0; o--)
313
346
  (s = e[o]) && (i = (r ? s(t, n, i) : s(i)) || i);
314
- return r && i && mt(t, n, i), i;
315
- }, I = (e, t) => (n, r) => t(n, r, e);
316
- let E = class extends N {
347
+ return r && i && ft(t, n, i), i;
348
+ }, S = (e, t) => (n, r) => t(n, r, e);
349
+ let N = class extends j {
317
350
  constructor(e, t, n, r, i, o) {
318
351
  super(), this._threadCommentPanelService = e, this._univerInstanceService = t, this._commandService = n, this._docThreadCommentService = r, this._renderManagerService = i, this._threadCommentModel = o, this._initSelectionChange(), this._initActiveCommandChange();
319
352
  }
320
353
  _initSelectionChange() {
354
+ let e;
321
355
  this.disposeWithMe(
322
- this._commandService.onCommandExecuted((e) => {
323
- var t, n, r, i;
324
- if (e.id === Ne.id) {
325
- const o = e.params, { unitId: s, ranges: d } = o, m = this._univerInstanceService.getUnit(s, p.UNIVER_DOC), a = d[0];
326
- if (a && m) {
327
- const { startOffset: f, endOffset: _, collapsed: h } = a;
328
- let l;
329
- if (h ? l = (n = (t = m.getBody()) == null ? void 0 : t.customDecorations) == null ? void 0 : n.find((c) => c.startIndex <= f && c.endIndex >= _ - 1) : l = (i = (r = m.getBody()) == null ? void 0 : r.customDecorations) == null ? void 0 : i.find((c) => c.startIndex <= f && c.endIndex >= _ - 1), l) {
330
- const c = this._threadCommentModel.getComment(s, g, l.id);
331
- c && !c.resolved && this._commandService.executeCommand(w.id, {
356
+ this._commandService.onCommandExecuted((t) => {
357
+ var n, r, i, o;
358
+ if (t.id === Le.id) {
359
+ const s = t.params, { unitId: d, ranges: l } = s, u = this._univerInstanceService.getUnit(d, g.UNIVER_DOC), c = l[0];
360
+ if ((e == null ? void 0 : e.startOffset) === (c == null ? void 0 : c.startOffset) && (e == null ? void 0 : e.endOffset) === (c == null ? void 0 : c.endOffset))
361
+ return;
362
+ if (e = c, c && u) {
363
+ const { startOffset: f, endOffset: p, collapsed: v } = c;
364
+ let a;
365
+ if (v ? a = (r = (n = u.getBody()) == null ? void 0 : n.customDecorations) == null ? void 0 : r.find((m) => m.startIndex <= f && m.endIndex >= p - 1) : a = (o = (i = u.getBody()) == null ? void 0 : i.customDecorations) == null ? void 0 : o.find((m) => m.startIndex <= f && m.endIndex >= p - 1), a) {
366
+ const m = this._threadCommentModel.getComment(d, _, a.id);
367
+ m && !m.resolved && this._commandService.executeCommand(w.id, {
332
368
  activeComment: {
333
- unitId: s,
334
- subUnitId: g,
335
- commentId: l.id
369
+ unitId: d,
370
+ subUnitId: _,
371
+ commentId: a.id
336
372
  }
337
373
  });
338
374
  return;
339
375
  }
340
376
  }
341
- this._commandService.executeCommand(re.id);
377
+ this._commandService.executeCommand(ne.id);
342
378
  }
343
379
  })
344
380
  );
@@ -349,7 +385,7 @@ let E = class extends N {
349
385
  if (e) {
350
386
  const i = this._univerInstanceService.getUnit(e.unitId);
351
387
  if (i) {
352
- const o = (t = this._renderManagerService.getRenderById(e.unitId)) == null ? void 0 : t.with(qe), s = (n = i.getCustomRanges()) == null ? void 0 : n.find((d) => d.rangeId === e.commentId);
388
+ const o = (t = this._renderManagerService.getRenderById(e.unitId)) == null ? void 0 : t.with(Je), s = (n = i.getCustomRanges()) == null ? void 0 : n.find((d) => d.rangeId === e.commentId);
353
389
  s && o && o.scrollToRange(e.unitId, {
354
390
  startOffset: s.startIndex,
355
391
  endOffset: s.endIndex,
@@ -361,21 +397,21 @@ let E = class extends N {
361
397
  }));
362
398
  }
363
399
  };
364
- E = ut([
365
- W(H.Rendered, E),
366
- I(0, C(R)),
367
- I(1, j),
368
- I(2, M),
369
- I(3, C(O)),
370
- I(4, Z),
371
- I(5, C(ie))
372
- ], E);
373
- var ft = Object.defineProperty, Ct = Object.getOwnPropertyDescriptor, ht = (e, t, n, r) => {
374
- for (var i = r > 1 ? void 0 : r ? Ct(t, n) : t, o = e.length - 1, s; o >= 0; o--)
400
+ N = ht([
401
+ G(X.Rendered, N),
402
+ S(0, h(M)),
403
+ S(1, B),
404
+ S(2, b),
405
+ S(3, h(O)),
406
+ S(4, q),
407
+ S(5, h(ce))
408
+ ], N);
409
+ var vt = Object.defineProperty, gt = Object.getOwnPropertyDescriptor, pt = (e, t, n, r) => {
410
+ for (var i = r > 1 ? void 0 : r ? gt(t, n) : t, o = e.length - 1, s; o >= 0; o--)
375
411
  (s = e[o]) && (i = (r ? s(t, n, i) : s(i)) || i);
376
- return r && i && ft(t, n, i), i;
377
- }, b = (e, t) => (n, r) => t(n, r, e);
378
- let A = class extends N {
412
+ return r && i && vt(t, n, i), i;
413
+ }, R = (e, t) => (n, r) => t(n, r, e);
414
+ let V = class extends j {
379
415
  constructor(e, t, n, r, i, o) {
380
416
  super(), this._context = e, this._docInterceptorService = t, this._threadCommentPanelService = n, this._docRenderController = r, this._univerInstanceService = i, this._threadCommentModel = o, this._interceptorViewModel(), this._initReRender();
381
417
  }
@@ -386,59 +422,59 @@ let A = class extends N {
386
422
  this._docRenderController.reRender(e.unitId);
387
423
  return;
388
424
  }
389
- const t = (n = this._univerInstanceService.getCurrentUnitForType(p.UNIVER_DOC)) == null ? void 0 : n.getUnitId();
425
+ const t = (n = this._univerInstanceService.getCurrentUnitForType(g.UNIVER_DOC)) == null ? void 0 : n.getUnitId();
390
426
  t && this._docRenderController.reRender(t);
391
427
  })), this.disposeWithMe(this._threadCommentModel.commentUpdate$.subscribe((e) => {
392
428
  e.type === "resolve" && this._docRenderController.reRender(e.unitId);
393
429
  }));
394
430
  }
395
431
  _interceptorViewModel() {
396
- this._docInterceptorService.intercept(Be.CUSTOM_DECORATION, {
432
+ this._docInterceptorService.intercept(We.CUSTOM_DECORATION, {
397
433
  handler: (e, t, n) => {
398
434
  if (!e)
399
435
  return n(e);
400
- const { unitId: r, index: i, customDecorations: o } = t, s = this._threadCommentPanelService.activeCommentId, { commentId: d, unitId: m } = s || {}, a = o.find((l) => l.id === d), f = this._threadCommentModel.getComment(r, g, e.id);
401
- if (!f)
436
+ const { unitId: r, index: i, customDecorations: o } = t, s = this._threadCommentPanelService.activeCommentId, { commentId: d, unitId: l } = s || {}, u = o.find((v) => v.id === d), c = this._threadCommentModel.getComment(r, _, e.id);
437
+ if (!c)
402
438
  return n({
403
439
  ...e,
404
440
  show: !1
405
441
  });
406
- const _ = a && i >= a.startIndex && i <= a.endIndex, h = m === r && e.id === d;
442
+ const f = u && i >= u.startIndex && i <= u.endIndex, p = l === r && e.id === d;
407
443
  return n({
408
444
  ...e,
409
- active: h || _,
410
- show: !f.resolved
445
+ active: p || f,
446
+ show: !c.resolved
411
447
  });
412
448
  }
413
449
  });
414
450
  }
415
451
  };
416
- A = ht([
417
- W(H.Starting, A),
418
- b(1, C(je)),
419
- b(2, C(R)),
420
- b(3, C(Xe)),
421
- b(4, j),
422
- b(5, C(ie))
423
- ], A);
424
- var fe = Object.defineProperty, vt = Object.getOwnPropertyDescriptor, _t = (e, t, n) => t in e ? fe(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, pt = (e, t, n, r) => {
425
- for (var i = r > 1 ? void 0 : r ? vt(t, n) : t, o = e.length - 1, s; o >= 0; o--)
452
+ V = pt([
453
+ G(X.Starting, V),
454
+ R(1, h(Fe)),
455
+ R(2, h(M)),
456
+ R(3, h(Qe)),
457
+ R(4, B),
458
+ R(5, h(ce))
459
+ ], V);
460
+ var pe = Object.defineProperty, _t = Object.getOwnPropertyDescriptor, It = (e, t, n) => t in e ? pe(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, St = (e, t, n, r) => {
461
+ for (var i = r > 1 ? void 0 : r ? _t(t, n) : t, o = e.length - 1, s; o >= 0; o--)
426
462
  (s = e[o]) && (i = (r ? s(t, n, i) : s(i)) || i);
427
- return r && i && fe(t, n, i), i;
428
- }, te = (e, t) => (n, r) => t(n, r, e), Ce = (e, t, n) => _t(e, typeof t != "symbol" ? t + "" : t, n);
429
- let V = class extends Me {
463
+ return r && i && pe(t, n, i), i;
464
+ }, ee = (e, t) => (n, r) => t(n, r, e), _e = (e, t, n) => It(e, typeof t != "symbol" ? t + "" : t, n);
465
+ let $ = class extends xe {
430
466
  constructor(e = { menu: {} }, t, n) {
431
467
  super(), this._config = e, this._injector = t, this._renderManagerSrv = n;
432
468
  }
433
469
  onStarting(e) {
434
470
  [
435
471
  [
436
- D,
472
+ T,
437
473
  {
438
- useFactory: () => this._injector.createInstance(D, this._config)
474
+ useFactory: () => this._injector.createInstance(T, this._config)
439
475
  }
440
476
  ],
441
- [E],
477
+ [N],
442
478
  [O]
443
479
  ].forEach((t) => {
444
480
  e.add(t);
@@ -448,22 +484,22 @@ let V = class extends Me {
448
484
  this._initRenderModule();
449
485
  }
450
486
  _initRenderModule() {
451
- [A].forEach((e) => {
452
- this._renderManagerSrv.registerRenderModule(p.UNIVER_DOC, e);
487
+ [V].forEach((e) => {
488
+ this._renderManagerSrv.registerRenderModule(g.UNIVER_DOC, e);
453
489
  });
454
490
  }
455
491
  };
456
- Ce(V, "pluginName", Ye);
457
- Ce(V, "type", p.UNIVER_DOC);
458
- V = pt([
459
- Oe(Re),
460
- te(1, C(ne)),
461
- te(2, Z)
462
- ], V);
492
+ _e($, "pluginName", Ye);
493
+ _e($, "type", g.UNIVER_DOC);
494
+ $ = St([
495
+ Te(ye),
496
+ ee(1, h(te)),
497
+ ee(2, q)
498
+ ], $);
463
499
  export {
464
- le as AddDocCommentComment,
465
- ue as DeleteDocCommentComment,
500
+ he as AddDocCommentComment,
501
+ ge as DeleteDocCommentComment,
466
502
  w as ShowCommentPanelOperation,
467
- K as StartAddCommentOperation,
468
- V as UniverDocsThreadCommentUIPlugin
503
+ J as StartAddCommentOperation,
504
+ $ as UniverDocsThreadCommentUIPlugin
469
505
  };
@@ -5,4 +5,5 @@ export interface IShowCommentPanelOperationParams {
5
5
  activeComment: ActiveCommentInfo;
6
6
  }
7
7
  export declare const ShowCommentPanelOperation: ICommand<IShowCommentPanelOperationParams>;
8
+ export declare const ToggleCommentPanelOperation: ICommand;
8
9
  export declare const StartAddCommentOperation: ICommand;
@@ -1,6 +1,5 @@
1
- import { Disposable, ICommandService } from '@univerjs/core';
1
+ import { Disposable, ICommandService, Injector } from '@univerjs/core';
2
2
  import { MenuConfig, ComponentManager, IMenuService } from '@univerjs/ui';
3
- import { Injector } from '@wendellhu/redi';
4
3
 
5
4
  export interface IDocThreadCommentUIConfig {
6
5
  menu: MenuConfig;
@@ -1,5 +1,6 @@
1
- import { IAccessor } from '@wendellhu/redi';
1
+ import { IAccessor } from '@univerjs/core';
2
2
  import { IMenuButtonItem } from '@univerjs/ui';
3
3
 
4
4
  export declare const shouldDisableAddComment: (accessor: IAccessor) => boolean;
5
5
  export declare function AddDocCommentMenuItemFactory(accessor: IAccessor): IMenuButtonItem;
6
+ export declare function ToolbarDocCommentMenuItemFactory(accessor: IAccessor): IMenuButtonItem;
@@ -1,5 +1,4 @@
1
- import { Plugin, UniverInstanceType } from '@univerjs/core';
2
- import { Injector } from '@wendellhu/redi';
1
+ import { Injector, Plugin, UniverInstanceType } from '@univerjs/core';
3
2
  import { IRenderManagerService } from '@univerjs/engine-render';
4
3
  import { IDocThreadCommentUIConfig } from './controllers/doc-thread-comment-ui.controller';
5
4
 
package/lib/umd/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(d,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("@univerjs/core"),require("@wendellhu/redi"),require("@univerjs/thread-comment-ui"),require("@univerjs/engine-render"),require("@univerjs/ui"),require("@univerjs/docs"),require("@univerjs/thread-comment"),require("@wendellhu/redi/react-bindings"),require("react"),require("rxjs"),require("@univerjs/docs-ui")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@wendellhu/redi","@univerjs/thread-comment-ui","@univerjs/engine-render","@univerjs/ui","@univerjs/docs","@univerjs/thread-comment","@wendellhu/redi/react-bindings","react","rxjs","@univerjs/docs-ui"],o):(d=typeof globalThis<"u"?globalThis:d||self,o(d.UniverDocsThreadCommentUi={},d.UniverCore,d["@wendellhu/redi"],d.UniverThreadCommentUi,d.UniverEngineRender,d.UniverUi,d.UniverDocs,d.UniverThreadComment,d["@wendellhu/redi/react-bindings"],d.React,d.rxjs,d.UniverDocsUi))})(this,function(d,o,u,_,P,p,h,w,D,S,A,G){"use strict";var ye=Object.defineProperty;var Ue=(d,o,u)=>o in d?ye(d,o,{enumerable:!0,configurable:!0,writable:!0,value:u}):d[o]=u;var z=(d,o,u)=>Ue(d,typeof o!="symbol"?o+"":o,u);const re="DOC_THREAD_COMMENT_UI_PLUGIN",T="default_doc";var C=function(){return C=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++){t=arguments[n];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e},C.apply(this,arguments)},ie=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},K=S.forwardRef(function(e,t){var n=e.icon,r=e.id,i=e.className,s=e.extend,c=ie(e,["icon","id","className","extend"]),m="univerjs-icon univerjs-icon-".concat(r," ").concat(i||"").trim(),v=S.useRef("_".concat(ce()));return X(n,"".concat(r),{defIds:n.defIds,idSuffix:v.current},C({ref:t,className:m},c),s)});function X(e,t,n,r,i){return S.createElement(e.tag,C(C({key:t},oe(e,n,i)),r),(se(e,n).children||[]).map(function(s,c){return X(s,"".concat(t,"-").concat(e.tag,"-").concat(c),n,void 0,i)}))}function oe(e,t,n){var r=C({},e.attrs);n!=null&&n.colorChannel1&&r.fill==="colorChannel1"&&(r.fill=n.colorChannel1);var i=t.defIds;return!i||i.length===0||(e.tag==="use"&&r["xlink:href"]&&(r["xlink:href"]=r["xlink:href"]+t.idSuffix),Object.entries(r).forEach(function(s){var c=s[0],m=s[1];typeof m=="string"&&(r[c]=m.replace(/url\(#(.*)\)/,"url(#$1".concat(t.idSuffix,")")))})),r}function se(e,t){var n,r=t.defIds;return!r||r.length===0?e:e.tag==="defs"&&(!((n=e.children)===null||n===void 0)&&n.length)?C(C({},e),{children:e.children.map(function(i){return typeof i.attrs.id=="string"&&r&&r.indexOf(i.attrs.id)>-1?C(C({},i),{attrs:C(C({},i.attrs),{id:i.attrs.id+t.idSuffix})}):i})}):e}function ce(){return Math.random().toString(36).substring(2,8)}K.displayName="UniverIcon";var de={tag:"svg",attrs:{fill:"none",viewBox:"0 0 17 17",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521C5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345ZM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521C8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345ZM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521C11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345Z",fillRule:"evenodd",clipRule:"evenodd"}},{tag:"path",attrs:{fill:"currentColor",d:"M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521 5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345zM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521 8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345zM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521 11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345z"}},{tag:"path",attrs:{fill:"currentColor",d:"M1.84351 3.41861C1.84351 3.01861 2.15531 2.69434 2.53993 2.69434H14.9381C15.3228 2.69434 15.6346 3.01861 15.6346 3.41861V12.4611C15.6346 12.8612 15.3228 13.1854 14.9381 13.1854H8.82117L6.06643 14.6179C5.85054 14.7301 5.59416 14.7181 5.38884 14.5862C5.18352 14.4542 5.05855 14.2211 5.05855 13.9701V13.1854H2.53993C2.15531 13.1854 1.84351 12.8612 1.84351 12.4611L1.84351 3.41861ZM6.45141 12.7982L8.34531 12.0135C8.44201 11.9632 8.54864 11.9371 8.65676 11.9371H14.2417C14.3522 11.9371 14.4417 11.8475 14.4417 11.7371V4.14271C14.4417 4.03225 14.3522 3.94271 14.2417 3.94271H3.23636C3.12591 3.94271 3.03636 4.03225 3.03636 4.14271L3.03636 11.7371C3.03636 11.8475 3.12591 11.9371 3.23636 11.9371L5.75498 11.9371C6.1396 11.9371 6.45141 12.0611 6.45141 12.4611V12.7982Z",fillRule:"evenodd",clipRule:"evenodd"}}]},Y=S.forwardRef(function(e,t){return S.createElement(K,Object.assign({},e,{id:"comment-single",ref:t,icon:de}))});Y.displayName="CommentSingle";const W={id:"docs.command.add-comment",type:o.CommandType.COMMAND,async handler(e,t){if(!t)return!1;const{comment:n,unitId:r}=t,s=await e.get(w.IThreadCommentDataSourceService).addComment(n),c=e.get(o.ICommandService),m=h.addCustomDecorationBySelectionFactory(e,{id:s.id,type:o.CustomDecorationType.COMMENT});if(m){const v={id:w.AddCommentMutation.id,params:{unitId:r,subUnitId:T,comment:s}},l={id:_.SetActiveCommentOperation.id,params:{unitId:r,subUnitId:T,commentId:s.id}};return(await o.sequenceExecuteAsync([v,m,l],c)).result}return!1}};var ae=Object.defineProperty,me=Object.getOwnPropertyDescriptor,ue=(e,t,n,r)=>{for(var i=r>1?void 0:r?me(t,n):t,s=e.length-1,c;s>=0;s--)(c=e[s])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&ae(t,n,i),i},J=(e,t)=>(n,r)=>t(n,r,e);let b=class extends o.Disposable{constructor(t,n){super();z(this,"_addingComment$",new A.BehaviorSubject(void 0));z(this,"addingComment$",this._addingComment$.asObservable());this._sidebarService=t,this._threadCommentPanelService=n,this.disposeWithMe(()=>{this._addingComment$.complete()})}get addingComment(){return this._addingComment$.getValue()}startAdd(t){this._addingComment$.next(t)}endAdd(){this._addingComment$.next(void 0)}};b=ue([J(0,p.ISidebarService),J(1,u.Inject(_.ThreadCommentPanelService))],b);const j={id:"docs.operation.show-comment-panel",type:o.CommandType.OPERATION,handler(e,t){const n=e.get(_.ThreadCommentPanelService),r=e.get(p.ISidebarService);return n.panelVisible||(r.open({header:{title:"threadCommentUI.panel.title"},children:{label:B.componentKey},width:320,onClose:()=>n.setPanelVisible(!1)}),n.setPanelVisible(!0)),t&&n.setActiveComment(t==null?void 0:t.activeComment),!0}},E={id:"docs.operation.start-add-comment",type:o.CommandType.OPERATION,handler(e){var O,L;const t=e.get(_.ThreadCommentPanelService),r=e.get(o.IUniverInstanceService).getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC),i=e.get(h.TextSelectionManagerService),s=e.get(o.UserManagerService),c=e.get(b),m=e.get(o.ICommandService),v=e.get(p.ISidebarService),l=i.getActiveRange();if(!r||!l)return!1;if(l.collapsed)return t.panelVisible?(t.setPanelVisible(!1),v.close()):m.executeCommand(j.id),!0;t.panelVisible||m.executeCommand(j.id);const I=r.getUnitId(),M=h.getSelectionText((L=(O=r.getBody())==null?void 0:O.dataStream)!=null?L:"",l.startOffset,l.endOffset),g=T,f="",a={unitId:I,subUnitId:g,id:f,ref:M,dT:_.getDT(),personId:s.getCurrentUser().userID,text:{dataStream:`\r
2
- `},startOffset:l.startOffset,endOffset:l.endOffset,collapsed:!0,threadId:f};return c.startAdd(a),t.setActiveComment({unitId:I,subUnitId:g,commentId:f}),!0}},H={id:"docs.command.delete-comment",type:o.CommandType.COMMAND,async handler(e,t){if(!t)return!1;const{commentId:n,unitId:r}=t,i=e.get(o.ICommandService),s=h.deleteCustomDecorationFactory(e,{id:n,unitId:r});return s?(await o.sequenceExecute([s],i)).result:!1}},B=()=>{var f;const e=D.useDependency(o.IUniverInstanceService),t=S.useMemo(()=>e.getCurrentTypeOfUnit$(o.UniverInstanceType.UNIVER_DOC),[e]),n=D.useObservable(t),r=S.useMemo(()=>new A.Observable(a=>a.next(T)),[]),i=D.useDependency(h.TextSelectionManagerService),s=(f=D.useObservable(i.textSelection$))==null?void 0:f.textRanges[0],c=D.useDependency(o.ICommandService),m=D.useDependency(b),v=D.useObservable(m.addingComment$),[l,I]=S.useState([]);if(S.useEffect(()=>{var te;const a=new Set,O=n==null?void 0:n.getCustomDecorations();I((te=O==null?void 0:O.map(U=>U.id).filter(U=>{const q=a.has(U);return a.add(U),!q}))!=null?te:[]);const L=c.onCommandExecuted(U=>{var q;if(U.id===h.RichTextEditingMutation.id){const ne=new Set,Z=n==null?void 0:n.getCustomDecorations();I((q=Z==null?void 0:Z.map(F=>F.id).filter(F=>{const be=ne.has(F);return ne.add(F),!be}))!=null?q:[])}});return()=>{L.dispose()}},[c,n]),!n)return null;const M=s&&s.endOffset===s.startOffset,g=n.getUnitId();return S.createElement(_.ThreadCommentPanel,{unitId:g,subUnitId$:r,type:o.UniverInstanceType.UNIVER_DOC,onAdd:()=>{c.executeCommand(E.id)},getSubUnitName:()=>"",disableAdd:M,tempComment:v,onAddComment:a=>{if(!a.parentId){const O={unitId:g,range:v,comment:a};return c.executeCommand(W.id,O),m.endAdd(),!1}return!0},onDeleteComment:a=>{if(!a.parentId){const O={unitId:g,commentId:a.id};return c.executeCommand(H.id,O),!1}return!0},showComments:l})};B.componentKey="univer.doc.thread-comment-panel";const le=e=>{const n=e.get(P.IRenderManagerService).getCurrent(),r=n==null?void 0:n.with(h.DocSkeletonManagerService).getSkeleton(),i=r==null?void 0:r.getViewModel().getEditArea();return i===P.DocumentEditArea.FOOTER||i===P.DocumentEditArea.HEADER};function ve(e){return{id:E.id,group:p.MenuGroup.TOOLBAR_LAYOUT,type:p.MenuItemType.BUTTON,icon:"CommentSingle",title:"threadCommentUI.panel.addComment",tooltip:"threadCommentUI.panel.addComment",positions:[p.MenuPosition.TOOLBAR_START,p.MenuPosition.CONTEXT_MENU],hidden$:p.getMenuHiddenObservable(e,o.UniverInstanceType.UNIVER_DOC),disabled$:new A.Observable(function(t){const r=e.get(h.TextSelectionManagerService).textSelection$.pipe(A.debounceTime(16)).subscribe(()=>{t.next(le(e))});return()=>{r.unsubscribe()}})}}var fe=Object.defineProperty,Ce=Object.getOwnPropertyDescriptor,he=(e,t,n,r)=>{for(var i=r>1?void 0:r?Ce(t,n):t,s=e.length-1,c;s>=0;s--)(c=e[s])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&fe(t,n,i),i},V=(e,t)=>(n,r)=>t(n,r,e);let x=class extends o.Disposable{constructor(e,t,n,r,i){super(),this._config=e,this._commandService=t,this._menuService=n,this._injector=r,this._componentManager=i,this._initCommands(),this._initMenus(),this._initComponents()}_initCommands(){[W,H,j,E].forEach(e=>{this.disposeWithMe(this._commandService.registerCommand(e))})}_initMenus(){[ve].forEach(e=>{this.disposeWithMe(this._menuService.addMenuItem(e(this._injector),this._config.menu))})}_initComponents(){[B].forEach(e=>{this.disposeWithMe(this._componentManager.register(e.componentKey,e))}),this.disposeWithMe(this._componentManager.register("CommentSingle",Y))}};x=he([o.OnLifecycle(o.LifecycleStages.Rendered,x),V(1,o.ICommandService),V(2,p.IMenuService),V(3,u.Inject(u.Injector)),V(4,u.Inject(p.ComponentManager))],x);var Ie=Object.defineProperty,_e=Object.getOwnPropertyDescriptor,pe=(e,t,n,r)=>{for(var i=r>1?void 0:r?_e(t,n):t,s=e.length-1,c;s>=0;s--)(c=e[s])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&Ie(t,n,i),i},y=(e,t)=>(n,r)=>t(n,r,e);let $=class extends o.Disposable{constructor(e,t,n,r,i,s){super(),this._threadCommentPanelService=e,this._univerInstanceService=t,this._commandService=n,this._docThreadCommentService=r,this._renderManagerService=i,this._threadCommentModel=s,this._initSelectionChange(),this._initActiveCommandChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var t,n,r,i;if(e.id===h.SetTextSelectionsOperation.id){const s=e.params,{unitId:c,ranges:m}=s,v=this._univerInstanceService.getUnit(c,o.UniverInstanceType.UNIVER_DOC),l=m[0];if(l&&v){const{startOffset:I,endOffset:M,collapsed:g}=l;let f;if(g?f=(n=(t=v.getBody())==null?void 0:t.customDecorations)==null?void 0:n.find(a=>a.startIndex<=I&&a.endIndex>=M-1):f=(i=(r=v.getBody())==null?void 0:r.customDecorations)==null?void 0:i.find(a=>a.startIndex<=I&&a.endIndex>=M-1),f){const a=this._threadCommentModel.getComment(c,T,f.id);a&&!a.resolved&&this._commandService.executeCommand(j.id,{activeComment:{unitId:c,subUnitId:T,commentId:f.id}});return}}this._commandService.executeCommand(_.SetActiveCommentOperation.id)}}))}_initActiveCommandChange(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(e=>{var t,n,r;if(e){const i=this._univerInstanceService.getUnit(e.unitId);if(i){const s=(t=this._renderManagerService.getRenderById(e.unitId))==null?void 0:t.with(G.DocBackScrollRenderController),c=(n=i.getCustomRanges())==null?void 0:n.find(m=>m.rangeId===e.commentId);c&&s&&s.scrollToRange(e.unitId,{startOffset:c.startIndex,endOffset:c.endIndex,collapsed:!1})}}(!e||e.commentId!==((r=this._docThreadCommentService.addingComment)==null?void 0:r.id))&&this._docThreadCommentService.endAdd()}))}};$=pe([o.OnLifecycle(o.LifecycleStages.Rendered,$),y(0,u.Inject(_.ThreadCommentPanelService)),y(1,o.IUniverInstanceService),y(2,o.ICommandService),y(3,u.Inject(b)),y(4,P.IRenderManagerService),y(5,u.Inject(w.ThreadCommentModel))],$);var Se=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,Oe=(e,t,n,r)=>{for(var i=r>1?void 0:r?ge(t,n):t,s=e.length-1,c;s>=0;s--)(c=e[s])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&Se(t,n,i),i},R=(e,t)=>(n,r)=>t(n,r,e);let N=class extends o.Disposable{constructor(e,t,n,r,i,s){super(),this._context=e,this._docInterceptorService=t,this._threadCommentPanelService=n,this._docRenderController=r,this._univerInstanceService=i,this._threadCommentModel=s,this._interceptorViewModel(),this._initReRender()}_initReRender(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(e=>{var n;if(e){this._docRenderController.reRender(e.unitId);return}const t=(n=this._univerInstanceService.getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC))==null?void 0:n.getUnitId();t&&this._docRenderController.reRender(t)})),this.disposeWithMe(this._threadCommentModel.commentUpdate$.subscribe(e=>{e.type==="resolve"&&this._docRenderController.reRender(e.unitId)}))}_interceptorViewModel(){this._docInterceptorService.intercept(h.DOC_INTERCEPTOR_POINT.CUSTOM_DECORATION,{handler:(e,t,n)=>{if(!e)return n(e);const{unitId:r,index:i,customDecorations:s}=t,c=this._threadCommentPanelService.activeCommentId,{commentId:m,unitId:v}=c||{},l=s.find(f=>f.id===m),I=this._threadCommentModel.getComment(r,T,e.id);if(!I)return n({...e,show:!1});const M=l&&i>=l.startIndex&&i<=l.endIndex,g=v===r&&e.id===m;return n({...e,active:g||M,show:!I.resolved})}})}};N=Oe([o.OnLifecycle(o.LifecycleStages.Starting,N),R(1,u.Inject(h.DocInterceptorService)),R(2,u.Inject(_.ThreadCommentPanelService)),R(3,u.Inject(G.DocRenderController)),R(4,o.IUniverInstanceService),R(5,u.Inject(w.ThreadCommentModel))],N);var Q=Object.defineProperty,Me=Object.getOwnPropertyDescriptor,De=(e,t,n)=>t in e?Q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Te=(e,t,n,r)=>{for(var i=r>1?void 0:r?Me(t,n):t,s=e.length-1,c;s>=0;s--)(c=e[s])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&Q(t,n,i),i},k=(e,t)=>(n,r)=>t(n,r,e),ee=(e,t,n)=>De(e,typeof t!="symbol"?t+"":t,n);d.UniverDocsThreadCommentUIPlugin=class extends o.Plugin{constructor(t={menu:{}},n,r){super(),this._config=t,this._injector=n,this._renderManagerSrv=r}onStarting(t){[[x,{useFactory:()=>this._injector.createInstance(x,this._config)}],[$],[b]].forEach(n=>{t.add(n)})}onRendered(){this._initRenderModule()}_initRenderModule(){[N].forEach(t=>{this._renderManagerSrv.registerRenderModule(o.UniverInstanceType.UNIVER_DOC,t)})}},ee(d.UniverDocsThreadCommentUIPlugin,"pluginName",re),ee(d.UniverDocsThreadCommentUIPlugin,"type",o.UniverInstanceType.UNIVER_DOC),d.UniverDocsThreadCommentUIPlugin=Te([o.DependentOn(_.UniverThreadCommentUIPlugin),k(1,u.Inject(u.Injector)),k(2,P.IRenderManagerService)],d.UniverDocsThreadCommentUIPlugin),d.AddDocCommentComment=W,d.DeleteDocCommentComment=H,d.ShowCommentPanelOperation=j,d.StartAddCommentOperation=E,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
1
+ (function(d,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("@univerjs/core"),require("@univerjs/thread-comment-ui"),require("@univerjs/engine-render"),require("@univerjs/ui"),require("@univerjs/docs"),require("@univerjs/thread-comment"),require("react"),require("rxjs"),require("@univerjs/docs-ui")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/thread-comment-ui","@univerjs/engine-render","@univerjs/ui","@univerjs/docs","@univerjs/thread-comment","react","rxjs","@univerjs/docs-ui"],o):(d=typeof globalThis<"u"?globalThis:d||self,o(d.UniverDocsThreadCommentUi={},d.UniverCore,d.UniverThreadCommentUi,d.UniverEngineRender,d.UniverUi,d.UniverDocs,d.UniverThreadComment,d.React,d.rxjs,d.UniverDocsUi))})(this,function(d,o,v,M,f,p,E,S,y,G){"use strict";var Ue=Object.defineProperty;var ye=(d,o,v)=>o in d?Ue(d,o,{enumerable:!0,configurable:!0,writable:!0,value:v}):d[o]=v;var Z=(d,o,v)=>ye(d,typeof o!="symbol"?o+"":o,v);const ne="DOC_THREAD_COMMENT_UI_PLUGIN",T="default_doc";var I=function(){return I=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++){t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},I.apply(this,arguments)},ie=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]]);return n},K=S.forwardRef(function(e,t){var n=e.icon,i=e.id,r=e.className,s=e.extend,a=ie(e,["icon","id","className","extend"]),m="univerjs-icon univerjs-icon-".concat(i," ").concat(r||"").trim(),C=S.useRef("_".concat(se()));return z(n,"".concat(i),{defIds:n.defIds,idSuffix:C.current},I({ref:t,className:m},a),s)});function z(e,t,n,i,r){return S.createElement(e.tag,I(I({key:t},re(e,n,r)),i),(oe(e,n).children||[]).map(function(s,a){return z(s,"".concat(t,"-").concat(e.tag,"-").concat(a),n,void 0,r)}))}function re(e,t,n){var i=I({},e.attrs);n!=null&&n.colorChannel1&&i.fill==="colorChannel1"&&(i.fill=n.colorChannel1);var r=t.defIds;return!r||r.length===0||(e.tag==="use"&&i["xlink:href"]&&(i["xlink:href"]=i["xlink:href"]+t.idSuffix),Object.entries(i).forEach(function(s){var a=s[0],m=s[1];typeof m=="string"&&(i[a]=m.replace(/url\(#(.*)\)/,"url(#$1".concat(t.idSuffix,")")))})),i}function oe(e,t){var n,i=t.defIds;return!i||i.length===0?e:e.tag==="defs"&&(!((n=e.children)===null||n===void 0)&&n.length)?I(I({},e),{children:e.children.map(function(r){return typeof r.attrs.id=="string"&&i&&i.indexOf(r.attrs.id)>-1?I(I({},r),{attrs:I(I({},r.attrs),{id:r.attrs.id+t.idSuffix})}):r})}):e}function se(){return Math.random().toString(36).substring(2,8)}K.displayName="UniverIcon";var ae={tag:"svg",attrs:{fill:"none",viewBox:"0 0 17 17",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521C5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345ZM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521C8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345ZM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521C11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345Z",fillRule:"evenodd",clipRule:"evenodd"}},{tag:"path",attrs:{fill:"currentColor",d:"M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521 5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345zM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521 8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345zM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521 11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345z"}},{tag:"path",attrs:{fill:"currentColor",d:"M1.84351 3.41861C1.84351 3.01861 2.15531 2.69434 2.53993 2.69434H14.9381C15.3228 2.69434 15.6346 3.01861 15.6346 3.41861V12.4611C15.6346 12.8612 15.3228 13.1854 14.9381 13.1854H8.82117L6.06643 14.6179C5.85054 14.7301 5.59416 14.7181 5.38884 14.5862C5.18352 14.4542 5.05855 14.2211 5.05855 13.9701V13.1854H2.53993C2.15531 13.1854 1.84351 12.8612 1.84351 12.4611L1.84351 3.41861ZM6.45141 12.7982L8.34531 12.0135C8.44201 11.9632 8.54864 11.9371 8.65676 11.9371H14.2417C14.3522 11.9371 14.4417 11.8475 14.4417 11.7371V4.14271C14.4417 4.03225 14.3522 3.94271 14.2417 3.94271H3.23636C3.12591 3.94271 3.03636 4.03225 3.03636 4.14271L3.03636 11.7371C3.03636 11.8475 3.12591 11.9371 3.23636 11.9371L5.75498 11.9371C6.1396 11.9371 6.45141 12.0611 6.45141 12.4611V12.7982Z",fillRule:"evenodd",clipRule:"evenodd"}}]},X=S.forwardRef(function(e,t){return S.createElement(K,Object.assign({},e,{id:"comment-single",ref:t,icon:ae}))});X.displayName="CommentSingle";const F={id:"docs.command.add-comment",type:o.CommandType.COMMAND,async handler(e,t){if(!t)return!1;const{comment:n,unitId:i}=t,s=await e.get(E.IThreadCommentDataSourceService).addComment(n),a=e.get(o.ICommandService),m=p.addCustomDecorationBySelectionFactory(e,{id:s.id,type:o.CustomDecorationType.COMMENT});if(m){const C={id:E.AddCommentCommand.id,params:{unitId:i,subUnitId:T,comment:s}},h={id:v.SetActiveCommentOperation.id,params:{unitId:i,subUnitId:T,commentId:s.id}};return(await o.sequenceExecuteAsync([C,m,h],a)).result}return!1}};var de=Object.defineProperty,ce=Object.getOwnPropertyDescriptor,me=(e,t,n,i)=>{for(var r=i>1?void 0:i?ce(t,n):t,s=e.length-1,a;s>=0;s--)(a=e[s])&&(r=(i?a(t,n,r):a(r))||r);return i&&r&&de(t,n,r),r},J=(e,t)=>(n,i)=>t(n,i,e);let b=class extends o.Disposable{constructor(t,n){super();Z(this,"_addingComment$",new y.BehaviorSubject(void 0));Z(this,"addingComment$",this._addingComment$.asObservable());this._sidebarService=t,this._threadCommentPanelService=n,this.disposeWithMe(()=>{this._addingComment$.complete()})}get addingComment(){return this._addingComment$.getValue()}startAdd(t){this._addingComment$.next(t)}endAdd(){this._addingComment$.next(void 0)}};b=me([J(0,f.ISidebarService),J(1,o.Inject(v.ThreadCommentPanelService))],b);const P={id:"docs.operation.show-comment-panel",type:o.CommandType.OPERATION,handler(e,t){const n=e.get(v.ThreadCommentPanelService),i=e.get(f.ISidebarService);return n.panelVisible||(i.open({header:{title:"threadCommentUI.panel.title"},children:{label:w.componentKey},width:320,onClose:()=>n.setPanelVisible(!1)}),n.setPanelVisible(!0)),t&&n.setActiveComment(t==null?void 0:t.activeComment),!0}},Q={id:"docs.operation.toggle-comment-panel",type:o.CommandType.OPERATION,handler(e){const t=e.get(v.ThreadCommentPanelService),n=e.get(f.ISidebarService);return t.panelVisible?(n.close(),t.setPanelVisible(!1),t.setActiveComment(null)):(n.open({header:{title:"threadCommentUI.panel.title"},children:{label:w.componentKey},width:320,onClose:()=>t.setPanelVisible(!1)}),t.setPanelVisible(!0)),!0}},A={id:"docs.operation.start-add-comment",type:o.CommandType.OPERATION,handler(e){var L,j;const t=e.get(v.ThreadCommentPanelService),i=e.get(o.IUniverInstanceService).getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC),r=e.get(p.TextSelectionManagerService),s=e.get(M.ITextSelectionRenderManager),a=e.get(o.UserManagerService),m=e.get(b),C=e.get(o.ICommandService),h=e.get(f.ISidebarService),c=r.getActiveRange();if(!i||!c)return!1;if(c.collapsed)return t.panelVisible?(t.setPanelVisible(!1),h.close()):C.executeCommand(P.id),!0;t.panelVisible||C.executeCommand(P.id);const g=i.getUnitId(),O=p.getSelectionText((j=(L=i.getBody())==null?void 0:L.dataStream)!=null?j:"",c.startOffset,c.endOffset),_=T,l="",u={unitId:g,subUnitId:_,id:l,ref:O,dT:v.getDT(),personId:a.getCurrentUser().userID,text:{dataStream:`\r
2
+ `},startOffset:c.startOffset,endOffset:c.endOffset,collapsed:!0,threadId:l};return s.blurEditor(),m.startAdd(u),t.setActiveComment({unitId:g,subUnitId:_,commentId:l}),!0}},H={id:"docs.command.delete-comment",type:o.CommandType.COMMAND,async handler(e,t){if(!t)return!1;const{commentId:n,unitId:i}=t,r=e.get(o.ICommandService),s=p.deleteCustomDecorationFactory(e,{id:n,unitId:i});return s?(await o.sequenceExecute([s],r)).result:!1}},w=()=>{const e=o.useDependency(o.IUniverInstanceService),t=S.useMemo(()=>e.getCurrentTypeOfUnit$(o.UniverInstanceType.UNIVER_DOC),[e]),n=o.useObservable(t),i=S.useMemo(()=>new y.Observable(l=>l.next(T)),[]),r=o.useDependency(p.TextSelectionManagerService),s=S.useMemo(()=>r.textSelection$.pipe(y.debounceTime(16)),[r.textSelection$]);o.useObservable(s);const a=o.useDependency(o.ICommandService),m=o.useDependency(b),C=o.useObservable(m.addingComment$),[h,c]=S.useState([]);if(S.useEffect(()=>{var j;const l=new Set,u=n==null?void 0:n.getCustomDecorations();c((j=u==null?void 0:u.map(U=>U.id).filter(U=>{const B=l.has(U);return l.add(U),!B}))!=null?j:[]);const L=a.onCommandExecuted(U=>{var B;if(U.id===p.RichTextEditingMutation.id){const te=new Set,W=n==null?void 0:n.getCustomDecorations();c((B=W==null?void 0:W.map(q=>q.id).filter(q=>{const De=te.has(q);return te.add(q),!De}))!=null?B:[])}});return()=>{L.dispose()}},[a,n]),!n)return null;const g=r.getActiveRange(),O=!!(g&&(g.endOffset===g.startOffset||g.segmentId)),_=n.getUnitId();return S.createElement(v.ThreadCommentPanel,{unitId:_,subUnitId$:i,type:o.UniverInstanceType.UNIVER_DOC,onAdd:()=>{a.executeCommand(A.id)},getSubUnitName:()=>"",disableAdd:O,tempComment:C,onAddComment:l=>{if(!l.parentId){const u={unitId:_,range:C,comment:l};return a.executeCommand(F.id,u),m.endAdd(),!1}return!0},onDeleteComment:l=>{if(!l.parentId){const u={unitId:_,commentId:l.id};return a.executeCommand(H.id,u),!1}return!0},showComments:h})};w.componentKey="univer.doc.thread-comment-panel";const le=e=>{const t=e.get(M.IRenderManagerService),n=e.get(p.TextSelectionManagerService),i=t.getCurrent(),r=i==null?void 0:i.with(p.DocSkeletonManagerService).getSkeleton(),s=r==null?void 0:r.getViewModel().getEditArea();if(s===M.DocumentEditArea.FOOTER||s===M.DocumentEditArea.HEADER)return!0;const a=n.getActiveRange();return!!(!a||a.collapsed)};function ue(e){return{id:A.id,group:f.MenuGroup.CONTEXT_MENU_DATA,type:f.MenuItemType.BUTTON,icon:"CommentSingle",title:"threadCommentUI.panel.addComment",tooltip:"threadCommentUI.panel.addComment",positions:[f.MenuPosition.CONTEXT_MENU],hidden$:f.getMenuHiddenObservable(e,o.UniverInstanceType.UNIVER_DOC),disabled$:new y.Observable(function(t){const i=e.get(p.TextSelectionManagerService).textSelection$.pipe(y.debounceTime(16)).subscribe(()=>{t.next(le(e))});return()=>{i.unsubscribe()}})}}function ve(e){return{id:Q.id,group:f.MenuGroup.CONTEXT_MENU_DATA,type:f.MenuItemType.BUTTON,icon:"CommentSingle",title:"threadCommentUI.panel.addComment",tooltip:"threadCommentUI.panel.addComment",positions:[f.MenuPosition.TOOLBAR_START],hidden$:f.getMenuHiddenObservable(e,o.UniverInstanceType.UNIVER_DOC)}}var fe=Object.defineProperty,Ce=Object.getOwnPropertyDescriptor,he=(e,t,n,i)=>{for(var r=i>1?void 0:i?Ce(t,n):t,s=e.length-1,a;s>=0;s--)(a=e[s])&&(r=(i?a(t,n,r):a(r))||r);return i&&r&&fe(t,n,r),r},N=(e,t)=>(n,i)=>t(n,i,e);let x=class extends o.Disposable{constructor(e,t,n,i,r){super(),this._config=e,this._commandService=t,this._menuService=n,this._injector=i,this._componentManager=r,this._initCommands(),this._initMenus(),this._initComponents()}_initCommands(){[F,H,P,A,Q].forEach(e=>{this.disposeWithMe(this._commandService.registerCommand(e))})}_initMenus(){[ue,ve].forEach(e=>{this.disposeWithMe(this._menuService.addMenuItem(e(this._injector),this._config.menu))})}_initComponents(){[w].forEach(e=>{this.disposeWithMe(this._componentManager.register(e.componentKey,e))}),this.disposeWithMe(this._componentManager.register("CommentSingle",X))}};x=he([o.OnLifecycle(o.LifecycleStages.Rendered,x),N(1,o.ICommandService),N(2,f.IMenuService),N(3,o.Inject(o.Injector)),N(4,o.Inject(f.ComponentManager))],x);var pe=Object.defineProperty,Ie=Object.getOwnPropertyDescriptor,ge=(e,t,n,i)=>{for(var r=i>1?void 0:i?Ie(t,n):t,s=e.length-1,a;s>=0;s--)(a=e[s])&&(r=(i?a(t,n,r):a(r))||r);return i&&r&&pe(t,n,r),r},D=(e,t)=>(n,i)=>t(n,i,e);let V=class extends o.Disposable{constructor(e,t,n,i,r,s){super(),this._threadCommentPanelService=e,this._univerInstanceService=t,this._commandService=n,this._docThreadCommentService=i,this._renderManagerService=r,this._threadCommentModel=s,this._initSelectionChange(),this._initActiveCommandChange()}_initSelectionChange(){let e;this.disposeWithMe(this._commandService.onCommandExecuted(t=>{var n,i,r,s;if(t.id===p.SetTextSelectionsOperation.id){const a=t.params,{unitId:m,ranges:C}=a,h=this._univerInstanceService.getUnit(m,o.UniverInstanceType.UNIVER_DOC),c=C[0];if((e==null?void 0:e.startOffset)===(c==null?void 0:c.startOffset)&&(e==null?void 0:e.endOffset)===(c==null?void 0:c.endOffset))return;if(e=c,c&&h){const{startOffset:g,endOffset:O,collapsed:_}=c;let l;if(_?l=(i=(n=h.getBody())==null?void 0:n.customDecorations)==null?void 0:i.find(u=>u.startIndex<=g&&u.endIndex>=O-1):l=(s=(r=h.getBody())==null?void 0:r.customDecorations)==null?void 0:s.find(u=>u.startIndex<=g&&u.endIndex>=O-1),l){const u=this._threadCommentModel.getComment(m,T,l.id);u&&!u.resolved&&this._commandService.executeCommand(P.id,{activeComment:{unitId:m,subUnitId:T,commentId:l.id}});return}}this._commandService.executeCommand(v.SetActiveCommentOperation.id)}}))}_initActiveCommandChange(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(e=>{var t,n,i;if(e){const r=this._univerInstanceService.getUnit(e.unitId);if(r){const s=(t=this._renderManagerService.getRenderById(e.unitId))==null?void 0:t.with(G.DocBackScrollRenderController),a=(n=r.getCustomRanges())==null?void 0:n.find(m=>m.rangeId===e.commentId);a&&s&&s.scrollToRange(e.unitId,{startOffset:a.startIndex,endOffset:a.endIndex,collapsed:!1})}}(!e||e.commentId!==((i=this._docThreadCommentService.addingComment)==null?void 0:i.id))&&this._docThreadCommentService.endAdd()}))}};V=ge([o.OnLifecycle(o.LifecycleStages.Rendered,V),D(0,o.Inject(v.ThreadCommentPanelService)),D(1,o.IUniverInstanceService),D(2,o.ICommandService),D(3,o.Inject(b)),D(4,M.IRenderManagerService),D(5,o.Inject(E.ThreadCommentModel))],V);var Se=Object.defineProperty,_e=Object.getOwnPropertyDescriptor,Oe=(e,t,n,i)=>{for(var r=i>1?void 0:i?_e(t,n):t,s=e.length-1,a;s>=0;s--)(a=e[s])&&(r=(i?a(t,n,r):a(r))||r);return i&&r&&Se(t,n,r),r},R=(e,t)=>(n,i)=>t(n,i,e);let $=class extends o.Disposable{constructor(e,t,n,i,r,s){super(),this._context=e,this._docInterceptorService=t,this._threadCommentPanelService=n,this._docRenderController=i,this._univerInstanceService=r,this._threadCommentModel=s,this._interceptorViewModel(),this._initReRender()}_initReRender(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(e=>{var n;if(e){this._docRenderController.reRender(e.unitId);return}const t=(n=this._univerInstanceService.getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC))==null?void 0:n.getUnitId();t&&this._docRenderController.reRender(t)})),this.disposeWithMe(this._threadCommentModel.commentUpdate$.subscribe(e=>{e.type==="resolve"&&this._docRenderController.reRender(e.unitId)}))}_interceptorViewModel(){this._docInterceptorService.intercept(p.DOC_INTERCEPTOR_POINT.CUSTOM_DECORATION,{handler:(e,t,n)=>{if(!e)return n(e);const{unitId:i,index:r,customDecorations:s}=t,a=this._threadCommentPanelService.activeCommentId,{commentId:m,unitId:C}=a||{},h=s.find(_=>_.id===m),c=this._threadCommentModel.getComment(i,T,e.id);if(!c)return n({...e,show:!1});const g=h&&r>=h.startIndex&&r<=h.endIndex,O=C===i&&e.id===m;return n({...e,active:O||g,show:!c.resolved})}})}};$=Oe([o.OnLifecycle(o.LifecycleStages.Starting,$),R(1,o.Inject(p.DocInterceptorService)),R(2,o.Inject(v.ThreadCommentPanelService)),R(3,o.Inject(G.DocRenderController)),R(4,o.IUniverInstanceService),R(5,o.Inject(E.ThreadCommentModel))],$);var Y=Object.defineProperty,Te=Object.getOwnPropertyDescriptor,Me=(e,t,n)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,be=(e,t,n,i)=>{for(var r=i>1?void 0:i?Te(t,n):t,s=e.length-1,a;s>=0;s--)(a=e[s])&&(r=(i?a(t,n,r):a(r))||r);return i&&r&&Y(t,n,r),r},k=(e,t)=>(n,i)=>t(n,i,e),ee=(e,t,n)=>Me(e,typeof t!="symbol"?t+"":t,n);d.UniverDocsThreadCommentUIPlugin=class extends o.Plugin{constructor(t={menu:{}},n,i){super(),this._config=t,this._injector=n,this._renderManagerSrv=i}onStarting(t){[[x,{useFactory:()=>this._injector.createInstance(x,this._config)}],[V],[b]].forEach(n=>{t.add(n)})}onRendered(){this._initRenderModule()}_initRenderModule(){[$].forEach(t=>{this._renderManagerSrv.registerRenderModule(o.UniverInstanceType.UNIVER_DOC,t)})}},ee(d.UniverDocsThreadCommentUIPlugin,"pluginName",ne),ee(d.UniverDocsThreadCommentUIPlugin,"type",o.UniverInstanceType.UNIVER_DOC),d.UniverDocsThreadCommentUIPlugin=be([o.DependentOn(v.UniverThreadCommentUIPlugin),k(1,o.Inject(o.Injector)),k(2,M.IRenderManagerService)],d.UniverDocsThreadCommentUIPlugin),d.AddDocCommentComment=F,d.DeleteDocCommentComment=H,d.ShowCommentPanelOperation=P,d.StartAddCommentOperation=A,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/docs-thread-comment-ui",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "private": false,
5
5
  "description": "Univer thread comment plugin",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -44,35 +44,33 @@
44
44
  "lib"
45
45
  ],
46
46
  "peerDependencies": {
47
- "@wendellhu/redi": "0.16.0",
48
47
  "react": "^16.9.0 || ^17.0.0 || ^18.0.0",
49
48
  "rxjs": ">=7.0.0",
50
- "@univerjs/core": "0.2.4",
51
- "@univerjs/docs": "0.2.4",
52
- "@univerjs/docs-ui": "0.2.4",
53
- "@univerjs/engine-render": "0.2.4",
54
- "@univerjs/thread-comment-ui": "0.2.4",
55
- "@univerjs/thread-comment": "0.2.4",
56
- "@univerjs/ui": "0.2.4"
49
+ "@univerjs/core": "0.2.5",
50
+ "@univerjs/docs": "0.2.5",
51
+ "@univerjs/docs-ui": "0.2.5",
52
+ "@univerjs/engine-render": "0.2.5",
53
+ "@univerjs/thread-comment-ui": "0.2.5",
54
+ "@univerjs/ui": "0.2.5",
55
+ "@univerjs/thread-comment": "0.2.5"
57
56
  },
58
57
  "dependencies": {
59
58
  "@univerjs/icons": "^0.1.65"
60
59
  },
61
60
  "devDependencies": {
62
- "@wendellhu/redi": "0.16.0",
63
61
  "clsx": "^2.1.1",
64
62
  "react": "18.3.1",
65
63
  "rxjs": "^7.8.1",
66
64
  "typescript": "^5.5.3",
67
65
  "vite": "^5.3.4",
68
66
  "vitest": "^2.0.3",
69
- "@univerjs/core": "0.2.4",
70
- "@univerjs/design": "0.2.4",
71
- "@univerjs/engine-formula": "0.2.4",
72
- "@univerjs/thread-comment": "0.2.4",
73
- "@univerjs/shared": "0.2.4",
74
- "@univerjs/thread-comment-ui": "0.2.4",
75
- "@univerjs/ui": "0.2.4"
67
+ "@univerjs/core": "0.2.5",
68
+ "@univerjs/design": "0.2.5",
69
+ "@univerjs/shared": "0.2.5",
70
+ "@univerjs/engine-formula": "0.2.5",
71
+ "@univerjs/thread-comment": "0.2.5",
72
+ "@univerjs/ui": "0.2.5",
73
+ "@univerjs/thread-comment-ui": "0.2.5"
76
74
  },
77
75
  "univerSpace": {
78
76
  ".": {