@univerjs/sheets-drawing 1.0.3 → 1.1.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.
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { CopySheetCommand, DeleteRangeMoveLeftCommand, DeleteRangeMoveUpCommand, DeltaColumnWidthCommand, DeltaRowHeightCommand, InsertColCommand, InsertRangeMoveDownCommand, InsertRangeMoveRightCommand, InsertRowCommand, MoveColsCommand, MoveRangeCommand, MoveRowsCommand, RemoveColCommand, RemoveRowCommand, RemoveSheetCommand, SetColHiddenCommand, SetColHiddenMutation, SetColVisibleMutation, SetColWidthCommand, SetRowHeightCommand, SetRowHiddenCommand, SetRowHiddenMutation, SetRowVisibleMutation, SetSpecificColsVisibleCommand, SetSpecificRowsVisibleCommand, SetWorksheetColWidthMutation, SetWorksheetRowAutoHeightMutation, SetWorksheetRowHeightMutation, SetWorksheetRowIsAutoHeightMutation, SheetInterceptorService, SheetSkeletonService, SheetsSelectionsService, UniverSheetsPlugin, attachRangeWithCoord, convertPositionCellToSheetOverGrid, convertPositionSheetOverGridToAbsolute, getSheetCommandTarget } from "@univerjs/sheets";
2
- import { ArrangeTypeEnum, CommandType, DependentOn, Disposable, DrawingTypeEnum, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, Plugin, RANGE_TYPE, Rectangle, UniverInstanceType, createIdentifier, merge, sequenceExecute, toDisposable } from "@univerjs/core";
1
+ import { CopySheetCommand, DeleteRangeMoveLeftCommand, DeleteRangeMoveUpCommand, DeltaColumnWidthCommand, DeltaRowHeightCommand, InsertColCommand, InsertRangeMoveDownCommand, InsertRangeMoveRightCommand, InsertRowCommand, MoveColsCommand, MoveRangeCommand, MoveRowsCommand, RemoveColCommand, RemoveRowCommand, RemoveSheetCommand, SetColHiddenCommand, SetColHiddenMutation, SetColVisibleMutation, SetColWidthCommand, SetRowHeightCommand, SetRowHiddenCommand, SetRowHiddenMutation, SetRowVisibleMutation, SetSpecificColsVisibleCommand, SetSpecificRowsVisibleCommand, SetWorksheetColWidthMutation, SetWorksheetRowAutoHeightMutation, SetWorksheetRowHeightMutation, SetWorksheetRowIsAutoHeightMutation, SheetInterceptorService, SheetSkeletonService, UniverSheetsPlugin, attachRangeWithCoord, convertPositionCellToSheetOverGrid, convertPositionSheetOverGridToAbsolute, getSheetCommandTarget } from "@univerjs/sheets";
2
+ import { ArrangeTypeEnum, CommandType, DependentOn, Disposable, DrawingTypeEnum, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, Plugin, Rectangle, UniverInstanceType, createIdentifier, merge, sequenceExecute, toDisposable } from "@univerjs/core";
3
3
  import { IDrawingManagerService, UnitDrawingService, UniverDrawingPlugin, getOrCreateDrawingCopyPlan, resolveDrawingRotateEnabled } from "@univerjs/drawing";
4
4
  import { IRenderManagerService } from "@univerjs/engine-render";
5
5
 
@@ -365,7 +365,7 @@ function getSheetDrawingPlacement(drawing) {
365
365
  };
366
366
  }
367
367
  function applySheetDrawingPlacement(drawing, input, skeleton) {
368
- const placement = normalizeSheetDrawingPlacement(input, skeleton);
368
+ const placement = normalizePlacement(input, skeleton, drawing.drawingType === DrawingTypeEnum.DRAWING_IMAGE || drawing.drawingType === DrawingTypeEnum.DRAWING_DOM);
369
369
  if (placement.kind === "2") {
370
370
  const transform = withExistingTransform(drawing.transform, placement);
371
371
  const sheetTransform = absoluteSheetTransform(placement, drawing.sheetTransform);
@@ -409,15 +409,18 @@ function applySheetDrawingPlacement(drawing, input, skeleton) {
409
409
  * Position, Both, or None Placement.
410
410
  */
411
411
  function normalizeSheetDrawingPlacement(input, skeleton) {
412
+ return normalizePlacement(input, skeleton, false);
413
+ }
414
+ function normalizePlacement(input, skeleton, requiresArea) {
412
415
  if (!("bounds" in input)) {
413
- validatePlacement(input);
416
+ validatePlacement(input, requiresArea);
414
417
  if (input.kind === "1" && skeleton) validateBounds(convertPositionSheetOverGridToAbsolute(skeleton.worksheet.getUnitId(), skeleton.worksheet.getSheetId(), {
415
418
  from: input.from,
416
419
  to: input.to
417
- }, skeleton));
420
+ }, skeleton), requiresArea);
418
421
  return input;
419
422
  }
420
- validateBounds(input.bounds);
423
+ validateBounds(input.bounds, requiresArea);
421
424
  if (input.kind === "2") return {
422
425
  kind: "2",
423
426
  ...input.bounds
@@ -470,10 +473,10 @@ function absoluteSheetTransform(placement, current) {
470
473
  }
471
474
  };
472
475
  }
