@univerjs/sheets-drawing-ui 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.
package/lib/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { BooleanNumber, BuildTextUtils, CommandType, DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY, DOCS_NORMAL_EDITOR_UNIT_ID_KEY, DependentOn, Direction, Disposable, DisposableCollection, DrawingTypeEnum, FOCUSING_COMMON_DRAWINGS, FOCUSING_FX_BAR_EDITOR, FOCUSING_PANEL_EDITOR, FOCUSING_SHAPE_TEXT_EDITOR, FOCUSING_SHEET, ICommandService, IConfigService, IContextService, IImageIoService, IPermissionService, IURLImageService, IUndoRedoService, IUniverInstanceService, ImageSourceType, ImageUploadStatusType, Inject, Injector, InterceptorEffectEnum, LifecycleService, LifecycleStages, LocaleService, ObjectMatrix, Optional, Plugin, PositionedObjectLayoutType, RxDisposable, Tools, UniverInstanceType, UserManagerService, WrapTextType, createDocumentModelWithStyle, createIdentifier, fromEventSubject, generateRandomId, merge, registerDependencies, sequenceExecute, toDisposable, touchDependencies } from "@univerjs/core";
2
- import { ClearSheetDrawingTransformerOperation, DrawingApplyType, ISheetDrawingService, InsertSheetDrawingCommand, RemoveSheetDrawingCommand, SetDrawingApplyMutation, SetDrawingArrangeCommand, SetSheetDrawingCommand, SheetDrawingAnchorType, UniverSheetsDrawingPlugin, drawingPositionToTransform, transformToAxisAlignPosition, transformToDrawingPosition } from "@univerjs/sheets-drawing";
3
- import { CURSOR_TYPE, DRAWING_OBJECT_LAYER_INDEX, IRenderManagerService, Image, ObjectType, Rect, SHEET_VIEWPORT_KEY, Vector2, getCurrentTypeOfRenderer, getGroupState, transformObjectOutOfGroup } from "@univerjs/engine-render";
2
+ import { ClearSheetDrawingTransformerOperation, DrawingApplyType, ISheetDrawingService, InsertSheetDrawingCommand, RemoveSheetDrawingCommand, SetDrawingApplyMutation, SetDrawingArrangeCommand, SetSheetDrawingCommand, SetSheetDrawingPlacementCommand, SheetDrawingAnchorType, UniverSheetsDrawingPlugin, drawingPositionToTransform, getSheetDrawingPlacement, transformToAxisAlignPosition, transformToDrawingPosition } from "@univerjs/sheets-drawing";
3
+ import { CURSOR_TYPE, DRAWING_OBJECT_LAYER_INDEX, IRenderManagerService, Image, ObjectType, Rect, SHEET_VIEWPORT_KEY, UniverRenderEnginePlugin, Vector2, getCurrentTypeOfRenderer, getGroupState, transformObjectOutOfGroup } from "@univerjs/engine-render";
4
4
  import { Button, Checkbox, CheckboxGroup, FormLayout, MessageType, Radio, RadioGroup, Select, clsx, render, unmount } from "@univerjs/design";
5
5
  import { buildDocTransform, docDrawingPositionToTransform } from "@univerjs/docs";
6
6
  import { DRAWING_IMAGE_ALLOW_IMAGE_LIST, DRAWING_IMAGE_COUNT_LIMIT, DRAWING_IMAGE_HEIGHT_LIMIT, DRAWING_IMAGE_WIDTH_LIMIT, IDrawingManagerService, SetDrawingSelectedOperation, UniverDrawingPlugin, getDrawingImageAllowSize, getDrawingShapeKeyByDrawingSearch, getImageSize } from "@univerjs/drawing";
7
- import { COMMAND_LISTENER_SKELETON_CHANGE, IAutoFillService, INTERCEPTOR_POINT, InterceptCellContentPriority, RangeProtectionPermissionEditPoint, SetFrozenMutation, SetRangeValuesCommand, SetSelectionsOperation, SetWorksheetActiveOperation, SetWorksheetRowAutoHeightMutation, SheetInterceptorService, SheetPermissionCheckController, SheetSkeletonService, SheetsSelectionsService, WorkbookEditablePermission, WorkbookViewPermission, WorksheetEditPermission, WorksheetViewPermission, attachRangeWithCoord, discreteRangeToRange, getSheetCommandTarget } from "@univerjs/sheets";
8
- import { COPY_TYPE, EditingRenderController, HoverManagerService, IEditorBridgeService, ISheetClipboardService, ISheetSelectionRenderService, PREDEFINED_HOOK_NAME_PASTE, SetCellEditVisibleOperation, SetScrollOperation, SetZoomRatioOperation, SheetCanvasPopManagerService, SheetPrintInterceptorService, SheetSkeletonManagerService, getCurrentRangeDisable$, useHighlightRange, virtualizeDiscreteRanges } from "@univerjs/sheets-ui";
7
+ import { COMMAND_LISTENER_SKELETON_CHANGE, IAutoFillService, INTERCEPTOR_POINT, InterceptCellContentPriority, RangeProtectionPermissionEditPoint, SetFrozenMutation, SetRangeValuesCommand, SetSelectionsOperation, SetWorksheetActiveOperation, SetWorksheetRowAutoHeightMutation, SheetInterceptorService, SheetPermissionCheckController, SheetSkeletonService, SheetsSelectionsService, UniverSheetsPlugin, WorkbookEditablePermission, WorkbookViewPermission, WorksheetEditPermission, WorksheetViewPermission, attachRangeWithCoord, discreteRangeToRange, getSheetCommandTarget, isCellImage } from "@univerjs/sheets";
8
+ import { COPY_TYPE, EditingRenderController, HoverManagerService, IEditorBridgeService, ISheetClipboardService, ISheetSelectionRenderService, PREDEFINED_HOOK_NAME_PASTE, SetCellEditVisibleOperation, SetScrollOperation, SetZoomRatioOperation, SheetCanvasPopManagerService, SheetPrintInterceptorService, SheetSkeletonManagerService, UniverSheetsUIPlugin, getCurrentRangeDisable$, useHighlightRange, virtualizeDiscreteRanges } from "@univerjs/sheets-ui";
9
9
  import { CanvasFloatDomPreviewService, CanvasFloatDomService, ComponentManager, ContextMenuGroup, ContextMenuPosition, IClipboardInterfaceService, IContextMenuService, IDialogService, ILocalFileService, IMenuManagerService, IMessageService, IShortcutService, ISidebarService, KeyCode, MenuItemType, PrintFloatDomSingle, RibbonInsertGroup, connectInjector, getMenuHiddenObservable, useDependency, useObservable } from "@univerjs/ui";
10
10
  import { COMPONENT_IMAGE_POPUP_MENU, DrawingCommonPanel, DrawingRenderService, ImageCropperObject, ImageResetSizeOperation, OpenImageCropOperation, UniverDrawingUIPlugin, disposeDrawingRenderObject, insertGroupObject } from "@univerjs/drawing-ui";
11
11
  import { BehaviorSubject, EMPTY, Subject, combineLatest, distinctUntilChanged, filter, map, of, switchMap, take, tap, throttleTime } from "rxjs";
