@univerjs/sheets-drawing 1.0.0-alpha.7 → 1.0.0-beta.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.
@@ -15,18 +15,21 @@
15
15
  */
16
16
  import type { IRotationSkewFlipTransform, ISize } from '@univerjs/core';
17
17
  import type { ICellOverGridPosition } from '@univerjs/sheets';
18
- import type { ISheetImage, SheetDrawingAnchorType } from '@univerjs/sheets-drawing';
18
+ import type { ISheetDrawingPlacement, ISheetDrawingPlacementInput, ISheetImage } from '@univerjs/sheets-drawing';
19
19
  import { DrawingTypeEnum, ICommandService, ImageSourceType, Injector } from '@univerjs/core';
20
20
  import { FBase } from '@univerjs/core/facade';
21
+ import { SheetSkeletonService } from '@univerjs/sheets';
22
+ import { ISheetDrawingService, SheetDrawingAnchorType } from '@univerjs/sheets-drawing';
21
23
  export interface IFOverGridImage extends Omit<ISheetImage, 'sheetTransform' | 'transform'>, ICellOverGridPosition, IRotationSkewFlipTransform, Required<ISize> {
22
24
  }
23
25
  /**
24
26
  * @hideconstructor
25
27
  */
26
28
  export declare class FOverGridImageBuilder {
27
- protected readonly _injector: Injector;
29
+ private readonly _sheetSkeletonService;
28
30
  private _image;
29
- constructor(unitId: string, subUnitId: string, _injector: Injector);
31
+ private _placement?;
32
+ constructor(unitId: string, subUnitId: string, _sheetSkeletonService: SheetSkeletonService);
30
33
  /**
31
34
  * Set the initial image configuration for the image builder.
32
35
  * @param {ISheetImage} image - The image configuration
@@ -285,6 +288,70 @@ export declare class FOverGridImageBuilder {
285
288
  * ```
286
289
  */
287
290
  setAnchorType(anchorType: SheetDrawingAnchorType): FOverGridImageBuilder;
291
+ /**
292
+ * Set an explicit OneCell, TwoCell, or Absolute placement for the image.
293
+ *
294
+ * This placement takes precedence over the individual row, column, size,
295
+ * and anchor type builder fields. Use bounds inference for an existing
296
+ * transform; use exact markers when a caller explicitly chose cells.
297
+ * @param {ISheetDrawingPlacementInput} placement Exact placement or bounds with an explicit anchor type.
298
+ * @returns {FOverGridImageBuilder} This builder.
299
+ * @example
300
+ * ```ts
301
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
302
+ * const image = await sheet.newOverGridImage()
303
+ * .setSource('https://avatars.githubusercontent.com/u/61444807?s=96&v=4')
304
+ * .setPlacement({
305
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Position,
306
+ * from: { row: 2, column: 2, rowOffset: 8, columnOffset: 8 },
307
+ * width: 240,
308
+ * height: 120,
309
+ * })
310
+ * .buildAsync();
311
+ * sheet.insertImages([image]);
312
+ * ```
313
+ * @example Infer Position markers from model-space bounds
314
+ * ```ts
315
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
316
+ * const image = await sheet.newOverGridImage()
317
+ * .setSource('https://avatars.githubusercontent.com/u/61444807?s=96&v=4')
318
+ * .setPlacement({
319
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Position,
320
+ * bounds: { left: 120, top: 80, width: 240, height: 120 },
321
+ * })
322
+ * .buildAsync();
323
+ * sheet.insertImages([image]);
324
+ * ```
325
+ * @example TwoCell
326
+ * ```ts
327
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
328
+ * const image = await sheet.newOverGridImage()
329
+ * .setSource('https://avatars.githubusercontent.com/u/61444807?s=96&v=4')
330
+ * .setPlacement({
331
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Both,
332
+ * from: { row: 2, column: 2, rowOffset: 8, columnOffset: 8 },
333
+ * to: { row: 8, column: 6, rowOffset: 0, columnOffset: 0 },
334
+ * })
335
+ * .buildAsync();
336
+ * sheet.insertImages([image]);
337
+ * ```
338
+ * @example Absolute
339
+ * ```ts
340
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
341
+ * const image = await sheet.newOverGridImage()
342
+ * .setSource('https://avatars.githubusercontent.com/u/61444807?s=96&v=4')
343
+ * .setPlacement({
344
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.None,
345
+ * left: 640,
346
+ * top: 96,
347
+ * width: 240,
348
+ * height: 120,
349
+ * })
350
+ * .buildAsync();
351
+ * sheet.insertImages([image]);
352
+ * ```
353
+ */
354
+ setPlacement(placement: ISheetDrawingPlacementInput): FOverGridImageBuilder;
288
355
  /**
289
356
  * Set the cropping region of the image by defining the top edges, thereby displaying the specific part of the image you want.
290
357
  * @param {number} top - The number of pixels to crop from the top of the image
@@ -402,7 +469,9 @@ export declare class FOverGridImage extends FBase {
402
469
  private _image;
403
470
  protected readonly _commandService: ICommandService;
404
471
  protected readonly _injector: Injector;
405
- constructor(_image: ISheetImage, _commandService: ICommandService, _injector: Injector);
472
+ private readonly _sheetDrawingService;
473
+ private readonly _sheetSkeletonService;
474
+ constructor(_image: ISheetImage, _commandService: ICommandService, _injector: Injector, _sheetDrawingService: ISheetDrawingService, _sheetSkeletonService: SheetSkeletonService);
406
475
  /**
407
476
  * Get the id of the image
408
477
  * @returns {string} The id of the image
@@ -433,6 +502,63 @@ export declare class FOverGridImage extends FBase {
433
502
  * ```
434
503
  */
435
504
  getType(): DrawingTypeEnum;
505
+ /**
506
+ * Get this image's explicit placement.
507
+ * @returns {ISheetDrawingPlacement} OneCell, TwoCell, or Absolute placement.
508
+ * @example
509
+ * ```ts
510
+ * const image = univerAPI.getActiveWorkbook().getActiveSheet().getImages()[0];
511
+ * console.log(image.getPlacement());
512
+ * ```
513
+ */
514
+ getPlacement(): ISheetDrawingPlacement;
515
+ /**
516
+ * Set this image's explicit placement through the drawing command.
517
+ * `Position`, `Both`, and `None` correspond to OneCell, TwoCell, and
518
+ * Absolute. Bounds inference is preferable when preserving the current
519
+ * visual bounds; exact markers are for user-selected cells and offsets.
520
+ * @param {ISheetDrawingPlacementInput} placement Exact placement or bounds with an explicit anchor type.
521
+ * @returns {boolean} `true` when the command succeeds.
522
+ * @example OneCell
523
+ * ```ts
524
+ * const image = univerAPI.getActiveWorkbook().getActiveSheet().getImages()[0];
525
+ * image.setPlacement({
526
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Position,
527
+ * from: { row: 4, column: 3, rowOffset: 8, columnOffset: 8 },
528
+ * width: 320,
529
+ * height: 180,
530
+ * });
531
+ * ```
532
+ * @example Infer TwoCell markers while preserving current model-space bounds
533
+ * ```ts
534
+ * const image = univerAPI.getActiveWorkbook().getActiveSheet().getImages()[0];
535
+ * image.setPlacement({
536
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Both,
537
+ * bounds: { left: 120, top: 80, width: 320, height: 160 },
538
+ * });
539
+ * ```
540
+ * @example TwoCell
541
+ * ```ts
542
+ * const image = univerAPI.getActiveWorkbook().getActiveSheet().getImages()[0];
543
+ * image.setPlacement({
544
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Both,
545
+ * from: { row: 4, column: 3, rowOffset: 8, columnOffset: 8 },
546
+ * to: { row: 10, column: 8, rowOffset: 0, columnOffset: 0 },
547
+ * });
548
+ * ```
549
+ * @example Absolute
550
+ * ```ts
551
+ * const image = univerAPI.getActiveWorkbook().getActiveSheet().getImages()[0];
552
+ * image.setPlacement({
553
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.None,
554
+ * left: 640,
555
+ * top: 96,
556
+ * width: 320,
557
+ * height: 180,
558
+ * });
559
+ * ```
560
+ */
561
+ setPlacement(placement: ISheetDrawingPlacementInput): boolean;
436
562
  /**
437
563
  * Remove the image from the sheet
438
564
  * @returns {boolean} true if the image is removed successfully, otherwise false
@@ -13,10 +13,27 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import type { IGroupBaseBound, Injector } from '@univerjs/core';
16
17
  import type { IFBlobSource } from '@univerjs/core/facade';
17
- import type { ISheetDrawing, ISheetImage } from '@univerjs/sheets-drawing';
18
+ import type { ISheetDrawing, ISheetDrawingPlacement, ISheetDrawingPlacementInput, ISheetImage } from '@univerjs/sheets-drawing';
19
+ import { DrawingTypeEnum } from '@univerjs/core';
18
20
  import { FWorksheet } from '@univerjs/sheets/facade';
19
21
  import { FOverGridImage, FOverGridImageBuilder } from './f-over-grid-image';
22
+ export interface ISheetDrawingLayoutObject {
23
+ drawingId: string;
24
+ drawingType: DrawingTypeEnum;
25
+ bounds: IGroupBaseBound;
26
+ placement: ISheetDrawingPlacement;
27
+ groupId?: string;
28
+ }
29
+ export interface ISheetDrawingLayout {
30
+ /** Entire Sheet grid in model coordinates. */
31
+ gridBounds: IGroupBaseBound;
32
+ /** Cell content range in model coordinates. */
33
+ dataBounds: IGroupBaseBound;
34
+ /** Drawings ordered from back to front. */
35
+ drawings: ISheetDrawingLayoutObject[];
36
+ }
20
37
  /**
21
38
  * @ignore
22
39
  */
