@univerjs/sheets-drawing 1.0.0-alpha.6 → 1.0.0-alpha.7

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.
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Co., Ltd.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Disposable, ICommandService, IUniverInstanceService } from '@univerjs/core';
17
+ import { IDrawingManagerService } from '@univerjs/drawing';
18
+ import { SheetInterceptorService, SheetSkeletonService, SheetsSelectionsService } from '@univerjs/sheets';
19
+ import { SheetDrawingTransformPlanService } from '../services/sheet-drawing-transform-plan.service';
20
+ import { ISheetDrawingService } from '../services/sheet-drawing.service';
21
+ export declare class SheetDrawingTransformAffectedController extends Disposable {
22
+ private readonly _commandService;
23
+ private readonly _sheetSkeletonService;
24
+ private readonly _sheetInterceptorService;
25
+ private readonly _selectionManagerService;
26
+ private readonly _sheetDrawingService;
27
+ private readonly _drawingManagerService;
28
+ private readonly _univerInstanceService;
29
+ private readonly _transformPlanService;
30
+ private _currentCommand;
31
+ constructor(_commandService: ICommandService, _sheetSkeletonService: SheetSkeletonService, _sheetInterceptorService: SheetInterceptorService, _selectionManagerService: SheetsSelectionsService, _sheetDrawingService: ISheetDrawingService, _drawingManagerService: IDrawingManagerService, _univerInstanceService: IUniverInstanceService, _transformPlanService: SheetDrawingTransformPlanService);
32
+ private _sheetInterceptorListener;
33
+ private _finalizePlan;
34
+ private _getCalculatedSkeletonParam;
35
+ private _createPlanMutations;
36
+ private _getRangeMoveUndo;
37
+ private _getUpdateOrDeleteDrawings;
38
+ private _remainDrawingSize;
39
+ private _getDrawingUndoForColVisible;
40
+ private _createUndoAndRedoMutation;
41
+ private _getDrawingUndoForRowVisible;
42
+ private _getDrawingUndoForRowAndColSize;
43
+ private _getUnitIdAndSubUnitId;
44
+ private _moveRangeInterceptor;
45
+ private _moveRowInterceptor;
46
+ private _moveColInterceptor;
47
+ private _expandCol;
48
+ private _shrinkCol;
49
+ private _expandRow;
50
+ private _shrinkRow;
51
+ private _sheetRefreshListener;
52
+ private _refreshDrawingTransform;
53
+ }
@@ -29,5 +29,7 @@ export { isKnownSheetNonRotatableDrawingType, resolveSheetDrawingRotateEnabled }
29
29
  export type { IUniverSheetsDrawingConfig } from './config/config';
30
30
  export { SHEET_DRAWING_PLUGIN } from './controllers/sheet-drawing.controller';
31
31
  export { UniverSheetsDrawingPlugin } from './plugin';
32
+ export { SheetDrawingTransformPlanService } from './services/sheet-drawing-transform-plan.service';
33
+ export type { ISheetDrawingTransformExtension, ISheetDrawingTransformExtensionResult, ISheetDrawingTransformPlan, } from './services/sheet-drawing-transform-plan.service';
32
34
  export { ISheetDrawingService, SheetDrawingAnchorType, SheetDrawingService } from './services/sheet-drawing.service';
