@univerjs/docs-thread-comment-ui 0.2.4-alpha.0 → 0.2.4

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 te=Object.defineProperty;var ne=(e,t,n)=>t in e?te(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var B=(e,t,n)=>ne(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@univerjs/core"),_=require("@univerjs/thread-comment-ui"),y=require("@univerjs/engine-render"),g=require("@univerjs/ui"),f=require("@univerjs/docs"),V=require("@univerjs/thread-comment"),p=require("react"),$=require("rxjs"),K=require("@univerjs/docs-ui"),re="DOC_THREAD_COMMENT_UI_PLUGIN",O="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},X=p.forwardRef(function(e,t){var n=e.icon,r=e.id,i=e.className,c=e.extend,s=ie(e,["icon","id","className","extend"]),d="univerjs-icon univerjs-icon-".concat(r," ").concat(i||"").trim(),l=p.useRef("_".concat(se()));return Y(n,"".concat(r),{defIds:n.defIds,idSuffix:l.current},C({ref:t,className:d},s),c)});function Y(e,t,n,r,i){return p.createElement(e.tag,C(C({key:t},oe(e,n,i)),r),(ce(e,n).children||[]).map(function(c,s){return Y(c,"".concat(t,"-").concat(e.tag,"-").concat(s),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(c){var s=c[0],d=c[1];typeof d=="string"&&(r[s]=d.replace(/url\(#(.*)\)/,"url(#$1".concat(t.idSuffix,")")))})),r}function ce(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 se(){return Math.random().toString(36).substring(2,8)}X.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"}}]},J=p.forwardRef(function(e,t){return p.createElement(X,Object.assign({},e,{id:"comment-single",ref:t,icon:ae}))});J.displayName="CommentSingle";const q={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(V.IThreadCommentDataSourceService).addComment(n),s=e.get(o.ICommandService),d=f.addCustomDecorationBySelectionFactory(e,{id:c.id,type:o.CustomDecorationType.COMMENT});if(d){const l={id:V.AddCommentMutation.id,params:{unitId:r,subUnitId:O,comment:c}},m={id:_.SetActiveCommentOperation.id,params:{unitId:r,subUnitId:O,commentId:c.id}};return(await o.sequenceExecuteAsync([l,d,m],s)).result}return!1}};var de=Object.defineProperty,me=Object.getOwnPropertyDescriptor,le=(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&&de(t,n,i),i},z=(e,t)=>(n,r)=>t(n,r,e);let D=class extends o.Disposable{constructor(t,n){super();B(this,"_addingComment$",new $.BehaviorSubject(void 0));B(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=le([z(0,g.ISidebarService),z(1,o.Inject(_.ThreadCommentPanelService))],D);const R={id:"docs.operation.show-comment-panel",type:o.CommandType.OPERATION,handler(e,t){const n=e.get(_.ThreadCommentPanelService),r=e.get(g.ISidebarService);return n.panelVisible||(r.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}},N={id:"docs.operation.start-add-comment",type:o.CommandType.OPERATION,handler(e){var I,P;const t=e.get(_.ThreadCommentPanelService),r=e.get(o.IUniverInstanceService).getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC),i=e.get(f.TextSelectionManagerService),c=e.get(o.UserManagerService),s=e.get(D),d=e.get(o.ICommandService),l=e.get(g.ISidebarService),m=i.getActiveRange();if(!r||!m)return!1;if(m.collapsed)return t.panelVisible?(t.setPanelVisible(!1),l.close()):d.executeCommand(R.id),!0;t.panelVisible||d.executeCommand(R.id);const v=r.getUnitId(),S=f.getSelectionText((P=(I=r.getBody())==null?void 0:I.dataStream)!=null?P:"",m.startOffset,m.endOffset),h=O,u="",a={unitId:v,subUnitId:h,id:u,ref:S,dT:_.getDT(),personId:c.getCurrentUser().userID,text:{dataStream:`\r
2
- `},startOffset:m.startOffset,endOffset:m.endOffset,collapsed:!0,threadId:u};return s.startAdd(a),t.setActiveComment({unitId:v,subUnitId:h,commentId:u}),!0}},F={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=f.deleteCustomDecorationFactory(e,{id:n,unitId:r});return c?(await o.sequenceExecute([c],i)).result:!1}},W=()=>{var u;const e=o.useDependency(o.IUniverInstanceService),t=p.useMemo(()=>e.getCurrentTypeOfUnit$(o.UniverInstanceType.UNIVER_DOC),[e]),n=o.useObservable(t),r=p.useMemo(()=>new $.Observable(a=>a.next(O)),[]),i=o.useDependency(f.TextSelectionManagerService),c=(u=o.useObservable(i.textSelection$))==null?void 0:u.textRanges[0],s=o.useDependency(o.ICommandService),d=o.useDependency(D),l=o.useObservable(d.addingComment$),[m,v]=p.useState([]);if(p.useEffect(()=>{var H;const a=new Set,I=n==null?void 0:n.getCustomDecorations();v((H=I==null?void 0:I.map(b=>b.id).filter(b=>{const x=a.has(b);return a.add(b),!x}))!=null?H:[]);const P=s.onCommandExecuted(b=>{var x;if(b.id===f.RichTextEditingMutation.id){const Z=new Set,L=n==null?void 0:n.getCustomDecorations();v((x=L==null?void 0:L.map(A=>A.id).filter(A=>{const ee=Z.has(A);return Z.add(A),!ee}))!=null?x:[])}});return()=>{P.dispose()}},[s,n]),!n)return null;const S=c&&c.endOffset===c.startOffset,h=n.getUnitId();return p.createElement(_.ThreadCommentPanel,{unitId:h,subUnitId$:r,type:o.UniverInstanceType.UNIVER_DOC,onAdd:()=>{s.executeCommand(N.id)},getSubUnitName:()=>"",disableAdd:S,tempComment:l,onAddComment:a=>{if(!a.parentId){const I={unitId:h,range:l,comment:a};return s.executeCommand(q.id,I),d.endAdd(),!1}return!0},onDeleteComment:a=>{if(!a.parentId){const I={unitId:h,commentId:a.id};return s.executeCommand(F.id,I),!1}return!0},showComments:m})};W.componentKey="univer.doc.thread-comment-panel";const ue=e=>{const n=e.get(y.IRenderManagerService).getCurrent(),r=n==null?void 0:n.with(f.DocSkeletonManagerService).getSkeleton(),i=r==null?void 0:r.getViewModel().getEditArea();return i===y.DocumentEditArea.FOOTER||i===y.DocumentEditArea.HEADER};function Ce(e){return{id:N.id,group:g.MenuGroup.TOOLBAR_LAYOUT,type:g.MenuItemType.BUTTON,icon:"CommentSingle",title:"threadCommentUI.panel.addComment",tooltip:"threadCommentUI.panel.addComment",positions:[g.MenuPosition.TOOLBAR_START,g.MenuPosition.CONTEXT_MENU],hidden$:g.getMenuHiddenObservable(e,o.UniverInstanceType.UNIVER_DOC),disabled$:new $.Observable(function(t){const r=e.get(f.TextSelectionManagerService).textSelection$.pipe($.debounceTime(16)).subscribe(()=>{t.next(ue(e))});return()=>{r.unsubscribe()}})}}var ve=Object.defineProperty,fe=Object.getOwnPropertyDescriptor,he=(e,t,n,r)=>{for(var i=r>1?void 0:r?fe(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&&ve(t,n,i),i},E=(e,t)=>(n,r)=>t(n,r,e);let U=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(){[q,F,R,N].forEach(e=>{this.disposeWithMe(this._commandService.registerCommand(e))})}_initMenus(){[Ce].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",J))}};U=he([o.OnLifecycle(o.LifecycleStages.Rendered,U),E(1,o.ICommandService),E(2,g.IMenuService),E(3,o.Inject(o.Injector)),E(4,o.Inject(g.ComponentManager))],U);var Ie=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&&Ie(t,n,i),i},M=(e,t)=>(n,r)=>t(n,r,e);let w=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(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var t,n,r,i;if(e.id===f.SetTextSelectionsOperation.id){const c=e.params,{unitId:s,ranges:d}=c,l=this._univerInstanceService.getUnit(s,o.UniverInstanceType.UNIVER_DOC),m=d[0];if(m&&l){const{startOffset:v,endOffset:S,collapsed:h}=m;let u;if(h?u=(n=(t=l.getBody())==null?void 0:t.customDecorations)==null?void 0:n.find(a=>a.startIndex<=v&&a.endIndex>=S-1):u=(i=(r=l.getBody())==null?void 0:r.customDecorations)==null?void 0:i.find(a=>a.startIndex<=v&&a.endIndex>=S-1),u){const a=this._threadCommentModel.getComment(s,O,u.id);a&&!a.resolved&&this._commandService.executeCommand(R.id,{activeComment:{unitId:s,subUnitId:O,commentId:u.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 c=(t=this._renderManagerService.getRenderById(e.unitId))==null?void 0:t.with(K.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()}))}};w=pe([o.OnLifecycle(o.LifecycleStages.Rendered,w),M(0,o.Inject(_.ThreadCommentPanelService)),M(1,o.IUniverInstanceService),M(2,o.ICommandService),M(3,o.Inject(D)),M(4,y.IRenderManagerService),M(5,o.Inject(V.ThreadCommentModel))],w);var _e=Object.defineProperty,Se=Object.getOwnPropertyDescriptor,Oe=(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&&_e(t,n,i),i},T=(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(f.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:l}=s||{},m=c.find(u=>u.id===d),v=this._threadCommentModel.getComment(r,O,e.id);if(!v)return n({...e,show:!1});const S=m&&i>=m.startIndex&&i<=m.endIndex,h=l===r&&e.id===d;return n({...e,active:h||S,show:!v.resolved})}})}};j=Oe([o.OnLifecycle(o.LifecycleStages.Starting,j),T(1,o.Inject(f.DocInterceptorService)),T(2,o.Inject(_.ThreadCommentPanelService)),T(3,o.Inject(K.DocRenderController)),T(4,o.IUniverInstanceService),T(5,o.Inject(V.ThreadCommentModel))],j);var Q=Object.defineProperty,be=Object.getOwnPropertyDescriptor,Me=(e,t,n)=>t in e?Q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,De=(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&&Q(t,n,i),i},G=(e,t)=>(n,r)=>t(n,r,e),k=(e,t,n)=>Me(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){[[U,{useFactory:()=>this._injector.createInstance(U,this._config)}],[w],[D]].forEach(n=>{t.add(n)})}onRendered(){this._initRenderModule()}_initRenderModule(){[j].forEach(t=>{this._renderManagerSrv.registerRenderModule(o.UniverInstanceType.UNIVER_DOC,t)})}};k(exports.UniverDocsThreadCommentUIPlugin,"pluginName",re);k(exports.UniverDocsThreadCommentUIPlugin,"type",o.UniverInstanceType.UNIVER_DOC);exports.UniverDocsThreadCommentUIPlugin=De([o.DependentOn(_.UniverThreadCommentUIPlugin),G(1,o.Inject(o.Injector)),G(2,y.IRenderManagerService)],exports.UniverDocsThreadCommentUIPlugin);exports.AddDocCommentComment=q;exports.DeleteDocCommentComment=F;exports.ShowCommentPanelOperation=R;exports.StartAddCommentOperation=N;
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;
package/lib/es/index.js CHANGED
@@ -1,12 +1,14 @@
1
1
  var ve = Object.defineProperty;
2
2
  var _e = (e, t, n) => t in e ? ve(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
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, Inject as C, Disposable as N, IUniverInstanceService as j, UniverInstanceType as p, UserManagerService as Se, sequenceExecute as Ie, useDependency as P, useObservable as F, OnLifecycle as W, LifecycleStages as H, Injector as ne, DependentOn as Oe, Plugin as Me } from "@univerjs/core";
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";
5
6
  import { SetActiveCommentOperation as re, ThreadCommentPanelService as R, getDT as be, ThreadCommentPanel as De, UniverThreadCommentUIPlugin as Re } from "@univerjs/thread-comment-ui";
6
7
  import { IRenderManagerService as Z, DocumentEditArea as J } from "@univerjs/engine-render";
7
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";
8
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";
9
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";
10
12
  import We, { forwardRef as oe, useRef as He, createElement as se, useMemo as k, useState as Ze, useEffect as ze } from "react";
11
13
  import { BehaviorSubject as Ge, Observable as ce, debounceTime as Ke } from "rxjs";
12
14
  import { DocBackScrollRenderController as qe, DocRenderController as Xe } from "@univerjs/docs-ui";
@@ -1,5 +1,6 @@
1
- import { Disposable, ICommandService, Injector } from '@univerjs/core';
1
+ import { Disposable, ICommandService } from '@univerjs/core';
2
2
  import { MenuConfig, ComponentManager, IMenuService } from '@univerjs/ui';
3
+ import { Injector } from '@wendellhu/redi';
3
4
 
4
5
  export interface IDocThreadCommentUIConfig {
5
6
  menu: MenuConfig;
@@ -1,4 +1,4 @@
1
- import { IAccessor } from '@univerjs/core';
1
+ import { IAccessor } from '@wendellhu/redi';
2
2
  import { IMenuButtonItem } from '@univerjs/ui';
3
3
 
4
4
  export declare const shouldDisableAddComment: (accessor: IAccessor) => boolean;
@@ -1,4 +1,5 @@
1
- import { Injector, Plugin, UniverInstanceType } from '@univerjs/core';
1
+ import { Plugin, UniverInstanceType } from '@univerjs/core';
2
+ import { Injector } from '@wendellhu/redi';
2
3
  import { IRenderManagerService } from '@univerjs/engine-render';
3
4
  import { IDocThreadCommentUIConfig } from './controllers/doc-thread-comment-ui.controller';
4
5
 
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("@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,l,y,_,h,x,p,R,Z){"use strict";var Te=Object.defineProperty;var be=(d,o,l)=>o in d?Te(d,o,{enumerable:!0,configurable:!0,writable:!0,value:l}):d[o]=l;var H=(d,o,l)=>be(d,typeof o!="symbol"?o+"":o,l);const te="DOC_THREAD_COMMENT_UI_PLUGIN",M="default_doc";var C=function(){return C=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},C.apply(this,arguments)},ne=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},z=p.forwardRef(function(e,t){var n=e.icon,i=e.id,r=e.className,s=e.extend,a=ne(e,["icon","id","className","extend"]),m="univerjs-icon univerjs-icon-".concat(i," ").concat(r||"").trim(),v=p.useRef("_".concat(oe()));return G(n,"".concat(i),{defIds:n.defIds,idSuffix:v.current},C({ref:t,className:m},a),s)});function G(e,t,n,i,r){return p.createElement(e.tag,C(C({key:t},ie(e,n,r)),i),(re(e,n).children||[]).map(function(s,a){return G(s,"".concat(t,"-").concat(e.tag,"-").concat(a),n,void 0,r)}))}function ie(e,t,n){var i=C({},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 re(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)?C(C({},e),{children:e.children.map(function(r){return typeof r.attrs.id=="string"&&i&&i.indexOf(r.attrs.id)>-1?C(C({},r),{attrs:C(C({},r.attrs),{id:r.attrs.id+t.idSuffix})}):r})}):e}function oe(){return Math.random().toString(36).substring(2,8)}z.displayName="UniverIcon";var se={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=p.forwardRef(function(e,t){return p.createElement(z,Object.assign({},e,{id:"comment-single",ref:t,icon:se}))});K.displayName="CommentSingle";const B={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(x.IThreadCommentDataSourceService).addComment(n),a=e.get(o.ICommandService),m=h.addCustomDecorationBySelectionFactory(e,{id:s.id,type:o.CustomDecorationType.COMMENT});if(m){const v={id:x.AddCommentMutation.id,params:{unitId:i,subUnitId:M,comment:s}},u={id:l.SetActiveCommentOperation.id,params:{unitId:i,subUnitId:M,commentId:s.id}};return(await o.sequenceExecuteAsync([v,m,u],a)).result}return!1}};var ae=Object.defineProperty,de=Object.getOwnPropertyDescriptor,ce=(e,t,n,i)=>{for(var r=i>1?void 0:i?de(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&&ae(t,n,r),r},X=(e,t)=>(n,i)=>t(n,i,e);let D=class extends o.Disposable{constructor(t,n){super();H(this,"_addingComment$",new R.BehaviorSubject(void 0));H(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=ce([X(0,_.ISidebarService),X(1,o.Inject(l.ThreadCommentPanelService))],D);const U={id:"docs.operation.show-comment-panel",type:o.CommandType.OPERATION,handler(e,t){const n=e.get(l.ThreadCommentPanelService),i=e.get(_.ISidebarService);return n.panelVisible||(i.open({header:{title:"threadCommentUI.panel.title"},children:{label:F.componentKey},width:320,onClose:()=>n.setPanelVisible(!1)}),n.setPanelVisible(!0)),t&&n.setActiveComment(t==null?void 0:t.activeComment),!0}},A={id:"docs.operation.start-add-comment",type:o.CommandType.OPERATION,handler(e){var g,$;const t=e.get(l.ThreadCommentPanelService),i=e.get(o.IUniverInstanceService).getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC),r=e.get(h.TextSelectionManagerService),s=e.get(o.UserManagerService),a=e.get(D),m=e.get(o.ICommandService),v=e.get(_.ISidebarService),u=r.getActiveRange();if(!i||!u)return!1;if(u.collapsed)return t.panelVisible?(t.setPanelVisible(!1),v.close()):m.executeCommand(U.id),!0;t.panelVisible||m.executeCommand(U.id);const I=i.getUnitId(),O=h.getSelectionText(($=(g=i.getBody())==null?void 0:g.dataStream)!=null?$:"",u.startOffset,u.endOffset),S=M,f="",c={unitId:I,subUnitId:S,id:f,ref:O,dT:l.getDT(),personId:s.getCurrentUser().userID,text:{dataStream:`\r
2
- `},startOffset:u.startOffset,endOffset:u.endOffset,collapsed:!0,threadId:f};return a.startAdd(c),t.setActiveComment({unitId:I,subUnitId:S,commentId:f}),!0}},q={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=h.deleteCustomDecorationFactory(e,{id:n,unitId:i});return s?(await o.sequenceExecute([s],r)).result:!1}},F=()=>{var f;const e=o.useDependency(o.IUniverInstanceService),t=p.useMemo(()=>e.getCurrentTypeOfUnit$(o.UniverInstanceType.UNIVER_DOC),[e]),n=o.useObservable(t),i=p.useMemo(()=>new R.Observable(c=>c.next(M)),[]),r=o.useDependency(h.TextSelectionManagerService),s=(f=o.useObservable(r.textSelection$))==null?void 0:f.textRanges[0],a=o.useDependency(o.ICommandService),m=o.useDependency(D),v=o.useObservable(m.addingComment$),[u,I]=p.useState([]);if(p.useEffect(()=>{var k;const c=new Set,g=n==null?void 0:n.getCustomDecorations();I((k=g==null?void 0:g.map(b=>b.id).filter(b=>{const N=c.has(b);return c.add(b),!N}))!=null?k:[]);const $=a.onCommandExecuted(b=>{var N;if(b.id===h.RichTextEditingMutation.id){const ee=new Set,W=n==null?void 0:n.getCustomDecorations();I((N=W==null?void 0:W.map(L=>L.id).filter(L=>{const De=ee.has(L);return ee.add(L),!De}))!=null?N:[])}});return()=>{$.dispose()}},[a,n]),!n)return null;const O=s&&s.endOffset===s.startOffset,S=n.getUnitId();return p.createElement(l.ThreadCommentPanel,{unitId:S,subUnitId$:i,type:o.UniverInstanceType.UNIVER_DOC,onAdd:()=>{a.executeCommand(A.id)},getSubUnitName:()=>"",disableAdd:O,tempComment:v,onAddComment:c=>{if(!c.parentId){const g={unitId:S,range:v,comment:c};return a.executeCommand(B.id,g),m.endAdd(),!1}return!0},onDeleteComment:c=>{if(!c.parentId){const g={unitId:S,commentId:c.id};return a.executeCommand(q.id,g),!1}return!0},showComments:u})};F.componentKey="univer.doc.thread-comment-panel";const me=e=>{const n=e.get(y.IRenderManagerService).getCurrent(),i=n==null?void 0:n.with(h.DocSkeletonManagerService).getSkeleton(),r=i==null?void 0:i.getViewModel().getEditArea();return r===y.DocumentEditArea.FOOTER||r===y.DocumentEditArea.HEADER};function ue(e){return{id:A.id,group:_.MenuGroup.TOOLBAR_LAYOUT,type:_.MenuItemType.BUTTON,icon:"CommentSingle",title:"threadCommentUI.panel.addComment",tooltip:"threadCommentUI.panel.addComment",positions:[_.MenuPosition.TOOLBAR_START,_.MenuPosition.CONTEXT_MENU],hidden$:_.getMenuHiddenObservable(e,o.UniverInstanceType.UNIVER_DOC),disabled$:new R.Observable(function(t){const i=e.get(h.TextSelectionManagerService).textSelection$.pipe(R.debounceTime(16)).subscribe(()=>{t.next(me(e))});return()=>{i.unsubscribe()}})}}var le=Object.defineProperty,ve=Object.getOwnPropertyDescriptor,fe=(e,t,n,i)=>{for(var r=i>1?void 0:i?ve(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&&le(t,n,r),r},E=(e,t)=>(n,i)=>t(n,i,e);let P=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(){[B,q,U,A].forEach(e=>{this.disposeWithMe(this._commandService.registerCommand(e))})}_initMenus(){[ue].forEach(e=>{this.disposeWithMe(this._menuService.addMenuItem(e(this._injector),this._config.menu))})}_initComponents(){[F].forEach(e=>{this.disposeWithMe(this._componentManager.register(e.componentKey,e))}),this.disposeWithMe(this._componentManager.register("CommentSingle",K))}};P=fe([o.OnLifecycle(o.LifecycleStages.Rendered,P),E(1,o.ICommandService),E(2,_.IMenuService),E(3,o.Inject(o.Injector)),E(4,o.Inject(_.ComponentManager))],P);var Ce=Object.defineProperty,he=Object.getOwnPropertyDescriptor,Ie=(e,t,n,i)=>{for(var r=i>1?void 0:i?he(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&&Ce(t,n,r),r},T=(e,t)=>(n,i)=>t(n,i,e);let w=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(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var t,n,i,r;if(e.id===h.SetTextSelectionsOperation.id){const s=e.params,{unitId:a,ranges:m}=s,v=this._univerInstanceService.getUnit(a,o.UniverInstanceType.UNIVER_DOC),u=m[0];if(u&&v){const{startOffset:I,endOffset:O,collapsed:S}=u;let f;if(S?f=(n=(t=v.getBody())==null?void 0:t.customDecorations)==null?void 0:n.find(c=>c.startIndex<=I&&c.endIndex>=O-1):f=(r=(i=v.getBody())==null?void 0:i.customDecorations)==null?void 0:r.find(c=>c.startIndex<=I&&c.endIndex>=O-1),f){const c=this._threadCommentModel.getComment(a,M,f.id);c&&!c.resolved&&this._commandService.executeCommand(U.id,{activeComment:{unitId:a,subUnitId:M,commentId:f.id}});return}}this._commandService.executeCommand(l.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(Z.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()}))}};w=Ie([o.OnLifecycle(o.LifecycleStages.Rendered,w),T(0,o.Inject(l.ThreadCommentPanelService)),T(1,o.IUniverInstanceService),T(2,o.ICommandService),T(3,o.Inject(D)),T(4,y.IRenderManagerService),T(5,o.Inject(x.ThreadCommentModel))],w);var _e=Object.defineProperty,pe=Object.getOwnPropertyDescriptor,Se=(e,t,n,i)=>{for(var r=i>1?void 0:i?pe(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&&_e(t,n,r),r},j=(e,t)=>(n,i)=>t(n,i,e);let V=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(h.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:v}=a||{},u=s.find(f=>f.id===m),I=this._threadCommentModel.getComment(i,M,e.id);if(!I)return n({...e,show:!1});const O=u&&r>=u.startIndex&&r<=u.endIndex,S=v===i&&e.id===m;return n({...e,active:S||O,show:!I.resolved})}})}};V=Se([o.OnLifecycle(o.LifecycleStages.Starting,V),j(1,o.Inject(h.DocInterceptorService)),j(2,o.Inject(l.ThreadCommentPanelService)),j(3,o.Inject(Z.DocRenderController)),j(4,o.IUniverInstanceService),j(5,o.Inject(x.ThreadCommentModel))],V);var Y=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,Oe=(e,t,n)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Me=(e,t,n,i)=>{for(var r=i>1?void 0:i?ge(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},J=(e,t)=>(n,i)=>t(n,i,e),Q=(e,t,n)=>Oe(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){[[P,{useFactory:()=>this._injector.createInstance(P,this._config)}],[w],[D]].forEach(n=>{t.add(n)})}onRendered(){this._initRenderModule()}_initRenderModule(){[V].forEach(t=>{this._renderManagerSrv.registerRenderModule(o.UniverInstanceType.UNIVER_DOC,t)})}},Q(d.UniverDocsThreadCommentUIPlugin,"pluginName",te),Q(d.UniverDocsThreadCommentUIPlugin,"type",o.UniverInstanceType.UNIVER_DOC),d.UniverDocsThreadCommentUIPlugin=Me([o.DependentOn(l.UniverThreadCommentUIPlugin),J(1,o.Inject(o.Injector)),J(2,y.IRenderManagerService)],d.UniverDocsThreadCommentUIPlugin),d.AddDocCommentComment=B,d.DeleteDocCommentComment=q,d.ShowCommentPanelOperation=U,d.StartAddCommentOperation=A,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
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"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/docs-thread-comment-ui",
3
- "version": "0.2.4-alpha.0",
3
+ "version": "0.2.4",
4
4
  "private": false,
5
5
  "description": "Univer thread comment plugin",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -44,33 +44,35 @@
44
44
  "lib"
45
45
  ],
46
46
  "peerDependencies": {
47
+ "@wendellhu/redi": "0.16.0",
47
48
  "react": "^16.9.0 || ^17.0.0 || ^18.0.0",
48
49
  "rxjs": ">=7.0.0",
49
- "@univerjs/core": "0.2.4-alpha.0",
50
- "@univerjs/docs-ui": "0.2.4-alpha.0",
51
- "@univerjs/docs": "0.2.4-alpha.0",
52
- "@univerjs/engine-render": "0.2.4-alpha.0",
53
- "@univerjs/thread-comment": "0.2.4-alpha.0",
54
- "@univerjs/thread-comment-ui": "0.2.4-alpha.0",
55
- "@univerjs/ui": "0.2.4-alpha.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"
56
57
  },
57
58
  "dependencies": {
58
- "@univerjs/icons": "^0.1.64"
59
+ "@univerjs/icons": "^0.1.65"
59
60
  },
60
61
  "devDependencies": {
62
+ "@wendellhu/redi": "0.16.0",
61
63
  "clsx": "^2.1.1",
62
64
  "react": "18.3.1",
63
65
  "rxjs": "^7.8.1",
64
66
  "typescript": "^5.5.3",
65
67
  "vite": "^5.3.4",
66
68
  "vitest": "^2.0.3",
67
- "@univerjs/engine-formula": "0.2.4-alpha.0",
68
- "@univerjs/core": "0.2.4-alpha.0",
69
- "@univerjs/design": "0.2.4-alpha.0",
70
- "@univerjs/shared": "0.2.4-alpha.0",
71
- "@univerjs/thread-comment-ui": "0.2.4-alpha.0",
72
- "@univerjs/thread-comment": "0.2.4-alpha.0",
73
- "@univerjs/ui": "0.2.4-alpha.0"
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"
74
76
  },
75
77
  "univerSpace": {
76
78
  ".": {