@univerjs/sheets-drawing 1.1.0 → 1.2.0

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.
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Disposable, ICommandService, IUniverInstanceService } from '@univerjs/core';
16
+ import { Disposable, ICommandService, ILogService, IUniverInstanceService } from '@univerjs/core';
17
17
  import { IDrawingManagerService } from '@univerjs/drawing';
18
18
  import { SheetInterceptorService, SheetSkeletonService } from '@univerjs/sheets';
19
19
  import { SheetDrawingTransformPlanService } from '../services/sheet-drawing-transform-plan.service';
@@ -26,18 +26,16 @@ export declare class SheetDrawingTransformAffectedController extends Disposable
26
26
  private readonly _drawingManagerService;
27
27
  private readonly _univerInstanceService;
28
28
  private readonly _transformPlanService;
29
+ private readonly _logService;
29
30
  private _currentCommand;
30
- constructor(_commandService: ICommandService, _sheetSkeletonService: SheetSkeletonService, _sheetInterceptorService: SheetInterceptorService, _sheetDrawingService: ISheetDrawingService, _drawingManagerService: IDrawingManagerService, _univerInstanceService: IUniverInstanceService, _transformPlanService: SheetDrawingTransformPlanService);
31
+ constructor(_commandService: ICommandService, _sheetSkeletonService: SheetSkeletonService, _sheetInterceptorService: SheetInterceptorService, _sheetDrawingService: ISheetDrawingService, _drawingManagerService: IDrawingManagerService, _univerInstanceService: IUniverInstanceService, _transformPlanService: SheetDrawingTransformPlanService, _logService: ILogService);
31
32
  private _sheetInterceptorListener;
32
33
  private _finalizePlan;
33
34
  private _getCalculatedSkeletonParam;
34
35
  private _createPlanMutations;
35
36
  private _getRangeMoveUndo;
36
37
  private _getUpdateOrDeleteDrawings;
37
- private _remainDrawingSize;
38
- private _getDrawingUndoForColVisible;
39
38
  private _createUndoAndRedoMutation;
40
- private _getDrawingUndoForRowVisible;
41
39
  private _getDrawingUndoForRowAndColSize;
42
40
  private _getUnitIdAndSubUnitId;
43
41
  private _moveRangeInterceptor;
@@ -47,6 +45,10 @@ export declare class SheetDrawingTransformAffectedController extends Disposable
47
45
  private _shrinkCol;
48
46
  private _expandRow;
49
47
  private _shrinkRow;
48
+ private _resolveShiftedPositionDrawing;
49
+ private _getStructuralDrawingResult;
50
+ private _tryRefreshDrawingPlacement;
51
+ private _logSkippedDrawingRefresh;
50
52
  private _sheetRefreshListener;
51
53
  private _refreshDrawingTransform;
52
54
  }
@@ -35,7 +35,7 @@ export { isKnownSheetNonRotatableDrawingType, resolveSheetDrawingRotateEnabled }
35
35
  export type { IUniverSheetsDrawingConfig } from './config/config';
36
36
  export { SHEET_DRAWING_PLUGIN } from './controllers/sheet-drawing.controller';
37
37
  export { UniverSheetsDrawingPlugin } from './plugin';
38
- export { applySheetDrawingPlacement, getSheetDrawingPlacement, normalizeSheetDrawingPlacement, } from './services/sheet-drawing-placement';
38
+ export { applySheetDrawingPlacement, getSheetDrawingPlacement, normalizeSheetDrawingPlacement, refreshSheetDrawingPlacement, } from './services/sheet-drawing-placement';
39
39
  export type { ISheetDrawingAbsolutePlacement, ISheetDrawingOneCellPlacement, ISheetDrawingPlacement, ISheetDrawingPlacementByBounds, ISheetDrawingPlacementInput, ISheetDrawingTwoCellPlacement, } from './services/sheet-drawing-placement';
40
40
  export { SheetDrawingTransformPlanService } from './services/sheet-drawing-transform-plan.service';
41
41
  export type { ISheetDrawingTransformExtension, ISheetDrawingTransformExtensionResult, ISheetDrawingTransformPlan, } from './services/sheet-drawing-transform-plan.service';
