@univerjs/sheets-drawing 0.25.0 → 1.0.0-alpha.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/cjs/facade.js CHANGED
@@ -3,9 +3,10 @@ let _univerjs_core_facade = require("@univerjs/core/facade");
3
3
  let _univerjs_drawing = require("@univerjs/drawing");
4
4
  let _univerjs_sheets = require("@univerjs/sheets");
5
5
  let _univerjs_sheets_drawing = require("@univerjs/sheets-drawing");
6
+ let _univerjs_engine_render = require("@univerjs/engine-render");
6
7
  let _univerjs_sheets_facade = require("@univerjs/sheets/facade");
7
8
 
8
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/typeof.js
9
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
9
10
  function _typeof(o) {
10
11
  "@babel/helpers - typeof";
11
12
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -16,7 +17,7 @@ function _typeof(o) {
16
17
  }
17
18
 
18
19
  //#endregion
19
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPrimitive.js
20
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
20
21
  function toPrimitive(t, r) {
21
22
  if ("object" != _typeof(t) || !t) return t;
22
23
  var e = t[Symbol.toPrimitive];
@@ -29,14 +30,14 @@ function toPrimitive(t, r) {
29
30
  }
30
31
 
31
32
  //#endregion
32
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPropertyKey.js
33
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
33
34
  function toPropertyKey(t) {
34
35
  var i = toPrimitive(t, "string");
35
36
  return "symbol" == _typeof(i) ? i : i + "";
36
37
  }
37
38
 
38
39
  //#endregion
39
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/defineProperty.js
40
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
40
41
  function _defineProperty(e, r, t) {
41
42
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
42
43
  value: t,
@@ -47,7 +48,7 @@ function _defineProperty(e, r, t) {
47
48
  }
48
49
 
49
50
  //#endregion
50
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorateParam.js
51
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
51
52
  function __decorateParam(paramIndex, decorator) {
52
53
  return function(target, key) {
53
54
  decorator(target, key, paramIndex);
@@ -55,7 +56,7 @@ function __decorateParam(paramIndex, decorator) {
55
56
  }
56
57
 
57
58
  //#endregion
58
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorate.js
59
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
59
60
  function __decorate(decorators, target, key, desc) {
60
61
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
61
62
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -890,6 +891,11 @@ FOverGridImage = __decorate([__decorateParam(1, _univerjs_core.ICommandService),
890
891
 
891
892
  //#endregion
892
893
  //#region src/facade/f-worksheet.ts
894
+ const GROUPABLE_DRAWING_TYPES = /* @__PURE__ */ new Set([
895
+ _univerjs_core.DrawingTypeEnum.DRAWING_IMAGE,
896
+ _univerjs_core.DrawingTypeEnum.DRAWING_SHAPE,
897
+ _univerjs_core.DrawingTypeEnum.DRAWING_GROUP
898
+ ]);
893
899
  var FWorksheetDrawingMixin = class extends _univerjs_sheets_facade.FWorksheet {
894
900
  async insertImage(url, column, row, offsetX, offsetY) {
895
901
  const imageBuilder = this.newOverGridImage();
@@ -979,6 +985,201 @@ var FWorksheetDrawingMixin = class extends _univerjs_sheets_facade.FWorksheet {
979
985
  const subUnitId = this.getSheetId();
980
986
  return this._injector.createInstance(FOverGridImageBuilder, unitId, subUnitId);
981
987
  }
988
+ groupDrawings(drawingIds, groupId = (0, _univerjs_core.generateRandomId)(10)) {
989
+ const uniqueDrawingIds = Array.from(new Set(drawingIds));
990
+ if (uniqueDrawingIds.length < 2) return null;
991
+ const unitId = this._fWorkbook.getId();
992
+ const subUnitId = this.getSheetId();
993
+ const sheetDrawingService = this._injector.get(_univerjs_sheets_drawing.ISheetDrawingService);
994
+ if (sheetDrawingService.getDrawingByParam({
995
+ unitId,
996
+ subUnitId,
997
+ drawingId: groupId
998
+ })) return null;
999
+ const drawings = uniqueDrawingIds.map((drawingId) => sheetDrawingService.getDrawingByParam({
1000
+ unitId,
1001
+ subUnitId,
1002
+ drawingId
1003
+ }));
1004
+ if (drawings.some((drawing) => !drawing)) return null;
1005
+ if (drawings.some((drawing) => !GROUPABLE_DRAWING_TYPES.has(drawing.drawingType))) return null;
1006
+ const validDrawings = drawings;
1007
+ const groupTransform = (0, _univerjs_engine_render.getGroupState)(0, 0, validDrawings.map((drawing) => drawing.transform || {}));
1008
+ const groupParam = {
1009
+ unitId,
1010
+ subUnitId,
1011
+ drawingId: groupId,
1012
+ drawingType: _univerjs_core.DrawingTypeEnum.DRAWING_GROUP,
1013
+ transform: groupTransform,
1014
+ groupBaseBound: {
1015
+ left: groupTransform.left,
1016
+ top: groupTransform.top,
1017
+ width: groupTransform.width,
1018
+ height: groupTransform.height
1019
+ }
1020
+ };
1021
+ const children = validDrawings.map((drawing) => ({
1022
+ ...drawing,
1023
+ groupId
1024
+ }));
1025
+ return this._applyGroupDrawingOperation([{
1026
+ parent: groupParam,
1027
+ children
1028
+ }], _univerjs_sheets_drawing.DrawingApplyType.GROUP) ? groupId : null;
1029
+ }
1030
+ ungroupDrawings(groupIds) {
1031
+ const unitId = this._fWorkbook.getId();
1032
+ const subUnitId = this.getSheetId();
1033
+ const sheetDrawingService = this._injector.get(_univerjs_sheets_drawing.ISheetDrawingService);
1034
+ const groupParams = [];
1035
+ for (const groupId of groupIds) {
1036
+ const groupDrawing = sheetDrawingService.getDrawingByParam({
1037
+ unitId,
1038
+ subUnitId,
1039
+ drawingId: groupId
1040
+ });
1041
+ if (!groupDrawing || groupDrawing.drawingType !== _univerjs_core.DrawingTypeEnum.DRAWING_GROUP) continue;
1042
+ const groupTransform = groupDrawing.transform || {
1043
+ width: 0,
1044
+ height: 0
1045
+ };
1046
+ const children = sheetDrawingService.getDrawingsByGroup({
1047
+ unitId,
1048
+ subUnitId,
1049
+ drawingId: groupId
1050
+ }).map((drawing) => {
1051
+ const newTransform = (0, _univerjs_engine_render.transformObjectOutOfGroup)(drawing.transform || {}, groupTransform, groupTransform.width || 0, groupTransform.height || 0, groupDrawing.groupBaseBound);
1052
+ return {
1053
+ ...drawing,
1054
+ transform: {
1055
+ ...drawing.transform,
1056
+ ...newTransform
1057
+ },
1058
+ groupId: void 0
1059
+ };
1060
+ });
1061
+ if (children.length > 0) groupParams.push({
1062
+ parent: groupDrawing,
1063
+ children
1064
+ });
1065
+ }
1066
+ return this._applyGroupDrawingOperation(groupParams, _univerjs_sheets_drawing.DrawingApplyType.UNGROUP);
1067
+ }
1068
+ getDrawingGroupChildren(groupId, recursive = false) {
1069
+ const unitId = this._fWorkbook.getId();
1070
+ const subUnitId = this.getSheetId();
1071
+ const sheetDrawingService = this._injector.get(_univerjs_sheets_drawing.ISheetDrawingService);
1072
+ if (!recursive) return sheetDrawingService.getDrawingsByGroup({
1073
+ unitId,
1074
+ subUnitId,
1075
+ drawingId: groupId
1076
+ });
1077
+ const nested = sheetDrawingService.getDrawingsByGroupNested({
1078
+ unitId,
1079
+ subUnitId,
1080
+ drawingId: groupId
1081
+ });
1082
+ if (!nested) return [];
1083
+ return [...nested.flatChildren || [], ...nested.groups.filter((group) => group.drawingId !== groupId)];
1084
+ }
1085
+ getDrawingParentGroup(drawingId) {
1086
+ const unitId = this._fWorkbook.getId();
1087
+ const subUnitId = this.getSheetId();
1088
+ const sheetDrawingService = this._injector.get(_univerjs_sheets_drawing.ISheetDrawingService);
1089
+ const drawing = sheetDrawingService.getDrawingByParam({
1090
+ unitId,
1091
+ subUnitId,
1092
+ drawingId
1093
+ });
1094
+ if (!(drawing === null || drawing === void 0 ? void 0 : drawing.groupId)) return null;
1095
+ const groupDrawing = sheetDrawingService.getDrawingByParam({
1096
+ unitId,
1097
+ subUnitId,
1098
+ drawingId: drawing.groupId
1099
+ });
1100
+ if (!groupDrawing || groupDrawing.drawingType !== _univerjs_core.DrawingTypeEnum.DRAWING_GROUP) return null;
1101
+ return groupDrawing;
1102
+ }
1103
+ isDrawingGrouped(drawingId) {
1104
+ return this.getDrawingParentGroup(drawingId) !== null;
1105
+ }
1106
+ _applyGroupDrawingOperation(groupParams, type) {
1107
+ if (groupParams.length === 0) return false;
1108
+ const sheetDrawingService = this._injector.get(_univerjs_sheets_drawing.ISheetDrawingService);
1109
+ const commandService = this._commandService;
1110
+ const undoRedoService = this._injector.get(_univerjs_core.IUndoRedoService);
1111
+ const { unitId, subUnitId, undo, redo, objects } = type === _univerjs_sheets_drawing.DrawingApplyType.GROUP ? sheetDrawingService.getGroupDrawingOp(groupParams) : sheetDrawingService.getUngroupDrawingOp(groupParams);
1112
+ if (commandService.syncExecuteCommand(_univerjs_sheets_drawing.SetDrawingApplyMutation.id, {
1113
+ op: redo,
1114
+ unitId,
1115
+ subUnitId,
1116
+ objects,
1117
+ type
1118
+ })) {
1119
+ const inverseType = type === _univerjs_sheets_drawing.DrawingApplyType.GROUP ? _univerjs_sheets_drawing.DrawingApplyType.UNGROUP : _univerjs_sheets_drawing.DrawingApplyType.GROUP;
1120
+ undoRedoService.pushUndoRedo({
1121
+ unitID: unitId,
1122
+ undoMutations: [{
1123
+ id: _univerjs_sheets_drawing.SetDrawingApplyMutation.id,
1124
+ params: {
1125
+ op: undo,
1126
+ unitId,
1127
+ subUnitId,
1128
+ objects: this._invertGroupOperationObjects(objects, type),
1129
+ type: inverseType
1130
+ }
1131
+ }],
1132
+ redoMutations: [{
1133
+ id: _univerjs_sheets_drawing.SetDrawingApplyMutation.id,
1134
+ params: {
1135
+ op: redo,
1136
+ unitId,
1137
+ subUnitId,
1138
+ objects,
1139
+ type
1140
+ }
1141
+ }]
1142
+ });
1143
+ return true;
1144
+ }
1145
+ return false;
1146
+ }
1147
+ _invertGroupOperationObjects(groupParams, type) {
1148
+ return type === _univerjs_sheets_drawing.DrawingApplyType.GROUP ? groupParams.map((groupParam) => {
1149
+ const { parent, children } = groupParam;
1150
+ const groupTransform = parent.transform || {
1151
+ width: 0,
1152
+ height: 0
1153
+ };
1154
+ return {
1155
+ parent: {
1156
+ ...parent,
1157
+ transform: {
1158
+ left: 0,
1159
+ top: 0
1160
+ }
1161
+ },
1162
+ children: children.map((child) => ({
1163
+ ...child,
1164
+ transform: (0, _univerjs_engine_render.transformObjectOutOfGroup)(child.transform || {}, groupTransform, groupTransform.width || 0, groupTransform.height || 0, parent.groupBaseBound),
1165
+ groupId: void 0
1166
+ }))
1167
+ };
1168
+ }) : groupParams.map((groupParam) => {
1169
+ const { parent, children } = groupParam;
1170
+ const groupTransform = (0, _univerjs_engine_render.getGroupState)(0, 0, children.map((child) => child.transform || {}));
1171
+ return {
1172
+ parent: {
1173
+ ...parent,
1174
+ transform: groupTransform
1175
+ },
1176
+ children: children.map((child) => ({
1177
+ ...child,
1178
+ groupId: parent.drawingId
1179
+ }))
1180
+ };
1181
+ });
1182
+ }
982
1183
  };
983
1184
  _univerjs_sheets_facade.FWorksheet.extend(FWorksheetDrawingMixin);
984
1185
 
package/lib/cjs/index.js CHANGED
@@ -406,7 +406,7 @@ const SetSheetDrawingCommand = {
406
406
  };
407
407
 
408
408
  //#endregion
409
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorateParam.js
409
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
410
410
  function __decorateParam(paramIndex, decorator) {
411
411
  return function(target, key) {
412
412
  decorator(target, key, paramIndex);
@@ -414,7 +414,7 @@ function __decorateParam(paramIndex, decorator) {
414
414
  }
415
415
 
416
416
  //#endregion
417
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorate.js
417
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
418
418
  function __decorate(decorators, target, key, desc) {
419
419
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
420
420
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -584,7 +584,7 @@ SheetsDrawingLoadController = __decorate([
584
584
  //#endregion
585
585
  //#region package.json
586
586
  var name = "@univerjs/sheets-drawing";
587
- var version = "0.25.0";
587
+ var version = "1.0.0-alpha.0";
588
588
 
589
589
  //#endregion
590
590
  //#region src/config/config.ts
@@ -608,7 +608,7 @@ const configSymbol = Symbol(SHEETS_DRAWING_PLUGIN_CONFIG_KEY);
608
608
  const defaultPluginConfig = {};
609
609
 
610
610
  //#endregion
611
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/typeof.js
611
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
612
612
  function _typeof(o) {
613
613
  "@babel/helpers - typeof";
614
614
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -619,7 +619,7 @@ function _typeof(o) {
619
619
  }
620
620
 
621
621
  //#endregion
622
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPrimitive.js
622
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
623
623
  function toPrimitive(t, r) {
624
624
  if ("object" != _typeof(t) || !t) return t;
625
625
  var e = t[Symbol.toPrimitive];
@@ -632,14 +632,14 @@ function toPrimitive(t, r) {
632
632
  }
633
633
 
634
634
  //#endregion
635
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPropertyKey.js
635
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
636
636
  function toPropertyKey(t) {
637
637
  var i = toPrimitive(t, "string");
638
638
  return "symbol" == _typeof(i) ? i : i + "";
639
639
  }
640
640
 
641
641
  //#endregion
642
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/defineProperty.js
642
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
643
643
  function _defineProperty(e, r, t) {
644
644
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
645
645
  value: t,
package/lib/es/facade.js CHANGED
@@ -1,11 +1,12 @@
1
- import { ArrangeTypeEnum, CanceledError, DrawingTypeEnum, ICommandService, ImageSourceType, Inject, Injector, generateRandomId } from "@univerjs/core";
1
+ import { ArrangeTypeEnum, CanceledError, DrawingTypeEnum, ICommandService, IUndoRedoService, ImageSourceType, Inject, Injector, generateRandomId } from "@univerjs/core";
2
2
  import { FBase, FEnum, FEventName, FUniver } from "@univerjs/core/facade";
3
3
  import { IDrawingManagerService, SetDrawingSelectedOperation, getImageSize } from "@univerjs/drawing";
4
4
  import { SheetSkeletonService, convertPositionCellToSheetOverGrid, convertPositionSheetOverGridToAbsolute } from "@univerjs/sheets";
5
- import { ISheetDrawingService, InsertSheetDrawingCommand, RemoveSheetDrawingCommand, SetDrawingArrangeCommand, SetSheetDrawingCommand, SheetDrawingAnchorType, transformToAxisAlignPosition } from "@univerjs/sheets-drawing";
5
+ import { DrawingApplyType, ISheetDrawingService, InsertSheetDrawingCommand, RemoveSheetDrawingCommand, SetDrawingApplyMutation, SetDrawingArrangeCommand, SetSheetDrawingCommand, SheetDrawingAnchorType, transformToAxisAlignPosition } from "@univerjs/sheets-drawing";
6
+ import { getGroupState, transformObjectOutOfGroup } from "@univerjs/engine-render";
6
7
  import { FWorksheet } from "@univerjs/sheets/facade";
7
8
 
8
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/typeof.js
9
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
9
10
  function _typeof(o) {
10
11
  "@babel/helpers - typeof";
11
12
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -16,7 +17,7 @@ function _typeof(o) {
16
17
  }
17
18
 
18
19
  //#endregion
19
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPrimitive.js
20
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
20
21
  function toPrimitive(t, r) {
21
22
  if ("object" != _typeof(t) || !t) return t;
22
23
  var e = t[Symbol.toPrimitive];
@@ -29,14 +30,14 @@ function toPrimitive(t, r) {
29
30
  }
30
31
 
31
32
  //#endregion
32
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPropertyKey.js
33
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
33
34
  function toPropertyKey(t) {
34
35
  var i = toPrimitive(t, "string");
35
36
  return "symbol" == _typeof(i) ? i : i + "";
36
37
  }
37
38
 
38
39
  //#endregion
39
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/defineProperty.js
40
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
40
41
  function _defineProperty(e, r, t) {
41
42
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
42
43
  value: t,
@@ -47,7 +48,7 @@ function _defineProperty(e, r, t) {
47
48
  }
48
49
 
49
50
  //#endregion
50
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorateParam.js
51
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
51
52
  function __decorateParam(paramIndex, decorator) {
52
53
  return function(target, key) {
53
54
  decorator(target, key, paramIndex);
@@ -55,7 +56,7 @@ function __decorateParam(paramIndex, decorator) {
55
56
  }
56
57
 
57
58
  //#endregion
58
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorate.js
59
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
59
60
  function __decorate(decorators, target, key, desc) {
60
61
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
61
62
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -890,6 +891,11 @@ FOverGridImage = __decorate([__decorateParam(1, ICommandService), __decoratePara
890
891
 
891
892
  //#endregion
892
893
  //#region src/facade/f-worksheet.ts
894
+ const GROUPABLE_DRAWING_TYPES = /* @__PURE__ */ new Set([
895
+ DrawingTypeEnum.DRAWING_IMAGE,
896
+ DrawingTypeEnum.DRAWING_SHAPE,
897
+ DrawingTypeEnum.DRAWING_GROUP
898
+ ]);
893
899
  var FWorksheetDrawingMixin = class extends FWorksheet {
894
900
  async insertImage(url, column, row, offsetX, offsetY) {
895
901
  const imageBuilder = this.newOverGridImage();
@@ -979,6 +985,201 @@ var FWorksheetDrawingMixin = class extends FWorksheet {
979
985
  const subUnitId = this.getSheetId();
980
986
  return this._injector.createInstance(FOverGridImageBuilder, unitId, subUnitId);
981
987
  }
988
+ groupDrawings(drawingIds, groupId = generateRandomId(10)) {
989
+ const uniqueDrawingIds = Array.from(new Set(drawingIds));
990
+ if (uniqueDrawingIds.length < 2) return null;
991
+ const unitId = this._fWorkbook.getId();
992
+ const subUnitId = this.getSheetId();
993
+ const sheetDrawingService = this._injector.get(ISheetDrawingService);
994
+ if (sheetDrawingService.getDrawingByParam({
995
+ unitId,
996
+ subUnitId,
997
+ drawingId: groupId
998
+ })) return null;
999
+ const drawings = uniqueDrawingIds.map((drawingId) => sheetDrawingService.getDrawingByParam({
1000
+ unitId,
1001
+ subUnitId,
1002
+ drawingId
1003
+ }));
1004
+ if (drawings.some((drawing) => !drawing)) return null;
1005
+ if (drawings.some((drawing) => !GROUPABLE_DRAWING_TYPES.has(drawing.drawingType))) return null;
1006
+ const validDrawings = drawings;
1007
+ const groupTransform = getGroupState(0, 0, validDrawings.map((drawing) => drawing.transform || {}));
1008
+ const groupParam = {
1009
+ unitId,
1010
+ subUnitId,
1011
+ drawingId: groupId,
1012
+ drawingType: DrawingTypeEnum.DRAWING_GROUP,
1013
+ transform: groupTransform,
1014
+ groupBaseBound: {
1015
+ left: groupTransform.left,
1016
+ top: groupTransform.top,
1017
+ width: groupTransform.width,
1018
+ height: groupTransform.height
1019
+ }
1020
+ };
1021
+ const children = validDrawings.map((drawing) => ({
1022
+ ...drawing,
1023
+ groupId
1024
+ }));
1025
+ return this._applyGroupDrawingOperation([{
1026
+ parent: groupParam,
1027
+ children
1028
+ }], DrawingApplyType.GROUP) ? groupId : null;
1029
+ }
1030
+ ungroupDrawings(groupIds) {
1031
+ const unitId = this._fWorkbook.getId();
1032
+ const subUnitId = this.getSheetId();
1033
+ const sheetDrawingService = this._injector.get(ISheetDrawingService);
1034
+ const groupParams = [];
1035
+ for (const groupId of groupIds) {
1036
+ const groupDrawing = sheetDrawingService.getDrawingByParam({
1037
+ unitId,
1038
+ subUnitId,
1039
+ drawingId: groupId
1040
+ });
1041
+ if (!groupDrawing || groupDrawing.drawingType !== DrawingTypeEnum.DRAWING_GROUP) continue;
1042
+ const groupTransform = groupDrawing.transform || {
1043
+ width: 0,
1044
+ height: 0
1045
+ };
1046
+ const children = sheetDrawingService.getDrawingsByGroup({
1047
+ unitId,
1048
+ subUnitId,
1049
+ drawingId: groupId
1050
+ }).map((drawing) => {
1051
+ const newTransform = transformObjectOutOfGroup(drawing.transform || {}, groupTransform, groupTransform.width || 0, groupTransform.height || 0, groupDrawing.groupBaseBound);
1052
+ return {
1053
+ ...drawing,
1054
+ transform: {
1055
+ ...drawing.transform,
1056
+ ...newTransform
1057
+ },
1058
+ groupId: void 0
1059
+ };
1060
+ });
1061
+ if (children.length > 0) groupParams.push({
1062
+ parent: groupDrawing,
1063
+ children
1064
+ });
1065
+ }
1066
+ return this._applyGroupDrawingOperation(groupParams, DrawingApplyType.UNGROUP);
1067
+ }
1068
+ getDrawingGroupChildren(groupId, recursive = false) {
1069
+ const unitId = this._fWorkbook.getId();
1070
+ const subUnitId = this.getSheetId();
1071
+ const sheetDrawingService = this._injector.get(ISheetDrawingService);
1072
+ if (!recursive) return sheetDrawingService.getDrawingsByGroup({
1073
+ unitId,
1074
+ subUnitId,
1075
+ drawingId: groupId
1076
+ });
1077
+ const nested = sheetDrawingService.getDrawingsByGroupNested({
1078
+ unitId,
1079
+ subUnitId,
1080
+ drawingId: groupId
1081
+ });
1082
+ if (!nested) return [];
1083
+ return [...nested.flatChildren || [], ...nested.groups.filter((group) => group.drawingId !== groupId)];
1084
+ }
1085
+ getDrawingParentGroup(drawingId) {
1086
+ const unitId = this._fWorkbook.getId();
1087
+ const subUnitId = this.getSheetId();
1088
+ const sheetDrawingService = this._injector.get(ISheetDrawingService);
1089
+ const drawing = sheetDrawingService.getDrawingByParam({
1090
+ unitId,
1091
+ subUnitId,
1092
+ drawingId
1093
+ });
1094
+ if (!(drawing === null || drawing === void 0 ? void 0 : drawing.groupId)) return null;
1095
+ const groupDrawing = sheetDrawingService.getDrawingByParam({
1096
+ unitId,
1097
+ subUnitId,
1098
+ drawingId: drawing.groupId
1099
+ });
1100
+ if (!groupDrawing || groupDrawing.drawingType !== DrawingTypeEnum.DRAWING_GROUP) return null;
1101
+ return groupDrawing;
1102
+ }
1103
+ isDrawingGrouped(drawingId) {
1104
+ return this.getDrawingParentGroup(drawingId) !== null;
1105
+ }
1106
+ _applyGroupDrawingOperation(groupParams, type) {
1107
+ if (groupParams.length === 0) return false;
1108
+ const sheetDrawingService = this._injector.get(ISheetDrawingService);
1109
+ const commandService = this._commandService;
1110
+ const undoRedoService = this._injector.get(IUndoRedoService);
1111
+ const { unitId, subUnitId, undo, redo, objects } = type === DrawingApplyType.GROUP ? sheetDrawingService.getGroupDrawingOp(groupParams) : sheetDrawingService.getUngroupDrawingOp(groupParams);
1112
+ if (commandService.syncExecuteCommand(SetDrawingApplyMutation.id, {
1113
+ op: redo,
1114
+ unitId,
1115
+ subUnitId,
1116
+ objects,
1117
+ type
1118
+ })) {
1119
+ const inverseType = type === DrawingApplyType.GROUP ? DrawingApplyType.UNGROUP : DrawingApplyType.GROUP;
1120
+ undoRedoService.pushUndoRedo({
1121
+ unitID: unitId,
1122
+ undoMutations: [{
1123
+ id: SetDrawingApplyMutation.id,
1124
+ params: {
1125
+ op: undo,
1126
+ unitId,
1127
+ subUnitId,
1128
+ objects: this._invertGroupOperationObjects(objects, type),
1129
+ type: inverseType
1130
+ }
1131
+ }],
1132
+ redoMutations: [{
1133
+ id: SetDrawingApplyMutation.id,
1134
+ params: {
1135
+ op: redo,
1136
+ unitId,
1137
+ subUnitId,
1138
+ objects,
1139
+ type
1140
+ }
1141
+ }]
1142
+ });
1143
+ return true;
1144
+ }
1145
+ return false;
1146
+ }
1147
+ _invertGroupOperationObjects(groupParams, type) {
1148
+ return type === DrawingApplyType.GROUP ? groupParams.map((groupParam) => {
1149
+ const { parent, children } = groupParam;
1150
+ const groupTransform = parent.transform || {
1151
+ width: 0,
1152
+ height: 0
1153
+ };
1154
+ return {
1155
+ parent: {
1156
+ ...parent,
1157
+ transform: {
1158
+ left: 0,
1159
+ top: 0
1160
+ }
1161
+ },
1162
+ children: children.map((child) => ({
1163
+ ...child,
1164
+ transform: transformObjectOutOfGroup(child.transform || {}, groupTransform, groupTransform.width || 0, groupTransform.height || 0, parent.groupBaseBound),
1165
+ groupId: void 0
1166
+ }))
1167
+ };
1168
+ }) : groupParams.map((groupParam) => {
1169
+ const { parent, children } = groupParam;
1170
+ const groupTransform = getGroupState(0, 0, children.map((child) => child.transform || {}));
1171
+ return {
1172
+ parent: {
1173
+ ...parent,
1174
+ transform: groupTransform
1175
+ },
1176
+ children: children.map((child) => ({
1177
+ ...child,
1178
+ groupId: parent.drawingId
1179
+ }))
1180
+ };
1181
+ });
1182
+ }
982
1183
  };
983
1184
  FWorksheet.extend(FWorksheetDrawingMixin);
984
1185
 
package/lib/es/index.js CHANGED
@@ -405,7 +405,7 @@ const SetSheetDrawingCommand = {
405
405
  };
406
406
 
407
407
  //#endregion
408
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorateParam.js
408
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
409
409
  function __decorateParam(paramIndex, decorator) {
410
410
  return function(target, key) {
411
411
  decorator(target, key, paramIndex);
@@ -413,7 +413,7 @@ function __decorateParam(paramIndex, decorator) {
413
413
  }
414
414
 
415
415
  //#endregion
416
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorate.js
416
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
417
417
  function __decorate(decorators, target, key, desc) {
418
418
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
419
419
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -583,7 +583,7 @@ SheetsDrawingLoadController = __decorate([
583
583
  //#endregion
584
584
  //#region package.json
585
585
  var name = "@univerjs/sheets-drawing";
586
- var version = "0.25.0";
586
+ var version = "1.0.0-alpha.0";
587
587
 
588
588
  //#endregion
589
589
  //#region src/config/config.ts
@@ -607,7 +607,7 @@ const configSymbol = Symbol(SHEETS_DRAWING_PLUGIN_CONFIG_KEY);
607
607
  const defaultPluginConfig = {};
608
608
 
609
609
  //#endregion
610
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/typeof.js
610
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
611
611
  function _typeof(o) {
612
612
  "@babel/helpers - typeof";
613
613
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -618,7 +618,7 @@ function _typeof(o) {
618
618
  }
619
619
 
620
620
  //#endregion
621
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPrimitive.js
621
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
622
622
  function toPrimitive(t, r) {
623
623
  if ("object" != _typeof(t) || !t) return t;
624
624
  var e = t[Symbol.toPrimitive];
@@ -631,14 +631,14 @@ function toPrimitive(t, r) {
631
631
  }
632
632
 
633
633
  //#endregion
634
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPropertyKey.js
634
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
635
635
  function toPropertyKey(t) {
636
636
  var i = toPrimitive(t, "string");
637
637
  return "symbol" == _typeof(i) ? i : i + "";
638
638
  }
639
639
 
640
640
  //#endregion
641
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/defineProperty.js
641
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
642
642
  function _defineProperty(e, r, t) {
643
643
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
644
644
  value: t,