@univerjs/sheets 0.4.1 → 0.4.2-nightly.202410301606

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.
Files changed (76) hide show
  1. package/lib/add-worksheet-merge.command-0cuLfO_2.mjs +5939 -0
  2. package/lib/es/facade.js +1818 -0
  3. package/lib/es/index.js +1800 -7245
  4. package/lib/locale/en-US.js +17 -0
  5. package/lib/locale/fa-IR.js +17 -0
  6. package/lib/locale/ru-RU.js +17 -0
  7. package/lib/locale/vi-VN.js +17 -0
  8. package/lib/locale/zh-CN.js +17 -0
  9. package/lib/locale/zh-TW.js +17 -0
  10. package/lib/types/basics/row-column-value.d.ts +14 -0
  11. package/lib/types/commands/commands/__tests__/set-col-data.command.spec.d.ts +16 -0
  12. package/lib/types/commands/commands/__tests__/set-row-data.command.spec.d.ts +16 -0
  13. package/lib/types/commands/commands/__tests__/set-worksheet-default-style.command.spec.d.ts +16 -0
  14. package/lib/types/commands/commands/set-col-data.command.d.ts +7 -0
  15. package/lib/types/commands/commands/set-frozen.command.d.ts +13 -0
  16. package/lib/types/commands/commands/set-row-data.command.d.ts +7 -0
  17. package/lib/types/commands/commands/set-style.command.d.ts +1 -1
  18. package/lib/types/commands/commands/set-worksheet-col-width.command.d.ts +6 -0
  19. package/lib/types/commands/commands/set-worksheet-default-style.command.d.ts +2 -0
  20. package/lib/types/commands/commands/toggle-gridlines.command.d.ts +7 -0
  21. package/lib/types/commands/mutations/add-range-protection.mutation.d.ts +2 -2
  22. package/lib/types/commands/mutations/delete-range-protection.mutation.d.ts +3 -3
  23. package/lib/types/commands/mutations/set-col-data.mutation.d.ts +8 -0
  24. package/lib/types/commands/mutations/set-frozen.mutation.d.ts +8 -0
  25. package/lib/types/commands/mutations/set-row-data.mutation.d.ts +8 -0
  26. package/lib/types/commands/mutations/set-worksheet-col-width.mutation.d.ts +3 -0
  27. package/lib/types/commands/mutations/set-worksheet-default-style.mutation.d.ts +12 -0
  28. package/lib/types/commands/mutations/toggle-gridlines.mutation.d.ts +7 -0
  29. package/lib/types/controllers/config.schema.d.ts +4 -0
  30. package/lib/types/facade/__tests__/utils.spec.d.ts +16 -0
  31. package/lib/types/facade/f-permission.d.ts +106 -0
  32. package/lib/types/facade/f-range.d.ts +193 -0
  33. package/lib/types/facade/f-selection.d.ts +11 -0
  34. package/lib/types/facade/f-univer.d.ts +36 -0
  35. package/lib/types/facade/f-workbook.d.ts +105 -0
  36. package/lib/types/facade/f-worksheet.d.ts +408 -0
  37. package/lib/types/facade/index.d.ts +6 -0
  38. package/lib/types/facade/utils.d.ts +24 -0
  39. package/lib/types/index.d.ts +19 -7
  40. package/lib/types/model/range-protection.cache.d.ts +5 -2
  41. package/lib/types/services/border-style-manager.service.d.ts +2 -2
  42. package/lib/types/services/permission/permission-point/index.d.ts +2 -0
  43. package/lib/types/services/permission/permission-point/range/delete-protection.d.ts +13 -0
  44. package/lib/types/services/permission/permission-point/range/manage-collaborator.d.ts +13 -0
  45. package/lib/types/services/permission/permission-point/workbook/create-permission.d.ts +11 -0
  46. package/lib/types/services/permission/permission-point/worksheet/delete-protection.d.ts +12 -0
  47. package/lib/types/services/permission/range-permission/range-protection.ref-range.d.ts +3 -3
  48. package/lib/types/services/permission/range-permission/range-protection.service.d.ts +3 -2
  49. package/lib/types/services/permission/range-permission/util.d.ts +1 -0
  50. package/lib/types/services/permission/type.d.ts +1 -1
  51. package/lib/types/services/permission/workbook-permission/workbook-permission.service.d.ts +4 -1
  52. package/lib/types/services/permission/worksheet-permission/utils.d.ts +2 -2
  53. package/lib/types/services/selections/selection-manager.service.d.ts +2 -2
  54. package/lib/types/services/sheet-interceptor/sheet-interceptor.service.d.ts +38 -7
  55. package/lib/umd/facade.js +3 -0
  56. package/lib/umd/index.js +3 -3
  57. package/lib/umd/locale/en-US.js +1 -0
  58. package/lib/umd/locale/fa-IR.js +1 -0
  59. package/lib/umd/locale/ru-RU.js +1 -0
  60. package/lib/umd/locale/vi-VN.js +1 -0
  61. package/lib/umd/locale/zh-CN.js +1 -0
  62. package/lib/umd/locale/zh-TW.js +1 -0
  63. package/package.json +21 -18
  64. package/LICENSE +0 -176
  65. package/lib/cjs/index.js +0 -3
  66. package/lib/locale/en-US.json +0 -14
  67. package/lib/locale/fa-IR.json +0 -14
  68. package/lib/locale/ru-RU.json +0 -14
  69. package/lib/locale/vi-VN.json +0 -14
  70. package/lib/locale/zh-CN.json +0 -14
  71. package/lib/locale/zh-TW.json +0 -14
  72. package/lib/types/basics/cell-custom.d.ts +0 -12
  73. package/lib/types/commands/commands/set-frozen-cancel.command.d.ts +0 -2
  74. package/lib/types/commands/commands/set-hide-gridlines.command.d.ts +0 -7
  75. package/lib/types/commands/mutations/set-hide-gridlines.mutatiom.d.ts +0 -8
  76. /package/lib/types/basics/__tests__/{cell-custom.spec.d.ts → row-column-value.spec.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { IMutationInfo, Disposable, DisposableCollection, ICommandService, IUniverInstanceService } from '@univerjs/core';
2
2
  import { IAddRangeProtectionMutationParams } from '../../../commands/mutations/add-range-protection.mutation';
3
- import { IDeleteSelectionProtectionMutationParams } from '../../../commands/mutations/delete-range-protection.mutation';
3
+ import { IDeleteRangeProtectionMutationParams } from '../../../commands/mutations/delete-range-protection.mutation';
4
4
  import { ISetRangeProtectionMutationParams } from '../../../commands/mutations/set-range-protection.mutation';
5
5
  import { EffectRefRangeParams } from '../../../services/ref-range/type';
6
6
  import { RangeProtectionCache } from '../../../model/range-protection.cache';
@@ -30,8 +30,8 @@ export declare class RangeProtectionRefRangeService extends Disposable {
30
30
  params: ISetRangeProtectionMutationParams;
31
31
  }[];
32
32
  } | {
33
- redos: IMutationInfo<IDeleteSelectionProtectionMutationParams | IAddRangeProtectionMutationParams | ISetRangeProtectionMutationParams>[];
34
- undos: IMutationInfo<IDeleteSelectionProtectionMutationParams | IAddRangeProtectionMutationParams | ISetRangeProtectionMutationParams>[];
33
+ redos: IMutationInfo<IDeleteRangeProtectionMutationParams | IAddRangeProtectionMutationParams | ISetRangeProtectionMutationParams>[];
34
+ undos: IMutationInfo<IDeleteRangeProtectionMutationParams | IAddRangeProtectionMutationParams | ISetRangeProtectionMutationParams>[];
35
35
  };
36
36
  private _getRefRangeMutationsByDeleteCols;
37
37
  private _getRefRangeMutationsByDeleteRows;
@@ -1,4 +1,4 @@
1
- import { Disposable, IPermissionService, IResourceManagerService } from '@univerjs/core';
1
+ import { Disposable, IPermissionService, IResourceManagerService, IUniverInstanceService } from '@univerjs/core';
2
2
  import { RangeProtectionCache } from '../../../model/range-protection.cache';
3
3
  import { RangeProtectionRuleModel } from '../../../model/range-protection-rule.model';