@@ -75,12 +75,34 @@ export interface ISheetDrawingPlacementByBounds {
75
75
  * Exact Placement or model-space bounds to normalize into one.
76
76
  */
77
77
  export type ISheetDrawingPlacementInput = ISheetDrawingPlacement | ISheetDrawingPlacementByBounds;
78
+ declare const PLACEMENT_ERROR: {
79
+ readonly CELL_INVALID: "SHEET_DRAWING_PLACEMENT_CELL_INVALID";
80
+ readonly EXTENT_INVALID: "SHEET_DRAWING_PLACEMENT_EXTENT_INVALID";
81
+ readonly KIND_INVALID: "SHEET_DRAWING_PLACEMENT_KIND_INVALID";
82
+ readonly POSITION_INVALID: "SHEET_DRAWING_PLACEMENT_POSITION_INVALID";
83
+ };
84
+ interface ISheetDrawingPlacementFailure {
85
+ ok: false;
86
+ reason: typeof PLACEMENT_ERROR[keyof typeof PLACEMENT_ERROR];
87
+ details?: Record<string, unknown>;
88
+ }
89
+ type SheetDrawingPlacementRefreshResult = {
90
+ ok: true;
91
+ drawing: ISheetDrawing;
92
+ } | ISheetDrawingPlacementFailure;
78
93
  export declare function getSheetDrawingPlacement(drawing: ISheetDrawing): ISheetDrawingPlacement;
79
94
  export declare function applySheetDrawingPlacement(drawing: ISheetImage, input: ISheetDrawingPlacementInput, skeleton?: SpreadsheetSkeleton): ISheetImage;
80
95
  export declare function applySheetDrawingPlacement(drawing: ISheetFloatDom, input: ISheetDrawingPlacementInput, skeleton?: SpreadsheetSkeleton): ISheetFloatDom;
81
96
  export declare function applySheetDrawingPlacement(drawing: ISheetDrawing, input: ISheetDrawingPlacementInput, skeleton?: SpreadsheetSkeleton): ISheetDrawing;
97
+ /** Refresh layout-derived geometry without changing the drawing's anchor semantics. */
98
+ export declare function refreshSheetDrawingPlacement(drawing: ISheetDrawing, skeleton: SpreadsheetSkeleton): ISheetDrawing;
99
+ /** Validate persisted markers before any caller reads them to select a refresh range. */
100
+ export declare function validateSheetDrawingPlacement(drawing: ISheetDrawing): ISheetDrawingPlacementFailure | undefined;
101
+ /** Expected snapshot errors are results; unexpected calculation failures are caught by the task owner. */
102
+ export declare function tryRefreshSheetDrawingPlacement(drawing: ISheetDrawing, skeleton: SpreadsheetSkeleton): SheetDrawingPlacementRefreshResult;
82
103
  /**
83
104
  * Normalize exact markers or model-space bounds to the authoritative
84
105
  * Position, Both, or None Placement.
85
106
  */
86
107
  export declare function normalizeSheetDrawingPlacement(input: ISheetDrawingPlacementInput, skeleton?: SpreadsheetSkeleton): ISheetDrawingPlacement;
108
+ export {};
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=/* @__PURE__ */ 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=/* @__PURE__ */ 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)}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.getRenderUnitById(e))==null||(t=t.scene.getTransformer())==null||t.debounceRefreshControls()}),!0}},m={id:`sheet.command.insert-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(n.ICommandService),a=e.get(n.IUndoRedoService),o=e.get(u),s=e.get(t.SheetInterceptorService),c=r.drawings,{unitId:l,subUnitId:d,undo:h,redo:g,objects:_}=o.getBatchAddOp(c),v=s.onCommandExecute({id:m.id,params:r}),y=[...v.preRedos??[],{id:f.id,params:{unitId:l,subUnitId:d,op:g,objects:_,type:0}},{id:p.id,params:[l]},...v.redos],b=[...v.preUndos??[],{id:f.id,params:{unitId:l,subUnitId:d,op:h,objects:_,type:1}},{id:p.id,params:[l]},...v.undos];return(0,n.sequenceExecute)(y,i).result?(a.pushUndoRedo({unitID:l,undoMutations:b,redoMutations:y}),!0):!1}},h={id:`sheet.command.remove-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(n.ICommandService),a=e.get(n.IUndoRedoService),o=e.get(t.SheetInterceptorService),s=e.get(u),{drawings:c}=r,{unitId:l,subUnitId:d,undo:m,redo:g,objects:_}=s.getBatchRemoveOp(c);if(Array.isArray(_)&&_.length===0)return!1;let v=o.onCommandExecute({id:h.id,params:r}),y=[...v.preRedos??[],{id:f.id,params:{unitId:l,subUnitId:d,op:g,objects:_,type:1}},{id:p.id,params:[l]},...v.redos],b=[...v.preUndos??[],{id:f.id,params:{unitId:l,subUnitId:d,op:m,objects:_,type:0}},{id:p.id,params:[l]},...v.undos];return(0,n.sequenceExecute)(y,i).result?(a.pushUndoRedo({unitID:l,undoMutations:b,redoMutations:y}),!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}=t,l={unitId:o,subUnitId:s,drawingIds:c},d;if(t.zOrder===void 0?t.arrangeType===n.ArrangeTypeEnum.forward?d=a.getForwardDrawingsOp(l):t.arrangeType===n.ArrangeTypeEnum.backward?d=a.getBackwardDrawingOp(l):t.arrangeType===n.ArrangeTypeEnum.front?d=a.getFrontDrawingsOp(l):t.arrangeType===n.ArrangeTypeEnum.back&&(d=a.getBackDrawingsOp(l)):d=a.getDrawingOrderOp(l,t.zOrder),d==null)return!1;let{objects:p,redo:m,undo:h}=d;return r.syncExecuteCommand(f.id,{op:m,unitId:o,subUnitId:s,objects:p,type:3})?(i.pushUndoRedo({unitID:o,undoMutations:[{id:f.id,params:{op:h,unitId:o,subUnitId:s,objects:p,type:3}}],redoMutations:[{id:f.id,params:{op:m,unitId:o,subUnitId:s,objects:p,type:3}}]}),!0):!1}};function _(e){var t,n;let r=e.anchorType??`0`;if(r===`2`){var i,a,o,s;return{kind:`2`,left:((i=e.transform)==null?void 0:i.left)??0,top:((a=e.transform)==null?void 0:a.top)??0,width:((o=e.transform)==null?void 0:o.width)??0,height:((s=e.transform)==null?void 0:s.height)??0}}return r===`1`?{kind:`1`,from:{...e.sheetTransform.from},to:{...e.sheetTransform.to}}:{kind:`0`,from:{...e.sheetTransform.from},width:((t=e.transform)==null?void 0:t.width)??0,height:((n=e.transform)==null?void 0:n.height)??0}}function v(e,r,i){let a=b(r,i,e.drawingType===n.DrawingTypeEnum.DRAWING_IMAGE||e.drawingType===n.DrawingTypeEnum.DRAWING_DOM);if(a.kind===`2`){let t=S(e.transform,a),n=C(a,e.sheetTransform);return{...e,anchorType:`2`,transform:t,sheetTransform:n,axisAlignSheetTransform:n}}if(!i)throw Error(`SHEET_DRAWING_PLACEMENT_SKELETON_REQUIRED`);if(a.kind===`0`){let n=(0,t.convertPositionCellToSheetOverGrid)(e.unitId,e.subUnitId,a.from,a.width,a.height,i),r=x(e.sheetTransform,n.sheetTransform),o=S(e.transform,n.transform);return{...e,anchorType:`0`,sheetTransform:r,transform:o,axisAlignSheetTransform:s(o,i)}}let o=x(e.sheetTransform,{from:a.from,to:a.to}),c=(0,t.convertPositionSheetOverGridToAbsolute)(e.unitId,e.subUnitId,o,i),l=S(e.transform,c);return{...e,anchorType:`1`,sheetTransform:o,transform:l,axisAlignSheetTransform:s(l,i)}}function y(e,t){return b(e,t,!1)}function b(e,n,r){if(!(`bounds`in e))return w(e,r),e.kind===`1`&&n&&T((0,t.convertPositionSheetOverGridToAbsolute)(n.worksheet.getUnitId(),n.worksheet.getSheetId(),{from:e.from,to:e.to},n),r),e;if(T(e.bounds,r),e.kind===`2`)return{kind:`2`,...e.bounds};if(!n)throw Error(`SHEET_DRAWING_PLACEMENT_SKELETON_REQUIRED`);let i=o(e.bounds,n);if(e.kind===`0`)return{kind:`0`,from:i.from,width:e.bounds.width,height:e.bounds.height};if(e.kind===`1`)return{kind:`1`,from:i.from,to:i.to};throw Error(`SHEET_DRAWING_PLACEMENT_KIND_INVALID`)}function x(e,t){return{...e,from:{...t.from},to:{...t.to}}}function S(e,t){return{...e,left:t.left,top:t.top,width:t.width,height:t.height}}function C(e,t){return{...t,from:{column:0,columnOffset:e.left,row:0,rowOffset:e.top},to:{column:0,columnOffset:e.left+e.width,row:0,rowOffset:e.top+e.height}}}function w(e,t){if(e.kind===`0`)E(e.from),D(e.width,e.height,t);else if(e.kind===`1`)E(e.from),E(e.to);else if(e.kind===`2`){if(!Number.isFinite(e.left)||!Number.isFinite(e.top))throw TypeError(`SHEET_DRAWING_PLACEMENT_POSITION_INVALID`);D(e.width,e.height,t)}else throw Error(`SHEET_DRAWING_PLACEMENT_KIND_INVALID`)}function T(e,t){if(!Number.isFinite(e.left)||!Number.isFinite(e.top))throw TypeError(`SHEET_DRAWING_PLACEMENT_POSITION_INVALID`);D(e.width,e.height,t)}function E(e){if(!Number.isInteger(e.row)||!Number.isInteger(e.column)||e.row<0||e.column<0||!Number.isFinite(e.rowOffset)||!Number.isFinite(e.columnOffset))throw Error(`SHEET_DRAWING_PLACEMENT_CELL_INVALID`)}function D(e,t,n){let r=n?e===0||t===0:e===0&&t===0;if(!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<0||r)throw Object.assign(/* @__PURE__ */ Error(`SHEET_DRAWING_PLACEMENT_EXTENT_INVALID`),{width:e,height:t})}let O={id:`sheet.command.set-drawing-placement`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!(r!=null&&r.drawings.length))return!1;let i=e.get(n.ICommandService),a=e.get(n.IUndoRedoService),o=e.get(u),s=r.drawings.every(({placement:e})=>e.kind===`2`)?void 0:e.get(t.SheetSkeletonService).ensureSkeleton(r.unitId,r.subUnitId),c=[];for(let{drawingId:e,placement:t}of r.drawings){let n=o.getDrawingByParam({unitId:r.unitId,subUnitId:r.subUnitId,drawingId:e});if(!n)return!1;c.push(v(n,t,s))}let{unitId:l,subUnitId:d,undo:m,redo:h,objects:g}=o.getBatchUpdateOp(c),_=[{id:f.id,params:{unitId:l,subUnitId:d,op:h,objects:g,type:2}},{id:p.id,params:[l]}],y=[{id:f.id,params:{unitId:l,subUnitId:d,op:m,objects:g,type:2}},{id:p.id,params:[l]}];return(0,n.sequenceExecute)(_,i).result?(a.pushUndoRedo({unitID:l,undoMutations:y,redoMutations:_}),!0):!1}};function k(e){return e===n.DrawingTypeEnum.DRAWING_CHART}function A(e,t,n){return(0,r.resolveDrawingRotateEnabled)(e,{getChildren:e=>(n==null?void 0:n(e))??t.getDrawingsByGroup(e),isKnownNonRotatableType:k})}function j(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 M(e,t){let n=t==null?void 0:t.angle,r={...t??{},...e};return n===void 0?delete r.angle:r.angle=n,r}function N(e,t){var n,r,i;if(!e.drawingId||!e.unitId||!e.subUnitId||!j(e))return e;let a=t.getDrawingByParam({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId});if(!a||A({...a,...e,drawingType:e.drawingType??a.drawingType,transform:{...a.transform,...e.transform}},t))return e;let o={...e};return((n=e.transform)==null?void 0:n.angle)!==void 0&&(o.transform=M(e.transform,a.transform)),((r=e.sheetTransform)==null?void 0:r.angle)!==void 0&&(o.sheetTransform=M(e.sheetTransform,a.sheetTransform)),((i=e.axisAlignSheetTransform)==null?void 0:i.angle)!==void 0&&(o.axisAlignSheetTransform=M(e.axisAlignSheetTransform,a.axisAlignSheetTransform)),o}let P={id:`sheet.command.set-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(n.ICommandService),a=e.get(n.IUndoRedoService),o=e.get(u),s=e.get(t.SheetInterceptorService),{drawings:c}=r,l=c.map(e=>N(e,o)),d={...r,drawings:l},{unitId:m,subUnitId:h,undo:g,redo:_,objects:v}=o.getBatchUpdateOp(l),y=s.onCommandExecute({id:P.id,params:d}),b=[...y.preRedos??[],{id:f.id,params:{unitId:m,subUnitId:h,op:_,objects:v,type:2}},{id:p.id,params:[m]},...y.redos],x=[...y.preUndos??[],{id:f.id,params:{unitId:m,subUnitId:h,op:g,objects:v,type:2}},{id:p.id,params:[m]},...y.undos];return(0,n.sequenceExecute)(b,i).result?(a.pushUndoRedo({unitID:m,undoMutations:x,redoMutations:b}),!0):!1}},F={id:`sheet.mutation.set-worksheet-background-image`,type:n.CommandType.MUTATION,handler:(e,r)=>{let i=(0,t.getSheetCommandTarget)(e.get(n.IUniverInstanceService),r);if(!i)return!1;let a=i.worksheet.getConfig();return r.backgroundImage?a.backgroundImage={...r.backgroundImage}:delete a.backgroundImage,!0}},I={id:`sheet.command.set-worksheet-background-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=(0,t.getSheetCommandTarget)(e.get(n.IUniverInstanceService),r);if(!i)return!1;let{unitId:a,subUnitId:o,worksheet:s}=i,c=s.getConfig().backgroundImage,l=r.backgroundImage;if((c==null?void 0:c.source)===(l==null?void 0:l.source)&&(c==null?void 0:c.imageSourceType)===(l==null?void 0:l.imageSourceType))return!1;let u=e.get(n.ICommandService),d=e.get(n.IUndoRedoService),f={unitId:a,subUnitId:o,backgroundImage:l?{...l}:null},p={unitId:a,subUnitId:o,backgroundImage:c?{...c}:null};return u.syncExecuteCommand(F.id,f)?(d.pushUndoRedo({unitID:a,undoMutations:[{id:F.id,params:p}],redoMutations:[{id:F.id,params:f}]}),!0):!1}};function L(e,t){return function(n,r){t(n,r,e)}}function R(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 z=`SHEET_DRAWING_PLUGIN`;function B(e,t){let n=/* @__PURE__ */ 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 V=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)),this.disposeWithMe(this._commandService.registerCommand(F))}_initCommands(){[P,m,h,g,O,I,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:z,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}}]}}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=B(this._sheetDrawingService.getDrawingData(t,n),this._sheetDrawingService.getDrawingOrder(t,n)),s=(0,r.getOrCreateDrawingCopyPlan)(a,o,{unitId:t,sourceSubUnitId:n,targetSubUnitId:i}).drawings;if(s.length===0)return{redos:[],undos:[]};let{unitId:c,subUnitId:l,undo:u,redo:d,objects:p}=this._sheetDrawingService.getBatchAddOp(s);return{redos:[{id:f.id,params:{op:d,unitId:c,subUnitId:l,objects:p,type:0}}],undos:[{id:f.id,params:{op:u,unitId:c,subUnitId:l,objects:p,type:1}}]}}return{redos:[],undos:[]}}}))}};V=R([L(0,(0,n.Inject)(t.SheetInterceptorService)),L(1,(0,n.Inject)(n.IUniverInstanceService)),L(2,n.ICommandService),L(3,u),L(4,r.IDrawingManagerService),L(5,n.IResourceManagerService)],V);var H=`@univerjs/sheets-drawing`,U=`1.1.0`;let W={};function G(e){"@babel/helpers - typeof";return G=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},G(e)}function K(e,t){if(G(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(G(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function q(e){var t=K(e,`string`);return G(t)==`symbol`?t:t+``}function J(e,t,n){return(t=q(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Y(){return{preRedos:[],redos:[],preUndos:[],undos:[]}}var X=class{constructor(){J(this,`_extensions`,[])}register(e){return this._extensions.push(e),this._extensions.sort((e,t)=>(t.priority??0)-(e.priority??0)),(0,n.toDisposable)(()=>{let t=this._extensions.indexOf(e);t>=0&&this._extensions.splice(t,1)})}transform(e){return this._extensions.reduce((t,n)=>{let r=n.transform(e);return r&&(t.preRedos.push(...r.preRedos??[]),t.redos.push(...r.redos??[]),t.preUndos.push(...r.preUndos??[]),t.undos.push(...r.undos??[])),t},Y())}};let Z=[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],ee=[t.SetRowVisibleMutation.id,t.SetRowHiddenMutation.id,t.SetColVisibleMutation.id,t.SetColHiddenMutation.id,t.SetWorksheetRowHeightMutation.id,t.SetWorksheetRowAutoHeightMutation.id,t.SetWorksheetRowIsAutoHeightMutation.id,t.SetWorksheetColWidthMutation.id],Q=class extends n.Disposable{constructor(e,t,n,r,i,a,o){super(),this._commandService=e,this._sheetSkeletonService=t,this._sheetInterceptorService=n,this._sheetDrawingService=r,this._drawingManagerService=i,this._univerInstanceService=a,this._transformPlanService=o,J(this,`_currentCommand`,{id:``,params:{}}),this._sheetInterceptorListener(),this._sheetRefreshListener()}_sheetInterceptorListener(){this.disposeWithMe(this._sheetInterceptorService.interceptAfterCommand({getMutations:e=>{let{id:n,params:r}=e;if(!Z.includes(n)||!r)return{redos:[],undos:[]};if(this._currentCommand=e,n===t.InsertRowCommand.id)return this._moveRowInterceptor(r,`insert`);if([t.MoveColsCommand.id,t.MoveRowsCommand.id,t.MoveRangeCommand.id].includes(n)){let e;if(n===t.MoveRangeCommand.id){let n=r;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,r);if(!e)return{redos:[],undos:[]};let{unitId:i,subUnitId:a}=e,{fromRange:o,toRange:s}=r;return this._moveRangeInterceptor(i,a,o,s)}if(n===t.InsertColCommand.id)return this._moveColInterceptor(r,`insert`);if(n===t.RemoveRowCommand.id)return this._moveRowInterceptor(r,`remove`);if(n===t.RemoveColCommand.id)return this._moveColInterceptor(r,`remove`);if(n===t.DeleteRangeMoveLeftCommand.id){let{range:e}=r;return this._getRangeMoveUndo(e,0)}if(n===t.DeleteRangeMoveUpCommand.id){let{range:e}=r;return this._getRangeMoveUndo(e,1)}if(n===t.InsertRangeMoveDownCommand.id){let{range:e}=r;return this._getRangeMoveUndo(e,2)}if(n===t.InsertRangeMoveRightCommand.id){let{range:e}=r;return this._getRangeMoveUndo(e,3)}if(n===t.SetRowHiddenCommand.id||n===t.SetSpecificRowsVisibleCommand.id){let{unitId:e,subUnitId:t,ranges:n}=r;return this._getDrawingUndoForRowVisible(e,t,n)}if(n===t.SetColHiddenCommand.id||n===t.SetSpecificColsVisibleCommand.id){let{unitId:e,subUnitId:t,ranges:n}=r;return this._getDrawingUndoForColVisible(e,t,n)}if(n===t.DeltaRowHeightCommand.id||n===t.DeltaColumnWidthCommand.id||n===t.SetRowHeightCommand.id||n===t.SetColWidthCommand.id){let{unitId:e,subUnitId:t,ranges:n}=r;return this._getDrawingUndoForRowAndColSize(e,t,n)}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:/* @__PURE__ */ new Map,deletes:new Set(r.map(({drawingId:e})=>e).filter(e=>!!e))};n.forEach(e=>{if(!e.drawingId)return;let t=c.get(e.drawingId);t&&l.updates.set(e.drawingId,{...t,...e,transform:{...t.transform,...e.transform},sheetTransform:e.sheetTransform??t.sheetTransform,axisAlignSheetTransform:e.axisAlignSheetTransform??t.axisAlignSheetTransform})});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(s===`2`||!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{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==null?void 0:e.axisAlignSheetTransform)??void 0}}else if(t===1&&g>=x&&v<=S){if(h>=y&&_<=b)i.push({unitId:l,subUnitId:u,drawingId:d});else{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=(e==null?void 0:e.axisAlignSheetTransform)??void 0}}else if(t===2){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=(e==null?void 0:e.axisAlignSheetTransform)??void 0}else if(t===3){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=(e==null?void 0:e.axisAlignSheetTransform)??void 0}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}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}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{row:e,column:o}=c.to;for(let l=0;l<n.length;l++){let{startRow:d,startColumn:f}=n[l];if(e<d||o<f)continue;if(u===`0`){s.push(v(t,_(t),i));break}let p=a({...c},r);if(p){s.push({...t,transform:p});break}}}}),s.length===0?{redos:[],undos:[]}:this._createUndoAndRedoMutation(e,t,s)}_getUnitIdAndSubUnitId(e){let n=(0,t.getSheetCommandTarget)(this._univerInstanceService,e);if(!n)return;let{unitId:r,subUnitId:i}=n;return{unitId:r,subUnitId:i}}_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);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`){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=(e==null?void 0:e.axisAlignSheetTransform)??void 0}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{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)??void 0}}if(!p||!m)return;let g={unitId:r,subUnitId:i,drawingId:e,transform:m,sheetTransform:p,axisAlignSheetTransform:h};u.push(g)}),this._finalizePlan(r,i,u,d)}_moveColInterceptor(e,t){let n=this._getUnitIdAndSubUnitId(e);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`){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=(e==null?void 0:e.axisAlignSheetTransform)??void 0}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{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)??void 0}}if(!p||!m)return;let g={unitId:r,subUnitId:i,drawingId:e,transform:m,sheetTransform:p,axisAlignSheetTransform:h};u.push(g)}),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=>{ee.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){let o=this._getCalculatedSkeletonParam(t,r);if(!o)return;let s=this._drawingManagerService.getDrawingData(t,r)??{},c=[];Object.keys(s).forEach(e=>{let t=s[e],{sheetTransform:r,transform:l,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:s,endRow:d,startColumn:f,endColumn:y}=i[e];if(n.Rectangle.intersects({startRow:s,endRow:d,startColumn:f,endColumn:y},{startRow:p,endRow:h,startColumn:m,endColumn:g})||p>d||m>y){if(u===`0`){c.push(v(t,_(t),o.skeleton));break}let e=a(r,o);c.push({...t,transform:{...l,left:e==null?void 0:e.left,top:e==null?void 0:e.top,width:e==null?void 0:e.width,height:e==null?void 0:e.height}});break}}}),this._finalizePlan(t,r,c,[],`refresh`,e)}};Q=R([L(0,n.ICommandService),L(1,(0,n.Inject)(t.SheetSkeletonService)),L(2,(0,n.Inject)(t.SheetInterceptorService)),L(3,u),L(4,r.IDrawingManagerService),L(5,n.IUniverInstanceService),L(6,(0,n.Inject)(X))],Q);let $=class extends n.Plugin{constructor(e=W,t,r){super(),this._config=e,this._injector=t,this._configService=r;let{...i}=(0,n.merge)({},W,this._config);this._configService.setConfig(`sheets-drawing.config`,i)}onStarting(){[[V],[X],[Q],[u,{useClass:l}]].forEach(e=>this._injector.add(e)),this._injector.get(V),this._injector.get(Q)}};J($,`pluginName`,z),J($,`packageName`,H),J($,`version`,U),J($,`type`,n.UniverInstanceType.UNIVER_SHEET),$=R([(0,n.DependentOn)(r.UniverDrawingPlugin,t.UniverSheetsPlugin),L(1,(0,n.Inject)(n.Injector)),L(2,n.IConfigService)],$),e.ClearSheetDrawingTransformerOperation=p,e.DrawingApplyType=d,e.ISheetDrawingService=u,e.InsertSheetDrawingCommand=m,e.RemoveSheetDrawingCommand=h,e.SHEET_DRAWING_PLUGIN=z,e.SetDrawingApplyMutation=f,e.SetDrawingArrangeCommand=g,e.SetSheetDrawingCommand=P,e.SetSheetDrawingPlacementCommand=O,e.SetWorksheetBackgroundImageCommand=I,e.SetWorksheetBackgroundImageMutation=F,e.SheetDrawingAnchorType=c,e.SheetDrawingService=l,e.SheetDrawingTransformPlanService=X,Object.defineProperty(e,"UniverSheetsDrawingPlugin",{enumerable:!0,get:function(){return $}}),e.applySheetDrawingPlacement=v,e.drawingPositionToTransform=a,e.getSheetDrawingPlacement=_,e.isKnownSheetNonRotatableDrawingType=k,e.normalizeSheetDrawingPlacement=y,e.resolveSheetDrawingRotateEnabled=A,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,1,1,{x:0,y:0}),to:t.getCellIndexAndOffsetByPosition(n+i,r+a,1,1,{x:0,y:0})}}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=/* @__PURE__ */ 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=/* @__PURE__ */ 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)}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.getRenderUnitById(e))==null||(t=t.scene.getTransformer())==null||t.debounceRefreshControls()}),!0}},m={id:`sheet.command.insert-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(n.ICommandService),a=e.get(n.IUndoRedoService),o=e.get(u),s=e.get(t.SheetInterceptorService),c=r.drawings,{unitId:l,subUnitId:d,undo:h,redo:g,objects:_}=o.getBatchAddOp(c),v=s.onCommandExecute({id:m.id,params:r}),y=[...v.preRedos??[],{id:f.id,params:{unitId:l,subUnitId:d,op:g,objects:_,type:0}},{id:p.id,params:[l]},...v.redos],b=[...v.preUndos??[],{id:f.id,params:{unitId:l,subUnitId:d,op:h,objects:_,type:1}},{id:p.id,params:[l]},...v.undos];return(0,n.sequenceExecute)(y,i).result?(a.pushUndoRedo({unitID:l,undoMutations:b,redoMutations:y}),!0):!1}},h={id:`sheet.command.remove-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(n.ICommandService),a=e.get(n.IUndoRedoService),o=e.get(t.SheetInterceptorService),s=e.get(u),{drawings:c}=r,{unitId:l,subUnitId:d,undo:m,redo:g,objects:_}=s.getBatchRemoveOp(c);if(Array.isArray(_)&&_.length===0)return!1;let v=o.onCommandExecute({id:h.id,params:r}),y=[...v.preRedos??[],{id:f.id,params:{unitId:l,subUnitId:d,op:g,objects:_,type:1}},{id:p.id,params:[l]},...v.redos],b=[...v.preUndos??[],{id:f.id,params:{unitId:l,subUnitId:d,op:m,objects:_,type:0}},{id:p.id,params:[l]},...v.undos];return(0,n.sequenceExecute)(y,i).result?(a.pushUndoRedo({unitID:l,undoMutations:b,redoMutations:y}),!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}=t,l={unitId:o,subUnitId:s,drawingIds:c},d;if(t.zOrder===void 0?t.arrangeType===n.ArrangeTypeEnum.forward?d=a.getForwardDrawingsOp(l):t.arrangeType===n.ArrangeTypeEnum.backward?d=a.getBackwardDrawingOp(l):t.arrangeType===n.ArrangeTypeEnum.front?d=a.getFrontDrawingsOp(l):t.arrangeType===n.ArrangeTypeEnum.back&&(d=a.getBackDrawingsOp(l)):d=a.getDrawingOrderOp(l,t.zOrder),d==null)return!1;let{objects:p,redo:m,undo:h}=d;return r.syncExecuteCommand(f.id,{op:m,unitId:o,subUnitId:s,objects:p,type:3})?(i.pushUndoRedo({unitID:o,undoMutations:[{id:f.id,params:{op:h,unitId:o,subUnitId:s,objects:p,type:3}}],redoMutations:[{id:f.id,params:{op:m,unitId:o,subUnitId:s,objects:p,type:3}}]}),!0):!1}},_={CELL_INVALID:`SHEET_DRAWING_PLACEMENT_CELL_INVALID`,EXTENT_INVALID:`SHEET_DRAWING_PLACEMENT_EXTENT_INVALID`,KIND_INVALID:`SHEET_DRAWING_PLACEMENT_KIND_INVALID`,POSITION_INVALID:`SHEET_DRAWING_PLACEMENT_POSITION_INVALID`};function v(e){var t,n;let r=e.anchorType??`0`;if(r===`2`){var i,a,o,s;return{kind:`2`,left:((i=e.transform)==null?void 0:i.left)??0,top:((a=e.transform)==null?void 0:a.top)??0,width:((o=e.transform)==null?void 0:o.width)??0,height:((s=e.transform)==null?void 0:s.height)??0}}return r===`1`?{kind:`1`,from:{...e.sheetTransform.from},to:{...e.sheetTransform.to}}:{kind:`0`,from:{...e.sheetTransform.from},width:((t=e.transform)==null?void 0:t.width)??0,height:((n=e.transform)==null?void 0:n.height)??0}}function y(e,t,n){return w(e,E(t,n,C(e)),n)}function b(e,t){let n=S(e,t);if(!n.ok)throw F(n);return n.drawing}function x(e){var t,n;if(!e||typeof e!=`object`)return{ok:!1,reason:_.KIND_INVALID};let r=e.anchorType??`0`;return r===`2`?void 0:r!==`0`&&r!==`1`?{ok:!1,reason:_.KIND_INVALID}:(M((t=e.sheetTransform)==null?void 0:t.from)??M((n=e.sheetTransform)==null?void 0:n.to))||A(v(e),C(e))}function S(e,t){var n,r;let i=x(e);if(i)return i;if(e.anchorType===`2`)return{ok:!0,drawing:e};let a=w(e,v(e),t);return N(((n=a.transform)==null?void 0:n.width)??0,((r=a.transform)==null?void 0:r.height)??0,C(e),!0)||{ok:!0,drawing:{...e,sheetTransform:a.sheetTransform,transform:a.transform,axisAlignSheetTransform:a.axisAlignSheetTransform}}}function C(e){return e.drawingType===n.DrawingTypeEnum.DRAWING_IMAGE||e.drawingType===n.DrawingTypeEnum.DRAWING_DOM}function w(e,n,r){if(n.kind===`2`){let t=O(e.transform,n),r=k(n,e.sheetTransform);return{...e,anchorType:`2`,transform:t,sheetTransform:r,axisAlignSheetTransform:r}}if(!r)throw Error(`SHEET_DRAWING_PLACEMENT_SKELETON_REQUIRED`);if(n.kind===`0`){let i=(0,t.convertPositionCellToSheetOverGrid)(e.unitId,e.subUnitId,T(n.from,r),n.width,n.height,r),a=D(e.sheetTransform,{from:n.from,to:i.sheetTransform.to}),o=O(e.transform,i.transform);return{...e,anchorType:`0`,sheetTransform:a,transform:o,axisAlignSheetTransform:D(e.axisAlignSheetTransform,s(o,r))}}let i=D(e.sheetTransform,{from:n.from,to:n.to}),a=(0,t.convertPositionSheetOverGridToAbsolute)(e.unitId,e.subUnitId,{from:T(n.from,r),to:T(n.to,r)},r),o=O(e.transform,a);return{...e,anchorType:`1`,sheetTransform:i,transform:o,axisAlignSheetTransform:D(e.axisAlignSheetTransform,s(o,r))}}function T(e,t){let n=t.getNoMergeCellWithCoordByIndex(e.row,e.column);return{...e,columnOffset:n.startX===n.endX?0:e.columnOffset,rowOffset:n.startY===n.endY?0:e.rowOffset}}function ee(e,t){return E(e,t,!1)}function E(e,n,r){if(!(`bounds`in e))return P(A(e,r)),e.kind===`1`&&n&&P(j((0,t.convertPositionSheetOverGridToAbsolute)(n.worksheet.getUnitId(),n.worksheet.getSheetId(),{from:e.from,to:e.to},n),r)),e;if(P(j(e.bounds,r)),e.kind===`2`)return{kind:`2`,...e.bounds};if(!n)throw Error(`SHEET_DRAWING_PLACEMENT_SKELETON_REQUIRED`);let i=o(e.bounds,n);if(e.kind===`0`)return{kind:`0`,from:i.from,width:e.bounds.width,height:e.bounds.height};if(e.kind===`1`)return{kind:`1`,from:i.from,to:i.to};throw Error(_.KIND_INVALID)}function D(e,t){return{...e,from:{...t.from},to:{...t.to}}}function O(e,t){return{...e,left:t.left,top:t.top,width:t.width,height:t.height}}function k(e,t){return{...t,from:{column:0,columnOffset:e.left,row:0,rowOffset:e.top},to:{column:0,columnOffset:e.left+e.width,row:0,rowOffset:e.top+e.height}}}function A(e,t){return e.kind===`0`?M(e.from)??N(e.width,e.height,t):e.kind===`1`?M(e.from)??M(e.to):e.kind===`2`?!Number.isFinite(e.left)||!Number.isFinite(e.top)?{ok:!1,reason:_.POSITION_INVALID}:N(e.width,e.height,t):{ok:!1,reason:_.KIND_INVALID}}function j(e,t){return!e||!Number.isFinite(e.left)||!Number.isFinite(e.top)?{ok:!1,reason:_.POSITION_INVALID}:N(e.width,e.height,t)}function M(e){if(!e||!Number.isInteger(e.row)||!Number.isInteger(e.column)||e.row<0||e.column<0||!Number.isFinite(e.rowOffset)||!Number.isFinite(e.columnOffset))return{ok:!1,reason:_.CELL_INVALID}}function N(e,t,n,r=!1){let i=!r&&(n?e===0||t===0:e===0&&t===0);if(!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<0||i)return{ok:!1,reason:_.EXTENT_INVALID,details:{width:e,height:t}}}function P(e){if(e)throw F(e)}function F(e){let t=e.reason===_.POSITION_INVALID?TypeError(e.reason):Error(e.reason);return Object.assign(t,e.details)}let I={id:`sheet.command.set-drawing-placement`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!(r!=null&&r.drawings.length))return!1;let i=e.get(n.ICommandService),a=e.get(n.IUndoRedoService),o=e.get(u),s=r.drawings.every(({placement:e})=>e.kind===`2`)?void 0:e.get(t.SheetSkeletonService).ensureSkeleton(r.unitId,r.subUnitId),c=[];for(let{drawingId:e,placement:t}of r.drawings){let n=o.getDrawingByParam({unitId:r.unitId,subUnitId:r.subUnitId,drawingId:e});if(!n)return!1;c.push(y(n,t,s))}let{unitId:l,subUnitId:d,undo:m,redo:h,objects:g}=o.getBatchUpdateOp(c),_=[{id:f.id,params:{unitId:l,subUnitId:d,op:h,objects:g,type:2}},{id:p.id,params:[l]}],v=[{id:f.id,params:{unitId:l,subUnitId:d,op:m,objects:g,type:2}},{id:p.id,params:[l]}];return(0,n.sequenceExecute)(_,i).result?(a.pushUndoRedo({unitID:l,undoMutations:v,redoMutations:_}),!0):!1}};function L(e){return e===n.DrawingTypeEnum.DRAWING_CHART}function R(e,t,n){return(0,r.resolveDrawingRotateEnabled)(e,{getChildren:e=>(n==null?void 0:n(e))??t.getDrawingsByGroup(e),isKnownNonRotatableType:L})}function te(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 z(e,t){let n=t==null?void 0:t.angle,r={...t??{},...e};return n===void 0?delete r.angle:r.angle=n,r}function ne(e,t){var n,r,i;if(!e.drawingId||!e.unitId||!e.subUnitId||!te(e))return e;let a=t.getDrawingByParam({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId});if(!a||R({...a,...e,drawingType:e.drawingType??a.drawingType,transform:{...a.transform,...e.transform}},t))return e;let o={...e};return((n=e.transform)==null?void 0:n.angle)!==void 0&&(o.transform=z(e.transform,a.transform)),((r=e.sheetTransform)==null?void 0:r.angle)!==void 0&&(o.sheetTransform=z(e.sheetTransform,a.sheetTransform)),((i=e.axisAlignSheetTransform)==null?void 0:i.angle)!==void 0&&(o.axisAlignSheetTransform=z(e.axisAlignSheetTransform,a.axisAlignSheetTransform)),o}let B={id:`sheet.command.set-sheet-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(n.ICommandService),a=e.get(n.IUndoRedoService),o=e.get(u),s=e.get(t.SheetInterceptorService),{drawings:c}=r,l=c.map(e=>ne(e,o)),d={...r,drawings:l},{unitId:m,subUnitId:h,undo:g,redo:_,objects:v}=o.getBatchUpdateOp(l),y=s.onCommandExecute({id:B.id,params:d}),b=[...y.preRedos??[],{id:f.id,params:{unitId:m,subUnitId:h,op:_,objects:v,type:2}},{id:p.id,params:[m]},...y.redos],x=[...y.preUndos??[],{id:f.id,params:{unitId:m,subUnitId:h,op:g,objects:v,type:2}},{id:p.id,params:[m]},...y.undos];return(0,n.sequenceExecute)(b,i).result?(a.pushUndoRedo({unitID:m,undoMutations:x,redoMutations:b}),!0):!1}},V={id:`sheet.mutation.set-worksheet-background-image`,type:n.CommandType.MUTATION,handler:(e,r)=>{let i=(0,t.getSheetCommandTarget)(e.get(n.IUniverInstanceService),r);if(!i)return!1;let a=i.worksheet.getConfig();return r.backgroundImage?a.backgroundImage={...r.backgroundImage}:delete a.backgroundImage,!0}},H={id:`sheet.command.set-worksheet-background-image`,type:n.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=(0,t.getSheetCommandTarget)(e.get(n.IUniverInstanceService),r);if(!i)return!1;let{unitId:a,subUnitId:o,worksheet:s}=i,c=s.getConfig().backgroundImage,l=r.backgroundImage;if((c==null?void 0:c.source)===(l==null?void 0:l.source)&&(c==null?void 0:c.imageSourceType)===(l==null?void 0:l.imageSourceType))return!1;let u=e.get(n.ICommandService),d=e.get(n.IUndoRedoService),f={unitId:a,subUnitId:o,backgroundImage:l?{...l}:null},p={unitId:a,subUnitId:o,backgroundImage:c?{...c}:null};return u.syncExecuteCommand(V.id,f)?(d.pushUndoRedo({unitID:a,undoMutations:[{id:V.id,params:p}],redoMutations:[{id:V.id,params:f}]}),!0):!1}};function U(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 G=`SHEET_DRAWING_PLUGIN`;function K(e,t){let n=/* @__PURE__ */ 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 q=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)),this.disposeWithMe(this._commandService.registerCommand(V))}_initCommands(){[B,m,h,g,I,H,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:G,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}}]}}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=K(this._sheetDrawingService.getDrawingData(t,n),this._sheetDrawingService.getDrawingOrder(t,n)),s=(0,r.getOrCreateDrawingCopyPlan)(a,o,{unitId:t,sourceSubUnitId:n,targetSubUnitId:i}).drawings;if(s.length===0)return{redos:[],undos:[]};let{unitId:c,subUnitId:l,undo:u,redo:d,objects:p}=this._sheetDrawingService.getBatchAddOp(s);return{redos:[{id:f.id,params:{op:d,unitId:c,subUnitId:l,objects:p,type:0}}],undos:[{id:f.id,params:{op:u,unitId:c,subUnitId:l,objects:p,type:1}}]}}return{redos:[],undos:[]}}}))}};q=W([U(0,(0,n.Inject)(t.SheetInterceptorService)),U(1,(0,n.Inject)(n.IUniverInstanceService)),U(2,n.ICommandService),U(3,u),U(4,r.IDrawingManagerService),U(5,n.IResourceManagerService)],q);var re=`@univerjs/sheets-drawing`,ie=`1.2.0`;let J={};function Y(e){"@babel/helpers - typeof";return Y=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},Y(e)}function ae(e,t){if(Y(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(Y(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function oe(e){var t=ae(e,`string`);return Y(t)==`symbol`?t:t+``}function X(e,t,n){return(t=oe(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function se(){return{preRedos:[],redos:[],preUndos:[],undos:[]}}var Z=class{constructor(){X(this,`_extensions`,[])}register(e){return this._extensions.push(e),this._extensions.sort((e,t)=>(t.priority??0)-(e.priority??0)),(0,n.toDisposable)(()=>{let t=this._extensions.indexOf(e);t>=0&&this._extensions.splice(t,1)})}transform(e){return this._extensions.reduce((t,n)=>{let r=n.transform(e);return r&&(t.preRedos.push(...r.preRedos??[]),t.redos.push(...r.redos??[]),t.preUndos.push(...r.preUndos??[]),t.undos.push(...r.undos??[])),t},se())}};let ce=[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],le=[t.SetRowVisibleMutation.id,t.SetRowHiddenMutation.id,t.SetColVisibleMutation.id,t.SetColHiddenMutation.id,t.SetWorksheetRowHeightMutation.id,t.SetWorksheetRowAutoHeightMutation.id,t.SetWorksheetRowIsAutoHeightMutation.id,t.SetWorksheetColWidthMutation.id],Q=class extends n.Disposable{constructor(e,t,n,r,i,a,o,s){super(),this._commandService=e,this._sheetSkeletonService=t,this._sheetInterceptorService=n,this._sheetDrawingService=r,this._drawingManagerService=i,this._univerInstanceService=a,this._transformPlanService=o,this._logService=s,X(this,`_currentCommand`,{id:``,params:{}}),this._sheetInterceptorListener(),this._sheetRefreshListener()}_sheetInterceptorListener(){this.disposeWithMe(this._sheetInterceptorService.interceptAfterCommand({getMutations:e=>{let{id:n,params:r}=e;if(!ce.includes(n)||!r)return{redos:[],undos:[]};if(this._currentCommand=e,n===t.InsertRowCommand.id)return this._moveRowInterceptor(r,`insert`);if([t.MoveColsCommand.id,t.MoveRowsCommand.id,t.MoveRangeCommand.id].includes(n)){let e;if(n===t.MoveRangeCommand.id){let n=r;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,r);if(!e)return{redos:[],undos:[]};let{unitId:i,subUnitId:a}=e,{fromRange:o,toRange:s}=r;return this._moveRangeInterceptor(i,a,o,s)}if(n===t.InsertColCommand.id)return this._moveColInterceptor(r,`insert`);if(n===t.RemoveRowCommand.id)return this._moveRowInterceptor(r,`remove`);if(n===t.RemoveColCommand.id)return this._moveColInterceptor(r,`remove`);if(n===t.DeleteRangeMoveLeftCommand.id){let{range:e}=r;return this._getRangeMoveUndo(e,0)}if(n===t.DeleteRangeMoveUpCommand.id){let{range:e}=r;return this._getRangeMoveUndo(e,1)}if(n===t.InsertRangeMoveDownCommand.id){let{range:e}=r;return this._getRangeMoveUndo(e,2)}if(n===t.InsertRangeMoveRightCommand.id){let{range:e}=r;return this._getRangeMoveUndo(e,3)}if(n===t.SetRowHiddenCommand.id||n===t.SetSpecificRowsVisibleCommand.id||n===t.SetColHiddenCommand.id||n===t.SetSpecificColsVisibleCommand.id||n===t.DeltaRowHeightCommand.id||n===t.DeltaColumnWidthCommand.id||n===t.SetRowHeightCommand.id||n===t.SetColWidthCommand.id){let{unitId:e,subUnitId:t,ranges:n}=r;return this._getDrawingUndoForRowAndColSize(e,t,n)}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:/* @__PURE__ */ new Map,deletes:new Set(r.map(({drawingId:e})=>e).filter(e=>!!e))};n.forEach(e=>{if(!e.drawingId)return;let t=c.get(e.drawingId);t&&l.updates.set(e.drawingId,{...t,...e,transform:{...t.transform,...e.transform},sheetTransform:e.sheetTransform??t.sheetTransform,axisAlignSheetTransform:e.axisAlignSheetTransform??t.axisAlignSheetTransform})});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:a,anchorType:o=`0`,transform:s,unitId:c,subUnitId:l,drawingId:u}=n,d=this._sheetSkeletonService.getSkeletonParam(c,l);if(o===`2`||!a||!s||!d)return{updateDrawings:r,deleteDrawings:i};let{from:f,to:p}=a,{row:m,column:h}=f,{row:g,column:_}=p,{startRow:v,endRow:y,startColumn:b,endColumn:x}=e,S=null,C=null,w;if(t===0&&m>=v&&g<=y){if(h>=b&&_<=x)i.push({unitId:c,subUnitId:l,drawingId:u});else{let e=this._shrinkCol(b,x,{sheetSkeletonParam:d,sheetTransform:a,transform:s,anchorType:o});S=e==null?void 0:e.newSheetTransform,C=e==null?void 0:e.newTransform,w=(e==null?void 0:e.axisAlignSheetTransform)??void 0}}else if(t===1&&h>=b&&_<=x){if(m>=v&&g<=y)i.push({unitId:c,subUnitId:l,drawingId:u});else{let e=this._shrinkRow(v,y,{sheetSkeletonParam:d,sheetTransform:a,transform:s,anchorType:o});S=e==null?void 0:e.newSheetTransform,C=e==null?void 0:e.newTransform,w=(e==null?void 0:e.axisAlignSheetTransform)??void 0}}else if(t===2){let e=this._expandRow(v,y,{sheetSkeletonParam:d,sheetTransform:a,transform:s,anchorType:o});S=e==null?void 0:e.newSheetTransform,C=e==null?void 0:e.newTransform,w=(e==null?void 0:e.axisAlignSheetTransform)??void 0}else if(t===3){let e=this._expandCol(b,x,{sheetSkeletonParam:d,sheetTransform:a,transform:s,anchorType:o});S=e==null?void 0:e.newSheetTransform,C=e==null?void 0:e.newTransform,w=(e==null?void 0:e.axisAlignSheetTransform)??void 0}return S&&C&&r.push({...n,sheetTransform:S,transform:C,axisAlignSheetTransform:w}),{updateDrawings:r,deleteDrawings:i}}_createUndoAndRedoMutation(e,t,n){return this._finalizePlan(e,t,n)}_getDrawingUndoForRowAndColSize(e,t,n){let r=this._getCalculatedSkeletonParam(e,t);if(!r)return{redos:[],undos:[]};let{skeleton:i}=r,a=this._drawingManagerService.getDrawingData(e,t),o=[];return Object.keys(a).forEach(e=>{let t=a[e];if((t==null?void 0:t.anchorType)===`2`)return;let r=this._tryRefreshDrawingPlacement(t,i,this._currentCommand.id,({to:e})=>n.some(({startRow:t,startColumn:n})=>e.row>=t&&e.column>=n));r&&o.push(r)}),o.length===0?{redos:[],undos:[]}:this._createUndoAndRedoMutation(e,t,o)}_getUnitIdAndSubUnitId(e){let n=(0,t.getSheetCommandTarget)(this._univerInstanceService,e);if(!n)return;let{unitId:r,subUnitId:i}=n;return{unitId:r,subUnitId:i}}_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);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`){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=(e==null?void 0:e.axisAlignSheetTransform)??void 0}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{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)??void 0}}if(!p||!m)return;let g={unitId:r,subUnitId:i,drawingId:e,transform:m,sheetTransform:p,axisAlignSheetTransform:h};u.push(g)}),this._finalizePlan(r,i,u,d)}_moveColInterceptor(e,t){let n=this._getUnitIdAndSubUnitId(e);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`){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=(e==null?void 0:e.axisAlignSheetTransform)??void 0}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{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)??void 0}}if(!p||!m)return;let g={unitId:r,subUnitId:i,drawingId:e,transform:m,sheetTransform:p,axisAlignSheetTransform:h};u.push(g)}),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>=e){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 this._getStructuralDrawingResult(_,v,y,d)}_shrinkCol(e,t,n){let{sheetSkeletonParam:r,sheetTransform:i,transform:c,anchorType:l=`0`}=n,{skeleton:u}=r,d=t-e+1,{from:f,to:p}=i,{column:m}=f,{column:h}=p;if(l===`2`)return{newSheetTransform:o({...c},u),newTransform:c,axisAlignSheetTransform:s({...c},u)};let g=null,_=null,v=null;if(m>t){if(g={from:{...f,column:m-d},to:{...p,column:h-d}},l===`0`)return this._resolveShiftedPositionDrawing(g,c,r);_=a(g,r)}else if(l===`1`&&m>=e&&h<=t)return null;else if(m<e&&h>t){if(l===`1`)g={from:{...f},to:{...p,column:h-d}},_=a(g,r);else return{newSheetTransform:o({...c},u),newTransform:c,axisAlignSheetTransform:s({...c},u)}}else if(m>=e&&m<=t){if(l===`1`)g={from:{...f,column:e,columnOffset:0},to:{...p,column:h-d}},_=a(g,r),v=s(_,u);else return this._resolveShiftedPositionDrawing({...i,from:{...f,column:e,columnOffset:0}},c,r)}else if(h>=e&&h<=t&&l===`1`){let t=Math.min(e,u.worksheet.getColumnCount()-1),n=u.getNoMergeCellWithCoordByIndex(f.row,t);g={from:{...f},to:{...p,column:t,columnOffset:t<e?n.endX-n.startX:0}},_=a(g,r)}return this._getStructuralDrawingResult(g,_,v,u)}_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>=e){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 this._getStructuralDrawingResult(_,v,y,d)}_shrinkRow(e,t,n){let{sheetSkeletonParam:r,sheetTransform:i,transform:c,anchorType:l=`0`}=n,{skeleton:u}=r,d=t-e+1,{from:f,to:p}=i,{row:m}=f,{row:h}=p;if(l===`2`)return{newSheetTransform:o({...c},u),newTransform:c,axisAlignSheetTransform:s({...c},u)};let g=null,_=null,v=null;if(m>t){if(g={from:{...f,row:m-d},to:{...p,row:h-d}},l===`0`)return this._resolveShiftedPositionDrawing(g,c,r);_=a(g,r)}else if(l===`1`&&m>=e&&h<=t)return null;else if(m<e&&h>t){if(l===`1`)g={from:{...f},to:{...p,row:h-d}},_=a(g,r);else return{newSheetTransform:o({...c},u),newTransform:c,axisAlignSheetTransform:s({...c},u)}}else if(m>=e&&m<=t){if(l===`1`)g={from:{...f,row:e,rowOffset:0},to:{...p,row:h-d}},_=a(g,r),v=s(_,u);else return this._resolveShiftedPositionDrawing({...i,from:{...f,row:e,rowOffset:0}},c,r)}else if(h>=e&&h<=t&&l===`1`){let t=Math.min(e,u.worksheet.getRowCount()-1),n=u.getNoMergeCellWithCoordByIndex(t,f.column);g={from:{...f},to:{...p,row:t,rowOffset:t<e?n.endY-n.startY:0}},_=a(g,r)}return this._getStructuralDrawingResult(g,_,v,u)}_resolveShiftedPositionDrawing(e,n,{unitId:r,sheetId:i,skeleton:a}){let s=(0,t.convertPositionCellToSheetOverGrid)(r,i,e.from,n.width??0,n.height??0,a),c={...n,...s.transform};return this._getStructuralDrawingResult({...e,...o(c,a)},c,null,a)}_getStructuralDrawingResult(e,t,n,r){if(!e||!t)return null;let{left:i=0,top:a=0,width:o=0,height:c=0}=t;return![i,a,o,c].every(Number.isFinite)||o<0||c<0||[e.from,e.to].some(({row:e,column:t,rowOffset:n,columnOffset:r})=>!Number.isInteger(e)||!Number.isInteger(t)||e<0||t<0||!Number.isFinite(n)||!Number.isFinite(r))?null:{newSheetTransform:e,newTransform:t,axisAlignSheetTransform:n??s(t,r)}}_tryRefreshDrawingPlacement(e,t,n,r){try{let i=x(e);if(i){this._logSkippedDrawingRefresh(e,n,i);return}if(r&&!r(e.sheetTransform))return;let a=S(e,t);if(a.ok)return a.drawing;this._logSkippedDrawingRefresh(e,n,a)}catch(t){this._logSkippedDrawingRefresh(e,n,t)}}_logSkippedDrawingRefresh(e,t,n){this._logService.warn(`[SheetDrawingTransformAffectedController]`,`Skipping drawing placement refresh`,{unitId:e==null?void 0:e.unitId,subUnitId:e==null?void 0:e.subUnitId,drawingId:e==null?void 0:e.drawingId,commandId:t,transform:e==null?void 0:e.transform,sheetTransform:e==null?void 0:e.sheetTransform,failure:n})}_sheetRefreshListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{le.includes(e.id)&&queueMicrotask(()=>{if(!this._disposed)try{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)}catch(t){this._logService.error(`[SheetDrawingTransformAffectedController]`,`Drawing layout refresh failed`,{commandId:e.id,params:e.params,error:t})}})}))}_refreshDrawingTransform(e,t,r,i){let a=this._getCalculatedSkeletonParam(t,r);if(!a)return;let o=this._drawingManagerService.getDrawingData(t,r)??{},s=[];Object.keys(o).forEach(t=>{let r=o[t];if((r==null?void 0:r.anchorType)===`2`)return;let c=this._tryRefreshDrawingPlacement(r,a.skeleton,e.id,({from:e,to:t})=>{let{row:r,column:a}=e,{row:o,column:s}=t;return i.some(e=>{let{startRow:t,endRow:i,startColumn:c,endColumn:l}=e;return n.Rectangle.intersects({startRow:t,endRow:i,startColumn:c,endColumn:l},{startRow:r,endRow:o,startColumn:a,endColumn:s})||r>i||a>l})});c&&s.push(c)}),this._finalizePlan(t,r,s,[],`refresh`,e)}};Q=W([U(0,n.ICommandService),U(1,(0,n.Inject)(t.SheetSkeletonService)),U(2,(0,n.Inject)(t.SheetInterceptorService)),U(3,u),U(4,r.IDrawingManagerService),U(5,n.IUniverInstanceService),U(6,(0,n.Inject)(Z)),U(7,n.ILogService)],Q);let $=class extends n.Plugin{constructor(e=J,t,r){super(),this._config=e,this._injector=t,this._configService=r;let{...i}=(0,n.merge)({},J,this._config);this._configService.setConfig(`sheets-drawing.config`,i)}onStarting(){[[q],[Z],[Q],[u,{useClass:l}]].forEach(e=>this._injector.add(e)),this._injector.get(q),this._injector.get(Q)}};X($,`pluginName`,G),X($,`packageName`,re),X($,`version`,ie),X($,`type`,n.UniverInstanceType.UNIVER_SHEET),$=W([(0,n.DependentOn)(r.UniverDrawingPlugin,t.UniverSheetsPlugin),U(1,(0,n.Inject)(n.Injector)),U(2,n.IConfigService)],$),e.ClearSheetDrawingTransformerOperation=p,e.DrawingApplyType=d,e.ISheetDrawingService=u,e.InsertSheetDrawingCommand=m,e.RemoveSheetDrawingCommand=h,e.SHEET_DRAWING_PLUGIN=G,e.SetDrawingApplyMutation=f,e.SetDrawingArrangeCommand=g,e.SetSheetDrawingCommand=B,e.SetSheetDrawingPlacementCommand=I,e.SetWorksheetBackgroundImageCommand=H,e.SetWorksheetBackgroundImageMutation=V,e.SheetDrawingAnchorType=c,e.SheetDrawingService=l,e.SheetDrawingTransformPlanService=Z,Object.defineProperty(e,"UniverSheetsDrawingPlugin",{enumerable:!0,get:function(){return $}}),e.applySheetDrawingPlacement=y,e.drawingPositionToTransform=a,e.getSheetDrawingPlacement=v,e.isKnownSheetNonRotatableDrawingType=L,e.normalizeSheetDrawingPlacement=ee,e.refreshSheetDrawingPlacement=b,e.resolveSheetDrawingRotateEnabled=R,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.1.0",
3
+ "version": "1.2.0",
4
4
  "private": false,
5
5
  "description": "Drawing model integration for Univer Sheets.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -59,13 +59,13 @@
59
59
  "lib"
60
60
  ],
61
61
  "dependencies": {
62
- "@univerjs/core": "1.1.0",
63
- "@univerjs/drawing": "1.1.0",
64
- "@univerjs/engine-render": "1.1.0",
65
- "@univerjs/sheets": "1.1.0"
62
+ "@univerjs/core": "1.2.0",
63
+ "@univerjs/drawing": "1.2.0",
64
+ "@univerjs/engine-render": "1.2.0",
65
+ "@univerjs/sheets": "1.2.0"
66
66
  },
67
67
  "devDependencies": {
68
- "@univerjs-infra/shared": "1.1.0",
68
+ "@univerjs-infra/shared": "1.2.0",
69
69
  "typescript": "^6.0.3",
70
70
  "vitest": "^5.0.4"
71
71
  },