@univerjs/sheets-drawing-ui 1.0.0-alpha.8 → 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/es/index.js CHANGED
@@ -1,12 +1,12 @@
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";
2
+ import { ClearSheetDrawingTransformerOperation, DrawingApplyType, ISheetDrawingService, InsertSheetDrawingCommand, RemoveSheetDrawingCommand, SetDrawingApplyMutation, SetDrawingArrangeCommand, SetSheetDrawingCommand, SetSheetDrawingPlacementCommand, SheetDrawingAnchorType, UniverSheetsDrawingPlugin, drawingPositionToTransform, getSheetDrawingPlacement, transformToAxisAlignPosition, transformToDrawingPosition } from "@univerjs/sheets-drawing";
3
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, UniverSheetsPlugin, WorkbookEditablePermission, WorkbookViewPermission, WorksheetEditPermission, WorksheetViewPermission, attachRangeWithCoord, discreteRangeToRange, getSheetCommandTarget } from "@univerjs/sheets";
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
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
- import { CanvasFloatDomPreviewService, CanvasFloatDomService, ComponentManager, ContextMenuGroup, ContextMenuPosition, IClipboardInterfaceService, IContextMenuService, IDialogService, ILocalFileService, IMenuManagerService, IMessageService, IShortcutService, ISidebarService, KeyCode, MenuItemType, PrintFloatDomSingle, RibbonInsertGroup, UniverUIPlugin, connectInjector, getMenuHiddenObservable, useDependency, useObservable } from "@univerjs/ui";
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";
12
12
  import { DocDrawingController, UniverDocsDrawingPlugin } from "@univerjs/docs-drawing";
@@ -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 {
@@ -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
  }
@@ -1050,7 +1033,7 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1050
1033
  const { startRow, endRow, startColumn, endColumn } = selection.range;