@@ -124,28 +124,23 @@ function cloneGroupParams(groupParams) {
124
124
  groupParams.groups.forEach((p) => idMap.set(p.drawingId, generateRandomId(10)));
125
125
  const clonedNestedIdRecord = {};
126
126
  for (const [oldGroupId, entry] of Object.entries(groupParams.nestedIdRecord)) {
127
- var _idMap$get, _entry$children;
128
- const newGroupId = (_idMap$get = idMap.get(oldGroupId)) !== null && _idMap$get !== void 0 ? _idMap$get : oldGroupId;
127
+ var _entry$children;
128
+ const newGroupId = idMap.get(oldGroupId) ?? oldGroupId;
129
129
  clonedNestedIdRecord[newGroupId] = {
130
130
  drawingId: newGroupId,
131
- children: (_entry$children = entry.children) === null || _entry$children === void 0 ? void 0 : _entry$children.map((id) => {
132
- var _idMap$get2;
133
- return (_idMap$get2 = idMap.get(id)) !== null && _idMap$get2 !== void 0 ? _idMap$get2 : id;
134
- })
131
+ children: (_entry$children = entry.children) === null || _entry$children === void 0 ? void 0 : _entry$children.map((id) => idMap.get(id) ?? id)
135
132
  };
136
133
  }
137
134
  const flatChildren = [];
138
135
  const groups = [];
139
136
  for (const group of groupParams.groups) {
140
- var _idMap$get3, _idMap$get4;
141
- const groupDrawingId = (_idMap$get3 = idMap.get(group.drawingId)) !== null && _idMap$get3 !== void 0 ? _idMap$get3 : group.drawingId;
142
- const parentGroupId = group.groupId ? (_idMap$get4 = idMap.get(group.groupId)) !== null && _idMap$get4 !== void 0 ? _idMap$get4 : group.groupId : void 0;
137
+ const groupDrawingId = idMap.get(group.drawingId) ?? group.drawingId;
138
+ const parentGroupId = group.groupId ? idMap.get(group.groupId) ?? group.groupId : void 0;
143
139
  groups.push(cloneDrawingParam(group, groupDrawingId, parentGroupId));
144
140
  }
145
141
  for (const child of groupParams.flatChildren || []) {
146
- var _idMap$get5, _idMap$get6;
147
- const childDrawingId = (_idMap$get5 = idMap.get(child.drawingId)) !== null && _idMap$get5 !== void 0 ? _idMap$get5 : child.drawingId;
148
- const parentGroupId = child.groupId ? (_idMap$get6 = idMap.get(child.groupId)) !== null && _idMap$get6 !== void 0 ? _idMap$get6 : child.groupId : void 0;
142
+ const childDrawingId = idMap.get(child.drawingId) ?? child.drawingId;
143
+ const parentGroupId = child.groupId ? idMap.get(child.groupId) ?? child.groupId : void 0;
149
144
  flatChildren.push(cloneDrawingParam(child, childDrawingId, parentGroupId));
150
145
  }
151
146
  return {
@@ -292,7 +287,7 @@ const UngroupSheetDrawingCommand = {
292
287
  };
293
288
 
294
289
  //#endregion
295
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
290
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
296
291
  function _typeof(o) {
297
292
  "@babel/helpers - typeof";
298
293
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -303,7 +298,7 @@ function _typeof(o) {
303
298
  }
304
299
 
305
300
  //#endregion
306
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
301
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
307
302
  function toPrimitive(t, r) {
308
303
  if ("object" != _typeof(t) || !t) return t;
309
304
  var e = t[Symbol.toPrimitive];
@@ -316,14 +311,14 @@ function toPrimitive(t, r) {
316
311
  }
317
312
 
318
313
  //#endregion
319
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
314
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
320
315
  function toPropertyKey(t) {
321
316
  var i = toPrimitive(t, "string");
322
317
  return "symbol" == _typeof(i) ? i : i + "";
323
318
  }
324
319
 
325
320
  //#endregion
326
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
321
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
327
322
  function _defineProperty(e, r, t) {
328
323
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
329
324
  value: t,
@@ -334,7 +329,7 @@ function _defineProperty(e, r, t) {
334
329
  }
335
330
 
336
331
  //#endregion
337
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
332
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
338
333
  function __decorateParam(paramIndex, decorator) {
339
334
  return function(target, key) {
340
335
  decorator(target, key, paramIndex);
@@ -342,7 +337,7 @@ function __decorateParam(paramIndex, decorator) {
342
337
  }
343
338
 
344
339
  //#endregion
345
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
340
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
346
341
  function __decorate(decorators, target, key, desc) {
347
342
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
348
343
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -378,11 +373,11 @@ function rotatedBoundingBox(width, height, angleDegrees) {
378
373
  function getDrawingSizeByCell(accessor, location, originImageWidth, originImageHeight, angle) {
379
374
  var _skeletonManagerServi;
380
375
  const { rotatedHeight, rotatedWidth } = rotatedBoundingBox(originImageWidth, originImageHeight, angle);
381
- const currentRender = accessor.get(IRenderManagerService).getRenderById(location.unitId);
376
+ const currentRender = accessor.get(IRenderManagerService).getRenderUnitById(location.unitId);
382
377
  if (!currentRender) return false;
383
378
  const skeleton = (_skeletonManagerServi = currentRender.with(SheetSkeletonManagerService).getSkeletonParam(location.subUnitId)) === null || _skeletonManagerServi === void 0 ? void 0 : _skeletonManagerServi.skeleton;
384
379
  if (skeleton == null) return false;
385
- const cellInfo = skeleton.getCellByIndex(location.row, location.col);
380
+ const cellInfo = skeleton.getCellWithCoordByIndex(location.row, location.col);
386
381
  const cellWidth = cellInfo.mergeInfo.endX - cellInfo.mergeInfo.startX - 2;
387
382
  const cellHeight = cellInfo.mergeInfo.endY - cellInfo.mergeInfo.startY - 2;
388
383
  const imageRatio = rotatedWidth / rotatedHeight;
@@ -448,7 +443,6 @@ let SheetDrawingUpdateController = class SheetDrawingUpdateController extends Di
448
443
  return this._insertCellImage(file, location);
449
444
  }
450
445
  async insertFloatImageByFile(file) {
451
- var _transformToAxisAlign;
452
446
  let imageParam;
453
447
  try {
454
448
  imageParam = await this._imageIoService.saveImage(file);
@@ -495,7 +489,7 @@ let SheetDrawingUpdateController = class SheetDrawingUpdateController extends Di
495
489
  source,
496
490
  transform: newTransform,
497
491
  sheetTransform,
498
- axisAlignSheetTransform: (_transformToAxisAlign = transformToAxisAlignPosition(newTransform, skeleton)) !== null && _transformToAxisAlign !== void 0 ? _transformToAxisAlign : sheetTransform
492
+ axisAlignSheetTransform: transformToAxisAlignPosition(newTransform, skeleton) ?? sheetTransform
499
493
  };
500
494
  return this._commandService.executeCommand(InsertSheetDrawingCommand.id, {
501
495
  unitId,
@@ -571,10 +565,9 @@ let SheetDrawingUpdateController = class SheetDrawingUpdateController extends Di
571
565
  }
572
566
  });
573
567
  if (jsonXActions) {
574
- var _location$row, _location$col;
575
568
  docDataModel.apply(jsonXActions);
576
569
  return this._commandService.syncExecuteCommand(SetRangeValuesCommand.id, {
577
- value: { [(_location$row = location === null || location === void 0 ? void 0 : location.row) !== null && _location$row !== void 0 ? _location$row : row]: { [(_location$col = location === null || location === void 0 ? void 0 : location.col) !== null && _location$col !== void 0 ? _location$col : col]: {
570
+ value: { [(location === null || location === void 0 ? void 0 : location.row) ?? row]: { [(location === null || location === void 0 ? void 0 : location.col) ?? col]: {
578
571
  p: docDataModel.getSnapshot(),
579
572
  t: 1
580
573
  } } },
@@ -633,10 +626,9 @@ let SheetDrawingUpdateController = class SheetDrawingUpdateController extends Di
633
626
  }
634
627
  });
635
628
  if (jsonXActions) {
636
- var _location$row2, _location$col2;
637
629
  docDataModel.apply(jsonXActions);
638
630
  return this._commandService.syncExecuteCommand(SetRangeValuesCommand.id, {
639
- value: { [(_location$row2 = location === null || location === void 0 ? void 0 : location.row) !== null && _location$row2 !== void 0 ? _location$row2 : selection.primary.actualRow]: { [(_location$col2 = location === null || location === void 0 ? void 0 : location.col) !== null && _location$col2 !== void 0 ? _location$col2 : selection.primary.actualColumn]: {
631
+ value: { [(location === null || location === void 0 ? void 0 : location.row) ?? selection.primary.actualRow]: { [(location === null || location === void 0 ? void 0 : location.col) ?? selection.primary.actualColumn]: {
640
632
  p: docDataModel.getSnapshot(),
641
633
  t: 1
642
634
  } } },
@@ -888,20 +880,17 @@ const InsertFloatImageCommand = {
888
880
  if (files) {
889
881
  const awaitFiles = files.map((file) => sheetDrawingUpdateController.insertFloatImageByFile(file));
890
882
  return (await Promise.all(awaitFiles)).every((result) => result);
891
- } else {
892
- var _sheetDrawingUpdateCo;
893
- return (_sheetDrawingUpdateCo = sheetDrawingUpdateController.insertFloatImage()) !== null && _sheetDrawingUpdateCo !== void 0 ? _sheetDrawingUpdateCo : false;
894
- }
883
+ } else return sheetDrawingUpdateController.insertFloatImage() ?? false;
895
884
  }
896
885
  };
897
886
  const InsertCellImageCommand = {
898
887
  id: "sheet.command.insert-cell-image",
899
888
  type: CommandType.COMMAND,
900
889
  handler: (accessor) => {
901
- var _getCurrentTypeOfRend2, _getCurrentTypeOfRend3;
890
+ var _getCurrentTypeOfRend2;
902
891
  const univerInstanceService = accessor.get(IUniverInstanceService);
903
892
  const renderManagerService = accessor.get(IRenderManagerService);
904
- return (_getCurrentTypeOfRend2 = (_getCurrentTypeOfRend3 = getCurrentTypeOfRenderer(UniverInstanceType.UNIVER_SHEET, univerInstanceService, renderManagerService)) === null || _getCurrentTypeOfRend3 === void 0 ? void 0 : _getCurrentTypeOfRend3.with(SheetDrawingUpdateController).insertCellImage()) !== null && _getCurrentTypeOfRend2 !== void 0 ? _getCurrentTypeOfRend2 : false;
893
+ return ((_getCurrentTypeOfRend2 = getCurrentTypeOfRenderer(UniverInstanceType.UNIVER_SHEET, univerInstanceService, renderManagerService)) === null || _getCurrentTypeOfRend2 === void 0 ? void 0 : _getCurrentTypeOfRend2.with(SheetDrawingUpdateController).insertCellImage()) ?? false;
905
894
  }
906
895
  };
907
896
 
@@ -990,20 +979,14 @@ function rangeToA1Notation(range) {
990
979
  return start === end ? start : `${start}:${end}`;
991
980
  }
992
981
  /**
993
- * Check if a cell has image
994
- */
995
- function cellHasImage$1(cell) {
996
- var _cell$p, _cell$p2;
997
- return !!((cell === null || cell === void 0 || (_cell$p = cell.p) === null || _cell$p === void 0 || (_cell$p = _cell$p.drawingsOrder) === null || _cell$p === void 0 ? void 0 : _cell$p.length) && (cell === null || cell === void 0 || (_cell$p2 = cell.p) === null || _cell$p2 === void 0 || (_cell$p2 = _cell$p2.drawingsOrder) === null || _cell$p2 === void 0 ? void 0 : _cell$p2.length) > 0);
998
- }
999
- /**
1000
982
  * Get image data from cell
1001
983
  */
1002
984
  function getCellImageData(cell) {
1003
- var _cell$p3, _cell$p4;
1004
- if (!((_cell$p3 = cell.p) === null || _cell$p3 === void 0 || (_cell$p3 = _cell$p3.drawingsOrder) === null || _cell$p3 === void 0 ? void 0 : _cell$p3.length) || !((_cell$p4 = cell.p) === null || _cell$p4 === void 0 ? void 0 : _cell$p4.drawings)) return null;
1005
- const drawingId = cell.p.drawingsOrder[0];
1006
- const drawing = cell.p.drawings[drawingId];
985
+ var _documentData$drawing;
986
+ const documentData = cell.p;
987
+ const drawingId = documentData === null || documentData === void 0 || (_documentData$drawing = documentData.drawingsOrder) === null || _documentData$drawing === void 0 ? void 0 : _documentData$drawing[0];
988
+ if (!isCellImage(documentData) || !drawingId || !(documentData === null || documentData === void 0 ? void 0 : documentData.drawings)) return null;
989
+ const drawing = documentData.drawings[drawingId];
1007
990
  if (!drawing || !("source" in drawing) || !("imageSourceType" in drawing)) return null;
1008
991
  return drawing;
1009
992
  }
@@ -1037,12 +1020,6 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1037
1020
  this._imageIoService = _imageIoService;
1038
1021
  this._urlImageService = _urlImageService;
1039
1022
  }
1040
- /**
1041
- * @deprecated Use IURLImageService directly
1042
- */
1043
- registerURLImageDownloader(downloader) {
1044
- return this._urlImageService.registerURLImageDownloader(downloader);
1045
- }
1046
1023
  getCellImagesInSelection() {
1047
1024
  const workbook = this._univerInstanceService.getCurrentUnitOfType(UniverInstanceType.UNIVER_SHEET);
1048
1025
  if (!workbook) return [];
@@ -1056,7 +1033,7 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1056
1033
  const { startRow, endRow, startColumn, endColumn } = selection.range;
1057
1034
  for (let row = startRow; row <= endRow; row++) for (let col = startColumn; col <= endColumn; col++) {
1058
1035
  const cell = cellMatrix.getValue(row, col);
1059
- if (cellHasImage$1(cell)) {
1036
+ if (isCellImage(cell === null || cell === void 0 ? void 0 : cell.p)) {
1060
1037
  const imageData = getCellImageData(cell);
1061
1038
  if (imageData) images.push({
1062
1039
  row,
@@ -1082,7 +1059,7 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1082
1059
  const { startRow, endRow, startColumn, endColumn } = range;
1083
1060
  for (let row = startRow; row <= endRow; row++) for (let col = startColumn; col <= endColumn; col++) {
1084
1061
  const cell = cellMatrix.getValue(row, col);
1085
- if (cellHasImage$1(cell)) {
1062
+ if (isCellImage(cell === null || cell === void 0 ? void 0 : cell.p)) {
1086
1063
  const imageData = getCellImageData(cell);
1087
1064
  if (imageData) images.push({
1088
1065
  row,
@@ -1120,8 +1097,8 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1120
1097
  for (let row = minRow; row <= maxRow; row++) {
1121
1098
  const cell = cellMatrix.getValue(row, col);
1122
1099
  if (cell) {
1123
- var _cell$v, _cell$p5;
1124
- if (((_cell$v = cell.v) === null || _cell$v === void 0 ? void 0 : _cell$v.toString()) || ((_cell$p5 = cell.p) === null || _cell$p5 === void 0 || (_cell$p5 = _cell$p5.body) === null || _cell$p5 === void 0 || (_cell$p5 = _cell$p5.dataStream) === null || _cell$p5 === void 0 ? void 0 : _cell$p5.trim()) || "") {
1100
+ var _cell$v, _cell$p;
1101
+ if (((_cell$v = cell.v) === null || _cell$v === void 0 ? void 0 : _cell$v.toString()) || ((_cell$p = cell.p) === null || _cell$p === void 0 || (_cell$p = _cell$p.body) === null || _cell$p === void 0 || (_cell$p = _cell$p.dataStream) === null || _cell$p === void 0 ? void 0 : _cell$p.trim()) || "") {
1125
1102
  columnsWithData.add(col);
1126
1103
  break;
1127
1104
  }
@@ -1157,8 +1134,8 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1157
1134
  for (let row = minRow; row <= maxRow; row++) {
1158
1135
  const cell = cellMatrix.getValue(row, col);
1159
1136
  if (cell) {
1160
- var _cell$v2, _cell$p6;
1161
- if (((_cell$v2 = cell.v) === null || _cell$v2 === void 0 ? void 0 : _cell$v2.toString()) || ((_cell$p6 = cell.p) === null || _cell$p6 === void 0 || (_cell$p6 = _cell$p6.body) === null || _cell$p6 === void 0 || (_cell$p6 = _cell$p6.dataStream) === null || _cell$p6 === void 0 ? void 0 : _cell$p6.trim()) || "") {
1137
+ var _cell$v2, _cell$p2;
1138
+ if (((_cell$v2 = cell.v) === null || _cell$v2 === void 0 ? void 0 : _cell$v2.toString()) || ((_cell$p2 = cell.p) === null || _cell$p2 === void 0 || (_cell$p2 = _cell$p2.body) === null || _cell$p2 === void 0 || (_cell$p2 = _cell$p2.dataStream) === null || _cell$p2 === void 0 ? void 0 : _cell$p2.trim()) || "") {
1162
1139
  columnsWithData.add(col);
1163
1140
  break;
1164
1141
  }
@@ -1209,8 +1186,8 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1209
1186
  if (worksheet) {
1210
1187
  const cell = worksheet.getCellMatrix().getValue(imageInfo.row, config.columnIndex);
1211
1188
  if (cell) {
1212
- var _cell$v3, _cell$p7;
1213
- const value = ((_cell$v3 = cell.v) === null || _cell$v3 === void 0 ? void 0 : _cell$v3.toString()) || ((_cell$p7 = cell.p) === null || _cell$p7 === void 0 || (_cell$p7 = _cell$p7.body) === null || _cell$p7 === void 0 || (_cell$p7 = _cell$p7.dataStream) === null || _cell$p7 === void 0 ? void 0 : _cell$p7.trim()) || "";
1189
+ var _cell$v3, _cell$p3;
1190
+ const value = ((_cell$v3 = cell.v) === null || _cell$v3 === void 0 ? void 0 : _cell$v3.toString()) || ((_cell$p3 = cell.p) === null || _cell$p3 === void 0 || (_cell$p3 = _cell$p3.body) === null || _cell$p3 === void 0 || (_cell$p3 = _cell$p3.dataStream) === null || _cell$p3 === void 0 ? void 0 : _cell$p3.trim()) || "";
1214
1191
  if (value) {
1215
1192
  const sanitized = value.replace(/[<>:"/\\|?*]/g, "_").trim();
1216
1193
  if (sanitized) parts.push(sanitized);
@@ -1231,8 +1208,8 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1231
1208
  if (worksheet) {
1232
1209
  const cell = worksheet.getCellMatrix().getValue(imageInfo.row, config.columnIndex);
1233
1210
  if (cell) {
1234
- var _cell$v4, _cell$p8;
1235
- const value = ((_cell$v4 = cell.v) === null || _cell$v4 === void 0 ? void 0 : _cell$v4.toString()) || ((_cell$p8 = cell.p) === null || _cell$p8 === void 0 || (_cell$p8 = _cell$p8.body) === null || _cell$p8 === void 0 || (_cell$p8 = _cell$p8.dataStream) === null || _cell$p8 === void 0 ? void 0 : _cell$p8.trim()) || "";
1211
+ var _cell$v4, _cell$p4;
1212
+ const value = ((_cell$v4 = cell.v) === null || _cell$v4 === void 0 ? void 0 : _cell$v4.toString()) || ((_cell$p4 = cell.p) === null || _cell$p4 === void 0 || (_cell$p4 = _cell$p4.body) === null || _cell$p4 === void 0 || (_cell$p4 = _cell$p4.dataStream) === null || _cell$p4 === void 0 ? void 0 : _cell$p4.trim()) || "";
1236
1213
  if (value) {
1237
1214
  const sanitized = value.replace(/[<>:"/\\|?*]/g, "_").trim();
1238
1215
  if (sanitized) parts.push(sanitized);
@@ -1362,7 +1339,6 @@ const SaveCellImagesCommand = {
1362
1339
  width: 360,
1363
1340
  title: { title: titleText },
1364
1341
  children: { label: BATCH_SAVE_IMAGES_DIALOG_ID },
1365
- destroyOnClose: true,
1366
1342
  preservePositionOnDestroy: true,
1367
1343
  onClose: () => dialogService.close(BATCH_SAVE_IMAGES_DIALOG_ID)
1368
1344
  });
@@ -1515,7 +1491,6 @@ let SheetsDrawingGroupCopyPasteController = class SheetsDrawingGroupCopyPasteCon
1515
1491
  };
1516
1492
  }
1517
1493
  _generateGroupPasteMutations(pasteTo) {
1518
- var _cloned$flatChildren;
1519
1494
  if (!this._copyInfo) return {
1520
1495
  redos: [],
1521
1496
  undos: []
@@ -1546,12 +1521,11 @@ let SheetsDrawingGroupCopyPasteController = class SheetsDrawingGroupCopyPasteCon
1546
1521
  left: pasteRect.startX,
1547
1522
  top: pasteRect.startY
1548
1523
  };
1549
- const allDrawings = [...((_cloned$flatChildren = cloned.flatChildren) !== null && _cloned$flatChildren !== void 0 ? _cloned$flatChildren : []).map((d) => ({
1524
+ const allDrawings = [...(cloned.flatChildren ?? []).map((d) => ({
1550
1525
  ...d,
1551
1526
  unitId,
1552
1527
  subUnitId
1553
1528
  })), ...cloned.groups.map((d) => {
1554
- var _transformToDrawingPo, _transformToAxisAlign;
1555
1529
  if (d.drawingId !== newRootGroupId) return {
1556
1530
  ...d,
1557
1531
  unitId,
@@ -1562,8 +1536,8 @@ let SheetsDrawingGroupCopyPasteController = class SheetsDrawingGroupCopyPasteCon
1562
1536
  unitId,
1563
1537
  subUnitId,
1564
1538
  transform: newTransform,
1565
- sheetTransform: (_transformToDrawingPo = transformToDrawingPosition(newTransform, pasteToSkeleton)) !== null && _transformToDrawingPo !== void 0 ? _transformToDrawingPo : origRootGroup.sheetTransform,
1566
- axisAlignSheetTransform: (_transformToAxisAlign = transformToAxisAlignPosition(newTransform, pasteToSkeleton)) !== null && _transformToAxisAlign !== void 0 ? _transformToAxisAlign : origRootGroup.sheetTransform
1539
+ sheetTransform: transformToDrawingPosition(newTransform, pasteToSkeleton) ?? origRootGroup.sheetTransform,
1540
+ axisAlignSheetTransform: transformToAxisAlignPosition(newTransform, pasteToSkeleton) ?? origRootGroup.sheetTransform
1567
1541
  };
1568
1542
  })];
1569
1543
  const { undo: removeOp, redo: insertOp, objects } = this._sheetDrawingService.getBatchAddOp(allDrawings);
@@ -1687,14 +1661,13 @@ function shouldStartFloatDomMoveFromHandle(info, detail) {
1687
1661
  return detail.hostAnchorId === info.id && (detail.hostUnitId == null || detail.hostUnitId === info.unitId) && (detail.button == null || detail.button === 0) && typeof detail.clientX === "number" && typeof detail.clientY === "number";
1688
1662
  }
1689
1663
  function createFloatDomMoveDragState(info, detail) {
1690
- var _info$rect$left, _info$rect$top;
1691
1664
  if (typeof detail.clientX !== "number" || typeof detail.clientY !== "number") return;
1692
1665
  return {
1693
1666
  pointerId: detail.pointerId,
1694
1667
  startClientX: detail.clientX,
1695
1668
  startClientY: detail.clientY,
1696
- startLeft: Number((_info$rect$left = info.rect.left) !== null && _info$rect$left !== void 0 ? _info$rect$left : 0),
1697
- startTop: Number((_info$rect$top = info.rect.top) !== null && _info$rect$top !== void 0 ? _info$rect$top : 0)
1669
+ startLeft: Number(info.rect.left ?? 0),
1670
+ startTop: Number(info.rect.top ?? 0)
1698
1671
  };
1699
1672
  }
1700
1673
  function resolveFloatDomMoveDragTransform(state, event, scene) {
@@ -1976,8 +1949,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
1976
1949
  * default {@link Rect} fallback.
1977
1950
  */
1978
1951
  registerRenderObjectFactory(drawingType, factory) {
1979
- var _this$_renderObjectFa;
1980
- const factories = (_this$_renderObjectFa = this._renderObjectFactories.get(drawingType)) !== null && _this$_renderObjectFa !== void 0 ? _this$_renderObjectFa : [];
1952
+ const factories = this._renderObjectFactories.get(drawingType) ?? [];
1981
1953
  factories.push(factory);
1982
1954
  this._renderObjectFactories.set(drawingType, factories);
1983
1955
  return { dispose: () => {
@@ -1989,10 +1961,9 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
1989
1961
  } };
1990
1962
  }
1991
1963
  _createRenderObject(context) {
1992
- var _factory;
1993
1964
  const factories = this._renderObjectFactories.get(context.drawingType);
1994
1965
  const factory = factories === null || factories === void 0 ? void 0 : factories[factories.length - 1];
1995
- return (_factory = factory === null || factory === void 0 ? void 0 : factory(context)) !== null && _factory !== void 0 ? _factory : new Rect(context.key, context.config);
1966
+ return (factory === null || factory === void 0 ? void 0 : factory(context)) ?? new Rect(context.key, context.config);
1996
1967
  }
1997
1968
  _bindScrollEvent() {
1998
1969
  this._lifecycleService.lifecycle$.pipe(filter((s) => s === LifecycleStages.Rendered), take(1)).subscribe(() => {
@@ -2069,7 +2040,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2069
2040
  }
2070
2041
  _commitFloatDomMove(info) {
2071
2042
  var _this$_renderManagerS;
2072
- const skeletonParam = (_this$_renderManagerS = this._renderManagerService.getRenderById(info.unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.with(SheetSkeletonManagerService).getSkeletonParam(info.subUnitId);
2043
+ const skeletonParam = (_this$_renderManagerS = this._renderManagerService.getRenderUnitById(info.unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.with(SheetSkeletonManagerService).getSkeletonParam(info.subUnitId);
2073
2044
  const drawing = this._sheetDrawingService.getDrawingByParam({
2074
2045
  unitId: info.unitId,
2075
2046
  subUnitId: info.subUnitId,
@@ -2238,7 +2209,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2238
2209
  }
2239
2210
  _getSceneAndTransformerByDrawingSearch(unitId) {
2240
2211
  if (unitId == null) return;
2241
- const renderUnit = this._renderManagerService.getRenderById(unitId);
2212
+ const renderUnit = this._renderManagerService.getRenderUnitById(unitId);
2242
2213
  const scene = renderUnit === null || renderUnit === void 0 ? void 0 : renderUnit.scene;
2243
2214
  if (renderUnit == null || scene == null) return null;
2244
2215
  return {
@@ -2262,7 +2233,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2262
2233
  if (!workbook) return;
2263
2234
  const activeSheetId = workbook.getActiveSheet().getSheetId();
2264
2235
  if (!floatDomParam || !target) return;
2265
- const skeleton = (_this$_renderManagerS2 = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS2 === void 0 ? void 0 : _this$_renderManagerS2.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2236
+ const skeleton = (_this$_renderManagerS2 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS2 === void 0 ? void 0 : _this$_renderManagerS2.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2266
2237
  if (!skeleton) return;
2267
2238
  const { transform, drawingType, data, hidden, groupId } = floatDomParam;
2268
2239
  if (!isCanvasFloatDomDrawingType(drawingType)) return;
@@ -2320,7 +2291,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2320
2291
  if (data && data.border) imageConfig.stroke = data.border;
2321
2292
  Object.assign(imageConfig, SHEET_CHART_RENDER_OBJECT_CONFIG);
2322
2293
  } else imageConfig.rotateEnabled = false;
2323
- const rect = rectShape !== null && rectShape !== void 0 ? rectShape : this._createRenderObject({
2294
+ const rect = rectShape ?? this._createRenderObject({
2324
2295
  key: rectShapeKey,
2325
2296
  config: imageConfig,
2326
2297
  unitId,
@@ -2470,6 +2441,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2470
2441
  if (previewObjectKey) scene.removeObject(previewObjectKey);
2471
2442
  });
2472
2443
  listener && disposableCollection.add(listener);
2444
+ this._bindFloatDomScroll(disposableCollection, info, renderObject.renderUnit.scene, skeleton.skeleton, target.worksheet);
2473
2445
  this._domLayerInfoMap.set(drawingId, info);
2474
2446
  });
2475
2447
  }));
@@ -2505,7 +2477,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2505
2477
  unitId,
2506
2478
  subUnitId
2507
2479
  });
2508
- const skeleton = (_this$_renderManagerS3 = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS3 === void 0 ? void 0 : _this$_renderManagerS3.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2480
+ const skeleton = (_this$_renderManagerS3 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS3 === void 0 ? void 0 : _this$_renderManagerS3.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2509
2481
  if (!renderObject || !target || !skeleton) return;
2510
2482
  ids.forEach((id) => {
2511
2483
  const floatDomInfo = this._domLayerInfoMap.get(id);
@@ -2522,23 +2494,6 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2522
2494
  this._syncFloatDomVisibilityForActiveSheet(unitId, subUnitId);
2523
2495
  updateSheet(unitId, subUnitId);
2524
2496
  }));
2525
- this.disposeWithMe(this._univerInstanceService.getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_SHEET).pipe(switchMap((workbook) => workbook ? workbook.activeSheet$ : of(null)), map((worksheet) => {
2526
- if (!worksheet) return null;
2527
- const unitId = worksheet.getUnitId();
2528
- const render = this._renderManagerService.getRenderById(unitId);
2529
- return render ? {
2530
- render,
2531
- unitId,
2532
- subUnitId: worksheet.getSheetId()
2533
- } : null;
2534
- }), switchMap((render) => render ? fromEventSubject(render.render.scene.getViewport(SHEET_VIEWPORT_KEY.VIEW_MAIN).onScrollAfter$).pipe(map(() => ({
2535
- unitId: render.unitId,
2536
- subUnitId: render.subUnitId
2537
- }))) : of(null))).subscribe((value) => {
2538
- if (!value) return;
2539
- const { unitId, subUnitId } = value;
2540
- updateSheet(unitId, subUnitId);
2541
- }));
2542
2497
  this.disposeWithMe(this._commandService.onCommandExecuted((commandInfo) => {
2543
2498
  if (commandInfo.id === SetZoomRatioOperation.id) {
2544
2499
  const { unitId } = commandInfo.params;
@@ -2554,6 +2509,13 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2554
2509
  }
2555
2510
  }));
2556
2511
  }
2512
+ _bindFloatDomScroll(disposableCollection, info, scene, skeleton, worksheet) {
2513
+ const viewport = scene.getViewport(SHEET_VIEWPORT_KEY.VIEW_MAIN);
2514
+ if (!viewport) return;
2515
+ disposableCollection.add(fromEventSubject(viewport.onScrollAfter$).subscribe(() => {
2516
+ info.position$.next(calcSheetFloatDomPosition(info.rect, scene, skeleton, worksheet, info));
2517
+ }));
2518
+ }
2557
2519
  updateFloatDomProps(unitId, subUnitId, id, props) {
2558
2520
  const info = this._domLayerInfoMap.get(id);
2559
2521
  const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
@@ -2583,13 +2545,13 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2583
2545
  }
2584
2546
  }
2585
2547
  _getObjectIncludingGroup(scene, key, groupKey) {
2586
- var _ref, _ref2, _this$_getChildObject, _scene$getObjectInclu;
2587
- return (_ref = (_ref2 = (_this$_getChildObject = this._getChildObjectFromGroup(scene, key, groupKey)) !== null && _this$_getChildObject !== void 0 ? _this$_getChildObject : (_scene$getObjectInclu = scene.getObjectIncludeInGroup) === null || _scene$getObjectInclu === void 0 ? void 0 : _scene$getObjectInclu.call(scene, key)) !== null && _ref2 !== void 0 ? _ref2 : scene.getObject(key)) !== null && _ref !== void 0 ? _ref : null;
2548
+ var _scene$getObjectInclu;
2549
+ return this._getChildObjectFromGroup(scene, key, groupKey) ?? ((_scene$getObjectInclu = scene.getObjectIncludeInGroup) === null || _scene$getObjectInclu === void 0 ? void 0 : _scene$getObjectInclu.call(scene, key)) ?? scene.getObject(key) ?? null;
2588
2550
  }
2589
2551
  _getChildObjectFromGroup(scene, key, groupKey) {
2590
- var _scene$getObjectInclu2, _scene$getObjectInclu3;
2552
+ var _scene$getObjectInclu2;
2591
2553
  if (!groupKey) return null;
2592
- const groupObject = (_scene$getObjectInclu2 = (_scene$getObjectInclu3 = scene.getObjectIncludeInGroup) === null || _scene$getObjectInclu3 === void 0 ? void 0 : _scene$getObjectInclu3.call(scene, groupKey)) !== null && _scene$getObjectInclu2 !== void 0 ? _scene$getObjectInclu2 : scene.getObject(groupKey);
2554
+ const groupObject = ((_scene$getObjectInclu2 = scene.getObjectIncludeInGroup) === null || _scene$getObjectInclu2 === void 0 ? void 0 : _scene$getObjectInclu2.call(scene, groupKey)) ?? scene.getObject(groupKey);
2593
2555
  return this._findChildObject(groupObject, key);
2594
2556
  }
2595
2557
  _findChildObject(object, key) {
@@ -2613,16 +2575,15 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2613
2575
  if (info) info.rect = object;
2614
2576
  }
2615
2577
  _getChartDataBackground(data) {
2616
- var _record$backgroundCol;
2617
2578
  if (!data || typeof data !== "object" || Array.isArray(data)) return;
2618
2579
  const record = data;
2619
- const background = (_record$backgroundCol = record.backgroundColor) !== null && _record$backgroundCol !== void 0 ? _record$backgroundCol : record.background;
2580
+ const background = record.backgroundColor ?? record.background;
2620
2581
  return typeof background === "string" ? background : void 0;
2621
2582
  }
2622
2583
  _getPosition(position, unitId) {
2623
2584
  var _this$_renderManagerS4;
2624
2585
  const { startX, endX, startY, endY } = position;
2625
- const selectionRenderService = (_this$_renderManagerS4 = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS4 === void 0 ? void 0 : _this$_renderManagerS4.with(ISheetSelectionRenderService);
2586
+ const selectionRenderService = (_this$_renderManagerS4 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS4 === void 0 ? void 0 : _this$_renderManagerS4.with(ISheetSelectionRenderService);
2626
2587
  if (selectionRenderService == null) return;
2627
2588
  const start = selectionRenderService.getCellWithCoordByOffset(startX, startY);
2628
2589
  if (start == null) return;
@@ -2689,7 +2650,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2689
2650
  if (!target) throw new Error("cannot find current target!");
2690
2651
  const { unitId, subUnitId } = target;
2691
2652
  const { initPosition, componentKey, data, allowTransform = true } = layer;
2692
- const id = propId !== null && propId !== void 0 ? propId : generateRandomId();
2653
+ const id = propId ?? generateRandomId();
2693
2654
  const sheetTransform = this._getPosition(initPosition, unitId);
2694
2655
  if (sheetTransform == null) return;
2695
2656
  const sheetDrawingParam = {
@@ -2769,12 +2730,12 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2769
2730
  const { unitId, subUnitId } = target;
2770
2731
  const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
2771
2732
  if (!renderObject) return;
2772
- const currentRender = this._renderManagerService.getRenderById(unitId);
2733
+ const currentRender = this._renderManagerService.getRenderUnitById(unitId);
2773
2734
  if (!currentRender) return;
2774
- const skeletonParam = (_this$_renderManagerS5 = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS5 === void 0 ? void 0 : _this$_renderManagerS5.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2735
+ const skeletonParam = (_this$_renderManagerS5 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS5 === void 0 ? void 0 : _this$_renderManagerS5.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2775
2736
  if (!skeletonParam) return;
2776
2737
  const { componentKey, data, allowTransform = true } = config;
2777
- const id = propId !== null && propId !== void 0 ? propId : generateRandomId();
2738
+ const id = propId ?? generateRandomId();
2778
2739
  const { position: rangePosition, position$: rangePos$ } = this._createRangePositionObserver(range, currentRender, skeletonParam.skeleton);
2779
2740
  const sheetTransform = this._getPosition(rangePosition, unitId);
2780
2741
  if (sheetTransform == null) return;
@@ -2809,7 +2770,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2809
2770
  if (!workbook) return;
2810
2771
  const activeSheetId = workbook.getActiveSheet().getSheetId();
2811
2772
  if (!floatDomParam || !target) return;
2812
- const skMangerService = (_this$_renderManagerS6 = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS6 === void 0 ? void 0 : _this$_renderManagerS6.with(SheetSkeletonManagerService);
2773
+ const skMangerService = (_this$_renderManagerS6 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS6 === void 0 ? void 0 : _this$_renderManagerS6.with(SheetSkeletonManagerService);
2813
2774
  if (!skMangerService) return;
2814
2775
  const skeletonParam = skMangerService.getSkeletonParam(subUnitId);
2815
2776
  if (!skeletonParam) return;
@@ -2932,34 +2893,34 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2932
2893
  };
2933
2894
  this._canvasFloatDomService.addFloatDom(floatDomCfg);
2934
2895
  this.disposeWithMe(rangePos$.subscribe((newRangePos) => {
2935
- var _domAnchor$width, _domAnchor$height, _domAnchor$width2, _domAnchor$height2;
2936
2896
  const calcOffsetPos = calcDomPositionByAnchor({
2937
2897
  rotate: 0,
2938
2898
  startX: newRangePos.startX,
2939
2899
  startY: newRangePos.startY,
2940
2900
  endX: newRangePos.endX,
2941
2901
  endY: newRangePos.endY,
2942
- width: (_domAnchor$width = domAnchor.width) !== null && _domAnchor$width !== void 0 ? _domAnchor$width : newRangePos.width,
2943
- height: (_domAnchor$height = domAnchor.height) !== null && _domAnchor$height !== void 0 ? _domAnchor$height : newRangePos.height,
2902
+ width: domAnchor.width ?? newRangePos.width,
2903
+ height: domAnchor.height ?? newRangePos.height,
2944
2904
  absolute: {
2945
2905
  left: rangePosition.absolute.left,
2946
2906
  top: rangePosition.absolute.top
2947
2907
  }
2948
2908
  }, domAnchor);
2949
- const newPos = calcSheetFloatDomPosition(new Rect(getDrawingShapeKeyByDrawingSearch({
2909
+ const newRect = new Rect(getDrawingShapeKeyByDrawingSearch({
2950
2910
  unitId,
2951
2911
  subUnitId,
2952
2912
  drawingId
2953
2913
  }), {
2954
2914
  left: calcOffsetPos.startX,
2955
2915
  top: calcOffsetPos.startY,
2956
- width: (_domAnchor$width2 = domAnchor.width) !== null && _domAnchor$width2 !== void 0 ? _domAnchor$width2 : newRangePos.width,
2957
- height: (_domAnchor$height2 = domAnchor.height) !== null && _domAnchor$height2 !== void 0 ? _domAnchor$height2 : newRangePos.height,
2916
+ width: domAnchor.width ?? newRangePos.width,
2917
+ height: domAnchor.height ?? newRangePos.height,
2958
2918
  zIndex: this._drawingManagerService.getDrawingOrder(unitId, subUnitId).length - 1
2959
- }), renderObject.renderUnit.scene, skeletonParam.skeleton, target.worksheet, floatDomInfo);
2919
+ });
2920
+ const newPos = calcSheetFloatDomPosition(newRect, renderObject.renderUnit.scene, skeletonParam.skeleton, target.worksheet, floatDomInfo);
2960
2921
  position$.next(newPos);
2961
2922
  }));
2962
- const skm = (_this$_renderManagerS7 = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS7 === void 0 ? void 0 : _this$_renderManagerS7.with(SheetSkeletonManagerService);
2923
+ const skm = (_this$_renderManagerS7 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS7 === void 0 ? void 0 : _this$_renderManagerS7.with(SheetSkeletonManagerService);
2963
2924
  const skeletonSubscription = skm === null || skm === void 0 ? void 0 : skm.currentSkeleton$.subscribe((skeleton) => {
2964
2925
  if (!skeleton) return;
2965
2926
  if (skeletonParam.sheetId !== skeleton.sheetId) this._removeDom(id, true);
@@ -2973,6 +2934,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2973
2934
  this._canvasFloatDomService.removeFloatDom(drawingId);
2974
2935
  });
2975
2936
  listener && disposableCollection.add(listener);
2937
+ this._bindFloatDomScroll(disposableCollection, floatDomInfo, renderObject.renderUnit.scene, skeletonParam.skeleton, target.worksheet);
2976
2938
  this._domLayerInfoMap.set(drawingId, floatDomInfo);
2977
2939
  }
2978
2940
  return this._createFloatDomDisposable(id);
@@ -2986,12 +2948,12 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2986
2948
  if (!target) throw new Error("cannot find current target!");
2987
2949
  const { unitId, subUnitId } = target;
2988
2950
  if (!this._getSceneAndTransformerByDrawingSearch(unitId)) return;
2989
- const currentRender = this._renderManagerService.getRenderById(unitId);
2951
+ const currentRender = this._renderManagerService.getRenderUnitById(unitId);
2990
2952
  if (!currentRender) return;
2991
- const skeletonParam = (_this$_renderManagerS8 = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS8 === void 0 ? void 0 : _this$_renderManagerS8.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2953
+ const skeletonParam = (_this$_renderManagerS8 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS8 === void 0 ? void 0 : _this$_renderManagerS8.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2992
2954
  if (!skeletonParam) return;
2993
2955
  const { componentKey, data, allowTransform = true } = config;
2994
- const id = propId !== null && propId !== void 0 ? propId : generateRandomId();
2956
+ const id = propId ?? generateRandomId();
2995
2957
  const { position: rangePosition, position$: rangePos$ } = this._createRangePositionObserver({
2996
2958
  startRow: 0,
2997
2959
  endRow: 0,
@@ -3031,7 +2993,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
3031
2993
  if (!workbook) return;
3032
2994
  const activeSheetId = workbook.getActiveSheet().getSheetId();
3033
2995
  if (!floatDomParam || !target) return;
3034
- const skMangerService = (_this$_renderManagerS9 = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS9 === void 0 ? void 0 : _this$_renderManagerS9.with(SheetSkeletonManagerService);
2996
+ const skMangerService = (_this$_renderManagerS9 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS9 === void 0 ? void 0 : _this$_renderManagerS9.with(SheetSkeletonManagerService);
3035
2997
  if (!skMangerService) return;
3036
2998
  const skeleton = skMangerService.getSkeletonParam(subUnitId);
3037
2999
  if (!skeleton) return;
@@ -3149,7 +3111,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
3149
3111
  top: rangePosition.absolute.top
3150
3112
  }
3151
3113
  }, domLayoutParam);
3152
- const newPos = calcSheetFloatDomPosition(new Rect(getDrawingShapeKeyByDrawingSearch({
3114
+ const newRect = new Rect(getDrawingShapeKeyByDrawingSearch({
3153
3115
  unitId,
3154
3116
  subUnitId,
3155
3117
  drawingId
@@ -3159,10 +3121,11 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
3159
3121
  width: domLayoutParam.width,
3160
3122
  height: domLayoutParam.height,
3161
3123
  zIndex: this._drawingManagerService.getDrawingOrder(unitId, subUnitId).length - 1
3162
- }), renderObject.renderUnit.scene, skeleton.skeleton, target.worksheet, floatDomInfo);
3124
+ });
3125
+ const newPos = calcSheetFloatDomPosition(newRect, renderObject.renderUnit.scene, skeleton.skeleton, target.worksheet, floatDomInfo);
3163
3126
  position$.next(newPos);
3164
3127
  }));
3165
- const skm = (_this$_renderManagerS10 = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS10 === void 0 ? void 0 : _this$_renderManagerS10.with(SheetSkeletonManagerService);
3128
+ const skm = (_this$_renderManagerS10 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS10 === void 0 ? void 0 : _this$_renderManagerS10.with(SheetSkeletonManagerService);
3166
3129
  skm === null || skm === void 0 || skm.currentSkeleton$.subscribe((skeleton) => {
3167
3130
  if (!skeleton) return;
3168
3131
  if (skeletonParam.sheetId !== skeleton.sheetId) this._removeDom(id, true);
@@ -3171,6 +3134,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
3171
3134
  this._canvasFloatDomService.removeFloatDom(drawingId);
3172
3135
  });
3173
3136
  listener && disposableCollection.add(listener);
3137
+ this._bindFloatDomScroll(disposableCollection, floatDomInfo, renderObject.renderUnit.scene, skeleton.skeleton, target.worksheet);
3174
3138
  this._domLayerInfoMap.set(drawingId, floatDomInfo);
3175
3139
  }
3176
3140
  return this._createFloatDomDisposable(id);
@@ -3286,12 +3250,11 @@ function calcCellPositionByCell(row, col, skeleton) {
3286
3250
  };
3287
3251
  }
3288
3252
  function calcDomPositionByAnchor(rangePosition, domAnchor, scale) {
3289
- var _scale, _domAnchor$width3, _domAnchor$height3;
3290
- scale = (_scale = scale) !== null && _scale !== void 0 ? _scale : 1;
3253
+ scale = scale ?? 1;
3291
3254
  const rangeWidth = rangePosition.endX - rangePosition.startX;
3292
3255
  const rangeHeight = rangePosition.endY - rangePosition.startY;
3293
- const domWidth = (_domAnchor$width3 = domAnchor === null || domAnchor === void 0 ? void 0 : domAnchor.width) !== null && _domAnchor$width3 !== void 0 ? _domAnchor$width3 : rangeWidth;
3294
- const domHeight = (_domAnchor$height3 = domAnchor === null || domAnchor === void 0 ? void 0 : domAnchor.height) !== null && _domAnchor$height3 !== void 0 ? _domAnchor$height3 : rangeHeight;
3256
+ const domWidth = (domAnchor === null || domAnchor === void 0 ? void 0 : domAnchor.width) ?? rangeWidth;
3257
+ const domHeight = (domAnchor === null || domAnchor === void 0 ? void 0 : domAnchor.height) ?? rangeHeight;
3295
3258
  let domLeft = 0;
3296
3259
  let domTop = 0;
3297
3260
  if (domAnchor) {
@@ -3386,13 +3349,6 @@ function UploadCellImageMenuFactory(accessor) {
3386
3349
  //#endregion
3387
3350
  //#region src/menu/save-images.menu.ts
3388
3351
  /**
3389
- * Check if a cell has image
3390
- */
3391
- function cellHasImage(cell) {
3392
- var _cell$p, _cell$p2;
3393
- return !!((cell === null || cell === void 0 || (_cell$p = cell.p) === null || _cell$p === void 0 || (_cell$p = _cell$p.drawingsOrder) === null || _cell$p === void 0 ? void 0 : _cell$p.length) && (cell === null || cell === void 0 || (_cell$p2 = cell.p) === null || _cell$p2 === void 0 || (_cell$p2 = _cell$p2.drawingsOrder) === null || _cell$p2 === void 0 ? void 0 : _cell$p2.length) > 0);
3394
- }
3395
- /**
3396
3352
  * Check if selection range has any images
3397
3353
  */
3398
3354
  function selectionHasImages(workbook, selection) {
@@ -3400,7 +3356,10 @@ function selectionHasImages(workbook, selection) {
3400
3356
  if (!worksheet) return false;
3401
3357
  const cellMatrix = worksheet.getCellMatrix();
3402
3358
  const { startRow, endRow, startColumn, endColumn } = selection;
3403
- for (let row = startRow; row <= endRow; row++) for (let col = startColumn; col <= endColumn; col++) if (cellHasImage(cellMatrix.getValue(row, col))) return true;
3359
+ for (let row = startRow; row <= endRow; row++) for (let col = startColumn; col <= endColumn; col++) {
3360
+ const cell = cellMatrix.getValue(row, col);
3361
+ if (isCellImage(cell === null || cell === void 0 ? void 0 : cell.p)) return true;
3362
+ }
3404
3363
  return false;
3405
3364
  }
3406
3365
  /**
@@ -3469,7 +3428,7 @@ const menuSchema = {
3469
3428
  //#endregion
3470
3429
  //#region package.json
3471
3430
  var name = "@univerjs/sheets-drawing-ui";
3472
- var version = "1.0.0-alpha.7";
3431
+ var version = "1.0.0-beta.0";
3473
3432
 
3474
3433
  //#endregion
3475
3434
  //#region src/config/config.ts
@@ -3604,18 +3563,17 @@ function BatchSaveImagesDialog() {
3604
3563
  //#endregion
3605
3564
  //#region src/views/sheet-image-panel/SheetDrawingAnchor.tsx
3606
3565
  const SheetDrawingAnchor = (props) => {
3607
- var _drawingParam$anchorT;
3608
3566
  const commandService = useDependency(ICommandService);
3609
3567
  const localeService = useDependency(LocaleService);
3610
3568
  const drawingManagerService = useDependency(IDrawingManagerService);
3611
3569
  const renderManagerService = useDependency(IRenderManagerService);
3612
3570
  const { drawings } = props;
3613
- const drawingParam = drawings[0];
3614
- const renderObject = drawingParam ? renderManagerService.getRenderById(drawingParam.unitId) : void 0;
3571
+ const drawingParam = isSheetDrawing(drawings[0]) ? drawings[0] : void 0;
3572
+ const renderObject = drawingParam ? renderManagerService.getRenderUnitById(drawingParam.unitId) : void 0;
3615
3573
  const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
3616
3574
  const transformer = scene === null || scene === void 0 ? void 0 : scene.getTransformerByCreate();
3617
3575
  const [anchorShow, setAnchorShow] = useState(true);
3618
- const [value, setValue] = useState((_drawingParam$anchorT = drawingParam === null || drawingParam === void 0 ? void 0 : drawingParam.anchorType) !== null && _drawingParam$anchorT !== void 0 ? _drawingParam$anchorT : SheetDrawingAnchorType.Position);
3576
+ const [value, setValue] = useState(drawingParam ? getSheetDrawingPlacement(drawingParam).kind : SheetDrawingAnchorType.Position);
3619
3577
  function getUpdateParams(objects, drawingManagerService) {
3620
3578
  const params = [];
3621
3579
  objects.forEach((object) => {
@@ -3625,6 +3583,10 @@ const SheetDrawingAnchor = (props) => {
3625
3583
  params.push(null);
3626
3584
  return true;
3627
3585
  }
3586
+ if (!isSheetDrawing(searchParam)) {
3587
+ params.push(null);
3588
+ return true;
3589
+ }
3628
3590
  const { unitId, subUnitId, drawingId, drawingType, anchorType, sheetTransform, axisAlignSheetTransform } = searchParam;
3629
3591
  params.push({
3630
3592
  unitId,
@@ -3648,9 +3610,9 @@ const SheetDrawingAnchor = (props) => {
3648
3610
  const params = getUpdateParams(objects, drawingManagerService);
3649
3611
  if (params.length === 0) setAnchorShow(false);
3650
3612
  else if (params.length >= 1) {
3651
- var _params$;
3652
3613
  setAnchorShow(true);
3653
- setValue(((_params$ = params[0]) === null || _params$ === void 0 ? void 0 : _params$.anchorType) || SheetDrawingAnchorType.Position);
3614
+ const drawing = params[0];
3615
+ setValue(drawing ? getSheetDrawingPlacement(drawing).kind : SheetDrawingAnchorType.Position);
3654
3616
  }
3655
3617
  });
3656
3618
  return () => {
@@ -3660,21 +3622,34 @@ const SheetDrawingAnchor = (props) => {
3660
3622
  }, [drawingManagerService, transformer]);
3661
3623
  if (!drawingParam || !transformer) return null;
3662
3624
  function handleChange(value) {
3663
- setValue(value);
3625
+ const kind = getAnchorKind(value);
3626
+ if (!kind) return;
3664
3627
  const focusDrawings = drawingManagerService.getFocusDrawings();
3665
- if (focusDrawings.length === 0) return;
3666
- const updateParams = focusDrawings.map((drawing) => {
3667
- return {
3668
- unitId: drawing.unitId,
3669
- subUnitId: drawing.subUnitId,
3628
+ if (!focusDrawings.length || !focusDrawings.every(isSheetDrawing)) return;
3629
+ const { unitId, subUnitId } = focusDrawings[0];
3630
+ const placementUpdates = [];
3631
+ for (const drawing of focusDrawings) {
3632
+ const { transform } = drawing;
3633
+ const { left, top, width, height } = transform ?? {};
3634
+ if (typeof left !== "number" || typeof top !== "number" || typeof width !== "number" || typeof height !== "number" || !Number.isFinite(left) || !Number.isFinite(top) || !Number.isFinite(width) || !Number.isFinite(height)) return;
3635
+ placementUpdates.push({
3670
3636
  drawingId: drawing.drawingId,
3671
- anchorType: value
3672
- };
3673
- });
3674
- commandService.executeCommand(SetSheetDrawingCommand.id, {
3675
- unitId: focusDrawings[0].unitId,
3676
- drawings: updateParams
3677
- });
3637
+ placement: {
3638
+ kind,
3639
+ bounds: {
3640
+ left,
3641
+ top,
3642
+ width,
3643
+ height
3644
+ }
3645
+ }
3646
+ });
3647
+ }
3648
+ if (commandService.syncExecuteCommand(SetSheetDrawingPlacementCommand.id, {
3649
+ unitId,
3650
+ subUnitId,
3651
+ drawings: placementUpdates
3652
+ })) setValue(kind);
3678
3653
  }
3679
3654
  return /* @__PURE__ */ jsxs("div", {
3680
3655
  className: clsx("univer-grid univer-gap-2 univer-py-2 univer-text-gray-400", { "univer-hidden": !anchorShow }),
@@ -3702,6 +3677,13 @@ const SheetDrawingAnchor = (props) => {
3702
3677
  }) })]
3703
3678
  });
3704
3679
  };
3680
+ function isSheetDrawing(drawing) {
3681
+ return Boolean(drawing && "sheetTransform" in drawing && "axisAlignSheetTransform" in drawing);
3682
+ }
3683
+ function getAnchorKind(value) {
3684
+ if (value === SheetDrawingAnchorType.Position || value === SheetDrawingAnchorType.Both || value === SheetDrawingAnchorType.None) return value;
3685
+ return null;
3686
+ }
3705
3687
 
3706
3688
  //#endregion
3707
3689
  //#region src/views/sheet-image-panel/SheetDrawingPanel.tsx
@@ -3797,7 +3779,7 @@ let DrawingContextMenuController = class DrawingContextMenuController extends Rx
3797
3779
  _contextMenuListener(workbook) {
3798
3780
  var _this$_renderManagerS;
3799
3781
  if (!workbook) return;
3800
- const scene = (_this$_renderManagerS = this._renderManagerService.getRenderById(workbook.getUnitId())) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.scene;
3782
+ const scene = (_this$_renderManagerS = this._renderManagerService.getRenderUnitById(workbook.getUnitId())) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.scene;
3801
3783
  if (!scene) return;
3802
3784
  const transformer = scene.getTransformerByCreate();
3803
3785
  if (!transformer) return;
@@ -3817,16 +3799,15 @@ let DrawingContextMenuController = class DrawingContextMenuController extends Rx
3817
3799
  }));
3818
3800
  }
3819
3801
  _getContextMenuPosition(drawings) {
3820
- var _this$_drawingContext;
3821
3802
  if (drawings.length !== 1) return ContextMenuPosition.DRAWING;
3822
3803
  const [drawing] = drawings;
3823
- return (_this$_drawingContext = this._drawingContextMenuService.getContextMenuPosition({
3804
+ return this._drawingContextMenuService.getContextMenuPosition({
3824
3805
  unitId: drawing.unitId,
3825
3806
  subUnitId: drawing.subUnitId,
3826
3807
  drawingId: drawing.drawingId,
3827
3808
  drawingType: drawing.drawingType,
3828
3809
  drawing
3829
- })) !== null && _this$_drawingContext !== void 0 ? _this$_drawingContext : ContextMenuPosition.DRAWING;
3810
+ }) ?? ContextMenuPosition.DRAWING;
3830
3811
  }
3831
3812
  };
3832
3813
  DrawingContextMenuController = __decorate([
@@ -3918,7 +3899,14 @@ let SheetsDrawingRenderController = class SheetsDrawingRenderController extends
3918
3899
  const drawingData = subUnitData.data[drawingId];
3919
3900
  const { unitId, subUnitId } = drawingData;
3920
3901
  const skeletonParam = this._sheetSkeletonService.getSkeletonParam(unitId, subUnitId);
3921
- if (skeletonParam && drawingData.sheetTransform) drawingData.transform = drawingPositionToTransform(drawingData.sheetTransform, skeletonParam);
3902
+ if (skeletonParam && drawingData.sheetTransform && !drawingData.groupId) {
3903
+ const transform = drawingPositionToTransform(drawingData.sheetTransform, skeletonParam);
3904
+ drawingData.transform = transform && drawingData.drawingType === DrawingTypeEnum.DRAWING_GROUP ? {
3905
+ ...transform,
3906
+ left: (transform.left ?? 0) - skeletonParam.skeleton.rowHeaderWidthAndMarginLeft,
3907
+ top: (transform.top ?? 0) - skeletonParam.skeleton.columnHeaderHeightAndMarginTop
3908
+ } : transform;
3909
+ }
3922
3910
  }
3923
3911
  }
3924
3912
  this._drawingManagerService.registerDrawingData(this._context.unitId, this._sheetDrawingService.getDrawingDataForUnit(this._context.unitId));
@@ -3934,9 +3922,11 @@ SheetsDrawingRenderController = __decorate([
3934
3922
  //#endregion
3935
3923
  //#region src/controllers/sheet-cell-image.controller.ts
3936
3924
  function resizeImageByCell(injector, location, cell) {
3937
- var _cell$p, _cell$p2;
3938
- if ((cell === null || cell === void 0 || (_cell$p = cell.p) === null || _cell$p === void 0 || (_cell$p = _cell$p.body) === null || _cell$p === void 0 ? void 0 : _cell$p.dataStream.length) === 3 && ((_cell$p2 = cell.p) === null || _cell$p2 === void 0 || (_cell$p2 = _cell$p2.drawingsOrder) === null || _cell$p2 === void 0 ? void 0 : _cell$p2.length) === 1) {
3939
- const image = cell.p.drawings[cell.p.drawingsOrder[0]];
3925
+ var _documentData$drawing, _documentData$drawing2;
3926
+ const documentData = cell === null || cell === void 0 ? void 0 : cell.p;
3927
+ const drawingId = isCellImage(documentData) && (documentData === null || documentData === void 0 || (_documentData$drawing = documentData.drawingsOrder) === null || _documentData$drawing === void 0 ? void 0 : _documentData$drawing.length) === 1 ? documentData.drawingsOrder[0] : void 0;
3928
+ const image = drawingId ? documentData === null || documentData === void 0 || (_documentData$drawing2 = documentData.drawings) === null || _documentData$drawing2 === void 0 ? void 0 : _documentData$drawing2[drawingId] : void 0;
3929
+ if (image && documentData) {
3940
3930
  const imageSize = getDrawingSizeByCell(injector, {
3941
3931
  unitId: location.unitId,
3942
3932
  subUnitId: location.subUnitId,
@@ -3952,8 +3942,8 @@ function resizeImageByCell(injector, location, cell) {
3952
3942
  image.transform.top = 0;
3953
3943
  image.docTransform.positionH.posOffset = 0;
3954
3944
  image.docTransform.positionV.posOffset = 0;
3955
- cell.p.documentStyle.pageSize.width = Infinity;
3956
- cell.p.documentStyle.pageSize.height = Infinity;
3945
+ documentData.documentStyle.pageSize.width = Infinity;
3946
+ documentData.documentStyle.pageSize.height = Infinity;
3957
3947
  return true;
3958
3948
  }
3959
3949
  }
@@ -3985,8 +3975,7 @@ let SheetCellImageController = class SheetCellImageController extends Disposable
3985
3975
  effect: InterceptorEffectEnum.Style,
3986
3976
  priority: InterceptCellContentPriority.CELL_IMAGE,
3987
3977
  handler: (cell, pos, next) => {
3988
- var _cell$p$drawingsOrder;
3989
- if ((cell === null || cell === void 0 ? void 0 : cell.p) && ((_cell$p$drawingsOrder = cell.p.drawingsOrder) === null || _cell$p$drawingsOrder === void 0 ? void 0 : _cell$p$drawingsOrder.length)) {
3978
+ if (cell && isCellImage(cell.p)) {
3990
3979
  if (cell === pos.rawData) cell = { ...pos.rawData };
3991
3980
  if (!cell.interceptorStyle) cell.interceptorStyle = {};
3992
3981
  cell.interceptorStyle.tr = { a: 0 };
@@ -4086,10 +4075,9 @@ let SheetCellImageCopyPasteController = class SheetCellImageCopyPasteController
4086
4075
  _initDocImageCopyPasteHooks() {
4087
4076
  this.disposeWithMe(this._commandService.beforeCommandExecuted((commandInfo) => {
4088
4077
  if (commandInfo.id === InnerPasteCommand.id) {
4089
- var _doc$drawings;
4090
4078
  const { doc } = commandInfo.params;
4091
4079
  const currentDoc = this._univerInstanceService.getCurrentUnitOfType(UniverInstanceType.UNIVER_DOC);
4092
- if (currentDoc == null || !Object.keys((_doc$drawings = doc.drawings) !== null && _doc$drawings !== void 0 ? _doc$drawings : {}).length) return;
4080
+ if (currentDoc == null || !Object.keys(doc.drawings ?? {}).length) return;
4093
4081
  const docUnitId = currentDoc.getUnitId();
4094
4082
  if (DISABLE_UNITS.includes(docUnitId)) {
4095
4083
  var _currentDoc$getBody;
@@ -4105,7 +4093,6 @@ let SheetCellImageCopyPasteController = class SheetCellImageCopyPasteController
4105
4093
  title: { label: this._localeService.t("sheets-drawing-ui.cell-image.pasteTitle") },
4106
4094
  children: { label: this._localeService.t("sheets-drawing-ui.cell-image.pasteContent") },
4107
4095
  width: 320,
4108
- destroyOnClose: true,
4109
4096
  onClose: handleCloseDialog,
4110
4097
  showOk: true,
4111
4098
  showCancel: true,
@@ -4157,12 +4144,11 @@ let SheetDrawingActiveRenderController = class SheetDrawingActiveRenderControlle
4157
4144
  setTimeout(() => {
4158
4145
  const drawingMap = this._drawingManagerService.drawingManagerData;
4159
4146
  const removeDrawings = [];
4160
- Object.keys(drawingMap !== null && drawingMap !== void 0 ? drawingMap : {}).forEach((unitId) => {
4161
- var _drawingMap$unitId;
4162
- const subUnitMap = (_drawingMap$unitId = drawingMap[unitId]) !== null && _drawingMap$unitId !== void 0 ? _drawingMap$unitId : {};
4147
+ Object.keys(drawingMap ?? {}).forEach((unitId) => {
4148
+ const subUnitMap = drawingMap[unitId] ?? {};
4163
4149
  Object.keys(subUnitMap).forEach((subUnitId) => {
4164
- var _subUnitMap$subUnitId, _subUnitMap$subUnitId2;
4165
- const drawingData = (_subUnitMap$subUnitId = (_subUnitMap$subUnitId2 = subUnitMap[subUnitId]) === null || _subUnitMap$subUnitId2 === void 0 ? void 0 : _subUnitMap$subUnitId2.data) !== null && _subUnitMap$subUnitId !== void 0 ? _subUnitMap$subUnitId : {};
4150
+ var _subUnitMap$subUnitId;
4151
+ const drawingData = ((_subUnitMap$subUnitId = subUnitMap[subUnitId]) === null || _subUnitMap$subUnitId === void 0 ? void 0 : _subUnitMap$subUnitId.data) ?? {};
4166
4152
  Object.keys(drawingData).forEach((drawingId) => {
4167
4153
  if (unitId === selfUnitId) removeDrawings.push(drawingData[drawingId]);
4168
4154
  });
@@ -4178,13 +4164,12 @@ let SheetDrawingActiveRenderController = class SheetDrawingActiveRenderControlle
4178
4164
  const drawingMap = this._drawingManagerService.drawingManagerData;
4179
4165
  const insertDrawings = [];
4180
4166
  const removeDrawings = [];
4181
- Object.keys(drawingMap !== null && drawingMap !== void 0 ? drawingMap : {}).forEach((unitId) => {
4182
- var _drawingMap$unitId2;
4167
+ Object.keys(drawingMap ?? {}).forEach((unitId) => {
4183
4168
  if (unitId !== showUnitId) return;
4184
- const subUnitMap = (_drawingMap$unitId2 = drawingMap[unitId]) !== null && _drawingMap$unitId2 !== void 0 ? _drawingMap$unitId2 : {};
4169
+ const subUnitMap = drawingMap[unitId] ?? {};
4185
4170
  Object.keys(subUnitMap).forEach((subUnitId) => {
4186
- var _subUnitMap$subUnitId3, _subUnitMap$subUnitId4;
4187
- const drawingData = (_subUnitMap$subUnitId3 = (_subUnitMap$subUnitId4 = subUnitMap[subUnitId]) === null || _subUnitMap$subUnitId4 === void 0 ? void 0 : _subUnitMap$subUnitId4.data) !== null && _subUnitMap$subUnitId3 !== void 0 ? _subUnitMap$subUnitId3 : {};
4171
+ var _subUnitMap$subUnitId2;
4172
+ const drawingData = ((_subUnitMap$subUnitId2 = subUnitMap[subUnitId]) === null || _subUnitMap$subUnitId2 === void 0 ? void 0 : _subUnitMap$subUnitId2.data) ?? {};
4188
4173
  Object.keys(drawingData).forEach((drawingId) => {
4189
4174
  if (unitId === showUnitId && subUnitId === showSubunitId) {
4190
4175
  const drawing = drawingData[drawingId];
@@ -4408,7 +4393,6 @@ let SheetsDrawingCopyPasteController = class SheetsDrawingCopyPasteController ex
4408
4393
  subUnitId,
4409
4394
  isCut: copyType === COPY_TYPE.CUT,
4410
4395
  getTransform: (transform, sheetTransform) => {
4411
- var _transformToDrawingPo, _transformToAxisAlign;
4412
4396
  const pasteRect = attachRangeWithCoord(pasteToSkeleton, {
4413
4397
  startRow: pasteRange.startRow,
4414
4398
  endRow: pasteRange.endRow,
@@ -4422,8 +4406,8 @@ let SheetsDrawingCopyPasteController = class SheetsDrawingCopyPasteController ex
4422
4406
  };
4423
4407
  return {
4424
4408
  transform: newTransform,
4425
- sheetTransform: (_transformToDrawingPo = transformToDrawingPosition(newTransform, pasteToSkeleton)) !== null && _transformToDrawingPo !== void 0 ? _transformToDrawingPo : sheetTransform,
4426
- axisAlignSheetTransform: (_transformToAxisAlign = transformToAxisAlignPosition(newTransform, pasteToSkeleton)) !== null && _transformToAxisAlign !== void 0 ? _transformToAxisAlign : sheetTransform
4409
+ sheetTransform: transformToDrawingPosition(newTransform, pasteToSkeleton) ?? sheetTransform,
4410
+ axisAlignSheetTransform: transformToAxisAlignPosition(newTransform, pasteToSkeleton) ?? sheetTransform
4427
4411
  };
4428
4412
  }
4429
4413
  });
@@ -4554,11 +4538,10 @@ let SheetsDrawingCopyPasteController = class SheetsDrawingCopyPasteController ex
4554
4538
  unitId: toUnitId,
4555
4539
  subUnitId: toSubUnitId,
4556
4540
  getTransform: (transform, sheetTransform) => {
4557
- var _transform$left, _transform$top, _transformToAxisAlign2;
4558
4541
  const newTransform = {
4559
4542
  ...transform,
4560
- left: ((_transform$left = transform === null || transform === void 0 ? void 0 : transform.left) !== null && _transform$left !== void 0 ? _transform$left : 0) + leftOffset,
4561
- top: ((_transform$top = transform === null || transform === void 0 ? void 0 : transform.top) !== null && _transform$top !== void 0 ? _transform$top : 0) + topOffset
4543
+ left: ((transform === null || transform === void 0 ? void 0 : transform.left) ?? 0) + leftOffset,
4544
+ top: ((transform === null || transform === void 0 ? void 0 : transform.top) ?? 0) + topOffset
4562
4545
  };
4563
4546
  return {
4564
4547
  transform: newTransform,
@@ -4575,7 +4558,7 @@ let SheetsDrawingCopyPasteController = class SheetsDrawingCopyPasteController ex
4575
4558
  column: sheetTransform.from.column + columnOffset
4576
4559
  }
4577
4560
  },
4578
- axisAlignSheetTransform: (_transformToAxisAlign2 = transformToAxisAlignPosition(newTransform, toSkeleton)) !== null && _transformToAxisAlign2 !== void 0 ? _transformToAxisAlign2 : sheetTransform
4561
+ axisAlignSheetTransform: transformToAxisAlignPosition(newTransform, toSkeleton) ?? sheetTransform
4579
4562
  };
4580
4563
  },
4581
4564
  isCut: copyType === COPY_TYPE.CUT
@@ -4643,7 +4626,7 @@ let SheetDrawingPermissionController = class SheetDrawingPermissionController ex
4643
4626
  const subUnitId = sheet.getSheetId();
4644
4627
  const drawingData = this._sheetDrawingService.getDrawingData(unitId, subUnitId);
4645
4628
  const drawingDataValues = Object.values(drawingData);
4646
- const renderObject = this._renderManagerService.getRenderById(unitId);
4629
+ const renderObject = this._renderManagerService.getRenderUnitById(unitId);
4647
4630
  const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
4648
4631
  if (!scene) return;
4649
4632
  scene.getAllObjectsByOrder().forEach((object) => {
@@ -4677,7 +4660,7 @@ let SheetDrawingPermissionController = class SheetDrawingPermissionController ex
4677
4660
  const subUnitId = sheet.getSheetId();
4678
4661
  const drawingData = this._sheetDrawingService.getDrawingData(unitId, subUnitId);
4679
4662
  const drawingDataValues = Object.values(drawingData);
4680
- const renderObject = this._renderManagerService.getRenderById(unitId);
4663
+ const renderObject = this._renderManagerService.getRenderUnitById(unitId);
4681
4664
  const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
4682
4665
  if (!scene) return;
4683
4666
  scene.getAllObjectsByOrder().forEach((object) => {
@@ -4693,7 +4676,7 @@ let SheetDrawingPermissionController = class SheetDrawingPermissionController ex
4693
4676
  if (!sheet) return EMPTY;
4694
4677
  const unitId = workbook.getUnitId();
4695
4678
  const subUnitId = sheet.getSheetId();
4696
- const renderObject = this._renderManagerService.getRenderById(unitId);
4679
+ const renderObject = this._renderManagerService.getRenderUnitById(unitId);
4697
4680
  const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
4698
4681
  if (!scene) return EMPTY;
4699
4682
  const transformer = scene.getTransformerByCreate();
@@ -4741,7 +4724,7 @@ let SheetDrawingPermissionController = class SheetDrawingPermissionController ex
4741
4724
  if (!sheet) return EMPTY;
4742
4725
  const unitId = workbook.getUnitId();
4743
4726
  const subUnitId = sheet.getSheetId();
4744
- const renderObject = this._renderManagerService.getRenderById(unitId);
4727
+ const renderObject = this._renderManagerService.getRenderUnitById(unitId);
4745
4728
  const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
4746
4729
  if (!scene) return EMPTY;
4747
4730
  const transformer = scene.getTransformerByCreate();
@@ -4778,7 +4761,7 @@ let SheetDrawingPermissionController = class SheetDrawingPermissionController ex
4778
4761
  const sheet = workbook.getActiveSheet();
4779
4762
  if (!sheet) return;
4780
4763
  const subUnitId = sheet.getSheetId();
4781
- const renderObject = this._renderManagerService.getRenderById(unitId);
4764
+ const renderObject = this._renderManagerService.getRenderUnitById(unitId);
4782
4765
  const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
4783
4766
  if (!scene) return;
4784
4767
  const drawingData = this._sheetDrawingService.getDrawingData(unitId, subUnitId);
@@ -4799,6 +4782,10 @@ let SheetDrawingPermissionController = class SheetDrawingPermissionController ex
4799
4782
  const { drawings } = command.params;
4800
4783
  unitId = drawings === null || drawings === void 0 || (_drawings$ = drawings[0]) === null || _drawings$ === void 0 ? void 0 : _drawings$.unitId;
4801
4784
  subUnitId = drawings === null || drawings === void 0 || (_drawings$2 = drawings[0]) === null || _drawings$2 === void 0 ? void 0 : _drawings$2.subUnitId;
4785
+ } else if (command.id === SetSheetDrawingPlacementCommand.id) {
4786
+ const target = getPlacementCommandTarget(command.params);
4787
+ unitId = target.unitId;
4788
+ subUnitId = target.subUnitId;
4802
4789
  } else if (command.id === SetDrawingArrangeCommand.id) {
4803
4790
  const params = command.params;
4804
4791
  unitId = params.unitId;
@@ -4822,16 +4809,23 @@ SheetDrawingPermissionController = __decorate([
4822
4809
  __decorateParam(6, Inject(SheetPermissionCheckController)),
4823
4810
  __decorateParam(7, Inject(ISheetDrawingService))
4824
4811
  ], SheetDrawingPermissionController);
4812
+ function getPlacementCommandTarget(params) {
4813
+ if (!params) return {};
4814
+ return {
4815
+ unitId: "unitId" in params && typeof params.unitId === "string" ? params.unitId : void 0,
4816
+ subUnitId: "subUnitId" in params && typeof params.subUnitId === "string" ? params.subUnitId : void 0
4817
+ };
4818
+ }
4825
4819
 
4826
4820
  //#endregion
4827
4821
  //#region src/views/PrintingFloatDom.tsx
4828
4822
  function createPrintingFloatDom(info, scene, skeleton, worksheet) {
4829
4823
  const { width, height, angle, left, top } = info.transform;
4830
4824
  const offsetBound = transformBound2DOMBound({
4831
- left: left !== null && left !== void 0 ? left : 0,
4832
- right: (left !== null && left !== void 0 ? left : 0) + (width !== null && width !== void 0 ? width : 0),
4833
- top: top !== null && top !== void 0 ? top : 0,
4834
- bottom: (top !== null && top !== void 0 ? top : 0) + (height !== null && height !== void 0 ? height : 0)
4825
+ left: left ?? 0,
4826
+ right: (left ?? 0) + (width ?? 0),
4827
+ top: top ?? 0,
4828
+ bottom: (top ?? 0) + (height ?? 0)
4835
4829
  }, scene, skeleton, worksheet, void 0, true);
4836
4830
  const { scaleX, scaleY } = scene.getAncestorScale();
4837
4831
  const domPos = {
@@ -4915,7 +4909,7 @@ let SheetDrawingPrintingController = class SheetDrawingPrintingController extend
4915
4909
  } }));
4916
4910
  this.disposeWithMe(this._sheetPrintInterceptorService.interceptor.intercept(this._sheetPrintInterceptorService.interceptor.getInterceptPoints().PRINTING_RANGE, { handler: (range, pos, next) => {
4917
4911
  const { unitId, subUnitId } = pos;
4918
- const renderer = this._renderManagerService.getRenderById(unitId);
4912
+ const renderer = this._renderManagerService.getRenderUnitById(unitId);
4919
4913
  if (!renderer) return next(range);
4920
4914
  const skeleton = renderer.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
4921
4915
  if (!skeleton) return next(range);
@@ -5119,7 +5113,7 @@ const FlipSheetDrawingCommand = {
5119
5113
  }
5120
5114
  };
5121
5115
  function getSceneByDrawingSearch(accessor, unitId) {
5122
- const render = accessor.get(IRenderManagerService).getRenderById(unitId);
5116
+ const render = accessor.get(IRenderManagerService).getRenderUnitById(unitId);
5123
5117
  if (!render) return null;
5124
5118
  return render.scene;
5125
5119
  }
@@ -5308,7 +5302,7 @@ let DrawingPopupMenuController = class DrawingPopupMenuController extends RxDisp
5308
5302
  }
5309
5303
  _popupMenuListener(unitId) {
5310
5304
  var _this$_renderManagerS;
5311
- const scene = (_this$_renderManagerS = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.scene;
5305
+ const scene = (_this$_renderManagerS = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.scene;
5312
5306
  if (!scene) return;
5313
5307
  const transformer = scene.getTransformerByCreate();
5314
5308
  if (!transformer) return;
@@ -5333,7 +5327,7 @@ let DrawingPopupMenuController = class DrawingPopupMenuController extends RxDisp
5333
5327
  const menus = this._canvasPopManagerService.getFeatureMenu(unitId, subUnitId, drawingId, drawingType);
5334
5328
  singletonPopupDisposer = this.disposeWithMe(this._canvasPopManagerService.attachPopupToObject(object, {
5335
5329
  componentKey: COMPONENT_IMAGE_POPUP_MENU,
5336
- direction: "horizontal",
5330
+ direction: this._localeService.getDirection() === "rtl" ? "left" : "horizontal",
5337
5331
  offset: [2, 0],
5338
5332
  extraProps: { menuItems: menus || this._getImageMenuItems(unitId, subUnitId, drawingId, drawingType) }
5339
5333
  }));
@@ -5472,7 +5466,7 @@ let SheetDrawingHitTestService = class SheetDrawingHitTestService extends Dispos
5472
5466
  }
5473
5467
  hitTest(unitId, subUnitId, offsetX, offsetY) {
5474
5468
  var _this$_renderManagerS;
5475
- const scene = (_this$_renderManagerS = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.scene;
5469
+ const scene = (_this$_renderManagerS = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.scene;
5476
5470
  if (!scene) return null;
5477
5471
  return this._hitTestScene(scene, unitId, subUnitId, offsetX, offsetY);
5478
5472
  }
@@ -5496,7 +5490,7 @@ let SheetDrawingHitTestService = class SheetDrawingHitTestService extends Dispos
5496
5490
  this._disposeDoubleClickListener();
5497
5491
  return;
5498
5492
  }
5499
- const render = this._renderManagerService.getRenderById(context.unitId);
5493
+ const render = this._renderManagerService.getRenderUnitById(context.unitId);
5500
5494
  const scene = render === null || render === void 0 ? void 0 : render.scene;
5501
5495
  if (!render || !scene) {
5502
5496
  this._disposeDoubleClickListener();
@@ -5627,7 +5621,7 @@ _defineProperty(UniverSheetsDrawingUIPlugin, "pluginName", "SHEET_IMAGE_UI_PLUGI
5627
5621
  _defineProperty(UniverSheetsDrawingUIPlugin, "packageName", name);
5628
5622
  _defineProperty(UniverSheetsDrawingUIPlugin, "version", version);
5629
5623
  UniverSheetsDrawingUIPlugin = __decorate([
5630
- DependentOn(UniverDrawingPlugin, UniverDocsDrawingPlugin, UniverDrawingUIPlugin, UniverSheetsDrawingPlugin),
5624
+ DependentOn(UniverDrawingPlugin, UniverRenderEnginePlugin, UniverDocsDrawingPlugin, UniverSheetsPlugin, UniverSheetsDrawingPlugin, UniverDrawingUIPlugin, UniverSheetsUIPlugin),
5631
5625
  __decorateParam(1, Inject(Injector)),
5632
5626
  __decorateParam(2, IRenderManagerService),
5633
5627
  __decorateParam(3, IConfigService)