4
4
  export declare class RangeProtectionService extends Disposable {
@@ -6,7 +6,8 @@ export declare class RangeProtectionService extends Disposable {
6
6
  private _permissionService;
7
7
  private _resourceManagerService;
8
8
  private _selectionProtectionCache;
9
- constructor(_selectionProtectionRuleModel: RangeProtectionRuleModel, _permissionService: IPermissionService, _resourceManagerService: IResourceManagerService, _selectionProtectionCache: RangeProtectionCache);
9
+ private _univerInstanceService;
10
+ constructor(_selectionProtectionRuleModel: RangeProtectionRuleModel, _permissionService: IPermissionService, _resourceManagerService: IResourceManagerService, _selectionProtectionCache: RangeProtectionCache, _univerInstanceService: IUniverInstanceService);
10
11
  private _initRuleChange;
11
12
  private _initSnapshot;
12
13
  }
@@ -3,4 +3,5 @@ import { RangeProtectionPermissionEditPoint } from '../permission-point/range/ed
3
3
  import { RangeProtectionPermissionViewPoint } from '../permission-point/range/view';
4
4
  export type IRangePermissionPoint = RangeProtectionPermissionEditPoint | RangeProtectionPermissionViewPoint;
5
5
  export declare const getAllRangePermissionPoint: () => (typeof RangeProtectionPermissionEditPoint)[];
6
+ export declare const baseProtectionActions: UnitAction[];
6
7
  export declare const getDefaultRangePermission: (unitId?: string, subUnitId?: string, permissionId?: string) => Record<UnitAction, boolean>;
@@ -1,11 +1,11 @@
1
1
  import { UnitObject } from '@univerjs/protocol';
2
2
  export interface IWorksheetProtectionRule {
3
3
  permissionId: string;
4
- name?: string;
5
4
  description?: string;
6
5
  unitType: UnitObject;
7
6
  unitId: string;
8
7
  subUnitId: string;
8
+ name: string;
9
9
  }
10
10
  export interface IWorksheetProtectionPointRule {
11
11
  unitId: string;
@@ -1,9 +1,12 @@
1
1
  import { Disposable, IPermissionService, IUniverInstanceService } from '@univerjs/core';
2
2
  import { RangeProtectionRuleModel } from '../../../model/range-protection-rule.model';
3
+ import { WorksheetProtectionPointModel, WorksheetProtectionRuleModel } from '../worksheet-permission';
3
4
  export declare class WorkbookPermissionService extends Disposable {
4
5
  private _permissionService;
5
6
  private _univerInstanceService;
6
7
  private _rangeProtectionRuleModel;
7
- constructor(_permissionService: IPermissionService, _univerInstanceService: IUniverInstanceService, _rangeProtectionRuleModel: RangeProtectionRuleModel);
8
+ private _worksheetProtectionRuleModel;
9
+ private _worksheetProtectionPointModel;
10
+ constructor(_permissionService: IPermissionService, _univerInstanceService: IUniverInstanceService, _rangeProtectionRuleModel: RangeProtectionRuleModel, _worksheetProtectionRuleModel: WorksheetProtectionRuleModel, _worksheetProtectionPointModel: WorksheetProtectionPointModel);
8
11
  private _init;
9
12
  }
@@ -1,5 +1,5 @@
1
1
  import { UnitAction } from '@univerjs/protocol';
2
- import { WorksheetCopyPermission, WorksheetEditPermission } from '../permission-point';
3
- export declare const getAllWorksheetPermissionPoint: () => (typeof WorksheetEditPermission)[];
2
+ import { WorksheetCopyPermission, WorksheetDeleteProtectionPermission } from '../permission-point';
3
+ export declare const getAllWorksheetPermissionPoint: () => (typeof WorksheetDeleteProtectionPermission)[];
4
4
  export declare const getAllWorksheetPermissionPointByPointPanel: () => (typeof WorksheetCopyPermission)[];
5
5
  export declare const defaultWorksheetPermissionPoint: UnitAction[];
@@ -1,5 +1,5 @@
1
1
  import { DeepReadonly, ISelectionCell, Nullable, Workbook, Disposable, IUniverInstanceService, RxDisposable } from '@univerjs/core';
2
- import { Observable } from 'rxjs';
2
+ import { Observable, BehaviorSubject } from 'rxjs';
3
3
  import { ISelectionWithStyle } from '../../basics/selection';
4
4
  export interface ISelectionManagerSearchParam {
5
5
  unitId: string;
@@ -58,7 +58,7 @@ export declare class WorkbookSelections extends Disposable {
58
58
  readonly selectionMoveStart$: Observable<Nullable<ISelectionWithStyle[]>>;
59
59
  private readonly _selectionMoving$;
60
60
  readonly selectionMoving$: Observable<Nullable<ISelectionWithStyle[]>>;
61
- private readonly _selectionMoveEnd$;
61
+ readonly _selectionMoveEnd$: BehaviorSubject<ISelectionWithStyle[]>;
62
62
  readonly selectionMoveEnd$: Observable<ISelectionWithStyle[]>;
63
63
  private readonly _selectionSet$;
64
64
  readonly selectionSet$: Observable<ISelectionWithStyle[]>;
@@ -1,4 +1,5 @@
1
- import { ICommandInfo, IDisposable, IInterceptor, IRange, IUndoRedoCommandInfosByInterceptor, Nullable, Disposable, InterceptorEffectEnum, IUniverInstanceService } from '@univerjs/core';
1
+ import { ICellData, ICellDataForSheetInterceptor, ICommandInfo, IDisposable, IInterceptor, IRange, IUndoRedoCommandInfosByInterceptor, Nullable, Workbook, Worksheet, Disposable, InterceptorEffectEnum, InterceptorManager, IUniverInstanceService } from '@univerjs/core';
2
+ import { ISheetLocation } from './utils/interceptor';
2
3
  export interface IBeforeCommandInterceptor {
3
4
  priority?: number;
4
5
  performCheck(info: ICommandInfo): Promise<boolean>;
@@ -16,6 +17,12 @@ export interface IRangeInterceptors {
16
17
  priority?: number;
17
18
  getMutations(rangesInfo: IRangesInfo): IUndoRedoCommandInfosByInterceptor;
18
19
  }
20
+ interface ISheetLocationForEditor extends ISheetLocation {
21
+ origin: Nullable<ICellData>;
22
+ }
23
+ export declare const BEFORE_CELL_EDIT: IInterceptor<ICellDataForSheetInterceptor, ISheetLocationForEditor>;
24
+ export declare const AFTER_CELL_EDIT: IInterceptor<ICellDataForSheetInterceptor, ISheetLocationForEditor>;
25
+ export declare const AFTER_CELL_EDIT_ASYNC: IInterceptor<Promise<Nullable<ICellDataForSheetInterceptor>>, ISheetLocationForEditor>;
19
26
  /**
20
27
  * This class expose methods for sheet features to inject code to sheet underlying logic.
21
28
  */
@@ -27,10 +34,38 @@ export declare class SheetInterceptorService extends Disposable {
27
34
  private _beforeCommandInterceptor;
28
35
  private readonly _workbookDisposables;
29
36
  private readonly _worksheetDisposables;
37
+ readonly writeCellInterceptor: InterceptorManager<{
38
+ BEFORE_CELL_EDIT: IInterceptor<ICellDataForSheetInterceptor, ISheetLocationForEditor>;
39
+ AFTER_CELL_EDIT: IInterceptor<ICellDataForSheetInterceptor, ISheetLocationForEditor>;
40
+ AFTER_CELL_EDIT_ASYNC: IInterceptor<Promise<Nullable<ICellDataForSheetInterceptor>>, ISheetLocationForEditor>;
41
+ }>;
30
42
  /** @ignore */
31
43
  constructor(_univerInstanceService: IUniverInstanceService);
32
44
  dispose(): void;
45
+ /**
46
+ * Add a listener function to a specific command to add affiliated mutations. It should be called in controllers.
47
+ *
48
+ * Pairs with {@link onCommandExecute}.
49
+ *
50
+ * @param interceptor
51
+ * @returns
52
+ */
33
53
  interceptCommand(interceptor: ICommandInterceptor): IDisposable;
54
+ /**
55
+ * When command is executing, call this method to gether undo redo mutations from upper features.
56
+ * @param command
57
+ * @returns
58
+ */
59
+ onCommandExecute(info: ICommandInfo): IUndoRedoCommandInfosByInterceptor;
60
+ /**
61
+ * Add a listener function to a specific command to deteminte if the command can execute mutations. It should be
62
+ * called in controllers.
63
+ *
64
+ * Pairs with {@link beforeCommandExecute}.
65
+ *
66
+ * @param interceptor
67
+ * @returns
68
+ */
34
69
  interceptBeforeCommand(interceptor: IBeforeCommandInterceptor): IDisposable;
35
70
  /**
36
71
  * before command execute, call this method to get the flag of whether it can be executed the command,
@@ -44,16 +79,12 @@ export declare class SheetInterceptorService extends Disposable {
44
79
  * @returns IDisposable
45
80
  */
46
81
  interceptRanges(interceptor: IRangeInterceptors): IDisposable;
47
- /**
48
- * When command is executing, call this method to gether undo redo mutations from upper features.
49
- * @param command
50
- * @returns
51
- */
52
- onCommandExecute(info: ICommandInfo): IUndoRedoCommandInfosByInterceptor;
53
82
  generateMutationsByRanges(info: IRangesInfo): IUndoRedoCommandInfosByInterceptor;
83
+ onWriteCell(workbook: Workbook, worksheet: Worksheet, row: number, col: number, cellData: ICellData): Promise<Nullable<ICellDataForSheetInterceptor>>;
54
84
  intercept<T extends IInterceptor<any, any>>(name: T, interceptor: T): IDisposable;
55
85
  fetchThroughInterceptors<T, C>(name: IInterceptor<T, C>, effect?: InterceptorEffectEnum): (initValue: Nullable<T>, initContext: C) => Nullable<T>;
56
86
  private _interceptWorkbook;
57
87
  private _disposeWorkbookInterceptor;
58
88
  private _disposeSheetInterceptor;
59
89
  }
90
+ export {};
@@ -0,0 +1,3 @@
1
+ (function(E,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("rxjs"),require("@univerjs/engine-formula"),require("@univerjs/engine-numfmt")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/sheets","rxjs","@univerjs/engine-formula","@univerjs/engine-numfmt"],r):(E=typeof globalThis<"u"?globalThis:E||self,r(E.UniverSheetsFacade={},E.UniverCore,E.UniverSheets,E.rxjs,E.UniverEngineFormula,E.UniverEngineNumfmt))})(this,function(E,r,L,V,mt,mn){"use strict";var fs=Object.defineProperty;var Rs=(E,r,L)=>r in E?fs(E,r,{enumerable:!0,configurable:!0,writable:!0,value:L}):E[r]=L;var T=(E,r,L)=>Rs(E,typeof r!="symbol"?r+"":r,L);var gn=Object.defineProperty,hn=Object.getOwnPropertyDescriptor,vn=(o,e,t,n)=>{for(var s=n>1?void 0:n?hn(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&gn(e,t,s),s},se=(o,e)=>(t,n)=>e(t,n,o);E.FPermission=class extends r.FBase{constructor(e,t,n,s,i,a,u){super(),this._injector=e,this._commandService=t,this._permissionService=n,this._worksheetProtectionRuleModel=s,this._rangeProtectionRuleModel=i,this._worksheetProtectionPointRuleModel=a,this._authzIoService=u}setWorkbookPermissionPoint(e,t,n){const s=new t(e);this._permissionService.getPermissionPoint(s.id)||this._permissionService.addPermissionPoint(s),this._permissionService.updatePermissionPoint(s.id,n)}setWorkbookEditPermission(e,t){this.setWorkbookPermissionPoint(e,L.WorkbookEditablePermission,t)}async addWorksheetBasePermission(e,t){if(this._rangeProtectionRuleModel.getSubunitRuleList(e,t).length>0)throw new Error("sheet protection cannot intersect with range protection");const s=await this._authzIoService.create({objectType:L.UnitObject.Worksheet});if(this._commandService.syncExecuteCommand(L.AddWorksheetProtectionMutation.id,{unitId:e,subUnitId:t,rule:{permissionId:s,unitType:L.UnitObject.Worksheet,unitId:e,subUnitId:t}}))return s}removeWorksheetPermission(e,t){this._commandService.syncExecuteCommand(L.DeleteWorksheetProtectionMutation.id,{unitId:e,subUnitId:t}),[...L.getAllWorksheetPermissionPoint(),...L.getAllWorksheetPermissionPointByPointPanel()].forEach(n=>{const s=new n(e,t);this._permissionService.updatePermissionPoint(s.id,!0)}),this._worksheetProtectionPointRuleModel.deleteRule(e,t)}async setWorksheetPermissionPoint(e,t,n,s){const i=this._worksheetProtectionRuleModel.getRule(e,t);let a;if(n===L.WorksheetEditPermission||n===L.WorksheetViewPermission)if(i)a=i.permissionId;else{if(this._rangeProtectionRuleModel.getSubunitRuleList(e,t).length>0)throw new Error("sheet protection cannot intersect with range protection");a=await this.addWorksheetBasePermission(e,t)}else{const l=this._worksheetProtectionPointRuleModel.getRule(e,t);l?a=l.permissionId:(a=await this._authzIoService.create({objectType:L.UnitObject.Worksheet}),this._commandService.executeCommand(L.SetWorksheetPermissionPointsMutation.id,{unitId:e,subUnitId:t,permissionId:a}))}const d=new n(e,t);return this._permissionService.getPermissionPoint(d.id)||this._permissionService.addPermissionPoint(d),this._permissionService.updatePermissionPoint(d.id,s),a}async addRangeBaseProtection(e,t,n){const s=await this._authzIoService.create({objectType:L.UnitObject.SelectRange}),i=`ruleId_${r.generateRandomId(6)}`;if(this._worksheetProtectionRuleModel.getRule(e,t))throw new Error("sheet protection cannot intersect with range protection");if(this._rangeProtectionRuleModel.getSubunitRuleList(e,t).some(l=>l.ranges.some(m=>n.some(g=>r.Rectangle.intersects(g,m)))))throw new Error("range protection cannot intersect");if(this._commandService.syncExecuteCommand(L.AddRangeProtectionMutation.id,{unitId:e,subUnitId:t,rules:[{permissionId:s,unitType:L.UnitObject.SelectRange,unitId:e,subUnitId:t,ranges:n,id:i}]}))return{permissionId:s,ruleId:i}}removeRangeProtection(e,t,n){this._commandService.syncExecuteCommand(L.DeleteRangeProtectionMutation.id,{unitId:e,subUnitId:t,ruleIds:n})&&this._rangeProtectionRuleModel.getSubunitRuleList(e,t).length===0&&(this._worksheetProtectionPointRuleModel.deleteRule(e,t),[...L.getAllWorksheetPermissionPointByPointPanel()].forEach(a=>{const u=new a(e,t);this._permissionService.updatePermissionPoint(u.id,u.value)}))}setRangeProtectionPermissionPoint(e,t,n,s,i){const a=new s(e,t,n);this._permissionService.getPermissionPoint(a.id)||this._permissionService.addPermissionPoint(a),this._permissionService.updatePermissionPoint(a.id,i)}setRangeProtectionRanges(e,t,n,s){const i=this._rangeProtectionRuleModel.getRule(e,t,n);if(i){if(this._rangeProtectionRuleModel.getSubunitRuleList(e,t).filter(d=>d.id!==n).some(d=>d.ranges.some(c=>s.some(l=>r.Rectangle.intersects(l,c)))))throw new Error("range protection cannot intersect");this._commandService.syncExecuteCommand(L.SetRangeProtectionMutation.id,{unitId:e,subUnitId:t,ruleId:n,rule:{...i,ranges:s}})}}},E.FPermission=vn([se(0,r.Inject(r.Injector)),se(1,r.ICommandService),se(2,r.IPermissionService),se(3,r.Inject(L.WorksheetProtectionRuleModel)),se(4,r.Inject(L.RangeProtectionRuleModel)),se(5,r.Inject(L.WorksheetProtectionPointModel)),se(6,r.Inject(r.IAuthzIoService))],E.FPermission);const Cn=(o,e)=>({subUnitId:e.sheet.id,unitId:e.unitId,subUnitName:e.sheet.name}),Le={id:"sheet.mutation.insert-sheet",type:r.CommandType.MUTATION,handler:(o,e)=>{const t=o.get(r.IUniverInstanceService),{sheet:n,index:s,unitId:i}=e,a=t.getUniverSheetInstance(i);return a?a.addWorksheet(n.id,s,n):!1}};function fn(o,e){const{unitId:t}=e,n=t?o.getUniverSheetInstance(t):o.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);return n?{workbook:n,unitId:n.getUnitId()}:null}function b(o,e={}){const{unitId:t,subUnitId:n}=e,s=t?o.getUniverSheetInstance(t):o.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);if(!s)return null;const i=n?s.getSheetBySheetId(n):s.getActiveSheet(!0);return i?{worksheet:i,workbook:s,unitId:s.getUnitId(),subUnitId:i.getSheetId()}:null}function Rn(o,e){const{unitId:t,subUnitId:n}=e,s=o.getUniverSheetInstance(t);if(!s)return null;const i=s.getSheetBySheetId(n);return i?{worksheet:i,workbook:s}:null}const Sn=(o,e)=>{const t=o.get(r.IUniverInstanceService),{subUnitId:n,unitId:s}=e,i=Rn(t,e);if(!i)throw new Error("[RemoveSheetUndoMutationFactory]: Worksheet is null error!");const{workbook:a,worksheet:u}=i,d=u.getConfig();return{index:a.getConfig().sheetOrder.findIndex(m=>m===n),sheet:d,unitId:s}},Me={id:"sheet.mutation.remove-sheet",type:r.CommandType.MUTATION,handler:(o,e)=>{const t=o.get(r.IUniverInstanceService),{subUnitId:n,unitId:s}=e,i=t.getUniverSheetInstance(s);return i?i.removeSheet(n):!1}},gt={id:"sheet.command.insert-sheet",type:r.CommandType.COMMAND,handler:(o,e)=>{var f;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(r.LocaleService),a=fn(s,{unitId:e==null?void 0:e.unitId});if(!a)return!1;const{unitId:u,workbook:d}=a;let c=d.getSheets().length;const l=e==null?void 0:e.sheet,m=l==null?void 0:l.id,g=r.mergeWorksheetSnapshotWithDefault(l||{});e?(c=(f=e.index)!=null?f:c,g.id=m||r.Tools.generateRandomId(),g.name=(l==null?void 0:l.name)||d.generateNewSheetName(`${i.t("sheets.tabs.sheet")}`)):(g.id=r.Tools.generateRandomId(),g.name=d.generateNewSheetName(`${i.t("sheets.tabs.sheet")}`));const h={index:c,sheet:g,unitId:u},v=Cn(o,h);return t.syncExecuteCommand(Le.id,h)?(n.pushUndoRedo({unitID:u,undoMutations:[{id:Me.id,params:v}],redoMutations:[{id:Le.id,params:h}]}),!0):!1}},In=r.createInterceptorKey("CELL_CONTENT"),wn=r.createInterceptorKey("ROW_FILTERED"),_e={CELL_CONTENT:In,ROW_FILTERED:wn};var pn=Object.defineProperty,Mn=Object.getOwnPropertyDescriptor,_n=(o,e,t,n)=>{for(var s=n>1?void 0:n?Mn(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&pn(e,t,s),s},yn=(o,e)=>(t,n)=>e(t,n,o);const ht=r.createInterceptorKey("BEFORE_CELL_EDIT"),Ve=r.createInterceptorKey("AFTER_CELL_EDIT"),je=r.createInterceptorKey("AFTER_CELL_EDIT_ASYNC");let D=class extends r.Disposable{constructor(e){super();T(this,"_interceptorsByName",new Map);T(this,"_commandInterceptors",[]);T(this,"_rangeInterceptors",[]);T(this,"_beforeCommandInterceptor",[]);T(this,"_workbookDisposables",new Map);T(this,"_worksheetDisposables",new Map);T(this,"writeCellInterceptor",new r.InterceptorManager({BEFORE_CELL_EDIT:ht,AFTER_CELL_EDIT:Ve,AFTER_CELL_EDIT_ASYNC:je}));this._univerInstanceService=e,this.disposeWithMe(this._univerInstanceService.getTypeOfUnitAdded$(r.UniverInstanceType.UNIVER_SHEET).subscribe(t=>{this._interceptWorkbook(t)})),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitDisposed$(r.UniverInstanceType.UNIVER_SHEET).subscribe(t=>this._disposeWorkbookInterceptor(t))),this.intercept(_e.CELL_CONTENT,{priority:-1,effect:r.InterceptorEffectEnum.Style|r.InterceptorEffectEnum.Value,handler(t,n){const s=n.worksheet.getCellRaw(n.row,n.col);return t?{...s,...t}:s}}),this.disposeWithMe(this.writeCellInterceptor.intercept(Ve,{priority:-1,handler:t=>t})),this.disposeWithMe(this.writeCellInterceptor.intercept(ht,{priority:-1,handler:t=>t})),this.disposeWithMe(this.writeCellInterceptor.intercept(je,{priority:-1,handler:t=>t}))}dispose(){super.dispose(),this._workbookDisposables.forEach(e=>e.dispose()),this._workbookDisposables.clear(),this._worksheetDisposables.clear()}interceptCommand(e){if(this._commandInterceptors.includes(e))throw new Error("[SheetInterceptorService]: Interceptor already exists!");return this._commandInterceptors.push(e),this._commandInterceptors.sort((t,n)=>{var s,i;return((s=n.priority)!=null?s:0)-((i=t.priority)!=null?i:0)}),this.disposeWithMe(r.toDisposable(()=>r.remove(this._commandInterceptors,e)))}onCommandExecute(e){const t=this._commandInterceptors.map(n=>n.getMutations(e));return{preUndos:t.map(n=>{var s;return(s=n.preUndos)!=null?s:[]}).flat(),undos:t.map(n=>n.undos).flat(),preRedos:t.map(n=>{var s;return(s=n.preRedos)!=null?s:[]}).flat(),redos:t.map(n=>n.redos).flat()}}interceptBeforeCommand(e){if(this._beforeCommandInterceptor.includes(e))throw new Error("[SheetInterceptorService]: Interceptor already exists!");return this._beforeCommandInterceptor.push(e),this._beforeCommandInterceptor.sort((t,n)=>{var s,i;return((s=n.priority)!=null?s:0)-((i=t.priority)!=null?i:0)}),this.disposeWithMe(r.toDisposable(()=>r.remove(this._beforeCommandInterceptor,e)))}async beforeCommandExecute(e){return(await Promise.all(this._beforeCommandInterceptor.map(n=>n.performCheck(e)))).every(n=>n)}interceptRanges(e){if(this._rangeInterceptors.includes(e))throw new Error("[SheetInterceptorService]: Interceptor already exists!");return this._rangeInterceptors.push(e),this._rangeInterceptors.sort((t,n)=>{var s,i;return((s=n.priority)!=null?s:0)-((i=t.priority)!=null?i:0)}),this.disposeWithMe(r.toDisposable(()=>r.remove(this._rangeInterceptors,e)))}generateMutationsByRanges(e){const t=this._rangeInterceptors.map(n=>n.getMutations(e));return{preUndos:t.map(n=>{var s;return(s=n.preUndos)!=null?s:[]}).flat(),undos:t.map(n=>n.undos).flat(),preRedos:t.map(n=>{var s;return(s=n.preRedos)!=null?s:[]}).flat(),redos:t.map(n=>n.redos).flat()}}async onWriteCell(e,t,n,s,i){const a={subUnitId:t.getSheetId(),unitId:e.getUnitId(),workbook:e,worksheet:t,row:n,col:s,origin:r.Tools.deepClone(i)},u=this.writeCellInterceptor.fetchThroughInterceptors(Ve)(i,a);return await this.writeCellInterceptor.fetchThroughInterceptors(je)(Promise.resolve(u),a)}intercept(e,t){const n=e;this._interceptorsByName.has(n)||this._interceptorsByName.set(n,[]);const s=this._interceptorsByName.get(n);s.push(t);const i=s.sort((a,u)=>{var d,c;return((d=u.priority)!=null?d:0)-((c=a.priority)!=null?c:0)});if(n===_e.CELL_CONTENT){this._interceptorsByName.set(`${n}-${r.InterceptorEffectEnum.Style|r.InterceptorEffectEnum.Value}`,i);const a=r.InterceptorEffectEnum.Style|r.InterceptorEffectEnum.Value;this._interceptorsByName.set(`${n}-${r.InterceptorEffectEnum.Style}`,i.filter(u=>((u.effect||a)&r.InterceptorEffectEnum.Style)>0)),this._interceptorsByName.set(`${n}-${r.InterceptorEffectEnum.Value}`,i.filter(u=>((u.effect||a)&r.InterceptorEffectEnum.Value)>0))}else this._interceptorsByName.set(n,i);return this.disposeWithMe(r.toDisposable(()=>r.remove(this._interceptorsByName.get(n),t)))}fetchThroughInterceptors(e,t){const n=t===void 0?e:`${e}-${t}`,s=this._interceptorsByName.get(n);return r.composeInterceptors(s||[])}_interceptWorkbook(e){const t=new r.DisposableCollection,n=e.getUnitId(),s=this,i=a=>{const u=a.getSheetId();a.__interceptViewModel(d=>{const c=new r.DisposableCollection;s._worksheetDisposables.set(vt(n,a),c),c.add(d.registerCellContentInterceptor({getCell(l,m,g){const h=a.getCellRaw(l,m);return s.fetchThroughInterceptors(_e.CELL_CONTENT,g)(h,{unitId:n,subUnitId:u,row:l,col:m,worksheet:a,workbook:e,rawData:h})}})),c.add(d.registerRowFilteredInterceptor({getRowFiltered(l){return!!s.fetchThroughInterceptors(_e.ROW_FILTERED)(!1,{unitId:n,subUnitId:u,row:l,workbook:e,worksheet:a})}}))})};e.getSheets().forEach(a=>i(a)),t.add(e.sheetCreated$.subscribe(a=>i(a))),t.add(r.toDisposable(()=>e.getSheets().forEach(a=>this._disposeSheetInterceptor(n,a)))),t.add(e.sheetDisposed$.subscribe(a=>this._disposeSheetInterceptor(n,a))),this._workbookDisposables.set(n,t)}_disposeWorkbookInterceptor(e){const t=e.getUnitId(),n=this._workbookDisposables.get(t);n&&(n.dispose(),this._workbookDisposables.delete(t))}_disposeSheetInterceptor(e,t){const n=vt(e,t),s=this._worksheetDisposables.get(n);s&&(s.dispose(),this._worksheetDisposables.delete(n))}};D=_n([yn(0,r.IUniverInstanceService)],D);function vt(o,e){return`${o}|${e.getSheetId()}`}const Ct={id:"sheet.command.remove-sheet",type:r.CommandType.COMMAND,handler:async(o,e)=>{var R,S;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(D),a=b(s,e);if(!a)return!1;const{unitId:u,subUnitId:d,workbook:c,worksheet:l}=a;if(c.getSheets().length<=1)return!1;const m={subUnitId:d,unitId:u,subUnitName:l.getName()},g=Sn(o,m),h=i.onCommandExecute({id:Ct.id,params:{unitId:u,subUnitId:d}}),v=[...(R=h.preRedos)!=null?R:[],{id:Me.id,params:m},...h.redos],C=[...(S=h.preUndos)!=null?S:[],{id:Le.id,params:g},...h.undos];return r.sequenceExecute(v,t).result?(n.pushUndoRedo({unitID:u,undoMutations:C,redoMutations:v}),!0):!1}};var Un=Object.defineProperty,kn=Object.getOwnPropertyDescriptor,bn=(o,e,t,n)=>{for(var s=n>1?void 0:n?kn(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&Un(e,t,s),s},En=(o,e)=>(t,n)=>e(t,n,o);let P=class extends r.RxDisposable{constructor(e){super();T(this,"selectionMoveStart$");T(this,"selectionMoving$");T(this,"selectionMoveEnd$");T(this,"_workbookSelections",new Map);this._instanceSrv=e,this._init()}get _currentSelectionPos(){const e=this._instanceSrv.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);if(!e)return null;const t=e.getActiveSheet();return{unitId:e.getUnitId(),sheetId:t.getSheetId()}}get currentSelectionParam(){return this._currentSelectionPos}_init(){const e=this._instanceSrv.getCurrentTypeOfUnit$(r.UniverInstanceType.UNIVER_SHEET).pipe(V.shareReplay(1),V.takeUntil(this.dispose$));this.selectionMoveStart$=e.pipe(V.switchMap(t=>t?this._ensureWorkbookSelection(t.getUnitId()).selectionMoveStart$:V.of())),this.selectionMoving$=e.pipe(V.switchMap(t=>t?this._ensureWorkbookSelection(t.getUnitId()).selectionMoving$:V.of())),this.selectionMoveEnd$=e.pipe(V.switchMap(t=>t?this._ensureWorkbookSelection(t.getUnitId()).selectionMoveEnd$:V.of([]))),this._instanceSrv.getTypeOfUnitDisposed$(r.UniverInstanceType.UNIVER_SHEET).pipe(V.takeUntil(this.dispose$)).subscribe(t=>{this._removeWorkbookSelection(t.getUnitId())})}clear(){this._workbookSelections.forEach(e=>e.clear())}getCurrentSelections(){return this._getCurrentSelections()}getCurrentLastSelection(){const e=this._getCurrentSelections();return e==null?void 0:e[e.length-1]}addSelections(e,t,n){if(typeof e=="string"){this._ensureWorkbookSelection(e).addSelections(t,n);return}const s=this._currentSelectionPos;if(!s)throw new Error("[SheetsSelectionsService]: cannot find current selection position!");const{unitId:i,sheetId:a}=s;this._ensureWorkbookSelection(i).addSelections(a,e)}setSelections(e,t,n,s){if(typeof e=="string"){this._ensureWorkbookSelection(e).setSelections(t,n,s!=null?s:2);return}const i=this._currentSelectionPos;if(!i)throw new Error("[SheetsSelectionsService]: cannot find current selection position!");const{unitId:a,sheetId:u}=i;this._ensureWorkbookSelection(a).setSelections(u,e!=null?e:n,t!=null?t:2)}clearCurrentSelections(){this._getCurrentSelections().splice(0)}isOverlapping(){const e=this.getCurrentSelections();return e==null?!1:e.some(({range:t},n)=>e.some(({range:s},i)=>n===i?!1:t.startRow<=s.endRow&&t.endRow>=s.startRow&&t.startColumn<=s.endColumn&&t.endColumn>=s.startColumn))}_getCurrentSelections(){const e=this._currentSelectionPos;if(!e)return[];const{unitId:t,sheetId:n}=e;return this._ensureWorkbookSelection(t).getSelectionOfWorksheet(n)}getWorkbookSelections(e){return this._ensureWorkbookSelection(e)}_ensureWorkbookSelection(e){let t=this._workbookSelections.get(e);if(!t){const n=this._instanceSrv.getUnit(e);if(!n)throw new Error(`[SheetsSelectionsService]: cannot resolve unit with id "${e}"!`);t=new Tn(n),this._workbookSelections.set(e,t)}return t}_removeWorkbookSelection(e){this._workbookSelections.delete(e)}};P=bn([En(0,r.IUniverInstanceService)],P);class Tn extends r.Disposable{constructor(t){super();T(this,"_selectionMoveStart$",new V.Subject);T(this,"selectionMoveStart$",this._selectionMoveStart$.asObservable());T(this,"_selectionMoving$",new V.Subject);T(this,"selectionMoving$",this._selectionMoving$.asObservable());T(this,"_selectionMoveEnd$",new V.BehaviorSubject([]));T(this,"selectionMoveEnd$",this._selectionMoveEnd$.asObservable());T(this,"_selectionSet$",new V.BehaviorSubject([]));T(this,"selectionSet$",this._selectionSet$.asObservable());T(this,"_beforeSelectionMoveEnd$",new V.BehaviorSubject([]));T(this,"beforeSelectionMoveEnd$",this._beforeSelectionMoveEnd$.asObservable());T(this,"_worksheetSelections",new Map);this._workbook=t}dispose(){super.dispose(),this._beforeSelectionMoveEnd$.complete(),this._selectionMoveEnd$.complete(),this._selectionMoving$.complete(),this._selectionMoveStart$.complete()}clear(){this._worksheetSelections.clear(),this._emitOnEnd([])}addSelections(t,n){const s=this._ensureSheetSelection(t);s.push(...n),this._emitOnEnd(s)}setSelections(t,n=[],s){switch(this._ensureSheetSelection(t).length=0,this._ensureSheetSelection(t).push(...n),s){case 0:this._selectionMoveStart$.next(n);break;case 1:this._selectionMoving$.next(n);break;case 2:this._emitOnEnd(n);break;case 3:{this._selectionSet$.next(n);break}default:this._emitOnEnd(n);break}}getCurrentSelections(){return this._getCurrentSelections()}getSelectionOfWorksheet(t){return this._worksheetSelections.has(t)?this._worksheetSelections.get(t):[]}_getCurrentSelections(){return this.getSelectionOfWorksheet(this._workbook.getActiveSheet().getSheetId())}getCurrentLastSelection(){const t=this._getCurrentSelections();return t[t.length-1]}_ensureSheetSelection(t){let n=this._worksheetSelections.get(t);return n||(n=[],this._worksheetSelections.set(t,n)),n}_emitOnEnd(t){this._beforeSelectionMoveEnd$.next(t),this._selectionMoveEnd$.next(t)}}const Pn="DISABLE_NORMAL_SELECTIONS";var Nn=Object.defineProperty,Dn=Object.getOwnPropertyDescriptor,On=(o,e,t,n)=>{for(var s=n>1?void 0:n?Dn(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&Nn(e,t,s),s},xn=(o,e)=>(t,n)=>e(t,n,o);const An=r.createIdentifier("sheets-formula.ref-selections.service");let ft=class extends P{constructor(o){super(o)}_init(){const o=this._getAliveWorkbooks$().pipe(V.takeUntil(this.dispose$));this.selectionMoveStart$=o.pipe(V.switchMap(e=>V.merge(...e.map(t=>t.selectionMoveStart$)))),this.selectionMoving$=o.pipe(V.switchMap(e=>V.merge(...e.map(t=>t.selectionMoving$)))),this.selectionMoveEnd$=o.pipe(V.switchMap(e=>V.merge(...e.map(t=>t.selectionMoveEnd$))))}_getAliveWorkbooks$(){const o=this._instanceSrv.getAllUnitsForType(r.UniverInstanceType.UNIVER_SHEET);o.forEach(t=>this._ensureWorkbookSelection(t.getUnitId()));const e=new V.BehaviorSubject(o);return this.disposeWithMe(this._instanceSrv.getTypeOfUnitAdded$(r.UniverInstanceType.UNIVER_SHEET).subscribe(t=>{this._ensureWorkbookSelection(t.getUnitId()),e.next([...e.getValue(),t])})),this.disposeWithMe(this._instanceSrv.getTypeOfUnitDisposed$(r.UniverInstanceType.UNIVER_SHEET).subscribe(t=>{this._removeWorkbookSelection(t.getUnitId()),e.next(e.getValue().filter(n=>n!==t))})),e.pipe(V.map(t=>t.map(n=>this._ensureWorkbookSelection(n.getUnitId()))))}};ft=On([xn(0,r.IUniverInstanceService)],ft);function Wn(o){const t=o.get(r.IContextService).getContextValue(Pn);return o.get(t?An:P)}const H={id:"sheet.operation.set-selections",type:r.CommandType.OPERATION,handler:(o,e)=>{if(!e)return!1;const{selections:t,type:n,unitId:s,subUnitId:i}=e;return Wn(o).setSelections(s,i,[...t],n),!0}};function ye(o,e,t=!0){const n=e.getMatrixWithMergedCells(...r.selectionToArray(o)),s=[];if(n.forValue((a,u,d)=>{if(d.colSpan!==void 0&&d.rowSpan!==void 0){const c={startRow:a,startColumn:u,endRow:a+d.rowSpan-1,endColumn:u+d.colSpan-1};r.Rectangle.contains(o,c)||s.push(c)}}),s.length===0)return o;const i=r.Rectangle.union(o,...s);return t?ye(i,e,t):i}function q(o,e){const t=Number.isNaN(o.startRow)?0:o.startRow,n=Number.isNaN(o.startColumn)?0:o.startColumn,s=e.getMergedCell(t,n);return s?{...s,actualRow:t,actualColumn:n,rangeType:r.RANGE_TYPE.NORMAL,isMerged:!0,isMergedMainCell:!0}:{startRow:t,startColumn:n,endRow:o.startRow,endColumn:o.startColumn,actualRow:t,actualColumn:n,rangeType:r.RANGE_TYPE.NORMAL,isMerged:!1,isMergedMainCell:!1}}const te=(o,e,t)=>({id:H.id,params:{unitId:e.getUnitId(),subUnitId:t.getSheetId(),reveal:!0,selections:[{range:o,primary:q(o,t)}]}});function Fn(o){function e(t,n){function s(i){for(let a=i.startRow;a<=i.endRow;a++)if(!o.getRowFiltered(a))for(let u=i.startColumn;u<=i.endColumn;u++)n(a,u,i)}s(t)}return{forOperableEach:e}}function oe(o,e,t,n,s,i,a){const u={};for(let d=e;d<=t;d++)for(let c=n;c<=s;c++){const l=i?o.getCell(a,c):o.getCell(d,a);!l||!l.s||(u[d]||(u[d]={}),u[d][c]={s:l.s})}return u}const Ue={id:"sheet.operation.set-worksheet-active",type:r.CommandType.OPERATION,handler:(o,e)=>{const t=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(!t)return!1;const n=t.getWorksheets();for(const[,s]of n)if(s.getSheetId()===e.subUnitId)return t.setActiveSheet(s),!0;return!1}};var Re=(o=>(o[o.View=0]="View",o[o.Edit=1]="Edit",o[o.ManageCollaborator=2]="ManageCollaborator",o[o.Print=3]="Print",o[o.Duplicate=4]="Duplicate",o[o.Comment=5]="Comment",o[o.Copy=6]="Copy",o[o.Share=7]="Share",o[o.Export=8]="Export",o[o.MoveWorksheet=9]="MoveWorksheet",o[o.DeleteWorksheet=10]="DeleteWorksheet",o[o.HideWorksheet=11]="HideWorksheet",o[o.RenameWorksheet=12]="RenameWorksheet",o[o.CreateWorksheet=13]="CreateWorksheet",o[o.SetWorksheetStyle=14]="SetWorksheetStyle",o[o.EditWorksheetCell=15]="EditWorksheetCell",o[o.InsertHyperlink=16]="InsertHyperlink",o[o.Sort=17]="Sort",o[o.Filter=18]="Filter",o[o.PivotTable=19]="PivotTable",o[o.FloatImg=20]="FloatImg",o[o.History=21]="History",o[o.RwHgtClWdt=22]="RwHgtClWdt",o[o.ViemRwHgtClWdt=23]="ViemRwHgtClWdt",o[o.ViewFilter=24]="ViewFilter",o[o.MoveSheet=25]="MoveSheet",o[o.DeleteSheet=26]="DeleteSheet",o[o.HideSheet=27]="HideSheet",o[o.CopySheet=28]="CopySheet",o[o.RenameSheet=29]="RenameSheet",o[o.CreateSheet=30]="CreateSheet",o[o.SelectProtectedCells=31]="SelectProtectedCells",o[o.SelectUnProtectedCells=32]="SelectUnProtectedCells",o[o.SetCellStyle=33]="SetCellStyle",o[o.SetCellValue=34]="SetCellValue",o[o.SetRowStyle=35]="SetRowStyle",o[o.SetColumnStyle=36]="SetColumnStyle",o[o.InsertRow=37]="InsertRow",o[o.InsertColumn=38]="InsertColumn",o[o.DeleteRow=39]="DeleteRow",o[o.DeleteColumn=40]="DeleteColumn",o[o.EditExtraObject=41]="EditExtraObject",o[o.Delete=42]="Delete",o[o.RecoverHistory=43]="RecoverHistory",o[o.ViewHistory=44]="ViewHistory",o[o.CreatePermissionObject=45]="CreatePermissionObject",o[o.UNRECOGNIZED=-1]="UNRECOGNIZED",o))(Re||{}),Be=(o=>(o[o.Unkonwn=0]="Unkonwn",o[o.Workbook=1]="Workbook",o[o.Worksheet=2]="Worksheet",o[o.SelectRange=3]="SelectRange",o[o.Document=4]="Document",o[o.Slide=5]="Slide",o[o.UNRECOGNIZED=-1]="UNRECOGNIZED",o))(Be||{});class Ln{constructor(e){T(this,"id");T(this,"value",!0);T(this,"type",Be.Workbook);T(this,"status",r.PermissionStatus.INIT);T(this,"subType",Re.Edit);this.unitId=e,this.unitId=e,this.id=`${this.type}.${Re.Edit}_${e}`}}class Vn{constructor(e,t){T(this,"value",!0);T(this,"type",Be.Worksheet);T(this,"status",r.PermissionStatus.INIT);T(this,"id");T(this,"subType",Re.Edit);this.unitId=e,this.subUnitId=t,this.id=`${this.type}.${Re.Edit}_${e}_${t}`}}function jn(o,e,t){var a;const n=o.getStyleByCell(e);n==null&&delete e.s,typeof t.s=="string"&&(t.s=o.get(t.s));const s=ke(n,t.s?t.s:null);s&&r.Tools.removeNull(s),r.Tools.isEmptyObject(s)?delete e.s:e.s=o.setValue(s);const i=t.v?`${t.v}\r
2
+ `:"";!t.p&&e.p&&(i&&i!==((a=e.p.body)==null?void 0:a.dataStream)?delete e.p:Hn(e.p,t.s?t.s:null))}function Bn(o,e){if(!e||!Object.keys(e).length)return o;const t=o||{};for(const n in e)n==="bd"?t[n]=$n(t[n]||{},e[n]):n in t||(t[n]=null);return t}function $n(o,e){if(!e||!Object.keys(e).length)return o;for(const t in e)t in o||(o[t]=null);return o}function ke(o,e,t=!1){if(e===null)return e;if(e===void 0)return o;const n=r.Tools.deepClone(o)||{};for(const s in e)t&&["bd","tr","td","ht","vt","tb","pd","bg"].includes(s)||(s in n&&s==="bd"?n[s]=Object.assign(n[s],e[s]):n[s]=e[s]);return"cl"in n&&("ul"in n&&n.ul&&(n.ul.cl=n.cl),"ol"in n&&n.ol&&(n.ol.cl=n.cl),"st"in n&&n.st&&(n.st.cl=n.cl)),n}function Rt(o,e){return o.some(t=>t.startIndex===e)?Rt(o,e+1):e}function Hn(o,e){var a;if(o.body==null)return;Array.isArray(o.body.textRuns)||(o.body.textRuns=[]);let t=0;const n=[],s=((a=o.body)==null?void 0:a.paragraphs)||[];for(const u of o.body.textRuns){const{st:d,ed:c,ts:l={}}=u;if(t<d){const g={st:t,ed:d},h=ke({},e,!0);h&&r.Tools.removeNull(h),r.Tools.isEmptyObject(h)||(g.ts=h),n.push(g)}const m=ke(l,e,!0);m&&r.Tools.removeNull(m),r.Tools.isEmptyObject(m)?delete u.ts:u.ts=m,n.push(u),t=Rt(s,c)}const i=o.body.dataStream.endsWith(`\r
3
+ `)?o.body.dataStream.length-2:o.body.dataStream.length;if(t<i){const u={st:t,ed:i},d=ke({},e,!0);d&&r.Tools.removeNull(d),r.Tools.isEmptyObject(d)||(u.ts=d),n.push(u)}o.body.textRuns=r.normalizeTextRuns(n)}function Gn(o,e,t){if(e.t)return e.t;if(e.v===null)return null;const n=o.getStyleByCell(e),s=o.getStyleByCell(t);if(t.t===r.CellValueType.FORCE_STRING){if(!$e(s)&&e.v!==void 0){if(r.isRealNum(e.v))return r.CellValueType.NUMBER;if(r.isBooleanString(`${e.v}`))return r.CellValueType.BOOLEAN}return r.CellValueType.FORCE_STRING}return zn(n)?$e(n)?r.CellValueType.STRING:St(e,t):$e(s)?r.CellValueType.STRING:St(e,t)}function St(o,e){return o.v!==void 0?It(o.v,o.t):It(e.v,e.t)}function zn(o){var e;return!!((e=o==null?void 0:o.n)!=null&&e.pattern)}function $e(o){var e;return((e=o==null?void 0:o.n)==null?void 0:e.pattern)===mn.DEFAULT_TEXT_FORMAT}function It(o,e){return o===null?null:typeof o=="string"?r.isRealNum(o)?(+o==0||+o==1)&&e===r.CellValueType.BOOLEAN?r.CellValueType.BOOLEAN:r.CellValueType.NUMBER:r.isBooleanString(o)?r.CellValueType.BOOLEAN:r.CellValueType.STRING:typeof o=="number"?(o===0||o===1)&&e===r.CellValueType.BOOLEAN?r.CellValueType.BOOLEAN:r.CellValueType.NUMBER:typeof o=="boolean"?r.CellValueType.BOOLEAN:r.CellValueType.FORCE_STRING}function wt(o,e){return o===r.CellValueType.NUMBER?Number(e.v):o===r.CellValueType.BOOLEAN?Yn(e.v)?1:0:o===r.CellValueType.STRING||o===r.CellValueType.FORCE_STRING?`${e.v}`:e.v}function Yn(o){if(typeof o=="string"){if(o.toUpperCase()==="TRUE")return!0;if(o.toUpperCase()==="FALSE")return!1;if(r.isSafeNumeric(o)){if(Number(o)===0)return!1;if(Number(o)===1)return!0}}if(typeof o=="number"){if(o===0)return!1;if(o===1)return!0}return typeof o=="boolean"?o:null}function qn(o){return o==null?null:(o.f===void 0&&(o.f=null),o.si===void 0&&(o.si=null),o.p===void 0&&(o.p=null),o.v===void 0&&(o.v=null),o.t===void 0&&(o.t=null),o.s===void 0&&(o.s=null),o.custom===void 0&&(o.custom=null),o)}const re=(o,e)=>{const{unitId:t,subUnitId:n,cellValue:s}=e,a=o.get(r.IUniverInstanceService).getUniverSheetInstance(t);if(a==null)throw new Error("workbook is null error!");const u=a.getSheetBySheetId(n);if(u==null)throw new Error("worksheet is null error!");const d=u.getCellMatrix(),c=a.getStyles(),l=new r.ObjectMatrix;return new r.ObjectMatrix(s).forValue((g,h,v)=>{const C=r.Tools.deepClone(d==null?void 0:d.getValue(g,h))||{},f=c.getStyleByCell(C),R=c.getStyleByCell(v);C.s=Bn(f,R),l.setValue(g,h,qn(C))}),{...e,options:{},cellValue:l.getMatrix()}},j={id:"sheet.mutation.set-range-values",type:r.CommandType.MUTATION,handler:(o,e)=>{const{cellValue:t,subUnitId:n,unitId:s}=e,a=o.get(r.IUniverInstanceService).getUnit(s);if(!a)return!1;const u=a.getSheetBySheetId(n);if(!u)return!1;const d=u.getCellMatrix(),c=a.getStyles();return new r.ObjectMatrix(t).forValue((m,g,h)=>{if(!h)d==null||d.setValue(m,g,{});else{const v=d.getValue(m,g)||{},C=Gn(c,h,v);h.f!==void 0&&(v.f=h.f),h.si!==void 0&&(v.si=h.si),h.p!==void 0&&(v.p=h.p),h.v!==void 0&&(v.v=wt(C,h)),v.v!==void 0&&(v.t=C,v.v=wt(C,v)),h.s!==void 0&&jn(c,v,h),h.custom!==void 0&&(v.custom=h.custom),d.setValue(m,g,r.Tools.removeNull(v))}}),!0}};function pt(o){const e=new r.ObjectMatrix;return o.forEach(t=>{const{startRow:n,startColumn:s,endRow:i,endColumn:a}=t;for(let u=n;u<=i;u++)for(let d=s;d<=a;d++)e.setValue(u,d,null)}),e.clone()}function Kn(o){const e=new r.ObjectMatrix;return o.forEach(t=>{const{startRow:n,startColumn:s,endRow:i,endColumn:a}=t;for(let u=n;u<=i;u++)for(let d=s;d<=a;d++)e.setValue(u,d,{s:null})}),e.clone()}const Mt={id:"sheet.command.clear-selection-all",type:r.CommandType.COMMAND,handler:async o=>{var R;const e=o.get(r.IUniverInstanceService),t=o.get(r.ICommandService),n=o.get(P),s=o.get(r.IUndoRedoService),i=o.get(D),a=e.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);if(!a)return!1;const u=a.getUnitId(),d=a.getActiveSheet();if(!d)return!1;const c=d.getSheetId(),l=(R=n.getCurrentSelections())==null?void 0:R.map(S=>S.range);if(!(l!=null&&l.length))return!1;const m=[],g=[],h={subUnitId:c,unitId:u,cellValue:pt(l)},v=re(o,h);m.push({id:j.id,params:h}),g.push({id:j.id,params:v});const C=i.onCommandExecute({id:Mt.id});return m.push(...C.redos),g.unshift(...C.undos),r.sequenceExecute(m,t)?(s.pushUndoRedo({unitID:u,undoMutations:g,redoMutations:m}),!0):!1}},_t={id:"sheet.command.clear-selection-format",type:r.CommandType.COMMAND,handler:async o=>{var R;const e=o.get(r.IUniverInstanceService),t=o.get(r.ICommandService),n=o.get(P),s=o.get(r.IUndoRedoService),i=o.get(D),a=e.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);if(!a)return!1;const u=a.getUnitId(),d=a.getActiveSheet();if(!d)return!1;const c=d.getSheetId(),l=(R=n.getCurrentSelections())==null?void 0:R.map(S=>S.range);if(!(l!=null&&l.length))return!1;const m=[],g=[],h={subUnitId:c,unitId:u,cellValue:Kn(l)},v=re(o,h);m.push({id:j.id,params:h}),g.push({id:j.id,params:v});const C=i.onCommandExecute({id:_t.id});return m.push(...C.redos),g.unshift(...C.undos),r.sequenceExecute(m,t)?(s.pushUndoRedo({unitID:u,undoMutations:g,redoMutations:m}),!0):!1}},Se={id:"sheet.mutation.move-range",type:r.CommandType.MUTATION,handler:(o,e)=>{const{from:t,to:n}=e;if(!t||!n)return!1;const i=o.get(r.IUniverInstanceService).getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);if(!i)return!1;const a=i.getSheetBySheetId(e.from.subUnitId),u=i.getSheetBySheetId(e.to.subUnitId);if(!a||!u)return!1;const d=a.getCellMatrix(),c=u.getCellMatrix();return new r.ObjectMatrix(t.value).forValue((l,m,g)=>{d.setValue(l,m,g)}),new r.ObjectMatrix(n.value).forValue((l,m,g)=>{c.setValue(l,m,g)}),!0}},yt="sheet.command.move-range",He={type:r.CommandType.COMMAND,id:yt,handler:async(o,e)=>{var S,w;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(r.ErrorService),a=o.get(r.LocaleService),u=o.get(D),d=b(s);if(!d||!await u.beforeCommandExecute({id:He.id,params:e}))return!1;const{worksheet:l,subUnitId:m,unitId:g}=d,h=Ge(o,{unitId:g,subUnitId:m,range:e.fromRange},{unitId:g,subUnitId:m,range:e.toRange});if(h===null)return i.emit(a.t("sheets.info.acrossMergedCell")),!1;const v=u.onCommandExecute({id:He.id,params:{...e}}),C=[...(S=v.preRedos)!=null?S:[],...h.redos,...v.redos,{id:H.id,params:{unitId:g,subUnitId:m,selections:[{range:e.toRange,primary:q(e.toRange,l)}]}}],f=[...(w=v.preUndos)!=null?w:[],...h.undos,...v.undos,{id:H.id,params:{unitId:g,subUnitId:m,selections:[{range:e.fromRange,primary:q(e.fromRange,l)}]}}];return r.sequenceExecute(C,t).result?(n.pushUndoRedo({unitID:g,undoMutations:f,redoMutations:C}),!0):!1}};function Ge(o,e,t,n=!1){const s=[],i=[],{range:a,subUnitId:u,unitId:d}=e,{range:c,subUnitId:l}=t,g=o.get(r.IUniverInstanceService).getUniverSheetInstance(d),h=g==null?void 0:g.getSheetBySheetId(l),v=g==null?void 0:g.getSheetBySheetId(u),C=h==null?void 0:h.getCellMatrix(),f=v==null?void 0:v.getCellMatrix();if(h&&v&&C&&f){const R=ye(c,h,!1);if(!r.Rectangle.equals(c,R)&&!n)return null;const S=new r.ObjectMatrix,w=new r.ObjectMatrix,I=new r.ObjectMatrix;r.Range.foreach(a,(_,k)=>{const N=f.getValue(_,k);if(S.setValue(_,k,r.Tools.deepClone(N)),N){const F=g==null?void 0:g.getStyles().get(N.s);I.setValue(_,k,r.Tools.deepClone(F))}w.setValue(_,k,null)});const M=new r.ObjectMatrix,p=new r.ObjectMatrix;r.Range.foreach(c,(_,k)=>{M.setValue(_,k,r.Tools.deepClone(C.getValue(_,k)))}),r.Range.foreach(a,(_,k)=>{const N=r.cellToRange(_,k),F=r.Rectangle.getRelativeRange(N,a),$=r.Rectangle.getPositionRange(F,c),O=r.Tools.deepClone(I.getValue(_,k)),A=r.Tools.deepClone(S.getValue(_,k));A&&O&&(A.s=O),p.setValue($.startRow,$.startColumn,A)});const U={fromRange:e.range,toRange:t.range,from:{value:w.getMatrix(),subUnitId:u},to:{value:p.getMatrix(),subUnitId:l},unitId:d},y={fromRange:t.range,toRange:e.range,from:{value:S.getMatrix(),subUnitId:u},to:{value:M.getMatrix(),subUnitId:l},unitId:d};s.push({id:Se.id,params:U}),i.push({id:Se.id,params:y})}return{redos:s,undos:i}}const Ie={id:"sheet.command.set-range-values",type:r.CommandType.COMMAND,handler:(o,e)=>{var y;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(P),a=o.get(D),u=o.get(r.IPermissionService),d=b(s,e);if(!d)return!1;const{subUnitId:c,unitId:l,workbook:m,worksheet:g}=d,{value:h,range:v}=e,C=v?[v]:(y=i.getCurrentSelections())==null?void 0:y.map(_=>_.range);if(!C||!C.length||!u.getPermissionPoint(new Vn(l,c).id))return!1;const f=new r.ObjectMatrix;let R;if(r.Tools.isArray(h))for(let _=0;_<C.length;_++){const{startRow:k,startColumn:N,endRow:F,endColumn:$}=C[_];for(let O=0;O<=F-k;O++)for(let A=0;A<=$-N;A++)f.setValue(O+k,A+N,h[O][A])}else if(r.isICellData(h))for(let _=0;_<C.length;_++){const{startRow:k,startColumn:N,endRow:F,endColumn:$}=C[_];for(let O=k;O<=F;O++)for(let A=N;A<=$;A++)f.setValue(O,A,h)}else R=h;const S={subUnitId:c,unitId:l,cellValue:R!=null?R:f.getMatrix()},w=re(o,S);if(!t.syncExecuteCommand(j.id,S))return!1;const{undos:M,redos:p}=a.onCommandExecute({id:Ie.id,params:{...S,range:C}});if(r.sequenceExecute([...p],t).result){const _=te(v!=null?v:f.getRange(),m,g);return n.pushUndoRedo({unitID:l,undoMutations:[{id:j.id,params:w},...M,_],redoMutations:[{id:j.id,params:S},...p,r.Tools.deepClone(_)]}),!0}return!1}};function Ut(o,e){const t=[],n=[],{unitId:s,subUnitId:i,range:a,shiftDimension:u,cellValue:d={}}=e,c=o.get(r.IUniverInstanceService),l=o.get(D),m=c.getUniverSheetInstance(s),g=m==null?void 0:m.getSheetBySheetId(i);if(g){const h=g.getCellMatrix(),v=h.getDataRange();if(a.startColumn<=v.endColumn||a.startRow<=v.endRow){let w,I;if(u===r.Dimension.COLUMNS){const p=Math.min(a.endRow,v.endRow);let U=0;for(let _=a.startRow;_<=p;_++){const k=h.getRow(_),N=k?r.getArrayLength(k)-1:0;U=Math.max(U,N)}w={startRow:a.startRow,startColumn:a.startColumn,endRow:p,endColumn:U};const y=a.endColumn-a.startColumn+1;I={startRow:a.startRow,startColumn:w.startColumn+y,endRow:p,endColumn:w.endColumn+y}}else{const p=Math.min(a.endColumn,v.endColumn),U=v.endRow;w={startRow:a.startRow,startColumn:a.startColumn,endRow:U,endColumn:p};const y=a.endRow-a.startRow+1;I={startRow:w.startRow+y,startColumn:a.startColumn,endRow:w.endRow+y,endColumn:p}}const M=Ge(o,{unitId:s,subUnitId:i,range:w},{unitId:s,subUnitId:i,range:I},!0);M&&(t.push(...M.redos),n.push(...M.undos))}if(Object.entries(d).length===0)for(let w=a.startRow;w<=a.endRow;w++){d[w]||(d[w]={});for(let I=a.startColumn;I<=a.endColumn;I++)d[w][I]=null}const C={subUnitId:i,unitId:s,cellValue:d},f=re(o,C),{undos:R,redos:S}=l.onCommandExecute({id:Ie.id,params:{...C,range:a}});t.push({id:j.id,params:C},...S),n.push({id:j.id,params:f},...R)}return{redo:t,undo:n}}function kt(o,e){const t=[],n=[],{unitId:s,subUnitId:i,range:a,shiftDimension:u}=e,d=o.get(r.IUniverInstanceService),c=o.get(D),l=d.getUniverSheetInstance(s),m=l==null?void 0:l.getSheetBySheetId(i);if(m){const g=m.getCellMatrix(),h=g.getDataRange(),v={subUnitId:i,unitId:s,cellValue:pt([a])},C=re(o,v),f=c.onCommandExecute({id:Ie.id,params:v});if(t.push({id:j.id,params:v},...f.redos),n.push(...f.undos,{id:j.id,params:C}),a.startColumn<=h.endColumn||a.startRow<=h.endRow){let R=null,S=null;if(u===r.Dimension.COLUMNS&&a.endColumn<h.endColumn){const w=Math.min(a.endRow,h.endRow);let I=0;for(let p=a.startRow;p<=w;p++){const U=g.getRow(p),y=U?r.getArrayLength(U)-1:0;I=Math.max(I,y)}R={startRow:a.startRow,startColumn:a.endColumn+1,endRow:w,endColumn:I};const M=a.endColumn-a.startColumn+1;S={startRow:a.startRow,startColumn:R.startColumn-M,endRow:w,endColumn:R.endColumn-M}}if(u===r.Dimension.ROWS&&a.endRow<h.endRow){const w=Math.min(a.endColumn,h.endColumn),I=h.endRow;R={startRow:a.endRow+1,startColumn:a.startColumn,endRow:I,endColumn:w};const M=a.endRow-a.startRow+1;S={startRow:R.startRow-M,startColumn:a.startColumn,endRow:R.endRow-M,endColumn:w}}if(R&&S){const w=Ge(o,{unitId:s,subUnitId:i,range:R},{unitId:s,subUnitId:i,range:S},!0);w&&(t.push(...w.redos),n.push(...w.undos))}}}return{redo:t,undo:n}}const bt="sheet.command.delete-range-move-left",Et={type:r.CommandType.COMMAND,id:bt,handler:async(o,e)=>{var I,M,p;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(P),a=o.get(D),u=b(s);if(!u)return!1;const{worksheet:d,workbook:c,subUnitId:l,unitId:m}=u;let g=e==null?void 0:e.range;if(g||(g=(I=i.getCurrentLastSelection())==null?void 0:I.range),!g)return!1;const h={range:g,subUnitId:l,unitId:m,shiftDimension:r.Dimension.COLUMNS},v=a.onCommandExecute({id:Et.id,params:{range:g}}),{redo:C,undo:f}=kt(o,h),R=[...(M=v.preRedos)!=null?M:[],...C],S=[...v.undos,...f];return R.push(...v.redos),R.push(te(g,c,d)),S.push(...(p=v.preUndos)!=null?p:[]),r.sequenceExecute(R,t).result?(n.pushUndoRedo({unitID:m,undoMutations:S.reverse(),redoMutations:R}),!0):!1}},Tt="sheet.command.delete-range-move-up",Pt={type:r.CommandType.COMMAND,id:Tt,handler:async(o,e)=>{var I,M,p;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(P),a=o.get(D),u=b(s);if(!u)return!1;const{unitId:d,subUnitId:c,workbook:l,worksheet:m}=u;let g=e==null?void 0:e.range;if(g||(g=(I=i.getCurrentLastSelection())==null?void 0:I.range),!g)return!1;const h={range:g,subUnitId:c,unitId:d,shiftDimension:r.Dimension.ROWS},v=a.onCommandExecute({id:Pt.id,params:{range:g}}),{redo:C,undo:f}=kt(o,h),R=[...(M=v.preRedos)!=null?M:[],...C],S=[...v.undos,...f];return R.push(...v.redos),R.push(te(g,l,m)),S.push(...(p=v.preUndos)!=null?p:[]),r.sequenceExecute(R,t).result?(n.pushUndoRedo({unitID:d,undoMutations:S.reverse(),redoMutations:R}),!0):!1}},Nt=(o,e)=>{if(o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId)==null)throw new Error("universheet is null error!");return{unitId:e.unitId,subUnitId:e.subUnitId,range:e.range}},le={id:"sheet.mutation.insert-row",type:r.CommandType.MUTATION,handler:(o,e)=>{var v;const{unitId:t,subUnitId:n,range:s,rowInfo:i}=e,u=o.get(r.IUniverInstanceService).getUniverSheetInstance(t);if(u==null)throw new Error("universheet is null error!");const d=u.getSheetBySheetId(n);if(d==null)throw new Error("worksheet is null error!");const c=d.getRowManager().getRowData(),l={h:d.getConfig().defaultRowHeight,hd:0},m=s.startRow,g=s.endRow-s.startRow+1;for(let C=m;C<m+g;C++)i?r.insertMatrixArray(C,(v=i[C-s.startRow])!=null?v:l,c):r.insertMatrixArray(C,l,c);return d.setRowCount(d.getRowCount()+s.endRow-s.startRow+1),d.getCellMatrix().insertRows(s.startRow,g),!0}},Dt=(o,e)=>{if(o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId)==null)throw new Error("universheet is null error!");return{unitId:e.unitId,subUnitId:e.subUnitId,range:e.range}},me={id:"sheet.mutation.insert-col",type:r.CommandType.MUTATION,handler:(o,e)=>{var v;const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(!s)return!1;const i=s.getColumnManager(),{range:a,colInfo:u}=e,c=i.getColumnData(),l=a.startColumn,m=a.endColumn-a.startColumn+1,g=s.getConfig().defaultColumnWidth;for(let C=l;C<l+m;C++){const f={w:g,hd:0};u?r.insertMatrixArray(C,(v=u[C-a.startColumn])!=null?v:f,c):r.insertMatrixArray(C,f,c)}return s.setColumnCount(s.getColumnCount()+a.endColumn-a.startColumn+1),s.getCellMatrix().insertColumns(a.startColumn,m),!0}},Xn=(o,e)=>{const s=e.getRowManager().getRowData(),i={},a=o.range,u=r.sliceMatrixArray(a.startRow,a.endRow,s),d=r.concatMatrixArray(i,u);return{unitId:o.unitId,subUnitId:o.subUnitId,range:o.range,rowInfo:d}},ge={id:"sheet.mutation.remove-rows",type:r.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(!s)return!1;const i=e.range,u=s.getRowManager().getRowData();for(let l=i.startRow;l<=i.endRow;l++)s.getRowFiltered(l);const d=i.endRow-i.startRow+1;return r.spliceArray(i.startRow,d,u),s.getCellMatrix().removeRows(i.startRow,d),s.setRowCount(s.getRowCount()-d),!0}},Zn=(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(s==null)throw new Error("worksheet is null error!");const u=s.getColumnManager().getColumnData(),d={},c=e.range,l=r.sliceMatrixArray(c.startColumn,c.endColumn,u),m=r.concatMatrixArray(d,l);return{unitId:e.unitId,subUnitId:e.subUnitId,range:e.range,colInfo:m}},ie={id:"sheet.mutation.remove-col",type:r.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(!s)return!1;const i=e.range,u=s.getColumnManager().getColumnData(),d=i.endColumn-i.startColumn+1;return r.spliceArray(i.startColumn,d,u),s.setColumnCount(s.getColumnCount()-d),s.getCellMatrix().removeColumns(i.startColumn,d),!0}},Jn="sheet.command.insert-range-move-down",Ot={type:r.CommandType.COMMAND,id:"sheet.command.insert-range-move-down",handler:async(o,e)=>{var F,$,O;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(P),a=o.get(D),u=o.get(r.ErrorService),d=o.get(r.LocaleService);if(i.isOverlapping())return u.emit(d.t("sheets.info.overlappingSelections")),!1;const c=b(s);if(!c)return!1;const{unitId:l,subUnitId:m,worksheet:g,workbook:h}=c;let v=e==null?void 0:e.range;if(v||(v=(F=i.getCurrentLastSelection())==null?void 0:F.range),!v)return!1;const C=[],f=[],R=g.getCellMatrix(),S=R.getDataRange(),I=R.getSlice(S.startRow,S.endRow,v.startColumn,v.endColumn).getDataRange().endRow,M=Math.max(I+(v.endRow-v.startRow+1)-S.endRow,0);if(M>0){const A=v.startRow-1,X=g.getRowHeight(A),z={unitId:l,subUnitId:m,range:{startRow:S.endRow+1,endRow:S.endRow+M,startColumn:S.startColumn,endColumn:S.endColumn},rowInfo:new Array(M).fill(void 0).map(()=>({h:X,hd:r.BooleanNumber.FALSE}))};C.push({id:le.id,params:z});const ce=Nt(o,z);f.push({id:ge.id,params:ce})}const p={};r.Range.foreach(v,(A,X)=>{const z=g.getCell(A,X);z&&(p[A]||(p[A]={}),p[A][X]={s:z.s})});const U={range:v,subUnitId:m,unitId:l,shiftDimension:r.Dimension.ROWS,cellValue:p},{redo:y,undo:_}=Ut(o,U);C.push(...y),f.push(..._);const k=a.onCommandExecute({id:Ot.id,params:{range:v}});return C.push(...k.redos),C.push(te(v,h,g)),f.push(...($=k.preUndos)!=null?$:[]),C.unshift(...(O=k.preRedos)!=null?O:[]),f.unshift(...k.undos),r.sequenceExecute(C,t)?(n.pushUndoRedo({unitID:l,undoMutations:f.reverse(),redoMutations:C}),!0):!1}},xt="sheet.command.insert-range-move-right",At={type:r.CommandType.COMMAND,id:xt,handler:async(o,e)=>{var F,$,O;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(P),a=o.get(D),u=o.get(r.ErrorService),d=o.get(r.LocaleService);if(i.isOverlapping())return u.emit(d.t("sheets.info.overlappingSelections")),!1;const c=b(s);if(!c)return!1;const{workbook:l,worksheet:m,unitId:g,subUnitId:h}=c;let v=e==null?void 0:e.range;if(v||(v=(F=i.getCurrentLastSelection())==null?void 0:F.range),!v)return!1;const C=[],f=[],R=m.getCellMatrix(),S=R.getDataRange(),I=R.getSlice(v.startRow,v.endRow,S.startColumn,S.endColumn).getDataRange().endColumn,M=Math.max(I+(v.endColumn-v.startColumn+1)-S.endColumn,0);if(M>0){const A=v.startColumn-1,X=m.getColumnWidth(A),z={unitId:g,subUnitId:h,range:{startRow:S.startRow+1,endRow:S.endRow,startColumn:S.endColumn+1,endColumn:S.endColumn+M},colInfo:new Array(M).fill(void 0).map(()=>({w:X,hd:r.BooleanNumber.FALSE}))};C.push({id:me.id,params:z});const ce=Dt(o,z);f.push({id:ie.id,params:ce})}const p={};r.Range.foreach(v,(A,X)=>{const z=m.getCell(A,X);!z||!z.s||(p[A]||(p[A]={}),p[A][X]={s:z.s})});const U={range:v,subUnitId:h,unitId:g,shiftDimension:r.Dimension.COLUMNS,cellValue:p},{redo:y,undo:_}=Ut(o,U);C.push(...y),f.push(..._);const k=a.onCommandExecute({id:At.id,params:{range:v}});return C.push(...k.redos),C.push(te(v,l,m)),f.push(...($=k.preUndos)!=null?$:[]),C.unshift(...(O=k.preRedos)!=null?O:[]),f.unshift(...k.undos),r.sequenceExecute(C,t).result?(n.pushUndoRedo({unitID:g,undoMutations:f.reverse(),redoMutations:C}),!0):!1}},Wt="sheet.command.insert-row",ae={type:r.CommandType.COMMAND,id:Wt,handler:async(o,e)=>{var y,_,k,N;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(D),a=b(s,e);if(!a)return!1;const{workbook:u,worksheet:d}=a,{range:c,direction:l,unitId:m,subUnitId:g,cellValue:h}=e,{startRow:v,endRow:C}=c;c.rangeType=r.RANGE_TYPE.ROW;const f=l===r.Direction.UP?v:v-1,R=d.getRowHeight(f),S={unitId:m,subUnitId:g,range:c,rowInfo:new Array(C-v+1).fill(void 0).map(()=>({h:R,hd:r.BooleanNumber.FALSE}))},w=Nt(o,S);if(!await i.beforeCommandExecute({id:ae.id,params:S}))return!1;const I=[{id:le.id,params:S}],M=[{id:ge.id,params:w}];h&&I.push({id:j.id,params:{unitId:m,subUnitId:g,cellValue:h}});const p=i.onCommandExecute({id:ae.id,params:e});return I.unshift(...(y=p.preRedos)!=null?y:[]),I.push(...(_=p.redos)!=null?_:[]),I.push(te(c,u,d)),M.unshift(...(k=p.preUndos)!=null?k:[]),M.push(...(N=p.undos)!=null?N:[]),r.sequenceExecute(I,t).result?(n.pushUndoRedo({unitID:e.unitId,undoMutations:M,redoMutations:I}),!0):!1}};r.CommandType.COMMAND,r.CommandType.COMMAND;const Ft="sheet.command.insert-col",ue={type:r.CommandType.COMMAND,id:Ft,handler:async(o,e)=>{var y,_,k,N;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=o.get(D),{range:a,direction:u,subUnitId:d,unitId:c,cellValue:l}=e,{startColumn:m,endColumn:g}=e.range;a.rangeType=r.RANGE_TYPE.COLUMN;const h=s.getUniverSheetInstance(e.unitId),v=h.getSheetBySheetId(e.subUnitId),C=u===r.Direction.LEFT?m:m-1,f=v.getColumnWidth(C),R={unitId:c,subUnitId:d,range:a,colInfo:new Array(g-m+1).fill(void 0).map(()=>({w:f,hd:r.BooleanNumber.FALSE}))},S=Dt(o,R);if(!await i.beforeCommandExecute({id:ue.id,params:R}))return!1;const I=[{id:me.id,params:R}],M=[{id:ie.id,params:S}];l&&I.push({id:j.id,params:{unitId:c,subUnitId:d,cellValue:l}});const p=i.onCommandExecute({id:ue.id,params:e});return I.unshift(...(y=p.preRedos)!=null?y:[]),I.push(...(_=p.redos)!=null?_:[]),I.push(te(a,h,v)),M.unshift(...(k=p.preUndos)!=null?k:[]),M.push(...(N=p.undos)!=null?N:[]),r.sequenceExecute(I,t).result?(n.pushUndoRedo({unitID:e.unitId,undoMutations:M.filter(Boolean),redoMutations:I.filter(Boolean)}),!0):!1}};r.CommandType.COMMAND,r.CommandType.COMMAND;const Lt="sheet.command.remove-row",be={type:r.CommandType.COMMAND,id:Lt,handler:async(o,e)=>{var w,I,M,p;const t=o.get(P),n=o.get(D);let s=e==null?void 0:e.range;if(s||(s=(w=t.getCurrentLastSelection())==null?void 0:w.range),!s)return!1;const i=o.get(r.IUniverInstanceService),a=b(i);if(!a)return!1;const{workbook:u,worksheet:d,subUnitId:c,unitId:l}=a;s={...s,startColumn:0,endColumn:Math.max(d.getMaxColumns()-1,0)};const m=[];for(let U=s.startRow;U<=s.endRow;U++)d.getRowFiltered(U)&&m.push(U);const g=[];if(m.length){const U=[s.startRow,...m.map(_=>_+1)],y=[...m.map(_=>_-1),s.endRow];for(let _=U.length-1;_>=0;_--)U[_]<=y[_]&&g.push({startRow:U[_],endRow:y[_],startColumn:s.startColumn,endColumn:s.endColumn})}else g.push(s);if(!await n.beforeCommandExecute({id:be.id,params:{range:s,ranges:g}}))return!1;const v=[],C=[];g.forEach(U=>{const y={unitId:l,subUnitId:c,range:U},_=d.getCellMatrix().getSlice(U.startRow,U.endRow,0,d.getColumnCount()-1),k={unitId:l,subUnitId:c,cellValue:_.getMatrix()},N=Xn(y,d);v.push({id:ge.id,params:y}),C.unshift({id:le.id,params:N},{id:j.id,params:k})});const f=n.onCommandExecute({id:be.id,params:{range:s,ranges:g}}),R=o.get(r.ICommandService);return r.sequenceExecute([...(I=f.preRedos)!=null?I:[],...v,...f.redos,te(s,u,d)],R).result?(o.get(r.IUndoRedoService).pushUndoRedo({unitID:l,undoMutations:[...(M=f.preUndos)!=null?M:[],...C,...f.undos],redoMutations:[...(p=f.preRedos)!=null?p:[],...v,...f.redos]}),!0):!1}},Vt="sheet.command.remove-col",Ee={type:r.CommandType.COMMAND,id:Vt,handler:async(o,e)=>{var w,I,M,p;const t=o.get(P),n=o.get(D);let s=e==null?void 0:e.range;if(s||(s=(w=t.getCurrentLastSelection())==null?void 0:w.range),!s)return!1;const i=o.get(r.IUniverInstanceService),a=b(i);if(!a)return!1;const{workbook:u,worksheet:d,subUnitId:c,unitId:l}=a;s={...s,startRow:0,endRow:Math.max(d.getMaxRows()-1,0)};const m={unitId:l,subUnitId:c,range:s},g=Zn(o,m),h=d.getCellMatrix().getSlice(0,d.getRowCount()-1,s.startColumn,s.endColumn),v={unitId:l,subUnitId:c,cellValue:h.getMatrix()};if(!await n.beforeCommandExecute({id:Ee.id,params:{range:s}}))return!1;const f=n.onCommandExecute({id:Ee.id,params:{range:s}}),R=o.get(r.ICommandService);return r.sequenceExecute([...(I=f.preRedos)!=null?I:[],{id:ie.id,params:m},...f.redos,te(s,u,d)],R).result?(o.get(r.IUndoRedoService).pushUndoRedo({unitID:l,undoMutations:[...(M=f.preUndos)!=null?M:[],{id:me.id,params:g},{id:j.id,params:v},...f.undos],redoMutations:[...(p=f.preRedos)!=null?p:[],{id:ie.id,params:m},...f.redos]}),!0):!1}},Z=(o,e)=>{if(o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId)==null)throw new Error("universheet is null error!");return{unitId:e.unitId,subUnitId:e.subUnitId,ranges:r.Tools.deepClone(e.ranges)}},x={id:"sheet.mutation.add-worksheet-merge",type:r.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(!s)return!1;const a=s.getConfig().mergeData,u=e.ranges;for(let d=0;d<u.length;d++)a.push(u[d]);return s.getSpanModel().rebuild(a),!0}};function Qn(o,e){const{unitId:t,subUnitId:n,sourceRange:s,targetRange:i}=e,a=s.startRow>i.startRow,u=s.endRow-s.startRow+1;return a?{unitId:t,subUnitId:n,sourceRange:r.Rectangle.clone(i),targetRange:{...s,endRow:s.endRow+u,startRow:s.startRow+u}}:{unitId:t,subUnitId:n,targetRange:r.Rectangle.clone(s),sourceRange:{...i,endRow:i.endRow-u,startRow:i.startRow-u}}}const we={id:"sheet.mutation.move-rows",type:r.CommandType.MUTATION,handler:(o,e)=>{const{unitId:t,subUnitId:n,sourceRange:s,targetRange:i}=e,u=o.get(r.IUniverInstanceService).getUniverSheetInstance(t);if(!u)throw new Error("[MoveRowMutation] univerSheet is null!");const d=u.getSheetBySheetId(n);if(!d)throw new Error("[MoveRowMutation] worksheet is null!");const c=s.startRow,l=s.endRow-s.startRow+1,m=i.startRow,g=d.getRowManager().getRowData();return r.moveMatrixArray(c,l,m,g),d.getCellMatrix().moveRows(c,l,m),!0}};function eo(o,e){const{unitId:t,subUnitId:n,sourceRange:s,targetRange:i}=e,a=s.startColumn>i.startColumn,u=s.endColumn-s.startColumn+1;return a?{unitId:t,subUnitId:n,sourceRange:r.Rectangle.clone(i),targetRange:{...s,endColumn:s.endColumn+u,startColumn:s.startColumn+u}}:{unitId:t,subUnitId:n,targetRange:r.Rectangle.clone(s),sourceRange:{...i,startColumn:i.startColumn-u,endColumn:i.endColumn-u}}}const pe={id:"sheet.mutation.move-columns",type:r.CommandType.MUTATION,handler:(o,e)=>{const{unitId:t,subUnitId:n,sourceRange:s,targetRange:i}=e,u=o.get(r.IUniverInstanceService).getUniverSheetInstance(t);if(!u)throw new Error("[MoveColumnMutation] univerSheet is null!");const d=u.getSheetBySheetId(n);if(!d)throw new Error("[MoveColumnMutation] worksheet is null!");const c=s.startColumn,l=s.endColumn-s.startColumn+1,m=i.startColumn,g=d.getColumnManager().getColumnData();return r.moveMatrixArray(c,l,m,g),d.getCellMatrix().moveColumns(c,l,m),!0}},K=(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(s==null)throw new Error("worksheet is null error!");const a=s.getConfig().mergeData,u=e.ranges,d=[];for(let c=0;c<u.length;c++)for(let l=a.length-1;l>=0;l--){const m=a[l],g=u[c];r.Rectangle.intersects(m,g)&&d.push(a[l])}return{unitId:e.unitId,subUnitId:e.subUnitId,ranges:d}},W={id:"sheet.mutation.remove-worksheet-merge",type:r.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(!s)return!1;const a=s.getConfig().mergeData,u=e.ranges;for(let d=0;d<u.length;d++)for(let c=a.length-1;c>=0;c--){const l=a[c],m=u[d];r.Rectangle.intersects(l,m)&&a.splice(c,1)}return s.getSpanModel().rebuild(a),!0}};function to(o,e){return e.getMergeData().some(t=>t.startRow<o&&o<=t.endRow)}function no(o,e){return e.getMergeData().some(t=>t.startColumn<o&&o<=t.endColumn)}const jt="sheet.command.move-rows",Bt={id:jt,type:r.CommandType.COMMAND,handler:async(o,e)=>{var F,$;const t=o.get(P),{fromRange:{startRow:n},toRange:{startRow:s},range:i}=e,a=i?[Gt(i)]:t.getCurrentSelections(),u=a==null?void 0:a.filter(O=>O.range.rangeType===r.RANGE_TYPE.ROW&&O.range.startRow<=n&&n<=O.range.endRow);if((u==null?void 0:u.length)!==1)return!1;const d=o.get(D),c=o.get(r.IUniverInstanceService),l=b(c,e);if(!l)return!1;const{workbook:m,worksheet:g}=l,h=m.getUnitId(),v=g.getSheetId(),C=o.get(r.ErrorService),f=o.get(r.LocaleService),R=u[0].range,S=u[0].primary,w=ye(R,g,!1);if(!r.Rectangle.equals(R,w))return C.emit(f.t("sheets.info.partOfCell")),!1;if(to(s,g))return C.emit(f.t("sheets.info.acrossMergedCell")),!1;const I={...R,startRow:s,endRow:s+R.endRow-R.startRow},M={unitId:h,subUnitId:v,sourceRange:R,targetRange:I},p=Qn(o,M),U=o.get(r.ICommandService),y=d.onCommandExecute({id:Bt.id,params:e}),_=[...(F=y.preRedos)!=null?F:[],{id:we.id,params:M}],k=[...($=y.preUndos)!=null?$:[],{id:we.id,params:p}];if(S){const A=s-n<0,X=R.endRow-R.startRow+1,z=A?I:{...I,startRow:I.startRow-X,endRow:I.endRow-X},ce={unitId:h,subUnitId:v,selections:[{range:z,primary:q(z,g),style:null}]},lt={unitId:h,subUnitId:v,selections:[{range:R,primary:S,style:null}]};_.push({id:H.id,params:ce}),k.push({id:H.id,params:lt})}return _.push(...y.redos),k.push(...y.undos),r.sequenceExecute(_,U).result?(o.get(r.IUndoRedoService).pushUndoRedo({unitID:h,undoMutations:k,redoMutations:_}),!0):!1}},$t="sheet.command.move-cols",Ht={id:$t,type:r.CommandType.COMMAND,handler:async(o,e)=>{var F,$;const t=o.get(P),{fromRange:{startColumn:n},toRange:{startColumn:s},range:i}=e,a=i?[Gt(i)]:t.getCurrentSelections(),u=a==null?void 0:a.filter(O=>O.range.rangeType===r.RANGE_TYPE.COLUMN&&O.range.startColumn<=n&&n<=O.range.endColumn);if((u==null?void 0:u.length)!==1)return!1;const d=o.get(D),c=o.get(r.IUniverInstanceService),l=b(c,e);if(!l)return!1;const{workbook:m,worksheet:g}=l,h=m.getUnitId(),v=g.getSheetId(),C=o.get(r.ErrorService),f=o.get(r.LocaleService),R=u[0].range,S=u[0].primary,w=ye(R,g,!1);if(!r.Rectangle.equals(R,w))return C.emit(f.t("sheets.info.partOfCell")),!1;if(no(s,g))return C.emit(f.t("sheets.info.acrossMergedCell")),!1;const I={...R,startColumn:s,endColumn:s+R.endColumn-R.startColumn},M={unitId:h,subUnitId:v,sourceRange:R,targetRange:I},p=eo(o,M),U=o.get(r.ICommandService),y=d.onCommandExecute({id:Ht.id,params:e}),_=[...(F=y.preRedos)!=null?F:[],{id:pe.id,params:M}],k=[...($=y.preUndos)!=null?$:[],{id:pe.id,params:p}];if(S){const O=R.endColumn-R.startColumn+1,z=s-n<0?I:{...I,startColumn:I.startColumn-O,endColumn:I.endColumn-O},ce={unitId:h,subUnitId:v,selections:[{range:z,primary:q(z,g),style:null}]},lt={unitId:h,subUnitId:v,selections:[{range:R,primary:S,style:null}]};_.push({id:H.id,params:ce}),k.push({id:H.id,params:lt})}return _.push(...y.redos),k.push(...y.undos),r.sequenceExecute(_,U).result&&o.get(r.IUndoRedoService).pushUndoRedo({unitID:h,undoMutations:k,redoMutations:_}),!0}};function Gt(o){return{range:o,primary:null,style:null}}const oo=o=>{const{order:e}=o,t={};return Object.keys(e).forEach(n=>{t[e[Number(n)]]=Number(n)}),{...o,order:t}},zt={id:"sheet.mutation.reorder-range",type:r.CommandType.MUTATION,handler:(o,e)=>{const{subUnitId:t,unitId:n,range:s,order:i}=e,d=o.get(r.IUniverInstanceService).getUnit(n).getSheetBySheetId(t);if(!d)return!1;const c=new r.ObjectMatrix;r.Range.foreach(s,(m,g)=>{if(i.hasOwnProperty(m)){const h=i[m],v=r.Tools.deepClone(d.getCellRaw(h,g));c.setValue(m,g,v)}});const l=d.getCellMatrix();return c.forValue((m,g,h)=>{l.setValue(m,g,h)}),!0}},Yt="sheet.command.reorder-range",so={id:Yt,type:r.CommandType.COMMAND,handler:(o,e)=>{var v,C;const{subUnitId:t,unitId:n,range:s,order:i}=e,a=o.get(r.ICommandService),u={id:zt.id,params:{unitId:n,subUnitId:t,order:i,range:s}},d={id:zt.id,params:oo(u.params)},l=o.get(D).onCommandExecute({id:so.id,params:e}),m=[...(v=l.preRedos)!=null?v:[],u,...l.redos],g=[...(C=l.preUndos)!=null?C:[],d,...l.undos];return r.sequenceExecute(m,a).result?(o.get(r.IUndoRedoService).pushUndoRedo({unitID:n,undoMutations:g,redoMutations:m}),!0):!1}},Y={MoveRangeCommandId:yt,InsertRowCommandId:Wt,InsertColCommandId:Ft,RemoveColCommandId:Vt,RemoveRowCommandId:Lt,DeleteRangeMoveLeftCommandId:bt,DeleteRangeMoveUpCommandId:Tt,InsertRangeMoveDownCommandId:Jn,InsertRangeMoveRightCommandId:xt,MoveColsCommandId:$t,MoveRowsCommandId:jt,ReorderRangeCommandId:Yt};var G=(o=>(o[o.Set=0]="Set",o[o.Delete=1]="Delete",o[o.HorizontalMove=2]="HorizontalMove",o[o.VerticalMove=3]="VerticalMove",o[o.Unknown=4]="Unknown",o))(G||{});const Te=Number.MAX_SAFE_INTEGER,ee=o=>{const e={...o},t=Number.isNaN(e.startRow)&&Number.isNaN(e.endRow)&&!Number.isNaN(e.startColumn)&&!Number.isNaN(e.endColumn),n=Number.isNaN(e.startColumn)&&Number.isNaN(e.endColumn)&&!Number.isNaN(e.startRow)&&!Number.isNaN(e.endRow);return(e.rangeType===r.RANGE_TYPE.COLUMN||t)&&(e.startRow=0,e.endRow=Te),(e.rangeType===r.RANGE_TYPE.ROW||n)&&(e.startColumn=0,e.endColumn=Te),e.rangeType===r.RANGE_TYPE.ALL&&(e.startColumn=0,e.endColumn=Te,e.startRow=0,e.endRow=Te),e},Pe=o=>{let e=o.rangeType;return o.rangeType===r.RANGE_TYPE.COLUMN?e=r.RANGE_TYPE.ROW:o.rangeType===r.RANGE_TYPE.ROW&&(e=r.RANGE_TYPE.COLUMN),{startRow:o.startColumn,endRow:o.endColumn,startColumn:o.startRow,endColumn:o.endRow,rangeType:e}},Ne=(o,e,t)=>{const n={...t},s={...e},i=(C,f)=>{const R=Math.max(C.start,f.start),S=Math.min(C.end,f.end);return S<R?null:{start:R,end:S}},a=C=>C.end-C.start+1,u=(C,f)=>({start:C.start-f.start,end:C.start-f.start+C.end-C.start}),d=(C,f)=>({start:f.start+C.start,end:f.start+C.start+C.end-C.start}),c=e.start>o.start;if(c){const C=Math.min(o.end,e.start)-o.start+1;s.start-=C,s.end-=C}const l=a(o),m=l,g=i(o,n),h=g&&a(g)>=a(n);if(o.end<n.start)n.start-=l,n.end-=l;else if(g){const C=a(g);if(h){const f=u(n,o),R=d(f,s);n.start=R.start,n.end=R.end}else g.start>o.start?c?(n.end-=C+l,n.start-=l):n.end-=C:c?n.end-=C:n.start>o.start&&n.end>o.end?(n.start-=l,n.end-=l+C):n.end-=C}const v=i(s,n);return h||(s.start<=n.start?(n.start+=m,n.end+=m):v&&(c?s.end<=n.start||s.start<=n.start&&s.end>=n.start?(n.start+=m,n.end+=m):s.start>=n.start&&s.start<=n.end&&(n.end+=m):n.start<s.start&&n.end>s.start?n.end+=m:(n.start>=s.end||n.start>=s.start&&n.start<=s.end)&&(n.end+=m,n.start+=m))),{step:n.start-t.start,length:a(n)-a(t)}},ro=(o,e)=>{const{fromRange:t,toRange:n}=o.params||{};if(!n||!t)return[];const s=ee(t),i=ee(n),a=ee(e),u=Ne({start:s.startRow,end:s.endRow},{start:i.startRow,end:i.endRow},{start:a.startRow,end:a.endRow});return u===null?[{type:G.Delete}]:[{type:G.VerticalMove,step:u.step||0,length:u.length||0}]},io=(o,e)=>{const{fromRange:t,toRange:n}=o.params||{};if(!n||!t)return[];const s=ee(t),i=ee(n),a=ee(e),u=Ne({start:s.startColumn,end:s.endColumn},{start:i.startColumn,end:i.endColumn},{start:a.startColumn,end:a.endColumn});return u===null?[{type:G.Delete}]:[{type:G.HorizontalMove,step:u.step||0,length:u.length||0}]},qt=(o,e)=>{const t=ee(o),n=ee(e),s=a=>a.endColumn-a.startColumn+1,i=a=>a.endRow-a.startRow+1;if(t.startRow<=n.startRow&&t.endRow>=n.endRow){if(n.startColumn<t.startColumn&&n.endColumn>=t.startColumn&&n.endColumn<=t.endColumn||n.startColumn<t.startColumn&&n.endColumn>=t.endColumn){const a=r.Rectangle.getIntersects(n,t);if(a)return{step:0,length:-s(a)}}if(n.startColumn>=t.startColumn&&n.endColumn<=t.endColumn&&i(t)>=i(n))return null;if(n.startColumn>=t.startColumn&&n.startColumn<=t.endColumn&&n.endColumn>t.endColumn){const a=r.Rectangle.getIntersects(n,t);if(a){const u=-s(a);return{step:-(s(t)-s(a)),length:u}}}if(n.startColumn>t.endColumn)return{step:-s(t),length:0}}return{step:0,length:0}},Kt=(o,e)=>{const t=ee(o),n=ee(e),s=i=>i.endColumn-i.startColumn+1;if(t.startRow<=n.startRow&&t.endRow>=n.endRow){if(n.startColumn<t.startColumn&&n.endColumn>=t.startColumn&&n.endColumn<=t.endColumn||n.startColumn<t.startColumn&&n.endColumn>=t.endColumn)return{step:0,length:s(t)};if(n.startColumn>=t.startColumn&&n.endColumn<=t.endColumn||n.startColumn>t.startColumn&&n.startColumn<=t.endColumn&&n.endColumn>t.endColumn||n.startColumn>=t.endColumn)return{step:s(t),length:0}}return{step:0,length:0}};function ao(o,e,t){const n=[];if(r.Rectangle.contains(e,t)&&n.push({type:G.Delete}),r.Rectangle.contains(o,t)){n.push({type:G.Delete});const s=r.Rectangle.getRelativeRange(t,o),i=r.Rectangle.getPositionRange(s,e);return[{type:G.Set,range:i}]}return n}const De=(o,e)=>{let t={...e};return o.forEach(n=>{switch(n.type){case G.Delete:{t=null;break}case G.HorizontalMove:{if(!t)return;t.startColumn+=n.step,t.endColumn+=n.step+(n.length||0);break}case G.VerticalMove:{if(!t)return;t.startRow+=n.step,t.endRow+=n.step+(n.length||0);break}case G.Set:{t=n.range;break}}}),t&&(t.endColumn<t.startColumn||t.endRow<t.startRow)?null:t};function uo(o,e){const{id:t,params:n}=e;let s={length:0,step:0,type:G.Unknown};switch(t){case Me.id:s.type=G.Delete;break;case we.id:s=Ne({start:n.sourceRange.startRow,end:n.sourceRange.endRow},{start:n.targetRange.startRow,end:n.targetRange.endRow},{start:o.startRow,end:o.endRow}),s.type=G.VerticalMove;break;case pe.id:s=Ne({start:n.sourceRange.startColumn,end:n.sourceRange.endColumn},{start:n.targetRange.startColumn,end:n.targetRange.endColumn},{start:o.startColumn,end:o.endColumn}),s.type=G.HorizontalMove;break;case ie.id:s=qt(n.range,o),s?s.type=G.HorizontalMove:s={step:0,length:0,type:G.Delete};break;case ge.id:s=qt(Pe(n.range),Pe(o)),s?s.type=G.VerticalMove:s={step:0,length:0,type:G.Delete};break;case le.id:s=Kt(Pe(n.range),Pe(o)),s.type=G.VerticalMove;break;case me.id:s=Kt(n.range,o),s.type=G.HorizontalMove;break;case Se.id:{const i=n.fromRange||new r.ObjectMatrix(n.from).getRange(),a=n.toRange||new r.ObjectMatrix(n.to).getRange();s=ao(i,a,o)}break}return s?Array.isArray(s)?De(s,o):De([s],o):o}function co(o){switch(o.id){case pe.id:{const e=o.params;return[e.sourceRange,{...e.targetRange,startColumn:e.targetRange.startColumn-.5,endColumn:e.targetRange.startColumn-.5}]}case we.id:{const e=o.params;return[e.sourceRange,{...e.targetRange,startRow:e.targetRange.startRow-.5,endRow:e.targetRange.startRow-.5}]}case Se.id:{const e=o.params;return[new r.ObjectMatrix(e.from.value).getRange(),new r.ObjectMatrix(e.to.value).getRange()]}case me.id:{const t=o.params.range;return[{...t,startColumn:t.startColumn-.5,endColumn:t.startColumn-.5}]}case le.id:{const t=o.params.range;return[{...t,startRow:t.startRow-.5,endRow:t.startRow-.5}]}case ie.id:return[o.params.range];case ge.id:return[o.params.range]}}var lo=Object.defineProperty,mo=Object.getOwnPropertyDescriptor,go=(o,e,t,n)=>{for(var s=n>1?void 0:n?mo(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&lo(e,t,s),s},Oe=(o,e)=>(t,n)=>e(t,n,o);const ho=r.createInterceptorKey("MERGE_REDO"),vo=r.createInterceptorKey("MERGE_UNDO"),Xt=Math.floor(Number.MAX_SAFE_INTEGER/10);class Co extends r.Disposable{constructor(e,t,n,s,i=!1){super(),this._unitId=e,this._subUnitId=t,this._range=n,this._callback=s,this._skipIntersects=i}onMutation(e){var s,i;if(((s=e.params)==null?void 0:s.unitId)!==this._unitId)return;if(e.id===Se.id){const a=e.params;if(a.from.subUnitId!==this._subUnitId||a.to.subUnitId!==this._subUnitId)return}else if(((i=e.params)==null?void 0:i.subUnitId)!==this._subUnitId)return;if(!this._range)return;if(this._skipIntersects){if(e.id===Me.id)return;const a=co(e);if(a!=null&&a.some(u=>r.Rectangle.intersects(u,this._range)))return}const t=uo(this._range,e);if(t&&r.Rectangle.equals(t,this._range))return!1;const n=this._range;this._range=t,this._callback(n,t)}}let ze=class extends r.Disposable{constructor(e,t,n,s){super();T(this,"interceptor",new r.InterceptorManager({MERGE_REDO:ho,MERGE_UNDO:vo}));T(this,"_watchRanges",new Set);T(this,"_refRangeManagerMap",new Map);T(this,"_serializer",fo());T(this,"_onRefRangeChange",()=>{this._sheetInterceptorService.interceptCommand({getMutations:e=>{const t=this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET).getActiveSheet(),n=Zt(this._univerInstanceService),s=Jt(this._univerInstanceService);if(!t||!n||!s)return{redos:[],undos:[],preRedos:[],preUndos:[]};const u=((()=>{switch(e.id){case Y.MoveColsCommandId:{const g=e.params,h=Math.min(g.fromRange.startColumn,g.toRange.startColumn);return this._checkRange([{...g.fromRange,startColumn:h,endColumn:t.getColumnCount()-1}],n,s)}case Y.MoveRowsCommandId:{const g=e.params,h=Math.min(g.fromRange.startRow,g.toRange.startRow);return this._checkRange([{...g.fromRange,startRow:h,endRow:t.getRowCount()-1}],n,s)}case Y.MoveRangeCommandId:{const g=e;return this._checkRange([g.params.fromRange,g.params.toRange],n,s)}case Y.InsertRowCommandId:{const v={startRow:e.params.range.startRow,endRow:t.getRowCount()-1,startColumn:0,endColumn:t.getColumnCount()-1,rangeType:r.RANGE_TYPE.ROW};return this._checkRange([v],n,s)}case Y.InsertColCommandId:{const h=e.params.range.startColumn,v={startRow:0,endRow:t.getRowCount()-1,startColumn:h,endColumn:t.getColumnCount()-1,rangeType:r.RANGE_TYPE.COLUMN};return this._checkRange([v],n,s)}case Y.RemoveRowCommandId:{const v={startRow:e.params.range.startRow,endRow:t.getRowCount()-1,startColumn:0,endColumn:t.getColumnCount()-1,rangeType:r.RANGE_TYPE.ROW};return this._checkRange([v],n,s)}case Y.RemoveColCommandId:{const h=e.params.range.startColumn,v={startRow:0,endRow:t.getRowCount()-1,startColumn:h,endColumn:t.getColumnCount()-1,rangeType:r.RANGE_TYPE.COLUMN};return this._checkRange([v],n,s)}case Y.DeleteRangeMoveUpCommandId:case Y.InsertRangeMoveDownCommandId:{const h=e.params.range||Qt(this._selectionManagerService)[0],v={startRow:h.startRow,startColumn:h.startColumn,endColumn:h.endColumn,endRow:Xt};return this._checkRange([v],n,s)}case Y.DeleteRangeMoveLeftCommandId:case Y.InsertRangeMoveRightCommandId:{const h=e.params.range||Qt(this._selectionManagerService)[0],v={startRow:h.startRow,startColumn:h.startColumn,endColumn:Xt,endRow:h.endRow};return this._checkRange([v],n,s)}case Y.ReorderRangeCommandId:{const g=e,{range:h,order:v}=g.params,C=[];for(let f=h.startRow;f<=h.endRow;f++)f in v&&C.push({startRow:f,endRow:f,startColumn:h.startColumn,endColumn:h.endColumn});return this._checkRange(C,n,s)}}})()||[]).reduce((g,h)=>{const v=h(e);return g.push(v),g},[]).reduce((g,h)=>{var v,C;return g.redos.push(...h.redos),g.undos.push(...h.undos),g.preRedos.push(...(v=h.preRedos)!=null?v:[]),g.preUndos.push(...(C=h.preUndos)!=null?C:[]),g},{redos:[],undos:[],preUndos:[],preRedos:[]}),d=this.interceptor.fetchThroughInterceptors(this.interceptor.getInterceptPoints().MERGE_REDO)(u.preRedos,null)||[],c=this.interceptor.fetchThroughInterceptors(this.interceptor.getInterceptPoints().MERGE_REDO)(u.redos,null)||[],l=this.interceptor.fetchThroughInterceptors(this.interceptor.getInterceptPoints().MERGE_UNDO)(u.preUndos,null)||[],m=this.interceptor.fetchThroughInterceptors(this.interceptor.getInterceptPoints().MERGE_UNDO)(u.undos,null)||[];return{redos:c,undos:m,preRedos:d,preUndos:l}}})});T(this,"_checkRange",(e,t,n)=>{const s=en(t,n),i=this._refRangeManagerMap.get(s);if(i){const a=new Set;return[...i.keys()].forEach(d=>{const c=i.get(d),l=this._serializer.deserialize(d),m={...l,startRow:+l.startRow,endRow:+l.endRow,startColumn:+l.startColumn,endColumn:+l.endColumn,rangeType:l.rangeType&&+l.rangeType};e.some(g=>r.Rectangle.intersects(g,m))&&c&&c.forEach(g=>{a.add(g)})}),[...a]}return[]});T(this,"registerRefRange",(e,t,n,s)=>{const i=n||Zt(this._univerInstanceService),a=s||Jt(this._univerInstanceService);if(!i||!a)return r.toDisposable(()=>{});const u=en(i,a),d=this._serializer.serialize(e);let c=this._refRangeManagerMap.get(u);c||(c=new Map,this._refRangeManagerMap.set(u,c));const l=c.get(d);return l?l.add(t):c.set(d,new Set([t])),r.toDisposable(()=>{const m=c.get(d);m&&(m.delete(t),m.size||(c.delete(d),c.size||this._refRangeManagerMap.delete(u)))})});this._commandService=e,this._sheetInterceptorService=t,this._univerInstanceService=n,this._selectionManagerService=s,this._onRefRangeChange(),this.interceptor.intercept(this.interceptor.getInterceptPoints().MERGE_REDO,{priority:-1,handler:i=>i}),this.interceptor.intercept(this.interceptor.getInterceptPoints().MERGE_UNDO,{priority:-1,handler:i=>i})}watchRange(e,t,n,s,i){let a;this._watchRanges.size===0&&(a=this._commandService.onCommandExecuted(l=>{if(l.type!==r.CommandType.MUTATION)return!1;for(const m of this._watchRanges)m.onMutation(l)}));const u=new Co(e,t,n,s,i);this._watchRanges.add(u);const d=r.toDisposable(()=>{this._watchRanges.delete(u),this._watchRanges.size===0&&(a==null||a.dispose(),a=null)}),c=this.disposeWithMe(d);return r.toDisposable(()=>{c.dispose(),d.dispose()})}};ze=go([Oe(0,r.ICommandService),Oe(1,r.Inject(D)),Oe(2,r.Inject(r.IUniverInstanceService)),Oe(3,r.Inject(P))],ze);function Zt(o){return o.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET).getUnitId()}function Jt(o){var e;return(e=o.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET).getActiveSheet())==null?void 0:e.getSheetId()}function Qt(o){var e;return((e=o.getCurrentSelections())==null?void 0:e.map(t=>t.range))||[]}function en(o,e){return`${o}_${e}`}function fo(){const o=["startRow","startColumn","endRow","endColumn","rangeType"],e="_";return{deserialize:t=>{const n=o.reduce((i,a,u)=>(i[String(u)]=a,i),{});return t.split(e).reduce((i,a,u)=>{const d=String(u);return a&&n[d]&&(i[n[d]]=a),i},{})},serialize:t=>o.reduce((n,s,i)=>{const a=t[s];return a!==void 0?`${n}${i>0?e:""}${a}`:`${n}`},"")}}var Ro=Object.defineProperty,So=Object.getOwnPropertyDescriptor,Io=(o,e,t,n)=>{for(var s=n>1?void 0:n?So(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&Ro(e,t,s),s},he=(o,e)=>(t,n)=>e(t,n,o);const wo=[me.id,le.id,ie.id,ge.id],po=[we.id,pe.id];function xe(o,e){let t=o;if(e!==void 0){const n=[];for(let s=0;s<t.length;s++){const{startRow:i,endRow:a,startColumn:u,endColumn:d}=t[s];if(e===r.Dimension.ROWS)for(let c=i;c<=a;c++){const l={startRow:c,endRow:c,startColumn:u,endColumn:d};n.push(l)}else if(e===r.Dimension.COLUMNS)for(let c=u;c<=d;c++){const l={startRow:i,endRow:a,startColumn:c,endColumn:c};n.push(l)}}t=n}return t}const Mo=r.createInterceptorKey("mergeCellPermissionCheck");let tn=class extends r.Disposable{constructor(e,t,n,s,i,a){super();T(this,"disposableCollection",new r.DisposableCollection);T(this,"interceptor",new r.InterceptorManager({MERGE_CELL_INTERCEPTOR_CHECK:Mo}));this._commandService=e,this._refRangeService=t,this._univerInstanceService=n,this._injector=s,this._sheetInterceptorService=i,this._selectionManagerService=a,this._onRefRangeChange(),this._initCommandInterceptor(),this._commandExecutedListener()}_initCommandInterceptor(){const e=this;this._sheetInterceptorService.interceptCommand({getMutations(t){var n;switch(t.id){case Mt.id:case _t.id:{const s=e._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET),i=s.getUnitId(),a=s==null?void 0:s.getActiveSheet();if(!a)return{redos:[],undos:[]};const u=a.getSheetId(),d=a.getConfig().mergeData,c=(n=e._selectionManagerService.getCurrentSelections())==null?void 0:n.map(l=>l.range);if(c&&c.length>0&&c.some(m=>d.some(g=>r.Rectangle.intersects(g,m)))){const m={unitId:i,subUnitId:u,ranges:c},g=K(e._injector,m),h=[{id:W.id,params:m}],v=[{id:x.id,params:g}];return{redos:h,undos:v}}}}return{redos:[],undos:[]}}}),this._sheetInterceptorService.interceptRanges({getMutations:({unitId:t,subUnitId:n,ranges:s})=>{const i=[],a=[],u={redos:i,undos:a};if(!s||!s.length)return u;const d=b(this._univerInstanceService,{unitId:t,subUnitId:n});if(!d)return u;const{worksheet:c}=d,m=c.getMergeData().filter(g=>s.some(h=>r.Rectangle.intersects(g,h)));return m.length?(i.push({id:W.id,params:{unitId:t,subUnitId:n,ranges:m}}),a.push({id:x.id,params:{unitId:t,subUnitId:n,ranges:m}}),{undos:a,redos:i}):u}})}refRangeHandle(e,t,n){switch(e.id){case Y.MoveColsCommandId:{const s=e.params;return this._handleMoveColsCommand(s,t,n)}case Y.MoveRowsCommandId:{const s=e.params;return this._handleMoveRowsCommand(s,t,n)}case ae.id:{const s=e.params,i=s.unitId||t,a=s.subUnitId||n;return this._handleInsertRowCommand(s,i,a)}case ue.id:{const s=e.params,i=s.unitId||t,a=s.subUnitId||n;return this._handleInsertColCommand(s,i,a)}case Ee.id:{const s=e.params;return this._handleRemoveColCommand(s,t,n)}case be.id:{const s=e.params;return this._handleRemoveRowCommand(s,t,n)}case He.id:{const s=e.params;return this._handleMoveRangeCommand(s,t,n)}case At.id:{const s=e.params;return this._handleInsertRangeMoveRightCommand(s,t,n)}case Ot.id:{const s=e.params;return this._handleInsertRangeMoveDownCommand(s,t,n)}case Pt.id:{const s=e.params;return this._handleDeleteRangeMoveUpCommand(s,t,n)}case Et.id:{const s=e.params;return this._handleDeleteRangeMoveLeftCommand(s,t,n)}}return{redos:[],undos:[]}}_onRefRangeChange(){const e=(t,n)=>{const s=this._univerInstanceService.getUniverSheetInstance(t);if(!s)return;const i=s==null?void 0:s.getSheetBySheetId(n);if(!i)return;this.disposableCollection.dispose();const a=i.getMergeData(),u=d=>this.refRangeHandle(d,t,n);a.forEach(d=>{this.disposableCollection.add(this._refRangeService.registerRefRange(d,u,t,n))})};this.disposeWithMe(this._commandService.onCommandExecuted(t=>{if(t.id===Ue.id){const n=t.params,s=n.subUnitId,i=n.unitId;if(!s||!i)return;e(i,s)}if(t.id===x.id){const n=t.params,s=n.subUnitId,i=n.unitId;if(!s||!i)return;e(n.unitId,n.subUnitId)}})),this._univerInstanceService.getCurrentTypeOfUnit$(r.UniverInstanceType.UNIVER_SHEET).pipe(V.first(t=>!!t)).subscribe(t=>{const n=t.getActiveSheet();n&&e(t.getUnitId(),n.getSheetId())})}_handleMoveRowsCommand(e,t,n){const s=J(this._univerInstanceService,t);if(!s)return this._handleNull();const i=Q(s,n);if(!i)return this._handleNull();const a=[...i.getMergeData()],u={unitId:t,subUnitId:n,ranges:[]},d={unitId:t,subUnitId:n,ranges:[]},{fromRange:c}=e,{startRow:l,endRow:m}=c;if(a.forEach(v=>{if(l<=v.startRow&&m>=v.endRow){u.ranges.push(v);const C=ro({id:Y.MoveRowsCommandId,params:e},v),f=De(C,v);f&&d.ranges.push(f)}}),u.ranges.length===0)return this._handleNull();const g=K(this._injector,u),h=Z(this._injector,d);return{redos:[{id:W.id,params:u},{id:x.id,params:d}],undos:[{id:W.id,params:h},{id:x.id,params:g}]}}_handleMoveColsCommand(e,t,n){const s=J(this._univerInstanceService,t);if(!s)return this._handleNull();const i=Q(s,n);if(!i)return this._handleNull();const a=[...i.getMergeData()],u={unitId:t,subUnitId:n,ranges:[]},d={unitId:t,subUnitId:n,ranges:[]},{fromRange:c}=e,{startColumn:l,endColumn:m}=c;if(a.forEach(v=>{if(l<=v.startColumn&&m>=v.endColumn){u.ranges.push(v);const C=io({id:Y.MoveColsCommandId,params:e},v),f=De(C,v);f&&d.ranges.push(f)}}),u.ranges.length===0)return this._handleNull();const g=K(this._injector,u),h=Z(this._injector,d);return{redos:[{id:W.id,params:u},{id:x.id,params:d}],undos:[{id:W.id,params:h},{id:x.id,params:g}]}}_handleMoveRangeCommand(e,t,n){const s=J(this._univerInstanceService,t);if(!s)return this._handleNull();const i=Q(s,n);if(!i)return this._handleNull();const a=i.getMergeData(),u=a.filter(h=>r.Rectangle.intersects(h,e.fromRange)),d=a.filter(h=>r.Rectangle.intersects(h,e.toRange)),c=u.map(h=>r.Rectangle.getRelativeRange(h,e.fromRange)).map(h=>r.Rectangle.getPositionRange(h,e.toRange)),l=xe(c).filter(h=>!a.some(v=>r.Rectangle.equals(h,v))),m=[{id:W.id,params:{unitId:t,subUnitId:n,ranges:u}},{id:W.id,params:{unitId:t,subUnitId:n,ranges:d}},{id:x.id,params:{unitId:t,subUnitId:n,ranges:l}}],g=[{id:W.id,params:{unitId:t,subUnitId:n,ranges:l}},{id:x.id,params:{unitId:t,subUnitId:n,ranges:d}},{id:x.id,params:{unitId:t,subUnitId:n,ranges:u}}];return{redos:m,undos:g}}_handleInsertRowCommand(e,t,n){const s=J(this._univerInstanceService,t);if(!s)return this._handleNull();const i=Q(s,n);if(!i)return this._handleNull();const{range:a}=e,{startRow:u,endRow:d}=a,c=r.Tools.deepClone(i.getMergeData()).reduce((R,S)=>(u>S.startRow&&u<=S.endRow&&R.push(S),R),[]);if(c.length===0)return this._handleNull();const l=r.Tools.deepClone(i.getMergeData()).reduce((R,S)=>{if(u>S.startRow&&u<=S.endRow){const w=d-u+1;S.endRow+=w,this._checkIsMergeCell(S)&&R.push(S)}return R},[]),m={unitId:t,subUnitId:n,ranges:c},g=K(this._injector,m),h={unitId:t,subUnitId:n,ranges:l},v=Z(this._injector,h),C=[{id:W.id,params:m},{id:x.id,params:h}],f=[{id:W.id,params:v},{id:x.id,params:g}];return{redos:C,undos:f}}_handleInsertColCommand(e,t,n){const{range:s}=e,i=J(this._univerInstanceService,t);if(!i)return this._handleNull();const a=Q(i,n);if(!a)return this._handleNull();const{startColumn:u,endColumn:d}=s,c=r.Tools.deepClone(a.getMergeData()).reduce((R,S)=>(u>S.startColumn&&u<=S.endColumn&&R.push(S),R),[]);if(c.length===0)return this._handleNull();const l=r.Tools.deepClone(a.getMergeData()).reduce((R,S)=>{if(u>S.startColumn&&u<=S.endColumn){const w=d-u+1;S.endColumn+=w,this._checkIsMergeCell(S)&&R.push(S)}return R},[]),m={unitId:t,subUnitId:n,ranges:c},g=K(this._injector,m),h={unitId:t,subUnitId:n,ranges:l},v=Z(this._injector,h),C=[{id:W.id,params:m},{id:x.id,params:h}],f=[{id:W.id,params:v},{id:x.id,params:g}];return{redos:C,undos:f}}_handleRemoveColCommand(e,t,n){const s=J(this._univerInstanceService,t);if(!s)return this._handleNull();const i=Q(s,n);if(!i)return this._handleNull();const{range:a}=e,{startColumn:u,endColumn:d}=a,c=r.Tools.deepClone(i.getMergeData()).reduce((w,I)=>(r.Rectangle.intersects(a,I)&&w.push(I),w),[]);if(c.length===0)return this._handleNull();const l=r.Tools.deepClone(i.getMergeData()).reduce((w,I)=>{if(r.Rectangle.intersects(a,I)){if(u<=I.startColumn&&d>=I.endColumn)return w;u>=I.startColumn&&d<=I.endColumn?I.endColumn-=d-u+1:u<I.startColumn?(I.startColumn=u,I.endColumn-=d-u+1):d>I.endColumn&&(I.endColumn=u-1),this._checkIsMergeCell(I)&&w.push(I)}return w},[]),m={unitId:t,subUnitId:n,ranges:c},g=K(this._injector,m),h={unitId:t,subUnitId:n,ranges:l},v=Z(this._injector,h),C=[{id:W.id,params:m}],f=[{id:x.id,params:h}],R=[{id:W.id,params:v}],S=[{id:x.id,params:g}];return{preUndos:R,undos:S,preRedos:C,redos:f}}_handleRemoveRowCommand(e,t,n){const{range:s}=e,i=J(this._univerInstanceService,t);if(!i)return this._handleNull();const a=Q(i,n);if(!a)return this._handleNull();const{startRow:u,endRow:d}=s,c=r.Tools.deepClone(a.getMergeData()).reduce((w,I)=>(r.Rectangle.intersects(s,I)&&w.push(I),w),[]);if(c.length===0)return this._handleNull();const l=r.Tools.deepClone(a.getMergeData()).reduce((w,I)=>{if(r.Rectangle.intersects(s,I)){if(u<=I.startRow&&d>=I.endRow)return w;u>=I.startRow&&d<=I.endRow?I.endRow-=d-u+1:u<I.startRow?(I.startRow=u,I.endRow-=d-u+1):d>I.endRow&&(I.endRow=u-1),this._checkIsMergeCell(I)&&w.push(I)}return w},[]),m={unitId:t,subUnitId:n,ranges:c},g=K(this._injector,m),h={unitId:t,subUnitId:n,ranges:l},v=Z(this._injector,h),C=[{id:W.id,params:m}],f=[{id:x.id,params:h}],R=[{id:W.id,params:v}],S=[{id:x.id,params:g}];return{preUndos:R,undos:S,preRedos:C,redos:f}}_handleInsertRangeMoveRightCommand(e,t,n){const s=J(this._univerInstanceService,t);if(!s)return this._handleNull();const i=Q(s,n);if(!i)return this._handleNull();const a=e.range,u=i.getMaxColumns()-1,d=i.getMergeData(),c=[],l=[];d.forEach(C=>{const{startRow:f,endRow:R,startColumn:S,endColumn:w}=a;if(r.Rectangle.intersects({startRow:f,startColumn:S,endRow:R,endColumn:u},C)&&(c.push(C),r.Rectangle.contains({startRow:f,startColumn:S,endRow:R,endColumn:u},C))){const p=w-S+1;l.push({startRow:C.startRow,startColumn:C.startColumn+p,endRow:C.endRow,endColumn:C.endColumn+p})}});const m={unitId:t,subUnitId:n,ranges:c},g=K(this._injector,m),h={unitId:t,subUnitId:n,ranges:l},v=Z(this._injector,h);return{preRedos:[{id:W.id,params:m}],redos:[{id:x.id,params:h}],preUndos:[{id:W.id,params:v}],undos:[{id:x.id,params:g}]}}_handleInsertRangeMoveDownCommand(e,t,n){const s=J(this._univerInstanceService,t);if(!s)return this._handleNull();const i=Q(s,n);if(!i)return this._handleNull();const a=e.range,u=i.getMaxRows()-1,d=i.getMergeData(),c=[],l=[];d.forEach(w=>{const{startRow:I,startColumn:M,endColumn:p,endRow:U}=a;if(r.Rectangle.intersects({startRow:I,startColumn:M,endRow:u,endColumn:p},w)&&(c.push(w),r.Rectangle.contains({startRow:I,startColumn:M,endRow:u,endColumn:p},w))){const k=U-I+1;l.push({startRow:w.startRow+k,startColumn:w.startColumn,endRow:w.endRow+k,endColumn:w.endColumn})}});const m={unitId:t,subUnitId:n,ranges:c},g=K(this._injector,m),h={unitId:t,subUnitId:n,ranges:l},v=Z(this._injector,h),C=[{id:W.id,params:m}],f=[{id:x.id,params:h}],R=[{id:W.id,params:v}],S=[{id:x.id,params:g}];return{redos:f,undos:S,preRedos:C,preUndos:R}}_handleDeleteRangeMoveUpCommand(e,t,n){const s=J(this._univerInstanceService,t);if(!s)return this._handleNull();const i=Q(s,n);if(!i)return this._handleNull();const a=e.range,u=i.getMaxRows()-1,d=i.getMergeData(),c=[],l=[];d.forEach(w=>{const{startRow:I,startColumn:M,endColumn:p,endRow:U}=a;if(r.Rectangle.intersects({startRow:I,startColumn:M,endRow:u,endColumn:p},w)&&(c.push(w),r.Rectangle.contains({startRow:I,startColumn:M,endRow:u,endColumn:p},w))){const k=U-I+1,N=r.Rectangle.moveVertical(w,-k);l.push(N)}});const m={unitId:t,subUnitId:n,ranges:c},g=K(this._injector,m),h={unitId:t,subUnitId:n,ranges:l},v=Z(this._injector,h),C=[{id:W.id,params:m}],f=[{id:x.id,params:h}],R=[{id:W.id,params:v}],S=[{id:x.id,params:g}];return{redos:f,undos:S,preRedos:C,preUndos:R}}_handleDeleteRangeMoveLeftCommand(e,t,n){const s=J(this._univerInstanceService,t);if(!s)return this._handleNull();const i=Q(s,n);if(!i)return this._handleNull();const a=e.range,u=i.getMaxColumns()-1,d=i.getMergeData(),c=[],l=[];d.forEach(C=>{const{startRow:f,endRow:R,startColumn:S,endColumn:w}=a;if(r.Rectangle.intersects({startRow:f,startColumn:S,endRow:R,endColumn:u},C)&&(c.push(C),r.Rectangle.contains({startRow:f,startColumn:S,endRow:R,endColumn:u},C))){const p=w-S+1;l.push({startRow:C.startRow,startColumn:C.startColumn-p,endRow:C.endRow,endColumn:C.endColumn-p})}});const m={unitId:t,subUnitId:n,ranges:c},g=K(this._injector,m),h={unitId:t,subUnitId:n,ranges:l},v=Z(this._injector,h);return{preRedos:[{id:W.id,params:m}],redos:[{id:x.id,params:h}],undos:[{id:x.id,params:g}],preUndos:[{id:W.id,params:v}]}}_checkIsMergeCell(e){return!(e.startRow===e.endRow&&e.startColumn===e.endColumn)}_handleNull(){return{redos:[],undos:[]}}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(po.includes(e.id)){if(!e.params)return;const t=this._univerInstanceService.getUniverSheetInstance(e.params.unitId);if(!t)return;const n=t.getSheetBySheetId(e.params.subUnitId);if(!n)return;const{sourceRange:s,targetRange:i}=e.params,a=s.startColumn===i.startColumn&&s.endColumn===i.endColumn,u=a?s.endRow-s.startRow+1:s.endColumn-s.startColumn+1,d=a?s.startRow:s.startColumn,c=a?i.startRow:i.startColumn,l=n.getConfig().mergeData,m=[];l.forEach(C=>{let{startRow:f,endRow:R,startColumn:S,endColumn:w,rangeType:I}=C;r.Rectangle.intersects(C,s)||(a?d<f&&c>R?(f-=u,R-=u):d>R&&c<=f&&(f+=u,R+=u):d<S&&c>w?(S-=u,w-=u):d>w&&c<=S&&(S+=u,w+=u)),C.startRow===C.endRow&&C.startColumn===C.endColumn||m.push({startRow:f,endRow:R,startColumn:S,endColumn:w,rangeType:I})}),n.setMergeData(m),this.disposableCollection.dispose();const{unitId:g,subUnitId:h}=e.params,v=C=>this.refRangeHandle(C,g,h);m.forEach(C=>{this.disposableCollection.add(this._refRangeService.registerRefRange(C,v,g,h))})}if(wo.includes(e.id)){const t=this._univerInstanceService.getUniverSheetInstance(e.params.unitId);if(!t)return;const n=t.getSheetBySheetId(e.params.subUnitId);if(!n)return;const s=n.getConfig().mergeData,i=e.params;if(!i)return;const{range:a}=i,u=e.id.includes("row"),d=e.id.includes("insert"),c=u?a.startRow:a.startColumn,l=u?a.endRow:a.endColumn,m=l-c+1,g=[];s.forEach(f=>{let{startRow:R,endRow:S,startColumn:w,endColumn:I,rangeType:M}=f;d?u?c<=R&&(R+=m,S+=m):c<=w&&(w+=m,I+=m):u?l<R&&(R-=m,S-=m):l<w&&(w-=m,I-=m),f.startRow===f.endRow&&f.startColumn===f.endColumn||g.push({startRow:R,endRow:S,startColumn:w,endColumn:I,rangeType:M})}),n.setMergeData(g),this.disposableCollection.dispose();const{unitId:h,subUnitId:v}=e.params,C=f=>this.refRangeHandle(f,h,v);g.forEach(f=>{this.disposableCollection.add(this._refRangeService.registerRefRange(f,C,h,v))})}}))}};tn=Io([he(0,r.Inject(r.ICommandService)),he(1,r.Inject(ze)),he(2,r.Inject(r.IUniverInstanceService)),he(3,r.Inject(r.Injector)),he(4,r.Inject(D)),he(5,r.Inject(P))],tn);function J(o,e){return e?o.getUniverSheetInstance(e):o.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET)}function Q(o,e){return e?o.getSheetBySheetId(e):o.getActiveSheet()}function _o(o,e){return e.some(t=>yo(o,t))}function yo(o,e){const{startRow:t,startColumn:n,endColumn:s,endRow:i}=e,a=o.getMatrixWithMergedCells(t,n,i,s);let u=!1;return a.forValue((d,c,l)=>{if(l&&(d!==t||c!==n)&&o.cellHasValue(l))return u=!0,!1}),u}function Uo(o,e,t,n){const s=[],i=[],a=t.getSheetId();return n.forEach(u=>{const d=ko(t,u),c={unitId:e,subUnitId:a,cellValue:d.getData()},l=re(o,c);s.push({id:j.id,params:l}),i.push({id:j.id,params:c})}),{undos:s,redos:i}}function ko(o,e){const{startRow:t,startColumn:n,endColumn:s,endRow:i}=e,a=o.getMatrixWithMergedCells(t,n,i,s,!0),u=new r.ObjectMatrix;return a.forValue((d,c,l)=>{l&&(d!==t||c!==n)&&u.setValue(d,c,null)}),u}const Ae={type:r.CommandType.COMMAND,id:"sheet.command.add-worksheet-merge",handler:async(o,e)=>{const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=e.unitId,a=e.subUnitId,u=e.selections,d=xe(u,e.value),c=s.getUniverSheetInstance(i).getSheetBySheetId(a),l=[],m=[],g=_o(c,d),h={unitId:i,subUnitId:a,ranges:d},v={unitId:i,subUnitId:a,ranges:d};l.push({id:W.id,params:h}),l.push({id:x.id,params:v});const C=K(o,h),f=Z(o,v);if(m.push({id:W.id,params:f}),m.push({id:x.id,params:C}),g){const S=Uo(o,i,c,d);l.unshift(...S.redos),m.push(...S.undos)}return r.sequenceExecute(l,t).result?(n.pushUndoRedo({unitID:i,undoMutations:m,redoMutations:l}),!0):!1}};r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND;async function Ye(o,e,t,n){const s=o.get(r.IUniverInstanceService),i=b(s,{unitId:e,subUnitId:t});if(!i)return;const{worksheet:a}=i;if(a.getMergeData().some(l=>n.some(m=>r.Rectangle.intersects(m,l))))throw new Error("The ranges to be merged overlap with the existing merged cells");await o.get(r.ICommandService).executeCommand(Ae.id,{unitId:e,subUnitId:t,selections:n})}const bo={type:r.CommandType.COMMAND,id:"sheet.command.remove-worksheet-merge",handler:async(o,e)=>{var N;const t=o.get(P),n=o.get(r.ICommandService),s=o.get(r.IUndoRedoService),i=o.get(r.IUniverInstanceService),a=(e==null?void 0:e.ranges)||((N=t.getCurrentSelections())==null?void 0:N.map(F=>F.range));if(!(a!=null&&a.length))return!1;const u=b(i);if(!u)return!1;const{subUnitId:d,unitId:c,worksheet:l}=u,m={unitId:c,subUnitId:d,ranges:a},h=l.getConfig().mergeData.filter(F=>a.some($=>r.Rectangle.intersects($,F)));if(!h.length)return!1;const v=K(o,m),C=t.getCurrentSelections();if(!(C!=null&&C.length))return!1;const f=r.Tools.deepClone(C),R=r.Tools.deepClone(C),S=R[R.length-1],{startRow:w,startColumn:I}=S.range;S.primary={startRow:w,startColumn:I,endRow:w,endColumn:I,actualRow:w,actualColumn:I,isMerged:!1,isMergedMainCell:!1};const M=Eo(l,h),p={unitId:c,subUnitId:d,cellValue:M.redoParams.getMatrix()},U={unitId:c,subUnitId:d,cellValue:M.undoParams.getMatrix()},y=[{id:W.id,params:v},{id:j.id,params:p},{id:H.id,params:{selections:R}}],_=[{id:x.id,params:v},{id:j.id,params:U},{id:H.id,params:{selections:f}}];return r.sequenceExecute(y,n)?(s.pushUndoRedo({unitID:c,undoMutations:_,redoMutations:y}),!0):!1}};function Eo(o,e){const t=new r.ObjectMatrix,n=new r.ObjectMatrix;return e.forEach(s=>{const{startRow:i,startColumn:a,endColumn:u,endRow:d}=s,c=o.getCellMatrix().getValue(i,a);if(c!=null&&c.s)for(let l=i;l<=d;l++)for(let m=a;m<=u;m++)(l!==i||m!==a)&&(t.setValue(l,m,{s:c.s}),n.setValue(l,m,null))}),{redoParams:t,undoParams:n}}const B={type:r.CommandType.COMMAND,id:"sheet.command.set-style",handler:async(o,e)=>{var M;const t=o.get(r.IUniverInstanceService),n=b(t,e);if(!n)return!1;const{unitId:s,subUnitId:i,worksheet:a}=n,{range:u,style:d}=e,c=o.get(r.ICommandService),l=o.get(r.IUndoRedoService),m=o.get(P),g=u?[u]:(M=m.getCurrentSelections())==null?void 0:M.map(p=>p.range);if(!(g!=null&&g.length))return!1;const h=new r.ObjectMatrix,v=Fn(a);if(r.Tools.isArray(d.value))for(let p=0;p<g.length;p++)v.forOperableEach(g[p],(U,y,_)=>{h.setValue(U,y,{s:{[d.type]:d.value[U-_.startRow][y-_.startColumn]}})});else for(let p=0;p<g.length;p++){const U={s:{[d.type]:d.value}};v.forOperableEach(g[p],(y,_)=>h.setValue(y,_,U))}const C={subUnitId:i,unitId:s,cellValue:h.getMatrix()},f=re(o,C),R=c.syncExecuteCommand(j.id,C),{undos:S,redos:w}=o.get(D).onCommandExecute({id:B.id,params:e}),I=r.sequenceExecute([...w],c);return R&&I.result?(l.pushUndoRedo({unitID:C.unitId,undoMutations:[{id:j.id,params:f},...S],redoMutations:[{id:j.id,params:C},...w]}),!0):!1}};r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND,r.CommandType.COMMAND;const To={type:r.CommandType.COMMAND,id:"sheet.command.set-vertical-text-align",handler:async(o,e)=>{if(!e)return!1;const t=o.get(r.ICommandService),n={unitId:e.unitId,subUnitId:e.subUnitId,range:e.range,style:{type:"vt",value:e.value}};return t.executeCommand(B.id,n)}},Po={type:r.CommandType.COMMAND,id:"sheet.command.set-horizontal-text-align",handler:async(o,e)=>{if(!e)return!1;const t=o.get(r.ICommandService),n={unitId:e.unitId,subUnitId:e.subUnitId,range:e.range,style:{type:"ht",value:e.value}};return t.executeCommand(B.id,n)}},nn={type:r.CommandType.COMMAND,id:"sheet.command.set-text-wrap",handler:async(o,e)=>{if(!e)return!1;const t=o.get(r.ICommandService),n={unitId:e.unitId,subUnitId:e.subUnitId,range:e.range,style:{type:"tb",value:e.value}};return t.executeCommand(B.id,n)}};r.CommandType.COMMAND;function No(o){switch(o){case"left":return r.HorizontalAlign.LEFT;case"center":return r.HorizontalAlign.CENTER;case"normal":return r.HorizontalAlign.RIGHT;default:throw new Error(`Invalid horizontal alignment: ${o}`)}}function Do(o){switch(o){case r.HorizontalAlign.LEFT:return"left";case r.HorizontalAlign.CENTER:return"center";case r.HorizontalAlign.RIGHT:return"normal";default:throw new Error(`Invalid horizontal alignment: ${o}`)}}function Oo(o){switch(o){case"top":return r.VerticalAlign.TOP;case"middle":return r.VerticalAlign.MIDDLE;case"bottom":return r.VerticalAlign.BOTTOM;default:throw new Error(`Invalid vertical alignment: ${o}`)}}function xo(o){switch(o){case r.VerticalAlign.TOP:return"top";case r.VerticalAlign.MIDDLE:return"middle";case r.VerticalAlign.BOTTOM:return"bottom";default:throw new Error(`Invalid vertical alignment: ${o}`)}}function qe(o){return r.isFormulaString(o)?{f:o}:r.isCellV(o)?{v:o}:(r.isICellData(o),o)}function Ao(o,e){const t=new r.ObjectMatrix,{startRow:n,startColumn:s,endRow:i,endColumn:a}=e;if(r.Tools.isArray(o))for(let u=0;u<=i-n;u++)for(let d=0;d<=a-s;d++)t.setValue(u+n,d+s,qe(o[u][d]));else new r.ObjectMatrix(o).forValue((d,c,l)=>{t.setValue(d,c,qe(l))});return t.getMatrix()}function Ke(o,e){return{startRow:o.startRow,endRow:o.endRow,startColumn:0,endColumn:e.getColumnCount()-1,rangeType:r.RANGE_TYPE.ROW}}function Xe(o,e){return{startRow:0,endRow:e.getRowCount()-1,startColumn:o.startColumn,endColumn:o.endColumn,rangeType:r.RANGE_TYPE.COLUMN}}var Wo=Object.defineProperty,Fo=Object.getOwnPropertyDescriptor,Lo=(o,e,t,n)=>{for(var s=n>1?void 0:n?Fo(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&Wo(e,t,s),s},Ze=(o,e)=>(t,n)=>e(t,n,o);E.FRange=class extends r.FBase{constructor(e,t,n,s,i,a){super(),this._workbook=e,this._worksheet=t,this._range=n,this._injector=s,this._commandService=i,this._formulaDataModel=a}getUnitId(){return this._workbook.getUnitId()}getSheetName(){return this._worksheet.getName()}getRange(){return this._range}getRow(){return this._range.startRow}getColumn(){return this._range.startColumn}getWidth(){return this._range.endColumn-this._range.startColumn+1}getHeight(){return this._range.endRow-this._range.startRow+1}getCellData(){var e;return(e=this._worksheet.getCell(this._range.startRow,this._range.startColumn))!=null?e:null}isMerged(){const{startColumn:e,startRow:t,endColumn:n,endRow:s}=this._range;return this._worksheet.getMergedCellRange(t,e,s,n).some(a=>r.Rectangle.equals(a,this._range))}getCellStyleData(){var n;const e=this.getCellData(),t=this._workbook.getStyles();return e&&t&&(n=t.getStyleByCell(e))!=null?n:null}getValue(){var e,t;return(t=(e=this._worksheet.getCell(this._range.startRow,this._range.startColumn))==null?void 0:e.v)!=null?t:null}getValues(){var a,u;const{startRow:e,endRow:t,startColumn:n,endColumn:s}=this._range,i=[];for(let d=e;d<=t;d++){const c=[];for(let l=n;l<=s;l++)c.push((u=(a=this._worksheet.getCell(d,l))==null?void 0:a.v)!=null?u:null);i.push(c)}return i}getCellDataGrid(){const{startRow:e,endRow:t,startColumn:n,endColumn:s}=this._range,i=[];for(let a=e;a<=t;a++){const u=[];for(let d=n;d<=s;d++)u.push(this._worksheet.getCellRaw(a,d));i.push(u)}return i}getFormulas(){const e=[],{startRow:t,endRow:n,startColumn:s,endColumn:i}=this._range,a=this._worksheet.getSheetId(),u=this._workbook.getUnitId();for(let d=t;d<=n;d++){const c=[];for(let l=s;l<=i;l++){const m=this._formulaDataModel.getFormulaStringByCell(d,l,a,u);c.push(m||"")}e.push(c)}return e}getWrap(){return this._worksheet.getRange(this._range).getWrap()===r.BooleanNumber.TRUE}getWrapStrategy(){return this._worksheet.getRange(this._range).getWrapStrategy()}getHorizontalAlignment(){return Do(this._worksheet.getRange(this._range).getHorizontalAlignment())}getVerticalAlignment(){return xo(this._worksheet.getRange(this._range).getVerticalAlignment())}setBackgroundColor(e){return this._commandService.executeCommand(B.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,style:{type:"bg",value:{rgb:e}}})}setValue(e){const t=qe(e);if(!t)throw new Error("Invalid value");return this._commandService.executeCommand(Ie.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,value:t})}setWrap(e){return this._commandService.executeCommand(nn.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,value:e?r.WrapStrategy.WRAP:r.WrapStrategy.UNSPECIFIED})}setWrapStrategy(e){return this._commandService.executeCommand(nn.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,value:e})}setVerticalAlignment(e){return this._commandService.executeCommand(To.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,value:Oo(e)})}setHorizontalAlignment(e){return this._commandService.executeCommand(Po.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,value:No(e)})}setValues(e){const t=Ao(e,this._range);return this._commandService.executeCommand(Ie.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,value:t})}setFontWeight(e){let t;if(e==="bold")t=r.BooleanNumber.TRUE;else if(e==="normal")t=r.BooleanNumber.FALSE;else if(e===null)t=null;else throw new Error("Invalid fontWeight");const n={type:"bl",value:t},s={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,style:n};return this._commandService.executeCommand(B.id,s),this}setFontStyle(e){let t;if(e==="italic")t=r.BooleanNumber.TRUE;else if(e==="normal")t=r.BooleanNumber.FALSE;else if(e===null)t=null;else throw new Error("Invalid fontStyle");const n={type:"it",value:t},s={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,style:n};return this._commandService.executeCommand(B.id,s),this}setFontLine(e){if(e==="underline")this._setFontUnderline({s:r.BooleanNumber.TRUE});else if(e==="line-through")this._setFontStrikethrough({s:r.BooleanNumber.TRUE});else if(e==="none")this._setFontUnderline({s:r.BooleanNumber.FALSE}),this._setFontStrikethrough({s:r.BooleanNumber.FALSE});else if(e===null)this._setFontUnderline(null),this._setFontStrikethrough(null);else throw new Error("Invalid fontLine");return this}_setFontUnderline(e){const t={type:"ul",value:e},n={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,style:t};this._commandService.executeCommand(B.id,n)}_setFontStrikethrough(e){const t={type:"st",value:e},n={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,style:t};this._commandService.executeCommand(B.id,n)}setFontFamily(e){const t={type:"ff",value:e},n={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,style:t};return this._commandService.executeCommand(B.id,n),this}setFontSize(e){const t={type:"fs",value:e},n={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,style:t};return this._commandService.executeCommand(B.id,n),this}setFontColor(e){const n={type:"cl",value:e===null?null:{rgb:e}},s={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),range:this._range,style:n};return this._commandService.executeCommand(B.id,s),this}async merge(){const e=this._workbook.getUnitId(),t=this._worksheet.getSheetId();return await Ye(this._injector,e,t,[this._range]),this}async mergeAcross(){const e=xe([this._range],r.Dimension.ROWS),t=this._workbook.getUnitId(),n=this._worksheet.getSheetId();return await Ye(this._injector,t,n,e),this}async mergeVertically(){const e=xe([this._range],r.Dimension.COLUMNS),t=this._workbook.getUnitId(),n=this._worksheet.getSheetId();return await Ye(this._injector,t,n,e),this}isPartOfMerge(){const{startRow:e,startColumn:t,endRow:n,endColumn:s}=this._range;return this._worksheet.getMergedCellRange(e,t,n,s).length>0}breakApart(){return this._commandService.executeCommand(bo.id,{ranges:[this._range]}),this}forEach(e){const{startColumn:t,startRow:n,endColumn:s,endRow:i}=this._range;this._worksheet.getMatrixWithMergedCells(n,t,i,s).forValue((a,u,d)=>{e(a,u,d)})}},E.FRange=Lo([Ze(3,r.Inject(r.Injector)),Ze(4,r.ICommandService),Ze(5,r.Inject(mt.FormulaDataModel))],E.FRange);function Vo(o,e){if(o==null)return o;const t=r.Tools.deepClone(o);if(e==null)return t;const n={};return"h"in e&&(n.h=t.h),"ia"in e&&(n.ia=t.ia),"ah"in e&&(n.ah=t.ah),"hd"in e&&(n.hd=t.hd),"s"in e&&(n.s=t.s),"custom"in e&&(n.custom=t.custom),n}function jo(o,e){if(o==null)return o;const t=r.Tools.deepClone(o);if(e==null)return t;const n={};return"w"in e&&(n.w=t.w),"hd"in e&&(n.hd=t.hd),"s"in e&&(n.s=t.s),"custom"in e&&(n.custom=t.custom),n}const Bo=(o,e)=>{const{unitId:t,subUnitId:n,columnData:s}=o,i={},a=e.getColumnManager();for(const u in s){const d=s[u],c=a.getColumn(Number(u));i[u]=jo(c,d)}return{unitId:t,subUnitId:n,columnData:i}},Je={id:"sheet.mutation.set-col-data",type:r.CommandType.MUTATION,handler:(o,e)=>{const{columnData:t}=e,n=o.get(r.IUniverInstanceService),s=b(n,e);if(!s)return!1;const{worksheet:i}=s,a=i.getColumnManager();for(const u in t){const d=t[u];if(d==null){a.removeColumn(Number(u));continue}const c=a.getColumnOrCreate(Number(u));Object.assign(c,d)}return!0}},on={type:r.CommandType.COMMAND,id:"sheet.command.set-col-data",handler:(o,e)=>{const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=b(s,e);if(!i)return!1;const{columnData:a}=e,{unitId:u,subUnitId:d,worksheet:c}=i,l={subUnitId:d,unitId:u,columnData:a},m=Bo(l,c);return t.syncExecuteCommand(Je.id,l)?(n.pushUndoRedo({unitID:u,undoMutations:[{id:Je.id,params:m}],redoMutations:[{id:Je.id,params:l}]}),!0):!1}},$o=(o,e)=>{if(o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId)==null)throw new Error("universheet is null error!");return{unitId:e.unitId,subUnitId:e.subUnitId,ranges:e.ranges}},Qe={id:"sheet.mutation.set-col-hidden",type:r.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(!n)return!1;const s=n.getSheetBySheetId(e.subUnitId).getColumnManager();for(let i=0;i<e.ranges.length;i++){const a=e.ranges[i];for(let u=a.startColumn;u<a.endColumn+1;u++){const d=s.getColumnOrCreate(u);d!=null&&(d.hd=r.BooleanNumber.TRUE)}}return!0}},Ho=(o,e)=>{if(o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId)==null)throw new Error("universheet is null error!");return{unitId:e.unitId,subUnitId:e.subUnitId,ranges:e.ranges}},et={id:"sheet.mutation.set-col-visible",type:r.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(!n)return!1;const s=n.getSheetBySheetId(e.subUnitId).getColumnManager();for(let i=0;i<e.ranges.length;i++){const a=e.ranges[i];for(let u=a.startColumn;u<a.endColumn+1;u++){const d=s.getColumnOrCreate(u);d!=null&&(d.hd=r.BooleanNumber.FALSE)}}return!0}},We={type:r.CommandType.COMMAND,id:"sheet.command.set-col-visible-on-cols",handler:async(o,e)=>{var R,S;const{unitId:t,subUnitId:n,ranges:s}=e,i=o.get(D),a=o.get(r.ICommandService),u=o.get(r.IUniverInstanceService),d=b(u,{unitId:t,subUnitId:n});if(!d)return!1;const{worksheet:c}=d,l={unitId:t,subUnitId:n,ranges:s},m={unitId:t,subUnitId:n,reveal:!0,selections:s.map(w=>({range:w,primary:q(w,c),style:null}))},g=Ho(o,l),h={unitId:t,subUnitId:n,selections:sn(s).map(w=>({range:w,primary:q(w,c),style:null}))},v=r.sequenceExecute([{id:et.id,params:l},{id:H.id,params:m}],a),C=i.onCommandExecute({id:We.id,params:e}),f=r.sequenceExecute([...C.redos],a);return v.result&&f.result&&o.get(r.IUndoRedoService).pushUndoRedo({unitID:t,undoMutations:[{id:Qe.id,params:g},{id:H.id,params:h},...(R=C.undos)!=null?R:[]],redoMutations:[...(S=C.preRedos)!=null?S:[],{id:et.id,params:l},{id:H.id,params:m},...C.redos]}),!0}};r.CommandType.COMMAND;const tt={type:r.CommandType.COMMAND,id:"sheet.command.set-col-hidden",handler:async(o,e)=>{var S,w,I,M;const t=o.get(P),n=o.get(D),s=o.get(r.IUniverInstanceService),i=o.get(r.ICommandService);let a=(S=e==null?void 0:e.ranges)!=null&&S.length?e.ranges:(w=t.getCurrentSelections())==null?void 0:w.map(p=>p.range).filter(p=>p.rangeType===r.RANGE_TYPE.COLUMN);if(!(a!=null&&a.length))return!1;const u=b(s,e);if(!u)return!1;const{worksheet:d,unitId:c,subUnitId:l}=u;a=Go(u.worksheet,a);const m={unitId:c,subUnitId:l,ranges:a},g={unitId:c,subUnitId:l,selections:sn(a).map(p=>({range:p,primary:q(p,d),style:null}))},h=$o(o,m),v={unitId:c,subUnitId:l,reveal:!0,selections:a.map(p=>({range:p,primary:q(p,d),style:null}))},C=r.sequenceExecute([{id:Qe.id,params:m},{id:H.id,params:g}],i),f=n.onCommandExecute({id:tt.id,params:m}),R=r.sequenceExecute([...f.redos],i);return C.result&&R.result?(o.get(r.IUndoRedoService).pushUndoRedo({unitID:c,undoMutations:[{id:et.id,params:h},{id:H.id,params:v},...(I=f.undos)!=null?I:[]],redoMutations:[...(M=f.preRedos)!=null?M:[],{id:Qe.id,params:m},{id:H.id,params:g},...f.redos]}),!0):!1}};function Go(o,e){const t=o.getRowCount()-1,n=o.getHiddenCols(),s=[];return e.forEach(i=>{const a=n.filter(u=>u.startColumn>=i.startColumn&&u.endColumn<=i.endColumn);if(a.length){let u=i.startColumn;a.forEach(d=>{d.startColumn>u&&(s.push({startColumn:u,endColumn:d.startColumn-1,startRow:0,endRow:t}),u=d.endColumn+1)}),u<=i.endColumn&&s.push({startColumn:u,endColumn:i.endColumn,startRow:0,endRow:t})}else s.push(i)}),s}function sn(o){return zo(o).map(t=>{const n=t.startColumn===0?t.endColumn+1:t.startColumn-1;return{...t,startColumn:n,endColumn:n}})}function zo(o){const e=[];let t;return o.sort((n,s)=>n.startColumn-s.startColumn).forEach(n=>{if(!t){t=n;return}t.endColumn===n.startColumn-1?t.endColumn=n.endColumn:(e.push(t),t=n)}),e.push(t),e}const rn=(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(s==null)throw new Error("worksheet is null error!");const a=s.getConfig().freeze;return{unitId:e.unitId,subUnitId:e.subUnitId,...a}},ve={id:"sheet.mutation.set-frozen",type:r.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(!s)return!1;const i=s.getConfig(),{startRow:a,startColumn:u,ySplit:d,xSplit:c}=e;return i.freeze={startRow:a,startColumn:u,ySplit:d,xSplit:c},!0}},Yo={type:r.CommandType.COMMAND,id:"sheet.command.set-frozen",handler:(o,e)=>{const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=b(s,{unitId:e.unitId,subUnitId:e.subUnitId});if(!i)return!1;const{unitId:a,subUnitId:u,worksheet:d}=i,{startColumn:c,startRow:l,xSplit:m,ySplit:g}=e;if(l>=d.getRowCount()||c>=d.getColumnCount()||m>=d.getColumnCount()||g>=d.getRowCount())return!1;const h={unitId:a,subUnitId:u,...e},v=rn(o,h);return t.syncExecuteCommand(ve.id,h)?(n.pushUndoRedo({unitID:a,undoMutations:[{id:ve.id,params:v}],redoMutations:[{id:ve.id,params:h}]}),!0):!1}},qo={type:r.CommandType.COMMAND,id:"sheet.command.cancel-frozen",handler:(o,e)=>{const t=o.get(r.ICommandService),n=o.get(r.IUniverInstanceService),s=o.get(r.IUndoRedoService),i=b(n,{unitId:e==null?void 0:e.unitId,subUnitId:e==null?void 0:e.subUnitId});if(!i)return!1;const{unitId:a,subUnitId:u}=i,d={unitId:a,subUnitId:u,startRow:-1,startColumn:-1,xSplit:0,ySplit:0},c=rn(o,d);return t.syncExecuteCommand(ve.id,d)&&s.pushUndoRedo({unitID:a,undoMutations:[{id:ve.id,params:c}],redoMutations:[{id:ve.id,params:d}]}),!0}},Ko=(o,e)=>{const{unitId:t,subUnitId:n,rowData:s}=o,i={},a=e.getRowManager();for(const u in s){const d=s[u],c=a.getRow(Number(u));i[u]=Vo(c,d)}return{unitId:t,subUnitId:n,rowData:i}},nt={id:"sheet.mutation.set-row-data",type:r.CommandType.MUTATION,handler:(o,e)=>{const{rowData:t}=e,n=o.get(r.IUniverInstanceService),s=b(n,e);if(!s)return!1;const{worksheet:i}=s,a=i.getRowManager();for(const u in t){const d=t[u];if(d==null){a.removeRow(Number(u));continue}const c=a.getRowOrCreate(Number(u));Object.assign(c,d)}return!0}},an={type:r.CommandType.COMMAND,id:"sheet.command.set-row-data",handler:(o,e)=>{const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=b(s,e);if(!i)return!1;const{rowData:a}=e,{unitId:u,subUnitId:d,worksheet:c}=i,l={subUnitId:d,unitId:u,rowData:a},m=Ko(l,c);return t.syncExecuteCommand(nt.id,l)?(n.pushUndoRedo({unitID:u,undoMutations:[{id:nt.id,params:m}],redoMutations:[{id:nt.id,params:l}]}),!0):!1}},Xo=(o,e)=>{if(o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId)==null)throw new Error("universheet is null error!");return{unitId:e.unitId,subUnitId:e.subUnitId,ranges:e.ranges}},ot={id:"sheet.mutation.set-row-visible",type:r.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId).getRowManager();for(let i=0;i<e.ranges.length;i++){const a=e.ranges[i];for(let u=a.startRow;u<a.endRow+1;u++){const d=s.getRowOrCreate(u);d!=null&&(d.hd=0)}}return!0}},Zo=(o,e)=>{if(o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId)==null)throw new Error("universheet is null error!");return{unitId:e.unitId,subUnitId:e.subUnitId,ranges:e.ranges}},st={id:"sheet.mutation.set-row-hidden",type:r.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(r.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId).getRowManager();for(let i=0;i<e.ranges.length;i++){const a=e.ranges[i];for(let u=a.startRow;u<a.endRow+1;u++){const d=s.getRowOrCreate(u);d!=null&&(d.hd=1)}}return!0}},Fe={type:r.CommandType.COMMAND,id:"sheet.command.set-specific-rows-visible",handler:async(o,e)=>{var R,S,w;const{unitId:t,subUnitId:n,ranges:s}=e,i=o.get(r.ICommandService),a=o.get(r.IUndoRedoService),u=o.get(D),d=b(o.get(r.IUniverInstanceService),{unitId:t,subUnitId:n});if(!d)return!1;const{worksheet:c}=d,l={unitId:t,subUnitId:n,ranges:s},m={unitId:t,subUnitId:n,reveal:!0,selections:s.map(I=>({range:I,primary:q(I,c),style:null}))},g=Xo(o,l),h={unitId:t,subUnitId:n,selections:un(s).map(I=>({range:I,primary:q(I,c),style:null}))},v=r.sequenceExecute([{id:ot.id,params:l},{id:H.id,params:m}],i),C=u.onCommandExecute({id:Fe.id,params:e}),f=r.sequenceExecute([...C.redos],i);return v.result&&f.result&&a.pushUndoRedo({unitID:t,undoMutations:[...(R=C.preUndos)!=null?R:[],{id:st.id,params:g},{id:H.id,params:h},...(S=C.undos)!=null?S:[]],redoMutations:[...(w=C.preRedos)!=null?w:[],{id:ot.id,params:l},{id:H.id,params:m},...C.redos]}),!0}};r.CommandType.COMMAND;const rt={type:r.CommandType.COMMAND,id:"sheet.command.set-rows-hidden",handler:async(o,e)=>{var S,w,I,M,p,U;const t=o.get(P),n=o.get(r.ICommandService),s=o.get(r.IUndoRedoService),i=o.get(r.IUniverInstanceService),a=o.get(D);let u=(S=e==null?void 0:e.ranges)!=null&&S.length?e.ranges:(w=t.getCurrentSelections())==null?void 0:w.map(y=>y.range).filter(y=>y.rangeType===r.RANGE_TYPE.ROW);if(!(u!=null&&u.length))return!1;const d=b(i,e);if(!d)return!1;u=Jo(d.worksheet,u);const{unitId:c,subUnitId:l,worksheet:m}=d,g={unitId:c,subUnitId:l,ranges:u},h={unitId:c,subUnitId:l,selections:un(u).map(y=>({range:y,primary:q(y,m),style:null}))},v=Zo(o,g),C={unitId:c,subUnitId:l,reveal:!0,selections:u.map(y=>({range:y,primary:q(y,m),style:null}))},f=a.onCommandExecute({id:rt.id,params:g});return r.sequenceExecute([...(I=f.preRedos)!=null?I:[],{id:st.id,params:g},{id:H.id,params:h},...f.redos],n).result&&s.pushUndoRedo({unitID:c,undoMutations:[...(M=f.preUndos)!=null?M:[],{id:ot.id,params:v},{id:H.id,params:C},...(p=f.undos)!=null?p:[]],redoMutations:[...(U=f.preRedos)!=null?U:[],{id:st.id,params:g},{id:H.id,params:h},...f.redos]}),!0}};function Jo(o,e){const t=o.getMaxColumns()-1,n=o.getHiddenRows(),s=[];return e.forEach(i=>{const a=n.filter(u=>u.startRow>=i.startRow&&u.endRow<=i.endRow);if(a.length){let u=i.startRow;a.forEach(d=>{d.startRow>u&&(s.push({startRow:u,endRow:d.startRow-1,startColumn:0,endColumn:t}),u=d.endRow+1)}),u<=i.endRow&&s.push({startRow:u,endRow:i.endRow,startColumn:0,endColumn:t})}else s.push(i)}),s}function un(o){return Qo(o).map(t=>{const n=t.startRow===0?t.endRow+1:t.startRow-1;return{...t,startRow:n,endRow:n}})}function Qo(o){const e=[];let t;return o.sort((n,s)=>n.startRow-s.startRow).forEach(n=>{if(!t){t=n;return}n.startRow===t.endRow+1?t.endRow=n.endRow:(e.push(t),t=n)}),e.push(t),e}const dn=(o,e)=>{const{unitId:t,subUnitId:n,ranges:s}=o,i={},a=e.getColumnManager();for(let u=0;u<s.length;u++){const d=s[u];for(let c=d.startColumn;c<d.endColumn+1;c++){const l=a.getColumnOrCreate(c);i[c]=l.w}}return{unitId:t,subUnitId:n,ranges:s,colWidth:i}},Ce={id:"sheet.mutation.set-worksheet-col-width",type:r.CommandType.MUTATION,handler:(o,e)=>{var d;const t=o.get(r.IUniverInstanceService),n=b(t,e);if(!n)return!1;const{worksheet:s}=n,i=s.getConfig().defaultColumnWidth,a=s.getColumnManager(),u=e.ranges;for(let c=0;c<u.length;c++){const l=u[c];for(let m=l.startColumn;m<l.endColumn+1;m++){if(!s.getColVisible(m))continue;const h=a.getColumnOrCreate(m);typeof e.colWidth=="number"?h.w=e.colWidth:h.w=(d=e.colWidth[m])!=null?d:i}}return!0}},es={type:r.CommandType.COMMAND,id:"sheet.command.delta-column-width",handler:async(o,e)=>{const n=o.get(P).getCurrentSelections();if(!(n!=null&&n.length))return!1;const s=o.get(r.ICommandService),i=o.get(r.IUndoRedoService),a=b(o.get(r.IUniverInstanceService));if(!a)return!1;const{worksheet:u,unitId:d,subUnitId:c}=a,{anchorCol:l,deltaX:m}=e,h=u.getColumnWidth(l)+m,v=n.length===1&&n[0].range.rangeType===r.RANGE_TYPE.ALL,C=n.filter(U=>U.range.rangeType===r.RANGE_TYPE.COLUMN),f=v?r.RANGE_TYPE.ALL:C.some(({range:U})=>{const{startColumn:y,endColumn:_}=U;return y<=l&&l<=_})?r.RANGE_TYPE.COLUMN:r.RANGE_TYPE.NORMAL;let R;if(f===r.RANGE_TYPE.ALL){const U=u.getRowCount(),y=new Array(u.getColumnCount()).fill(void 0).map((_,k)=>({startRow:0,endRow:U-1,startColumn:k,endColumn:k}));R={subUnitId:c,unitId:d,colWidth:h,ranges:y}}else f===r.RANGE_TYPE.COLUMN?R={subUnitId:c,unitId:d,ranges:C.map(U=>r.Rectangle.clone(U.range)),colWidth:h}:R={subUnitId:c,unitId:d,colWidth:h,ranges:[{startRow:0,endRow:u.getMaxRows()-1,startColumn:l,endColumn:l}]};const{undos:S,redos:w}=o.get(D).onCommandExecute({id:es.id,params:R}),I=dn(R,u),M=s.syncExecuteCommand(Ce.id,R),p=r.sequenceExecute([...w],s);return M&&p.result&&i.pushUndoRedo({unitID:d,undoMutations:[{id:Ce.id,params:I},...S],redoMutations:[{id:Ce.id,params:R},...w]}),!0}},it={type:r.CommandType.COMMAND,id:"sheet.command.set-worksheet-col-width",handler:async(o,e)=>{var S,w,I,M;const t=o.get(P),n=o.get(r.ICommandService),s=o.get(r.IUndoRedoService),i=o.get(D),a=(S=e==null?void 0:e.ranges)!=null&&S.length?e.ranges:(w=t.getCurrentSelections())==null?void 0:w.map(p=>p.range);if(!(a!=null&&a.length))return!1;const u=b(o.get(r.IUniverInstanceService),e);if(!u)return!1;const{subUnitId:d,unitId:c,worksheet:l}=u,m={subUnitId:d,unitId:c,ranges:a,colWidth:e.value},g=dn(m,l),h=n.syncExecuteCommand(Ce.id,m),{undos:v,redos:C}=o.get(D).onCommandExecute({id:it.id,params:m}),f=i.onCommandExecute({id:it.id,params:m}),R=r.sequenceExecute([...C,...f.redos],n);return h&&R.result?(s.pushUndoRedo({unitID:c,undoMutations:[...(I=f.preUndos)!=null?I:[],{id:Ce.id,params:g},...v],redoMutations:[...(M=f.preRedos)!=null?M:[],{id:Ce.id,params:m},...C]}),!0):!1}},ts={type:r.CommandType.COMMAND,id:"sheet.command.set-col-is-auto-width",handler:async(o,e)=>{const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(P),i=o.get(r.IUniverInstanceService),a=b(i,e);if(!a)return!1;const{unitId:u,subUnitId:d}=a;let c=[];if(e!=null&&e.ranges)c=[...e.ranges];else{const v=s.getCurrentSelections();for(let C=0;C<v.length;C++)c.push(v[C].range)}if(!(c!=null&&c.length))return!1;const l={unitId:u,subUnitId:d,ranges:c},{undos:m,redos:g}=o.get(D).onCommandExecute({id:ts.id,params:l});return r.sequenceExecute([...g],t).result?(n.pushUndoRedo({unitID:u,undoMutations:[...m],redoMutations:[...g]}),!0):!1}},ns=2e3,cn=(o,e)=>{const{unitId:t,subUnitId:n,ranges:s}=o,i={},a=e.getRowManager();for(const{startRow:u,endRow:d}of s)for(let c=u;c<d+1;c++){const l=a.getRowOrCreate(c);i[c]=l.h}return{unitId:t,subUnitId:n,ranges:s,rowHeight:i}},at=(o,e)=>{const{unitId:t,subUnitId:n,ranges:s}=o,i={},a=e.getRowManager();for(const{startRow:u,endRow:d}of s)for(let c=u;c<=d;c++){const l=a.getRowOrCreate(c);i[c]=l.ia}return{unitId:t,subUnitId:n,ranges:s,autoHeightInfo:i}},fe={id:"sheet.mutation.set-worksheet-row-height",type:r.CommandType.MUTATION,handler:(o,e)=>{var c;const{ranges:t,rowHeight:n}=e,s=o.get(r.IUniverInstanceService),i=b(s,e);if(!i)return!1;const{worksheet:a}=i,u=a.getRowManager(),d=a.getConfig().defaultRowHeight;for(const{startRow:l,endRow:m}of t)for(let g=l;g<=m;g++){const h=u.getRowOrCreate(g);typeof n=="number"?h.h=n:h.h=(c=n[g])!=null?c:d,h.h=Math.min(ns,h.h)}return!0}},ne={id:"sheet.mutation.set-worksheet-row-is-auto-height",type:r.CommandType.MUTATION,handler:(o,e)=>{var u;const{ranges:t,autoHeightInfo:n}=e,s=o.get(r.IUniverInstanceService),i=b(s,e);if(!i)return!1;const a=i.worksheet.getRowManager();for(const{startRow:d,endRow:c}of t)for(let l=d;l<=c;l++){const m=a.getRowOrCreate(l);typeof n=="number"?m.ia=n:m.ia=(u=n[l])!=null?u:void 0}return!0}};r.CommandType.MUTATION;const os={type:r.CommandType.COMMAND,id:"sheet.command.delta-row-height",handler:async(o,e)=>{var _,k;const n=o.get(P).getCurrentSelections(),s=o.get(D);if(!(n!=null&&n.length))return!1;const i=b(o.get(r.IUniverInstanceService));if(!i)return!1;const{worksheet:a,subUnitId:u,unitId:d}=i,{anchorRow:c,deltaY:l}=e,g=a.getRowHeight(c)+l,h=n.length===1&&n[0].range.rangeType===r.RANGE_TYPE.ALL,v=n.filter(N=>N.range.rangeType===r.RANGE_TYPE.ROW),C=h?r.RANGE_TYPE.ALL:v.some(({range:N})=>{const{startRow:F,endRow:$}=N;return F<=c&&c<=$})?r.RANGE_TYPE.ROW:r.RANGE_TYPE.NORMAL;let f;if(C===r.RANGE_TYPE.ALL){const N=a.getRowCount(),F=new Array(a.getColumnCount()).fill(void 0).map(($,O)=>({startRow:O,endRow:O,startColumn:0,endColumn:N-1}));f={subUnitId:u,unitId:d,rowHeight:g,ranges:F}}else C===r.RANGE_TYPE.ROW?f={subUnitId:u,unitId:d,ranges:v.map(N=>r.Rectangle.clone(N.range)),rowHeight:g}:f={subUnitId:u,unitId:d,rowHeight:g,ranges:[{startRow:c,endRow:c,startColumn:0,endColumn:a.getMaxColumns()-1}]};const R=cn(f,a),S={unitId:d,subUnitId:u,ranges:f.ranges,autoHeightInfo:r.BooleanNumber.FALSE},w=at(S,a),I=o.get(r.ICommandService),M=o.get(r.IUndoRedoService),p=s.onCommandExecute({id:os.id,params:f}),U=r.sequenceExecute([{id:fe.id,params:f},{id:ne.id,params:S}],I),y=r.sequenceExecute([...p.redos],I);return U.result&&y.result?(M.pushUndoRedo({unitID:d,undoMutations:[...(_=p.preUndos)!=null?_:[],{id:fe.id,params:R},{id:ne.id,params:w},...p.undos],redoMutations:[...(k=p.preRedos)!=null?k:[],{id:fe.id,params:f},{id:ne.id,params:S},...p.redos]}),!0):!1}},ut={type:r.CommandType.COMMAND,id:"sheet.command.set-row-height",handler:(o,e)=>{var w,I,M,p;const t=o.get(P),n=o.get(r.ICommandService),s=o.get(r.IUndoRedoService),i=o.get(r.IUniverInstanceService),a=o.get(D),u=(w=e==null?void 0:e.ranges)!=null&&w.length?e.ranges:(I=t.getCurrentSelections())==null?void 0:I.map(U=>U.range);if(!(u!=null&&u.length))return!1;const d=b(i,e);if(!d)return!1;const{unitId:c,subUnitId:l,worksheet:m}=d,g={subUnitId:l,unitId:c,ranges:u,rowHeight:e.value},h=cn(g,m),v={unitId:c,subUnitId:l,ranges:g.ranges,autoHeightInfo:r.BooleanNumber.FALSE},C=at(v,m),f=r.sequenceExecute([{id:fe.id,params:g},{id:ne.id,params:v}],n),R=a.onCommandExecute({id:ut.id,params:g}),S=r.sequenceExecute([...R.redos],n);return f.result&&S.result?(s.pushUndoRedo({unitID:c,undoMutations:[...(M=R.preRedos)!=null?M:[],{id:fe.id,params:h},{id:ne.id,params:C},...R.undos],redoMutations:[...(p=R.preRedos)!=null?p:[],{id:fe.id,params:g},{id:ne.id,params:v},...R.redos]}),!0):!1}},ln={type:r.CommandType.COMMAND,id:"sheet.command.set-row-is-auto-height",handler:async(o,e)=>{var R,S;const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(P),i=o.get(r.IUniverInstanceService),a=b(i,e);if(!a)return!1;const{unitId:u,subUnitId:d,worksheet:c}=a,l=(R=e==null?void 0:e.ranges)!=null&&R.length?e.ranges:(S=s.getCurrentSelections())==null?void 0:S.map(w=>w.range);if(!(l!=null&&l.length))return!1;const m={unitId:u,subUnitId:d,ranges:l,autoHeightInfo:r.BooleanNumber.TRUE},g=at(m,c),h=t.syncExecuteCommand(ne.id,m),{undos:v,redos:C}=o.get(D).onCommandExecute({id:ln.id,params:m}),f=r.sequenceExecute([...C],t);return h&&f.result?(n.pushUndoRedo({unitID:u,undoMutations:[{id:ne.id,params:g},...v],redoMutations:[{id:ne.id,params:m},...C]}),!0):!1}},dt={id:"sheet.mutation.toggle-gridlines",type:r.CommandType.MUTATION,handler:(o,e)=>{const t=b(o.get(r.IUniverInstanceService),e);if(!t)return!1;const{worksheet:n}=t,s=n.getConfig();return s.showGridlines=e.showGridlines,!0}},ss={type:r.CommandType.COMMAND,id:"sheet.command.toggle-gridlines",handler:async(o,e)=>{const t=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),s=o.get(r.IUniverInstanceService),i=b(s);if(!i)return!1;const{worksheet:a}=i,u=a.getConfig().showGridlines;if(u===(e==null?void 0:e.showGridlines))return!1;const{unitId:d,subUnitId:c}=i,l={showGridlines:u===r.BooleanNumber.TRUE?r.BooleanNumber.FALSE:r.BooleanNumber.TRUE,unitId:d,subUnitId:c},m={showGridlines:u,unitId:d,subUnitId:c};return t.syncExecuteCommand(dt.id,l)?(n.pushUndoRedo({unitID:d,undoMutations:[{id:dt.id,params:m}],redoMutations:[{id:dt.id,params:l}]}),!0):!1}},rs={id:"sheet.mutation.set-worksheet-default-style",type:r.CommandType.MUTATION,handler:(o,e)=>{const{defaultStyle:t}=e,n=o.get(r.IUniverInstanceService),s=b(n);if(!s)return!1;const{worksheet:i}=s;return i?(i.setDefaultCellStyle(t),!0):!1}};var is=Object.defineProperty,as=Object.getOwnPropertyDescriptor,us=(o,e,t,n)=>{for(var s=n>1?void 0:n?as(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&is(e,t,s),s},ds=(o,e)=>(t,n)=>e(t,n,o);E.FSelection=class{constructor(e,t,n,s){this._workbook=e,this._worksheet=t,this._selections=n,this._injector=s}getActiveRange(){const e=this._selections.find(t=>!!t.primary);return e?this._injector.createInstance(E.FRange,this._workbook,this._worksheet,e.range):null}},E.FSelection=us([ds(3,r.Inject(r.Injector))],E.FSelection);var cs=Object.defineProperty,ls=Object.getOwnPropertyDescriptor,ms=(o,e,t,n)=>{for(var s=n>1?void 0:n?ls(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&cs(e,t,s),s},ct=(o,e)=>(t,n)=>e(t,n,o);E.FWorksheet=class extends r.FBase{constructor(t,n,s,i,a,u){super();T(this,"setActiveSelection",this.setActiveRange);this._fWorkbook=t,this._workbook=n,this._worksheet=s,this._injector=i,this._selectionManagerService=a,this._commandService=u}getInject(){return this._injector}getWorkbook(){return this._workbook}getSheetId(){return this._worksheet.getSheetId()}getSheetName(){return this._worksheet.getName()}getSelection(){const t=this._selectionManagerService.getCurrentSelections();return t?this._injector.createInstance(E.FSelection,this._workbook,this._worksheet,t):null}getDefaultStyle(){return this._worksheet.getDefaultCellStyle()}getRowDefaultStyle(t,n=!1){return this._worksheet.getRowStyle(t,n)}getColumnDefaultStyle(t,n=!1){return this._worksheet.getColumnStyle(t,n)}async setDefaultStyle(t){const n=this._workbook.getUnitId(),s=this._worksheet.getSheetId();return await this._commandService.executeCommand(rs.id,{unitId:n,subUnitId:s,defaultStyle:t}),this._worksheet.setDefaultCellStyle(t),this}async setColumnDefaultStyle(t,n){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a={unitId:s,subUnitId:i,columnData:{[t]:{s:n}}};return await this._commandService.executeCommand(on.id,a),this}async setRowDefaultStyle(t,n){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a={unitId:s,subUnitId:i,rowData:{[t]:{s:n}}};return await this._commandService.executeCommand(an.id,a),this}getRange(t,n,s,i){let a,u;if(typeof t=="string"){const{range:d,sheetName:c}=mt.deserializeRangeWithSheet(t),l=c?this._workbook.getSheetBySheetName(c):this._worksheet;if(!l)throw new Error("Range not found");u=l,a={...d,unitId:this._workbook.getUnitId(),sheetId:u.getSheetId(),rangeType:r.RANGE_TYPE.NORMAL,startRow:d.rangeType===r.RANGE_TYPE.COLUMN?0:d.startRow,endRow:d.rangeType===r.RANGE_TYPE.COLUMN?u.getMaxRows()-1:d.endRow,startColumn:d.rangeType===r.RANGE_TYPE.ROW?0:d.startColumn,endColumn:d.rangeType===r.RANGE_TYPE.ROW?u.getMaxColumns()-1:d.endColumn}}else if(typeof t=="number"&&n!==void 0)u=this._worksheet,a={startRow:t,endRow:t+(s!=null?s:1)-1,startColumn:n,endColumn:n+(i!=null?i:1)-1,unitId:this._workbook.getUnitId(),sheetId:this._worksheet.getSheetId()};else throw new Error("Invalid range specification");return this._injector.createInstance(E.FRange,this._workbook,u,a)}getMaxColumns(){return this._worksheet.getMaxColumns()}getMaxRows(){return this._worksheet.getMaxRows()}async insertRowAfter(t){return this.insertRowsAfter(t,1)}async insertRowBefore(t){return this.insertRowsBefore(t,1)}async insertRows(t,n=1){return this.insertRowsBefore(t,n)}async insertRowsAfter(t,n){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a=r.Direction.DOWN,u=t+1,d=t+n,c=0,l=this._worksheet.getColumnCount()-1,m=oe(this._worksheet,u,d,c,l,!0,t);return await this._commandService.executeCommand(ae.id,{unitId:s,subUnitId:i,direction:a,range:{startRow:u,endRow:d,startColumn:c,endColumn:l},cellValue:m}),this}async insertRowsBefore(t,n){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a=r.Direction.UP,u=t,d=t+n-1,c=0,l=this._worksheet.getColumnCount()-1,m=oe(this._worksheet,u,d,c,l,!0,t-1);return await this._commandService.executeCommand(ae.id,{unitId:s,subUnitId:i,direction:a,range:{startRow:u,endRow:d,startColumn:c,endColumn:l},cellValue:m}),this}async deleteRow(t){return this.deleteRows(t,1)}async deleteRows(t,n){const s={startRow:t,endRow:t+n-1,startColumn:0,endColumn:this._worksheet.getColumnCount()-1};return await this._commandService.executeCommand(be.id,{range:s}),this}async moveRows(t,n){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a=Ke(t.getRange(),this._worksheet),u=a,d={startRow:n,endRow:n,startColumn:a.startColumn,endColumn:a.endColumn};return await this._commandService.executeCommand(Bt.id,{unitId:s,subUnitId:i,range:a,fromRange:u,toRange:d}),this}async hideRow(t){const n=this._workbook.getUnitId(),s=this._worksheet.getSheetId(),i=Ke(t.getRange(),this._worksheet);return await this._commandService.executeCommand(rt.id,{unitId:n,subUnitId:s,ranges:[i]}),this}async hideRows(t,n=1){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a={startRow:t,endRow:t+n-1,startColumn:0,endColumn:this._worksheet.getColumnCount()-1,rangeType:r.RANGE_TYPE.ROW};return await this._commandService.executeCommand(rt.id,{unitId:s,subUnitId:i,ranges:[a]}),this}async unhideRow(t){const n=this._workbook.getUnitId(),s=this._worksheet.getSheetId(),i=Ke(t.getRange(),this._worksheet);return await this._commandService.executeCommand(Fe.id,{unitId:n,subUnitId:s,ranges:[i]}),this}async showRows(t,n=1){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a={startRow:t,endRow:t+n-1,startColumn:0,endColumn:this._worksheet.getColumnCount()-1,rangeType:r.RANGE_TYPE.ROW};return await this._commandService.executeCommand(Fe.id,{unitId:s,subUnitId:i,ranges:[a]}),this}async setRowHeight(t,n){return this.setRowHeights(t,1,n)}async setRowHeights(t,n,s){var l;const i=this._workbook.getUnitId(),a=this._worksheet.getSheetId(),u=this._worksheet.getRowManager(),d=[],c=[];for(let m=t;m<t+n;m++){const g=((l=u.getRow(m))==null?void 0:l.ah)||this._worksheet.getConfig().defaultRowHeight,h={startRow:m,endRow:m,startColumn:0,endColumn:this._worksheet.getColumnCount()-1};s<=g?d.push(h):c.push(h)}return c.length>0&&await this._commandService.executeCommand(ut.id,{unitId:i,subUnitId:a,ranges:c,value:s}),d.length>0&&await this._commandService.executeCommand(ln.id,{unitId:i,subUnitId:a,ranges:d}),this}async setRowHeightsForced(t,n,s){const i=this._workbook.getUnitId(),a=this._worksheet.getSheetId(),u=[{startRow:t,endRow:t+n-1,startColumn:0,endColumn:this._worksheet.getColumnCount()-1}];return await this._commandService.executeCommand(ut.id,{unitId:i,subUnitId:a,ranges:u,value:s}),this}async setRowCustom(t){const n=this._workbook.getUnitId(),s=this._worksheet.getSheetId(),i={};for(const[u,d]of Object.entries(t))i[Number(u)]={custom:d};const a={unitId:n,subUnitId:s,rowData:i};return await this._commandService.executeCommand(an.id,a),this}async insertColumnAfter(t){return this.insertColumnsAfter(t,1)}async insertColumnBefore(t){return this.insertColumnsBefore(t,1)}async insertColumns(t,n=1){return this.insertColumnsBefore(t,n)}async insertColumnsAfter(t,n){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a=r.Direction.RIGHT,u=0,d=this._worksheet.getRowCount()-1,c=t+1,l=t+n,m=oe(this._worksheet,u,d,c,l,!1,t);return await this._commandService.executeCommand(ue.id,{unitId:s,subUnitId:i,direction:a,range:{startRow:u,endRow:d,startColumn:c,endColumn:l},cellValue:m}),this}async insertColumnsBefore(t,n){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a=r.Direction.LEFT,u=0,d=this._worksheet.getRowCount()-1,c=t,l=t+n-1,m=oe(this._worksheet,u,d,c,l,!1,t-1);return await this._commandService.executeCommand(ue.id,{unitId:s,subUnitId:i,direction:a,range:{startRow:u,endRow:d,startColumn:c,endColumn:l},cellValue:m}),this}async deleteColumn(t){return this.deleteColumns(t,1)}async deleteColumns(t,n){const s={startRow:0,endRow:this._worksheet.getRowCount()-1,startColumn:t,endColumn:t+n-1};return await this._commandService.executeCommand(Ee.id,{range:s}),this}async moveColumns(t,n){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a=Xe(t.getRange(),this._worksheet),u=a,d={startRow:0,endRow:this._worksheet.getRowCount()-1,startColumn:n,endColumn:n};return await this._commandService.executeCommand(Ht.id,{unitId:s,subUnitId:i,range:a,fromRange:u,toRange:d}),this}async hideColumn(t){const n=this._workbook.getUnitId(),s=this._worksheet.getSheetId(),i=Xe(t.getRange(),this._worksheet);return await this._commandService.executeCommand(tt.id,{unitId:n,subUnitId:s,ranges:[i]}),this}async hideColumns(t,n=1){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a={startRow:0,endRow:this._worksheet.getRowCount()-1,startColumn:t,endColumn:t+n-1,rangeType:r.RANGE_TYPE.COLUMN};return await this._commandService.executeCommand(tt.id,{unitId:s,subUnitId:i,ranges:[a]}),this}async unhideColumn(t){const n=this._workbook.getUnitId(),s=this._worksheet.getSheetId(),i=Xe(t.getRange(),this._worksheet);return await this._commandService.executeCommand(We.id,{unitId:n,subUnitId:s,ranges:[i]}),this}async showColumns(t,n=1){const s=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a={startRow:0,endRow:this._worksheet.getRowCount()-1,startColumn:t,endColumn:t+n-1,rangeType:r.RANGE_TYPE.COLUMN};return await this._commandService.executeCommand(We.id,{unitId:s,subUnitId:i,ranges:[a]}),this}async setColumnWidth(t,n){return this.setColumnWidths(t,1,n)}async setColumnWidths(t,n,s){const i=this._workbook.getUnitId(),a=this._worksheet.getSheetId(),u=[{startColumn:t,endColumn:t+n-1,startRow:0,endRow:this._worksheet.getRowCount()-1}];return await this._commandService.executeCommand(it.id,{unitId:i,subUnitId:a,ranges:u,value:s}),this}async setColumnCustom(t){const n=this._workbook.getUnitId(),s=this._worksheet.getSheetId(),i={};for(const[u,d]of Object.entries(t))i[Number(u)]={custom:d};const a={unitId:n,subUnitId:s,columnData:i};return await this._commandService.executeCommand(on.id,a),this}getMergedRanges(){return this._worksheet.getSnapshot().mergeData.map(n=>this._injector.createInstance(E.FRange,this._workbook,this._worksheet,n))}getCellMergeData(t,n){const i=this._worksheet.getMergedCell(t,n);if(i)return this._injector.createInstance(E.FRange,this._workbook,this._worksheet,i)}getActiveRange(){return this._fWorkbook.getActiveRange()}setActiveRange(t){const{unitId:n,sheetId:s}=t.getRange();if(n!==this._workbook.getUnitId()||s!==this._worksheet.getSheetId())throw new Error("Specified range must be part of the sheet.");this._fWorkbook.setActiveRange(t)}setFreeze(t){return this._commandService.syncExecuteCommand(Yo.id,{...t,unitId:this._workbook.getUnitId(),subUnitId:this.getSheetId()})}cancelFreeze(){return this._commandService.syncExecuteCommand(qo.id,{unitId:this._workbook.getUnitId(),subUnitId:this.getSheetId()})}getFreeze(){return this._worksheet.getFreeze()}setFrozenColumns(t){const n=this.getFreeze();this.setFreeze({...n,startColumn:t>0?t:-1,xSplit:t})}setFrozenRows(t){const n=this.getFreeze();this.setFreeze({...n,startRow:t>0?t:-1,ySplit:t})}getFrozenColumns(){const t=this.getFreeze();return t.startColumn===-1?0:t.startColumn}getFrozenRows(){const t=this.getFreeze();return t.startRow===-1?0:t.startRow}hasHiddenGridLines(){return this._worksheet.getConfig().showGridlines===r.BooleanNumber.FALSE}setHiddenGridlines(t){return this._commandService.executeCommand(ss.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),showGridlines:t?r.BooleanNumber.FALSE:r.BooleanNumber.TRUE})}onCellDataChange(t){return this._injector.get(r.ICommandService).onCommandExecuted(s=>{if(s.id===j.id){const i=s.params;i.unitId===this._workbook.getUnitId()&&i.subUnitId===this._worksheet.getSheetId()&&i.cellValue&&t(new r.ObjectMatrix(i.cellValue))}})}onBeforeCellDataChange(t){return this._injector.get(r.ICommandService).beforeCommandExecuted(s=>{if(s.id===j.id){const i=s.params;i.unitId===this._workbook.getUnitId()&&i.subUnitId===this._worksheet.getSheetId()&&i.cellValue&&t(new r.ObjectMatrix(i.cellValue))}})}},E.FWorksheet=ms([ct(3,r.Inject(r.Injector)),ct(4,r.Inject(P)),ct(5,r.ICommandService)],E.FWorksheet);var gs=Object.defineProperty,hs=Object.getOwnPropertyDescriptor,vs=(o,e,t,n)=>{for(var s=n>1?void 0:n?hs(e,t):e,i=o.length-1,a;i>=0;i--)(a=o[i])&&(s=(n?a(e,t,s):a(s))||s);return n&&s&&gs(e,t,s),s},de=(o,e)=>(t,n)=>e(t,n,o);E.FWorkbook=class extends r.FBase{constructor(t,n,s,i,a,u,d,c){super();T(this,"id");this._workbook=t,this._injector=n,this._resourceLoaderService=s,this._selectionManagerService=i,this._univerInstanceService=a,this._commandService=u,this._permissionService=d,this._logService=c,this.id=this._workbook.getUnitId()}getId(){return this.id}getName(){return this._workbook.getName()}save(){return this._resourceLoaderService.saveUnit(this._workbook.getUnitId())}getSnapshot(){return this._logService.warn("use 'save' instead of 'getSnapshot'"),this.save()}getActiveSheet(){const t=this._workbook.getActiveSheet();return this._injector.createInstance(E.FWorksheet,this,this._workbook,t)}getSheets(){return this._workbook.getSheets().map(t=>this._injector.createInstance(E.FWorksheet,this,this._workbook,t))}create(t,n,s){const i=r.mergeWorksheetSnapshotWithDefault({});i.rowCount=n,i.columnCount=s,i.name=t,i.id=t.toLowerCase().replace(/ /g,"-"),this._commandService.syncExecuteCommand(gt.id,{unitId:this.id,index:this._workbook.getSheets().length,sheet:i}),this._commandService.syncExecuteCommand(Ue.id,{unitId:this.id,subUnitId:this._workbook.getSheets()[this._workbook.getSheets().length-1].getSheetId()});const a=this._workbook.getActiveSheet();if(!a)throw new Error("No active sheet found");return this._injector.createInstance(E.FWorksheet,this,this._workbook,a)}getSheetBySheetId(t){const n=this._workbook.getSheetBySheetId(t);return n?this._injector.createInstance(E.FWorksheet,this,this._workbook,n):null}getSheetByName(t){const n=this._workbook.getSheetBySheetName(t);return n?this._injector.createInstance(E.FWorksheet,this,this._workbook,n):null}setActiveSheet(t){return this._commandService.syncExecuteCommand(Ue.id,{unitId:this.id,subUnitId:t.getSheetId()}),t}insertSheet(){this._commandService.syncExecuteCommand(gt.id);const t=this.id,n=this._workbook.getSheets()[this._workbook.getSheets().length-1].getSheetId();this._commandService.syncExecuteCommand(Ue.id,{unitId:t,subUnitId:n});const s=this._workbook.getActiveSheet();if(!s)throw new Error("No active sheet found");return this._injector.createInstance(E.FWorksheet,this,this._workbook,s)}deleteSheet(t){const n=this.id,s=t.getSheetId();this._commandService.executeCommand(Ct.id,{unitId:n,subUnitId:s})}undo(){return this._univerInstanceService.focusUnit(this.id),this._commandService.executeCommand(r.UndoCommand.id)}redo(){return this._univerInstanceService.focusUnit(this.id),this._commandService.executeCommand(r.RedoCommand.id)}onBeforeCommandExecute(t){return this._commandService.beforeCommandExecuted(n=>{var s;((s=n.params)==null?void 0:s.unitId)===this.id&&t(n)})}onCommandExecuted(t){return this._commandService.onCommandExecuted(n=>{var s;((s=n.params)==null?void 0:s.unitId)===this.id&&t(n)})}onSelectionChange(t){return r.toDisposable(this._selectionManagerService.selectionMoveEnd$.subscribe(n=>{this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET).getUnitId()===this.id&&(n!=null&&n.length?t(n.map(s=>s.range)):t([]))}))}setEditable(t){const n=new Ln(this._workbook.getUnitId());this._permissionService.getPermissionPoint(n.id)||this._permissionService.addPermissionPoint(n),this._permissionService.updatePermissionPoint(n.id,t)}setActiveRange(t){const n=this.getActiveSheet(),s=t.getRange().sheetId||n.getSheetId(),i=s?this._workbook.getSheetBySheetId(s):this._workbook.getActiveSheet(!0);if(!i)throw new Error("No active sheet found");i.getSheetId()!==n.getSheetId()&&this.setActiveSheet(this._injector.createInstance(E.FWorksheet,this,this._workbook,i));const a={unitId:this.getId(),subUnitId:s,selections:[t].map(u=>({range:u.getRange(),primary:q(u.getRange(),i),style:null}))};this._commandService.syncExecuteCommand(H.id,a)}getActiveRange(){const t=this._workbook.getActiveSheet(),s=this._selectionManagerService.getCurrentSelections().find(i=>!!i.primary);return s?this._injector.createInstance(E.FRange,this._workbook,t,s.range):null}},E.FWorkbook=vs([de(1,r.Inject(r.Injector)),de(2,r.Inject(r.IResourceLoaderService)),de(3,r.Inject(P)),de(4,r.IUniverInstanceService),de(5,r.ICommandService),de(6,r.IPermissionService),de(7,r.ILogService)],E.FWorkbook);class Cs extends r.FUniver{createUniverSheet(e){const n=this._injector.get(r.IUniverInstanceService).createUnit(r.UniverInstanceType.UNIVER_SHEET,e);return this._injector.createInstance(E.FWorkbook,n)}getActiveWorkbook(){const e=this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);return e?this._injector.createInstance(E.FWorkbook,e):null}getPermission(){return this._injector.createInstance(E.FPermission)}}r.FUniver.extend(Cs),Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});