33
35
  export type { IFloatDomData, ISheetDrawing, ISheetDrawingPosition, ISheetFloatDom, ISheetImage, ISheetShape, } from './services/sheet-drawing.service';
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Co., Ltd.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { ICommandInfo, IDisposable, IMutationInfo } from '@univerjs/core';
17
+ import type { SpreadsheetSkeleton } from '@univerjs/engine-render';
18
+ import type { ISheetDrawing } from './sheet-drawing.service';
19
+ export interface ISheetDrawingTransformPlan {
20
+ command: ICommandInfo;
21
+ mode: 'command' | 'refresh';
22
+ unitId: string;
23
+ subUnitId: string;
24
+ skeleton: SpreadsheetSkeleton;
25
+ originals: ReadonlyMap<string, ISheetDrawing>;
26
+ updates: Map<string, ISheetDrawing>;
27
+ deletes: Set<string>;
28
+ }
29
+ export interface ISheetDrawingTransformExtensionResult {
30
+ preRedos?: IMutationInfo[];
31
+ redos?: IMutationInfo[];
32
+ preUndos?: IMutationInfo[];
33
+ undos?: IMutationInfo[];
34
+ }
35
+ export interface ISheetDrawingTransformExtension {
36
+ priority?: number;
37
+ transform(plan: ISheetDrawingTransformPlan): ISheetDrawingTransformExtensionResult | void;
38
+ }
39
+ export declare class SheetDrawingTransformPlanService {
40
+ private readonly _extensions;
41
+ register(extension: ISheetDrawingTransformExtension): IDisposable;
42
+ transform(plan: ISheetDrawingTransformPlan): Required<ISheetDrawingTransformExtensionResult>;
43
+ }
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/sheets"),require("@univerjs/core"),require("@univerjs/drawing"),require("@univerjs/engine-render")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/sheets`,`@univerjs/core`,`@univerjs/drawing`,`@univerjs/engine-render`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsDrawing={},e.UniverSheets,e.UniverCore,e.UniverDrawing,e.UniverEngineRender))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function a(e,n){if(!n)return;let{unitId:r,sheetId:i,skeleton:a}=n,{from:o,to:s,flipY:c=!1,flipX:l=!1,angle:u=0,skewX:d=0,skewY:f=0}=e,{left:p,top:m,width:h,height:g}=(0,t.convertPositionSheetOverGridToAbsolute)(r,i,{from:o,to:s},a),_=a.rowHeaderWidth+a.columnTotalWidth,v=a.columnHeaderHeight+a.rowTotalHeight;return p+h>_&&(p=_-h),m+g>v&&(m=v-g),{flipY:c,flipX:l,angle:u,skewX:d,skewY:f,left:p,top:m,width:h,height:g}}function o(e,t){let{left:n=0,top:r=0,width:i=0,height:a=0,flipY:o=!1,flipX:s=!1,angle:c=0,skewX:l=0,skewY:u=0}=e;return{flipY:o,flipX:s,angle:c,skewX:l,skewY:u,from:t.getCellIndexAndOffsetByPosition(n,r),to:t.getCellIndexAndOffsetByPosition(n+i,r+a)}}function s(e,t){let{left:n=0,top:r=0,width:i=0,height:a=0,angle:s=0}=e,c=(s%360+360)%360;return o(c>=45&&c<135||c>=225&&c<315?{...e,left:n+i/2-a/2,top:r+a/2-i/2,width:a,height:i}:e,t)}let c=function(e){return e.Position=`0`,e.Both=`1`,e.None=`2`,e}({});var l=class extends r.UnitDrawingService{};let u=(0,n.createIdentifier)(`sheets-drawing.sheet-drawing.service`),d=function(e){return e[e.INSERT=0]=`INSERT`,e[e.REMOVE=1]=`REMOVE`,e[e.UPDATE=2]=`UPDATE`,e[e.ARRANGE=3]=`ARRANGE`,e[e.GROUP=4]=`GROUP`,e[e.UNGROUP=5]=`UNGROUP`,e}({}),f={id:`sheet.mutation.set-drawing-apply`,type:n.CommandType.MUTATION,handler:(e,t)=>{let n=e.get(r.IDrawingManagerService),i=e.get(u),{op:a,unitId:o,subUnitId:s,type:c,objects:l}=t;switch(n.applyJson1(o,s,a),i.applyJson1(o,s,a),c){case 0:n.addNotification(l),i.addNotification(l);break;case 1:n.removeNotification(l),i.removeNotification(l);break;case 2:n.updateNotification(l),i.updateNotification(l);break;case 3:n.orderNotification(l),i.orderNotification(l);break;case 4:n.groupUpdateNotification(l),i.groupUpdateNotification(l);break;case 5:n.ungroupUpdateNotification(l),i.ungroupUpdateNotification(l);break}return!0}},p={id:`sheet.operation.clear-drawing-transformer`,type:n.CommandType.MUTATION,handler:(e,t)=>{let n=e.get(i.IRenderManagerService);return t.forEach(e=>{var t;(t=n.getRenderById(e))==null||(t=t.scene.getTransformer())==null||t.debounceRefreshControls()}),!0}},m={id:`sheet.command.insert-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{var i,a;if(!r)return!1;let o=e.get(n.ICommandService),s=e.get(n.IUndoRedoService),c=e.get(u),l=e.get(t.SheetInterceptorService),d=r.drawings,{unitId:h,subUnitId:g,undo:_,redo:v,objects:y}=c.getBatchAddOp(d),b=l.onCommandExecute({id:m.id,params:r}),x=[...(i=b.preRedos)==null?[]:i,{id:f.id,params:{unitId:h,subUnitId:g,op:v,objects:y,type:0}},{id:p.id,params:[h]},...b.redos],S=[...(a=b.preUndos)==null?[]:a,{id:f.id,params:{unitId:h,subUnitId:g,op:_,objects:y,type:1}},{id:p.id,params:[h]},...b.undos];return(0,n.sequenceExecute)(x,o).result?(s.pushUndoRedo({unitID:h,undoMutations:S,redoMutations:x}),!0):!1}},h={id:`sheet.command.remove-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{var i,a;if(!r)return!1;let o=e.get(n.ICommandService),s=e.get(n.IUndoRedoService),c=e.get(t.SheetInterceptorService),l=e.get(u),{drawings:d}=r,{unitId:m,subUnitId:g,undo:_,redo:v,objects:y}=l.getBatchRemoveOp(d);if(Array.isArray(y)&&y.length===0)return!1;let b=c.onCommandExecute({id:h.id,params:r}),x=[...(i=b.preRedos)==null?[]:i,{id:f.id,params:{unitId:m,subUnitId:g,op:v,objects:y,type:1}},{id:p.id,params:[m]},...b.redos],S=[...(a=b.preUndos)==null?[]:a,{id:f.id,params:{unitId:m,subUnitId:g,op:_,objects:y,type:0}},{id:p.id,params:[m]},...b.undos];return(0,n.sequenceExecute)(x,o).result?(s.pushUndoRedo({unitID:m,undoMutations:S,redoMutations:x}),!0):!1}},g={id:`sheet.command.set-drawing-arrange`,type:n.CommandType.COMMAND,handler:(e,t)=>{let r=e.get(n.ICommandService),i=e.get(n.IUndoRedoService);if(!t)return!1;let a=e.get(u),{unitId:o,subUnitId:s,drawingIds:c,arrangeType:l}=t,d={unitId:o,subUnitId:s,drawingIds:c},p;if(l===n.ArrangeTypeEnum.forward?p=a.getForwardDrawingsOp(d):l===n.ArrangeTypeEnum.backward?p=a.getBackwardDrawingOp(d):l===n.ArrangeTypeEnum.front?p=a.getFrontDrawingsOp(d):l===n.ArrangeTypeEnum.back&&(p=a.getBackDrawingsOp(d)),p==null)return!1;let{objects:m,redo:h,undo:g}=p;return r.syncExecuteCommand(f.id,{op:h,unitId:o,subUnitId:s,objects:m,type:3})?(i.pushUndoRedo({unitID:o,undoMutations:[{id:f.id,params:{op:g,unitId:o,subUnitId:s,objects:m,type:3}}],redoMutations:[{id:f.id,params:{op:h,unitId:o,subUnitId:s,objects:m,type:3}}]}),!0):!1}};function _(e){return e===n.DrawingTypeEnum.DRAWING_CHART}function v(e,t,n){return(0,r.resolveDrawingRotateEnabled)(e,{getChildren:e=>{var r;return(r=n==null?void 0:n(e))==null?t.getDrawingsByGroup(e):r},isKnownNonRotatableType:_})}function y(e){var t,n,r;return((t=e.transform)==null?void 0:t.angle)!==void 0||((n=e.sheetTransform)==null?void 0:n.angle)!==void 0||((r=e.axisAlignSheetTransform)==null?void 0:r.angle)!==void 0}function b(e,t){let n=t==null?void 0:t.angle,r={...t==null?{}:t,...e};return n===void 0?delete r.angle:r.angle=n,r}function x(e,t){var n,r,i,a;if(!e.drawingId||!e.unitId||!e.subUnitId||!y(e))return e;let o=t.getDrawingByParam({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId});if(!o||v({...o,...e,drawingType:(n=e.drawingType)==null?o.drawingType:n,transform:{...o.transform,...e.transform}},t))return e;let s={...e};return((r=e.transform)==null?void 0:r.angle)!==void 0&&(s.transform=b(e.transform,o.transform)),((i=e.sheetTransform)==null?void 0:i.angle)!==void 0&&(s.sheetTransform=b(e.sheetTransform,o.sheetTransform)),((a=e.axisAlignSheetTransform)==null?void 0:a.angle)!==void 0&&(s.axisAlignSheetTransform=b(e.axisAlignSheetTransform,o.axisAlignSheetTransform)),s}let S={id:`sheet.command.set-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{var i,a;if(!r)return!1;let o=e.get(n.ICommandService),s=e.get(n.IUndoRedoService),c=e.get(u),l=e.get(t.SheetInterceptorService),{drawings:d}=r,m=d.map(e=>x(e,c)),h={...r,drawings:m},{unitId:g,subUnitId:_,undo:v,redo:y,objects:b}=c.getBatchUpdateOp(m),C=l.onCommandExecute({id:S.id,params:h}),w=[...(i=C.preRedos)==null?[]:i,{id:f.id,params:{unitId:g,subUnitId:_,op:y,objects:b,type:2}},{id:p.id,params:[g]},...C.redos],T=[...(a=C.preUndos)==null?[]:a,{id:f.id,params:{unitId:g,subUnitId:_,op:v,objects:b,type:2}},{id:p.id,params:[g]},...C.undos];return(0,n.sequenceExecute)(w,o).result?(s.pushUndoRedo({unitID:g,undoMutations:T,redoMutations:w}),!0):!1}};function C(e,t){return function(n,r){t(n,r,e)}}function w(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let T=`SHEET_DRAWING_PLUGIN`;function E(e,t){let n=new Set,r=[];return t.forEach(t=>{let i=e[t];i&&(n.add(t),r.push(i))}),Object.values(e).forEach(e=>{n.has(e.drawingId)||r.push(e)}),r}let D=class extends n.Disposable{constructor(e,t,n,r,i,a){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._commandService=n,this._sheetDrawingService=r,this._drawingManagerService=i,this._resourceManagerService=a,this._initCommands(),this._initSnapshot(),this._initSheetChange(),this.disposeWithMe(this._commandService.registerCommand(f))}_initCommands(){[S,m,h,g,p].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}_initSnapshot(){let e=(e,t)=>{let n=t||this._sheetDrawingService.getDrawingDataForUnit(e);return n?JSON.stringify(n):``},t=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:T,businesses:[n.UniverInstanceType.UNIVER_SHEET],toJson:(t,n)=>e(t,n),parseJson:e=>t(e),onUnLoad:e=>{this._sheetDrawingService.removeDrawingDataForUnit(e),this._drawingManagerService.removeDrawingDataForUnit(e)},onLoad:(e,t)=>{this._sheetDrawingService.registerDrawingData(e,t),this._drawingManagerService.registerDrawingData(e,t)}}))}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===t.RemoveSheetCommand.id){var i;let t=e.params,r=t.unitId||this._univerInstanceService.getCurrentUnitOfType(n.UniverInstanceType.UNIVER_SHEET).getUnitId(),a=t.subUnitId||((i=this._univerInstanceService.getCurrentUnitOfType(n.UniverInstanceType.UNIVER_SHEET).getActiveSheet())==null?void 0:i.getSheetId());if(!r||!a)return{redos:[],undos:[]};let o=this._sheetDrawingService.getDrawingData(r,a),s=Object.values(o);if(s.length===0)return{redos:[],undos:[]};let{unitId:c,subUnitId:l,undo:u,redo:d,objects:p}=this._sheetDrawingService.getBatchRemoveOp(s);return Array.isArray(p)&&p.length===0?{redos:[],undos:[]}:{redos:[{id:f.id,params:{op:d,unitId:c,subUnitId:l,objects:p,type:1}}],undos:[{id:f.id,params:{op:u,unitId:c,subUnitId:l,objects:p,type:0}}]}}else if(e.id===t.CopySheetCommand.id){let{unitId:t,subUnitId:n,targetSubUnitId:i,copyContext:a}=e.params;if(!t||!n||!i)return{redos:[],undos:[]};let o=(0,r.getOrCreateDrawingCopyPlan)(a,E(this._sheetDrawingService.getDrawingData(t,n),this._sheetDrawingService.getDrawingOrder(t,n)),{unitId:t,sourceSubUnitId:n,targetSubUnitId:i}).drawings;if(o.length===0)return{redos:[],undos:[]};let{unitId:s,subUnitId:c,undo:l,redo:u,objects:d}=this._sheetDrawingService.getBatchAddOp(o);return{redos:[{id:f.id,params:{op:u,unitId:s,subUnitId:c,objects:d,type:0}}],undos:[{id:f.id,params:{op:l,unitId:s,subUnitId:c,objects:d,type:1}}]}}return{redos:[],undos:[]}}}))}};D=w([C(0,(0,n.Inject)(t.SheetInterceptorService)),C(1,(0,n.Inject)(n.IUniverInstanceService)),C(2,n.ICommandService),C(3,u),C(4,r.IDrawingManagerService),C(5,n.IResourceManagerService)],D);var O=`@univerjs/sheets-drawing`,k=`1.0.0-alpha.6`;let A={};function j(e){"@babel/helpers - typeof";return j=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},j(e)}function M(e,t){if(j(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(j(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function N(e){var t=M(e,`string`);return j(t)==`symbol`?t:t+``}function P(e,t,n){return(t=N(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let F=class extends n.Plugin{constructor(e=A,t,r){super(),this._config=e,this._injector=t,this._configService=r;let{...i}=(0,n.merge)({},A,this._config);this._configService.setConfig(`sheets-drawing.config`,i)}onStarting(){[[D],[u,{useClass:l}]].forEach(e=>this._injector.add(e)),this._injector.get(D)}};P(F,`pluginName`,T),P(F,`packageName`,O),P(F,`version`,k),P(F,`type`,n.UniverInstanceType.UNIVER_SHEET),F=w([(0,n.DependentOn)(r.UniverDrawingPlugin),C(1,(0,n.Inject)(n.Injector)),C(2,n.IConfigService)],F),e.ClearSheetDrawingTransformerOperation=p,e.DrawingApplyType=d,e.ISheetDrawingService=u,e.InsertSheetDrawingCommand=m,e.RemoveSheetDrawingCommand=h,e.SHEET_DRAWING_PLUGIN=T,e.SetDrawingApplyMutation=f,e.SetDrawingArrangeCommand=g,e.SetSheetDrawingCommand=S,e.SheetDrawingAnchorType=c,e.SheetDrawingService=l,Object.defineProperty(e,"UniverSheetsDrawingPlugin",{enumerable:!0,get:function(){return F}}),e.drawingPositionToTransform=a,e.isKnownSheetNonRotatableDrawingType=_,e.resolveSheetDrawingRotateEnabled=v,e.transformToAxisAlignPosition=s,e.transformToDrawingPosition=o});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/sheets"),require("@univerjs/core"),require("@univerjs/drawing"),require("@univerjs/engine-render")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/sheets`,`@univerjs/core`,`@univerjs/drawing`,`@univerjs/engine-render`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsDrawing={},e.UniverSheets,e.UniverCore,e.UniverDrawing,e.UniverEngineRender))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function a(e,n){if(!n)return;let{unitId:r,sheetId:i,skeleton:a}=n,{from:o,to:s,flipY:c=!1,flipX:l=!1,angle:u=0,skewX:d=0,skewY:f=0}=e,{left:p,top:m,width:h,height:g}=(0,t.convertPositionSheetOverGridToAbsolute)(r,i,{from:o,to:s},a),_=a.rowHeaderWidth+a.columnTotalWidth,v=a.columnHeaderHeight+a.rowTotalHeight;return p+h>_&&(p=_-h),m+g>v&&(m=v-g),{flipY:c,flipX:l,angle:u,skewX:d,skewY:f,left:p,top:m,width:h,height:g}}function o(e,t){let{left:n=0,top:r=0,width:i=0,height:a=0,flipY:o=!1,flipX:s=!1,angle:c=0,skewX:l=0,skewY:u=0}=e;return{flipY:o,flipX:s,angle:c,skewX:l,skewY:u,from:t.getCellIndexAndOffsetByPosition(n,r),to:t.getCellIndexAndOffsetByPosition(n+i,r+a)}}function s(e,t){let{left:n=0,top:r=0,width:i=0,height:a=0,angle:s=0}=e,c=(s%360+360)%360;return o(c>=45&&c<135||c>=225&&c<315?{...e,left:n+i/2-a/2,top:r+a/2-i/2,width:a,height:i}:e,t)}let c=function(e){return e.Position=`0`,e.Both=`1`,e.None=`2`,e}({});var l=class extends r.UnitDrawingService{};let u=(0,n.createIdentifier)(`sheets-drawing.sheet-drawing.service`),d=function(e){return e[e.INSERT=0]=`INSERT`,e[e.REMOVE=1]=`REMOVE`,e[e.UPDATE=2]=`UPDATE`,e[e.ARRANGE=3]=`ARRANGE`,e[e.GROUP=4]=`GROUP`,e[e.UNGROUP=5]=`UNGROUP`,e}({}),f={id:`sheet.mutation.set-drawing-apply`,type:n.CommandType.MUTATION,handler:(e,t)=>{let n=e.get(r.IDrawingManagerService),i=e.get(u),{op:a,unitId:o,subUnitId:s,type:c,objects:l}=t;switch(n.applyJson1(o,s,a),i.applyJson1(o,s,a),c){case 0:n.addNotification(l),i.addNotification(l);break;case 1:n.removeNotification(l),i.removeNotification(l);break;case 2:n.updateNotification(l),i.updateNotification(l);break;case 3:n.orderNotification(l),i.orderNotification(l);break;case 4:n.groupUpdateNotification(l),i.groupUpdateNotification(l);break;case 5:n.ungroupUpdateNotification(l),i.ungroupUpdateNotification(l);break}return!0}},p={id:`sheet.operation.clear-drawing-transformer`,type:n.CommandType.MUTATION,handler:(e,t)=>{let n=e.get(i.IRenderManagerService);return t.forEach(e=>{var t;(t=n.getRenderById(e))==null||(t=t.scene.getTransformer())==null||t.debounceRefreshControls()}),!0}},m={id:`sheet.command.insert-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{var i,a;if(!r)return!1;let o=e.get(n.ICommandService),s=e.get(n.IUndoRedoService),c=e.get(u),l=e.get(t.SheetInterceptorService),d=r.drawings,{unitId:h,subUnitId:g,undo:_,redo:v,objects:y}=c.getBatchAddOp(d),b=l.onCommandExecute({id:m.id,params:r}),x=[...(i=b.preRedos)==null?[]:i,{id:f.id,params:{unitId:h,subUnitId:g,op:v,objects:y,type:0}},{id:p.id,params:[h]},...b.redos],S=[...(a=b.preUndos)==null?[]:a,{id:f.id,params:{unitId:h,subUnitId:g,op:_,objects:y,type:1}},{id:p.id,params:[h]},...b.undos];return(0,n.sequenceExecute)(x,o).result?(s.pushUndoRedo({unitID:h,undoMutations:S,redoMutations:x}),!0):!1}},h={id:`sheet.command.remove-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{var i,a;if(!r)return!1;let o=e.get(n.ICommandService),s=e.get(n.IUndoRedoService),c=e.get(t.SheetInterceptorService),l=e.get(u),{drawings:d}=r,{unitId:m,subUnitId:g,undo:_,redo:v,objects:y}=l.getBatchRemoveOp(d);if(Array.isArray(y)&&y.length===0)return!1;let b=c.onCommandExecute({id:h.id,params:r}),x=[...(i=b.preRedos)==null?[]:i,{id:f.id,params:{unitId:m,subUnitId:g,op:v,objects:y,type:1}},{id:p.id,params:[m]},...b.redos],S=[...(a=b.preUndos)==null?[]:a,{id:f.id,params:{unitId:m,subUnitId:g,op:_,objects:y,type:0}},{id:p.id,params:[m]},...b.undos];return(0,n.sequenceExecute)(x,o).result?(s.pushUndoRedo({unitID:m,undoMutations:S,redoMutations:x}),!0):!1}},g={id:`sheet.command.set-drawing-arrange`,type:n.CommandType.COMMAND,handler:(e,t)=>{let r=e.get(n.ICommandService),i=e.get(n.IUndoRedoService);if(!t)return!1;let a=e.get(u),{unitId:o,subUnitId:s,drawingIds:c,arrangeType:l}=t,d={unitId:o,subUnitId:s,drawingIds:c},p;if(l===n.ArrangeTypeEnum.forward?p=a.getForwardDrawingsOp(d):l===n.ArrangeTypeEnum.backward?p=a.getBackwardDrawingOp(d):l===n.ArrangeTypeEnum.front?p=a.getFrontDrawingsOp(d):l===n.ArrangeTypeEnum.back&&(p=a.getBackDrawingsOp(d)),p==null)return!1;let{objects:m,redo:h,undo:g}=p;return r.syncExecuteCommand(f.id,{op:h,unitId:o,subUnitId:s,objects:m,type:3})?(i.pushUndoRedo({unitID:o,undoMutations:[{id:f.id,params:{op:g,unitId:o,subUnitId:s,objects:m,type:3}}],redoMutations:[{id:f.id,params:{op:h,unitId:o,subUnitId:s,objects:m,type:3}}]}),!0):!1}};function _(e){return e===n.DrawingTypeEnum.DRAWING_CHART}function v(e,t,n){return(0,r.resolveDrawingRotateEnabled)(e,{getChildren:e=>{var r;return(r=n==null?void 0:n(e))==null?t.getDrawingsByGroup(e):r},isKnownNonRotatableType:_})}function y(e){var t,n,r;return((t=e.transform)==null?void 0:t.angle)!==void 0||((n=e.sheetTransform)==null?void 0:n.angle)!==void 0||((r=e.axisAlignSheetTransform)==null?void 0:r.angle)!==void 0}function b(e,t){let n=t==null?void 0:t.angle,r={...t==null?{}:t,...e};return n===void 0?delete r.angle:r.angle=n,r}function x(e,t){var n,r,i,a;if(!e.drawingId||!e.unitId||!e.subUnitId||!y(e))return e;let o=t.getDrawingByParam({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId});if(!o||v({...o,...e,drawingType:(n=e.drawingType)==null?o.drawingType:n,transform:{...o.transform,...e.transform}},t))return e;let s={...e};return((r=e.transform)==null?void 0:r.angle)!==void 0&&(s.transform=b(e.transform,o.transform)),((i=e.sheetTransform)==null?void 0:i.angle)!==void 0&&(s.sheetTransform=b(e.sheetTransform,o.sheetTransform)),((a=e.axisAlignSheetTransform)==null?void 0:a.angle)!==void 0&&(s.axisAlignSheetTransform=b(e.axisAlignSheetTransform,o.axisAlignSheetTransform)),s}let S={id:`sheet.command.set-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{var i,a;if(!r)return!1;let o=e.get(n.ICommandService),s=e.get(n.IUndoRedoService),c=e.get(u),l=e.get(t.SheetInterceptorService),{drawings:d}=r,m=d.map(e=>x(e,c)),h={...r,drawings:m},{unitId:g,subUnitId:_,undo:v,redo:y,objects:b}=c.getBatchUpdateOp(m),C=l.onCommandExecute({id:S.id,params:h}),w=[...(i=C.preRedos)==null?[]:i,{id:f.id,params:{unitId:g,subUnitId:_,op:y,objects:b,type:2}},{id:p.id,params:[g]},...C.redos],T=[...(a=C.preUndos)==null?[]:a,{id:f.id,params:{unitId:g,subUnitId:_,op:v,objects:b,type:2}},{id:p.id,params:[g]},...C.undos];return(0,n.sequenceExecute)(w,o).result?(s.pushUndoRedo({unitID:g,undoMutations:T,redoMutations:w}),!0):!1}};function C(e,t){return function(n,r){t(n,r,e)}}function w(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let T=`SHEET_DRAWING_PLUGIN`;function E(e,t){let n=new Set,r=[];return t.forEach(t=>{let i=e[t];i&&(n.add(t),r.push(i))}),Object.values(e).forEach(e=>{n.has(e.drawingId)||r.push(e)}),r}let D=class extends n.Disposable{constructor(e,t,n,r,i,a){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._commandService=n,this._sheetDrawingService=r,this._drawingManagerService=i,this._resourceManagerService=a,this._initCommands(),this._initSnapshot(),this._initSheetChange(),this.disposeWithMe(this._commandService.registerCommand(f))}_initCommands(){[S,m,h,g,p].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}_initSnapshot(){let e=(e,t)=>{let n=t||this._sheetDrawingService.getDrawingDataForUnit(e);return n?JSON.stringify(n):``},t=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:T,businesses:[n.UniverInstanceType.UNIVER_SHEET],toJson:(t,n)=>e(t,n),parseJson:e=>t(e),onUnLoad:e=>{this._sheetDrawingService.removeDrawingDataForUnit(e),this._drawingManagerService.removeDrawingDataForUnit(e)},onLoad:(e,t)=>{this._sheetDrawingService.registerDrawingData(e,t),this._drawingManagerService.registerDrawingData(e,t)}}))}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===t.RemoveSheetCommand.id){var i;let t=e.params,r=t.unitId||this._univerInstanceService.getCurrentUnitOfType(n.UniverInstanceType.UNIVER_SHEET).getUnitId(),a=t.subUnitId||((i=this._univerInstanceService.getCurrentUnitOfType(n.UniverInstanceType.UNIVER_SHEET).getActiveSheet())==null?void 0:i.getSheetId());if(!r||!a)return{redos:[],undos:[]};let o=this._sheetDrawingService.getDrawingData(r,a),s=Object.values(o);if(s.length===0)return{redos:[],undos:[]};let{unitId:c,subUnitId:l,undo:u,redo:d,objects:p}=this._sheetDrawingService.getBatchRemoveOp(s);return Array.isArray(p)&&p.length===0?{redos:[],undos:[]}:{redos:[{id:f.id,params:{op:d,unitId:c,subUnitId:l,objects:p,type:1}}],undos:[{id:f.id,params:{op:u,unitId:c,subUnitId:l,objects:p,type:0}}]}}else if(e.id===t.CopySheetCommand.id){let{unitId:t,subUnitId:n,targetSubUnitId:i,copyContext:a}=e.params;if(!t||!n||!i)return{redos:[],undos:[]};let o=(0,r.getOrCreateDrawingCopyPlan)(a,E(this._sheetDrawingService.getDrawingData(t,n),this._sheetDrawingService.getDrawingOrder(t,n)),{unitId:t,sourceSubUnitId:n,targetSubUnitId:i}).drawings;if(o.length===0)return{redos:[],undos:[]};let{unitId:s,subUnitId:c,undo:l,redo:u,objects:d}=this._sheetDrawingService.getBatchAddOp(o);return{redos:[{id:f.id,params:{op:u,unitId:s,subUnitId:c,objects:d,type:0}}],undos:[{id:f.id,params:{op:l,unitId:s,subUnitId:c,objects:d,type:1}}]}}return{redos:[],undos:[]}}}))}};D=w([C(0,(0,n.Inject)(t.SheetInterceptorService)),C(1,(0,n.Inject)(n.IUniverInstanceService)),C(2,n.ICommandService),C(3,u),C(4,r.IDrawingManagerService),C(5,n.IResourceManagerService)],D);var O=`@univerjs/sheets-drawing`,k=`1.0.0-alpha.7`;let A={};function j(e){"@babel/helpers - typeof";return j=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},j(e)}function M(e,t){if(j(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(j(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function N(e){var t=M(e,`string`);return j(t)==`symbol`?t:t+``}function P(e,t,n){return(t=N(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function F(){return{preRedos:[],redos:[],preUndos:[],undos:[]}}var I=class{constructor(){P(this,`_extensions`,[])}register(e){return this._extensions.push(e),this._extensions.sort((e,t)=>{var n,r;return((n=t.priority)==null?0:n)-((r=e.priority)==null?0:r)}),(0,n.toDisposable)(()=>{let t=this._extensions.indexOf(e);t>=0&&this._extensions.splice(t,1)})}transform(e){return this._extensions.reduce((t,n)=>{var r,i,a,o;let s=n.transform(e);return s?(t.preRedos.push(...(r=s.preRedos)==null?[]:r),t.redos.push(...(i=s.redos)==null?[]:i),t.preUndos.push(...(a=s.preUndos)==null?[]:a),t.undos.push(...(o=s.undos)==null?[]:o),t):t},F())}};let L=[t.InsertRowCommand.id,t.InsertColCommand.id,t.RemoveRowCommand.id,t.RemoveColCommand.id,t.DeleteRangeMoveLeftCommand.id,t.DeleteRangeMoveUpCommand.id,t.InsertRangeMoveDownCommand.id,t.InsertRangeMoveRightCommand.id,t.DeltaRowHeightCommand.id,t.SetRowHeightCommand.id,t.DeltaColumnWidthCommand.id,t.SetColWidthCommand.id,t.SetRowHiddenCommand.id,t.SetSpecificRowsVisibleCommand.id,t.SetSpecificColsVisibleCommand.id,t.SetColHiddenCommand.id,t.MoveColsCommand.id,t.MoveRowsCommand.id,t.MoveRangeCommand.id],R=[t.SetRowVisibleMutation.id,t.SetRowHiddenMutation.id,t.SetColVisibleMutation.id,t.SetColHiddenMutation.id,t.SetWorksheetRowHeightMutation.id,t.SetWorksheetRowAutoHeightMutation.id,t.SetWorksheetRowIsAutoHeightMutation.id,t.SetWorksheetColWidthMutation.id],z=class extends n.Disposable{constructor(e,t,n,r,i,a,o,s){super(),this._commandService=e,this._sheetSkeletonService=t,this._sheetInterceptorService=n,this._selectionManagerService=r,this._sheetDrawingService=i,this._drawingManagerService=a,this._univerInstanceService=o,this._transformPlanService=s,P(this,`_currentCommand`,{id:``,params:{}}),this._sheetInterceptorListener(),this._sheetRefreshListener()}_sheetInterceptorListener(){this.disposeWithMe(this._sheetInterceptorService.interceptAfterCommand({getMutations:e=>{let{id:r,params:i}=e;if(!L.includes(r)||!i)return{redos:[],undos:[]};if(this._currentCommand=e,r===t.InsertRowCommand.id)return this._moveRowInterceptor(i,`insert`);if([t.MoveColsCommand.id,t.MoveRowsCommand.id,t.MoveRangeCommand.id].includes(r)){let e;if(r===t.MoveRangeCommand.id){let n=i;if(n.toUnitId&&n.fromUnitId&&n.toUnitId!==n.fromUnitId||n.toSubUnitId&&n.fromSubUnitId&&n.toSubUnitId!==n.fromSubUnitId)return{redos:[],undos:[]};e=(0,t.getSheetCommandTarget)(this._univerInstanceService,{unitId:n.toUnitId,subUnitId:n.toSubUnitId})}else e=(0,t.getSheetCommandTarget)(this._univerInstanceService,i);if(!e)return{redos:[],undos:[]};let{unitId:n,subUnitId:a}=e,{fromRange:o,toRange:s}=i;return this._moveRangeInterceptor(n,a,o,s)}else if(r===t.InsertColCommand.id)return this._moveColInterceptor(i,`insert`);else if(r===t.RemoveRowCommand.id)return this._moveRowInterceptor(i,`remove`);else if(r===t.RemoveColCommand.id)return this._moveColInterceptor(i,`remove`);else if(r===t.DeleteRangeMoveLeftCommand.id){let{range:e}=i;return this._getRangeMoveUndo(e,0)}else if(r===t.DeleteRangeMoveUpCommand.id){let{range:e}=i;return this._getRangeMoveUndo(e,1)}else if(r===t.InsertRangeMoveDownCommand.id){let{range:e}=i;return this._getRangeMoveUndo(e,2)}else if(r===t.InsertRangeMoveRightCommand.id){let{range:e}=i;return this._getRangeMoveUndo(e,3)}else if(r===t.SetRowHiddenCommand.id||r===t.SetSpecificRowsVisibleCommand.id){var a;let e=i,r=(0,t.getSheetCommandTarget)(this._univerInstanceService,e);if(!r)return{redos:[],undos:[]};let{unitId:o,subUnitId:s}=r,c=e.ranges||((a=this._selectionManagerService.getCurrentSelections())==null?void 0:a.map(e=>e.range).filter(e=>e.rangeType===n.RANGE_TYPE.ROW));return!c||c.length===0?{redos:[],undos:[]}:this._getDrawingUndoForRowVisible(o,s,c)}else if(r===t.SetColHiddenCommand.id||r===t.SetSpecificColsVisibleCommand.id){var o;let e=i,r=(0,t.getSheetCommandTarget)(this._univerInstanceService,e);if(!r)return{redos:[],undos:[]};let{unitId:a,subUnitId:s}=r,c=e.ranges||((o=this._selectionManagerService.getCurrentSelections())==null?void 0:o.map(e=>e.range).filter(e=>e.rangeType===n.RANGE_TYPE.COLUMN));return!c||c.length===0?{redos:[],undos:[]}:this._getDrawingUndoForColVisible(a,s,c)}else if(r===t.DeltaRowHeightCommand.id||r===t.DeltaColumnWidthCommand.id){let e=(0,t.getSheetCommandTarget)(this._univerInstanceService);if(!e)return{redos:[],undos:[]};let{unitId:n,subUnitId:a,worksheet:o}=e,s=[];return r===t.DeltaRowHeightCommand.id?s.push({startRow:i.anchorRow,endRow:i.anchorRow,startColumn:0,endColumn:o.getColumnCount()-1}):s.push({startRow:0,endRow:o.getRowCount()-1,startColumn:i.anchorCol,endColumn:i.anchorCol}),this._getDrawingUndoForRowAndColSize(n,a,s)}else if(r===t.SetRowHeightCommand.id||r===t.SetColWidthCommand.id){var s;let e=i,n=(0,t.getSheetCommandTarget)(this._univerInstanceService,e);if(!n)return{redos:[],undos:[]};let{unitId:r,subUnitId:a}=n,o=e.ranges||((s=this._selectionManagerService.getCurrentSelections())==null?void 0:s.map(e=>e.range));return!o||o.length===0?{redos:[],undos:[]}:this._getDrawingUndoForRowAndColSize(r,a,o)}return{redos:[],undos:[]}}}))}_finalizePlan(e,t,n,r=[],i=`command`,a=this._currentCommand){let o=this._sheetSkeletonService.getSkeleton(e,t);if(!o)return{redos:[],undos:[]};let s=this._sheetDrawingService.getDrawingData(e,t),c=new Map(Object.entries(s)),l={command:a,mode:i,unitId:e,subUnitId:t,skeleton:o,originals:c,updates:new Map,deletes:new Set(r.map(({drawingId:e})=>e).filter(e=>!!e))};n.forEach(e=>{var t,n;if(!e.drawingId)return;let r=c.get(e.drawingId);r&&l.updates.set(e.drawingId,{...r,...e,transform:{...r.transform,...e.transform},sheetTransform:(t=e.sheetTransform)==null?r.sheetTransform:t,axisAlignSheetTransform:(n=e.axisAlignSheetTransform)==null?r.axisAlignSheetTransform:n})});let u=this._transformPlanService.transform(l);if(i===`refresh`){let t=[...l.updates.values()].filter(e=>JSON.stringify(c.get(e.drawingId))!==JSON.stringify(e));return t.length&&(this._sheetDrawingService.refreshTransform(t),this._drawingManagerService.refreshTransform(t),this._commandService.syncExecuteCommand(p.id,[e])),{redos:[],undos:[]}}return this._createPlanMutations(l,u)}_getCalculatedSkeletonParam(e,t){let n=this._sheetSkeletonService.getSkeletonParam(e,t);if(n)return n.skeleton.makeDirty(!0),n.skeleton.calculate(),n}_createPlanMutations(e,t){let{unitId:n,subUnitId:r}=e,i=[...t.preRedos],a=[...t.preUndos],o=[...e.updates.values()].filter(({drawingId:t})=>!e.deletes.has(t));if(o.length){let{undo:e,redo:t,objects:s}=this._sheetDrawingService.getBatchUpdateOp(o);i.push({id:f.id,params:{unitId:n,subUnitId:r,op:t,objects:s,type:2}}),a.push({id:f.id,params:{unitId:n,subUnitId:r,op:e,objects:s,type:2}})}if(e.deletes.size){let t=[...e.deletes].map(e=>({unitId:n,subUnitId:r,drawingId:e})),{undo:o,redo:s,objects:c}=this._sheetDrawingService.getBatchRemoveOp(t);i.push({id:f.id,params:{unitId:n,subUnitId:r,op:s,objects:c,type:1}}),a.push({id:f.id,params:{unitId:n,subUnitId:r,op:o,objects:c,type:0}})}return i.push(...t.redos),a.push(...t.undos),(i.length||a.length)&&(i.push({id:p.id,params:[n]}),a.push({id:p.id,params:[n]})),{redos:i,undos:a}}_getRangeMoveUndo(e,n){let r=(0,t.getSheetCommandTarget)(this._univerInstanceService);if(!r)return{redos:[],undos:[]};let{unitId:i,subUnitId:a}=r;if(!this._getCalculatedSkeletonParam(i,a))return{redos:[],undos:[]};let o=this._sheetDrawingService.getDrawingData(i,a),s=[],c=[];return Object.keys(o).forEach(t=>{let r=o[t],{updateDrawings:i,deleteDrawings:a}=this._getUpdateOrDeleteDrawings(e,n,r);s.push(...i),c.push(...a)}),this._finalizePlan(i,a,s,c)}_getUpdateOrDeleteDrawings(e,t,n){let r=[],i=[],{sheetTransform:o,anchorType:s=`0`,transform:c,unitId:l,subUnitId:u,drawingId:d}=n,f=this._sheetSkeletonService.getSkeletonParam(l,u);if(!o||!c||!f)return{updateDrawings:r,deleteDrawings:i};let{from:p,to:m}=o,{row:h,column:g}=p,{row:_,column:v}=m,{startRow:y,endRow:b,startColumn:x,endColumn:S}=e,C=null,w=null,T;if(t===0&&h>=y&&_<=b)if(g>=x&&v<=S)i.push({unitId:l,subUnitId:u,drawingId:d});else{var E;let e=this._shrinkCol(x,S,{sheetSkeletonParam:f,sheetTransform:o,transform:c,anchorType:s});C=e==null?void 0:e.newSheetTransform,w=e==null?void 0:e.newTransform,T=(E=e==null?void 0:e.axisAlignSheetTransform)==null?void 0:E}else if(t===1&&g>=x&&v<=S)if(h>=y&&_<=b)i.push({unitId:l,subUnitId:u,drawingId:d});else{var D;let e=this._shrinkRow(y,b,{sheetSkeletonParam:f,sheetTransform:o,transform:c,anchorType:s});C=e==null?void 0:e.newSheetTransform,w=e==null?void 0:e.newTransform,T=(D=e==null?void 0:e.axisAlignSheetTransform)==null?void 0:D}else if(t===2){var O;let e=this._expandRow(y,b,{sheetSkeletonParam:f,sheetTransform:o,transform:c,anchorType:s});C=e==null?void 0:e.newSheetTransform,w=e==null?void 0:e.newTransform,T=(O=e==null?void 0:e.axisAlignSheetTransform)==null?void 0:O}else if(t===3){var k;let e=this._expandCol(x,S,{sheetSkeletonParam:f,sheetTransform:o,transform:c,anchorType:s});C=e==null?void 0:e.newSheetTransform,w=e==null?void 0:e.newTransform,T=(k=e==null?void 0:e.axisAlignSheetTransform)==null?void 0:k}if(C&&w){let e=a(C,f);r.push({...n,sheetTransform:C,transform:e,axisAlignSheetTransform:T})}return{updateDrawings:r,deleteDrawings:i}}_remainDrawingSize(e,t,n,r){let i=o({...e},r);if(i){let a=s({...e},r);t.push({...n,sheetTransform:i,axisAlignSheetTransform:a})}}_getDrawingUndoForColVisible(e,n,r){let i=this._getCalculatedSkeletonParam(e,n);if(!i)return{redos:[],undos:[]};let{skeleton:a}=i,c=this._drawingManagerService.getDrawingData(e,n),l=[],u=[];return Object.keys(c).forEach(e=>{let n=c[e],{sheetTransform:i,transform:d,anchorType:f=`0`}=n;if(f===`2`)this._remainDrawingSize(d,l,n,a);else{let{from:e,to:c}=i,{row:p,column:m}=e,{row:h,column:g}=c;for(let e=0;e<r.length;e++){let{startColumn:i,endColumn:c}=r[e];if(g<i)continue;if(f===`0`){let e=null,r=null;if(m>=i&&m<=c){let e=(0,t.attachRangeWithCoord)(a,{startColumn:m,endColumn:c,startRow:p,endRow:h});r={...d,left:e.startX}}if(r){e=o(r,a);let t=s(r,a);if(e&&r){l.push({...n,sheetTransform:e,transform:r,axisAlignSheetTransform:t});break}}continue}if(m>=i&&g<=c)continue;let _=null,v=null;if(m>=i&&m<=c){let e=(0,t.attachRangeWithCoord)(a,{startColumn:m,endColumn:c,startRow:p,endRow:h});v={...d,left:(e==null?void 0:e.startX)||0,width:((d==null?void 0:d.width)||0)-e.endX+e.startX}}else if(g>=i&&g<=c){let e=(0,t.attachRangeWithCoord)(a,{startColumn:i,endColumn:g,startRow:p,endRow:h});v={...d,left:e.startX-((d==null?void 0:d.width)||0)}}else{let e=(0,t.attachRangeWithCoord)(a,{startColumn:i,endColumn:c,startRow:p,endRow:h});if(v={...d,width:((d==null?void 0:d.width)||0)-e.endX+e.startX},_=o(v,a),_&&v){let e=s(v,a);u.push({...n,sheetTransform:_,transform:v,axisAlignSheetTransform:e});break}}if(v&&(_=o(v,a)),v&&_){let e=s(v,a);l.push({...n,sheetTransform:_,transform:v,axisAlignSheetTransform:e});break}else this._remainDrawingSize(d,l,n,a)}}}),this._finalizePlan(e,n,[...u,...l])}_createUndoAndRedoMutation(e,t,n){return this._finalizePlan(e,t,n)}_getDrawingUndoForRowVisible(e,n,r){let i=this._getCalculatedSkeletonParam(e,n);if(!i)return{redos:[],undos:[]};let{skeleton:a}=i,c=this._drawingManagerService.getDrawingData(e,n),l=[],u=[];return Object.keys(c).forEach(e=>{let n=c[e],{sheetTransform:i,transform:d,anchorType:f=`0`}=n;if(f===`2`)this._remainDrawingSize(d,l,n,a);else{let{from:e,to:c}=i,{row:p,column:m}=e,{row:h,column:g}=c;for(let e=0;e<r.length;e++){let{startRow:i,endRow:c}=r[e];if(h<i)continue;if(f===`0`){let e=null,r=null;if(p>=i&&p<=c){let e=(0,t.attachRangeWithCoord)(a,{startColumn:m,endColumn:g,startRow:p,endRow:c});r={...d,top:e.startY}}if(r){e=o(r,a);let t=s(r,a);if(e&&r){l.push({...n,sheetTransform:e,transform:r,axisAlignSheetTransform:t});break}}continue}if(p>=i&&h<=c)continue;let _=null,v=null;if(p>=i&&p<=c){let e=(0,t.attachRangeWithCoord)(a,{startColumn:m,endColumn:g,startRow:p,endRow:c});v={...d,top:(e==null?void 0:e.startY)||0,height:((d==null?void 0:d.height)||0)-e.endY+e.startY}}else if(h>=i&&h<=c){let e=(0,t.attachRangeWithCoord)(a,{startColumn:m,endColumn:g,startRow:i,endRow:h});v={...d,top:e.startY-((d==null?void 0:d.height)||0)}}else{let e=(0,t.attachRangeWithCoord)(a,{startColumn:m,endColumn:g,startRow:i,endRow:c});if(v={...d,height:((d==null?void 0:d.height)||0)-e.endY+e.startY},_=o(v,a),_&&v){let e=s(v,a);u.push({...n,sheetTransform:_,transform:v,axisAlignSheetTransform:e});break}}if(v&&(_=o(v,a)),v&&_){let e=s(v,a);l.push({...n,sheetTransform:_,transform:v,axisAlignSheetTransform:e});break}else this._remainDrawingSize(d,l,n,a)}}}),this._finalizePlan(e,n,[...u,...l])}_getDrawingUndoForRowAndColSize(e,t,n){let r=this._getCalculatedSkeletonParam(e,t);if(!r)return{redos:[],undos:[]};let{skeleton:i}=r,o=this._drawingManagerService.getDrawingData(e,t),s=[];return Object.keys(o).forEach(e=>{let t=o[e],{sheetTransform:c,transform:l,anchorType:u=`0`}=t;if(u===`2`)this._remainDrawingSize(l,s,t,i);else{let{from:e,to:o}=c,{row:d,column:f}=e,{row:p,column:m}=o;for(let e=0;e<n.length;e++){let{startRow:o,endRow:h,startColumn:g,endColumn:_}=n[e];if(p<o||m<g)continue;if(u===`0`&&(d<=o&&p>=h||f<=g&&m>=_)){this._remainDrawingSize(l,s,t,i);continue}let v=a({...c},r);if(v){s.push({...t,transform:v});break}}}}),s.length===0?{redos:[],undos:[]}:this._createUndoAndRedoMutation(e,t,s)}_getUnitIdAndSubUnitId(e,n){let r;if(r=n===`insert`?(0,t.getSheetCommandTarget)(this._univerInstanceService,e):(0,t.getSheetCommandTarget)(this._univerInstanceService),!r)return;let{unitId:i,subUnitId:a}=r;return{unitId:i,subUnitId:a}}_moveRangeInterceptor(e,n,r,i){let o=this._getCalculatedSkeletonParam(e,n);if(!o)return{redos:[],undos:[]};let{skeleton:s}=o,c=(0,t.attachRangeWithCoord)(s,r);if(!c)return{redos:[],undos:[]};let{startX:l,endX:u,startY:d,endY:f}=c,p=this._sheetDrawingService.getDrawingData(e,n),m=[];Object.keys(p).forEach(e=>{let t=p[e];if(t.anchorType!==`1`)return;let{transform:n}=t;if(!n)return;let{left:r=0,top:i=0,width:a=0,height:o=0}=n,{drawingStartX:s,drawingEndX:c,drawingStartY:h,drawingEndY:g}={drawingStartX:r,drawingEndX:r+a,drawingStartY:i,drawingEndY:i+o};l<=s&&c<=u&&d<=h&&g<=f&&m.push(t)});let h=i.startRow-r.startRow,g=i.startColumn-r.startColumn,_=m.map(t=>{let r=t.sheetTransform,i={to:{...r.to,row:r.to.row+h,column:r.to.column+g},from:{...r.from,row:r.from.row+h,column:r.from.column+g}},s=a(i,o);return{unitId:e,subUnitId:n,drawingId:t.drawingId,transform:s,sheetTransform:i}});return this._finalizePlan(e,n,_)}_moveRowInterceptor(e,t){let n=this._getUnitIdAndSubUnitId(e,t);if(!n)return{redos:[],undos:[]};let{unitId:r,subUnitId:i}=n,a=this._getCalculatedSkeletonParam(r,i);if(!a)return{redos:[],undos:[]};let{range:o}=e,s=o.startRow,c=o.endRow,l=this._sheetDrawingService.getDrawingData(r,i),u=[],d=[];return Object.keys(l).forEach(e=>{let{sheetTransform:n,transform:o,anchorType:f=`0`}=l[e];if(!n||!o)return;let p,m,h;if(t===`insert`){var g;let e=this._expandRow(s,c,{sheetSkeletonParam:a,sheetTransform:n,transform:o,anchorType:f});p=e==null?void 0:e.newSheetTransform,m=e==null?void 0:e.newTransform,h=(g=e==null?void 0:e.axisAlignSheetTransform)==null?void 0:g}else{let{from:t,to:l}=n,{row:u}=t,{row:g}=l;if(f===`1`&&u>=s&&g<=c)d.push({unitId:r,subUnitId:i,drawingId:e});else{var _;let e=this._shrinkRow(s,c,{sheetSkeletonParam:a,sheetTransform:n,transform:o,anchorType:f});p=e==null?void 0:e.newSheetTransform,m=e==null?void 0:e.newTransform,h=(_=e==null?void 0:e.axisAlignSheetTransform)==null?void 0:_}}if(!p||!m)return;let v={unitId:r,subUnitId:i,drawingId:e,transform:m,sheetTransform:p,axisAlignSheetTransform:h};u.push(v)}),this._finalizePlan(r,i,u,d)}_moveColInterceptor(e,t){let n=this._getUnitIdAndSubUnitId(e,t);if(!n)return{redos:[],undos:[]};let{unitId:r,subUnitId:i}=n,a=this._getCalculatedSkeletonParam(r,i);if(!a)return{redos:[],undos:[]};let{range:o}=e,s=o.startColumn,c=o.endColumn,l=this._sheetDrawingService.getDrawingData(r,i),u=[],d=[];return Object.keys(l).forEach(e=>{let{sheetTransform:n,transform:o,anchorType:f=`0`}=l[e];if(!n||!o)return;let p,m,h;if(t===`insert`){var g;let e=this._expandCol(s,c,{sheetSkeletonParam:a,sheetTransform:n,transform:o,anchorType:f});p=e==null?void 0:e.newSheetTransform,m=e==null?void 0:e.newTransform,h=(g=e==null?void 0:e.axisAlignSheetTransform)==null?void 0:g}else{let{from:t,to:l}=n,{column:u}=t,{column:g}=l;if(f===`1`&&u>=s&&g<=c)d.push({unitId:r,subUnitId:i,drawingId:e});else{var _;let e=this._shrinkCol(s,c,{sheetSkeletonParam:a,sheetTransform:n,transform:o,anchorType:f});p=e==null?void 0:e.newSheetTransform,m=e==null?void 0:e.newTransform,h=(_=e==null?void 0:e.axisAlignSheetTransform)==null?void 0:_}}if(!p||!m)return;let v={unitId:r,subUnitId:i,drawingId:e,transform:m,sheetTransform:p,axisAlignSheetTransform:h};u.push(v)}),this._finalizePlan(r,i,u,d)}_expandCol(e,n,r){let{sheetSkeletonParam:i,sheetTransform:c,transform:l,anchorType:u=`0`}=r,{skeleton:d}=i,f=n-e+1,{from:p,to:m}=c,{column:h}=p,{column:g}=m;if(u===`2`)return{newSheetTransform:o({...l},d),newTransform:l,axisAlignSheetTransform:s({...l},d)};let _=null,v=null,y=null;if(h>=e){let r=(0,t.attachRangeWithCoord)(d,{startColumn:e,endColumn:n,startRow:p.row,endRow:m.row});v={...l,left:(l.left||0)+r.endX-r.startX},_=o(v,d),y=s(v,d)}else if(g>=n)if(u===`1`)_={from:{...p},to:{...m,column:g+f}},v=a(_,i);else return{newSheetTransform:o({...l},d),newTransform:l,axisAlignSheetTransform:s({...l},d)};return _&&v?{newSheetTransform:_,newTransform:v,axisAlignSheetTransform:y}:null}_shrinkCol(e,n,r){let{sheetSkeletonParam:i,sheetTransform:c,transform:l,anchorType:u=`0`}=r,{skeleton:d}=i,f=n-e+1,{from:p,to:m}=c,{column:h}=p,{column:g}=m;if(u===`2`)return{newSheetTransform:o({...l},d),newTransform:l,axisAlignSheetTransform:s({...l},d)};let _=null,v=null,y=null;if(h>n)_={from:{...p,column:h-f},to:{...m,column:g-f}},v=a(_,i);else if(h>=e&&g<=n)return null;else if(h<e&&g>n)if(u===`1`)_={from:{...p},to:{...m,column:g-f}},v=a(_,i);else return{newSheetTransform:o({...l},d),newTransform:l,axisAlignSheetTransform:s({...l},d)};else if(h>=e&&h<=n){if(u===`1`)_={from:{...p,column:e,columnOffset:0},to:{...m,column:g-f}},v=a(_,i),y=s(v,d);else if(h===e)v={...l,left:(l.left||0)-c.from.columnOffset};else{let n=(0,t.attachRangeWithCoord)(d,{startColumn:e,endColumn:h-1,startRow:p.row,endRow:m.row});v={...l,left:(l.left||0)-n.endX+n.startX-c.from.columnOffset}}_||(_=o(v,d),y=s(v,d))}else if(g>=e&&g<=n&&u===`1`){let n=(0,t.attachRangeWithCoord)(d,{startColumn:e-1,endColumn:e-1,startRow:p.row,endRow:m.row});_={from:{...p},to:{...m,column:e-1,columnOffset:n.endX-n.startX}},v=a(_,i)}return _&&v?{newSheetTransform:_,newTransform:v,axisAlignSheetTransform:y}:null}_expandRow(e,n,r){let{sheetSkeletonParam:i,sheetTransform:c,transform:l,anchorType:u=`0`}=r,{skeleton:d}=i,f=n-e+1,{from:p,to:m}=c,{row:h}=p,{row:g}=m;if(u===`2`)return{newSheetTransform:o({...l},d),newTransform:l,axisAlignSheetTransform:s({...l},d)};let _=null,v=null,y=null;if(h>=e){let r=(0,t.attachRangeWithCoord)(d,{startRow:e,endRow:n,startColumn:p.column,endColumn:m.column});v={...l,top:(l.top||0)+r.endY-r.startY},_=o(v,d),y=s(v,d)}else if(g>=n)if(u===`1`)_={from:{...p},to:{...m,row:g+f}},v=a(_,i);else return{newSheetTransform:o({...l},d),newTransform:l,axisAlignSheetTransform:s({...l},d)};return _&&v?{newSheetTransform:_,newTransform:v,axisAlignSheetTransform:y}:null}_shrinkRow(e,n,r){let{sheetSkeletonParam:i,sheetTransform:c,transform:l,anchorType:u=`0`}=r,{skeleton:d}=i,f=n-e+1,{from:p,to:m}=c,{row:h}=p,{row:g}=m;if(u===`2`)return{newSheetTransform:o({...l},d),newTransform:l,axisAlignSheetTransform:s({...l},d)};let _=null,v=null,y=null;if(h>n)_={from:{...p,row:h-f},to:{...m,row:g-f}},v=a(_,i);else if(h>=e&&g<=n)return null;else if(h<e&&g>n)if(u===`1`)_={from:{...p},to:{...m,row:g-f}},v=a(_,i);else return{newSheetTransform:o({...l},d),newTransform:l,axisAlignSheetTransform:s({...l},d)};else if(h>=e&&h<=n){if(u===`1`)_={from:{...p,row:e,rowOffset:0},to:{...m,row:g-f}},v=a(_,i),y=s(v,d);else if(h===e)v={...l,top:(l.top||0)-c.from.rowOffset};else{let n=(0,t.attachRangeWithCoord)(d,{startRow:e,endRow:h-1,startColumn:p.column,endColumn:m.column});v={...l,top:(l.top||0)-n.endY+n.startY-c.from.rowOffset}}_||(_=o(v,d),y=s(v,d))}else if(g>=e&&g<=n&&u===`1`){let n=(0,t.attachRangeWithCoord)(d,{startColumn:p.column,endColumn:p.column,startRow:e-1,endRow:e-1});_={from:{...p},to:{...m,row:e-1,rowOffset:n.endY-n.startY}},v=a(_,i)}return _&&v?{newSheetTransform:_,newTransform:v,axisAlignSheetTransform:y}:null}_sheetRefreshListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{R.includes(e.id)&&queueMicrotask(()=>{let n=e.params,r=(0,t.getSheetCommandTarget)(this._univerInstanceService,n);if(!r)return;let{unitId:i,subUnitId:a,worksheet:o}=r,s=[];`ranges`in n?s=n.ranges:`rowsAutoHeightInfo`in n&&(s=n.rowsAutoHeightInfo.map(e=>({startRow:e.row,endRow:e.row,startColumn:0,endColumn:o.getColumnCount()-1}))),this._refreshDrawingTransform(e,i,a,s)})}))}_refreshDrawingTransform(e,t,r,i){var o;let s=this._getCalculatedSkeletonParam(t,r),c=(o=this._drawingManagerService.getDrawingData(t,r))==null?{}:o,l=[];Object.keys(c).forEach(e=>{let t=c[e],{sheetTransform:r,transform:o,anchorType:u=`0`}=t;if(u===`2`||!r)return!0;let{from:d,to:f}=r,{row:p,column:m}=d,{row:h,column:g}=f;for(let e=0;e<i.length;e++){let{startRow:c,endRow:d,startColumn:f,endColumn:_}=i[e];if(n.Rectangle.intersects({startRow:c,endRow:d,startColumn:f,endColumn:_},{startRow:p,endRow:h,startColumn:m,endColumn:g})||p>d||m>_){let e=u===`0`,n=a(r,s);l.push({...t,transform:{...o,left:n==null?void 0:n.left,top:n==null?void 0:n.top,width:e?o==null?void 0:o.width:n==null?void 0:n.width,height:e?o==null?void 0:o.height:n==null?void 0:n.height}});break}}}),this._finalizePlan(t,r,l,[],`refresh`,e)}};z=w([C(0,n.ICommandService),C(1,(0,n.Inject)(t.SheetSkeletonService)),C(2,(0,n.Inject)(t.SheetInterceptorService)),C(3,(0,n.Inject)(t.SheetsSelectionsService)),C(4,u),C(5,r.IDrawingManagerService),C(6,n.IUniverInstanceService),C(7,(0,n.Inject)(I))],z);let B=class extends n.Plugin{constructor(e=A,t,r){super(),this._config=e,this._injector=t,this._configService=r;let{...i}=(0,n.merge)({},A,this._config);this._configService.setConfig(`sheets-drawing.config`,i)}onStarting(){[[D],[I],[z],[u,{useClass:l}]].forEach(e=>this._injector.add(e)),this._injector.get(D),this._injector.get(z)}};P(B,`pluginName`,T),P(B,`packageName`,O),P(B,`version`,k),P(B,`type`,n.UniverInstanceType.UNIVER_SHEET),B=w([(0,n.DependentOn)(r.UniverDrawingPlugin),C(1,(0,n.Inject)(n.Injector)),C(2,n.IConfigService)],B),e.ClearSheetDrawingTransformerOperation=p,e.DrawingApplyType=d,e.ISheetDrawingService=u,e.InsertSheetDrawingCommand=m,e.RemoveSheetDrawingCommand=h,e.SHEET_DRAWING_PLUGIN=T,e.SetDrawingApplyMutation=f,e.SetDrawingArrangeCommand=g,e.SetSheetDrawingCommand=S,e.SheetDrawingAnchorType=c,e.SheetDrawingService=l,e.SheetDrawingTransformPlanService=I,Object.defineProperty(e,"UniverSheetsDrawingPlugin",{enumerable:!0,get:function(){return B}}),e.drawingPositionToTransform=a,e.isKnownSheetNonRotatableDrawingType=_,e.resolveSheetDrawingRotateEnabled=v,e.transformToAxisAlignPosition=s,e.transformToDrawingPosition=o});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/sheets-drawing",
3
- "version": "1.0.0-alpha.6",
3
+ "version": "1.0.0-alpha.7",
4
4
  "private": false,
5
5
  "description": "Drawing model integration for Univer Sheets.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -59,15 +59,15 @@
59
59
  "lib"
60
60
  ],
61
61
  "dependencies": {
62
- "@univerjs/core": "1.0.0-alpha.6",
63
- "@univerjs/drawing": "1.0.0-alpha.6",
64
- "@univerjs/engine-render": "1.0.0-alpha.6",
65
- "@univerjs/sheets": "1.0.0-alpha.6"
62
+ "@univerjs/core": "1.0.0-alpha.7",
63
+ "@univerjs/drawing": "1.0.0-alpha.7",
64
+ "@univerjs/engine-render": "1.0.0-alpha.7",
65
+ "@univerjs/sheets": "1.0.0-alpha.7"
66
66
  },
67
67
  "devDependencies": {
68
68
  "typescript": "^6.0.3",
69
69
  "vitest": "^4.1.10",
70
- "@univerjs-infra/shared": "1.0.0-alpha.6"
70
+ "@univerjs-infra/shared": "1.0.0-alpha.7"
71
71
  },
72
72
  "scripts": {
73
73
  "test": "vitest run",