@univerjs/sheets-thread-comment 0.1.15 → 0.1.17

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.
@@ -1,5 +1,5 @@
1
1
  import { Disposable } from '@univerjs/core';
2
- import { HoverManagerService } from '@univerjs/sheets-ui';
2
+ import { HoverManagerService, SheetPermissionInterceptorBaseController } from '@univerjs/sheets-ui';
3
3
  import { SheetsThreadCommentModel } from '@univerjs/sheets-thread-comment-base';
4
4
  import { SheetsThreadCommentPopupService } from '../services/sheets-thread-comment-popup.service';
5
5
 
@@ -7,6 +7,7 @@ export declare class SheetsThreadCommentHoverController extends Disposable {
7
7
  private readonly _hoverManagerService;
8
8
  private readonly _sheetsThreadCommentPopupService;
9
9
  private readonly _sheetsThreadCommentModel;
10
- constructor(_hoverManagerService: HoverManagerService, _sheetsThreadCommentPopupService: SheetsThreadCommentPopupService, _sheetsThreadCommentModel: SheetsThreadCommentModel);
10
+ private readonly _sheetPermissionInterceptorBaseController;
11
+ constructor(_hoverManagerService: HoverManagerService, _sheetsThreadCommentPopupService: SheetsThreadCommentPopupService, _sheetsThreadCommentModel: SheetsThreadCommentModel, _sheetPermissionInterceptorBaseController: SheetPermissionInterceptorBaseController);
11
12
  private _initHoverEvent;
12
13
  }