473
- function validatePlacement(placement) {
476
+ function validatePlacement(placement, requiresArea) {
474
477
  if (placement.kind === "0") {
475
478
  validateCellPosition(placement.from);
476
- validateExtent(placement.width, placement.height);
479
+ validateExtent(placement.width, placement.height, requiresArea);
477
480
  return;
478
481
  }
479
482
  if (placement.kind === "1") {
@@ -483,20 +486,24 @@ function validatePlacement(placement) {
483
486
  }
484
487
  if (placement.kind === "2") {
485
488
  if (!Number.isFinite(placement.left) || !Number.isFinite(placement.top)) throw new TypeError("SHEET_DRAWING_PLACEMENT_POSITION_INVALID");
486
- validateExtent(placement.width, placement.height);
489
+ validateExtent(placement.width, placement.height, requiresArea);
487
490
  return;
488
491
  }
489
492
  throw new Error("SHEET_DRAWING_PLACEMENT_KIND_INVALID");
490
493
  }
491
- function validateBounds(bounds) {
494
+ function validateBounds(bounds, requiresArea) {
492
495
  if (!Number.isFinite(bounds.left) || !Number.isFinite(bounds.top)) throw new TypeError("SHEET_DRAWING_PLACEMENT_POSITION_INVALID");
493
- validateExtent(bounds.width, bounds.height);
496
+ validateExtent(bounds.width, bounds.height, requiresArea);
494
497
  }
495
498
  function validateCellPosition(position) {
496
499
  if (!Number.isInteger(position.row) || !Number.isInteger(position.column) || position.row < 0 || position.column < 0 || !Number.isFinite(position.rowOffset) || !Number.isFinite(position.columnOffset)) throw new Error("SHEET_DRAWING_PLACEMENT_CELL_INVALID");
497
500
  }
498
- function validateExtent(width, height) {
499
- if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) throw new Error("SHEET_DRAWING_PLACEMENT_EXTENT_INVALID");
501
+ function validateExtent(width, height, requiresArea) {
502
+ const hasInvalidZeroExtent = requiresArea ? width === 0 || height === 0 : width === 0 && height === 0;
503
+ if (!Number.isFinite(width) || !Number.isFinite(height) || width < 0 || height < 0 || hasInvalidZeroExtent) throw Object.assign(/* @__PURE__ */ new Error("SHEET_DRAWING_PLACEMENT_EXTENT_INVALID"), {
504
+ width,
505
+ height
506
+ });
500
507
  }
501
508
 
502
509
  //#endregion
@@ -735,7 +742,7 @@ const SetWorksheetBackgroundImageCommand = {
735
742
  };
736
743
 
737
744
  //#endregion
738
- //#region \0@oxc-project+runtime@0.149.0/helpers/esm/decorateParam.js
745
+ //#region \0@oxc-project+runtime@0.153.0/helpers/esm/decorateParam.js
739
746
  function __decorateParam(paramIndex, decorator) {
740
747
  return function(target, key) {
741
748
  decorator(target, key, paramIndex);
@@ -743,7 +750,7 @@ function __decorateParam(paramIndex, decorator) {
743
750
  }
744
751
 
745
752
  //#endregion
746
- //#region \0@oxc-project+runtime@0.149.0/helpers/esm/decorate.js
753
+ //#region \0@oxc-project+runtime@0.153.0/helpers/esm/decorate.js
747
754
  function __decorate(decorators, target, key, desc) {
748
755
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
749
756
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -927,7 +934,7 @@ SheetsDrawingLoadController = __decorate([
927
934
  //#endregion
928
935
  //#region package.json
929
936
  var name = "@univerjs/sheets-drawing";
930
- var version = "1.0.3";
937
+ var version = "1.1.0";
931
938
 
932
939
  //#endregion
933
940
  //#region src/config/config.ts
@@ -951,7 +958,7 @@ const configSymbol = Symbol(SHEETS_DRAWING_PLUGIN_CONFIG_KEY);
951
958
  const defaultPluginConfig = {};
952
959
 
953
960
  //#endregion
954
- //#region \0@oxc-project+runtime@0.149.0/helpers/esm/typeof.js
961
+ //#region \0@oxc-project+runtime@0.153.0/helpers/esm/typeof.js
955
962
  function _typeof(o) {
956
963
  "@babel/helpers - typeof";
957
964
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -962,7 +969,7 @@ function _typeof(o) {
962
969
  }
963
970
 
964
971
  //#endregion
965
- //#region \0@oxc-project+runtime@0.149.0/helpers/esm/toPrimitive.js
972
+ //#region \0@oxc-project+runtime@0.153.0/helpers/esm/toPrimitive.js
966
973
  function toPrimitive(t, r) {
967
974
  if ("object" != _typeof(t) || !t) return t;
968
975
  var e = t[Symbol.toPrimitive];
@@ -975,14 +982,14 @@ function toPrimitive(t, r) {
975
982
  }
976
983
 
977
984
  //#endregion
978
- //#region \0@oxc-project+runtime@0.149.0/helpers/esm/toPropertyKey.js
985
+ //#region \0@oxc-project+runtime@0.153.0/helpers/esm/toPropertyKey.js
979
986
  function toPropertyKey(t) {
980
987
  var i = toPrimitive(t, "string");
981
988
  return "symbol" == _typeof(i) ? i : i + "";
982
989
  }
983
990
 
984
991
  //#endregion
985
- //#region \0@oxc-project+runtime@0.149.0/helpers/esm/defineProperty.js
992
+ //#region \0@oxc-project+runtime@0.153.0/helpers/esm/defineProperty.js
986
993
  function _defineProperty(e, r, t) {
987
994
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
988
995
  value: t,
@@ -1061,12 +1068,11 @@ const REFRESH_MUTATIONS = [
1061
1068
  SetWorksheetColWidthMutation.id
1062
1069
  ];
1063
1070
  let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffectedController extends Disposable {
1064
- constructor(_commandService, _sheetSkeletonService, _sheetInterceptorService, _selectionManagerService, _sheetDrawingService, _drawingManagerService, _univerInstanceService, _transformPlanService) {
1071
+ constructor(_commandService, _sheetSkeletonService, _sheetInterceptorService, _sheetDrawingService, _drawingManagerService, _univerInstanceService, _transformPlanService) {
1065
1072
  super();
1066
1073
  this._commandService = _commandService;
1067
1074
  this._sheetSkeletonService = _sheetSkeletonService;
1068
1075
  this._sheetInterceptorService = _sheetInterceptorService;
1069
- this._selectionManagerService = _selectionManagerService;
1070
1076
  this._sheetDrawingService = _sheetDrawingService;
1071
1077
  this._drawingManagerService = _drawingManagerService;
1072
1078
  this._univerInstanceService = _univerInstanceService;
@@ -1127,70 +1133,13 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
1127
1133
  const { range } = params;
1128
1134
  return this._getRangeMoveUndo(range, 3);
1129
1135
  } else if (id === SetRowHiddenCommand.id || id === SetSpecificRowsVisibleCommand.id) {
1130
- var _this$_selectionManag;
1131
- const _params = params;
1132
- const target = getSheetCommandTarget(this._univerInstanceService, _params);
1133
- if (!target) return {
1134
- redos: [],
1135
- undos: []
1136
- };
1137
- const { unitId, subUnitId } = target;
1138
- const ranges = _params.ranges || ((_this$_selectionManag = this._selectionManagerService.getCurrentSelections()) === null || _this$_selectionManag === void 0 ? void 0 : _this$_selectionManag.map((s) => s.range).filter((r) => r.rangeType === RANGE_TYPE.ROW));
1139
- if (!ranges || ranges.length === 0) return {
1140
- redos: [],
1141
- undos: []
1142
- };
1136
+ const { unitId, subUnitId, ranges } = params;
1143
1137
  return this._getDrawingUndoForRowVisible(unitId, subUnitId, ranges);
1144
1138
  } else if (id === SetColHiddenCommand.id || id === SetSpecificColsVisibleCommand.id) {
1145
- var _this$_selectionManag2;
1146
- const _params = params;
1147
- const target = getSheetCommandTarget(this._univerInstanceService, _params);
1148
- if (!target) return {
1149
- redos: [],
1150
- undos: []
1151
- };
1152
- const { unitId, subUnitId } = target;
1153
- const ranges = _params.ranges || ((_this$_selectionManag2 = this._selectionManagerService.getCurrentSelections()) === null || _this$_selectionManag2 === void 0 ? void 0 : _this$_selectionManag2.map((s) => s.range).filter((r) => r.rangeType === RANGE_TYPE.COLUMN));
1154
- if (!ranges || ranges.length === 0) return {
1155
- redos: [],
1156
- undos: []
1157
- };
1139
+ const { unitId, subUnitId, ranges } = params;
1158
1140
  return this._getDrawingUndoForColVisible(unitId, subUnitId, ranges);
1159
- } else if (id === DeltaRowHeightCommand.id || id === DeltaColumnWidthCommand.id) {
1160
- const target = getSheetCommandTarget(this._univerInstanceService);
1161
- if (!target) return {
1162
- redos: [],
1163
- undos: []
1164
- };
1165
- const { unitId, subUnitId, worksheet } = target;
1166
- const ranges = [];
1167
- if (id === DeltaRowHeightCommand.id) ranges.push({
1168
- startRow: params.anchorRow,
1169
- endRow: params.anchorRow,
1170
- startColumn: 0,
1171
- endColumn: worksheet.getColumnCount() - 1
1172
- });
1173
- else ranges.push({
1174
- startRow: 0,
1175
- endRow: worksheet.getRowCount() - 1,
1176
- startColumn: params.anchorCol,
1177
- endColumn: params.anchorCol
1178
- });
1179
- return this._getDrawingUndoForRowAndColSize(unitId, subUnitId, ranges);
1180
- } else if (id === SetRowHeightCommand.id || id === SetColWidthCommand.id) {
1181
- var _this$_selectionManag3;
1182
- const _params = params;
1183
- const target = getSheetCommandTarget(this._univerInstanceService, _params);
1184
- if (!target) return {
1185
- redos: [],
1186
- undos: []
1187
- };
1188
- const { unitId, subUnitId } = target;
1189
- const ranges = _params.ranges || ((_this$_selectionManag3 = this._selectionManagerService.getCurrentSelections()) === null || _this$_selectionManag3 === void 0 ? void 0 : _this$_selectionManag3.map((s) => s.range));
1190
- if (!ranges || ranges.length === 0) return {
1191
- redos: [],
1192
- undos: []
1193
- };
1141
+ } else if (id === DeltaRowHeightCommand.id || id === DeltaColumnWidthCommand.id || id === SetRowHeightCommand.id || id === SetColWidthCommand.id) {
1142
+ const { unitId, subUnitId, ranges } = params;
1194
1143
  return this._getDrawingUndoForRowAndColSize(unitId, subUnitId, ranges);
1195
1144
  }
1196
1145
  return {
@@ -1354,7 +1303,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
1354
1303
  const deleteDrawings = [];
1355
1304
  const { sheetTransform, anchorType = "0", transform, unitId, subUnitId, drawingId } = drawing;
1356
1305
  const sheetSkeletonParam = this._sheetSkeletonService.getSkeletonParam(unitId, subUnitId);
1357
- if (!sheetTransform || !transform || !sheetSkeletonParam) return {
1306
+ if (anchorType === "2" || !sheetTransform || !transform || !sheetSkeletonParam) return {
1358
1307
  updateDrawings,
1359
1308
  deleteDrawings
1360
1309
  };
@@ -1694,17 +1643,13 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
1694
1643
  const { sheetTransform, transform, anchorType = "0" } = drawing;
1695
1644
  if (anchorType === "2") this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
1696
1645
  else {
1697
- const { from, to } = sheetTransform;
1698
- const { row: fromRow, column: fromColumn } = from;
1699
- const { row: toRow, column: toColumn } = to;
1646
+ const { row: toRow, column: toColumn } = sheetTransform.to;
1700
1647
  for (let i = 0; i < ranges.length; i++) {
1701
- const { startRow, endRow, startColumn, endColumn } = ranges[i];
1648
+ const { startRow, startColumn } = ranges[i];
1702
1649
  if (toRow < startRow || toColumn < startColumn) continue;
1703
1650
  if (anchorType === "0") {
1704
- if (fromRow <= startRow && toRow >= endRow || fromColumn <= startColumn && toColumn >= endColumn) {
1705
- this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
1706
- continue;
1707
- }
1651
+ updateDrawings.push(applySheetDrawingPlacement(drawing, getSheetDrawingPlacement(drawing), skeleton));
1652
+ break;
1708
1653
  }
1709
1654
  const newTransform = drawingPositionToTransform({ ...sheetTransform }, sheetSkeletonParam);
1710
1655
  if (newTransform) {
@@ -1723,10 +1668,8 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
1723
1668
  };
1724
1669
  return this._createUndoAndRedoMutation(unitId, subUnitId, updateDrawings);
1725
1670
  }
1726
- _getUnitIdAndSubUnitId(params, type) {
1727
- let target;
1728
- if (type === "insert") target = getSheetCommandTarget(this._univerInstanceService, params);
1729
- else target = getSheetCommandTarget(this._univerInstanceService);
1671
+ _getUnitIdAndSubUnitId(params) {
1672
+ const target = getSheetCommandTarget(this._univerInstanceService, params);
1730
1673
  if (!target) return;
1731
1674
  const { unitId, subUnitId } = target;
1732
1675
  return {
@@ -1791,7 +1734,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
1791
1734
  return this._finalizePlan(unitId, subUnitId, updateDrawings);
1792
1735
  }
1793
1736
  _moveRowInterceptor(params, type) {
1794
- const target = this._getUnitIdAndSubUnitId(params, type);
1737
+ const target = this._getUnitIdAndSubUnitId(params);
1795
1738
  if (!target) return {
1796
1739
  redos: [],
1797
1740
  undos: []
@@ -1859,7 +1802,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
1859
1802
  return this._finalizePlan(unitId, subUnitId, updateDrawings, deleteDrawings);
1860
1803
  }
1861
1804
  _moveColInterceptor(params, type) {
1862
- const target = this._getUnitIdAndSubUnitId(params, type);
1805
+ const target = this._getUnitIdAndSubUnitId(params);
1863
1806
  if (!target) return {
1864
1807
  redos: [],
1865
1808
  undos: []
@@ -2254,6 +2197,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
2254
2197
  }
2255
2198
  _refreshDrawingTransform(command, unitId, subUnitId, ranges) {
2256
2199
  const sheetSkeletonParam = this._getCalculatedSkeletonParam(unitId, subUnitId);
2200
+ if (!sheetSkeletonParam) return;
2257
2201
  const drawingData = this._drawingManagerService.getDrawingData(unitId, subUnitId) ?? {};
2258
2202
  const updateDrawings = [];
2259
2203
  Object.keys(drawingData).forEach((drawingId) => {
@@ -2277,7 +2221,10 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
2277
2221
  startColumn: fromColumn,
2278
2222
  endColumn: toColumn
2279
2223
  }) || fromRow > endRow || fromColumn > endColumn) {
2280
- const isPositionAnchor = anchorType === "0";
2224
+ if (anchorType === "0") {
2225
+ updateDrawings.push(applySheetDrawingPlacement(drawing, getSheetDrawingPlacement(drawing), sheetSkeletonParam.skeleton));
2226
+ break;
2227
+ }
2281
2228
  const newTransform = drawingPositionToTransform(sheetTransform, sheetSkeletonParam);
2282
2229
  updateDrawings.push({
2283
2230
  ...drawing,
@@ -2285,8 +2232,8 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
2285
2232
  ...transform,
2286
2233
  left: newTransform === null || newTransform === void 0 ? void 0 : newTransform.left,
2287
2234
  top: newTransform === null || newTransform === void 0 ? void 0 : newTransform.top,
2288
- width: isPositionAnchor ? transform === null || transform === void 0 ? void 0 : transform.width : newTransform === null || newTransform === void 0 ? void 0 : newTransform.width,
2289
- height: isPositionAnchor ? transform === null || transform === void 0 ? void 0 : transform.height : newTransform === null || newTransform === void 0 ? void 0 : newTransform.height
2235
+ width: newTransform === null || newTransform === void 0 ? void 0 : newTransform.width,
2236
+ height: newTransform === null || newTransform === void 0 ? void 0 : newTransform.height
2290
2237
  }
2291
2238
  });
2292
2239
  break;
@@ -2300,11 +2247,10 @@ SheetDrawingTransformAffectedController = __decorate([
2300
2247
  __decorateParam(0, ICommandService),
2301
2248
  __decorateParam(1, Inject(SheetSkeletonService)),
2302
2249
  __decorateParam(2, Inject(SheetInterceptorService)),
2303
- __decorateParam(3, Inject(SheetsSelectionsService)),
2304
- __decorateParam(4, ISheetDrawingService),
2305
- __decorateParam(5, IDrawingManagerService),
2306
- __decorateParam(6, IUniverInstanceService),
2307
- __decorateParam(7, Inject(SheetDrawingTransformPlanService))
2250
+ __decorateParam(3, ISheetDrawingService),
2251
+ __decorateParam(4, IDrawingManagerService),
2252
+ __decorateParam(5, IUniverInstanceService),
2253
+ __decorateParam(6, Inject(SheetDrawingTransformPlanService))
2308
2254
  ], SheetDrawingTransformAffectedController);
2309
2255
 
2310
2256
  //#endregion
@@ -15,20 +15,19 @@
15
15
  */
16
16
  import { Disposable, ICommandService, IUniverInstanceService } from '@univerjs/core';
17
17
  import { IDrawingManagerService } from '@univerjs/drawing';
18
- import { SheetInterceptorService, SheetSkeletonService, SheetsSelectionsService } from '@univerjs/sheets';
18
+ import { SheetInterceptorService, SheetSkeletonService } from '@univerjs/sheets';
19
19
  import { SheetDrawingTransformPlanService } from '../services/sheet-drawing-transform-plan.service';
20
20
  import { ISheetDrawingService } from '../services/sheet-drawing.service';
21
21
  export declare class SheetDrawingTransformAffectedController extends Disposable {
22
22
  private readonly _commandService;
23
23
  private readonly _sheetSkeletonService;
24
24
  private readonly _sheetInterceptorService;
25
- private readonly _selectionManagerService;
26
25
  private readonly _sheetDrawingService;
27
26
  private readonly _drawingManagerService;
28
27
  private readonly _univerInstanceService;
29
28
  private readonly _transformPlanService;
30
29
  private _currentCommand;
31
- constructor(_commandService: ICommandService, _sheetSkeletonService: SheetSkeletonService, _sheetInterceptorService: SheetInterceptorService, _selectionManagerService: SheetsSelectionsService, _sheetDrawingService: ISheetDrawingService, _drawingManagerService: IDrawingManagerService, _univerInstanceService: IUniverInstanceService, _transformPlanService: SheetDrawingTransformPlanService);
30
+ constructor(_commandService: ICommandService, _sheetSkeletonService: SheetSkeletonService, _sheetInterceptorService: SheetInterceptorService, _sheetDrawingService: ISheetDrawingService, _drawingManagerService: IDrawingManagerService, _univerInstanceService: IUniverInstanceService, _transformPlanService: SheetDrawingTransformPlanService);
32
31
  private _sheetInterceptorListener;
33
32
  private _finalizePlan;
34
33
  private _getCalculatedSkeletonParam;
@@ -114,6 +114,17 @@ export declare class FOverGridImageBuilder {
114
114
  * ```
115
115
  */
116
116
  getSourceType(): ImageSourceType;
117
+ /**
118
+ * Set the whole-image opacity from zero (transparent) through one (opaque).
119
+ * @param {number} opacity The opacity from 0 through 1.
120
+ * @returns {FOverGridImageBuilder} This builder.
121
+ */
122
+ setOpacity(opacity: number): FOverGridImageBuilder;
123
+ /**
124
+ * Get the configured whole-image opacity.
125
+ * @returns {number} The opacity from 0 (transparent) through 1 (opaque).
126
+ */
127
+ getOpacity(): number;
117
128
  /**
118
129
  * Set the horizontal position of the image
119
130
  * @param {number} column - The column index of the image start position, start at 0
@@ -540,6 +551,17 @@ export declare class FOverGridImage extends FBase {
540
551
  * ```
541
552
  */
542
553
  getPlacement(): ISheetDrawingPlacement;
554
+ /**
555
+ * Get the current whole-image opacity.
556
+ * @returns {number} The opacity from 0 (transparent) through 1 (opaque).
557
+ */
558
+ getOpacity(): number;
559
+ /**
560
+ * Set the whole-image opacity from zero (transparent) through one (opaque).
561
+ * @param {number} opacity The opacity from 0 through 1.
562
+ * @returns {boolean} Whether the update succeeded.
563
+ */
564
+ setOpacity(opacity: number): boolean;
543
565
  /**
544
566
  * Set this image's explicit placement through the drawing command.
545
567
  * `Position`, `Both`, and `None` correspond to OneCell, TwoCell, and
@@ -39,6 +39,7 @@ export interface ISheetDrawingBase {
39
39
  * this property is used to store the excel drawing axis alignment position, which is not always the same as the sheetTransform.
40
40
  */
41
41
  axisAlignSheetTransform: ISheetDrawingPosition;
42
+ /** Defaults to Position: the drawing moves with cells while retaining its size. */
42
43
  anchorType?: SheetDrawingAnchorType;
43
44
  }
44
45
  export interface ISheetImage extends IImageData, ISheetDrawingBase {
package/lib/umd/facade.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,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([`exports`,`@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.UniverSheetsDrawingFacade={},e.UniverCore,e.UniverCoreFacade,e.UniverDrawing,e.UniverSheets,e.UniverSheetsDrawing,e.UniverEngineRender,e.UniverSheetsFacade))})(this,function(e,t,n,r,i,a,o,s){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function c(e){"@babel/helpers - typeof";return c=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},c(e)}function l(e,t){if(c(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(c(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function u(e){var t=l(e,`string`);return c(t)==`symbol`?t:t+``}function d(e,t,n){return(t=u(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e,t){return function(n,r){t(n,r,e)}}function p(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 m(e,t){let{from:n,to:r,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,i.convertPositionSheetOverGridToAbsolute)(e.unitId,e.subUnitId,{from:n,to:r},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 h(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:r,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,i.convertPositionCellToSheetOverGrid)(e.unitId,e.subUnitId,{column:r,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,a.transformToAxisAlignPosition)(_,n)}}let g=class{constructor(e,n,r){this._sheetSkeletonService=r,d(this,`_image`,void 0),d(this,`_placement`,void 0),this._image={drawingId:(0,t.generateRandomId)(6),drawingType:t.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:t.ImageSourceType.BASE64,source:``,unitId:e,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=m(e,r),this}setSource(e,n){let r=n??t.ImageSourceType.URL;return this._image.source=e,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,r.getImageSize)(this._image.source),t=e.width,n=e.height;this._image.width===0&&(this._image.width=t),this._image.height===0&&(this._image.height=n)}if(((e=this._placement)==null?void 0:e.kind)===a.SheetDrawingAnchorType.None){let{left:e,top:t,width:n,height:r}=`bounds`in this._placement?this._placement.bounds:this._placement,i={from:{column:0,columnOffset:e,row:0,rowOffset:t},to:{column:0,columnOffset:e+n,row:0,rowOffset:t+r}},o={...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:i,axisAlignSheetTransform:i};return(0,a.applySheetDrawingPlacement)(o,this._placement)}let n=h(this._image,t);if(!this._placement)return n;let i=t.ensureSkeleton(n.unitId,n.subUnitId);return(0,a.applySheetDrawingPlacement)(n,this._placement,i)}};g=p([f(2,(0,t.Inject)(i.SheetSkeletonService))],g);let _=class extends n.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}getUnitId(){return this._image.unitId}getSubUnitId(){return this._image.subUnitId}getType(){return this._image.drawingType}getPlacement(){let e=this._sheetDrawingService.getDrawingByParam({unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingId:this._image.drawingId});return(0,a.getSheetDrawingPlacement)(e??this._image)}setPlacement(e){return this._commandService.syncExecuteCommand(a.SetSheetDrawingPlacementCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawings:[{drawingId:this._image.drawingId,placement:e}]})}remove(){return this._commandService.syncExecuteCommand(a.RemoveSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}toBuilder(){let e=this._injector.createInstance(g,this._image.unitId,this._image.subUnitId);return e.setImage(this._image),e}setSource(e,n){let r=n??t.ImageSourceType.URL;return this._image.source=e,this._image.imageSourceType=r,this._commandService.syncExecuteCommand(a.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}async setPositionAsync(e,t,n,r){let i=this.toBuilder();i.setColumn(t),i.setRow(e),n!=null&&i.setRowOffset(n),r!=null&&i.setColumnOffset(r);let o=await i.buildAsync();return this._commandService.syncExecuteCommand(a.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(a.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(a.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,a.transformToAxisAlignPosition)(this._image.transform,e))}return this._commandService.syncExecuteCommand(a.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setForward(){return this._commandService.syncExecuteCommand(a.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:t.ArrangeTypeEnum.forward})}setBackward(){return this._commandService.syncExecuteCommand(a.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:t.ArrangeTypeEnum.backward})}setBack(){return this._commandService.syncExecuteCommand(a.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:t.ArrangeTypeEnum.back})}setFront(){return this._commandService.syncExecuteCommand(a.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:t.ArrangeTypeEnum.front})}};_=p([f(1,t.ICommandService),f(2,(0,t.Inject)(t.Injector)),f(3,a.ISheetDrawingService),f(4,(0,t.Inject)(i.SheetSkeletonService))],_);var v=class extends s.FWorksheet{get _sheetDrawingService(){return this._injector.get(a.ISheetDrawingService)}get _sheetSkeletonService(){return this._injector.get(i.SheetSkeletonService)}get _undoRedoService(){return this._injector.get(t.IUndoRedoService)}getBackgroundImage(){let e=this._worksheet.getConfig().backgroundImage;return e?{...e}:null}setBackgroundImage(e,n=t.ImageSourceType.URL){return this._commandService.syncExecuteCommand(a.SetWorksheetBackgroundImageCommand.id,{unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),backgroundImage:{source:e,imageSourceType:n}}),this}deleteBackgroundImage(){return this._commandService.syncExecuteCommand(a.SetWorksheetBackgroundImageCommand.id,{unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),backgroundImage:null}),this}async insertImage(e,n,r,i,o){let s=this.newOverGridImage();if(typeof e==`string`)s.setSource(e);else{let n=await e.getBlob().getDataAsString();s.setSource(n,t.ImageSourceType.BASE64)}n===void 0?s.setColumn(0):s.setColumn(n),r===void 0?s.setRow(0):s.setRow(r),i===void 0?s.setColumnOffset(0):s.setColumnOffset(i),o===void 0?s.setRowOffset(0):s.setRowOffset(o);let c=await s.buildAsync();return this._commandService.syncExecuteCommand(a.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(a.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(a.RemoveSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}getImages(){let e=this._sheetDrawingService.getDrawingData(this._fWorkbook.getId(),this.getSheetId()),n=[];for(let r in e){let i=e[r];i.drawingType===t.DrawingTypeEnum.DRAWING_IMAGE&&n.push(this._injector.createInstance(_,i))}return n}getImageById(e){let n=this._sheetDrawingService.getDrawingByParam({unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawingId:e});return n&&n.drawingType===t.DrawingTypeEnum.DRAWING_IMAGE?this._injector.createInstance(_,n):null}getActiveImages(){let e=this._sheetDrawingService.getFocusDrawings(),t=[];for(let n in e){let r=e[n];t.push(this._injector.createInstance(_,r))}return t}updateImages(e){return this._commandService.syncExecuteCommand(a.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,a.getSheetDrawingPlacement)(t):null}setDrawingPlacement(e,t){return this._commandService.syncExecuteCommand(a.SetSheetDrawingPlacementCommand.id,{unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawings:[{drawingId:e,placement:t}]})}resolveDrawingPlacement(e){let t=e.kind===a.SheetDrawingAnchorType.None?void 0:this._sheetSkeletonService.ensureSkeleton(this._fWorkbook.getId(),this.getSheetId());if(e.kind!==a.SheetDrawingAnchorType.None&&!t)throw Error(`SHEET_DRAWING_PLACEMENT_SKELETON_REQUIRED`);return(0,a.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:i,startColumn:o,endColumn:s}=this._worksheet.getDataRealRange(),c=n.getCellWithCoordByIndex(r,o,!1),l=n.getCellWithCoordByIndex(i,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&&y(t);t&&n&&m.push({drawingId:e,drawingType:t.drawingType,bounds:n,placement:(0,a.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(g,e,t)}groupDrawings(e,n=(0,t.generateRandomId)(10)){let i=Array.from(new Set(e));if(i.length<2)return null;let s=this._fWorkbook.getId(),c=this.getSheetId(),l=this._sheetDrawingService;if(l.getDrawingByParam({unitId:s,subUnitId:c,drawingId:n}))return null;let u=i.map(e=>l.getDrawingByParam({unitId:s,subUnitId:c,drawingId:e}));if(u.some(e=>!e)||u.some(e=>!(0,r.isGroupableDrawingType)(e.drawingType)))return null;let d=u,f=(0,o.getGroupState)(0,0,d.map(e=>e.transform||{})),p={unitId:s,subUnitId:c,drawingId:n,drawingType:t.DrawingTypeEnum.DRAWING_GROUP,transform:f,groupBaseBound:{left:f.left,top:f.top,width:f.width,height:f.height}},m=d.map(e=>({...e,groupId:n}));return this._applyGroupDrawingOperation([{parent:p,children:m}],a.DrawingApplyType.GROUP)?n:null}ungroupDrawings(e){let n=this._fWorkbook.getId(),r=this.getSheetId(),i=this._sheetDrawingService,s=[];for(let a of e){let e=i.getDrawingByParam({unitId:n,subUnitId:r,drawingId:a});if(!e||e.drawingType!==t.DrawingTypeEnum.DRAWING_GROUP)continue;let c=e.transform||{width:0,height:0},l=i.getDrawingsByGroup({unitId:n,subUnitId:r,drawingId:a}).map(t=>{let n=(0,o.transformObjectOutOfGroup)(t.transform||{},c,c.width||0,c.height||0,e.groupBaseBound);return{...t,transform:{...t.transform,...n},groupId:void 0}});l.length>0&&s.push({parent:e,children:l})}return this._applyGroupDrawingOperation(s,a.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(e){let n=this._fWorkbook.getId(),r=this.getSheetId(),i=this._sheetDrawingService,a=i.getDrawingByParam({unitId:n,subUnitId:r,drawingId:e});if(!(a!=null&&a.groupId))return null;let o=i.getDrawingByParam({unitId:n,subUnitId:r,drawingId:a.groupId});return!o||o.drawingType!==t.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,i=this._undoRedoService,{unitId:o,subUnitId:s,undo:c,redo:l,objects:u}=t===a.DrawingApplyType.GROUP?n.getGroupDrawingOp(e):n.getUngroupDrawingOp(e);if(r.syncExecuteCommand(a.SetDrawingApplyMutation.id,{op:l,unitId:o,subUnitId:s,objects:u,type:t})){let e=t===a.DrawingApplyType.GROUP?a.DrawingApplyType.UNGROUP:a.DrawingApplyType.GROUP;return i.pushUndoRedo({unitID:o,undoMutations:[{id:a.SetDrawingApplyMutation.id,params:{op:c,unitId:o,subUnitId:s,objects:this._invertGroupOperationObjects(u,t),type:e}}],redoMutations:[{id:a.SetDrawingApplyMutation.id,params:{op:l,unitId:o,subUnitId:s,objects:u,type:t}}]}),!0}return!1}_invertGroupOperationObjects(e,t){return t===a.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,o.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,o.getGroupState)(0,0,n.map(e=>e.transform||{}));return{parent:{...t,transform:r},children:n.map(e=>({...e,groupId:t.drawingId}))}})}};function y(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}}s.FWorksheet.extend(v);var b=class extends n.FEnum{get DrawingType(){return t.DrawingTypeEnum}get SheetDrawingAnchorType(){return a.SheetDrawingAnchorType}};n.FEnum.extend(b);var x=class extends n.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`}};n.FEventName.extend(x);var S=class extends n.FUniver{_initialize(e){let n=e.get(t.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageInsert,()=>n.beforeCommandExecuted(e=>{if(e.id!==a.InsertSheetDrawingCommand.id)return;let n=e.params,r=this.getActiveWorkbook();if(r==null||n==null)return;let{drawings:i}=n,o={workbook:r,insertImageParams:i};if(this.fireEvent(this.Event.BeforeOverGridImageInsert,o),o.cancel)throw new t.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageRemove,()=>n.beforeCommandExecuted(n=>{if(n.id!==a.RemoveSheetDrawingCommand.id)return;let i=n.params,o=this.getActiveWorkbook();if(o==null||i==null)return;let s=e.get(r.IDrawingManagerService),{drawings:c}=i,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 t.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageChange,()=>n.beforeCommandExecuted(n=>{if(n.id!==a.SetSheetDrawingCommand.id)return;let i=n.params,o=this.getActiveWorkbook();if(o==null||i==null)return;let{drawings:s}=i,c=e.get(r.IDrawingManagerService),l=[];s.forEach(e=>{let t=c.getDrawingByParam(e);t!=null&&l.push({changeParam:e,image:this._injector.createInstance(_,t)})});let u={workbook:o,images:l};if(this.fireEvent(this.Event.BeforeOverGridImageChange,u),u.cancel)throw c.updateNotification(s),new t.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageSelect,()=>n.beforeCommandExecuted(n=>{if(n.id!==r.SetDrawingSelectedOperation.id)return;let i=n.params,a=this.getActiveWorkbook();if(a==null)return;let o=e.get(r.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 t.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageInserted,()=>n.onCommandExecuted(e=>{if(e.id!==a.InsertSheetDrawingCommand.id)return;let t=e.params,n=this.getActiveWorkbook();if(n==null||t==null)return;let{drawings:r}=t,i={workbook:n,images:this._createFOverGridImage(r)};this.fireEvent(this.Event.OverGridImageInserted,i)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageRemoved,()=>n.onCommandExecuted(e=>{if(e.id!==a.RemoveSheetDrawingCommand.id)return;let t=e.params,n=this.getActiveWorkbook();if(n==null||t==null)return;let{drawings:r}=t,i={workbook:n,removeImageParams:r};this.fireEvent(this.Event.OverGridImageRemoved,i)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageChanged,()=>n.onCommandExecuted(t=>{if(t.id!==a.SetSheetDrawingCommand.id)return;let n=t.params,i=this.getActiveWorkbook();if(i==null||n==null)return;let{drawings:o}=n,s=e.get(r.IDrawingManagerService),c={workbook:i,images:o.map(e=>this._injector.createInstance(_,s.getDrawingByParam(e)))};this.fireEvent(this.Event.OverGridImageChanged,c)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageSelected,()=>n.onCommandExecuted(t=>{if(t.id!==r.SetDrawingSelectedOperation.id)return;let n=t.params,i=this.getActiveWorkbook();if(i==null)return;let a=e.get(r.IDrawingManagerService),o=n.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(_,e))}};n.FUniver.extend(S),Object.defineProperty(e,"FOverGridImage",{enumerable:!0,get:function(){return _}})});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,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([`exports`,`@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.UniverSheetsDrawingFacade={},e.UniverCore,e.UniverCoreFacade,e.UniverDrawing,e.UniverSheets,e.UniverSheetsDrawing,e.UniverEngineRender,e.UniverSheetsFacade))})(this,function(e,t,n,r,i,a,o,s){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function c(e){"@babel/helpers - typeof";return c=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},c(e)}function l(e,t){if(c(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(c(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function u(e){var t=l(e,`string`);return c(t)==`symbol`?t:t+``}function d(e,t,n){return(t=u(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e,t){return function(n,r){t(n,r,e)}}function p(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 m(e,t){let{from:n,to:r,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,i.convertPositionSheetOverGridToAbsolute)(e.unitId,e.subUnitId,{from:n,to:r},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 h(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:r,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,i.convertPositionCellToSheetOverGrid)(e.unitId,e.subUnitId,{column:r,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,a.transformToAxisAlignPosition)(_,n)}}let g=class{constructor(e,n,r){this._sheetSkeletonService=r,d(this,`_image`,void 0),d(this,`_placement`,void 0),this._image={drawingId:(0,t.generateRandomId)(6),drawingType:t.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:t.ImageSourceType.BASE64,source:``,unitId:e,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=m(e,r),this}setSource(e,n){let r=n??t.ImageSourceType.URL;return this._image.source=e,this._image.imageSourceType=r,this}getSource(){return this._image.source}getSourceType(){return this._image.imageSourceType}setOpacity(e){return v(e),this._image.opacity=e,this}getOpacity(){return this._image.opacity??1}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,r.getImageSize)(this._image.source),t=e.width,n=e.height;this._image.width===0&&(this._image.width=t),this._image.height===0&&(this._image.height=n)}if(((e=this._placement)==null?void 0:e.kind)===a.SheetDrawingAnchorType.None){let{left:e,top:t,width:n,height:r}=`bounds`in this._placement?this._placement.bounds:this._placement,i={from:{column:0,columnOffset:e,row:0,rowOffset:t},to:{column:0,columnOffset:e+n,row:0,rowOffset:t+r}},o={...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:i,axisAlignSheetTransform:i};return(0,a.applySheetDrawingPlacement)(o,this._placement)}let n=h(this._image,t);if(!this._placement)return n;let i=t.ensureSkeleton(n.unitId,n.subUnitId);return(0,a.applySheetDrawingPlacement)(n,this._placement,i)}};g=p([f(2,(0,t.Inject)(i.SheetSkeletonService))],g);let _=class extends n.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}getUnitId(){return this._image.unitId}getSubUnitId(){return this._image.subUnitId}getType(){return this._image.drawingType}getPlacement(){let e=this._sheetDrawingService.getDrawingByParam({unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingId:this._image.drawingId});return(0,a.getSheetDrawingPlacement)(e??this._image)}getOpacity(){let e=this._sheetDrawingService.getDrawingByParam({unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingId:this._image.drawingId});return(e==null?void 0:e.opacity)??this._image.opacity??1}setOpacity(e){return v(e),this._commandService.syncExecuteCommand(a.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingId:this._image.drawingId,opacity:e}]})}setPlacement(e){return this._commandService.syncExecuteCommand(a.SetSheetDrawingPlacementCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawings:[{drawingId:this._image.drawingId,placement:e}]})}remove(){return this._commandService.syncExecuteCommand(a.RemoveSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}toBuilder(){let e=this._injector.createInstance(g,this._image.unitId,this._image.subUnitId);return e.setImage(this._image),e}setSource(e,n){let r=n??t.ImageSourceType.URL;return this._image.source=e,this._image.imageSourceType=r,this._commandService.syncExecuteCommand(a.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}async setPositionAsync(e,t,n,r){let i=this.toBuilder();i.setColumn(t),i.setRow(e),n!=null&&i.setRowOffset(n),r!=null&&i.setColumnOffset(r);let o=await i.buildAsync();return this._commandService.syncExecuteCommand(a.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(a.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(a.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,a.transformToAxisAlignPosition)(this._image.transform,e))}return this._commandService.syncExecuteCommand(a.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setForward(){return this._commandService.syncExecuteCommand(a.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:t.ArrangeTypeEnum.forward})}setBackward(){return this._commandService.syncExecuteCommand(a.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:t.ArrangeTypeEnum.backward})}setBack(){return this._commandService.syncExecuteCommand(a.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:t.ArrangeTypeEnum.back})}setFront(){return this._commandService.syncExecuteCommand(a.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:t.ArrangeTypeEnum.front})}};_=p([f(1,t.ICommandService),f(2,(0,t.Inject)(t.Injector)),f(3,a.ISheetDrawingService),f(4,(0,t.Inject)(i.SheetSkeletonService))],_);function v(e){if(!Number.isFinite(e)||e<0||e>1)throw RangeError(`Sheet image opacity must be between 0 and 1.`)}var y=class extends s.FWorksheet{get _sheetDrawingService(){return this._injector.get(a.ISheetDrawingService)}get _sheetSkeletonService(){return this._injector.get(i.SheetSkeletonService)}get _undoRedoService(){return this._injector.get(t.IUndoRedoService)}getBackgroundImage(){let e=this._worksheet.getConfig().backgroundImage;return e?{...e}:null}setBackgroundImage(e,n=t.ImageSourceType.URL){return this._commandService.syncExecuteCommand(a.SetWorksheetBackgroundImageCommand.id,{unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),backgroundImage:{source:e,imageSourceType:n}}),this}deleteBackgroundImage(){return this._commandService.syncExecuteCommand(a.SetWorksheetBackgroundImageCommand.id,{unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),backgroundImage:null}),this}async insertImage(e,n,r,i,o){let s=this.newOverGridImage();if(typeof e==`string`)s.setSource(e);else{let n=await e.getBlob().getDataAsString();s.setSource(n,t.ImageSourceType.BASE64)}n===void 0?s.setColumn(0):s.setColumn(n),r===void 0?s.setRow(0):s.setRow(r),i===void 0?s.setColumnOffset(0):s.setColumnOffset(i),o===void 0?s.setRowOffset(0):s.setRowOffset(o);let c=await s.buildAsync();return this._commandService.syncExecuteCommand(a.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(a.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(a.RemoveSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}getImages(){let e=this._sheetDrawingService.getDrawingData(this._fWorkbook.getId(),this.getSheetId()),n=[];for(let r in e){let i=e[r];i.drawingType===t.DrawingTypeEnum.DRAWING_IMAGE&&n.push(this._injector.createInstance(_,i))}return n}getImageById(e){let n=this._sheetDrawingService.getDrawingByParam({unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawingId:e});return n&&n.drawingType===t.DrawingTypeEnum.DRAWING_IMAGE?this._injector.createInstance(_,n):null}getActiveImages(){let e=this._sheetDrawingService.getFocusDrawings(),t=[];for(let n in e){let r=e[n];t.push(this._injector.createInstance(_,r))}return t}updateImages(e){return this._commandService.syncExecuteCommand(a.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,a.getSheetDrawingPlacement)(t):null}setDrawingPlacement(e,t){return this._commandService.syncExecuteCommand(a.SetSheetDrawingPlacementCommand.id,{unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawings:[{drawingId:e,placement:t}]})}resolveDrawingPlacement(e){let t=e.kind===a.SheetDrawingAnchorType.None?void 0:this._sheetSkeletonService.ensureSkeleton(this._fWorkbook.getId(),this.getSheetId());if(e.kind!==a.SheetDrawingAnchorType.None&&!t)throw Error(`SHEET_DRAWING_PLACEMENT_SKELETON_REQUIRED`);return(0,a.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:i,startColumn:o,endColumn:s}=this._worksheet.getDataRealRange(),c=n.getCellWithCoordByIndex(r,o,!1),l=n.getCellWithCoordByIndex(i,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&&b(t);t&&n&&m.push({drawingId:e,drawingType:t.drawingType,bounds:n,placement:(0,a.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(g,e,t)}groupDrawings(e,n=(0,t.generateRandomId)(10)){let i=Array.from(new Set(e));if(i.length<2)return null;let s=this._fWorkbook.getId(),c=this.getSheetId(),l=this._sheetDrawingService;if(l.getDrawingByParam({unitId:s,subUnitId:c,drawingId:n}))return null;let u=i.map(e=>l.getDrawingByParam({unitId:s,subUnitId:c,drawingId:e}));if(u.some(e=>!e)||u.some(e=>!(0,r.isGroupableDrawingType)(e.drawingType)))return null;let d=u,f=(0,o.getGroupState)(0,0,d.map(e=>e.transform||{})),p={unitId:s,subUnitId:c,drawingId:n,drawingType:t.DrawingTypeEnum.DRAWING_GROUP,transform:f,groupBaseBound:{left:f.left,top:f.top,width:f.width,height:f.height}},m=d.map(e=>({...e,groupId:n}));return this._applyGroupDrawingOperation([{parent:p,children:m}],a.DrawingApplyType.GROUP)?n:null}ungroupDrawings(e){let n=this._fWorkbook.getId(),r=this.getSheetId(),i=this._sheetDrawingService,s=[];for(let a of e){let e=i.getDrawingByParam({unitId:n,subUnitId:r,drawingId:a});if(!e||e.drawingType!==t.DrawingTypeEnum.DRAWING_GROUP)continue;let c=e.transform||{width:0,height:0},l=i.getDrawingsByGroup({unitId:n,subUnitId:r,drawingId:a}).map(t=>{let n=(0,o.transformObjectOutOfGroup)(t.transform||{},c,c.width||0,c.height||0,e.groupBaseBound);return{...t,transform:{...t.transform,...n},groupId:void 0}});l.length>0&&s.push({parent:e,children:l})}return this._applyGroupDrawingOperation(s,a.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(e){let n=this._fWorkbook.getId(),r=this.getSheetId(),i=this._sheetDrawingService,a=i.getDrawingByParam({unitId:n,subUnitId:r,drawingId:e});if(!(a!=null&&a.groupId))return null;let o=i.getDrawingByParam({unitId:n,subUnitId:r,drawingId:a.groupId});return!o||o.drawingType!==t.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,i=this._undoRedoService,{unitId:o,subUnitId:s,undo:c,redo:l,objects:u}=t===a.DrawingApplyType.GROUP?n.getGroupDrawingOp(e):n.getUngroupDrawingOp(e);if(r.syncExecuteCommand(a.SetDrawingApplyMutation.id,{op:l,unitId:o,subUnitId:s,objects:u,type:t})){let e=t===a.DrawingApplyType.GROUP?a.DrawingApplyType.UNGROUP:a.DrawingApplyType.GROUP;return i.pushUndoRedo({unitID:o,undoMutations:[{id:a.SetDrawingApplyMutation.id,params:{op:c,unitId:o,subUnitId:s,objects:this._invertGroupOperationObjects(u,t),type:e}}],redoMutations:[{id:a.SetDrawingApplyMutation.id,params:{op:l,unitId:o,subUnitId:s,objects:u,type:t}}]}),!0}return!1}_invertGroupOperationObjects(e,t){return t===a.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,o.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,o.getGroupState)(0,0,n.map(e=>e.transform||{}));return{parent:{...t,transform:r},children:n.map(e=>({...e,groupId:t.drawingId}))}})}};function b(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}}s.FWorksheet.extend(y);var x=class extends n.FEnum{get DrawingType(){return t.DrawingTypeEnum}get SheetDrawingAnchorType(){return a.SheetDrawingAnchorType}};n.FEnum.extend(x);var S=class extends n.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`}};n.FEventName.extend(S);var C=class extends n.FUniver{_initialize(e){let n=e.get(t.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageInsert,()=>n.beforeCommandExecuted(e=>{if(e.id!==a.InsertSheetDrawingCommand.id)return;let n=e.params,r=this.getActiveWorkbook();if(r==null||n==null)return;let{drawings:i}=n,o={workbook:r,insertImageParams:i};if(this.fireEvent(this.Event.BeforeOverGridImageInsert,o),o.cancel)throw new t.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageRemove,()=>n.beforeCommandExecuted(n=>{if(n.id!==a.RemoveSheetDrawingCommand.id)return;let i=n.params,o=this.getActiveWorkbook();if(o==null||i==null)return;let s=e.get(r.IDrawingManagerService),{drawings:c}=i,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 t.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageChange,()=>n.beforeCommandExecuted(n=>{if(n.id!==a.SetSheetDrawingCommand.id)return;let i=n.params,o=this.getActiveWorkbook();if(o==null||i==null)return;let{drawings:s}=i,c=e.get(r.IDrawingManagerService),l=[];s.forEach(e=>{let t=c.getDrawingByParam(e);t!=null&&l.push({changeParam:e,image:this._injector.createInstance(_,t)})});let u={workbook:o,images:l};if(this.fireEvent(this.Event.BeforeOverGridImageChange,u),u.cancel)throw c.updateNotification(s),new t.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageSelect,()=>n.beforeCommandExecuted(n=>{if(n.id!==r.SetDrawingSelectedOperation.id)return;let i=n.params,a=this.getActiveWorkbook();if(a==null)return;let o=e.get(r.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 t.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageInserted,()=>n.onCommandExecuted(e=>{if(e.id!==a.InsertSheetDrawingCommand.id)return;let t=e.params,n=this.getActiveWorkbook();if(n==null||t==null)return;let{drawings:r}=t,i={workbook:n,images:this._createFOverGridImage(r)};this.fireEvent(this.Event.OverGridImageInserted,i)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageRemoved,()=>n.onCommandExecuted(e=>{if(e.id!==a.RemoveSheetDrawingCommand.id)return;let t=e.params,n=this.getActiveWorkbook();if(n==null||t==null)return;let{drawings:r}=t,i={workbook:n,removeImageParams:r};this.fireEvent(this.Event.OverGridImageRemoved,i)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageChanged,()=>n.onCommandExecuted(t=>{if(t.id!==a.SetSheetDrawingCommand.id)return;let n=t.params,i=this.getActiveWorkbook();if(i==null||n==null)return;let{drawings:o}=n,s=e.get(r.IDrawingManagerService),c={workbook:i,images:o.map(e=>this._injector.createInstance(_,s.getDrawingByParam(e)))};this.fireEvent(this.Event.OverGridImageChanged,c)}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageSelected,()=>n.onCommandExecuted(t=>{if(t.id!==r.SetDrawingSelectedOperation.id)return;let n=t.params,i=this.getActiveWorkbook();if(i==null)return;let a=e.get(r.IDrawingManagerService),o=n.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(_,e))}};n.FUniver.extend(C),Object.defineProperty(e,"FOverGridImage",{enumerable:!0,get:function(){return _}})});