@univerjs/docs-drawing 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/cjs/facade.js CHANGED
@@ -97,8 +97,8 @@ var FDocumentImage = class {
97
97
  * ```
98
98
  */
99
99
  getSize() {
100
- var _this$getImageData$do, _this$getImageData3;
101
- return (_this$getImageData$do = (_this$getImageData3 = this.getImageData()) === null || _this$getImageData3 === void 0 ? void 0 : _this$getImageData3.docTransform.size) !== null && _this$getImageData$do !== void 0 ? _this$getImageData$do : null;
100
+ var _this$getImageData3;
101
+ return ((_this$getImageData3 = this.getImageData()) === null || _this$getImageData3 === void 0 ? void 0 : _this$getImageData3.docTransform.size) ?? null;
102
102
  }
103
103
  /**
104
104
  * Gets the current clockwise rotation angle.
@@ -131,8 +131,8 @@ var FDocumentImage = class {
131
131
  * ```
132
132
  */
133
133
  getPositionH() {
134
- var _this$getImageData$do2, _this$getImageData5;
135
- return (_this$getImageData$do2 = (_this$getImageData5 = this.getImageData()) === null || _this$getImageData5 === void 0 ? void 0 : _this$getImageData5.docTransform.positionH) !== null && _this$getImageData$do2 !== void 0 ? _this$getImageData$do2 : null;
134
+ var _this$getImageData5;
135
+ return ((_this$getImageData5 = this.getImageData()) === null || _this$getImageData5 === void 0 ? void 0 : _this$getImageData5.docTransform.positionH) ?? null;
136
136
  }
137
137
  /**
138
138
  * Gets the current vertical position.
@@ -148,8 +148,8 @@ var FDocumentImage = class {
148
148
  * ```
149
149
  */
150
150
  getPositionV() {
151
- var _this$getImageData$do3, _this$getImageData6;
152
- return (_this$getImageData$do3 = (_this$getImageData6 = this.getImageData()) === null || _this$getImageData6 === void 0 ? void 0 : _this$getImageData6.docTransform.positionV) !== null && _this$getImageData$do3 !== void 0 ? _this$getImageData$do3 : null;
151
+ var _this$getImageData6;
152
+ return ((_this$getImageData6 = this.getImageData()) === null || _this$getImageData6 === void 0 ? void 0 : _this$getImageData6.docTransform.positionV) ?? null;
153
153
  }
154
154
  /**
155
155
  * Gets the current raw document image data.
@@ -273,7 +273,7 @@ var FDocumentImage = class {
273
273
  *
274
274
  * if (image) {
275
275
  * // Float the image beside body text without covering it.
276
- * const success = image.setWrappingStyle(univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE);
276
+ * const success = image.setWrappingStyle(univerAPI.Enum.TextWrappingStyle.WRAP_SQUARE);
277
277
  * console.log(success);
278
278
  * }
279
279
  * ```
@@ -438,7 +438,6 @@ var FDocumentImage = class {
438
438
  //#region src/facade/f-document.ts
439
439
  var FDocumentImageMixin = class extends _univerjs_docs_facade.FDocument {
440
440
  async insertImage(options) {
441
- var _options$wrappingStyl, _options$angle, _options$positionH, _options$positionV;
442
441
  const unitId = this.getId();
443
442
  const imageId = (0, _univerjs_core.generateRandomId)(6);
444
443
  const size = options.width != null && options.height != null ? {
@@ -446,12 +445,12 @@ var FDocumentImageMixin = class extends _univerjs_docs_facade.FDocument {
446
445
  height: options.height
447
446
  } : resolveImageSize(await this._getIntrinsicSize(options.source, options.imageSourceType), options);
448
447
  const defaultTransform = (0, _univerjs_docs.buildDocTransform)(size.width, size.height);
449
- const wrappingStyle = (_options$wrappingStyl = options.wrappingStyle) !== null && _options$wrappingStyl !== void 0 ? _options$wrappingStyl : _univerjs_docs_drawing.TextWrappingStyle.INLINE;
448
+ const wrappingStyle = options.wrappingStyle ?? _univerjs_docs_drawing.TextWrappingStyle.INLINE;
450
449
  const docTransform = {
451
450
  ...defaultTransform,
452
- angle: (_options$angle = options.angle) !== null && _options$angle !== void 0 ? _options$angle : defaultTransform.angle,
453
- positionH: (_options$positionH = options.positionH) !== null && _options$positionH !== void 0 ? _options$positionH : defaultTransform.positionH,
454
- positionV: (_options$positionV = options.positionV) !== null && _options$positionV !== void 0 ? _options$positionV : defaultTransform.positionV
451
+ angle: options.angle ?? defaultTransform.angle,
452
+ positionH: options.positionH ?? defaultTransform.positionH,
453
+ positionV: options.positionV ?? defaultTransform.positionV
455
454
  };
456
455
  const transform = (0, _univerjs_docs.docDrawingPositionToTransform)(docTransform);
457
456
  const drawing = {
@@ -487,10 +486,9 @@ var FDocumentImageMixin = class extends _univerjs_docs_facade.FDocument {
487
486
  return this._injector.createInstance(FDocumentImage, this, imageId, this._injector);
488
487
  }
489
488
  getImages() {
490
- var _documentDataModel$ge, _documentDataModel$ge2;
491
489
  const documentDataModel = this.getDocumentDataModel();
492
- const drawings = (_documentDataModel$ge = documentDataModel.getDrawings()) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : {};
493
- return ((_documentDataModel$ge2 = documentDataModel.getDrawingsOrder()) !== null && _documentDataModel$ge2 !== void 0 ? _documentDataModel$ge2 : Object.keys(drawings)).filter((drawingId) => {
490
+ const drawings = documentDataModel.getDrawings() ?? {};
491
+ return (documentDataModel.getDrawingsOrder() ?? Object.keys(drawings)).filter((drawingId) => {
494
492
  var _drawings$drawingId;
495
493
  return ((_drawings$drawingId = drawings[drawingId]) === null || _drawings$drawingId === void 0 ? void 0 : _drawings$drawingId.drawingType) === _univerjs_core.DrawingTypeEnum.DRAWING_IMAGE;
496
494
  }).map((drawingId) => this._injector.createInstance(FDocumentImage, this, drawingId, this._injector));
@@ -552,7 +550,7 @@ _univerjs_docs_facade.FDocument.extend(FDocumentImageMixin);
552
550
  * limitations under the License.
553
551
  */
554
552
  var FDocumentImageEnumMixin = class extends _univerjs_core_facade.FEnum {
555
- get DocsImageWrappingStyle() {
553
+ get TextWrappingStyle() {
556
554
  return _univerjs_docs_drawing.TextWrappingStyle;
557
555
  }
558
556
  get DocsImageRelativeFromH() {
package/lib/cjs/index.js CHANGED
@@ -11,81 +11,29 @@ const InsertDocDrawingCommand = {
11
11
  id: "doc.command.insert-doc-image",
12
12
  type: _univerjs_core.CommandType.COMMAND,
13
13
  handler: (accessor, params) => {
14
- var _documentDataModel$ge, _snapshot$headers, _snapshot$footers, _snapshot$drawingsOrd, _snapshot$drawingsOrd2;
14
+ var _documentDataModel$ge, _snapshot$headers, _snapshot$footers;
15
15
  if (!params) return false;
16
16
  const commandService = accessor.get(_univerjs_core.ICommandService);
17
17
  const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
18
18
  const { unitId, drawings, textRange } = params;
19
19
  const documentDataModel = univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
20
20
  if (!documentDataModel) return false;
21
- const targetTextRange = resolveDocDrawingInsertTextRange(accessor, unitId, textRange);
22
- if (!targetTextRange) return false;
23
- const { collapsed, startOffset, segmentId = "" } = targetTextRange;
24
- const body = (_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.getBody();
25
- if (!body) return false;
26
- const textX = new _univerjs_core.TextX();
27
- const jsonX = _univerjs_core.JSONX.getInstance();
28
- const rawActions = [];
21
+ const resolvedTextRange = resolveDocDrawingInsertTextRange(accessor, unitId, textRange);
22
+ if (!resolvedTextRange) return false;
23
+ const { segmentId = "" } = resolvedTextRange;
24
+ if (!((_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.getBody())) return false;
29
25
  const snapshot = documentDataModel.getSnapshot();
30
- const targetDrawings = !!((_snapshot$headers = snapshot.headers) === null || _snapshot$headers === void 0 ? void 0 : _snapshot$headers[segmentId]) || !!((_snapshot$footers = snapshot.footers) === null || _snapshot$footers === void 0 ? void 0 : _snapshot$footers[segmentId]) ? drawings.map((drawing) => {
31
- var _drawing$transforms;
32
- return {
33
- ...drawing,
34
- isMultiTransform: _univerjs_core.BooleanNumber.TRUE,
35
- transforms: (_drawing$transforms = drawing.transforms) !== null && _drawing$transforms !== void 0 ? _drawing$transforms : drawing.transform ? [drawing.transform] : null
36
- };
37
- }) : drawings;
38
- const drawingOrderLength = (_snapshot$drawingsOrd = (_snapshot$drawingsOrd2 = snapshot.drawingsOrder) === null || _snapshot$drawingsOrd2 === void 0 ? void 0 : _snapshot$drawingsOrd2.length) !== null && _snapshot$drawingsOrd !== void 0 ? _snapshot$drawingsOrd : 0;
39
- let removeDrawingLen = 0;
40
- if (collapsed) {
41
- if (startOffset > 0) textX.push({
42
- t: _univerjs_core.TextXActionType.RETAIN,
43
- len: startOffset
44
- });
45
- } else {
46
- var _documentDataModel$ge2, _documentDataModel$ge3;
47
- const dos = _univerjs_core.BuildTextUtils.selection.delete([targetTextRange], body, 0, null, false);
48
- textX.push(...dos);
49
- const removedCustomBlockIds = (0, _univerjs_core.getCustomBlockIdsInSelections)(body, [targetTextRange]);
50
- const drawings = (_documentDataModel$ge2 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge2 !== void 0 ? _documentDataModel$ge2 : {};
51
- const drawingOrder = (_documentDataModel$ge3 = documentDataModel.getDrawingsOrder()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : [];
52
- const sortedRemovedCustomBlockIds = removedCustomBlockIds.sort((a, b) => {
53
- if (drawingOrder.indexOf(a) > drawingOrder.indexOf(b)) return -1;
54
- else if (drawingOrder.indexOf(a) < drawingOrder.indexOf(b)) return 1;
55
- return 0;
56
- });
57
- if (sortedRemovedCustomBlockIds.length > 0) for (const blockId of sortedRemovedCustomBlockIds) {
58
- const drawing = drawings[blockId];
59
- const drawingIndex = drawingOrder.indexOf(blockId);
60
- if (drawing == null || drawingIndex < 0) continue;
61
- const removeDrawingAction = jsonX.removeOp(["drawings", blockId], drawing);
62
- const removeDrawingOrderAction = jsonX.removeOp(["drawingsOrder", drawingIndex], blockId);
63
- rawActions.push(removeDrawingAction);
64
- rawActions.push(removeDrawingOrderAction);
65
- removeDrawingLen++;
66
- }
67
- }
68
- textX.push({
69
- t: _univerjs_core.TextXActionType.INSERT,
70
- body: {
71
- dataStream: "\b".repeat(targetDrawings.length),
72
- customBlocks: targetDrawings.map((drawing, i) => ({
73
- startIndex: i,
74
- blockId: drawing.drawingId
75
- }))
76
- },
77
- len: targetDrawings.length
26
+ const targetDrawings = !!((_snapshot$headers = snapshot.headers) === null || _snapshot$headers === void 0 ? void 0 : _snapshot$headers[segmentId]) || !!((_snapshot$footers = snapshot.footers) === null || _snapshot$footers === void 0 ? void 0 : _snapshot$footers[segmentId]) ? drawings.map((drawing) => ({
27
+ ...drawing,
28
+ isMultiTransform: _univerjs_core.BooleanNumber.TRUE,
29
+ transforms: drawing.transforms ?? (drawing.transform ? [drawing.transform] : null)
30
+ })) : drawings;
31
+ const actions = _univerjs_core.BuildTextUtils.drawing.add({
32
+ selection: resolvedTextRange,
33
+ documentDataModel,
34
+ drawings: targetDrawings
78
35
  });
79
- const path = (0, _univerjs_core.getRichTextEditPath)(documentDataModel, segmentId);
80
- const placeHolderAction = jsonX.editOp(textX.serialize(), path);
81
- rawActions.push(placeHolderAction);
82
- for (const drawing of targetDrawings) {
83
- const { drawingId } = drawing;
84
- const addDrawingAction = jsonX.insertOp(["drawings", drawingId], drawing);
85
- const addDrawingOrderAction = jsonX.insertOp(["drawingsOrder", drawingOrderLength - removeDrawingLen], drawingId);
86
- rawActions.push(addDrawingAction);
87
- rawActions.push(addDrawingOrderAction);
88
- }
36
+ if (!actions) return false;
89
37
  const doMutation = {
90
38
  id: _univerjs_docs.RichTextEditingMutation.id,
91
39
  params: {
@@ -94,25 +42,21 @@ const InsertDocDrawingCommand = {
94
42
  textRanges: []
95
43
  }
96
44
  };
97
- doMutation.params.actions = rawActions.reduce((acc, cur) => {
98
- return _univerjs_core.JSONX.compose(acc, cur);
99
- }, null);
45
+ doMutation.params.actions = actions;
100
46
  const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
101
47
  return Boolean(result);
102
48
  }
103
49
  };
104
50
  function resolveDocDrawingInsertTextRange(accessor, unitId, textRange) {
105
- var _ref, _contentInsertRange$s;
106
51
  const activeTextRange = accessor.get(_univerjs_docs.DocSelectionManagerService).getActiveTextRange();
107
- const explicitTextRange = textRange ? (0, _univerjs_docs.normalizeTextRange)(textRange) : null;
108
- const contentInsertRange = explicitTextRange !== null && explicitTextRange !== void 0 ? explicitTextRange : (0, _univerjs_docs.getContentInsertRange)(accessor, unitId);
109
- if (!contentInsertRange) return activeTextRange !== null && activeTextRange !== void 0 ? activeTextRange : null;
52
+ const contentInsertRange = (textRange ? (0, _univerjs_docs.normalizeTextRange)(textRange) : null) ?? (0, _univerjs_docs.getContentInsertRange)(accessor, unitId);
53
+ if (!contentInsertRange) return activeTextRange ?? null;
110
54
  return {
111
55
  ...activeTextRange,
112
56
  startOffset: contentInsertRange.startOffset,
113
57
  endOffset: contentInsertRange.endOffset,
114
58
  collapsed: contentInsertRange.startOffset === contentInsertRange.endOffset,
115
- segmentId: (_ref = (_contentInsertRange$s = contentInsertRange.segmentId) !== null && _contentInsertRange$s !== void 0 ? _contentInsertRange$s : activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) !== null && _ref !== void 0 ? _ref : ""
59
+ segmentId: contentInsertRange.segmentId ?? (activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) ?? ""
116
60
  };
117
61
  }
118
62
 
@@ -202,7 +146,7 @@ const RemoveDocDrawingCommand = {
202
146
  id: "doc.command.remove-doc-image",
203
147
  type: _univerjs_core.CommandType.COMMAND,
204
148
  handler: (accessor, params) => {
205
- var _ref, _contentInsertRange$s, _documentDataModel$ge, _documentDataModel$ge2, _documentDataModel$ge3;
149
+ var _documentDataModel$ge;
206
150
  if (!params) return false;
207
151
  const commandService = accessor.get(_univerjs_core.ICommandService);
208
152
  const undoRedoService = accessor.get(_univerjs_core.IUndoRedoService);
@@ -213,29 +157,27 @@ const RemoveDocDrawingCommand = {
213
157
  const documentDataModel = univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
214
158
  if (!documentDataModel || removeDrawings.length === 0) return false;
215
159
  const activeTextRange = docSelectionManagerService.getActiveTextRange();
216
- const explicitTextRange = !textRange ? null : (0, _univerjs_docs.normalizeTextRange)(textRange);
217
- const contentInsertRange = explicitTextRange !== null && explicitTextRange !== void 0 ? explicitTextRange : (0, _univerjs_docs.getContentInsertRange)(accessor, unitId);
218
- const segmentId = (_ref = (_contentInsertRange$s = contentInsertRange === null || contentInsertRange === void 0 ? void 0 : contentInsertRange.segmentId) !== null && _contentInsertRange$s !== void 0 ? _contentInsertRange$s : activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) !== null && _ref !== void 0 ? _ref : "";
160
+ const contentInsertRange = (!textRange ? null : (0, _univerjs_docs.normalizeTextRange)(textRange)) ?? (0, _univerjs_docs.getContentInsertRange)(accessor, unitId);
161
+ const segmentId = (contentInsertRange === null || contentInsertRange === void 0 ? void 0 : contentInsertRange.segmentId) ?? (activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) ?? "";
219
162
  const textX = new _univerjs_core.TextX();
220
163
  const jsonX = _univerjs_core.JSONX.getInstance();
221
- const customBlocks = (_documentDataModel$ge = (_documentDataModel$ge2 = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge2 === void 0 || (_documentDataModel$ge2 = _documentDataModel$ge2.getBody()) === null || _documentDataModel$ge2 === void 0 ? void 0 : _documentDataModel$ge2.customBlocks) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : [];
164
+ const customBlocks = ((_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge === void 0 || (_documentDataModel$ge = _documentDataModel$ge.getBody()) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.customBlocks) ?? [];
222
165
  const removeCustomBlocks = removeDrawings.map((drawing) => customBlocks.find((customBlock) => customBlock.blockId === drawing.drawingId)).filter((block) => !!block).sort((a, b) => a.startIndex > b.startIndex ? 1 : -1);
223
166
  if (removeCustomBlocks.length === 0) return false;
224
- const drawings = (_documentDataModel$ge3 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : {};
167
+ const drawings = documentDataModel.getDrawings() ?? {};
225
168
  const removeDrawingParamById = new Map(removeDrawings.map((drawing) => [drawing.drawingId, drawing]));
226
169
  const removeDrawingSnapshots = removeCustomBlocks.map((block) => drawings[block.blockId]).filter((drawing) => drawing != null);
227
170
  const resourceRedoMutations = [];
228
171
  const resourceUndoMutations = [];
229
172
  const resourceMutationGroups = [];
230
173
  for (const block of removeCustomBlocks) {
231
- var _removeDrawingParam$s;
232
174
  const { blockId } = block;
233
175
  const drawing = drawings[blockId];
234
176
  if (drawing == null) continue;
235
177
  const removeDrawingParam = removeDrawingParamById.get(blockId);
236
178
  const mutationInfos = drawingAdapterService.getRemoveDrawingMutationInfos({
237
179
  unitId,
238
- subUnitId: (_removeDrawingParam$s = removeDrawingParam === null || removeDrawingParam === void 0 ? void 0 : removeDrawingParam.subUnitId) !== null && _removeDrawingParam$s !== void 0 ? _removeDrawingParam$s : unitId,
180
+ subUnitId: (removeDrawingParam === null || removeDrawingParam === void 0 ? void 0 : removeDrawingParam.subUnitId) ?? unitId,
239
181
  drawing,
240
182
  removeDrawings: removeDrawingSnapshots
241
183
  });
@@ -391,14 +333,13 @@ const UpdateDrawingDocTransformCommand = {
391
333
  id: "doc.command.update-drawing-doc-transform",
392
334
  type: _univerjs_core.CommandType.COMMAND,
393
335
  handler: (accessor, params) => {
394
- var _documentDataModel$ge;
395
336
  if (!params) return false;
396
337
  const commandService = accessor.get(_univerjs_core.ICommandService);
397
338
  const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
398
339
  const { unitId, drawings } = params;
399
340
  const documentDataModel = univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
400
341
  if (!documentDataModel) return false;
401
- const oldDrawings = (_documentDataModel$ge = documentDataModel.getSnapshot().drawings) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : {};
342
+ const oldDrawings = documentDataModel.getSnapshot().drawings ?? {};
402
343
  const jsonX = _univerjs_core.JSONX.getInstance();
403
344
  const actions = [];
404
345
  for (const { drawingId, key, value } of drawings) {
@@ -479,13 +420,12 @@ const UpdateDocDrawingWrappingStyleCommand = {
479
420
  id: "doc.command.update-doc-drawing-wrapping-style",
480
421
  type: _univerjs_core.CommandType.COMMAND,
481
422
  handler: (accessor, params) => {
482
- var _documentDataModel$ge;
483
423
  if (!params) return false;
484
424
  const { drawings, wrappingStyle, unitId } = params;
485
425
  const commandService = accessor.get(_univerjs_core.ICommandService);
486
426
  const documentDataModel = accessor.get(_univerjs_core.IUniverInstanceService).getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
487
427
  if (!documentDataModel) return false;
488
- const oldDrawings = (_documentDataModel$ge = documentDataModel.getDrawings()) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : {};
428
+ const oldDrawings = documentDataModel.getDrawings() ?? {};
489
429
  const jsonX = _univerjs_core.JSONX.getInstance();
490
430
  const rawActions = [];
491
431
  for (const drawing of drawings) {
@@ -588,8 +528,8 @@ let DocDrawingController = class DocDrawingController extends _univerjs_core.Dis
588
528
  const drawings = doc.getSnapshot().drawings;
589
529
  const drawingOrder = doc.getSnapshot().drawingsOrder;
590
530
  return JSON.stringify({
591
- data: drawings !== null && drawings !== void 0 ? drawings : {},
592
- order: drawingOrder !== null && drawingOrder !== void 0 ? drawingOrder : []
531
+ data: drawings ?? {},
532
+ order: drawingOrder ?? []
593
533
  });
594
534
  }
595
535
  return "";
@@ -620,10 +560,9 @@ let DocDrawingController = class DocDrawingController extends _univerjs_core.Dis
620
560
  });
621
561
  },
622
562
  onLoad: (unitId, value) => {
623
- var _value$data, _value$order;
624
563
  this._setDrawingDataForUnit(unitId, {
625
- data: (_value$data = value.data) !== null && _value$data !== void 0 ? _value$data : {},
626
- order: (_value$order = value.order) !== null && _value$order !== void 0 ? _value$order : []
564
+ data: value.data ?? {},
565
+ order: value.order ?? []
627
566
  });
628
567
  }
629
568
  }));
@@ -676,7 +615,7 @@ DocDrawingController = __decorate([
676
615
  //#endregion
677
616
  //#region package.json
678
617
  var name = "@univerjs/docs-drawing";
679
- var version = "1.0.0-alpha.8";
618
+ var version = "1.0.0-beta.0";
680
619
 
681
620
  //#endregion
682
621
  //#region src/config/config.ts
package/lib/es/facade.js CHANGED
@@ -96,8 +96,8 @@ var FDocumentImage = class {
96
96
  * ```
97
97
  */
98
98
  getSize() {
99
- var _this$getImageData$do, _this$getImageData3;
100
- return (_this$getImageData$do = (_this$getImageData3 = this.getImageData()) === null || _this$getImageData3 === void 0 ? void 0 : _this$getImageData3.docTransform.size) !== null && _this$getImageData$do !== void 0 ? _this$getImageData$do : null;
99
+ var _this$getImageData3;
100
+ return ((_this$getImageData3 = this.getImageData()) === null || _this$getImageData3 === void 0 ? void 0 : _this$getImageData3.docTransform.size) ?? null;
101
101
  }
102
102
  /**
103
103
  * Gets the current clockwise rotation angle.
@@ -130,8 +130,8 @@ var FDocumentImage = class {
130
130
  * ```
131
131
  */
132
132
  getPositionH() {
133
- var _this$getImageData$do2, _this$getImageData5;
134
- return (_this$getImageData$do2 = (_this$getImageData5 = this.getImageData()) === null || _this$getImageData5 === void 0 ? void 0 : _this$getImageData5.docTransform.positionH) !== null && _this$getImageData$do2 !== void 0 ? _this$getImageData$do2 : null;
133
+ var _this$getImageData5;
134
+ return ((_this$getImageData5 = this.getImageData()) === null || _this$getImageData5 === void 0 ? void 0 : _this$getImageData5.docTransform.positionH) ?? null;
135
135
  }
136
136
  /**
137
137
  * Gets the current vertical position.
@@ -147,8 +147,8 @@ var FDocumentImage = class {
147
147
  * ```
148
148
  */
149
149
  getPositionV() {
150
- var _this$getImageData$do3, _this$getImageData6;
151
- return (_this$getImageData$do3 = (_this$getImageData6 = this.getImageData()) === null || _this$getImageData6 === void 0 ? void 0 : _this$getImageData6.docTransform.positionV) !== null && _this$getImageData$do3 !== void 0 ? _this$getImageData$do3 : null;
150
+ var _this$getImageData6;
151
+ return ((_this$getImageData6 = this.getImageData()) === null || _this$getImageData6 === void 0 ? void 0 : _this$getImageData6.docTransform.positionV) ?? null;
152
152
  }
153
153
  /**
154
154
  * Gets the current raw document image data.
@@ -272,7 +272,7 @@ var FDocumentImage = class {
272
272
  *
273
273
  * if (image) {
274
274
  * // Float the image beside body text without covering it.
275
- * const success = image.setWrappingStyle(univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE);
275
+ * const success = image.setWrappingStyle(univerAPI.Enum.TextWrappingStyle.WRAP_SQUARE);
276
276
  * console.log(success);
277
277
  * }
278
278
  * ```
@@ -437,7 +437,6 @@ var FDocumentImage = class {
437
437
  //#region src/facade/f-document.ts
438
438
  var FDocumentImageMixin = class extends FDocument {
439
439
  async insertImage(options) {
440
- var _options$wrappingStyl, _options$angle, _options$positionH, _options$positionV;
441
440
  const unitId = this.getId();
442
441
  const imageId = generateRandomId(6);
443
442
  const size = options.width != null && options.height != null ? {
@@ -445,12 +444,12 @@ var FDocumentImageMixin = class extends FDocument {
445
444
  height: options.height
446
445
  } : resolveImageSize(await this._getIntrinsicSize(options.source, options.imageSourceType), options);
447
446
  const defaultTransform = buildDocTransform(size.width, size.height);
448
- const wrappingStyle = (_options$wrappingStyl = options.wrappingStyle) !== null && _options$wrappingStyl !== void 0 ? _options$wrappingStyl : TextWrappingStyle.INLINE;
447
+ const wrappingStyle = options.wrappingStyle ?? TextWrappingStyle.INLINE;
449
448
  const docTransform = {
450
449
  ...defaultTransform,
451
- angle: (_options$angle = options.angle) !== null && _options$angle !== void 0 ? _options$angle : defaultTransform.angle,
452
- positionH: (_options$positionH = options.positionH) !== null && _options$positionH !== void 0 ? _options$positionH : defaultTransform.positionH,
453
- positionV: (_options$positionV = options.positionV) !== null && _options$positionV !== void 0 ? _options$positionV : defaultTransform.positionV
450
+ angle: options.angle ?? defaultTransform.angle,
451
+ positionH: options.positionH ?? defaultTransform.positionH,
452
+ positionV: options.positionV ?? defaultTransform.positionV
454
453
  };
455
454
  const transform = docDrawingPositionToTransform(docTransform);
456
455
  const drawing = {
@@ -486,10 +485,9 @@ var FDocumentImageMixin = class extends FDocument {
486
485
  return this._injector.createInstance(FDocumentImage, this, imageId, this._injector);
487
486
  }
488
487
  getImages() {
489
- var _documentDataModel$ge, _documentDataModel$ge2;
490
488
  const documentDataModel = this.getDocumentDataModel();
491
- const drawings = (_documentDataModel$ge = documentDataModel.getDrawings()) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : {};
492
- return ((_documentDataModel$ge2 = documentDataModel.getDrawingsOrder()) !== null && _documentDataModel$ge2 !== void 0 ? _documentDataModel$ge2 : Object.keys(drawings)).filter((drawingId) => {
489
+ const drawings = documentDataModel.getDrawings() ?? {};
490
+ return (documentDataModel.getDrawingsOrder() ?? Object.keys(drawings)).filter((drawingId) => {
493
491
  var _drawings$drawingId;
494
492
  return ((_drawings$drawingId = drawings[drawingId]) === null || _drawings$drawingId === void 0 ? void 0 : _drawings$drawingId.drawingType) === DrawingTypeEnum.DRAWING_IMAGE;
495
493
  }).map((drawingId) => this._injector.createInstance(FDocumentImage, this, drawingId, this._injector));
@@ -551,7 +549,7 @@ FDocument.extend(FDocumentImageMixin);
551
549
  * limitations under the License.
552
550
  */
553
551
  var FDocumentImageEnumMixin = class extends FEnum {
554
- get DocsImageWrappingStyle() {
552
+ get TextWrappingStyle() {
555
553
  return TextWrappingStyle;
556
554
  }
557
555
  get DocsImageRelativeFromH() {
package/lib/es/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ArrangeTypeEnum, BooleanNumber, BuildTextUtils, CommandType, DependentOn, Disposable, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, JSONX, MemoryCursor, Plugin, PositionedObjectLayoutType, TextX, TextXActionType, Tools, UniverInstanceType, createIdentifier, getCustomBlockIdsInSelections, getRichTextEditPath, merge, toDisposable, touchDependencies } from "@univerjs/core";
1
+ import { ArrangeTypeEnum, BooleanNumber, BuildTextUtils, CommandType, DependentOn, Disposable, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, JSONX, MemoryCursor, Plugin, PositionedObjectLayoutType, TextX, TextXActionType, Tools, UniverInstanceType, createIdentifier, getRichTextEditPath, merge, toDisposable, touchDependencies } from "@univerjs/core";
2
2
  import { DocSelectionManagerService, RichTextEditingMutation, UniverDocsPlugin, getContentInsertRange, normalizeTextRange } from "@univerjs/docs";
3
3
  import { IDrawingManagerService, UnitDrawingService, UniverDrawingPlugin } from "@univerjs/drawing";
4
4
 
@@ -10,81 +10,29 @@ const InsertDocDrawingCommand = {
10
10
  id: "doc.command.insert-doc-image",
11
11
  type: CommandType.COMMAND,
12
12
  handler: (accessor, params) => {
13
- var _documentDataModel$ge, _snapshot$headers, _snapshot$footers, _snapshot$drawingsOrd, _snapshot$drawingsOrd2;
13
+ var _documentDataModel$ge, _snapshot$headers, _snapshot$footers;
14
14
  if (!params) return false;
15
15
  const commandService = accessor.get(ICommandService);
16
16
  const univerInstanceService = accessor.get(IUniverInstanceService);
17
17
  const { unitId, drawings, textRange } = params;
18
18
  const documentDataModel = univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC);
19
19
  if (!documentDataModel) return false;
20
- const targetTextRange = resolveDocDrawingInsertTextRange(accessor, unitId, textRange);
21
- if (!targetTextRange) return false;
22
- const { collapsed, startOffset, segmentId = "" } = targetTextRange;
23
- const body = (_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.getBody();
24
- if (!body) return false;
25
- const textX = new TextX();
26
- const jsonX = JSONX.getInstance();
27
- const rawActions = [];
20
+ const resolvedTextRange = resolveDocDrawingInsertTextRange(accessor, unitId, textRange);
21
+ if (!resolvedTextRange) return false;
22
+ const { segmentId = "" } = resolvedTextRange;
23
+ if (!((_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.getBody())) return false;
28
24
  const snapshot = documentDataModel.getSnapshot();
29
- const targetDrawings = !!((_snapshot$headers = snapshot.headers) === null || _snapshot$headers === void 0 ? void 0 : _snapshot$headers[segmentId]) || !!((_snapshot$footers = snapshot.footers) === null || _snapshot$footers === void 0 ? void 0 : _snapshot$footers[segmentId]) ? drawings.map((drawing) => {
30
- var _drawing$transforms;
31
- return {
32
- ...drawing,
33
- isMultiTransform: BooleanNumber.TRUE,
34
- transforms: (_drawing$transforms = drawing.transforms) !== null && _drawing$transforms !== void 0 ? _drawing$transforms : drawing.transform ? [drawing.transform] : null
35
- };
36
- }) : drawings;
37
- const drawingOrderLength = (_snapshot$drawingsOrd = (_snapshot$drawingsOrd2 = snapshot.drawingsOrder) === null || _snapshot$drawingsOrd2 === void 0 ? void 0 : _snapshot$drawingsOrd2.length) !== null && _snapshot$drawingsOrd !== void 0 ? _snapshot$drawingsOrd : 0;
38
- let removeDrawingLen = 0;
39
- if (collapsed) {
40
- if (startOffset > 0) textX.push({
41
- t: TextXActionType.RETAIN,
42
- len: startOffset
43
- });
44
- } else {
45
- var _documentDataModel$ge2, _documentDataModel$ge3;
46
- const dos = BuildTextUtils.selection.delete([targetTextRange], body, 0, null, false);
47
- textX.push(...dos);
48
- const removedCustomBlockIds = getCustomBlockIdsInSelections(body, [targetTextRange]);
49
- const drawings = (_documentDataModel$ge2 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge2 !== void 0 ? _documentDataModel$ge2 : {};
50
- const drawingOrder = (_documentDataModel$ge3 = documentDataModel.getDrawingsOrder()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : [];
51
- const sortedRemovedCustomBlockIds = removedCustomBlockIds.sort((a, b) => {
52
- if (drawingOrder.indexOf(a) > drawingOrder.indexOf(b)) return -1;
53
- else if (drawingOrder.indexOf(a) < drawingOrder.indexOf(b)) return 1;
54
- return 0;
55
- });
56
- if (sortedRemovedCustomBlockIds.length > 0) for (const blockId of sortedRemovedCustomBlockIds) {
57
- const drawing = drawings[blockId];
58
- const drawingIndex = drawingOrder.indexOf(blockId);
59
- if (drawing == null || drawingIndex < 0) continue;
60
- const removeDrawingAction = jsonX.removeOp(["drawings", blockId], drawing);
61
- const removeDrawingOrderAction = jsonX.removeOp(["drawingsOrder", drawingIndex], blockId);
62
- rawActions.push(removeDrawingAction);
63
- rawActions.push(removeDrawingOrderAction);
64
- removeDrawingLen++;
65
- }
66
- }
67
- textX.push({
68
- t: TextXActionType.INSERT,
69
- body: {
70
- dataStream: "\b".repeat(targetDrawings.length),
71
- customBlocks: targetDrawings.map((drawing, i) => ({
72
- startIndex: i,
73
- blockId: drawing.drawingId
74
- }))
75
- },
76
- len: targetDrawings.length
25
+ const targetDrawings = !!((_snapshot$headers = snapshot.headers) === null || _snapshot$headers === void 0 ? void 0 : _snapshot$headers[segmentId]) || !!((_snapshot$footers = snapshot.footers) === null || _snapshot$footers === void 0 ? void 0 : _snapshot$footers[segmentId]) ? drawings.map((drawing) => ({
26
+ ...drawing,
27
+ isMultiTransform: BooleanNumber.TRUE,
28
+ transforms: drawing.transforms ?? (drawing.transform ? [drawing.transform] : null)
29
+ })) : drawings;
30
+ const actions = BuildTextUtils.drawing.add({
31
+ selection: resolvedTextRange,
32
+ documentDataModel,
33
+ drawings: targetDrawings
77
34
  });
78
- const path = getRichTextEditPath(documentDataModel, segmentId);
79
- const placeHolderAction = jsonX.editOp(textX.serialize(), path);
80
- rawActions.push(placeHolderAction);
81
- for (const drawing of targetDrawings) {
82
- const { drawingId } = drawing;
83
- const addDrawingAction = jsonX.insertOp(["drawings", drawingId], drawing);
84
- const addDrawingOrderAction = jsonX.insertOp(["drawingsOrder", drawingOrderLength - removeDrawingLen], drawingId);
85
- rawActions.push(addDrawingAction);
86
- rawActions.push(addDrawingOrderAction);
87
- }
35
+ if (!actions) return false;
88
36
  const doMutation = {
89
37
  id: RichTextEditingMutation.id,
90
38
  params: {
@@ -93,25 +41,21 @@ const InsertDocDrawingCommand = {
93
41
  textRanges: []
94
42
  }
95
43
  };
96
- doMutation.params.actions = rawActions.reduce((acc, cur) => {
97
- return JSONX.compose(acc, cur);
98
- }, null);
44
+ doMutation.params.actions = actions;
99
45
  const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
100
46
  return Boolean(result);
101
47
  }
102
48
  };
103
49
  function resolveDocDrawingInsertTextRange(accessor, unitId, textRange) {
104
- var _ref, _contentInsertRange$s;
105
50
  const activeTextRange = accessor.get(DocSelectionManagerService).getActiveTextRange();
106
- const explicitTextRange = textRange ? normalizeTextRange(textRange) : null;
107
- const contentInsertRange = explicitTextRange !== null && explicitTextRange !== void 0 ? explicitTextRange : getContentInsertRange(accessor, unitId);
108
- if (!contentInsertRange) return activeTextRange !== null && activeTextRange !== void 0 ? activeTextRange : null;
51
+ const contentInsertRange = (textRange ? normalizeTextRange(textRange) : null) ?? getContentInsertRange(accessor, unitId);
52
+ if (!contentInsertRange) return activeTextRange ?? null;
109
53
  return {
110
54
  ...activeTextRange,
111
55
  startOffset: contentInsertRange.startOffset,
112
56
  endOffset: contentInsertRange.endOffset,
113
57
  collapsed: contentInsertRange.startOffset === contentInsertRange.endOffset,
114
- segmentId: (_ref = (_contentInsertRange$s = contentInsertRange.segmentId) !== null && _contentInsertRange$s !== void 0 ? _contentInsertRange$s : activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) !== null && _ref !== void 0 ? _ref : ""
58
+ segmentId: contentInsertRange.segmentId ?? (activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) ?? ""
115
59
  };
116
60
  }
117
61
 
@@ -201,7 +145,7 @@ const RemoveDocDrawingCommand = {
201
145
  id: "doc.command.remove-doc-image",
202
146
  type: CommandType.COMMAND,
203
147
  handler: (accessor, params) => {
204
- var _ref, _contentInsertRange$s, _documentDataModel$ge, _documentDataModel$ge2, _documentDataModel$ge3;
148
+ var _documentDataModel$ge;
205
149
  if (!params) return false;
206
150
  const commandService = accessor.get(ICommandService);
207
151
  const undoRedoService = accessor.get(IUndoRedoService);
@@ -212,29 +156,27 @@ const RemoveDocDrawingCommand = {
212
156
  const documentDataModel = univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC);
213
157
  if (!documentDataModel || removeDrawings.length === 0) return false;
214
158
  const activeTextRange = docSelectionManagerService.getActiveTextRange();
215
- const explicitTextRange = !textRange ? null : normalizeTextRange(textRange);
216
- const contentInsertRange = explicitTextRange !== null && explicitTextRange !== void 0 ? explicitTextRange : getContentInsertRange(accessor, unitId);
217
- const segmentId = (_ref = (_contentInsertRange$s = contentInsertRange === null || contentInsertRange === void 0 ? void 0 : contentInsertRange.segmentId) !== null && _contentInsertRange$s !== void 0 ? _contentInsertRange$s : activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) !== null && _ref !== void 0 ? _ref : "";
159
+ const contentInsertRange = (!textRange ? null : normalizeTextRange(textRange)) ?? getContentInsertRange(accessor, unitId);
160
+ const segmentId = (contentInsertRange === null || contentInsertRange === void 0 ? void 0 : contentInsertRange.segmentId) ?? (activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) ?? "";
218
161
  const textX = new TextX();
219
162
  const jsonX = JSONX.getInstance();
220
- const customBlocks = (_documentDataModel$ge = (_documentDataModel$ge2 = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge2 === void 0 || (_documentDataModel$ge2 = _documentDataModel$ge2.getBody()) === null || _documentDataModel$ge2 === void 0 ? void 0 : _documentDataModel$ge2.customBlocks) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : [];
163
+ const customBlocks = ((_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge === void 0 || (_documentDataModel$ge = _documentDataModel$ge.getBody()) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.customBlocks) ?? [];
221
164
  const removeCustomBlocks = removeDrawings.map((drawing) => customBlocks.find((customBlock) => customBlock.blockId === drawing.drawingId)).filter((block) => !!block).sort((a, b) => a.startIndex > b.startIndex ? 1 : -1);
222
165
  if (removeCustomBlocks.length === 0) return false;
223
- const drawings = (_documentDataModel$ge3 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : {};
166
+ const drawings = documentDataModel.getDrawings() ?? {};
224
167
  const removeDrawingParamById = new Map(removeDrawings.map((drawing) => [drawing.drawingId, drawing]));
225
168
  const removeDrawingSnapshots = removeCustomBlocks.map((block) => drawings[block.blockId]).filter((drawing) => drawing != null);
226
169
  const resourceRedoMutations = [];
227
170
  const resourceUndoMutations = [];
228
171
  const resourceMutationGroups = [];
229
172
  for (const block of removeCustomBlocks) {
230
- var _removeDrawingParam$s;
231
173
  const { blockId } = block;
232
174
  const drawing = drawings[blockId];
233
175
  if (drawing == null) continue;
234
176
  const removeDrawingParam = removeDrawingParamById.get(blockId);
235
177
  const mutationInfos = drawingAdapterService.getRemoveDrawingMutationInfos({
236
178
  unitId,
237
- subUnitId: (_removeDrawingParam$s = removeDrawingParam === null || removeDrawingParam === void 0 ? void 0 : removeDrawingParam.subUnitId) !== null && _removeDrawingParam$s !== void 0 ? _removeDrawingParam$s : unitId,
179
+ subUnitId: (removeDrawingParam === null || removeDrawingParam === void 0 ? void 0 : removeDrawingParam.subUnitId) ?? unitId,
238
180
  drawing,
239
181
  removeDrawings: removeDrawingSnapshots
240
182
  });
@@ -390,14 +332,13 @@ const UpdateDrawingDocTransformCommand = {
390
332
  id: "doc.command.update-drawing-doc-transform",
391
333
  type: CommandType.COMMAND,
392
334
  handler: (accessor, params) => {
393
- var _documentDataModel$ge;
394
335
  if (!params) return false;
395
336
  const commandService = accessor.get(ICommandService);
396
337
  const univerInstanceService = accessor.get(IUniverInstanceService);
397
338
  const { unitId, drawings } = params;
398
339
  const documentDataModel = univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC);
399
340
  if (!documentDataModel) return false;
400
- const oldDrawings = (_documentDataModel$ge = documentDataModel.getSnapshot().drawings) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : {};
341
+ const oldDrawings = documentDataModel.getSnapshot().drawings ?? {};
401
342
  const jsonX = JSONX.getInstance();
402
343
  const actions = [];
403
344
  for (const { drawingId, key, value } of drawings) {
@@ -478,13 +419,12 @@ const UpdateDocDrawingWrappingStyleCommand = {
478
419
  id: "doc.command.update-doc-drawing-wrapping-style",
479
420
  type: CommandType.COMMAND,
480
421
  handler: (accessor, params) => {
481
- var _documentDataModel$ge;
482
422
  if (!params) return false;
483
423
  const { drawings, wrappingStyle, unitId } = params;
484
424
  const commandService = accessor.get(ICommandService);
485
425
  const documentDataModel = accessor.get(IUniverInstanceService).getUnit(unitId, UniverInstanceType.UNIVER_DOC);
486
426
  if (!documentDataModel) return false;
487
- const oldDrawings = (_documentDataModel$ge = documentDataModel.getDrawings()) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : {};
427
+ const oldDrawings = documentDataModel.getDrawings() ?? {};
488
428
  const jsonX = JSONX.getInstance();
489
429
  const rawActions = [];
490
430
  for (const drawing of drawings) {
@@ -587,8 +527,8 @@ let DocDrawingController = class DocDrawingController extends Disposable {
587
527
  const drawings = doc.getSnapshot().drawings;
588
528
  const drawingOrder = doc.getSnapshot().drawingsOrder;
589
529
  return JSON.stringify({
590
- data: drawings !== null && drawings !== void 0 ? drawings : {},
591
- order: drawingOrder !== null && drawingOrder !== void 0 ? drawingOrder : []
530
+ data: drawings ?? {},
531
+ order: drawingOrder ?? []
592
532
  });
593
533
  }
594
534
  return "";
@@ -619,10 +559,9 @@ let DocDrawingController = class DocDrawingController extends Disposable {
619
559
  });
620
560
  },
621
561
  onLoad: (unitId, value) => {
622
- var _value$data, _value$order;
623
562
  this._setDrawingDataForUnit(unitId, {
624
- data: (_value$data = value.data) !== null && _value$data !== void 0 ? _value$data : {},
625
- order: (_value$order = value.order) !== null && _value$order !== void 0 ? _value$order : []
563
+ data: value.data ?? {},
564
+ order: value.order ?? []
626
565
  });
627
566
  }
628
567
  }));
@@ -675,7 +614,7 @@ DocDrawingController = __decorate([
675
614
  //#endregion
676
615
  //#region package.json
677
616
  var name = "@univerjs/docs-drawing";
678
- var version = "1.0.0-alpha.8";
617
+ var version = "1.0.0-beta.0";
679
618
 
680
619
  //#endregion
681
620
  //#region src/config/config.ts
package/lib/facade.js CHANGED
@@ -96,8 +96,8 @@ var FDocumentImage = class {
96
96
  * ```
97
97
  */
98
98
  getSize() {
99
- var _this$getImageData$do, _this$getImageData3;
100
- return (_this$getImageData$do = (_this$getImageData3 = this.getImageData()) === null || _this$getImageData3 === void 0 ? void 0 : _this$getImageData3.docTransform.size) !== null && _this$getImageData$do !== void 0 ? _this$getImageData$do : null;
99
+ var _this$getImageData3;
100
+ return ((_this$getImageData3 = this.getImageData()) === null || _this$getImageData3 === void 0 ? void 0 : _this$getImageData3.docTransform.size) ?? null;
101
101
  }
102
102
  /**
103
103
  * Gets the current clockwise rotation angle.
@@ -130,8 +130,8 @@ var FDocumentImage = class {
130
130
  * ```
131
131
  */
132
132
  getPositionH() {
133
- var _this$getImageData$do2, _this$getImageData5;
134
- return (_this$getImageData$do2 = (_this$getImageData5 = this.getImageData()) === null || _this$getImageData5 === void 0 ? void 0 : _this$getImageData5.docTransform.positionH) !== null && _this$getImageData$do2 !== void 0 ? _this$getImageData$do2 : null;
133
+ var _this$getImageData5;
134
+ return ((_this$getImageData5 = this.getImageData()) === null || _this$getImageData5 === void 0 ? void 0 : _this$getImageData5.docTransform.positionH) ?? null;
135
135
  }
136
136
  /**
137
137
  * Gets the current vertical position.
@@ -147,8 +147,8 @@ var FDocumentImage = class {
147
147
  * ```
148
148
  */
149
149
  getPositionV() {
150
- var _this$getImageData$do3, _this$getImageData6;
151
- return (_this$getImageData$do3 = (_this$getImageData6 = this.getImageData()) === null || _this$getImageData6 === void 0 ? void 0 : _this$getImageData6.docTransform.positionV) !== null && _this$getImageData$do3 !== void 0 ? _this$getImageData$do3 : null;
150
+ var _this$getImageData6;
151
+ return ((_this$getImageData6 = this.getImageData()) === null || _this$getImageData6 === void 0 ? void 0 : _this$getImageData6.docTransform.positionV) ?? null;
152
152
  }
153
153
  /**
154
154
  * Gets the current raw document image data.
@@ -272,7 +272,7 @@ var FDocumentImage = class {
272
272
  *
273
273
  * if (image) {
274
274
  * // Float the image beside body text without covering it.
275
- * const success = image.setWrappingStyle(univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE);
275
+ * const success = image.setWrappingStyle(univerAPI.Enum.TextWrappingStyle.WRAP_SQUARE);
276
276
  * console.log(success);
277
277
  * }
278
278
  * ```
@@ -437,7 +437,6 @@ var FDocumentImage = class {
437
437
  //#region src/facade/f-document.ts
438
438
  var FDocumentImageMixin = class extends FDocument {
439
439
  async insertImage(options) {
440
- var _options$wrappingStyl, _options$angle, _options$positionH, _options$positionV;
441
440
  const unitId = this.getId();
442
441
  const imageId = generateRandomId(6);
443
442
  const size = options.width != null && options.height != null ? {
@@ -445,12 +444,12 @@ var FDocumentImageMixin = class extends FDocument {
445
444
  height: options.height
446
445
  } : resolveImageSize(await this._getIntrinsicSize(options.source, options.imageSourceType), options);
447
446
  const defaultTransform = buildDocTransform(size.width, size.height);
448
- const wrappingStyle = (_options$wrappingStyl = options.wrappingStyle) !== null && _options$wrappingStyl !== void 0 ? _options$wrappingStyl : TextWrappingStyle.INLINE;
447
+ const wrappingStyle = options.wrappingStyle ?? TextWrappingStyle.INLINE;
449
448
  const docTransform = {
450
449
  ...defaultTransform,
451
- angle: (_options$angle = options.angle) !== null && _options$angle !== void 0 ? _options$angle : defaultTransform.angle,
452
- positionH: (_options$positionH = options.positionH) !== null && _options$positionH !== void 0 ? _options$positionH : defaultTransform.positionH,
453
- positionV: (_options$positionV = options.positionV) !== null && _options$positionV !== void 0 ? _options$positionV : defaultTransform.positionV
450
+ angle: options.angle ?? defaultTransform.angle,
451
+ positionH: options.positionH ?? defaultTransform.positionH,
452
+ positionV: options.positionV ?? defaultTransform.positionV
454
453
  };
455
454
  const transform = docDrawingPositionToTransform(docTransform);
456
455
  const drawing = {
@@ -486,10 +485,9 @@ var FDocumentImageMixin = class extends FDocument {
486
485
  return this._injector.createInstance(FDocumentImage, this, imageId, this._injector);
487
486
  }
488
487
  getImages() {
489
- var _documentDataModel$ge, _documentDataModel$ge2;
490
488
  const documentDataModel = this.getDocumentDataModel();
491
- const drawings = (_documentDataModel$ge = documentDataModel.getDrawings()) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : {};
492
- return ((_documentDataModel$ge2 = documentDataModel.getDrawingsOrder()) !== null && _documentDataModel$ge2 !== void 0 ? _documentDataModel$ge2 : Object.keys(drawings)).filter((drawingId) => {
489
+ const drawings = documentDataModel.getDrawings() ?? {};
490
+ return (documentDataModel.getDrawingsOrder() ?? Object.keys(drawings)).filter((drawingId) => {
493
491
  var _drawings$drawingId;
494
492
  return ((_drawings$drawingId = drawings[drawingId]) === null || _drawings$drawingId === void 0 ? void 0 : _drawings$drawingId.drawingType) === DrawingTypeEnum.DRAWING_IMAGE;
495
493
  }).map((drawingId) => this._injector.createInstance(FDocumentImage, this, drawingId, this._injector));
@@ -551,7 +549,7 @@ FDocument.extend(FDocumentImageMixin);
551
549
  * limitations under the License.
552
550
  */
553
551
  var FDocumentImageEnumMixin = class extends FEnum {
554
- get DocsImageWrappingStyle() {
552
+ get TextWrappingStyle() {
555
553
  return TextWrappingStyle;
556
554
  }
557
555
  get DocsImageRelativeFromH() {
package/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ArrangeTypeEnum, BooleanNumber, BuildTextUtils, CommandType, DependentOn, Disposable, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, JSONX, MemoryCursor, Plugin, PositionedObjectLayoutType, TextX, TextXActionType, Tools, UniverInstanceType, createIdentifier, getCustomBlockIdsInSelections, getRichTextEditPath, merge, toDisposable, touchDependencies } from "@univerjs/core";
1
+ import { ArrangeTypeEnum, BooleanNumber, BuildTextUtils, CommandType, DependentOn, Disposable, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, JSONX, MemoryCursor, Plugin, PositionedObjectLayoutType, TextX, TextXActionType, Tools, UniverInstanceType, createIdentifier, getRichTextEditPath, merge, toDisposable, touchDependencies } from "@univerjs/core";
2
2
  import { DocSelectionManagerService, RichTextEditingMutation, UniverDocsPlugin, getContentInsertRange, normalizeTextRange } from "@univerjs/docs";
3
3
  import { IDrawingManagerService, UnitDrawingService, UniverDrawingPlugin } from "@univerjs/drawing";
4
4
 
@@ -10,81 +10,29 @@ const InsertDocDrawingCommand = {
10
10
  id: "doc.command.insert-doc-image",
11
11
  type: CommandType.COMMAND,
12
12
  handler: (accessor, params) => {
13
- var _documentDataModel$ge, _snapshot$headers, _snapshot$footers, _snapshot$drawingsOrd, _snapshot$drawingsOrd2;
13
+ var _documentDataModel$ge, _snapshot$headers, _snapshot$footers;
14
14
  if (!params) return false;
15
15
  const commandService = accessor.get(ICommandService);
16
16
  const univerInstanceService = accessor.get(IUniverInstanceService);
17
17
  const { unitId, drawings, textRange } = params;
18
18
  const documentDataModel = univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC);
19
19
  if (!documentDataModel) return false;
20
- const targetTextRange = resolveDocDrawingInsertTextRange(accessor, unitId, textRange);
21
- if (!targetTextRange) return false;
22
- const { collapsed, startOffset, segmentId = "" } = targetTextRange;
23
- const body = (_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.getBody();
24
- if (!body) return false;
25
- const textX = new TextX();
26
- const jsonX = JSONX.getInstance();
27
- const rawActions = [];
20
+ const resolvedTextRange = resolveDocDrawingInsertTextRange(accessor, unitId, textRange);
21
+ if (!resolvedTextRange) return false;
22
+ const { segmentId = "" } = resolvedTextRange;
23
+ if (!((_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.getBody())) return false;
28
24
  const snapshot = documentDataModel.getSnapshot();
29
- const targetDrawings = !!((_snapshot$headers = snapshot.headers) === null || _snapshot$headers === void 0 ? void 0 : _snapshot$headers[segmentId]) || !!((_snapshot$footers = snapshot.footers) === null || _snapshot$footers === void 0 ? void 0 : _snapshot$footers[segmentId]) ? drawings.map((drawing) => {
30
- var _drawing$transforms;
31
- return {
32
- ...drawing,
33
- isMultiTransform: BooleanNumber.TRUE,
34
- transforms: (_drawing$transforms = drawing.transforms) !== null && _drawing$transforms !== void 0 ? _drawing$transforms : drawing.transform ? [drawing.transform] : null
35
- };
36
- }) : drawings;
37
- const drawingOrderLength = (_snapshot$drawingsOrd = (_snapshot$drawingsOrd2 = snapshot.drawingsOrder) === null || _snapshot$drawingsOrd2 === void 0 ? void 0 : _snapshot$drawingsOrd2.length) !== null && _snapshot$drawingsOrd !== void 0 ? _snapshot$drawingsOrd : 0;
38
- let removeDrawingLen = 0;
39
- if (collapsed) {
40
- if (startOffset > 0) textX.push({
41
- t: TextXActionType.RETAIN,
42
- len: startOffset
43
- });
44
- } else {
45
- var _documentDataModel$ge2, _documentDataModel$ge3;
46
- const dos = BuildTextUtils.selection.delete([targetTextRange], body, 0, null, false);
47
- textX.push(...dos);
48
- const removedCustomBlockIds = getCustomBlockIdsInSelections(body, [targetTextRange]);
49
- const drawings = (_documentDataModel$ge2 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge2 !== void 0 ? _documentDataModel$ge2 : {};
50
- const drawingOrder = (_documentDataModel$ge3 = documentDataModel.getDrawingsOrder()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : [];
51
- const sortedRemovedCustomBlockIds = removedCustomBlockIds.sort((a, b) => {
52
- if (drawingOrder.indexOf(a) > drawingOrder.indexOf(b)) return -1;
53
- else if (drawingOrder.indexOf(a) < drawingOrder.indexOf(b)) return 1;
54
- return 0;
55
- });
56
- if (sortedRemovedCustomBlockIds.length > 0) for (const blockId of sortedRemovedCustomBlockIds) {
57
- const drawing = drawings[blockId];
58
- const drawingIndex = drawingOrder.indexOf(blockId);
59
- if (drawing == null || drawingIndex < 0) continue;
60
- const removeDrawingAction = jsonX.removeOp(["drawings", blockId], drawing);
61
- const removeDrawingOrderAction = jsonX.removeOp(["drawingsOrder", drawingIndex], blockId);
62
- rawActions.push(removeDrawingAction);
63
- rawActions.push(removeDrawingOrderAction);
64
- removeDrawingLen++;
65
- }
66
- }
67
- textX.push({
68
- t: TextXActionType.INSERT,
69
- body: {
70
- dataStream: "\b".repeat(targetDrawings.length),
71
- customBlocks: targetDrawings.map((drawing, i) => ({
72
- startIndex: i,
73
- blockId: drawing.drawingId
74
- }))
75
- },
76
- len: targetDrawings.length
25
+ const targetDrawings = !!((_snapshot$headers = snapshot.headers) === null || _snapshot$headers === void 0 ? void 0 : _snapshot$headers[segmentId]) || !!((_snapshot$footers = snapshot.footers) === null || _snapshot$footers === void 0 ? void 0 : _snapshot$footers[segmentId]) ? drawings.map((drawing) => ({
26
+ ...drawing,
27
+ isMultiTransform: BooleanNumber.TRUE,
28
+ transforms: drawing.transforms ?? (drawing.transform ? [drawing.transform] : null)
29
+ })) : drawings;
30
+ const actions = BuildTextUtils.drawing.add({
31
+ selection: resolvedTextRange,
32
+ documentDataModel,
33
+ drawings: targetDrawings
77
34
  });
78
- const path = getRichTextEditPath(documentDataModel, segmentId);
79
- const placeHolderAction = jsonX.editOp(textX.serialize(), path);
80
- rawActions.push(placeHolderAction);
81
- for (const drawing of targetDrawings) {
82
- const { drawingId } = drawing;
83
- const addDrawingAction = jsonX.insertOp(["drawings", drawingId], drawing);
84
- const addDrawingOrderAction = jsonX.insertOp(["drawingsOrder", drawingOrderLength - removeDrawingLen], drawingId);
85
- rawActions.push(addDrawingAction);
86
- rawActions.push(addDrawingOrderAction);
87
- }
35
+ if (!actions) return false;
88
36
  const doMutation = {
89
37
  id: RichTextEditingMutation.id,
90
38
  params: {
@@ -93,25 +41,21 @@ const InsertDocDrawingCommand = {
93
41
  textRanges: []
94
42
  }
95
43
  };
96
- doMutation.params.actions = rawActions.reduce((acc, cur) => {
97
- return JSONX.compose(acc, cur);
98
- }, null);
44
+ doMutation.params.actions = actions;
99
45
  const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
100
46
  return Boolean(result);
101
47
  }
102
48
  };
103
49
  function resolveDocDrawingInsertTextRange(accessor, unitId, textRange) {
104
- var _ref, _contentInsertRange$s;
105
50
  const activeTextRange = accessor.get(DocSelectionManagerService).getActiveTextRange();
106
- const explicitTextRange = textRange ? normalizeTextRange(textRange) : null;
107
- const contentInsertRange = explicitTextRange !== null && explicitTextRange !== void 0 ? explicitTextRange : getContentInsertRange(accessor, unitId);
108
- if (!contentInsertRange) return activeTextRange !== null && activeTextRange !== void 0 ? activeTextRange : null;
51
+ const contentInsertRange = (textRange ? normalizeTextRange(textRange) : null) ?? getContentInsertRange(accessor, unitId);
52
+ if (!contentInsertRange) return activeTextRange ?? null;
109
53
  return {
110
54
  ...activeTextRange,
111
55
  startOffset: contentInsertRange.startOffset,
112
56
  endOffset: contentInsertRange.endOffset,
113
57
  collapsed: contentInsertRange.startOffset === contentInsertRange.endOffset,
114
- segmentId: (_ref = (_contentInsertRange$s = contentInsertRange.segmentId) !== null && _contentInsertRange$s !== void 0 ? _contentInsertRange$s : activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) !== null && _ref !== void 0 ? _ref : ""
58
+ segmentId: contentInsertRange.segmentId ?? (activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) ?? ""
115
59
  };
116
60
  }
117
61
 
@@ -201,7 +145,7 @@ const RemoveDocDrawingCommand = {
201
145
  id: "doc.command.remove-doc-image",
202
146
  type: CommandType.COMMAND,
203
147
  handler: (accessor, params) => {
204
- var _ref, _contentInsertRange$s, _documentDataModel$ge, _documentDataModel$ge2, _documentDataModel$ge3;
148
+ var _documentDataModel$ge;
205
149
  if (!params) return false;
206
150
  const commandService = accessor.get(ICommandService);
207
151
  const undoRedoService = accessor.get(IUndoRedoService);
@@ -212,29 +156,27 @@ const RemoveDocDrawingCommand = {
212
156
  const documentDataModel = univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC);
213
157
  if (!documentDataModel || removeDrawings.length === 0) return false;
214
158
  const activeTextRange = docSelectionManagerService.getActiveTextRange();
215
- const explicitTextRange = !textRange ? null : normalizeTextRange(textRange);
216
- const contentInsertRange = explicitTextRange !== null && explicitTextRange !== void 0 ? explicitTextRange : getContentInsertRange(accessor, unitId);
217
- const segmentId = (_ref = (_contentInsertRange$s = contentInsertRange === null || contentInsertRange === void 0 ? void 0 : contentInsertRange.segmentId) !== null && _contentInsertRange$s !== void 0 ? _contentInsertRange$s : activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) !== null && _ref !== void 0 ? _ref : "";
159
+ const contentInsertRange = (!textRange ? null : normalizeTextRange(textRange)) ?? getContentInsertRange(accessor, unitId);
160
+ const segmentId = (contentInsertRange === null || contentInsertRange === void 0 ? void 0 : contentInsertRange.segmentId) ?? (activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.segmentId) ?? "";
218
161
  const textX = new TextX();
219
162
  const jsonX = JSONX.getInstance();
220
- const customBlocks = (_documentDataModel$ge = (_documentDataModel$ge2 = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge2 === void 0 || (_documentDataModel$ge2 = _documentDataModel$ge2.getBody()) === null || _documentDataModel$ge2 === void 0 ? void 0 : _documentDataModel$ge2.customBlocks) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : [];
163
+ const customBlocks = ((_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge === void 0 || (_documentDataModel$ge = _documentDataModel$ge.getBody()) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.customBlocks) ?? [];
221
164
  const removeCustomBlocks = removeDrawings.map((drawing) => customBlocks.find((customBlock) => customBlock.blockId === drawing.drawingId)).filter((block) => !!block).sort((a, b) => a.startIndex > b.startIndex ? 1 : -1);
222
165
  if (removeCustomBlocks.length === 0) return false;
223
- const drawings = (_documentDataModel$ge3 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : {};
166
+ const drawings = documentDataModel.getDrawings() ?? {};
224
167
  const removeDrawingParamById = new Map(removeDrawings.map((drawing) => [drawing.drawingId, drawing]));
225
168
  const removeDrawingSnapshots = removeCustomBlocks.map((block) => drawings[block.blockId]).filter((drawing) => drawing != null);
226
169
  const resourceRedoMutations = [];
227
170
  const resourceUndoMutations = [];
228
171
  const resourceMutationGroups = [];
229
172
  for (const block of removeCustomBlocks) {
230
- var _removeDrawingParam$s;
231
173
  const { blockId } = block;
232
174
  const drawing = drawings[blockId];
233
175
  if (drawing == null) continue;
234
176
  const removeDrawingParam = removeDrawingParamById.get(blockId);
235
177
  const mutationInfos = drawingAdapterService.getRemoveDrawingMutationInfos({
236
178
  unitId,
237
- subUnitId: (_removeDrawingParam$s = removeDrawingParam === null || removeDrawingParam === void 0 ? void 0 : removeDrawingParam.subUnitId) !== null && _removeDrawingParam$s !== void 0 ? _removeDrawingParam$s : unitId,
179
+ subUnitId: (removeDrawingParam === null || removeDrawingParam === void 0 ? void 0 : removeDrawingParam.subUnitId) ?? unitId,
238
180
  drawing,
239
181
  removeDrawings: removeDrawingSnapshots
240
182
  });
@@ -390,14 +332,13 @@ const UpdateDrawingDocTransformCommand = {
390
332
  id: "doc.command.update-drawing-doc-transform",
391
333
  type: CommandType.COMMAND,
392
334
  handler: (accessor, params) => {
393
- var _documentDataModel$ge;
394
335
  if (!params) return false;
395
336
  const commandService = accessor.get(ICommandService);
396
337
  const univerInstanceService = accessor.get(IUniverInstanceService);
397
338
  const { unitId, drawings } = params;
398
339
  const documentDataModel = univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC);
399
340
  if (!documentDataModel) return false;
400
- const oldDrawings = (_documentDataModel$ge = documentDataModel.getSnapshot().drawings) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : {};
341
+ const oldDrawings = documentDataModel.getSnapshot().drawings ?? {};
401
342
  const jsonX = JSONX.getInstance();
402
343
  const actions = [];
403
344
  for (const { drawingId, key, value } of drawings) {
@@ -478,13 +419,12 @@ const UpdateDocDrawingWrappingStyleCommand = {
478
419
  id: "doc.command.update-doc-drawing-wrapping-style",
479
420
  type: CommandType.COMMAND,
480
421
  handler: (accessor, params) => {
481
- var _documentDataModel$ge;
482
422
  if (!params) return false;
483
423
  const { drawings, wrappingStyle, unitId } = params;
484
424
  const commandService = accessor.get(ICommandService);
485
425
  const documentDataModel = accessor.get(IUniverInstanceService).getUnit(unitId, UniverInstanceType.UNIVER_DOC);
486
426
  if (!documentDataModel) return false;
487
- const oldDrawings = (_documentDataModel$ge = documentDataModel.getDrawings()) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : {};
427
+ const oldDrawings = documentDataModel.getDrawings() ?? {};
488
428
  const jsonX = JSONX.getInstance();
489
429
  const rawActions = [];
490
430
  for (const drawing of drawings) {
@@ -587,8 +527,8 @@ let DocDrawingController = class DocDrawingController extends Disposable {
587
527
  const drawings = doc.getSnapshot().drawings;
588
528
  const drawingOrder = doc.getSnapshot().drawingsOrder;
589
529
  return JSON.stringify({
590
- data: drawings !== null && drawings !== void 0 ? drawings : {},
591
- order: drawingOrder !== null && drawingOrder !== void 0 ? drawingOrder : []
530
+ data: drawings ?? {},
531
+ order: drawingOrder ?? []
592
532
  });
593
533
  }
594
534
  return "";
@@ -619,10 +559,9 @@ let DocDrawingController = class DocDrawingController extends Disposable {
619
559
  });
620
560
  },
621
561
  onLoad: (unitId, value) => {
622
- var _value$data, _value$order;
623
562
  this._setDrawingDataForUnit(unitId, {
624
- data: (_value$data = value.data) !== null && _value$data !== void 0 ? _value$data : {},
625
- order: (_value$order = value.order) !== null && _value$order !== void 0 ? _value$order : []
563
+ data: value.data ?? {},
564
+ order: value.order ?? []
626
565
  });
627
566
  }
628
567
  }));
@@ -675,7 +614,7 @@ DocDrawingController = __decorate([
675
614
  //#endregion
676
615
  //#region package.json
677
616
  var name = "@univerjs/docs-drawing";
678
- var version = "1.0.0-alpha.8";
617
+ var version = "1.0.0-beta.0";
679
618
 
680
619
  //#endregion
681
620
  //#region src/config/config.ts
@@ -243,7 +243,7 @@ export declare class FDocumentImage {
243
243
  *
244
244
  * if (image) {
245
245
  * // Float the image beside body text without covering it.
246
- * const success = image.setWrappingStyle(univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE);
246
+ * const success = image.setWrappingStyle(univerAPI.Enum.TextWrappingStyle.WRAP_SQUARE);
247
247
  * console.log(success);
248
248
  * }
249
249
  * ```
@@ -71,7 +71,7 @@ export interface IFDocumentImageMixin {
71
71
  * imageSourceType: univerAPI.Enum.ImageSourceType.URL,
72
72
  * width: 320,
73
73
  * // Keep the image in the text flow so it cannot cover surrounding text.
74
- * wrappingStyle: univerAPI.Enum.DocsImageWrappingStyle.INLINE,
74
+ * wrappingStyle: univerAPI.Enum.TextWrappingStyle.INLINE,
75
75
  * textRange: {
76
76
  * startOffset: 30,
77
77
  * },
@@ -87,7 +87,7 @@ export interface IFDocumentImageMixin {
87
87
  * imageSourceType: univerAPI.Enum.ImageSourceType.URL,
88
88
  * width: 320,
89
89
  * // Float the image and let body text flow beside its rectangular bounds.
90
- * wrappingStyle: univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE,
90
+ * wrappingStyle: univerAPI.Enum.TextWrappingStyle.WRAP_SQUARE,
91
91
  * textRange: {
92
92
  * startOffset: 30,
93
93
  * },
@@ -21,10 +21,11 @@ import { TextWrappingStyle } from '@univerjs/docs-drawing';
21
21
  */
22
22
  export interface IFDocumentImageEnumMixin {
23
23
  /**
24
- * Represents the wrapping styles used by docs image operations.
24
+ * Represents the text wrapping styles used by document drawings, including images and Shapes.
25
25
  *
26
26
  * Prefer `INLINE`, `WRAP_SQUARE`, or `WRAP_TOP_AND_BOTTOM` for ordinary document content.
27
27
  * `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` are overlay styles that do not cause text to reflow.
28
+ * Use this property whenever a Facade signature references `TextWrappingStyle`.
28
29
  * @example
29
30
  * ```ts
30
31
  * const fDocument = univerAPI.getActiveDocument();
@@ -33,7 +34,7 @@ export interface IFDocumentImageEnumMixin {
33
34
  * imageSourceType: univerAPI.Enum.ImageSourceType.URL,
34
35
  * width: 320,
35
36
  * // Float the image and wrap body text around its rectangular bounds.
36
- * wrappingStyle: univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE,
37
+ * wrappingStyle: univerAPI.Enum.TextWrappingStyle.WRAP_SQUARE,
37
38
  * textRange: {
38
39
  * startOffset: 30,
39
40
  * },
@@ -41,7 +42,7 @@ export interface IFDocumentImageEnumMixin {
41
42
  * console.log(image);
42
43
  * ```
43
44
  */
44
- DocsImageWrappingStyle: typeof TextWrappingStyle;
45
+ TextWrappingStyle: typeof TextWrappingStyle;
45
46
  /**
46
47
  * Represents the horizontal position types used by docs image operations.
47
48
  * @example
@@ -78,7 +79,7 @@ export interface IFDocumentImageEnumMixin {
78
79
  DocsImageRelativeFromV: typeof ObjectRelativeFromV;
79
80
  }
80
81
  export declare class FDocumentImageEnumMixin extends FEnum implements IFDocumentImageEnumMixin {
81
- get DocsImageWrappingStyle(): typeof TextWrappingStyle;
82
+ get TextWrappingStyle(): typeof TextWrappingStyle;
82
83
  get DocsImageRelativeFromH(): typeof ObjectRelativeFromH;
83
84
  get DocsImageRelativeFromV(): typeof ObjectRelativeFromV;
84
85
  }
package/lib/umd/facade.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/docs-drawing"),require("@univerjs/docs/facade"),require("@univerjs/drawing"),require("@univerjs/core/facade")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/docs-drawing`,`@univerjs/docs/facade`,`@univerjs/drawing`,`@univerjs/core/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawingFacade={},e.UniverCore,e.UniverDocs,e.UniverDocsDrawing,e.UniverDocsFacade,e.UniverDrawing,e.UniverCoreFacade))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var s=class{constructor(e,t,n){this._document=e,this._imageId=t,this._injector=n}getUnitId(){return this._document.getId()}getId(){return this._imageId}getSource(){var e;return(e=this.getImageData())==null?void 0:e.source}getSourceType(){var e;return(e=this.getImageData())==null?void 0:e.imageSourceType}getSize(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.size)==null?null:e}getAngle(){var e;return(e=this.getImageData())==null?void 0:e.docTransform.angle}getPositionH(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.positionH)==null?null:e}getPositionV(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.positionV)==null?null:e}getImageData(){var e;let n=(e=this._document.getDocumentDataModel().getDrawings())==null?void 0:e[this._imageId];return!n||n.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:n}setSize(e,t){return this._updateTransform(`size`,{width:e,height:t})}setRotate(e){return this._updateTransform(`angle`,e)}setPositionH(e){return this._updateTransform(`positionH`,e)}setPositionV(e){return this._updateTransform(`positionV`,e)}setWrappingStyle(e){let n=this.getImageData();return n?this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDocDrawingWrappingStyleCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[n],wrappingStyle:e}):!1}setForward(){return this._arrange(t.ArrangeTypeEnum.forward)}setBackward(){return this._arrange(t.ArrangeTypeEnum.backward)}setBack(){return this._arrange(t.ArrangeTypeEnum.back)}setFront(){return this._arrange(t.ArrangeTypeEnum.front)}remove(){let e=this.getImageData(),n=this._getTextRange();return!e||!n?!1:this._injector.get(t.ICommandService).syncExecuteCommand(r.RemoveDocDrawingCommand.id,{unitId:this.getUnitId(),drawings:[{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingId:this._imageId,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE}],textRange:n})}_updateTransform(e,n){return this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDrawingDocTransformCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[{drawingId:this._imageId,key:e,value:n}]})}_arrange(e){return this._injector.get(t.ICommandService).syncExecuteCommand(r.SetDocDrawingArrangeCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingIds:[this._imageId],arrangeType:e})}_getTextRange(){let{body:e,headers:t={},footers:n={}}=this._document.getDocumentDataModel().getSnapshot(),r=[{segmentId:``,body:e},...Object.entries(t).map(([e,t])=>({segmentId:e,body:t.body})),...Object.entries(n).map(([e,t])=>({segmentId:e,body:t.body}))];for(let{segmentId:e,body:t}of r){var i;let n=t==null||(i=t.customBlocks)==null?void 0:i.find(e=>e.blockId===this._imageId);if(n)return{startOffset:n.startIndex,endOffset:n.startIndex,collapsed:!0,segmentId:e}}return null}},c=class extends i.FDocument{async insertImage(e){var i,a,o,c;let u=this.getId(),d=(0,t.generateRandomId)(6),f=e.width!=null&&e.height!=null?{width:e.width,height:e.height}:l(await this._getIntrinsicSize(e.source,e.imageSourceType),e),p=(0,n.buildDocTransform)(f.width,f.height),m=(i=e.wrappingStyle)==null?r.TextWrappingStyle.INLINE:i,h={...p,angle:(a=e.angle)==null?p.angle:a,positionH:(o=e.positionH)==null?p.positionH:o,positionV:(c=e.positionV)==null?p.positionV:c},g=(0,n.docDrawingPositionToTransform)(h),_={unitId:u,subUnitId:u,drawingId:d,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:e.imageSourceType,source:e.source,transform:g,docTransform:h,behindDoc:m===r.TextWrappingStyle.BEHIND_TEXT?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE,title:``,description:``,layoutType:r.WRAPPING_STYLE_TO_LAYOUT_TYPE[m],wrapText:t.WrapTextType.BOTH_SIDES,distB:0,distL:0,distR:0,distT:0};return this._injector.get(t.ICommandService).syncExecuteCommand(r.InsertDocDrawingCommand.id,{unitId:u,drawings:[_],textRange:e.textRange})?this._injector.createInstance(s,this,d,this._injector):null}getImage(e){var n;let r=(n=this.getDocumentDataModel().getDrawings())==null?void 0:n[e];return!r||r.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:this._injector.createInstance(s,this,e,this._injector)}getImages(){var e,n;let r=this.getDocumentDataModel(),i=(e=r.getDrawings())==null?{}:e;return((n=r.getDrawingsOrder())==null?Object.keys(i):n).filter(e=>{var n;return((n=i[e])==null?void 0:n.drawingType)===t.DrawingTypeEnum.DRAWING_IMAGE}).map(e=>this._injector.createInstance(s,this,e,this._injector))}async _getIntrinsicSize(e,n){let r=this._injector.has(t.IImageIoService)?this._injector.get(t.IImageIoService):null,i=e;if(n===t.ImageSourceType.UUID&&r)i=await r.getImage(e);else if(n===t.ImageSourceType.URL&&this._injector.has(t.IURLImageService))try{i=await this._injector.get(t.IURLImageService).getImage(e)}catch{i=e}let{width:o,height:s,image:c}=await(0,a.getImageSize)(i);return r==null||r.addImageSourceCache(e,n,c),{width:o,height:s}}};function l(e,t){let{width:n,height:r}=e;if(t.width!=null&&t.height!=null)return{width:t.width,height:t.height};if(t.width!=null)return{width:t.width,height:r*t.width/n};if(t.height!=null)return{width:n*t.height/r,height:t.height};let i=Math.min(1,a.DRAWING_IMAGE_WIDTH_LIMIT/n,a.DRAWING_IMAGE_HEIGHT_LIMIT/r);return{width:n*i,height:r*i}}i.FDocument.extend(c);var u=class extends o.FEnum{get DocsImageWrappingStyle(){return r.TextWrappingStyle}get DocsImageRelativeFromH(){return t.ObjectRelativeFromH}get DocsImageRelativeFromV(){return t.ObjectRelativeFromV}};o.FEnum.extend(u),e.FDocumentImage=s});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/docs-drawing"),require("@univerjs/docs/facade"),require("@univerjs/drawing"),require("@univerjs/core/facade")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/docs-drawing`,`@univerjs/docs/facade`,`@univerjs/drawing`,`@univerjs/core/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawingFacade={},e.UniverCore,e.UniverDocs,e.UniverDocsDrawing,e.UniverDocsFacade,e.UniverDrawing,e.UniverCoreFacade))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var s=class{constructor(e,t,n){this._document=e,this._imageId=t,this._injector=n}getUnitId(){return this._document.getId()}getId(){return this._imageId}getSource(){var e;return(e=this.getImageData())==null?void 0:e.source}getSourceType(){var e;return(e=this.getImageData())==null?void 0:e.imageSourceType}getSize(){var e;return((e=this.getImageData())==null?void 0:e.docTransform.size)??null}getAngle(){var e;return(e=this.getImageData())==null?void 0:e.docTransform.angle}getPositionH(){var e;return((e=this.getImageData())==null?void 0:e.docTransform.positionH)??null}getPositionV(){var e;return((e=this.getImageData())==null?void 0:e.docTransform.positionV)??null}getImageData(){var e;let n=(e=this._document.getDocumentDataModel().getDrawings())==null?void 0:e[this._imageId];return!n||n.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:n}setSize(e,t){return this._updateTransform(`size`,{width:e,height:t})}setRotate(e){return this._updateTransform(`angle`,e)}setPositionH(e){return this._updateTransform(`positionH`,e)}setPositionV(e){return this._updateTransform(`positionV`,e)}setWrappingStyle(e){let n=this.getImageData();return n?this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDocDrawingWrappingStyleCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[n],wrappingStyle:e}):!1}setForward(){return this._arrange(t.ArrangeTypeEnum.forward)}setBackward(){return this._arrange(t.ArrangeTypeEnum.backward)}setBack(){return this._arrange(t.ArrangeTypeEnum.back)}setFront(){return this._arrange(t.ArrangeTypeEnum.front)}remove(){let e=this.getImageData(),n=this._getTextRange();return!e||!n?!1:this._injector.get(t.ICommandService).syncExecuteCommand(r.RemoveDocDrawingCommand.id,{unitId:this.getUnitId(),drawings:[{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingId:this._imageId,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE}],textRange:n})}_updateTransform(e,n){return this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDrawingDocTransformCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[{drawingId:this._imageId,key:e,value:n}]})}_arrange(e){return this._injector.get(t.ICommandService).syncExecuteCommand(r.SetDocDrawingArrangeCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingIds:[this._imageId],arrangeType:e})}_getTextRange(){let{body:e,headers:t={},footers:n={}}=this._document.getDocumentDataModel().getSnapshot(),r=[{segmentId:``,body:e},...Object.entries(t).map(([e,t])=>({segmentId:e,body:t.body})),...Object.entries(n).map(([e,t])=>({segmentId:e,body:t.body}))];for(let{segmentId:e,body:t}of r){var i;let n=t==null||(i=t.customBlocks)==null?void 0:i.find(e=>e.blockId===this._imageId);if(n)return{startOffset:n.startIndex,endOffset:n.startIndex,collapsed:!0,segmentId:e}}return null}},c=class extends i.FDocument{async insertImage(e){let i=this.getId(),a=(0,t.generateRandomId)(6),o=e.width!=null&&e.height!=null?{width:e.width,height:e.height}:l(await this._getIntrinsicSize(e.source,e.imageSourceType),e),c=(0,n.buildDocTransform)(o.width,o.height),u=e.wrappingStyle??r.TextWrappingStyle.INLINE,d={...c,angle:e.angle??c.angle,positionH:e.positionH??c.positionH,positionV:e.positionV??c.positionV},f=(0,n.docDrawingPositionToTransform)(d),p={unitId:i,subUnitId:i,drawingId:a,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:e.imageSourceType,source:e.source,transform:f,docTransform:d,behindDoc:u===r.TextWrappingStyle.BEHIND_TEXT?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE,title:``,description:``,layoutType:r.WRAPPING_STYLE_TO_LAYOUT_TYPE[u],wrapText:t.WrapTextType.BOTH_SIDES,distB:0,distL:0,distR:0,distT:0};return this._injector.get(t.ICommandService).syncExecuteCommand(r.InsertDocDrawingCommand.id,{unitId:i,drawings:[p],textRange:e.textRange})?this._injector.createInstance(s,this,a,this._injector):null}getImage(e){var n;let r=(n=this.getDocumentDataModel().getDrawings())==null?void 0:n[e];return!r||r.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:this._injector.createInstance(s,this,e,this._injector)}getImages(){let e=this.getDocumentDataModel(),n=e.getDrawings()??{};return(e.getDrawingsOrder()??Object.keys(n)).filter(e=>{var r;return((r=n[e])==null?void 0:r.drawingType)===t.DrawingTypeEnum.DRAWING_IMAGE}).map(e=>this._injector.createInstance(s,this,e,this._injector))}async _getIntrinsicSize(e,n){let r=this._injector.has(t.IImageIoService)?this._injector.get(t.IImageIoService):null,i=e;if(n===t.ImageSourceType.UUID&&r)i=await r.getImage(e);else if(n===t.ImageSourceType.URL&&this._injector.has(t.IURLImageService))try{i=await this._injector.get(t.IURLImageService).getImage(e)}catch{i=e}let{width:o,height:s,image:c}=await(0,a.getImageSize)(i);return r==null||r.addImageSourceCache(e,n,c),{width:o,height:s}}};function l(e,t){let{width:n,height:r}=e;if(t.width!=null&&t.height!=null)return{width:t.width,height:t.height};if(t.width!=null)return{width:t.width,height:r*t.width/n};if(t.height!=null)return{width:n*t.height/r,height:t.height};let i=Math.min(1,a.DRAWING_IMAGE_WIDTH_LIMIT/n,a.DRAWING_IMAGE_HEIGHT_LIMIT/r);return{width:n*i,height:r*i}}i.FDocument.extend(c);var u=class extends o.FEnum{get TextWrappingStyle(){return r.TextWrappingStyle}get DocsImageRelativeFromH(){return t.ObjectRelativeFromH}get DocsImageRelativeFromV(){return t.ObjectRelativeFromV}};o.FEnum.extend(u),e.FDocumentImage=s});
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/drawing")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/drawing`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawing={},e.UniverCore,e.UniverDocs,e.UniverDrawing))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i={id:`doc.command.insert-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i,o,s,c,l;if(!r)return!1;let u=e.get(t.ICommandService),d=e.get(t.IUniverInstanceService),{unitId:f,drawings:p,textRange:m}=r,h=d.getUnit(f,t.UniverInstanceType.UNIVER_DOC);if(!h)return!1;let g=a(e,f,m);if(!g)return!1;let{collapsed:_,startOffset:v,segmentId:y=``}=g,b=(i=h.getSelfOrHeaderFooterModel(y))==null?void 0:i.getBody();if(!b)return!1;let x=new t.TextX,S=t.JSONX.getInstance(),C=[],w=h.getSnapshot(),T=(o=w.headers)!=null&&o[y]||(s=w.footers)!=null&&s[y]?p.map(e=>{var n;return{...e,isMultiTransform:t.BooleanNumber.TRUE,transforms:(n=e.transforms)==null?e.transform?[e.transform]:null:n}}):p,E=(c=(l=w.drawingsOrder)==null?void 0:l.length)==null?0:c,D=0;if(_)v>0&&x.push({t:t.TextXActionType.RETAIN,len:v});else{var O,k;let e=t.BuildTextUtils.selection.delete([g],b,0,null,!1);x.push(...e);let n=(0,t.getCustomBlockIdsInSelections)(b,[g]),r=(O=h.getDrawings())==null?{}:O,i=(k=h.getDrawingsOrder())==null?[]:k,a=n.sort((e,t)=>i.indexOf(e)>i.indexOf(t)?-1:+(i.indexOf(e)<i.indexOf(t)));if(a.length>0)for(let e of a){let t=r[e],n=i.indexOf(e);if(t==null||n<0)continue;let a=S.removeOp([`drawings`,e],t),o=S.removeOp([`drawingsOrder`,n],e);C.push(a),C.push(o),D++}}x.push({t:t.TextXActionType.INSERT,body:{dataStream:`\b`.repeat(T.length),customBlocks:T.map((e,t)=>({startIndex:t,blockId:e.drawingId}))},len:T.length});let A=(0,t.getRichTextEditPath)(h,y),j=S.editOp(x.serialize(),A);C.push(j);for(let e of T){let{drawingId:t}=e,n=S.insertOp([`drawings`,t],e),r=S.insertOp([`drawingsOrder`,E-D],t);C.push(n),C.push(r)}let M={id:n.RichTextEditingMutation.id,params:{unitId:f,actions:[],textRanges:[]}};return M.params.actions=C.reduce((e,n)=>t.JSONX.compose(e,n),null),!!u.syncExecuteCommand(M.id,M.params)}};function a(e,t,r){var i,a;let o=e.get(n.DocSelectionManagerService).getActiveTextRange(),s=r?(0,n.normalizeTextRange)(r):null,c=s==null?(0,n.getContentInsertRange)(e,t):s;return c?{...o,startOffset:c.startOffset,endOffset:c.endOffset,collapsed:c.startOffset===c.endOffset,segmentId:(i=(a=c.segmentId)==null?o==null?void 0:o.segmentId:a)==null?``:i}:o==null?null:o}function o(e){"@babel/helpers - typeof";return o=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},o(e)}function s(e,t){if(o(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(o(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function c(e){var t=s(e,`string`);return o(t)==`symbol`?t:t+``}function l(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let u=(0,t.createIdentifier)(`doc.drawing-adapter.service`);var d=class{constructor(){l(this,`_adapters`,[])}registerAdapter(e){return this._adapters.push(e),(0,t.toDisposable)(()=>{let t=this._adapters.indexOf(e);t>=0&&this._adapters.splice(t,1)})}getRemoveDrawingMutationInfos(e){let t={redoMutations:[],undoMutations:[]};for(let r of this._adapters){var n;let i=(n=r.getRemoveDrawingMutationInfos)==null?void 0:n.call(r,e);i&&(t.redoMutations.push(...i.redoMutations),t.undoMutations.push(...i.undoMutations))}return t}getEditDrawingCommandInfo(e){for(let n of this._adapters){var t;let r=(t=n.getEditDrawingCommandInfo)==null?void 0:t.call(n,e);if(r)return r}return null}};let f={id:`doc.command.remove-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i,a,o,s,c;if(!r)return!1;let l=e.get(t.ICommandService),d=e.get(t.IUndoRedoService),f=e.get(u),m=e.get(t.IUniverInstanceService),h=e.get(n.DocSelectionManagerService),{unitId:g,drawings:_,textRange:v}=r,y=m.getUnit(g,t.UniverInstanceType.UNIVER_DOC);if(!y||_.length===0)return!1;let b=h.getActiveTextRange(),x=v?(0,n.normalizeTextRange)(v):null,S=x==null?(0,n.getContentInsertRange)(e,g):x,C=(i=(a=S==null?void 0:S.segmentId)==null?b==null?void 0:b.segmentId:a)==null?``:i,w=new t.TextX,T=t.JSONX.getInstance(),E=(o=(s=y.getSelfOrHeaderFooterModel(C))==null||(s=s.getBody())==null?void 0:s.customBlocks)==null?[]:o,D=_.map(e=>E.find(t=>t.blockId===e.drawingId)).filter(e=>!!e).sort((e,t)=>e.startIndex>t.startIndex?1:-1);if(D.length===0)return!1;let O=(c=y.getDrawings())==null?{}:c,k=new Map(_.map(e=>[e.drawingId,e])),A=D.map(e=>O[e.blockId]).filter(e=>e!=null),j=[],M=[],N=[];for(let e of D){var P;let{blockId:t}=e,n=O[t];if(n==null)continue;let r=k.get(t),i=f.getRemoveDrawingMutationInfos({unitId:g,subUnitId:(P=r==null?void 0:r.subUnitId)==null?g:P,drawing:n,removeDrawings:A});(i.redoMutations.length!==0||i.undoMutations.length!==0)&&(j.push(...i.redoMutations),M.push(...i.undoMutations),N.push(i))}if(!p(N,l))return!1;let F=`doc-drawing-remove-resource:${g}:${D.map(e=>e.blockId).join(`,`)}`,I=null;(j.length>0||M.length>0)&&(I=d.__tempBatchingUndoRedo(g),d.pushUndoRedo({unitID:g,redoMutations:j,undoMutations:M,id:F}));let L=new t.MemoryCursor,R=D[0].startIndex,z=[{startOffset:R,endOffset:R}],B={id:n.RichTextEditingMutation.id,params:{unitId:g,actions:[],textRanges:z}},V=[];for(let e of D){let{startIndex:n}=e;n>L.cursor&&w.push({t:t.TextXActionType.RETAIN,len:n-L.cursor}),w.push({t:t.TextXActionType.DELETE,len:1}),L.moveCursorTo(n+1)}V.push(T.editOp(w.serialize(),(0,t.getRichTextEditPath)(y,C)));for(let e of D){let{blockId:t}=e,n=y.getDrawingsOrder().indexOf(t);V.push(T.removeOp([`drawings`,t],O[t])),V.push(T.removeOp([`drawingsOrder`,n],t))}B.params.actions=V.reduce((e,n)=>t.JSONX.compose(e,n),null);let H=l.syncExecuteCommand(B.id,B.params);return!H&&I!=null?(I.dispose(),d.rollback(F,g),!1):(I==null||I.dispose(),!!H)}};function p(e,t){let n=[];for(let r of e){if(!h(r.redoMutations,t))return m([...n].reverse(),t),!1;n.push(r.undoMutations)}return!0}function m(e,t){e.forEach(e=>h(e,t))}function h(e,t){for(let n of e)if(!t.syncExecuteCommand(n.id,n.params))return!1;return!0}let g=`drawingsOrder`;function _(e,n,r){let i=new Set(n.filter(t=>e.includes(t))),a=[...e];if(i.size===0)return a;if(r===t.ArrangeTypeEnum.forward)for(let e=a.length-2;e>=0;e--)i.has(a[e])&&!i.has(a[e+1])&&([a[e],a[e+1]]=[a[e+1],a[e]]);else if(r===t.ArrangeTypeEnum.backward)for(let e=1;e<a.length;e++)i.has(a[e])&&!i.has(a[e-1])&&([a[e],a[e-1]]=[a[e-1],a[e]]);else if(r===t.ArrangeTypeEnum.front||r===t.ArrangeTypeEnum.back){let e=a.filter(e=>i.has(e)),n=a.filter(e=>!i.has(e));return r===t.ArrangeTypeEnum.front?[...n,...e]:[...e,...n]}return a}function v(e,n){let r=t.JSONX.getInstance(),i=[...e],a=[];for(let e=0;e<n.length;e++){let t=n[e],o=i.indexOf(t);if(o<0||o===e)continue;let s=r.moveOp([g,o],[g,e]);s&&a.push(s),i.splice(o,1),i.splice(e,0,t)}return a.reduce((e,n)=>t.JSONX.compose(e,n),null)}let y={id:`doc.command.set-drawing-arrange`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(t.ICommandService);if(r==null)return!1;let{unitId:a,drawingIds:o,arrangeType:s}=r,c=e.get(t.IUniverInstanceService).getUnit(a,t.UniverInstanceType.UNIVER_DOC),l=c==null?void 0:c.getDrawingsOrder();if(!l)return!1;let u=v(l,_(l,o,s));return!t.JSONX.isNoop(u)&&!!i.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:a,actions:u,textRanges:null})}},b={id:`doc.command.update-drawing-doc-transform`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i;if(!r)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUniverInstanceService),{unitId:s,drawings:c}=r,l=o.getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!l)return!1;let u=(i=l.getSnapshot().drawings)==null?{}:i,d=t.JSONX.getInstance(),f=[];for(let{drawingId:e,key:n,value:r}of c){var p;let i=(p=u[e])==null||(p=p.docTransform)==null?void 0:p[n];if(!t.Tools.diffValue(i,r)){let t=[`drawings`,e,`docTransform`,n];f.push(i===void 0?d.insertOp(t,r):d.replaceOp(t,i,r))}}return!!a.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:s,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null,debounce:!0})}},x=function(e){return e.INLINE=`inline`,e.BEHIND_TEXT=`behindText`,e.IN_FRONT_OF_TEXT=`inFrontOfText`,e.WRAP_SQUARE=`wrapSquare`,e.WRAP_TOP_AND_BOTTOM=`wrapTopAndBottom`,e}({}),S={inline:t.PositionedObjectLayoutType.INLINE,wrapSquare:t.PositionedObjectLayoutType.WRAP_SQUARE,wrapTopAndBottom:t.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM,inFrontOfText:t.PositionedObjectLayoutType.WRAP_NONE,behindText:t.PositionedObjectLayoutType.WRAP_NONE},C={id:`doc.command.update-doc-drawing-wrapping-style`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i;if(!r)return!1;let{drawings:a,wrappingStyle:o,unitId:s}=r,c=e.get(t.ICommandService),l=e.get(t.IUniverInstanceService).getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!l)return!1;let u=(i=l.getDrawings())==null?{}:i,d=t.JSONX.getInstance(),f=[];for(let e of a){let n=u[e.drawingId];if(!n)continue;let r=S[o];if(n.layoutType!==r&&f.push(d.replaceOp([`drawings`,e.drawingId,`layoutType`],n.layoutType,r)),o===`behindText`||o===`inFrontOfText`){let r=o===`behindText`?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE;n.behindDoc!==r&&f.push(d.replaceOp([`drawings`,e.drawingId,`behindDoc`],n.behindDoc,r))}if(o!==`inline`)for(let r of[`positionH`,`positionV`]){var p;let i=(p=e.docTransform)==null?void 0:p[r],a=n.docTransform[r];i&&!t.Tools.diffValue(a,i)&&f.push(d.replaceOp([`drawings`,e.drawingId,`docTransform`,r],a,i))}}let m={id:n.RichTextEditingMutation.id,params:{unitId:s,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null}};return!!c.syncExecuteCommand(m.id,m.params)}};var w=class extends r.UnitDrawingService{};let T=(0,t.createIdentifier)(`univer.doc.plugin.doc-drawing.service`);function E(e,t){return function(n,r){t(n,r,e)}}function D(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let O=`DOC_DRAWING_PLUGIN`;function k(e,t={}){return e.map((e,t)=>({drawingId:e,index:t})).sort((e,n)=>{let r=A(t[e.drawingId]);return r===A(t[n.drawingId])?e.index-n.index:r?-1:1}).map(({drawingId:e})=>e)}function A(e){return(e==null?void 0:e.layoutType)===t.PositionedObjectLayoutType.WRAP_NONE&&e.behindDoc===t.BooleanNumber.TRUE}let j=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._docDrawingService=e,this._drawingManagerService=t,this._resourceManagerService=n,this._univerInstanceService=r,this._commandService=i,this._init()}_init(){this._initSnapshot(),this._initCommands()}_initSnapshot(){let e=e=>{let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(n){let e=n.getSnapshot().drawings,t=n.getSnapshot().drawingsOrder;return JSON.stringify({data:e==null?{}:e,order:t==null?[]:t})}return``},n=e=>{if(!e)return{data:{},order:[]};try{return JSON.parse(e)}catch{return{data:{},order:[]}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:O,businesses:[t.UniverInstanceType.UNIVER_DOC],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._setDrawingDataForUnit(e,{data:{},order:[]})},onLoad:(e,t)=>{var n,r;this._setDrawingDataForUnit(e,{data:(n=t.data)==null?{}:n,order:(r=t.order)==null?[]:r})}}))}_setDrawingDataForUnit(e,t){let n=this._univerInstanceService.getUnit(e);n!=null&&(n.resetDrawing(t.data,t.order),this.loadDrawingDataForUnit(e))}loadDrawingDataForUnit(e){let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(!n)return!1;let r=e,i=n.getDrawings(),a=n.getDrawingsOrder();if(!i||!a)return!1;let o={[r]:{unitId:e,subUnitId:r,data:i,order:a}},s={[r]:{...o[r],order:k(a,i)}};return this._docDrawingService.registerDrawingData(e,o),this._drawingManagerService.registerDrawingData(e,s),!0}_initCommands(){[i,f,b,C,y].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};j=D([E(0,T),E(1,r.IDrawingManagerService),E(2,t.IResourceManagerService),E(3,t.IUniverInstanceService),E(4,t.ICommandService)],j);var M=`@univerjs/docs-drawing`,N=`1.0.0-alpha.8`;let P={},F=class extends t.Plugin{constructor(e=P,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},P,this._config);this._configService.setConfig(`docs-drawing.config`,i)}onStarting(){[[j],[d],[u,{useClass:d}],[w],[T,{useClass:w}]].forEach(e=>this._injector.add(e)),(0,t.touchDependencies)(this._injector,[[j]])}};l(F,`pluginName`,O),l(F,`packageName`,M),l(F,`version`,N),l(F,`type`,t.UniverInstanceType.UNIVER_DOC),F=D([(0,t.DependentOn)(n.UniverDocsPlugin,r.UniverDrawingPlugin),E(1,(0,t.Inject)(t.Injector)),E(2,t.IConfigService)],F),e.DOCS_DRAWING_PLUGIN=O,e.DocDrawingAdapterService=d,Object.defineProperty(e,"DocDrawingController",{enumerable:!0,get:function(){return j}}),e.DocDrawingService=w,e.IDocDrawingAdapterService=u,e.IDocDrawingService=T,e.InsertDocDrawingCommand=i,e.RemoveDocDrawingCommand=f,e.SetDocDrawingArrangeCommand=y,e.TextWrappingStyle=x,Object.defineProperty(e,"UniverDocsDrawingPlugin",{enumerable:!0,get:function(){return F}}),e.UpdateDocDrawingWrappingStyleCommand=C,e.UpdateDrawingDocTransformCommand=b,e.WRAPPING_STYLE_TO_LAYOUT_TYPE=S,e.getDocDrawingRenderOrder=k});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/drawing")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/drawing`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawing={},e.UniverCore,e.UniverDocs,e.UniverDrawing))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i={id:`doc.command.insert-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i,o,s;if(!r)return!1;let c=e.get(t.ICommandService),l=e.get(t.IUniverInstanceService),{unitId:u,drawings:d,textRange:f}=r,p=l.getUnit(u,t.UniverInstanceType.UNIVER_DOC);if(!p)return!1;let m=a(e,u,f);if(!m)return!1;let{segmentId:h=``}=m;if(!((i=p.getSelfOrHeaderFooterModel(h))!=null&&i.getBody()))return!1;let g=p.getSnapshot(),_=(o=g.headers)!=null&&o[h]||(s=g.footers)!=null&&s[h]?d.map(e=>({...e,isMultiTransform:t.BooleanNumber.TRUE,transforms:e.transforms??(e.transform?[e.transform]:null)})):d,v=t.BuildTextUtils.drawing.add({selection:m,documentDataModel:p,drawings:_});if(!v)return!1;let y={id:n.RichTextEditingMutation.id,params:{unitId:u,actions:[],textRanges:[]}};return y.params.actions=v,!!c.syncExecuteCommand(y.id,y.params)}};function a(e,t,r){let i=e.get(n.DocSelectionManagerService).getActiveTextRange(),a=(r?(0,n.normalizeTextRange)(r):null)??(0,n.getContentInsertRange)(e,t);return a?{...i,startOffset:a.startOffset,endOffset:a.endOffset,collapsed:a.startOffset===a.endOffset,segmentId:a.segmentId??(i==null?void 0:i.segmentId)??``}:i??null}function o(e){"@babel/helpers - typeof";return o=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},o(e)}function s(e,t){if(o(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(o(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function c(e){var t=s(e,`string`);return o(t)==`symbol`?t:t+``}function l(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let u=(0,t.createIdentifier)(`doc.drawing-adapter.service`);var d=class{constructor(){l(this,`_adapters`,[])}registerAdapter(e){return this._adapters.push(e),(0,t.toDisposable)(()=>{let t=this._adapters.indexOf(e);t>=0&&this._adapters.splice(t,1)})}getRemoveDrawingMutationInfos(e){let t={redoMutations:[],undoMutations:[]};for(let r of this._adapters){var n;let i=(n=r.getRemoveDrawingMutationInfos)==null?void 0:n.call(r,e);i&&(t.redoMutations.push(...i.redoMutations),t.undoMutations.push(...i.undoMutations))}return t}getEditDrawingCommandInfo(e){for(let n of this._adapters){var t;let r=(t=n.getEditDrawingCommandInfo)==null?void 0:t.call(n,e);if(r)return r}return null}};let f={id:`doc.command.remove-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i;if(!r)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUndoRedoService),s=e.get(u),c=e.get(t.IUniverInstanceService),l=e.get(n.DocSelectionManagerService),{unitId:d,drawings:f,textRange:m}=r,h=c.getUnit(d,t.UniverInstanceType.UNIVER_DOC);if(!h||f.length===0)return!1;let g=l.getActiveTextRange(),_=(m?(0,n.normalizeTextRange)(m):null)??(0,n.getContentInsertRange)(e,d),v=(_==null?void 0:_.segmentId)??(g==null?void 0:g.segmentId)??``,y=new t.TextX,b=t.JSONX.getInstance(),x=((i=h.getSelfOrHeaderFooterModel(v))==null||(i=i.getBody())==null?void 0:i.customBlocks)??[],S=f.map(e=>x.find(t=>t.blockId===e.drawingId)).filter(e=>!!e).sort((e,t)=>e.startIndex>t.startIndex?1:-1);if(S.length===0)return!1;let C=h.getDrawings()??{},w=new Map(f.map(e=>[e.drawingId,e])),T=S.map(e=>C[e.blockId]).filter(e=>e!=null),E=[],D=[],O=[];for(let e of S){let{blockId:t}=e,n=C[t];if(n==null)continue;let r=w.get(t),i=s.getRemoveDrawingMutationInfos({unitId:d,subUnitId:(r==null?void 0:r.subUnitId)??d,drawing:n,removeDrawings:T});(i.redoMutations.length!==0||i.undoMutations.length!==0)&&(E.push(...i.redoMutations),D.push(...i.undoMutations),O.push(i))}if(!p(O,a))return!1;let k=`doc-drawing-remove-resource:${d}:${S.map(e=>e.blockId).join(`,`)}`,A=null;(E.length>0||D.length>0)&&(A=o.__tempBatchingUndoRedo(d),o.pushUndoRedo({unitID:d,redoMutations:E,undoMutations:D,id:k}));let j=new t.MemoryCursor,M=S[0].startIndex,N=[{startOffset:M,endOffset:M}],P={id:n.RichTextEditingMutation.id,params:{unitId:d,actions:[],textRanges:N}},F=[];for(let e of S){let{startIndex:n}=e;n>j.cursor&&y.push({t:t.TextXActionType.RETAIN,len:n-j.cursor}),y.push({t:t.TextXActionType.DELETE,len:1}),j.moveCursorTo(n+1)}F.push(b.editOp(y.serialize(),(0,t.getRichTextEditPath)(h,v)));for(let e of S){let{blockId:t}=e,n=h.getDrawingsOrder().indexOf(t);F.push(b.removeOp([`drawings`,t],C[t])),F.push(b.removeOp([`drawingsOrder`,n],t))}P.params.actions=F.reduce((e,n)=>t.JSONX.compose(e,n),null);let I=a.syncExecuteCommand(P.id,P.params);return!I&&A!=null?(A.dispose(),o.rollback(k,d),!1):(A==null||A.dispose(),!!I)}};function p(e,t){let n=[];for(let r of e){if(!h(r.redoMutations,t))return m([...n].reverse(),t),!1;n.push(r.undoMutations)}return!0}function m(e,t){e.forEach(e=>h(e,t))}function h(e,t){for(let n of e)if(!t.syncExecuteCommand(n.id,n.params))return!1;return!0}let g=`drawingsOrder`;function _(e,n,r){let i=new Set(n.filter(t=>e.includes(t))),a=[...e];if(i.size===0)return a;if(r===t.ArrangeTypeEnum.forward)for(let e=a.length-2;e>=0;e--)i.has(a[e])&&!i.has(a[e+1])&&([a[e],a[e+1]]=[a[e+1],a[e]]);else if(r===t.ArrangeTypeEnum.backward)for(let e=1;e<a.length;e++)i.has(a[e])&&!i.has(a[e-1])&&([a[e],a[e-1]]=[a[e-1],a[e]]);else if(r===t.ArrangeTypeEnum.front||r===t.ArrangeTypeEnum.back){let e=a.filter(e=>i.has(e)),n=a.filter(e=>!i.has(e));return r===t.ArrangeTypeEnum.front?[...n,...e]:[...e,...n]}return a}function v(e,n){let r=t.JSONX.getInstance(),i=[...e],a=[];for(let e=0;e<n.length;e++){let t=n[e],o=i.indexOf(t);if(o<0||o===e)continue;let s=r.moveOp([g,o],[g,e]);s&&a.push(s),i.splice(o,1),i.splice(e,0,t)}return a.reduce((e,n)=>t.JSONX.compose(e,n),null)}let y={id:`doc.command.set-drawing-arrange`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(t.ICommandService);if(r==null)return!1;let{unitId:a,drawingIds:o,arrangeType:s}=r,c=e.get(t.IUniverInstanceService).getUnit(a,t.UniverInstanceType.UNIVER_DOC),l=c==null?void 0:c.getDrawingsOrder();if(!l)return!1;let u=v(l,_(l,o,s));return!t.JSONX.isNoop(u)&&!!i.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:a,actions:u,textRanges:null})}},b={id:`doc.command.update-drawing-doc-transform`,type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(t.ICommandService),a=e.get(t.IUniverInstanceService),{unitId:o,drawings:s}=r,c=a.getUnit(o,t.UniverInstanceType.UNIVER_DOC);if(!c)return!1;let l=c.getSnapshot().drawings??{},u=t.JSONX.getInstance(),d=[];for(let{drawingId:e,key:n,value:r}of s){var f;let i=(f=l[e])==null||(f=f.docTransform)==null?void 0:f[n];if(!t.Tools.diffValue(i,r)){let t=[`drawings`,e,`docTransform`,n];d.push(i===void 0?u.insertOp(t,r):u.replaceOp(t,i,r))}}return!!i.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:o,actions:d.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null,debounce:!0})}},x=function(e){return e.INLINE=`inline`,e.BEHIND_TEXT=`behindText`,e.IN_FRONT_OF_TEXT=`inFrontOfText`,e.WRAP_SQUARE=`wrapSquare`,e.WRAP_TOP_AND_BOTTOM=`wrapTopAndBottom`,e}({}),S={inline:t.PositionedObjectLayoutType.INLINE,wrapSquare:t.PositionedObjectLayoutType.WRAP_SQUARE,wrapTopAndBottom:t.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM,inFrontOfText:t.PositionedObjectLayoutType.WRAP_NONE,behindText:t.PositionedObjectLayoutType.WRAP_NONE},C={id:`doc.command.update-doc-drawing-wrapping-style`,type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let{drawings:i,wrappingStyle:a,unitId:o}=r,s=e.get(t.ICommandService),c=e.get(t.IUniverInstanceService).getUnit(o,t.UniverInstanceType.UNIVER_DOC);if(!c)return!1;let l=c.getDrawings()??{},u=t.JSONX.getInstance(),d=[];for(let e of i){let n=l[e.drawingId];if(!n)continue;let r=S[a];if(n.layoutType!==r&&d.push(u.replaceOp([`drawings`,e.drawingId,`layoutType`],n.layoutType,r)),a===`behindText`||a===`inFrontOfText`){let r=a===`behindText`?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE;n.behindDoc!==r&&d.push(u.replaceOp([`drawings`,e.drawingId,`behindDoc`],n.behindDoc,r))}if(a!==`inline`)for(let r of[`positionH`,`positionV`]){var f;let i=(f=e.docTransform)==null?void 0:f[r],a=n.docTransform[r];i&&!t.Tools.diffValue(a,i)&&d.push(u.replaceOp([`drawings`,e.drawingId,`docTransform`,r],a,i))}}let p={id:n.RichTextEditingMutation.id,params:{unitId:o,actions:d.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null}};return!!s.syncExecuteCommand(p.id,p.params)}};var w=class extends r.UnitDrawingService{};let T=(0,t.createIdentifier)(`univer.doc.plugin.doc-drawing.service`);function E(e,t){return function(n,r){t(n,r,e)}}function D(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let O=`DOC_DRAWING_PLUGIN`;function k(e,t={}){return e.map((e,t)=>({drawingId:e,index:t})).sort((e,n)=>{let r=A(t[e.drawingId]);return r===A(t[n.drawingId])?e.index-n.index:r?-1:1}).map(({drawingId:e})=>e)}function A(e){return(e==null?void 0:e.layoutType)===t.PositionedObjectLayoutType.WRAP_NONE&&e.behindDoc===t.BooleanNumber.TRUE}let j=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._docDrawingService=e,this._drawingManagerService=t,this._resourceManagerService=n,this._univerInstanceService=r,this._commandService=i,this._init()}_init(){this._initSnapshot(),this._initCommands()}_initSnapshot(){let e=e=>{let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(n){let e=n.getSnapshot().drawings,t=n.getSnapshot().drawingsOrder;return JSON.stringify({data:e??{},order:t??[]})}return``},n=e=>{if(!e)return{data:{},order:[]};try{return JSON.parse(e)}catch{return{data:{},order:[]}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:O,businesses:[t.UniverInstanceType.UNIVER_DOC],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._setDrawingDataForUnit(e,{data:{},order:[]})},onLoad:(e,t)=>{this._setDrawingDataForUnit(e,{data:t.data??{},order:t.order??[]})}}))}_setDrawingDataForUnit(e,t){let n=this._univerInstanceService.getUnit(e);n!=null&&(n.resetDrawing(t.data,t.order),this.loadDrawingDataForUnit(e))}loadDrawingDataForUnit(e){let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(!n)return!1;let r=e,i=n.getDrawings(),a=n.getDrawingsOrder();if(!i||!a)return!1;let o={[r]:{unitId:e,subUnitId:r,data:i,order:a}},s={[r]:{...o[r],order:k(a,i)}};return this._docDrawingService.registerDrawingData(e,o),this._drawingManagerService.registerDrawingData(e,s),!0}_initCommands(){[i,f,b,C,y].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};j=D([E(0,T),E(1,r.IDrawingManagerService),E(2,t.IResourceManagerService),E(3,t.IUniverInstanceService),E(4,t.ICommandService)],j);var M=`@univerjs/docs-drawing`,N=`1.0.0-beta.0`;let P={},F=class extends t.Plugin{constructor(e=P,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},P,this._config);this._configService.setConfig(`docs-drawing.config`,i)}onStarting(){[[j],[d],[u,{useClass:d}],[w],[T,{useClass:w}]].forEach(e=>this._injector.add(e)),(0,t.touchDependencies)(this._injector,[[j]])}};l(F,`pluginName`,O),l(F,`packageName`,M),l(F,`version`,N),l(F,`type`,t.UniverInstanceType.UNIVER_DOC),F=D([(0,t.DependentOn)(n.UniverDocsPlugin,r.UniverDrawingPlugin),E(1,(0,t.Inject)(t.Injector)),E(2,t.IConfigService)],F),e.DOCS_DRAWING_PLUGIN=O,e.DocDrawingAdapterService=d,Object.defineProperty(e,"DocDrawingController",{enumerable:!0,get:function(){return j}}),e.DocDrawingService=w,e.IDocDrawingAdapterService=u,e.IDocDrawingService=T,e.InsertDocDrawingCommand=i,e.RemoveDocDrawingCommand=f,e.SetDocDrawingArrangeCommand=y,e.TextWrappingStyle=x,Object.defineProperty(e,"UniverDocsDrawingPlugin",{enumerable:!0,get:function(){return F}}),e.UpdateDocDrawingWrappingStyleCommand=C,e.UpdateDrawingDocTransformCommand=b,e.WRAPPING_STYLE_TO_LAYOUT_TYPE=S,e.getDocDrawingRenderOrder=k});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/docs-drawing",
3
- "version": "1.0.0-alpha.8",
3
+ "version": "1.0.0-beta.0",
4
4
  "private": false,
5
5
  "description": "Drawing model integration for Univer Docs.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -59,15 +59,15 @@
59
59
  "lib"
60
60
  ],
61
61
  "dependencies": {
62
- "@univerjs/core": "1.0.0-alpha.8",
63
- "@univerjs/drawing": "1.0.0-alpha.8",
64
- "@univerjs/docs": "1.0.0-alpha.8"
62
+ "@univerjs/core": "1.0.0-beta.0",
63
+ "@univerjs/docs": "1.0.0-beta.0",
64
+ "@univerjs/drawing": "1.0.0-beta.0"
65
65
  },
66
66
  "devDependencies": {
67
67
  "typescript": "^6.0.3",
68
68
  "vitest": "^4.1.10",
69
- "@univerjs/engine-render": "1.0.0-alpha.8",
70
- "@univerjs-infra/shared": "1.0.0-alpha.8"
69
+ "@univerjs/engine-render": "1.0.0-beta.0",
70
+ "@univerjs-infra/shared": "1.0.0-beta.0"
71
71
  },
72
72
  "scripts": {
73
73
  "test": "vitest run",