@@ -2,6 +2,7 @@ import { DependencyOverride, Disposable, ICommandService, IUniverInstanceService
2
2
  import { MenuConfig, ComponentManager, IMenuService, IShortcutService } from '@univerjs/ui';
3
3
  import { Injector } from '@wendellhu/redi';
4
4
  import { ThreadCommentPanelService } from '@univerjs/thread-comment-ui';
5
+ import { SheetPermissionInterceptorBaseController } from '@univerjs/sheets-ui';
5
6
  import { SheetsThreadCommentModel } from '@univerjs/sheets-thread-comment-base';
6
7
  import { SheetsThreadCommentPopupService } from '../services/sheets-thread-comment-popup.service';
7
8
 
@@ -22,7 +23,8 @@ export declare class SheetsThreadCommentController extends Disposable {
22
23
  private readonly _threadCommentPanelService;
23
24
  private readonly _shortcutService;
24
25
  private readonly _univerInstanceService;
25
- constructor(_config: Partial<IUniverSheetsThreadCommentConfig>, _menuService: IMenuService, _injector: Injector, _componentManager: ComponentManager, _localeService: LocaleService, _commandService: ICommandService, _sheetsThreadCommentPopupService: SheetsThreadCommentPopupService, _sheetsThreadCommentModel: SheetsThreadCommentModel, _threadCommentPanelService: ThreadCommentPanelService, _shortcutService: IShortcutService, _univerInstanceService: IUniverInstanceService);
26
+ private readonly _sheetPermissionInterceptorBaseController;
27
+ constructor(_config: Partial<IUniverSheetsThreadCommentConfig>, _menuService: IMenuService, _injector: Injector, _componentManager: ComponentManager, _localeService: LocaleService, _commandService: ICommandService, _sheetsThreadCommentPopupService: SheetsThreadCommentPopupService, _sheetsThreadCommentModel: SheetsThreadCommentModel, _threadCommentPanelService: ThreadCommentPanelService, _shortcutService: IShortcutService, _univerInstanceService: IUniverInstanceService, _sheetPermissionInterceptorBaseController: SheetPermissionInterceptorBaseController);
26
28
  private _initShortcut;
27
29
  private _initCommandListener;
28
30
  private _initMenu;
@@ -15,4 +15,4 @@
15
15
  */
16
16
  export declare const SHEETS_THREAD_COMMENT_MODAL = "univer.sheet.thread-comment-modal";
17
17
  export declare const COMMENT_SINGLE_ICON = "comment-single";
18
- export declare const SHEETS_THREAD_COMMENT = "univer.sheet.thread-comment";
18
+ export declare const SHEETS_THREAD_COMMENT = "SHEET_THREAD_COMMENT";
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(a,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("@wendellhu/redi"),require("@univerjs/core"),require("@univerjs/thread-comment-ui"),require("@univerjs/ui"),require("@univerjs/sheets"),require("@univerjs/engine-formula"),require("@univerjs/thread-comment"),require("@univerjs/sheets-ui"),require("@univerjs/sheets-thread-comment-base"),require("@wendellhu/redi/react-bindings"),require("react"),require("rxjs"),require("@univerjs/engine-render")):typeof define=="function"&&define.amd?define(["exports","@wendellhu/redi","@univerjs/core","@univerjs/thread-comment-ui","@univerjs/ui","@univerjs/sheets","@univerjs/engine-formula","@univerjs/thread-comment","@univerjs/sheets-ui","@univerjs/sheets-thread-comment-base","@wendellhu/redi/react-bindings","react","rxjs","@univerjs/engine-render"],u):(a=typeof globalThis<"u"?globalThis:a||self,u(a.UniverSheetsThreadComment={},a["@wendellhu/redi"],a.UniverCore,a.UniverThreadCommentUi,a.UniverUi,a.UniverSheets,a.UniverEngineFormula,a.UniverThreadComment,a.UniverSheetsUi,a.UniverSheetsThreadCommentBase,a["@wendellhu/redi/react-bindings"],a.React,a.rxjs,a.UniverEngineRender))})(this,function(a,u,c,T,S,f,A,y,M,D,b,P,W,re){"use strict";var He=Object.defineProperty;var Ve=(a,u,c)=>u in a?He(a,u,{enumerable:!0,configurable:!0,writable:!0,value:c}):a[u]=c;var N=(a,u,c)=>(Ve(a,typeof u!="symbol"?u+"":u,c),c);var g=function(){return g=Object.assign||function(o){for(var r,t=1,e=arguments.length;t<e;t++){r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(o[n]=r[n])}return o},g.apply(this,arguments)},oe=function(o,r){var t={};for(var e in o)Object.prototype.hasOwnProperty.call(o,e)&&r.indexOf(e)<0&&(t[e]=o[e]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,e=Object.getOwnPropertySymbols(o);n<e.length;n++)r.indexOf(e[n])<0&&Object.prototype.propertyIsEnumerable.call(o,e[n])&&(t[e[n]]=o[e[n]]);return t},B=P.forwardRef(function(o,r){var t=o.icon,e=o.id,n=o.className,i=o.extend,s=oe(o,["icon","id","className","extend"]),d="univerjs-icon univerjs-icon-".concat(e," ").concat(n||"").trim(),h=P.useRef("_".concat(ae()));return K(t,"".concat(e),{defIds:t.defIds,idSuffix:h.current},g({ref:r,className:d},s),i)});function K(o,r,t,e,n){return P.createElement(o.tag,g(g({key:r},ie(o,t,n)),e),(se(o,t).children||[]).map(function(i,s){return K(i,"".concat(r,"-").concat(o.tag,"-").concat(s),t,void 0,n)}))}function ie(o,r,t){var e=g({},o.attrs);t!=null&&t.colorChannel1&&e.fill==="colorChannel1"&&(e.fill=t.colorChannel1);var n=r.defIds;return!n||n.length===0||(o.tag==="use"&&e["xlink:href"]&&(e["xlink:href"]=e["xlink:href"]+r.idSuffix),Object.entries(e).forEach(function(i){var s=i[0],d=i[1];typeof d=="string"&&(e[s]=d.replace(/url\(#(.*)\)/,"url(#$1".concat(r.idSuffix,")")))})),e}function se(o,r){var t,e=r.defIds;return!e||e.length===0?o:o.tag==="defs"&&(!((t=o.children)===null||t===void 0)&&t.length)?g(g({},o),{children:o.children.map(function(n){return typeof n.attrs.id=="string"&&e&&e.indexOf(n.attrs.id)>-1?g(g({},n),{attrs:g(g({},n.attrs),{id:n.attrs.id+r.idSuffix})}):n})}):o}function ae(){return Math.random().toString(36).substring(2,8)}B.displayName="UniverIcon";var ce={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=P.forwardRef(function(o,r){return P.createElement(B,Object.assign({},o,{id:"comment-single",ref:r,icon:ce}))});Y.displayName="CommentSingle";const X="univer.sheet.thread-comment-modal",Z="comment-single",k="univer.sheet.thread-comment";var ue=Object.defineProperty,de=Object.getOwnPropertyDescriptor,me=(o,r,t,e)=>{for(var n=e>1?void 0:e?de(r,t):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(n=(e?s(r,t,n):s(n))||n);return e&&n&&ue(r,t,n),n},J=(o,r)=>(t,e)=>r(t,e,o);a.SheetsThreadCommentPopupService=class extends c.Disposable{constructor(t,e){super();N(this,"_lastPopup",null);N(this,"_activePopup");N(this,"_activePopup$",new W.BehaviorSubject(null));N(this,"activePopup$",this._activePopup$.asObservable());this._canvasPopupManagerService=t,this._zenZoneService=e,this._initZenVisible()}get activePopup(){return this._activePopup}_initZenVisible(){this.disposeWithMe(this._zenZoneService.visible$.subscribe(t=>{t&&this.hidePopup()}))}showPopup(t,e){var p;const{row:n,col:i,unitId:s,subUnitId:d}=t;if(this._activePopup&&n===this._activePopup.row&&i===this._activePopup.col&&s===this._activePopup.unitId&&d===((p=this.activePopup)==null?void 0:p.subUnitId)){this._activePopup=t,this._activePopup$.next(t);return}if(this._lastPopup&&this._lastPopup.dispose(),this._zenZoneService.visible)return;this._activePopup=t,this._activePopup$.next(t);const h=this._canvasPopupManagerService.attachPopupToCell(n,i,{componentKey:X,onClickOutside:()=>{this.hidePopup()},direction:"horizontal",excludeOutside:[...Array.from(document.querySelectorAll(".univer-thread-comment")),document.getElementById("thread-comment-add")].filter(Boolean)});if(!h)throw new Error("[SheetsThreadCommentPopupService]: cannot show popup!");const m=new c.DisposableCollection;m.add(h),m.add({dispose:()=>{e==null||e()}}),this._lastPopup=m}hidePopup(){this._activePopup&&(this._lastPopup&&this._lastPopup.dispose(),this._lastPopup=null,this._activePopup=null,this._activePopup$.next(null))}persistPopup(){!this._activePopup||!this._activePopup.temp||(this._activePopup={...this._activePopup,temp:!1},this._activePopup$.next(this._activePopup))}},a.SheetsThreadCommentPopupService=me([J(0,u.Inject(M.SheetCanvasPopManagerService)),J(1,S.IZenZoneService)],a.SheetsThreadCommentPopupService);const he=()=>{const o=b.useDependency(c.IUniverInstanceService),r=b.useDependency(a.SheetsThreadCommentPopupService),t=S.useObservable(r.activePopup$),e=b.useDependency(D.SheetsThreadCommentModel);if(S.useObservable(e.commentUpdate$),!t)return null;const{row:n,col:i,unitId:s,subUnitId:d,trigger:h}=t,m=e.getByLocation(s,d,n,i),p=`${c.Tools.chatAtABC(i)}${n+1}`,l=()=>{r.hidePopup()},w=R=>{var U,j,$;return($=(j=(U=o.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET))==null?void 0:U.getSheetBySheetId(R))==null?void 0:j.getName())!=null?$:""};return P.createElement(T.ThreadCommentTree,{onClick:()=>{r.persistPopup()},prefix:"cell",id:m,unitId:s,subUnitId:d,type:c.UniverInstanceType.UNIVER_SHEET,refStr:p,onClose:l,getSubUnitName:w,autoFocus:h==="context-menu"})},L={type:c.CommandType.OPERATION,id:"sheets.operation.show-comment-modal",handler(o){var j;const r=o.get(f.SelectionManagerService),t=o.get(c.IUniverInstanceService),e=o.get(a.SheetsThreadCommentPopupService),n=o.get(T.ThreadCommentPanelService),i=(j=r.getFirst())==null?void 0:j.primary,s=r.getCurrent(),d=o.get(D.SheetsThreadCommentModel);if(!s||!i)return!1;const{unitId:h,sheetId:m}=s,p=f.getSheetCommandTarget(t,{unitId:h,subUnitId:m});if(!p)return!1;const{workbook:l,worksheet:w}=p,R={workbook:l,worksheet:w,unitId:h,subUnitId:m,row:i.startRow,col:i.startColumn};e.showPopup(R);const U=d.getByLocation(h,m,i.startRow,i.startColumn);return U&&n.setActiveComment({unitId:h,subUnitId:m,commentId:U,trigger:"context-menu"}),!0}},le=()=>{const o=b.useDependency(M.IMarkSelectionService),r=b.useDependency(c.IUniverInstanceService),t=b.useDependency(y.ThreadCommentModel),e=b.useDependency(a.SheetsThreadCommentPopupService),n=r.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(!n)return null;const i=n.getUnitId(),s=b.useDependency(c.ICommandService),d=P.useMemo(()=>n.activeSheet$.pipe(W.map(v=>v==null?void 0:v.getSheetId())),[n.activeSheet$]),h=b.useObservable(d,n.getActiveSheet().getSheetId()),m=P.useRef(),p=b.useDependency(T.ThreadCommentPanelService),l=b.useObservable(p.activeCommentId$),w=P.useCallback(v=>{const C=n.getSheets(),I={};return C.forEach((_,E)=>{I[_.getSheetId()]=E}),v.map(_=>{var ne;const E=A.singleReferenceToGrid(_.ref),Le=[(ne=I[_.subUnitId])!=null?ne:0,E.row,E.column];return{..._,p:Le}}).sort((_,E)=>_.p[0]===E.p[0]?_.p[1]===E.p[1]?_.p[2]-E.p[2]:_.p[1]-E.p[1]:_.p[0]-E.p[0])},[n]),R=P.useCallback(v=>{if(v.unitId===i&&v.subUnitId===h&&!v.resolved){const{row:C,column:I}=A.singleReferenceToGrid(v.ref);if(!Number.isNaN(C)&&!Number.isNaN(I))return o.addShape({range:{startColumn:I,endColumn:I,startRow:C,endRow:C},style:{hasAutoFill:!1,fill:"rgb(255, 189, 55, 0.35)",strokeWidth:1,stroke:"#FFBD37",widgets:{}},primary:null})}},[o,h,i]),U=v=>{var C,I;return(I=(C=n.getSheetBySheetId(v))==null?void 0:C.getName())!=null?I:""},j=()=>{s.executeCommand(L.id)},$=()=>{e.hidePopup()},F=v=>{l&&l.unitId===v.unitId&&l.subUnitId===v.subUnitId&&l.commentId===v.id||(m.current&&(o.removeShape(m.current),m.current=null),m.current=R(v))},q=()=>{m.current&&(o.removeShape(m.current),m.current=null)};return P.useEffect(()=>{if(!l)return;const v=t.getComment(l.unitId,l.subUnitId,l.commentId);if(!v)return;const C=R(v);return()=>{C&&o.removeShape(C)}},[R,l,t,o]),P.createElement(T.ThreadCommentPanel,{unitId:i,subUnitId$:d,type:c.UniverInstanceType.UNIVER_SHEET,onAdd:j,getSubUnitName:U,onResolve:$,sortComments:w,onItemEnter:F,onItemLeave:q})},pe=o=>({id:L.id,type:S.MenuItemType.BUTTON,positions:[S.MenuPosition.CONTEXT_MENU],icon:Z,title:"sheetThreadComment.menu.addComment",hidden$:S.getMenuHiddenObservable(o,c.UniverInstanceType.UNIVER_SHEET),disabled$:M.getCurrentRangeDisable$(o,{workbookTypes:[f.WorkbookCommentPermission],worksheetTypes:[f.WorksheetViewPermission],rangeTypes:[f.RangeProtectionPermissionEditPoint]})}),ve=o=>({id:T.ToggleSheetCommentPanelOperation.id,type:S.MenuItemType.BUTTON,icon:Z,tooltip:"sheetThreadComment.menu.commentManagement",positions:S.MenuPosition.TOOLBAR_START,group:S.MenuGroup.TOOLBAR_OTHERS,disabled$:M.getCurrentRangeDisable$(o,{workbookTypes:[f.WorkbookCommentPermission],worksheetTypes:[f.WorksheetViewPermission],rangeTypes:[f.RangeProtectionPermissionEditPoint]}),hidden$:S.getMenuHiddenObservable(o,c.UniverInstanceType.UNIVER_SHEET)}),Ce={id:L.id,binding:S.KeyCode.M|S.MetaKeys.CTRL_COMMAND|S.MetaKeys.ALT,preconditions:M.whenSheetEditorFocused};var Se=Object.defineProperty,fe=Object.getOwnPropertyDescriptor,_e=(o,r,t,e)=>{for(var n=e>1?void 0:e?fe(r,t):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(n=(e?s(r,t,n):s(n))||n);return e&&n&&Se(r,t,n),n},O=(o,r)=>(t,e)=>r(t,e,o);const Ie={};a.SheetsThreadCommentController=class extends c.Disposable{constructor(r,t,e,n,i,s,d,h,m,p,l){super(),this._config=r,this._menuService=t,this._injector=e,this._componentManager=n,this._localeService=i,this._commandService=s,this._sheetsThreadCommentPopupService=d,this._sheetsThreadCommentModel=h,this._threadCommentPanelService=m,this._shortcutService=p,this._univerInstanceService=l,this._initMenu(),this._initShortcut(),this._initComponent(),this._initCommandListener(),this._initPanelListener()}_initShortcut(){this._shortcutService.registerShortcut(Ce)}_initCommandListener(){this._commandService.onCommandExecuted(r=>{if(r.id===f.SetSelectionsOperation.id){const t=r.params,{unitId:e,subUnitId:n,selections:i,type:s}=t;if((s===f.SelectionMoveType.MOVE_END||s===void 0)&&i[0].primary){const d=i[0].primary.actualRow,h=i[0].primary.actualColumn;if(!this._sheetsThreadCommentModel.showCommentMarker(e,n,d,h)){this._threadCommentPanelService.activeCommentId&&this._commandService.executeCommand(T.SetActiveCommentOperation.id);return}const m=this._sheetsThreadCommentModel.getByLocation(e,n,d,h);m&&this._commandService.executeCommand(T.SetActiveCommentOperation.id,{unitId:e,subUnitId:n,commentId:m})}}if(r.id===y.DeleteCommentMutation.id){const t=r.params,e=this._sheetsThreadCommentPopupService.activePopup;if(!e)return;const{unitId:n,subUnitId:i,commentId:s}=e;t.unitId===n&&t.subUnitId===i&&t.commentId===s&&this._sheetsThreadCommentPopupService.hidePopup()}})}_initMenu(){const{menu:r={}}=this._config;[pe,ve].forEach(t=>{this._menuService.addMenuItem(t(this._injector),r)})}_initComponent(){[[X,he],[T.THREAD_COMMENT_PANEL,le],[Z,Y]].forEach(([r,t])=>{this._componentManager.register(r,t)})}_initPanelListener(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(async r=>{if(r){const{unitId:t,subUnitId:e,commentId:n,trigger:i}=r,s=this._sheetsThreadCommentModel.getComment(t,e,n);if(!s||s.resolved)return;const d=this._univerInstanceService.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(!d||d.getUnitId()!==t)return;d.getActiveSheet().getSheetId()!==e&&await this._commandService.executeCommand(f.SetWorksheetActiveOperation.id,{unitId:t,subUnitId:e});const p=A.singleReferenceToGrid(s.ref),l=5;await this._commandService.executeCommand(M.ScrollToRangeOperation.id,{range:{startRow:Math.max(p.row-l,0),endRow:p.row+l,startColumn:Math.max(p.column-l,0),endColumn:p.column+l}}),this._sheetsThreadCommentPopupService.showPopup({unitId:t,subUnitId:e,row:p.row,col:p.column,commentId:s.id,trigger:i})}else this._sheetsThreadCommentPopupService.hidePopup()}))}},a.SheetsThreadCommentController=_e([c.OnLifecycle(c.LifecycleStages.Starting,a.SheetsThreadCommentController),O(1,S.IMenuService),O(2,u.Inject(u.Injector)),O(3,u.Inject(S.ComponentManager)),O(4,u.Inject(c.LocaleService)),O(5,c.ICommandService),O(6,u.Inject(a.SheetsThreadCommentPopupService)),O(7,u.Inject(D.SheetsThreadCommentModel)),O(8,u.Inject(T.ThreadCommentPanelService)),O(9,S.IShortcutService),O(10,c.IUniverInstanceService)],a.SheetsThreadCommentController);var Te=Object.defineProperty,Pe=Object.getOwnPropertyDescriptor,ge=(o,r,t,e)=>{for(var n=e>1?void 0:e?Pe(r,t):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(n=(e?s(r,t,n):s(n))||n);return e&&n&&Te(r,t,n),n},H=(o,r)=>(t,e)=>r(t,e,o);let V=class extends c.Disposable{constructor(o,r,t,e){super(),this._sheetInterceptorService=o,this._sheetsThreadCommentModel=r,this._univerInstanceService=t,this._renderManagerService=e,this._initViewModelIntercept(),this._initSkeletonChange()}_initViewModelIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(f.INTERCEPTOR_POINT.CELL_CONTENT,{handler:(o,r,t)=>{const{row:e,col:n,unitId:i,subUnitId:s}=r;return this._sheetsThreadCommentModel.showCommentMarker(i,s,e,n)?t({...o,markers:{...o==null?void 0:o.markers,tr:{color:"#FFBD37",size:6}}}):t(o)},priority:100}))}_initSkeletonChange(){const o=()=>{const r=this._univerInstanceService.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(!r)return;const t=r.getUnitId(),e=r.getActiveSheet().getSheetId(),n=this._renderManagerService.getRenderById(t),i=n==null?void 0:n.with(M.SheetSkeletonManagerService).getOrCreateSkeleton({sheetId:e});i==null||i.makeDirty(!0),i==null||i.calculate(),n&&n.mainComponent.makeForceDirty()};this.disposeWithMe(this._sheetsThreadCommentModel.commentUpdate$.subscribe(()=>{o()}))}};V=ge([c.OnLifecycle(c.LifecycleStages.Ready,V),H(0,u.Inject(f.SheetInterceptorService)),H(1,u.Inject(D.SheetsThreadCommentModel)),H(2,c.IUniverInstanceService),H(3,re.IRenderManagerService)],V);var be=Object.defineProperty,ye=Object.getOwnPropertyDescriptor,Me=(o,r,t,e)=>{for(var n=e>1?void 0:e?ye(r,t):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(n=(e?s(r,t,n):s(n))||n);return e&&n&&be(r,t,n),n},Q=(o,r)=>(t,e)=>r(t,e,o);const Oe=(o,r,t)=>{const e=A.singleReferenceToGrid(o),n=t.row-r.row,i=t.column-r.column,s={startColumn:e.column+i,startRow:e.row+n,endColumn:e.column+i,endRow:e.row+n};return A.serializeRange(s)};a.SheetsThreadCommentCopyPasteController=class extends c.Disposable{constructor(t,e){super();N(this,"_copyInfo");this._sheetClipboardService=t,this._sheetsThreadCommentModel=e,this._initClipboardHook()}_initClipboardHook(){this.disposeWithMe(this._sheetClipboardService.addClipboardHook({id:k,onBeforeCopy:(t,e,n)=>{this._copyInfo={unitId:t,subUnitId:e,range:n}},onPasteCells:(t,e,n,i)=>{const{unitId:s,subUnitId:d,range:h}=e,m={row:h.rows[0],column:h.cols[0]};if(i.copyType===M.COPY_TYPE.CUT&&this._copyInfo){const{range:p,unitId:l,subUnitId:w}=this._copyInfo,R={row:p.startRow,column:p.startColumn};if(!(s===l&&d===w)){const U=[];c.Range.foreach(p,(C,I)=>{const _=this._sheetsThreadCommentModel.getCommentWithChildren(l,w,C,I);_&&U.push(_)});const j=[],$=[],F=[],q=[],v=C=>{j.unshift({id:y.DeleteCommentMutation.id,params:{unitId:l,subUnitId:w,commentId:C.id}}),F.push({id:y.AddCommentMutation.id,params:{unitId:s,subUnitId:d,comment:{...C,ref:Oe(C.ref,R,m),unitId:s,subUnitId:d}}}),$.push({id:y.AddCommentMutation.id,params:{unitId:l,subUnitId:w,comment:C}}),q.unshift({id:y.DeleteCommentMutation.id,params:{unitId:s,subUnitId:d,commentId:C.id}})};return U.forEach(C=>{v(C.root),C.children.forEach(I=>{v(I)})}),{redos:[...j,...F],undos:[...q,...$]}}}return{redos:[],undos:[]}}}))}},a.SheetsThreadCommentCopyPasteController=Me([c.OnLifecycle(c.LifecycleStages.Rendered,a.SheetsThreadCommentCopyPasteController),Q(0,u.Inject(M.ISheetClipboardService)),Q(1,u.Inject(D.SheetsThreadCommentModel))],a.SheetsThreadCommentCopyPasteController);var we=Object.defineProperty,Ue=Object.getOwnPropertyDescriptor,je=(o,r,t,e)=>{for(var n=e>1?void 0:e?Ue(r,t):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(n=(e?s(r,t,n):s(n))||n);return e&&n&&we(r,t,n),n},z=(o,r)=>(t,e)=>r(t,e,o);a.SheetsThreadCommentHoverController=class extends c.Disposable{constructor(r,t,e){super(),this._hoverManagerService=r,this._sheetsThreadCommentPopupService=t,this._sheetsThreadCommentModel=e,this._initHoverEvent()}_initHoverEvent(){this.disposeWithMe(this._hoverManagerService.currentCell$.pipe(W.debounceTime(100)).subscribe(r=>{const t=this._sheetsThreadCommentPopupService.activePopup;if(r&&(t&&t.temp||!t)){const{location:e}=r,{unitId:n,subUnitId:i,row:s,col:d}=e,h=this._sheetsThreadCommentModel.getByLocation(n,i,s,d);if(h){const m=this._sheetsThreadCommentModel.getComment(n,i,h);m&&!m.resolved&&this._sheetsThreadCommentPopupService.showPopup({unitId:n,subUnitId:i,row:s,col:d,commentId:h,temp:!0})}else t&&this._sheetsThreadCommentPopupService.hidePopup()}}))}},a.SheetsThreadCommentHoverController=je([c.OnLifecycle(c.LifecycleStages.Rendered,a.SheetsThreadCommentHoverController),z(0,u.Inject(M.HoverManagerService)),z(1,u.Inject(a.SheetsThreadCommentPopupService)),z(2,u.Inject(D.SheetsThreadCommentModel))],a.SheetsThreadCommentHoverController);var Ee=Object.defineProperty,Re=Object.getOwnPropertyDescriptor,De=(o,r,t,e)=>{for(var n=e>1?void 0:e?Re(r,t):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(n=(e?s(r,t,n):s(n))||n);return e&&n&&Ee(r,t,n),n},G=(o,r)=>(t,e)=>r(t,e,o);a.ThreadCommentRemoveSheetsController=class extends c.Disposable{constructor(r,t,e){super(),this._sheetInterceptorService=r,this._univerInstanceService=t,this._threadCommentModel=e,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:r=>{if(r.id===f.RemoveSheetCommand.id){const t=r.params,e=t.unitId?this._univerInstanceService.getUnit(t.unitId):this._univerInstanceService.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(!e)return{redos:[],undos:[]};const n=e.getUnitId(),i=t.subUnitId||e.getActiveSheet().getSheetId(),{commentMap:s}=this._threadCommentModel.ensureMap(n,i),d=Array.from(Object.keys(s)),h=Array.from(Object.values(s)),m=d.map(l=>({id:y.DeleteCommentMutation.id,params:{unitId:n,subUnitId:i,commentId:l}})),p=h.map(l=>({id:y.AddCommentMutation.id,params:{unitId:n,subUnitId:i,comment:l}}));return{redos:m,undos:p}}return{redos:[],undos:[]}}}))}},a.ThreadCommentRemoveSheetsController=De([c.OnLifecycle(c.LifecycleStages.Ready,a.ThreadCommentRemoveSheetsController),G(0,u.Inject(f.SheetInterceptorService)),G(1,c.IUniverInstanceService),G(2,u.Inject(y.ThreadCommentModel))],a.ThreadCommentRemoveSheetsController);var x=Object.defineProperty,$e=Object.getOwnPropertyDescriptor,Ne=(o,r,t)=>r in o?x(o,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[r]=t,Ae=(o,r,t,e)=>{for(var n=e>1?void 0:e?$e(r,t):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(n=(e?s(r,t,n):s(n))||n);return e&&n&&x(r,t,n),n},ee=(o,r)=>(t,e)=>r(t,e,o),te=(o,r,t)=>(Ne(o,typeof r!="symbol"?r+"":r,t),t);a.UniverSheetsThreadCommentPlugin=class extends c.Plugin{constructor(t={},e,n){super();N(this,"_pluginConfig");this._injector=e,this._commandService=n,this._pluginConfig=c.Tools.deepMerge({},Ie,t)}onStarting(t){[[a.SheetsThreadCommentController,{useFactory:()=>this._injector.createInstance(a.SheetsThreadCommentController,this._pluginConfig)}],[V],[a.SheetsThreadCommentCopyPasteController],[a.SheetsThreadCommentHoverController],[a.ThreadCommentRemoveSheetsController],[a.SheetsThreadCommentPopupService]].forEach(e=>{t.add(e)}),[L].forEach(e=>{this._commandService.registerCommand(e)})}},te(a.UniverSheetsThreadCommentPlugin,"pluginName",k),te(a.UniverSheetsThreadCommentPlugin,"type",c.UniverInstanceType.UNIVER_SHEET),a.UniverSheetsThreadCommentPlugin=Ae([c.DependentOn(T.UniverThreadCommentUIPlugin,D.UniverSheetsThreadCommentBasePlugin),ee(1,u.Inject(u.Injector)),ee(2,u.Inject(c.ICommandService))],a.UniverSheetsThreadCommentPlugin),Object.defineProperty(a,"Inject",{enumerable:!0,get:()=>u.Inject}),Object.defineProperty(a,"Injector",{enumerable:!0,get:()=>u.Injector}),Object.defineProperty(a,"ICommandService",{enumerable:!0,get:()=>c.ICommandService}),Object.defineProperty(a,"Plugin",{enumerable:!0,get:()=>c.Plugin}),Object.defineProperty(a,"UniverInstanceType",{enumerable:!0,get:()=>c.UniverInstanceType}),Object.defineProperty(a,"IThreadCommentMentionDataService",{enumerable:!0,get:()=>T.IThreadCommentMentionDataService}),Object.defineProperty(a,"UniverThreadCommentUIPlugin",{enumerable:!0,get:()=>T.UniverThreadCommentUIPlugin}),Object.defineProperty(a,"IThreadCommentDataSourceService",{enumerable:!0,get:()=>y.IThreadCommentDataSourceService}),Object.defineProperty(a,"SheetsThreadCommentModel",{enumerable:!0,get:()=>D.SheetsThreadCommentModel}),a.SHEETS_THREAD_COMMENT=k,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});
1
+ (function(a,m){typeof exports=="object"&&typeof module<"u"?m(exports,require("@wendellhu/redi"),require("@univerjs/core"),require("@univerjs/thread-comment-ui"),require("@univerjs/ui"),require("@univerjs/sheets"),require("@univerjs/engine-formula"),require("@univerjs/thread-comment"),require("@univerjs/sheets-ui"),require("@univerjs/sheets-thread-comment-base"),require("@wendellhu/redi/react-bindings"),require("react"),require("rxjs"),require("@univerjs/engine-render")):typeof define=="function"&&define.amd?define(["exports","@wendellhu/redi","@univerjs/core","@univerjs/thread-comment-ui","@univerjs/ui","@univerjs/sheets","@univerjs/engine-formula","@univerjs/thread-comment","@univerjs/sheets-ui","@univerjs/sheets-thread-comment-base","@wendellhu/redi/react-bindings","react","rxjs","@univerjs/engine-render"],m):(a=typeof globalThis<"u"?globalThis:a||self,m(a.UniverSheetsThreadComment={},a["@wendellhu/redi"],a.UniverCore,a.UniverThreadCommentUi,a.UniverUi,a.UniverSheets,a.UniverEngineFormula,a.UniverThreadComment,a.UniverSheetsUi,a.UniverSheetsThreadCommentBase,a["@wendellhu/redi/react-bindings"],a.React,a.rxjs,a.UniverEngineRender))})(this,function(a,m,c,P,f,v,V,j,T,D,R,g,B,oe){"use strict";var Le=Object.defineProperty;var ke=(a,m,c)=>m in a?Le(a,m,{enumerable:!0,configurable:!0,writable:!0,value:c}):a[m]=c;var N=(a,m,c)=>ke(a,typeof m!="symbol"?m+"":m,c);var b=function(){return b=Object.assign||function(o){for(var r,n=1,e=arguments.length;n<e;n++){r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(o[t]=r[t])}return o},b.apply(this,arguments)},ie=function(o,r){var n={};for(var e in o)Object.prototype.hasOwnProperty.call(o,e)&&r.indexOf(e)<0&&(n[e]=o[e]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var t=0,e=Object.getOwnPropertySymbols(o);t<e.length;t++)r.indexOf(e[t])<0&&Object.prototype.propertyIsEnumerable.call(o,e[t])&&(n[e[t]]=o[e[t]]);return n},K=g.forwardRef(function(o,r){var n=o.icon,e=o.id,t=o.className,i=o.extend,s=ie(o,["icon","id","className","extend"]),u="univerjs-icon univerjs-icon-".concat(e," ").concat(t||"").trim(),d=g.useRef("_".concat(ce()));return Y(n,"".concat(e),{defIds:n.defIds,idSuffix:d.current},b({ref:r,className:u},s),i)});function Y(o,r,n,e,t){return g.createElement(o.tag,b(b({key:r},se(o,n,t)),e),(ae(o,n).children||[]).map(function(i,s){return Y(i,"".concat(r,"-").concat(o.tag,"-").concat(s),n,void 0,t)}))}function se(o,r,n){var e=b({},o.attrs);n!=null&&n.colorChannel1&&e.fill==="colorChannel1"&&(e.fill=n.colorChannel1);var t=r.defIds;return!t||t.length===0||(o.tag==="use"&&e["xlink:href"]&&(e["xlink:href"]=e["xlink:href"]+r.idSuffix),Object.entries(e).forEach(function(i){var s=i[0],u=i[1];typeof u=="string"&&(e[s]=u.replace(/url\(#(.*)\)/,"url(#$1".concat(r.idSuffix,")")))})),e}function ae(o,r){var n,e=r.defIds;return!e||e.length===0?o:o.tag==="defs"&&(!((n=o.children)===null||n===void 0)&&n.length)?b(b({},o),{children:o.children.map(function(t){return typeof t.attrs.id=="string"&&e&&e.indexOf(t.attrs.id)>-1?b(b({},t),{attrs:b(b({},t.attrs),{id:t.attrs.id+r.idSuffix})}):t})}):o}function ce(){return Math.random().toString(36).substring(2,8)}K.displayName="UniverIcon";var ue={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=g.forwardRef(function(o,r){return g.createElement(K,Object.assign({},o,{id:"comment-single",ref:r,icon:ue}))});X.displayName="CommentSingle";const J="univer.sheet.thread-comment-modal",Z="comment-single",z="SHEET_THREAD_COMMENT";var me=Object.defineProperty,de=Object.getOwnPropertyDescriptor,he=(o,r,n,e)=>{for(var t=e>1?void 0:e?de(r,n):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(t=(e?s(r,n,t):s(t))||t);return e&&t&&me(r,n,t),t},Q=(o,r)=>(n,e)=>r(n,e,o);a.SheetsThreadCommentPopupService=class extends c.Disposable{constructor(n,e){super();N(this,"_lastPopup",null);N(this,"_activePopup");N(this,"_activePopup$",new B.BehaviorSubject(null));N(this,"activePopup$",this._activePopup$.asObservable());this._canvasPopupManagerService=n,this._zenZoneService=e,this._initZenVisible()}get activePopup(){return this._activePopup}_initZenVisible(){this.disposeWithMe(this._zenZoneService.visible$.subscribe(n=>{n&&this.hidePopup()}))}showPopup(n,e){var C;const{row:t,col:i,unitId:s,subUnitId:u}=n;if(this._activePopup&&t===this._activePopup.row&&i===this._activePopup.col&&s===this._activePopup.unitId&&u===((C=this.activePopup)==null?void 0:C.subUnitId)){this._activePopup=n,this._activePopup$.next(n);return}if(this._lastPopup&&this._lastPopup.dispose(),this._zenZoneService.visible)return;this._activePopup=n,this._activePopup$.next(n);const d=this._canvasPopupManagerService.attachPopupToCell(t,i,{componentKey:J,onClickOutside:()=>{this.hidePopup()},direction:"horizontal",excludeOutside:[...Array.from(document.querySelectorAll(".univer-thread-comment")),document.getElementById("thread-comment-add")].filter(Boolean)});if(!d)throw new Error("[SheetsThreadCommentPopupService]: cannot show popup!");const p=new c.DisposableCollection;p.add(d),p.add({dispose:()=>{e==null||e()}}),this._lastPopup=p}hidePopup(){this._activePopup&&(this._lastPopup&&this._lastPopup.dispose(),this._lastPopup=null,this._activePopup=null,this._activePopup$.next(null))}persistPopup(){!this._activePopup||!this._activePopup.temp||(this._activePopup={...this._activePopup,temp:!1},this._activePopup$.next(this._activePopup))}},a.SheetsThreadCommentPopupService=he([Q(0,m.Inject(T.SheetCanvasPopManagerService)),Q(1,f.IZenZoneService)],a.SheetsThreadCommentPopupService);const le=()=>{const o=R.useDependency(c.IUniverInstanceService),r=R.useDependency(a.SheetsThreadCommentPopupService),n=f.useObservable(r.activePopup$),e=R.useDependency(D.SheetsThreadCommentModel);if(f.useObservable(e.commentUpdate$),!n)return null;const{row:t,col:i,unitId:s,subUnitId:u,trigger:d}=n,p=e.getByLocation(s,u,t,i),C=`${c.Tools.chatAtABC(i)}${t+1}`,l=()=>{r.hidePopup()},S=y=>{var O,_,$;return($=(_=(O=o.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET))==null?void 0:O.getSheetBySheetId(y))==null?void 0:_.getName())!=null?$:""};return g.createElement(P.ThreadCommentTree,{onClick:()=>{r.persistPopup()},prefix:"cell",id:p,unitId:s,subUnitId:u,type:c.UniverInstanceType.UNIVER_SHEET,refStr:C,onClose:l,getSubUnitName:S,autoFocus:d==="context-menu"})},H={type:c.CommandType.OPERATION,id:"sheets.operation.show-comment-modal",handler(o){var _;const r=o.get(v.SelectionManagerService),n=o.get(c.IUniverInstanceService),e=o.get(a.SheetsThreadCommentPopupService),t=o.get(P.ThreadCommentPanelService),i=(_=r.getFirst())==null?void 0:_.primary,s=r.getCurrent(),u=o.get(D.SheetsThreadCommentModel);if(!s||!i)return!1;const{unitId:d,sheetId:p}=s,C=v.getSheetCommandTarget(n,{unitId:d,subUnitId:p});if(!C)return!1;const{workbook:l,worksheet:S}=C,y={workbook:l,worksheet:S,unitId:d,subUnitId:p,row:i.startRow,col:i.startColumn};e.showPopup(y);const O=u.getByLocation(d,p,i.startRow,i.startColumn);return O&&t.setActiveComment({unitId:d,subUnitId:p,commentId:O,trigger:"context-menu"}),!0}},pe=()=>{var A;const o=R.useDependency(T.IMarkSelectionService),r=R.useDependency(c.IUniverInstanceService),n=R.useDependency(j.ThreadCommentModel),e=R.useDependency(a.SheetsThreadCommentPopupService),t=r.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(!t)return null;const i=t.getUnitId(),s=R.useDependency(c.ICommandService),u=g.useMemo(()=>t.activeSheet$.pipe(B.map(h=>h==null?void 0:h.getSheetId())),[t.activeSheet$]),d=f.useObservable(u,(A=t.getActiveSheet())==null?void 0:A.getSheetId()),p=g.useRef(),C=R.useDependency(P.ThreadCommentPanelService),l=f.useObservable(C.activeCommentId$),S=g.useCallback(h=>{const I=t.getSheets(),M={};return I.forEach((U,E)=>{M[U.getSheetId()]=E}),h.map(U=>{var re;const E=V.singleReferenceToGrid(U.ref),He=[(re=M[U.subUnitId])!=null?re:0,E.row,E.column];return{...U,p:He}}).sort((U,E)=>U.p[0]===E.p[0]?U.p[1]===E.p[1]?U.p[2]-E.p[2]:U.p[1]-E.p[1]:U.p[0]-E.p[0])},[t]),y=g.useCallback(h=>{if(h.unitId===i&&h.subUnitId===d&&!h.resolved){const{row:I,column:M}=V.singleReferenceToGrid(h.ref);if(!Number.isNaN(I)&&!Number.isNaN(M))return o.addShape({range:{startColumn:M,endColumn:M,startRow:I,endRow:I},style:{hasAutoFill:!1,fill:"rgb(255, 189, 55, 0.35)",strokeWidth:1,stroke:"#FFBD37",widgets:{}},primary:null})}},[o,d,i]),O=h=>{var I,M;return(M=(I=t.getSheetBySheetId(h))==null?void 0:I.getName())!=null?M:""},_=()=>{s.executeCommand(H.id)},$=()=>{e.hidePopup()},F=h=>{l&&l.unitId===h.unitId&&l.subUnitId===h.subUnitId&&l.commentId===h.id||(p.current&&(o.removeShape(p.current),p.current=null),p.current=y(h))},q=()=>{p.current&&(o.removeShape(p.current),p.current=null)};return g.useEffect(()=>{if(!l)return;const h=n.getComment(l.unitId,l.subUnitId,l.commentId);if(!h)return;const I=y(h);return()=>{I&&o.removeShape(I)}},[y,l,n,o]),g.createElement(P.ThreadCommentPanel,{unitId:i,subUnitId$:u,type:c.UniverInstanceType.UNIVER_SHEET,onAdd:_,getSubUnitName:O,onResolve:$,sortComments:S,onItemEnter:F,onItemLeave:q})},ve=o=>({id:H.id,type:f.MenuItemType.BUTTON,positions:[f.MenuPosition.CONTEXT_MENU],icon:Z,title:"sheetThreadComment.menu.addComment",hidden$:f.getMenuHiddenObservable(o,c.UniverInstanceType.UNIVER_SHEET),disabled$:T.getCurrentRangeDisable$(o,{workbookTypes:[v.WorkbookCommentPermission],worksheetTypes:[v.WorksheetViewPermission],rangeTypes:[v.RangeProtectionPermissionViewPoint]})}),Ce=o=>({id:P.ToggleSheetCommentPanelOperation.id,type:f.MenuItemType.BUTTON,icon:Z,tooltip:"sheetThreadComment.menu.commentManagement",positions:f.MenuPosition.TOOLBAR_START,group:f.MenuGroup.TOOLBAR_OTHERS,disabled$:T.getCurrentRangeDisable$(o,{workbookTypes:[v.WorkbookCommentPermission],worksheetTypes:[v.WorksheetViewPermission],rangeTypes:[v.RangeProtectionPermissionViewPoint]}),hidden$:f.getMenuHiddenObservable(o,c.UniverInstanceType.UNIVER_SHEET)}),Se={id:H.id,binding:f.KeyCode.M|f.MetaKeys.CTRL_COMMAND|f.MetaKeys.ALT,preconditions:T.whenSheetEditorFocused};var fe=Object.defineProperty,_e=Object.getOwnPropertyDescriptor,Ie=(o,r,n,e)=>{for(var t=e>1?void 0:e?_e(r,n):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(t=(e?s(r,n,t):s(t))||t);return e&&t&&fe(r,n,t),t},w=(o,r)=>(n,e)=>r(n,e,o);const Pe={};a.SheetsThreadCommentController=class extends c.Disposable{constructor(r,n,e,t,i,s,u,d,p,C,l,S){super(),this._config=r,this._menuService=n,this._injector=e,this._componentManager=t,this._localeService=i,this._commandService=s,this._sheetsThreadCommentPopupService=u,this._sheetsThreadCommentModel=d,this._threadCommentPanelService=p,this._shortcutService=C,this._univerInstanceService=l,this._sheetPermissionInterceptorBaseController=S,this._initMenu(),this._initShortcut(),this._initComponent(),this._initCommandListener(),this._initPanelListener()}_initShortcut(){this._shortcutService.registerShortcut(Se)}_initCommandListener(){this._commandService.onCommandExecuted(r=>{if(r.id===v.SetSelectionsOperation.id){const n=r.params,{unitId:e,subUnitId:t,selections:i,type:s}=n;if((s===v.SelectionMoveType.MOVE_END||s===void 0)&&i[0].primary){const u=i[0].primary.actualRow,d=i[0].primary.actualColumn;if(!this._sheetsThreadCommentModel.showCommentMarker(e,t,u,d)){this._threadCommentPanelService.activeCommentId&&this._commandService.executeCommand(P.SetActiveCommentOperation.id);return}const p=this._sheetsThreadCommentModel.getByLocation(e,t,u,d);p&&this._commandService.executeCommand(P.SetActiveCommentOperation.id,{unitId:e,subUnitId:t,commentId:p})}}if(r.id===j.DeleteCommentMutation.id){const n=r.params,e=this._sheetsThreadCommentPopupService.activePopup;if(!e)return;const{unitId:t,subUnitId:i,commentId:s}=e;n.unitId===t&&n.subUnitId===i&&n.commentId===s&&this._sheetsThreadCommentPopupService.hidePopup()}})}_initMenu(){const{menu:r={}}=this._config;[ve,Ce].forEach(n=>{this._menuService.addMenuItem(n(this._injector),r)})}_initComponent(){[[J,le],[P.THREAD_COMMENT_PANEL,pe],[Z,X]].forEach(([r,n])=>{this._componentManager.register(r,n)})}_initPanelListener(){this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe(async r=>{var n;if(r){const{unitId:e,subUnitId:t,commentId:i,trigger:s}=r,u=this._sheetsThreadCommentModel.getComment(e,t,i);if(!u||u.resolved)return;const d=this._univerInstanceService.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(!d||d.getUnitId()!==e)return;((n=d.getActiveSheet())==null?void 0:n.getSheetId())!==t&&await this._commandService.executeCommand(v.SetWorksheetActiveOperation.id,{unitId:e,subUnitId:t});const l=V.singleReferenceToGrid(u.ref),{row:S,column:y}=l;if(!this._sheetPermissionInterceptorBaseController.permissionCheckWithRanges({workbookTypes:[v.WorkbookCommentPermission],worksheetTypes:[v.WorksheetViewPermission],rangeTypes:[v.RangeProtectionPermissionViewPoint]},[{startRow:S,startColumn:y,endRow:S,endColumn:y}]))return;const _=5;await this._commandService.executeCommand(T.ScrollToRangeOperation.id,{range:{startRow:Math.max(l.row-_,0),endRow:l.row+_,startColumn:Math.max(l.column-_,0),endColumn:l.column+_}}),this._sheetsThreadCommentPopupService.showPopup({unitId:e,subUnitId:t,row:l.row,col:l.column,commentId:u.id,trigger:s})}else this._sheetsThreadCommentPopupService.hidePopup()}))}},a.SheetsThreadCommentController=Ie([c.OnLifecycle(c.LifecycleStages.Starting,a.SheetsThreadCommentController),w(1,f.IMenuService),w(2,m.Inject(m.Injector)),w(3,m.Inject(f.ComponentManager)),w(4,m.Inject(c.LocaleService)),w(5,c.ICommandService),w(6,m.Inject(a.SheetsThreadCommentPopupService)),w(7,m.Inject(D.SheetsThreadCommentModel)),w(8,m.Inject(P.ThreadCommentPanelService)),w(9,f.IShortcutService),w(10,c.IUniverInstanceService),w(11,m.Inject(T.SheetPermissionInterceptorBaseController))],a.SheetsThreadCommentController);var Te=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,be=(o,r,n,e)=>{for(var t=e>1?void 0:e?ge(r,n):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(t=(e?s(r,n,t):s(t))||t);return e&&t&&Te(r,n,t),t},L=(o,r)=>(n,e)=>r(n,e,o);let k=class extends c.Disposable{constructor(o,r,n,e){super(),this._sheetInterceptorService=o,this._sheetsThreadCommentModel=r,this._univerInstanceService=n,this._renderManagerService=e,this._initViewModelIntercept(),this._initSkeletonChange()}_initViewModelIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(v.INTERCEPTOR_POINT.CELL_CONTENT,{handler:(o,r,n)=>{const{row:e,col:t,unitId:i,subUnitId:s}=r;return this._sheetsThreadCommentModel.showCommentMarker(i,s,e,t)?n({...o,markers:{...o==null?void 0:o.markers,tr:{color:"#FFBD37",size:6}}}):n(o)},priority:100}))}_initSkeletonChange(){const o=()=>{var s;const r=this._univerInstanceService.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(!r)return;const n=r.getUnitId(),e=(s=r.getActiveSheet())==null?void 0:s.getSheetId();if(!e){console.warn("No active sheet found");return}const t=this._renderManagerService.getRenderById(n),i=t==null?void 0:t.with(T.SheetSkeletonManagerService).getOrCreateSkeleton({sheetId:e});i==null||i.makeDirty(!0),i==null||i.calculate(),t&&t.mainComponent.makeForceDirty()};this.disposeWithMe(this._sheetsThreadCommentModel.commentUpdate$.subscribe(()=>{o()}))}};k=be([c.OnLifecycle(c.LifecycleStages.Ready,k),L(0,m.Inject(v.SheetInterceptorService)),L(1,m.Inject(D.SheetsThreadCommentModel)),L(2,c.IUniverInstanceService),L(3,oe.IRenderManagerService)],k);var ye=Object.defineProperty,Me=Object.getOwnPropertyDescriptor,we=(o,r,n,e)=>{for(var t=e>1?void 0:e?Me(r,n):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(t=(e?s(r,n,t):s(t))||t);return e&&t&&ye(r,n,t),t},x=(o,r)=>(n,e)=>r(n,e,o);const Oe=(o,r,n)=>{const e=V.singleReferenceToGrid(o),t=n.row-r.row,i=n.column-r.column,s={startColumn:e.column+i,startRow:e.row+t,endColumn:e.column+i,endRow:e.row+t};return V.serializeRange(s)};a.SheetsThreadCommentCopyPasteController=class extends c.Disposable{constructor(n,e){super();N(this,"_copyInfo");this._sheetClipboardService=n,this._sheetsThreadCommentModel=e,this._initClipboardHook()}_initClipboardHook(){this.disposeWithMe(this._sheetClipboardService.addClipboardHook({id:z,onBeforeCopy:(n,e,t)=>{this._copyInfo={unitId:n,subUnitId:e,range:t}},onPasteCells:(n,e,t,i)=>{const{unitId:s,subUnitId:u,range:d}=e,p={row:d.rows[0],column:d.cols[0]};if(i.copyType===T.COPY_TYPE.CUT&&this._copyInfo){const{range:C,unitId:l,subUnitId:S}=this._copyInfo,y={row:C.startRow,column:C.startColumn};if(!(s===l&&u===S)){const O=[];c.Range.foreach(C,(h,I)=>{const M=this._sheetsThreadCommentModel.getCommentWithChildren(l,S,h,I);M&&O.push(M)});const _=[],$=[],F=[],q=[],A=h=>{_.unshift({id:j.DeleteCommentMutation.id,params:{unitId:l,subUnitId:S,commentId:h.id}}),F.push({id:j.AddCommentMutation.id,params:{unitId:s,subUnitId:u,comment:{...h,ref:Oe(h.ref,y,p),unitId:s,subUnitId:u}}}),$.push({id:j.AddCommentMutation.id,params:{unitId:l,subUnitId:S,comment:h}}),q.unshift({id:j.DeleteCommentMutation.id,params:{unitId:s,subUnitId:u,commentId:h.id}})};return O.forEach(h=>{A(h.root),h.children.forEach(I=>{A(I)})}),{redos:[..._,...F],undos:[...q,...$]}}}return{redos:[],undos:[]}}}))}},a.SheetsThreadCommentCopyPasteController=we([c.OnLifecycle(c.LifecycleStages.Rendered,a.SheetsThreadCommentCopyPasteController),x(0,m.Inject(T.ISheetClipboardService)),x(1,m.Inject(D.SheetsThreadCommentModel))],a.SheetsThreadCommentCopyPasteController);var Ue=Object.defineProperty,je=Object.getOwnPropertyDescriptor,Ee=(o,r,n,e)=>{for(var t=e>1?void 0:e?je(r,n):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(t=(e?s(r,n,t):s(t))||t);return e&&t&&Ue(r,n,t),t},W=(o,r)=>(n,e)=>r(n,e,o);a.SheetsThreadCommentHoverController=class extends c.Disposable{constructor(r,n,e,t){super(),this._hoverManagerService=r,this._sheetsThreadCommentPopupService=n,this._sheetsThreadCommentModel=e,this._sheetPermissionInterceptorBaseController=t,this._initHoverEvent()}_initHoverEvent(){this.disposeWithMe(this._hoverManagerService.currentCell$.pipe(B.debounceTime(100)).subscribe(r=>{const n=this._sheetsThreadCommentPopupService.activePopup;if(r&&(n&&n.temp||!n)){const{location:e}=r,{unitId:t,subUnitId:i,row:s,col:u}=e,d=this._sheetsThreadCommentModel.getByLocation(t,i,s,u);if(d){if(!this._sheetPermissionInterceptorBaseController.permissionCheckWithRanges({workbookTypes:[v.WorkbookCommentPermission],worksheetTypes:[v.WorksheetViewPermission],rangeTypes:[v.RangeProtectionPermissionViewPoint]},[{startRow:s,startColumn:u,endRow:s,endColumn:u}]))return;const C=this._sheetsThreadCommentModel.getComment(t,i,d);C&&!C.resolved&&this._sheetsThreadCommentPopupService.showPopup({unitId:t,subUnitId:i,row:s,col:u,commentId:d,temp:!0})}else n&&this._sheetsThreadCommentPopupService.hidePopup()}}))}},a.SheetsThreadCommentHoverController=Ee([c.OnLifecycle(c.LifecycleStages.Rendered,a.SheetsThreadCommentHoverController),W(0,m.Inject(T.HoverManagerService)),W(1,m.Inject(a.SheetsThreadCommentPopupService)),W(2,m.Inject(D.SheetsThreadCommentModel)),W(3,m.Inject(T.SheetPermissionInterceptorBaseController))],a.SheetsThreadCommentHoverController);var Re=Object.defineProperty,De=Object.getOwnPropertyDescriptor,$e=(o,r,n,e)=>{for(var t=e>1?void 0:e?De(r,n):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(t=(e?s(r,n,t):s(t))||t);return e&&t&&Re(r,n,t),t},G=(o,r)=>(n,e)=>r(n,e,o);a.ThreadCommentRemoveSheetsController=class extends c.Disposable{constructor(r,n,e){super(),this._sheetInterceptorService=r,this._univerInstanceService=n,this._threadCommentModel=e,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:r=>{var n;if(r.id===v.RemoveSheetCommand.id){const e=r.params,t=e.unitId?this._univerInstanceService.getUnit(e.unitId):this._univerInstanceService.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(!t)return{redos:[],undos:[]};const i=t.getUnitId(),s=e.subUnitId||((n=t.getActiveSheet())==null?void 0:n.getSheetId());if(!s)return{redos:[],undos:[]};const{commentMap:u}=this._threadCommentModel.ensureMap(i,s),d=Array.from(Object.keys(u)),p=Array.from(Object.values(u)),C=d.map(S=>({id:j.DeleteCommentMutation.id,params:{unitId:i,subUnitId:s,commentId:S}})),l=p.map(S=>({id:j.AddCommentMutation.id,params:{unitId:i,subUnitId:s,comment:S}}));return{redos:C,undos:l}}return{redos:[],undos:[]}}}))}},a.ThreadCommentRemoveSheetsController=$e([c.OnLifecycle(c.LifecycleStages.Ready,a.ThreadCommentRemoveSheetsController),G(0,m.Inject(v.SheetInterceptorService)),G(1,c.IUniverInstanceService),G(2,m.Inject(j.ThreadCommentModel))],a.ThreadCommentRemoveSheetsController);var ee=Object.defineProperty,Ne=Object.getOwnPropertyDescriptor,Ve=(o,r,n)=>r in o?ee(o,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[r]=n,Ae=(o,r,n,e)=>{for(var t=e>1?void 0:e?Ne(r,n):r,i=o.length-1,s;i>=0;i--)(s=o[i])&&(t=(e?s(r,n,t):s(t))||t);return e&&t&&ee(r,n,t),t},te=(o,r)=>(n,e)=>r(n,e,o),ne=(o,r,n)=>Ve(o,typeof r!="symbol"?r+"":r,n);a.UniverSheetsThreadCommentPlugin=class extends c.Plugin{constructor(n={},e,t){super();N(this,"_pluginConfig");this._injector=e,this._commandService=t,this._pluginConfig=c.Tools.deepMerge({},Pe,n)}onStarting(n){[[a.SheetsThreadCommentController,{useFactory:()=>this._injector.createInstance(a.SheetsThreadCommentController,this._pluginConfig)}],[k],[a.SheetsThreadCommentCopyPasteController],[a.SheetsThreadCommentHoverController],[a.ThreadCommentRemoveSheetsController],[a.SheetsThreadCommentPopupService]].forEach(e=>{n.add(e)}),[H].forEach(e=>{this._commandService.registerCommand(e)})}},ne(a.UniverSheetsThreadCommentPlugin,"pluginName",z),ne(a.UniverSheetsThreadCommentPlugin,"type",c.UniverInstanceType.UNIVER_SHEET),a.UniverSheetsThreadCommentPlugin=Ae([c.DependentOn(P.UniverThreadCommentUIPlugin,D.UniverSheetsThreadCommentBasePlugin),te(1,m.Inject(m.Injector)),te(2,m.Inject(c.ICommandService))],a.UniverSheetsThreadCommentPlugin),Object.defineProperty(a,"Inject",{enumerable:!0,get:()=>m.Inject}),Object.defineProperty(a,"Injector",{enumerable:!0,get:()=>m.Injector}),Object.defineProperty(a,"ICommandService",{enumerable:!0,get:()=>c.ICommandService}),Object.defineProperty(a,"Plugin",{enumerable:!0,get:()=>c.Plugin}),Object.defineProperty(a,"UniverInstanceType",{enumerable:!0,get:()=>c.UniverInstanceType}),Object.defineProperty(a,"IThreadCommentMentionDataService",{enumerable:!0,get:()=>P.IThreadCommentMentionDataService}),Object.defineProperty(a,"UniverThreadCommentUIPlugin",{enumerable:!0,get:()=>P.UniverThreadCommentUIPlugin}),Object.defineProperty(a,"IThreadCommentDataSourceService",{enumerable:!0,get:()=>j.IThreadCommentDataSourceService}),Object.defineProperty(a,"SheetsThreadCommentModel",{enumerable:!0,get:()=>D.SheetsThreadCommentModel}),a.SHEETS_THREAD_COMMENT=z,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/sheets-thread-comment",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "private": false,
5
5
  "description": "Univer thread comment plugin",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -48,21 +48,21 @@
48
48
  "@wendellhu/redi": "0.15.4",
49
49
  "react": "^16.9.0 || ^17.0.0 || ^18.0.0",
50
50
  "rxjs": ">=7.0.0",
51
- "@univerjs/core": "0.1.15",
52
- "@univerjs/engine-formula": "0.1.15",
53
- "@univerjs/sheets-thread-comment-base": "0.1.15",
54
- "@univerjs/sheets": "0.1.15",
55
- "@univerjs/sheets-ui": "0.1.15",
56
- "@univerjs/thread-comment": "0.1.15",
57
- "@univerjs/engine-render": "0.1.15",
58
- "@univerjs/thread-comment-ui": "0.1.15",
59
- "@univerjs/ui": "0.1.15"
51
+ "@univerjs/core": "0.1.17",
52
+ "@univerjs/engine-formula": "0.1.17",
53
+ "@univerjs/engine-render": "0.1.17",
54
+ "@univerjs/sheets": "0.1.17",
55
+ "@univerjs/sheets-thread-comment-base": "0.1.17",
56
+ "@univerjs/sheets-ui": "0.1.17",
57
+ "@univerjs/thread-comment": "0.1.17",
58
+ "@univerjs/thread-comment-ui": "0.1.17",
59
+ "@univerjs/ui": "0.1.17"
60
60
  },
61
61
  "dependencies": {
62
- "@univerjs/icons": "^0.1.56",
63
- "@univerjs/thread-comment-ui": "0.1.15",
64
- "@univerjs/sheets-thread-comment-base": "0.1.15",
65
- "@univerjs/thread-comment": "0.1.15"
62
+ "@univerjs/icons": "^0.1.57",
63
+ "@univerjs/sheets-thread-comment-base": "0.1.17",
64
+ "@univerjs/thread-comment": "0.1.17",
65
+ "@univerjs/thread-comment-ui": "0.1.17"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@wendellhu/redi": "0.15.4",
@@ -70,15 +70,15 @@
70
70
  "react": "18.3.1",
71
71
  "rxjs": "^7.8.1",
72
72
  "typescript": "^5.4.5",
73
- "vite": "^5.2.13",
73
+ "vite": "^5.3.1",
74
74
  "vitest": "^1.6.0",
75
- "@univerjs/core": "0.1.15",
76
- "@univerjs/design": "0.1.15",
77
- "@univerjs/engine-formula": "0.1.15",
78
- "@univerjs/shared": "0.1.15",
79
- "@univerjs/thread-comment": "0.1.15",
80
- "@univerjs/thread-comment-ui": "0.1.15",
81
- "@univerjs/ui": "0.1.15"
75
+ "@univerjs/core": "0.1.17",
76
+ "@univerjs/design": "0.1.17",
77
+ "@univerjs/engine-formula": "0.1.17",
78
+ "@univerjs/shared": "0.1.17",
79
+ "@univerjs/thread-comment": "0.1.17",
80
+ "@univerjs/ui": "0.1.17",
81
+ "@univerjs/thread-comment-ui": "0.1.17"
82
82
  },
83
83
  "univerSpace": {
84
84
  ".": {