@@ -171,6 +188,109 @@ export interface IFWorksheetDrawingMixin {
171
188
  * ```
172
189
  */
173
190
  updateImages(sheetImages: ISheetImage[]): FWorksheet;
191
+ /**
192
+ * Get the placement of any drawing on this sheet.
193
+ *
194
+ * Image, Shape, Chart, and Group use the same placement contract.
195
+ * @param {string} drawingId Drawing id.
196
+ * @returns {ISheetDrawingPlacement | null} The placement, or `null` when the drawing does not exist.
197
+ * @example
198
+ * ```ts
199
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
200
+ * const placement = sheet.getDrawingPlacement('drawing-id');
201
+ * if (placement?.kind === univerAPI.Enum.SheetDrawingAnchorType.Both) {
202
+ * console.log(placement.from, placement.to);
203
+ * }
204
+ * ```
205
+ */
206
+ getDrawingPlacement(drawingId: string): ISheetDrawingPlacement | null;
207
+ /**
208
+ * Set the placement of any drawing on this sheet through the drawing command.
209
+ *
210
+ * @param {string} drawingId Drawing id.
211
+ * @param {ISheetDrawingPlacementInput} placement Exact markers or model-space bounds with an explicit anchor type.
212
+ * @returns {boolean} `true` when the command succeeds.
213
+ * @example OneCell: move with cells, keep pixel size
214
+ * ```ts
215
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
216
+ * const drawingId = sheet.getImages()[0]?.getId();
217
+ * if (!drawingId) throw new Error('No drawing found.');
218
+ * const changed = sheet.setDrawingPlacement(drawingId, {
219
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Position,
220
+ * from: { row: 2, column: 2, rowOffset: 8, columnOffset: 8 },
221
+ * width: 240,
222
+ * height: 120,
223
+ * });
224
+ * console.log(changed);
225
+ * ```
226
+ * @example TwoCell: move and resize with both cell markers
227
+ * ```ts
228
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
229
+ * const drawingId = sheet.getImages()[0]?.getId();
230
+ * if (!drawingId) throw new Error('No drawing found.');
231
+ * sheet.setDrawingPlacement(drawingId, {
232
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Both,
233
+ * from: { row: 2, column: 2, rowOffset: 8, columnOffset: 8 },
234
+ * to: { row: 8, column: 6, rowOffset: 0, columnOffset: 0 },
235
+ * });
236
+ * ```
237
+ * @example Absolute: do not move or resize after row or column changes
238
+ * ```ts
239
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
240
+ * const drawingId = sheet.getImages()[0]?.getId();
241
+ * if (!drawingId) throw new Error('No drawing found.');
242
+ * sheet.setDrawingPlacement(drawingId, {
243
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.None,
244
+ * left: 640,
245
+ * top: 96,
246
+ * width: 240,
247
+ * height: 120,
248
+ * });
249
+ * ```
250
+ */
251
+ setDrawingPlacement(drawingId: string, placement: ISheetDrawingPlacementInput): boolean;
252
+ /**
253
+ * Resolve exact markers or model-space bounds to a normalized Placement.
254
+ *
255
+ * Bounds inference is usually preferable when positioning from an existing
256
+ * transform. Exact markers are useful when the caller must preserve a
257
+ * user-selected cell and offset. `Position` maps to OOXML OneCell,
258
+ * `Both` maps to TwoCell, and `None` maps to Absolute.
259
+ * @param {ISheetDrawingPlacementInput} placement Exact markers or bounds with an explicit anchor type.
260
+ * @returns {ISheetDrawingPlacement} The normalized Placement.
261
+ * @example Infer Position and Both placements from bounds in Node/headless
262
+ * ```ts
263
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
264
+ * const positionPlacement = sheet.resolveDrawingPlacement({
265
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Position,
266
+ * bounds: { left: 120, top: 80, width: 320, height: 160 },
267
+ * });
268
+ * const bothPlacement = sheet.resolveDrawingPlacement({
269
+ * kind: univerAPI.Enum.SheetDrawingAnchorType.Both,
270
+ * bounds: { left: 120, top: 80, width: 320, height: 160 },
271
+ * });
272
+ * console.log(positionPlacement.from);
273
+ * console.log(bothPlacement.from, bothPlacement.to);
274
+ * ```
275
+ */
276
+ resolveDrawingPlacement(placement: ISheetDrawingPlacementInput): ISheetDrawingPlacement;
277
+ /**
278
+ * Get the Sheet host layout in model coordinates.
279
+ *
280
+ * This API is available in Node/headless and does not include viewport,
281
+ * scroll, zoom, frozen-pane clipping, or screen coordinates.
282
+ * @returns {ISheetDrawingLayout} Grid, data, and ordered Drawing bounds.
283
+ * @example
284
+ * ```ts
285
+ * const sheet = univerAPI.getActiveWorkbook().getActiveSheet();
286
+ * const layout = sheet.getDrawingLayout();
287
+ * console.log(layout.gridBounds, layout.dataBounds);
288
+ * for (const drawing of layout.drawings) {
289
+ * console.log(drawing.drawingId, drawing.bounds);
290
+ * }
291
+ * ```
292
+ */
293
+ getDrawingLayout(): ISheetDrawingLayout;
174
294
  /**
175
295
  * Get the current selected images.
176
296
  * @returns {FOverGridImage[]} The FOverGridImage instances
@@ -363,6 +483,10 @@ export interface IFWorksheetDrawingMixin {
363
483
  isDrawingGrouped(drawingId: string): boolean;
364
484
  }
365
485
  export declare class FWorksheetDrawingMixin extends FWorksheet implements IFWorksheetDrawingMixin {
486
+ private _sheetDrawingService;
487
+ private _sheetSkeletonService;
488
+ private _undoRedoService;
489
+ _initialize(injector: Injector): void;
366
490
  insertImage(url: IFBlobSource | string, column?: number, row?: number, offsetX?: number, offsetY?: number): Promise<boolean>;
367
491
  insertImages(sheetImages: ISheetImage[]): FWorksheet;
368
492
  deleteImages(sheetImages: FOverGridImage[]): FWorksheet;
@@ -370,6 +494,10 @@ export declare class FWorksheetDrawingMixin extends FWorksheet implements IFWork
370
494
  getImageById(id: string): FOverGridImage | null;
371
495
  getActiveImages(): FOverGridImage[];
372
496
  updateImages(sheetImages: ISheetImage[]): FWorksheet;
497
+ getDrawingPlacement(drawingId: string): ISheetDrawingPlacement | null;
498
+ setDrawingPlacement(drawingId: string, placement: ISheetDrawingPlacementInput): boolean;
499
+ resolveDrawingPlacement(placement: ISheetDrawingPlacementInput): ISheetDrawingPlacement;
500
+ getDrawingLayout(): ISheetDrawingLayout;
373
501
  newOverGridImage(): FOverGridImageBuilder;
374
502
  groupDrawings(drawingIds: string[], groupId?: string): string | null;
375
503
  ungroupDrawings(groupIds: string[]): boolean;
@@ -20,6 +20,8 @@ export { RemoveSheetDrawingCommand } from './commands/commands/remove-sheet-draw
20
20
  export type { IRemoveSheetDrawingCommandParam, IRemoveSheetDrawingCommandParams } from './commands/commands/remove-sheet-drawing.command';
21
21
  export { SetDrawingArrangeCommand } from './commands/commands/set-drawing-arrange.command';
22
22
  export type { ISetDrawingArrangeCommandParams } from './commands/commands/set-drawing-arrange.command';
23
+ export { SetSheetDrawingPlacementCommand } from './commands/commands/set-sheet-drawing-placement.command';
24
+ export type { ISetSheetDrawingPlacementCommandParams } from './commands/commands/set-sheet-drawing-placement.command';
23
25
  export { SetSheetDrawingCommand } from './commands/commands/set-sheet-drawing.command';
24
26
  export type { ISetDrawingCommandParams } from './commands/commands/set-sheet-drawing.command';
25
27
  export { DrawingApplyType, SetDrawingApplyMutation } from './commands/mutations/set-drawing-apply.mutation';
@@ -29,6 +31,8 @@ export { isKnownSheetNonRotatableDrawingType, resolveSheetDrawingRotateEnabled }
29
31
  export type { IUniverSheetsDrawingConfig } from './config/config';
30
32
  export { SHEET_DRAWING_PLUGIN } from './controllers/sheet-drawing.controller';
31
33
  export { UniverSheetsDrawingPlugin } from './plugin';
34
+ export { applySheetDrawingPlacement, getSheetDrawingPlacement, normalizeSheetDrawingPlacement, } from './services/sheet-drawing-placement';
35
+ export type { ISheetDrawingAbsolutePlacement, ISheetDrawingOneCellPlacement, ISheetDrawingPlacement, ISheetDrawingPlacementByBounds, ISheetDrawingPlacementInput, ISheetDrawingTwoCellPlacement, } from './services/sheet-drawing-placement';
32
36
  export { SheetDrawingTransformPlanService } from './services/sheet-drawing-transform-plan.service';
33
37
  export type { ISheetDrawingTransformExtension, ISheetDrawingTransformExtensionResult, ISheetDrawingTransformPlan, } from './services/sheet-drawing-transform-plan.service';
34
38
  export { ISheetDrawingService, SheetDrawingAnchorType, SheetDrawingService } from './services/sheet-drawing.service';
@@ -0,0 +1,86 @@
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 { IGroupBaseBound } from '@univerjs/core';
17
+ import type { SpreadsheetSkeleton } from '@univerjs/engine-render';
18
+ import type { ICellOverGridPosition } from '@univerjs/sheets';
19
+ import type { ISheetDrawing, ISheetFloatDom, ISheetImage } from './sheet-drawing.service';
20
+ import { SheetDrawingAnchorType } from './sheet-drawing.service';
21
+ /**
22
+ * Anchor a drawing to one cell while keeping a fixed pixel extent.
23
+ */
24
+ export interface ISheetDrawingOneCellPlacement {
25
+ /** Placement discriminator. */
26
+ kind: SheetDrawingAnchorType.Position;
27
+ /** Zero-based anchor cell and pixel offsets from its top-left corner. */
28
+ from: ICellOverGridPosition;
29
+ /** Drawing width in pixels. */
30
+ width: number;
31
+ /** Drawing height in pixels. */
32
+ height: number;
33
+ }
34
+ /**
35
+ * Anchor a drawing between two cell markers.
36
+ */
37
+ export interface ISheetDrawingTwoCellPlacement {
38
+ /** Placement discriminator. */
39
+ kind: SheetDrawingAnchorType.Both;
40
+ /** Zero-based start cell and pixel offsets. */
41
+ from: ICellOverGridPosition;
42
+ /** Zero-based end cell and pixel offsets. */
43
+ to: ICellOverGridPosition;
44
+ }
45
+ /**
46
+ * Position a drawing in the Sheet canvas pixel coordinate system.
47
+ */
48
+ export interface ISheetDrawingAbsolutePlacement {
49
+ /** Placement discriminator. */
50
+ kind: SheetDrawingAnchorType.None;
51
+ /** Horizontal pixel offset from the Sheet canvas origin. */
52
+ left: number;
53
+ /** Vertical pixel offset from the Sheet canvas origin. */
54
+ top: number;
55
+ /** Drawing width in pixels. */
56
+ width: number;
57
+ /** Drawing height in pixels. */
58
+ height: number;
59
+ }
60
+ /**
61
+ * Explicit Sheet drawing placement.
62
+ */
63
+ export type ISheetDrawingPlacement = ISheetDrawingOneCellPlacement | ISheetDrawingTwoCellPlacement | ISheetDrawingAbsolutePlacement;
64
+ /**
65
+ * Infer cell markers from model-space bounds after the anchor semantics have
66
+ * been selected explicitly.
67
+ */
68
+ export interface ISheetDrawingPlacementByBounds {
69
+ /** Position, Both, or None semantics. */
70
+ kind: SheetDrawingAnchorType;
71
+ /** Bounds in the Sheet model coordinate system. */
72
+ bounds: IGroupBaseBound;
73
+ }
74
+ /**
75
+ * Exact Placement or model-space bounds to normalize into one.
76
+ */
77
+ export type ISheetDrawingPlacementInput = ISheetDrawingPlacement | ISheetDrawingPlacementByBounds;
78
+ export declare function getSheetDrawingPlacement(drawing: ISheetDrawing): ISheetDrawingPlacement;
79
+ export declare function applySheetDrawingPlacement(drawing: ISheetImage, input: ISheetDrawingPlacementInput, skeleton?: SpreadsheetSkeleton): ISheetImage;
80
+ export declare function applySheetDrawingPlacement(drawing: ISheetFloatDom, input: ISheetDrawingPlacementInput, skeleton?: SpreadsheetSkeleton): ISheetFloatDom;
81
+ export declare function applySheetDrawingPlacement(drawing: ISheetDrawing, input: ISheetDrawingPlacementInput, skeleton?: SpreadsheetSkeleton): ISheetDrawing;
82
+ /**
83
+ * Normalize exact markers or model-space bounds to the authoritative
84
+ * Position, Both, or None Placement.
85
+ */
86
+ export declare function normalizeSheetDrawingPlacement(input: ISheetDrawingPlacementInput, skeleton?: SpreadsheetSkeleton): ISheetDrawingPlacement;
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import type { IDrawingParam, IRotationSkewFlipTransform, Serializable } from '@univerjs/core';
17
- import type { IImageData, IUnitDrawingService } from '@univerjs/drawing';
17
+ import type { IDrawingJsonUndo1, IImageData, IUnitDrawingService } from '@univerjs/drawing';
18
18
  import type { ISheetOverGridPosition } from '@univerjs/sheets';
19
19
  import { UnitDrawingService } from '@univerjs/drawing';
20
20
  export declare enum SheetDrawingAnchorType {
@@ -65,6 +65,7 @@ export type ISheetUpdateDrawing = OptionalField<ISheetImage | ISheetShape, 'shee
65
65
  export declare class SheetDrawingService extends UnitDrawingService<ISheetDrawing> {
66
66
  }
67
67
  export interface ISheetDrawingService extends IUnitDrawingService<ISheetDrawing> {
68
+ getBatchUpdateOp(updateParams: ISheetDrawing[]): IDrawingJsonUndo1;
68
69
  }
69
70
  export declare const ISheetDrawingService: import("@wendellhu/redi").IdentifierDecorator<ISheetDrawingService>;
70
71
  export {};
package/lib/umd/facade.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(require("@univerjs/core"),require("@univerjs/core/facade"),require("@univerjs/drawing"),require("@univerjs/sheets"),require("@univerjs/sheets-drawing"),require("@univerjs/engine-render"),require("@univerjs/sheets/facade")):typeof define==`function`&&define.amd?define([`@univerjs/core`,`@univerjs/core/facade`,`@univerjs/drawing`,`@univerjs/sheets`,`@univerjs/sheets-drawing`,`@univerjs/engine-render`,`@univerjs/sheets/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverCore,e.UniverCoreFacade,e.UniverDrawing,e.UniverSheets,e.UniverSheetsDrawing,e.UniverEngineRender,e.UniverSheetsFacade))})(this,function(e,t,n,r,i,a,o){function s(e){"@babel/helpers - typeof";return s=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},s(e)}function c(e,t){if(s(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(s(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e){var t=c(e,`string`);return s(t)==`symbol`?t:t+``}function u(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t){return function(n,r){t(n,r,e)}}function f(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}function p(e,t){let{from:n,to:i,flipY:a=!1,flipX:o=!1,angle:s=0,skewX:c=0,skewY:l=0}=e.sheetTransform,{column:u,columnOffset:d,row:f,rowOffset:p}=n,{width:m,height:h}=(0,r.convertPositionSheetOverGridToAbsolute)(e.unitId,e.subUnitId,{from:n,to:i},t);return{...e,column:u,columnOffset:d,row:f,rowOffset:p,width:m,height:h,flipY:a,flipX:o,angle:s,skewX:c,skewY:l}}function m(e,t){let n=t.ensureSkeleton(e.unitId,e.subUnitId);if(!n)throw Error(`Skeleton for unitId ${e.unitId} and subUnitId ${e.subUnitId} not found`);let{column:a,columnOffset:o,row:s,rowOffset:c,flipY:l=!1,flipX:u=!1,angle:d=0,skewX:f=0,skewY:p=0,width:m,height:h}=e,{sheetTransform:g,transform:_}=(0,r.convertPositionCellToSheetOverGrid)(e.unitId,e.subUnitId,{column:a,columnOffset:o,row:s,rowOffset:c},m,h,n);return{...e,sheetTransform:{...g,flipY:l,flipX:u,angle:d,skewX:f,skewY:p},transform:{..._,flipY:l,flipX:u,angle:d,skewX:f,skewY:p},axisAlignSheetTransform:(0,i.transformToAxisAlignPosition)(_,n)}}let h=class{constructor(t,n,r){this._injector=r,u(this,`_image`,void 0),this._image={drawingId:(0,e.generateRandomId)(6),drawingType:e.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:e.ImageSourceType.BASE64,source:``,unitId:t,subUnitId:n,column:0,columnOffset:0,row:0,rowOffset:0,width:0,height:0,axisAlignSheetTransform:{from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}}}}setImage(e){let{unitId:t,subUnitId:n}=e,i=this._injector.get(r.SheetSkeletonService).getSkeleton(t,n);if(!i)throw Error(`Skeleton for unitId ${t} and subUnitId ${n} not found`);return e.sheetTransform==null&&(e.sheetTransform={from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}}),e.axisAlignSheetTransform==null&&(e.axisAlignSheetTransform={from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}}),this._image=p(e,i),this}setSource(t,n){let r=n==null?e.ImageSourceType.URL:n;return this._image.source=t,this._image.imageSourceType=r,this}getSource(){return this._image.source}getSourceType(){return this._image.imageSourceType}setColumn(e){return this._image.column=e,this}setRow(e){return this._image.row=e,this}setColumnOffset(e){return this._image.columnOffset=e,this}setRowOffset(e){return this._image.rowOffset=e,this}setWidth(e){return this._image.width=e,this}setHeight(e){return this._image.height=e,this}setAnchorType(e){return this._image.anchorType=e,this}setCropTop(e){return this._initializeSrcRect(),this._image.srcRect.top=e,this}setCropLeft(e){return this._initializeSrcRect(),this._image.srcRect.left=e,this}setCropBottom(e){return this._initializeSrcRect(),this._image.srcRect.bottom=e,this}setCropRight(e){return this._initializeSrcRect(),this._image.srcRect.right=e,this}_initializeSrcRect(){this._image.srcRect==null&&(this._image.srcRect={top:0,left:0,bottom:0,right:0})}setRotate(e){return this._image.angle=e,this}setUnitId(e){return this._image.unitId=e,this}setSubUnitId(e){return this._image.subUnitId=e,this}async buildAsync(){let e=this._injector.get(r.SheetSkeletonService);if(this._image.width===0||this._image.height===0){let e=await(0,n.getImageSize)(this._image.source),t=e.width,r=e.height;this._image.width===0&&(this._image.width=t),this._image.height===0&&(this._image.height=r)}return m(this._image,e)}};h=f([d(2,(0,e.Inject)(e.Injector))],h);let g=class extends t.FBase{constructor(e,t,n){super(),this._image=e,this._commandService=t,this._injector=n}getId(){return this._image.drawingId}getType(){return this._image.drawingType}remove(){return this._commandService.syncExecuteCommand(i.RemoveSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}toBuilder(){let e=this._injector.createInstance(h,this._image.unitId,this._image.subUnitId);return e.setImage(this._image),e}setSource(t,n){let r=n==null?e.ImageSourceType.URL:n;return this._image.source=t,this._image.imageSourceType=r,this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}async setPositionAsync(e,t,n,r){let a=this.toBuilder();a.setColumn(t),a.setRow(e),n!=null&&a.setRowOffset(n),r!=null&&a.setColumnOffset(r);let o=await a.buildAsync();return this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[o]})}async setSizeAsync(e,t){let n=this.toBuilder();n.setWidth(e),n.setHeight(t);let r=await n.buildAsync();return this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[r]})}setCrop(e,t,n,r){return this._image.srcRect==null&&(this._image.srcRect={top:0,left:0,bottom:0,right:0}),e!=null&&(this._image.srcRect.top=e),t!=null&&(this._image.srcRect.left=t),n!=null&&(this._image.srcRect.bottom=n),r!=null&&(this._image.srcRect.right=r),this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setRotate(e){if(this._image.sheetTransform.angle=e,this._image.transform&&(this._image.transform.angle=e),this._image.transform){let e=this._injector.get(r.SheetSkeletonService).getSkeleton(this._image.unitId,this._image.subUnitId);if(!e)throw Error(`Skeleton for unitId ${this._image.unitId} and subUnitId ${this._image.subUnitId} not found`);this._image.axisAlignSheetTransform&&(this._image.axisAlignSheetTransform=(0,i.transformToAxisAlignPosition)(this._image.transform,e))}return this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setForward(){return this._commandService.syncExecuteCommand(i.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:e.ArrangeTypeEnum.forward})}setBackward(){return this._commandService.syncExecuteCommand(i.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:e.ArrangeTypeEnum.backward})}setBack(){return this._commandService.syncExecuteCommand(i.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:e.ArrangeTypeEnum.back})}setFront(){return this._commandService.syncExecuteCommand(i.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:e.ArrangeTypeEnum.front})}};g=f([d(1,e.ICommandService),d(2,(0,e.Inject)(e.Injector))],g);var _=class extends o.FWorksheet{async insertImage(t,n,r,a,o){let s=this.newOverGridImage();if(typeof t==`string`)s.setSource(t);else{let n=await t.getBlob().getDataAsString();s.setSource(n,e.ImageSourceType.BASE64)}n===void 0?s.setColumn(0):s.setColumn(n),r===void 0?s.setRow(0):s.setRow(r),a===void 0?s.setColumnOffset(0):s.setColumnOffset(a),o===void 0?s.setRowOffset(0):s.setRowOffset(o);let c=await s.buildAsync();return this._commandService.syncExecuteCommand(i.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:[c]})}insertImages(e){let t=e.map(e=>(e.unitId=this._fWorkbook.getId(),e.subUnitId=this.getSheetId(),e));return this._commandService.syncExecuteCommand(i.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}deleteImages(e){let t=e.map(e=>({unitId:this._fWorkbook.getId(),drawingId:e.getId(),subUnitId:this.getSheetId(),drawingType:e.getType()}));return this._commandService.syncExecuteCommand(i.RemoveSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}getImages(){let t=this._injector.get(i.ISheetDrawingService).getDrawingData(this._fWorkbook.getId(),this.getSheetId()),n=[];for(let r in t){let i=t[r];i.drawingType===e.DrawingTypeEnum.DRAWING_IMAGE&&n.push(this._injector.createInstance(g,i))}return n}getImageById(t){let n=this._injector.get(i.ISheetDrawingService).getDrawingByParam({unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawingId:t});return n&&n.drawingType===e.DrawingTypeEnum.DRAWING_IMAGE?this._injector.createInstance(g,n):null}getActiveImages(){let e=this._injector.get(i.ISheetDrawingService).getFocusDrawings(),t=[];for(let n in e){let r=e[n];t.push(this._injector.createInstance(g,r))}return t}updateImages(e){return this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:e}),this}newOverGridImage(){let e=this._fWorkbook.getId(),t=this.getSheetId();return this._injector.createInstance(h,e,t)}groupDrawings(t,r=(0,e.generateRandomId)(10)){let o=Array.from(new Set(t));if(o.length<2)return null;let s=this._fWorkbook.getId(),c=this.getSheetId(),l=this._injector.get(i.ISheetDrawingService);if(l.getDrawingByParam({unitId:s,subUnitId:c,drawingId:r}))return null;let u=o.map(e=>l.getDrawingByParam({unitId:s,subUnitId:c,drawingId:e}));if(u.some(e=>!e)||u.some(e=>!(0,n.isGroupableDrawingType)(e.drawingType)))return null;let d=u,f=(0,a.getGroupState)(0,0,d.map(e=>e.transform||{})),p={unitId:s,subUnitId:c,drawingId:r,drawingType:e.DrawingTypeEnum.DRAWING_GROUP,transform:f,groupBaseBound:{left:f.left,top:f.top,width:f.width,height:f.height}},m=d.map(e=>({...e,groupId:r}));return this._applyGroupDrawingOperation([{parent:p,children:m}],i.DrawingApplyType.GROUP)?r:null}ungroupDrawings(t){let n=this._fWorkbook.getId(),r=this.getSheetId(),o=this._injector.get(i.ISheetDrawingService),s=[];for(let i of t){let t=o.getDrawingByParam({unitId:n,subUnitId:r,drawingId:i});if(!t||t.drawingType!==e.DrawingTypeEnum.DRAWING_GROUP)continue;let c=t.transform||{width:0,height:0},l=o.getDrawingsByGroup({unitId:n,subUnitId:r,drawingId:i}).map(e=>{let n=(0,a.transformObjectOutOfGroup)(e.transform||{},c,c.width||0,c.height||0,t.groupBaseBound);return{...e,transform:{...e.transform,...n},groupId:void 0}});l.length>0&&s.push({parent:t,children:l})}return this._applyGroupDrawingOperation(s,i.DrawingApplyType.UNGROUP)}getDrawingGroupChildren(e,t=!1){let n=this._fWorkbook.getId(),r=this.getSheetId(),a=this._injector.get(i.ISheetDrawingService);if(!t)return a.getDrawingsByGroup({unitId:n,subUnitId:r,drawingId:e});let o=a.getDrawingsByGroupNested({unitId:n,subUnitId:r,drawingId:e});return o?[...o.flatChildren||[],...o.groups.filter(t=>t.drawingId!==e)]:[]}getDrawingParentGroup(t){let n=this._fWorkbook.getId(),r=this.getSheetId(),a=this._injector.get(i.ISheetDrawingService),o=a.getDrawingByParam({unitId:n,subUnitId:r,drawingId:t});if(!(o!=null&&o.groupId))return null;let s=a.getDrawingByParam({unitId:n,subUnitId:r,drawingId:o.groupId});return!s||s.drawingType!==e.DrawingTypeEnum.DRAWING_GROUP?null:s}isDrawingGrouped(e){return this.getDrawingParentGroup(e)!==null}_applyGroupDrawingOperation(t,n){if(t.length===0)return!1;let r=this._injector.get(i.ISheetDrawingService),a=this._commandService,o=this._injector.get(e.IUndoRedoService),{unitId:s,subUnitId:c,undo:l,redo:u,objects:d}=n===i.DrawingApplyType.GROUP?r.getGroupDrawingOp(t):r.getUngroupDrawingOp(t);if(a.syncExecuteCommand(i.SetDrawingApplyMutation.id,{op:u,unitId:s,subUnitId:c,objects:d,type:n})){let e=n===i.DrawingApplyType.GROUP?i.DrawingApplyType.UNGROUP:i.DrawingApplyType.GROUP;return o.pushUndoRedo({unitID:s,undoMutations:[{id:i.SetDrawingApplyMutation.id,params:{op:l,unitId:s,subUnitId:c,objects:this._invertGroupOperationObjects(d,n),type:e}}],redoMutations:[{id:i.SetDrawingApplyMutation.id,params:{op:u,unitId:s,subUnitId:c,objects:d,type:n}}]}),!0}return!1}_invertGroupOperationObjects(e,t){return t===i.DrawingApplyType.GROUP?e.map(e=>{let{parent:t,children:n}=e,r=t.transform||{width:0,height:0};return{parent:{...t,transform:{left:0,top:0}},children:n.map(e=>({...e,transform:(0,a.transformObjectOutOfGroup)(e.transform||{},r,r.width||0,r.height||0,t.groupBaseBound),groupId:void 0}))}}):e.map(e=>{let{parent:t,children:n}=e,r=(0,a.getGroupState)(0,0,n.map(e=>e.transform||{}));return{parent:{...t,transform:r},children:n.map(e=>({...e,groupId:t.drawingId}))}})}};o.FWorksheet.extend(_);var v=class extends t.FEnum{get DrawingType(){return e.DrawingTypeEnum}get SheetDrawingAnchorType(){return i.SheetDrawingAnchorType}};t.FEnum.extend(v);var y=class extends t.FEventName{get BeforeFloatDomAdd(){return`BeforeFloatDomAdd`}get FloatDomAdded(){return`FloatDomAdded`}get BeforeFloatDomUpdate(){return`BeforeFloatDomUpdate`}get FloatDomUpdated(){return`FloatDomUpdated`}get BeforeFloatDomDelete(){return`BeforeFloatDomDelete`}get FloatDomDeleted(){return`FloatDomDeleted`}get BeforeOverGridImageChange(){return`BeforeOverGridImageChange`}get OverGridImageChanged(){return`OverGridImageChanged`}get BeforeOverGridImageInsert(){return`BeforeOverGridImageInsert`}get OverGridImageInserted(){return`OverGridImageInserted`}get BeforeOverGridImageRemove(){return`BeforeOverGridImageRemove`}get OverGridImageRemoved(){return`OverGridImageRemoved`}get BeforeOverGridImageSelect(){return`BeforeOverGridImageSelect`}get OverGridImageSelected(){return`OverGridImageSelected`}};t.FEventName.extend(y);var b=class extends t.FUniver{_initialize(t){let r=t.get(e.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageInsert,()=>r.beforeCommandExecuted(t=>{if(t.id!==i.InsertSheetDrawingCommand.id)return;let n=t.params,r=this.getActiveWorkbook();if(r==null||n==null)return;let{drawings:a}=n,o={workbook:r,insertImageParams:a};if(this.fireEvent(this.Event.BeforeOverGridImageInsert,o),o.cancel)throw new e.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageRemove,()=>r.beforeCommandExecuted(r=>{if(r.id!==i.RemoveSheetDrawingCommand.id)return;let a=r.params,o=this.getActiveWorkbook();if(o==null||a==null)return;let s=t.get(n.IDrawingManagerService),{drawings:c}=a,l=c.map(e=>s.getDrawingByParam(e)),u={workbook:o,images:this._createFOverGridImage(l)};if(this.fireEvent(this.Event.BeforeOverGridImageRemove,u),u.cancel)throw new e.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageChange,()=>r.beforeCommandExecuted(r=>{if(r.id!==i.SetSheetDrawingCommand.id)return;let a=r.params,o=this.getActiveWorkbook();if(o==null||a==null)return;let{drawings:s}=a,c=t.get(n.IDrawingManagerService),l=[];s.forEach(e=>{let t=c.getDrawingByParam(e);t!=null&&l.push({changeParam:e,image:this._injector.createInstance(g,t)})});let u={workbook:o,images:l};if(this.fireEvent(this.Event.BeforeOverGridImageChange,u),u.cancel)throw c.updateNotification(s),new e.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageSelect,()=>r.beforeCommandExecuted(r=>{if(r.id!==n.SetDrawingSelectedOperation.id)return;let i=r.params,a=this.getActiveWorkbook();if(a==null)return;let o=t.get(n.IDrawingManagerService),s=o.getFocusDrawings(),c=i.map(e=>o.getDrawingByParam(e)),l={workbook:a,selectedImages:this._createFOverGridImage(c),oldSelectedImages:this._createFOverGridImage(s)};if(this.fireEvent(this.Event.BeforeOverGridImageSelect,l),l.cancel)throw new e.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageInserted,()=>r.onCommandExecuted(e=>{if(e.id!==i.InsertSheetDrawingCommand.id)return;let t=e.params,n=this.getActiveWorkbook();if(n==null||t==null)return;let{drawings:r}=t,a={workbook:n,images:this._createFOverGridImage(r)};this.fireEvent(this.Event.OverGridImageInserted,a)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageRemoved,()=>r.onCommandExecuted(e=>{if(e.id!==i.RemoveSheetDrawingCommand.id)return;let t=e.params,n=this.getActiveWorkbook();if(n==null||t==null)return;let{drawings:r}=t,a={workbook:n,removeImageParams:r};this.fireEvent(this.Event.OverGridImageRemoved,a)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageChanged,()=>r.onCommandExecuted(e=>{if(e.id!==i.SetSheetDrawingCommand.id)return;let r=e.params,a=this.getActiveWorkbook();if(a==null||r==null)return;let{drawings:o}=r,s=t.get(n.IDrawingManagerService),c={workbook:a,images:o.map(e=>this._injector.createInstance(g,s.getDrawingByParam(e)))};this.fireEvent(this.Event.OverGridImageChanged,c)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageSelected,()=>r.onCommandExecuted(e=>{if(e.id!==n.SetDrawingSelectedOperation.id)return;let r=e.params,i=this.getActiveWorkbook();if(i==null)return;let a=t.get(n.IDrawingManagerService),o=r.map(e=>a.getDrawingByParam(e)),s={workbook:i,selectedImages:this._createFOverGridImage(o)};this.fireEvent(this.Event.OverGridImageSelected,s)})))}_createFOverGridImage(e){return e.map(e=>this._injector.createInstance(g,e))}};t.FUniver.extend(b)});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(require("@univerjs/core"),require("@univerjs/core/facade"),require("@univerjs/drawing"),require("@univerjs/sheets"),require("@univerjs/sheets-drawing"),require("@univerjs/engine-render"),require("@univerjs/sheets/facade")):typeof define==`function`&&define.amd?define([`@univerjs/core`,`@univerjs/core/facade`,`@univerjs/drawing`,`@univerjs/sheets`,`@univerjs/sheets-drawing`,`@univerjs/engine-render`,`@univerjs/sheets/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverCore,e.UniverCoreFacade,e.UniverDrawing,e.UniverSheets,e.UniverSheetsDrawing,e.UniverEngineRender,e.UniverSheetsFacade))})(this,function(e,t,n,r,i,a,o){function s(e){"@babel/helpers - typeof";return s=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},s(e)}function c(e,t){if(s(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(s(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e){var t=c(e,`string`);return s(t)==`symbol`?t:t+``}function u(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t){return function(n,r){t(n,r,e)}}function f(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}function p(e,t){let{from:n,to:i,flipY:a=!1,flipX:o=!1,angle:s=0,skewX:c=0,skewY:l=0}=e.sheetTransform,{column:u,columnOffset:d,row:f,rowOffset:p}=n,{width:m,height:h}=(0,r.convertPositionSheetOverGridToAbsolute)(e.unitId,e.subUnitId,{from:n,to:i},t);return{...e,column:u,columnOffset:d,row:f,rowOffset:p,width:m,height:h,flipY:a,flipX:o,angle:s,skewX:c,skewY:l}}function m(e,t){let n=t.ensureSkeleton(e.unitId,e.subUnitId);if(!n)throw Error(`Skeleton for unitId ${e.unitId} and subUnitId ${e.subUnitId} not found`);let{column:a,columnOffset:o,row:s,rowOffset:c,flipY:l=!1,flipX:u=!1,angle:d=0,skewX:f=0,skewY:p=0,width:m,height:h}=e,{sheetTransform:g,transform:_}=(0,r.convertPositionCellToSheetOverGrid)(e.unitId,e.subUnitId,{column:a,columnOffset:o,row:s,rowOffset:c},m,h,n);return{...e,sheetTransform:{...g,flipY:l,flipX:u,angle:d,skewX:f,skewY:p},transform:{..._,flipY:l,flipX:u,angle:d,skewX:f,skewY:p},axisAlignSheetTransform:(0,i.transformToAxisAlignPosition)(_,n)}}let h=class{constructor(t,n,r){this._sheetSkeletonService=r,u(this,`_image`,void 0),u(this,`_placement`,void 0),this._image={drawingId:(0,e.generateRandomId)(6),drawingType:e.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:e.ImageSourceType.BASE64,source:``,unitId:t,subUnitId:n,column:0,columnOffset:0,row:0,rowOffset:0,width:0,height:0,axisAlignSheetTransform:{from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}}}}setImage(e){let{unitId:t,subUnitId:n}=e,r=this._sheetSkeletonService.getSkeleton(t,n);if(!r)throw Error(`Skeleton for unitId ${t} and subUnitId ${n} not found`);return e.sheetTransform??={from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}},e.axisAlignSheetTransform??={from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}},this._image=p(e,r),this}setSource(t,n){let r=n??e.ImageSourceType.URL;return this._image.source=t,this._image.imageSourceType=r,this}getSource(){return this._image.source}getSourceType(){return this._image.imageSourceType}setColumn(e){return this._image.column=e,this}setRow(e){return this._image.row=e,this}setColumnOffset(e){return this._image.columnOffset=e,this}setRowOffset(e){return this._image.rowOffset=e,this}setWidth(e){return this._image.width=e,this}setHeight(e){return this._image.height=e,this}setAnchorType(e){return this._image.anchorType=e,this}setPlacement(e){return this._placement=e,this}setCropTop(e){return this._initializeSrcRect(),this._image.srcRect.top=e,this}setCropLeft(e){return this._initializeSrcRect(),this._image.srcRect.left=e,this}setCropBottom(e){return this._initializeSrcRect(),this._image.srcRect.bottom=e,this}setCropRight(e){return this._initializeSrcRect(),this._image.srcRect.right=e,this}_initializeSrcRect(){this._image.srcRect??(this._image.srcRect={top:0,left:0,bottom:0,right:0})}setRotate(e){return this._image.angle=e,this}setUnitId(e){return this._image.unitId=e,this}setSubUnitId(e){return this._image.subUnitId=e,this}async buildAsync(){var e;let t=this._sheetSkeletonService;if(!this._placement&&(this._image.width===0||this._image.height===0)){let e=await(0,n.getImageSize)(this._image.source),t=e.width,r=e.height;this._image.width===0&&(this._image.width=t),this._image.height===0&&(this._image.height=r)}if(((e=this._placement)==null?void 0:e.kind)===i.SheetDrawingAnchorType.None){let{left:e,top:t,width:n,height:r}=`bounds`in this._placement?this._placement.bounds:this._placement,a={from:{column:0,columnOffset:e,row:0,rowOffset:t},to:{column:0,columnOffset:e+n,row:0,rowOffset:t+r}};return(0,i.applySheetDrawingPlacement)({...this._image,transform:{left:e,top:t,width:n,height:r,flipY:this._image.flipY,flipX:this._image.flipX,angle:this._image.angle,skewX:this._image.skewX,skewY:this._image.skewY},sheetTransform:a,axisAlignSheetTransform:a},this._placement)}let r=m(this._image,t);if(!this._placement)return r;let a=t.ensureSkeleton(r.unitId,r.subUnitId);return(0,i.applySheetDrawingPlacement)(r,this._placement,a)}};h=f([d(2,(0,e.Inject)(r.SheetSkeletonService))],h);let g=class extends t.FBase{constructor(e,t,n,r,i){super(),this._image=e,this._commandService=t,this._injector=n,this._sheetDrawingService=r,this._sheetSkeletonService=i}getId(){return this._image.drawingId}getType(){return this._image.drawingType}getPlacement(){return(0,i.getSheetDrawingPlacement)(this._sheetDrawingService.getDrawingByParam({unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingId:this._image.drawingId})??this._image)}setPlacement(e){return this._commandService.syncExecuteCommand(i.SetSheetDrawingPlacementCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawings:[{drawingId:this._image.drawingId,placement:e}]})}remove(){return this._commandService.syncExecuteCommand(i.RemoveSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}toBuilder(){let e=this._injector.createInstance(h,this._image.unitId,this._image.subUnitId);return e.setImage(this._image),e}setSource(t,n){let r=n??e.ImageSourceType.URL;return this._image.source=t,this._image.imageSourceType=r,this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}async setPositionAsync(e,t,n,r){let a=this.toBuilder();a.setColumn(t),a.setRow(e),n!=null&&a.setRowOffset(n),r!=null&&a.setColumnOffset(r);let o=await a.buildAsync();return this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[o]})}async setSizeAsync(e,t){let n=this.toBuilder();n.setWidth(e),n.setHeight(t);let r=await n.buildAsync();return this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[r]})}setCrop(e,t,n,r){return this._image.srcRect??(this._image.srcRect={top:0,left:0,bottom:0,right:0}),e!=null&&(this._image.srcRect.top=e),t!=null&&(this._image.srcRect.left=t),n!=null&&(this._image.srcRect.bottom=n),r!=null&&(this._image.srcRect.right=r),this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setRotate(e){if(this._image.sheetTransform.angle=e,this._image.transform&&(this._image.transform.angle=e),this._image.transform){let e=this._sheetSkeletonService.getSkeleton(this._image.unitId,this._image.subUnitId);if(!e)throw Error(`Skeleton for unitId ${this._image.unitId} and subUnitId ${this._image.subUnitId} not found`);this._image.axisAlignSheetTransform&&(this._image.axisAlignSheetTransform=(0,i.transformToAxisAlignPosition)(this._image.transform,e))}return this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setForward(){return this._commandService.syncExecuteCommand(i.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:e.ArrangeTypeEnum.forward})}setBackward(){return this._commandService.syncExecuteCommand(i.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:e.ArrangeTypeEnum.backward})}setBack(){return this._commandService.syncExecuteCommand(i.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:e.ArrangeTypeEnum.back})}setFront(){return this._commandService.syncExecuteCommand(i.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:e.ArrangeTypeEnum.front})}};g=f([d(1,e.ICommandService),d(2,(0,e.Inject)(e.Injector)),d(3,i.ISheetDrawingService),d(4,(0,e.Inject)(r.SheetSkeletonService))],g);var _=class extends o.FWorksheet{_initialize(t){this._sheetDrawingService=t.get(i.ISheetDrawingService),this._sheetSkeletonService=t.get(r.SheetSkeletonService),this._undoRedoService=t.get(e.IUndoRedoService)}async insertImage(t,n,r,a,o){let s=this.newOverGridImage();if(typeof t==`string`)s.setSource(t);else{let n=await t.getBlob().getDataAsString();s.setSource(n,e.ImageSourceType.BASE64)}n===void 0?s.setColumn(0):s.setColumn(n),r===void 0?s.setRow(0):s.setRow(r),a===void 0?s.setColumnOffset(0):s.setColumnOffset(a),o===void 0?s.setRowOffset(0):s.setRowOffset(o);let c=await s.buildAsync();return this._commandService.syncExecuteCommand(i.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:[c]})}insertImages(e){let t=e.map(e=>(e.unitId=this._fWorkbook.getId(),e.subUnitId=this.getSheetId(),e));return this._commandService.syncExecuteCommand(i.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}deleteImages(e){let t=e.map(e=>({unitId:this._fWorkbook.getId(),drawingId:e.getId(),subUnitId:this.getSheetId(),drawingType:e.getType()}));return this._commandService.syncExecuteCommand(i.RemoveSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}getImages(){let t=this._sheetDrawingService.getDrawingData(this._fWorkbook.getId(),this.getSheetId()),n=[];for(let r in t){let i=t[r];i.drawingType===e.DrawingTypeEnum.DRAWING_IMAGE&&n.push(this._injector.createInstance(g,i))}return n}getImageById(t){let n=this._sheetDrawingService.getDrawingByParam({unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawingId:t});return n&&n.drawingType===e.DrawingTypeEnum.DRAWING_IMAGE?this._injector.createInstance(g,n):null}getActiveImages(){let e=this._sheetDrawingService.getFocusDrawings(),t=[];for(let n in e){let r=e[n];t.push(this._injector.createInstance(g,r))}return t}updateImages(e){return this._commandService.syncExecuteCommand(i.SetSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:e}),this}getDrawingPlacement(e){let t=this._sheetDrawingService.getDrawingByParam({unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawingId:e});return t?(0,i.getSheetDrawingPlacement)(t):null}setDrawingPlacement(e,t){return this._commandService.syncExecuteCommand(i.SetSheetDrawingPlacementCommand.id,{unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawings:[{drawingId:e,placement:t}]})}resolveDrawingPlacement(e){let t=e.kind===i.SheetDrawingAnchorType.None?void 0:this._sheetSkeletonService.ensureSkeleton(this._fWorkbook.getId(),this.getSheetId());if(e.kind!==i.SheetDrawingAnchorType.None&&!t)throw Error(`SHEET_DRAWING_PLACEMENT_SKELETON_REQUIRED`);return(0,i.normalizeSheetDrawingPlacement)(e,t)}getDrawingLayout(){let e=this._fWorkbook.getId(),t=this.getSheetId(),n=this._sheetSkeletonService.ensureSkeleton(e,t);if(!n)throw Error(`SHEET_DRAWING_PLACEMENT_SKELETON_REQUIRED`);let{startRow:r,endRow:a,startColumn:o,endColumn:s}=this._worksheet.getDataRealRange(),c=n.getCellWithCoordByIndex(r,o,!1),l=n.getCellWithCoordByIndex(a,s,!1),u=this._sheetDrawingService,d=u.getDrawingData(e,t),f=u.getDrawingOrder(e,t),p=[...f,...Object.keys(d).filter(e=>!f.includes(e))],m=[];for(let e of p){let t=d[e],n=t&&v(t);!t||!n||m.push({drawingId:e,drawingType:t.drawingType,bounds:n,placement:(0,i.getSheetDrawingPlacement)(t),groupId:t.groupId})}return{gridBounds:{left:0,top:0,width:n.columnTotalWidth,height:n.rowTotalHeight},dataBounds:{left:c.startX,top:c.startY,width:l.endX-c.startX,height:l.endY-c.startY},drawings:m}}newOverGridImage(){let e=this._fWorkbook.getId(),t=this.getSheetId();return this._injector.createInstance(h,e,t)}groupDrawings(t,r=(0,e.generateRandomId)(10)){let o=Array.from(new Set(t));if(o.length<2)return null;let s=this._fWorkbook.getId(),c=this.getSheetId(),l=this._sheetDrawingService;if(l.getDrawingByParam({unitId:s,subUnitId:c,drawingId:r}))return null;let u=o.map(e=>l.getDrawingByParam({unitId:s,subUnitId:c,drawingId:e}));if(u.some(e=>!e)||u.some(e=>!(0,n.isGroupableDrawingType)(e.drawingType)))return null;let d=u,f=(0,a.getGroupState)(0,0,d.map(e=>e.transform||{})),p={unitId:s,subUnitId:c,drawingId:r,drawingType:e.DrawingTypeEnum.DRAWING_GROUP,transform:f,groupBaseBound:{left:f.left,top:f.top,width:f.width,height:f.height}},m=d.map(e=>({...e,groupId:r}));return this._applyGroupDrawingOperation([{parent:p,children:m}],i.DrawingApplyType.GROUP)?r:null}ungroupDrawings(t){let n=this._fWorkbook.getId(),r=this.getSheetId(),o=this._sheetDrawingService,s=[];for(let i of t){let t=o.getDrawingByParam({unitId:n,subUnitId:r,drawingId:i});if(!t||t.drawingType!==e.DrawingTypeEnum.DRAWING_GROUP)continue;let c=t.transform||{width:0,height:0},l=o.getDrawingsByGroup({unitId:n,subUnitId:r,drawingId:i}).map(e=>{let n=(0,a.transformObjectOutOfGroup)(e.transform||{},c,c.width||0,c.height||0,t.groupBaseBound);return{...e,transform:{...e.transform,...n},groupId:void 0}});l.length>0&&s.push({parent:t,children:l})}return this._applyGroupDrawingOperation(s,i.DrawingApplyType.UNGROUP)}getDrawingGroupChildren(e,t=!1){let n=this._fWorkbook.getId(),r=this.getSheetId(),i=this._sheetDrawingService;if(!t)return i.getDrawingsByGroup({unitId:n,subUnitId:r,drawingId:e});let a=i.getDrawingsByGroupNested({unitId:n,subUnitId:r,drawingId:e});return a?[...a.flatChildren||[],...a.groups.filter(t=>t.drawingId!==e)]:[]}getDrawingParentGroup(t){let n=this._fWorkbook.getId(),r=this.getSheetId(),i=this._sheetDrawingService,a=i.getDrawingByParam({unitId:n,subUnitId:r,drawingId:t});if(!(a!=null&&a.groupId))return null;let o=i.getDrawingByParam({unitId:n,subUnitId:r,drawingId:a.groupId});return!o||o.drawingType!==e.DrawingTypeEnum.DRAWING_GROUP?null:o}isDrawingGrouped(e){return this.getDrawingParentGroup(e)!==null}_applyGroupDrawingOperation(e,t){if(e.length===0)return!1;let n=this._sheetDrawingService,r=this._commandService,a=this._undoRedoService,{unitId:o,subUnitId:s,undo:c,redo:l,objects:u}=t===i.DrawingApplyType.GROUP?n.getGroupDrawingOp(e):n.getUngroupDrawingOp(e);if(r.syncExecuteCommand(i.SetDrawingApplyMutation.id,{op:l,unitId:o,subUnitId:s,objects:u,type:t})){let e=t===i.DrawingApplyType.GROUP?i.DrawingApplyType.UNGROUP:i.DrawingApplyType.GROUP;return a.pushUndoRedo({unitID:o,undoMutations:[{id:i.SetDrawingApplyMutation.id,params:{op:c,unitId:o,subUnitId:s,objects:this._invertGroupOperationObjects(u,t),type:e}}],redoMutations:[{id:i.SetDrawingApplyMutation.id,params:{op:l,unitId:o,subUnitId:s,objects:u,type:t}}]}),!0}return!1}_invertGroupOperationObjects(e,t){return t===i.DrawingApplyType.GROUP?e.map(e=>{let{parent:t,children:n}=e,r=t.transform||{width:0,height:0};return{parent:{...t,transform:{left:0,top:0}},children:n.map(e=>({...e,transform:(0,a.transformObjectOutOfGroup)(e.transform||{},r,r.width||0,r.height||0,t.groupBaseBound),groupId:void 0}))}}):e.map(e=>{let{parent:t,children:n}=e,r=(0,a.getGroupState)(0,0,n.map(e=>e.transform||{}));return{parent:{...t,transform:r},children:n.map(e=>({...e,groupId:t.drawingId}))}})}};function v(e){let{left:t,top:n,width:r,height:i}=e.transform??{};return typeof t!=`number`||typeof n!=`number`||typeof r!=`number`||typeof i!=`number`||!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(i)?null:{left:t,top:n,width:r,height:i}}o.FWorksheet.extend(_);var y=class extends t.FEnum{get DrawingType(){return e.DrawingTypeEnum}get SheetDrawingAnchorType(){return i.SheetDrawingAnchorType}};t.FEnum.extend(y);var b=class extends t.FEventName{get BeforeFloatDomAdd(){return`BeforeFloatDomAdd`}get FloatDomAdded(){return`FloatDomAdded`}get BeforeFloatDomUpdate(){return`BeforeFloatDomUpdate`}get FloatDomUpdated(){return`FloatDomUpdated`}get BeforeFloatDomDelete(){return`BeforeFloatDomDelete`}get FloatDomDeleted(){return`FloatDomDeleted`}get BeforeOverGridImageChange(){return`BeforeOverGridImageChange`}get OverGridImageChanged(){return`OverGridImageChanged`}get BeforeOverGridImageInsert(){return`BeforeOverGridImageInsert`}get OverGridImageInserted(){return`OverGridImageInserted`}get BeforeOverGridImageRemove(){return`BeforeOverGridImageRemove`}get OverGridImageRemoved(){return`OverGridImageRemoved`}get BeforeOverGridImageSelect(){return`BeforeOverGridImageSelect`}get OverGridImageSelected(){return`OverGridImageSelected`}};t.FEventName.extend(b);var x=class extends t.FUniver{_initialize(t){let r=t.get(e.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageInsert,()=>r.beforeCommandExecuted(t=>{if(t.id!==i.InsertSheetDrawingCommand.id)return;let n=t.params,r=this.getActiveWorkbook();if(r==null||n==null)return;let{drawings:a}=n,o={workbook:r,insertImageParams:a};if(this.fireEvent(this.Event.BeforeOverGridImageInsert,o),o.cancel)throw new e.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageRemove,()=>r.beforeCommandExecuted(r=>{if(r.id!==i.RemoveSheetDrawingCommand.id)return;let a=r.params,o=this.getActiveWorkbook();if(o==null||a==null)return;let s=t.get(n.IDrawingManagerService),{drawings:c}=a,l=c.map(e=>s.getDrawingByParam(e)),u={workbook:o,images:this._createFOverGridImage(l)};if(this.fireEvent(this.Event.BeforeOverGridImageRemove,u),u.cancel)throw new e.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageChange,()=>r.beforeCommandExecuted(r=>{if(r.id!==i.SetSheetDrawingCommand.id)return;let a=r.params,o=this.getActiveWorkbook();if(o==null||a==null)return;let{drawings:s}=a,c=t.get(n.IDrawingManagerService),l=[];s.forEach(e=>{let t=c.getDrawingByParam(e);t!=null&&l.push({changeParam:e,image:this._injector.createInstance(g,t)})});let u={workbook:o,images:l};if(this.fireEvent(this.Event.BeforeOverGridImageChange,u),u.cancel)throw c.updateNotification(s),new e.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageSelect,()=>r.beforeCommandExecuted(r=>{if(r.id!==n.SetDrawingSelectedOperation.id)return;let i=r.params,a=this.getActiveWorkbook();if(a==null)return;let o=t.get(n.IDrawingManagerService),s=o.getFocusDrawings(),c=i.map(e=>o.getDrawingByParam(e)),l={workbook:a,selectedImages:this._createFOverGridImage(c),oldSelectedImages:this._createFOverGridImage(s)};if(this.fireEvent(this.Event.BeforeOverGridImageSelect,l),l.cancel)throw new e.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageInserted,()=>r.onCommandExecuted(e=>{if(e.id!==i.InsertSheetDrawingCommand.id)return;let t=e.params,n=this.getActiveWorkbook();if(n==null||t==null)return;let{drawings:r}=t,a={workbook:n,images:this._createFOverGridImage(r)};this.fireEvent(this.Event.OverGridImageInserted,a)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageRemoved,()=>r.onCommandExecuted(e=>{if(e.id!==i.RemoveSheetDrawingCommand.id)return;let t=e.params,n=this.getActiveWorkbook();if(n==null||t==null)return;let{drawings:r}=t,a={workbook:n,removeImageParams:r};this.fireEvent(this.Event.OverGridImageRemoved,a)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageChanged,()=>r.onCommandExecuted(e=>{if(e.id!==i.SetSheetDrawingCommand.id)return;let r=e.params,a=this.getActiveWorkbook();if(a==null||r==null)return;let{drawings:o}=r,s=t.get(n.IDrawingManagerService),c={workbook:a,images:o.map(e=>this._injector.createInstance(g,s.getDrawingByParam(e)))};this.fireEvent(this.Event.OverGridImageChanged,c)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageSelected,()=>r.onCommandExecuted(e=>{if(e.id!==n.SetDrawingSelectedOperation.id)return;let r=e.params,i=this.getActiveWorkbook();if(i==null)return;let a=t.get(n.IDrawingManagerService),o=r.map(e=>a.getDrawingByParam(e)),s={workbook:i,selectedImages:this._createFOverGridImage(o)};this.fireEvent(this.Event.OverGridImageSelected,s)})))}_createFOverGridImage(e){return e.map(e=>this._injector.createInstance(g,e))}};t.FUniver.extend(x)});