1051
1034
  for (let row = startRow; row <= endRow; row++) for (let col = startColumn; col <= endColumn; col++) {
1052
1035
  const cell = cellMatrix.getValue(row, col);
1053
- if (cellHasImage$1(cell)) {
1036
+ if (isCellImage(cell === null || cell === void 0 ? void 0 : cell.p)) {
1054
1037
  const imageData = getCellImageData(cell);
1055
1038
  if (imageData) images.push({
1056
1039
  row,
@@ -1076,7 +1059,7 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1076
1059
  const { startRow, endRow, startColumn, endColumn } = range;
1077
1060
  for (let row = startRow; row <= endRow; row++) for (let col = startColumn; col <= endColumn; col++) {
1078
1061
  const cell = cellMatrix.getValue(row, col);
1079
- if (cellHasImage$1(cell)) {
1062
+ if (isCellImage(cell === null || cell === void 0 ? void 0 : cell.p)) {
1080
1063
  const imageData = getCellImageData(cell);
1081
1064
  if (imageData) images.push({
1082
1065
  row,
@@ -1114,8 +1097,8 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1114
1097
  for (let row = minRow; row <= maxRow; row++) {
1115
1098
  const cell = cellMatrix.getValue(row, col);
1116
1099
  if (cell) {
1117
- var _cell$v, _cell$p5;
1118
- 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()) || "") {
1119
1102
  columnsWithData.add(col);
1120
1103
  break;
1121
1104
  }
@@ -1151,8 +1134,8 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1151
1134
  for (let row = minRow; row <= maxRow; row++) {
1152
1135
  const cell = cellMatrix.getValue(row, col);
1153
1136
  if (cell) {
1154
- var _cell$v2, _cell$p6;
1155
- 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()) || "") {
1156
1139
  columnsWithData.add(col);
1157
1140
  break;
1158
1141
  }
@@ -1203,8 +1186,8 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1203
1186
  if (worksheet) {
1204
1187
  const cell = worksheet.getCellMatrix().getValue(imageInfo.row, config.columnIndex);
1205
1188
  if (cell) {
1206
- var _cell$v3, _cell$p7;
1207
- 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()) || "";
1208
1191
  if (value) {
1209
1192
  const sanitized = value.replace(/[<>:"/\\|?*]/g, "_").trim();
1210
1193
  if (sanitized) parts.push(sanitized);
@@ -1225,8 +1208,8 @@ let BatchSaveImagesService = class BatchSaveImagesService extends Disposable {
1225
1208
  if (worksheet) {
1226
1209
  const cell = worksheet.getCellMatrix().getValue(imageInfo.row, config.columnIndex);
1227
1210
  if (cell) {
1228
- var _cell$v4, _cell$p8;
1229
- 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()) || "";
1230
1213
  if (value) {
1231
1214
  const sanitized = value.replace(/[<>:"/\\|?*]/g, "_").trim();
1232
1215
  if (sanitized) parts.push(sanitized);
@@ -1508,7 +1491,6 @@ let SheetsDrawingGroupCopyPasteController = class SheetsDrawingGroupCopyPasteCon
1508
1491
  };
1509
1492
  }
1510
1493
  _generateGroupPasteMutations(pasteTo) {
1511
- var _cloned$flatChildren;
1512
1494
  if (!this._copyInfo) return {
1513
1495
  redos: [],
1514
1496
  undos: []
@@ -1539,12 +1521,11 @@ let SheetsDrawingGroupCopyPasteController = class SheetsDrawingGroupCopyPasteCon
1539
1521
  left: pasteRect.startX,
1540
1522
  top: pasteRect.startY
1541
1523
  };
1542
- const allDrawings = [...((_cloned$flatChildren = cloned.flatChildren) !== null && _cloned$flatChildren !== void 0 ? _cloned$flatChildren : []).map((d) => ({
1524
+ const allDrawings = [...(cloned.flatChildren ?? []).map((d) => ({
1543
1525
  ...d,
1544
1526
  unitId,
1545
1527
  subUnitId
1546
1528
  })), ...cloned.groups.map((d) => {
1547
- var _transformToDrawingPo, _transformToAxisAlign;
1548
1529
  if (d.drawingId !== newRootGroupId) return {
1549
1530
  ...d,
1550
1531
  unitId,
@@ -1555,8 +1536,8 @@ let SheetsDrawingGroupCopyPasteController = class SheetsDrawingGroupCopyPasteCon
1555
1536
  unitId,
1556
1537
  subUnitId,
1557
1538
  transform: newTransform,
1558
- sheetTransform: (_transformToDrawingPo = transformToDrawingPosition(newTransform, pasteToSkeleton)) !== null && _transformToDrawingPo !== void 0 ? _transformToDrawingPo : origRootGroup.sheetTransform,
1559
- 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
1560
1541
  };
1561
1542
  })];
1562
1543
  const { undo: removeOp, redo: insertOp, objects } = this._sheetDrawingService.getBatchAddOp(allDrawings);
@@ -1680,14 +1661,13 @@ function shouldStartFloatDomMoveFromHandle(info, detail) {
1680
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";
1681
1662
  }
1682
1663
  function createFloatDomMoveDragState(info, detail) {
1683
- var _info$rect$left, _info$rect$top;
1684
1664
  if (typeof detail.clientX !== "number" || typeof detail.clientY !== "number") return;
1685
1665
  return {
1686
1666
  pointerId: detail.pointerId,
1687
1667
  startClientX: detail.clientX,
1688
1668
  startClientY: detail.clientY,
1689
- startLeft: Number((_info$rect$left = info.rect.left) !== null && _info$rect$left !== void 0 ? _info$rect$left : 0),
1690
- 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)
1691
1671
  };
1692
1672
  }
1693
1673
  function resolveFloatDomMoveDragTransform(state, event, scene) {
@@ -1969,8 +1949,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
1969
1949
  * default {@link Rect} fallback.
1970
1950
  */
1971
1951
  registerRenderObjectFactory(drawingType, factory) {
1972
- var _this$_renderObjectFa;
1973
- const factories = (_this$_renderObjectFa = this._renderObjectFactories.get(drawingType)) !== null && _this$_renderObjectFa !== void 0 ? _this$_renderObjectFa : [];
1952
+ const factories = this._renderObjectFactories.get(drawingType) ?? [];
1974
1953
  factories.push(factory);
1975
1954
  this._renderObjectFactories.set(drawingType, factories);
1976
1955
  return { dispose: () => {
@@ -1982,10 +1961,9 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
1982
1961
  } };
1983
1962
  }
1984
1963
  _createRenderObject(context) {
1985
- var _factory;
1986
1964
  const factories = this._renderObjectFactories.get(context.drawingType);
1987
1965
  const factory = factories === null || factories === void 0 ? void 0 : factories[factories.length - 1];
1988
- 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);
1989
1967
  }
1990
1968
  _bindScrollEvent() {
1991
1969
  this._lifecycleService.lifecycle$.pipe(filter((s) => s === LifecycleStages.Rendered), take(1)).subscribe(() => {
@@ -2313,7 +2291,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2313
2291
  if (data && data.border) imageConfig.stroke = data.border;
2314
2292
  Object.assign(imageConfig, SHEET_CHART_RENDER_OBJECT_CONFIG);
2315
2293
  } else imageConfig.rotateEnabled = false;
2316
- const rect = rectShape !== null && rectShape !== void 0 ? rectShape : this._createRenderObject({
2294
+ const rect = rectShape ?? this._createRenderObject({
2317
2295
  key: rectShapeKey,
2318
2296
  config: imageConfig,
2319
2297
  unitId,
@@ -2463,6 +2441,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2463
2441
  if (previewObjectKey) scene.removeObject(previewObjectKey);
2464
2442
  });
2465
2443
  listener && disposableCollection.add(listener);
2444
+ this._bindFloatDomScroll(disposableCollection, info, renderObject.renderUnit.scene, skeleton.skeleton, target.worksheet);
2466
2445
  this._domLayerInfoMap.set(drawingId, info);
2467
2446
  });
2468
2447
  }));
@@ -2515,23 +2494,6 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2515
2494
  this._syncFloatDomVisibilityForActiveSheet(unitId, subUnitId);
2516
2495
  updateSheet(unitId, subUnitId);
2517
2496
  }));
2518
- this.disposeWithMe(this._univerInstanceService.getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_SHEET).pipe(switchMap((workbook) => workbook ? workbook.activeSheet$ : of(null)), map((worksheet) => {
2519
- if (!worksheet) return null;
2520
- const unitId = worksheet.getUnitId();
2521
- const render = this._renderManagerService.getRenderUnitById(unitId);
2522
- return render ? {
2523
- render,
2524
- unitId,
2525
- subUnitId: worksheet.getSheetId()
2526
- } : null;
2527
- }), switchMap((render) => render ? fromEventSubject(render.render.scene.getViewport(SHEET_VIEWPORT_KEY.VIEW_MAIN).onScrollAfter$).pipe(map(() => ({
2528
- unitId: render.unitId,
2529
- subUnitId: render.subUnitId
2530
- }))) : of(null))).subscribe((value) => {
2531
- if (!value) return;
2532
- const { unitId, subUnitId } = value;
2533
- updateSheet(unitId, subUnitId);
2534
- }));
2535
2497
  this.disposeWithMe(this._commandService.onCommandExecuted((commandInfo) => {
2536
2498
  if (commandInfo.id === SetZoomRatioOperation.id) {
2537
2499
  const { unitId } = commandInfo.params;
@@ -2547,6 +2509,13 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2547
2509
  }
2548
2510
  }));
2549
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
+ }
2550
2519
  updateFloatDomProps(unitId, subUnitId, id, props) {
2551
2520
  const info = this._domLayerInfoMap.get(id);
2552
2521
  const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
@@ -2576,13 +2545,13 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2576
2545
  }
2577
2546
  }
2578
2547
  _getObjectIncludingGroup(scene, key, groupKey) {
2579
- var _ref, _ref2, _this$_getChildObject, _scene$getObjectInclu;
2580
- 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;
2581
2550
  }
2582
2551
  _getChildObjectFromGroup(scene, key, groupKey) {
2583
- var _scene$getObjectInclu2, _scene$getObjectInclu3;
2552
+ var _scene$getObjectInclu2;
2584
2553
  if (!groupKey) return null;
2585
- 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);
2586
2555
  return this._findChildObject(groupObject, key);
2587
2556
  }
2588
2557
  _findChildObject(object, key) {
@@ -2606,10 +2575,9 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2606
2575
  if (info) info.rect = object;
2607
2576
  }
2608
2577
  _getChartDataBackground(data) {
2609
- var _record$backgroundCol;
2610
2578
  if (!data || typeof data !== "object" || Array.isArray(data)) return;
2611
2579
  const record = data;
2612
- const background = (_record$backgroundCol = record.backgroundColor) !== null && _record$backgroundCol !== void 0 ? _record$backgroundCol : record.background;
2580
+ const background = record.backgroundColor ?? record.background;
2613
2581
  return typeof background === "string" ? background : void 0;
2614
2582
  }
2615
2583
  _getPosition(position, unitId) {
@@ -2682,7 +2650,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2682
2650
  if (!target) throw new Error("cannot find current target!");
2683
2651
  const { unitId, subUnitId } = target;
2684
2652
  const { initPosition, componentKey, data, allowTransform = true } = layer;
2685
- const id = propId !== null && propId !== void 0 ? propId : generateRandomId();
2653
+ const id = propId ?? generateRandomId();
2686
2654
  const sheetTransform = this._getPosition(initPosition, unitId);
2687
2655
  if (sheetTransform == null) return;
2688
2656
  const sheetDrawingParam = {
@@ -2767,7 +2735,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2767
2735
  const skeletonParam = (_this$_renderManagerS5 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS5 === void 0 ? void 0 : _this$_renderManagerS5.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2768
2736
  if (!skeletonParam) return;
2769
2737
  const { componentKey, data, allowTransform = true } = config;
2770
- const id = propId !== null && propId !== void 0 ? propId : generateRandomId();
2738
+ const id = propId ?? generateRandomId();
2771
2739
  const { position: rangePosition, position$: rangePos$ } = this._createRangePositionObserver(range, currentRender, skeletonParam.skeleton);
2772
2740
  const sheetTransform = this._getPosition(rangePosition, unitId);
2773
2741
  if (sheetTransform == null) return;
@@ -2925,15 +2893,14 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2925
2893
  };
2926
2894
  this._canvasFloatDomService.addFloatDom(floatDomCfg);
2927
2895
  this.disposeWithMe(rangePos$.subscribe((newRangePos) => {
2928
- var _domAnchor$width, _domAnchor$height, _domAnchor$width2, _domAnchor$height2;
2929
2896
  const calcOffsetPos = calcDomPositionByAnchor({
2930
2897
  rotate: 0,
2931
2898
  startX: newRangePos.startX,
2932
2899
  startY: newRangePos.startY,
2933
2900
  endX: newRangePos.endX,
2934
2901
  endY: newRangePos.endY,
2935
- width: (_domAnchor$width = domAnchor.width) !== null && _domAnchor$width !== void 0 ? _domAnchor$width : newRangePos.width,
2936
- 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,
2937
2904
  absolute: {
2938
2905
  left: rangePosition.absolute.left,
2939
2906
  top: rangePosition.absolute.top
@@ -2946,8 +2913,8 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2946
2913
  }), {
2947
2914
  left: calcOffsetPos.startX,
2948
2915
  top: calcOffsetPos.startY,
2949
- width: (_domAnchor$width2 = domAnchor.width) !== null && _domAnchor$width2 !== void 0 ? _domAnchor$width2 : newRangePos.width,
2950
- 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,
2951
2918
  zIndex: this._drawingManagerService.getDrawingOrder(unitId, subUnitId).length - 1
2952
2919
  });
2953
2920
  const newPos = calcSheetFloatDomPosition(newRect, renderObject.renderUnit.scene, skeletonParam.skeleton, target.worksheet, floatDomInfo);
@@ -2967,6 +2934,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2967
2934
  this._canvasFloatDomService.removeFloatDom(drawingId);
2968
2935
  });
2969
2936
  listener && disposableCollection.add(listener);
2937
+ this._bindFloatDomScroll(disposableCollection, floatDomInfo, renderObject.renderUnit.scene, skeletonParam.skeleton, target.worksheet);
2970
2938
  this._domLayerInfoMap.set(drawingId, floatDomInfo);
2971
2939
  }
2972
2940
  return this._createFloatDomDisposable(id);
@@ -2985,7 +2953,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
2985
2953
  const skeletonParam = (_this$_renderManagerS8 = this._renderManagerService.getRenderUnitById(unitId)) === null || _this$_renderManagerS8 === void 0 ? void 0 : _this$_renderManagerS8.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
2986
2954
  if (!skeletonParam) return;
2987
2955
  const { componentKey, data, allowTransform = true } = config;
2988
- const id = propId !== null && propId !== void 0 ? propId : generateRandomId();
2956
+ const id = propId ?? generateRandomId();
2989
2957
  const { position: rangePosition, position$: rangePos$ } = this._createRangePositionObserver({
2990
2958
  startRow: 0,
2991
2959
  endRow: 0,
@@ -3166,6 +3134,7 @@ let SheetCanvasFloatDomManagerService = _SheetCanvasFloatDomManagerService = cla
3166
3134
  this._canvasFloatDomService.removeFloatDom(drawingId);
3167
3135
  });
3168
3136
  listener && disposableCollection.add(listener);
3137
+ this._bindFloatDomScroll(disposableCollection, floatDomInfo, renderObject.renderUnit.scene, skeleton.skeleton, target.worksheet);
3169
3138
  this._domLayerInfoMap.set(drawingId, floatDomInfo);
3170
3139
  }
3171
3140
  return this._createFloatDomDisposable(id);
@@ -3281,12 +3250,11 @@ function calcCellPositionByCell(row, col, skeleton) {
3281
3250
  };
3282
3251
  }
3283
3252
  function calcDomPositionByAnchor(rangePosition, domAnchor, scale) {
3284
- var _scale, _domAnchor$width3, _domAnchor$height3;
3285
- scale = (_scale = scale) !== null && _scale !== void 0 ? _scale : 1;
3253
+ scale = scale ?? 1;
3286
3254
  const rangeWidth = rangePosition.endX - rangePosition.startX;
3287
3255
  const rangeHeight = rangePosition.endY - rangePosition.startY;
3288
- const domWidth = (_domAnchor$width3 = domAnchor === null || domAnchor === void 0 ? void 0 : domAnchor.width) !== null && _domAnchor$width3 !== void 0 ? _domAnchor$width3 : rangeWidth;
3289
- 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;
3290
3258
  let domLeft = 0;
3291
3259
  let domTop = 0;
3292
3260
  if (domAnchor) {
@@ -3381,13 +3349,6 @@ function UploadCellImageMenuFactory(accessor) {
3381
3349
  //#endregion
3382
3350
  //#region src/menu/save-images.menu.ts
3383
3351
  /**
3384
- * Check if a cell has image
3385
- */
3386
- function cellHasImage(cell) {
3387
- var _cell$p, _cell$p2;
3388
- 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);
3389
- }
3390
- /**
3391
3352
  * Check if selection range has any images
3392
3353
  */
3393
3354
  function selectionHasImages(workbook, selection) {
@@ -3395,7 +3356,10 @@ function selectionHasImages(workbook, selection) {
3395
3356
  if (!worksheet) return false;
3396
3357
  const cellMatrix = worksheet.getCellMatrix();
3397
3358
  const { startRow, endRow, startColumn, endColumn } = selection;
3398
- 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
+ }
3399
3363
  return false;
3400
3364
  }
3401
3365
  /**
@@ -3464,7 +3428,7 @@ const menuSchema = {
3464
3428
  //#endregion
3465
3429
  //#region package.json
3466
3430
  var name = "@univerjs/sheets-drawing-ui";
3467
- var version = "1.0.0-alpha.8";
3431
+ var version = "1.0.0-beta.0";
3468
3432
 
3469
3433
  //#endregion
3470
3434
  //#region src/config/config.ts
@@ -3599,18 +3563,17 @@ function BatchSaveImagesDialog() {
3599
3563
  //#endregion
3600
3564
  //#region src/views/sheet-image-panel/SheetDrawingAnchor.tsx
3601
3565
  const SheetDrawingAnchor = (props) => {
3602
- var _drawingParam$anchorT;
3603
3566
  const commandService = useDependency(ICommandService);
3604
3567
  const localeService = useDependency(LocaleService);
3605
3568
  const drawingManagerService = useDependency(IDrawingManagerService);
3606
3569
  const renderManagerService = useDependency(IRenderManagerService);
3607
3570
  const { drawings } = props;
3608
- const drawingParam = drawings[0];
3571
+ const drawingParam = isSheetDrawing(drawings[0]) ? drawings[0] : void 0;
3609
3572
  const renderObject = drawingParam ? renderManagerService.getRenderUnitById(drawingParam.unitId) : void 0;
3610
3573
  const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
3611
3574
  const transformer = scene === null || scene === void 0 ? void 0 : scene.getTransformerByCreate();
3612
3575
  const [anchorShow, setAnchorShow] = useState(true);
3613
- 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);
3614
3577
  function getUpdateParams(objects, drawingManagerService) {
3615
3578
  const params = [];
3616
3579
  objects.forEach((object) => {
@@ -3620,6 +3583,10 @@ const SheetDrawingAnchor = (props) => {
3620
3583
  params.push(null);
3621
3584
  return true;
3622
3585
  }
3586
+ if (!isSheetDrawing(searchParam)) {
3587
+ params.push(null);
3588
+ return true;
3589
+ }
3623
3590
  const { unitId, subUnitId, drawingId, drawingType, anchorType, sheetTransform, axisAlignSheetTransform } = searchParam;
3624
3591
  params.push({
3625
3592
  unitId,
@@ -3643,10 +3610,9 @@ const SheetDrawingAnchor = (props) => {
3643
3610
  const params = getUpdateParams(objects, drawingManagerService);
3644
3611
  if (params.length === 0) setAnchorShow(false);
3645
3612
  else if (params.length >= 1) {
3646
- var _params$;
3647
3613
  setAnchorShow(true);
3648
- const anchorType = ((_params$ = params[0]) === null || _params$ === void 0 ? void 0 : _params$.anchorType) || SheetDrawingAnchorType.Position;
3649
- setValue(anchorType);
3614
+ const drawing = params[0];
3615
+ setValue(drawing ? getSheetDrawingPlacement(drawing).kind : SheetDrawingAnchorType.Position);
3650
3616
  }
3651
3617
  });
3652
3618
  return () => {
@@ -3656,21 +3622,34 @@ const SheetDrawingAnchor = (props) => {
3656
3622
  }, [drawingManagerService, transformer]);
3657
3623
  if (!drawingParam || !transformer) return null;
3658
3624
  function handleChange(value) {
3659
- setValue(value);
3625
+ const kind = getAnchorKind(value);
3626
+ if (!kind) return;
3660
3627
  const focusDrawings = drawingManagerService.getFocusDrawings();
3661
- if (focusDrawings.length === 0) return;
3662
- const updateParams = focusDrawings.map((drawing) => {
3663
- return {
3664
- unitId: drawing.unitId,
3665
- 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({
3666
3636
  drawingId: drawing.drawingId,
3667
- anchorType: value
3668
- };
3669
- });
3670
- commandService.executeCommand(SetSheetDrawingCommand.id, {
3671
- unitId: focusDrawings[0].unitId,
3672
- drawings: updateParams
3673
- });
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);
3674
3653
  }
3675
3654
  return /* @__PURE__ */ jsxs("div", {
3676
3655
  className: clsx("univer-grid univer-gap-2 univer-py-2 univer-text-gray-400", { "univer-hidden": !anchorShow }),
@@ -3698,6 +3677,13 @@ const SheetDrawingAnchor = (props) => {
3698
3677
  }) })]
3699
3678
  });
3700
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
+ }
3701
3687
 
3702
3688
  //#endregion
3703
3689
  //#region src/views/sheet-image-panel/SheetDrawingPanel.tsx
@@ -3813,16 +3799,15 @@ let DrawingContextMenuController = class DrawingContextMenuController extends Rx
3813
3799
  }));
3814
3800
  }
3815
3801
  _getContextMenuPosition(drawings) {
3816
- var _this$_drawingContext;
3817
3802
  if (drawings.length !== 1) return ContextMenuPosition.DRAWING;
3818
3803
  const [drawing] = drawings;
3819
- return (_this$_drawingContext = this._drawingContextMenuService.getContextMenuPosition({
3804
+ return this._drawingContextMenuService.getContextMenuPosition({
3820
3805
  unitId: drawing.unitId,
3821
3806
  subUnitId: drawing.subUnitId,
3822
3807
  drawingId: drawing.drawingId,
3823
3808
  drawingType: drawing.drawingType,
3824
3809
  drawing
3825
- })) !== null && _this$_drawingContext !== void 0 ? _this$_drawingContext : ContextMenuPosition.DRAWING;
3810
+ }) ?? ContextMenuPosition.DRAWING;
3826
3811
  }
3827
3812
  };
3828
3813
  DrawingContextMenuController = __decorate([
@@ -3914,7 +3899,14 @@ let SheetsDrawingRenderController = class SheetsDrawingRenderController extends
3914
3899
  const drawingData = subUnitData.data[drawingId];
3915
3900
  const { unitId, subUnitId } = drawingData;
3916
3901
  const skeletonParam = this._sheetSkeletonService.getSkeletonParam(unitId, subUnitId);
3917
- 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
+ }
3918
3910
  }
3919
3911
  }
3920
3912
  this._drawingManagerService.registerDrawingData(this._context.unitId, this._sheetDrawingService.getDrawingDataForUnit(this._context.unitId));
@@ -3930,9 +3922,11 @@ SheetsDrawingRenderController = __decorate([
3930
3922
  //#endregion
3931
3923
  //#region src/controllers/sheet-cell-image.controller.ts
3932
3924
  function resizeImageByCell(injector, location, cell) {
3933
- var _cell$p, _cell$p2;
3934
- 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) {
3935
- 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) {
3936
3930
  const imageSize = getDrawingSizeByCell(injector, {
3937
3931
  unitId: location.unitId,
3938
3932
  subUnitId: location.subUnitId,
@@ -3948,8 +3942,8 @@ function resizeImageByCell(injector, location, cell) {
3948
3942
  image.transform.top = 0;
3949
3943
  image.docTransform.positionH.posOffset = 0;
3950
3944
  image.docTransform.positionV.posOffset = 0;
3951
- cell.p.documentStyle.pageSize.width = Infinity;
3952
- cell.p.documentStyle.pageSize.height = Infinity;
3945
+ documentData.documentStyle.pageSize.width = Infinity;
3946
+ documentData.documentStyle.pageSize.height = Infinity;
3953
3947
  return true;
3954
3948
  }
3955
3949
  }
@@ -3981,8 +3975,7 @@ let SheetCellImageController = class SheetCellImageController extends Disposable
3981
3975
  effect: InterceptorEffectEnum.Style,
3982
3976
  priority: InterceptCellContentPriority.CELL_IMAGE,
3983
3977
  handler: (cell, pos, next) => {
3984
- var _cell$p$drawingsOrder;
3985
- 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)) {
3986
3979
  if (cell === pos.rawData) cell = { ...pos.rawData };
3987
3980
  if (!cell.interceptorStyle) cell.interceptorStyle = {};
3988
3981
  cell.interceptorStyle.tr = { a: 0 };
@@ -4082,10 +4075,9 @@ let SheetCellImageCopyPasteController = class SheetCellImageCopyPasteController
4082
4075
  _initDocImageCopyPasteHooks() {
4083
4076
  this.disposeWithMe(this._commandService.beforeCommandExecuted((commandInfo) => {
4084
4077
  if (commandInfo.id === InnerPasteCommand.id) {
4085
- var _doc$drawings;
4086
4078
  const { doc } = commandInfo.params;
4087
4079
  const currentDoc = this._univerInstanceService.getCurrentUnitOfType(UniverInstanceType.UNIVER_DOC);
4088
- 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;
4089
4081
  const docUnitId = currentDoc.getUnitId();
4090
4082
  if (DISABLE_UNITS.includes(docUnitId)) {
4091
4083
  var _currentDoc$getBody;
@@ -4152,12 +4144,11 @@ let SheetDrawingActiveRenderController = class SheetDrawingActiveRenderControlle
4152
4144
  setTimeout(() => {
4153
4145
  const drawingMap = this._drawingManagerService.drawingManagerData;
4154
4146
  const removeDrawings = [];
4155
- Object.keys(drawingMap !== null && drawingMap !== void 0 ? drawingMap : {}).forEach((unitId) => {
4156
- var _drawingMap$unitId;
4157
- const subUnitMap = (_drawingMap$unitId = drawingMap[unitId]) !== null && _drawingMap$unitId !== void 0 ? _drawingMap$unitId : {};
4147
+ Object.keys(drawingMap ?? {}).forEach((unitId) => {
4148
+ const subUnitMap = drawingMap[unitId] ?? {};
4158
4149
  Object.keys(subUnitMap).forEach((subUnitId) => {
4159
- var _subUnitMap$subUnitId, _subUnitMap$subUnitId2;
4160
- 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) ?? {};
4161
4152
  Object.keys(drawingData).forEach((drawingId) => {
4162
4153
  if (unitId === selfUnitId) removeDrawings.push(drawingData[drawingId]);
4163
4154
  });
@@ -4173,13 +4164,12 @@ let SheetDrawingActiveRenderController = class SheetDrawingActiveRenderControlle
4173
4164
  const drawingMap = this._drawingManagerService.drawingManagerData;
4174
4165
  const insertDrawings = [];
4175
4166
  const removeDrawings = [];
4176
- Object.keys(drawingMap !== null && drawingMap !== void 0 ? drawingMap : {}).forEach((unitId) => {
4177
- var _drawingMap$unitId2;
4167
+ Object.keys(drawingMap ?? {}).forEach((unitId) => {
4178
4168
  if (unitId !== showUnitId) return;
4179
- const subUnitMap = (_drawingMap$unitId2 = drawingMap[unitId]) !== null && _drawingMap$unitId2 !== void 0 ? _drawingMap$unitId2 : {};
4169
+ const subUnitMap = drawingMap[unitId] ?? {};
4180
4170
  Object.keys(subUnitMap).forEach((subUnitId) => {
4181
- var _subUnitMap$subUnitId3, _subUnitMap$subUnitId4;
4182
- 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) ?? {};
4183
4173
  Object.keys(drawingData).forEach((drawingId) => {
4184
4174
  if (unitId === showUnitId && subUnitId === showSubunitId) {
4185
4175
  const drawing = drawingData[drawingId];
@@ -4403,7 +4393,6 @@ let SheetsDrawingCopyPasteController = class SheetsDrawingCopyPasteController ex
4403
4393
  subUnitId,
4404
4394
  isCut: copyType === COPY_TYPE.CUT,
4405
4395
  getTransform: (transform, sheetTransform) => {
4406
- var _transformToDrawingPo, _transformToAxisAlign;
4407
4396
  const pasteRect = attachRangeWithCoord(pasteToSkeleton, {
4408
4397
  startRow: pasteRange.startRow,
4409
4398
  endRow: pasteRange.endRow,
@@ -4417,8 +4406,8 @@ let SheetsDrawingCopyPasteController = class SheetsDrawingCopyPasteController ex
4417
4406
  };
4418
4407
  return {
4419
4408
  transform: newTransform,
4420
- sheetTransform: (_transformToDrawingPo = transformToDrawingPosition(newTransform, pasteToSkeleton)) !== null && _transformToDrawingPo !== void 0 ? _transformToDrawingPo : sheetTransform,
4421
- axisAlignSheetTransform: (_transformToAxisAlign = transformToAxisAlignPosition(newTransform, pasteToSkeleton)) !== null && _transformToAxisAlign !== void 0 ? _transformToAxisAlign : sheetTransform
4409
+ sheetTransform: transformToDrawingPosition(newTransform, pasteToSkeleton) ?? sheetTransform,
4410
+ axisAlignSheetTransform: transformToAxisAlignPosition(newTransform, pasteToSkeleton) ?? sheetTransform
4422
4411
  };
4423
4412
  }
4424
4413
  });
@@ -4549,11 +4538,10 @@ let SheetsDrawingCopyPasteController = class SheetsDrawingCopyPasteController ex
4549
4538
  unitId: toUnitId,
4550
4539
  subUnitId: toSubUnitId,
4551
4540
  getTransform: (transform, sheetTransform) => {
4552
- var _transform$left, _transform$top, _transformToAxisAlign2;
4553
4541
  const newTransform = {
4554
4542
  ...transform,
4555
- left: ((_transform$left = transform === null || transform === void 0 ? void 0 : transform.left) !== null && _transform$left !== void 0 ? _transform$left : 0) + leftOffset,
4556
- 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
4557
4545
  };
4558
4546
  return {
4559
4547
  transform: newTransform,
@@ -4570,7 +4558,7 @@ let SheetsDrawingCopyPasteController = class SheetsDrawingCopyPasteController ex
4570
4558
  column: sheetTransform.from.column + columnOffset
4571
4559
  }
4572
4560
  },
4573
- axisAlignSheetTransform: (_transformToAxisAlign2 = transformToAxisAlignPosition(newTransform, toSkeleton)) !== null && _transformToAxisAlign2 !== void 0 ? _transformToAxisAlign2 : sheetTransform
4561
+ axisAlignSheetTransform: transformToAxisAlignPosition(newTransform, toSkeleton) ?? sheetTransform
4574
4562
  };
4575
4563
  },
4576
4564
  isCut: copyType === COPY_TYPE.CUT
@@ -4794,6 +4782,10 @@ let SheetDrawingPermissionController = class SheetDrawingPermissionController ex
4794
4782
  const { drawings } = command.params;
4795
4783
  unitId = drawings === null || drawings === void 0 || (_drawings$ = drawings[0]) === null || _drawings$ === void 0 ? void 0 : _drawings$.unitId;
4796
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;
4797
4789
  } else if (command.id === SetDrawingArrangeCommand.id) {
4798
4790
  const params = command.params;
4799
4791
  unitId = params.unitId;
@@ -4817,16 +4809,23 @@ SheetDrawingPermissionController = __decorate([
4817
4809
  __decorateParam(6, Inject(SheetPermissionCheckController)),
4818
4810
  __decorateParam(7, Inject(ISheetDrawingService))
4819
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
+ }
4820
4819
 
4821
4820
  //#endregion
4822
4821
  //#region src/views/PrintingFloatDom.tsx
4823
4822
  function createPrintingFloatDom(info, scene, skeleton, worksheet) {
4824
4823
  const { width, height, angle, left, top } = info.transform;
4825
4824
  const offsetBound = transformBound2DOMBound({
4826
- left: left !== null && left !== void 0 ? left : 0,
4827
- right: (left !== null && left !== void 0 ? left : 0) + (width !== null && width !== void 0 ? width : 0),
4828
- top: top !== null && top !== void 0 ? top : 0,
4829
- 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)
4830
4829
  }, scene, skeleton, worksheet, void 0, true);
4831
4830
  const { scaleX, scaleY } = scene.getAncestorScale();
4832
4831
  const domPos = {
@@ -5328,7 +5327,7 @@ let DrawingPopupMenuController = class DrawingPopupMenuController extends RxDisp
5328
5327
  const menus = this._canvasPopManagerService.getFeatureMenu(unitId, subUnitId, drawingId, drawingType);
5329
5328
  singletonPopupDisposer = this.disposeWithMe(this._canvasPopManagerService.attachPopupToObject(object, {
5330
5329
  componentKey: COMPONENT_IMAGE_POPUP_MENU,
5331
- direction: "horizontal",
5330
+ direction: this._localeService.getDirection() === "rtl" ? "left" : "horizontal",
5332
5331
  offset: [2, 0],
5333
5332
  extraProps: { menuItems: menus || this._getImageMenuItems(unitId, subUnitId, drawingId, drawingType) }
5334
5333
  }));
@@ -5622,7 +5621,7 @@ _defineProperty(UniverSheetsDrawingUIPlugin, "pluginName", "SHEET_IMAGE_UI_PLUGI
5622
5621
  _defineProperty(UniverSheetsDrawingUIPlugin, "packageName", name);
5623
5622
  _defineProperty(UniverSheetsDrawingUIPlugin, "version", version);
5624
5623
  UniverSheetsDrawingUIPlugin = __decorate([
5625
- DependentOn(UniverDrawingPlugin, UniverRenderEnginePlugin, UniverDocsDrawingPlugin, UniverSheetsPlugin, UniverUIPlugin, UniverSheetsDrawingPlugin, UniverDrawingUIPlugin, UniverSheetsUIPlugin),
5624
+ DependentOn(UniverDrawingPlugin, UniverRenderEnginePlugin, UniverDocsDrawingPlugin, UniverSheetsPlugin, UniverSheetsDrawingPlugin, UniverDrawingUIPlugin, UniverSheetsUIPlugin),
5626
5625
  __decorateParam(1, Inject(Injector)),
5627
5626
  __decorateParam(2, IRenderManagerService),
5628
5627
  __decorateParam(3, IConfigService)