@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 +14 -16
- package/lib/cjs/index.js +32 -93
- package/lib/es/facade.js +14 -16
- package/lib/es/index.js +33 -94
- package/lib/facade.js +14 -16
- package/lib/index.js +33 -94
- package/lib/types/facade/f-document-image.d.ts +1 -1
- package/lib/types/facade/f-document.d.ts +2 -2
- package/lib/types/facade/f-enum.d.ts +5 -4
- package/lib/umd/facade.js +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +6 -6
package/lib/cjs/facade.js
CHANGED
|
@@ -97,8 +97,8 @@ var FDocumentImage = class {
|
|
|
97
97
|
* ```
|
|
98
98
|
*/
|
|
99
99
|
getSize() {
|
|
100
|
-
var _this$
|
|
101
|
-
return (
|
|
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$
|
|
135
|
-
return (
|
|
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$
|
|
152
|
-
return (
|
|
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.
|
|
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 =
|
|
448
|
+
const wrappingStyle = options.wrappingStyle ?? _univerjs_docs_drawing.TextWrappingStyle.INLINE;
|
|
450
449
|
const docTransform = {
|
|
451
450
|
...defaultTransform,
|
|
452
|
-
angle:
|
|
453
|
-
positionH:
|
|
454
|
-
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 =
|
|
493
|
-
return (
|
|
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
|
|
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
|
|
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
|
|
22
|
-
if (!
|
|
23
|
-
const {
|
|
24
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
108
|
-
|
|
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:
|
|
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
|
|
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
|
|
217
|
-
const
|
|
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 =
|
|
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 =
|
|
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: (
|
|
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 =
|
|
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 =
|
|
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
|
|
592
|
-
order: 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:
|
|
626
|
-
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-
|
|
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$
|
|
100
|
-
return (
|
|
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$
|
|
134
|
-
return (
|
|
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$
|
|
151
|
-
return (
|
|
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.
|
|
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 =
|
|
447
|
+
const wrappingStyle = options.wrappingStyle ?? TextWrappingStyle.INLINE;
|
|
449
448
|
const docTransform = {
|
|
450
449
|
...defaultTransform,
|
|
451
|
-
angle:
|
|
452
|
-
positionH:
|
|
453
|
-
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 =
|
|
492
|
-
return (
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
21
|
-
if (!
|
|
22
|
-
const {
|
|
23
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
107
|
-
|
|
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:
|
|
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
|
|
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
|
|
216
|
-
const
|
|
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 =
|
|
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 =
|
|
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: (
|
|
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 =
|
|
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 =
|
|
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
|
|
591
|
-
order: 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:
|
|
625
|
-
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-
|
|
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$
|
|
100
|
-
return (
|
|
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$
|
|
134
|
-
return (
|
|
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$
|
|
151
|
-
return (
|
|
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.
|
|
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 =
|
|
447
|
+
const wrappingStyle = options.wrappingStyle ?? TextWrappingStyle.INLINE;
|
|
449
448
|
const docTransform = {
|
|
450
449
|
...defaultTransform,
|
|
451
|
-
angle:
|
|
452
|
-
positionH:
|
|
453
|
-
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 =
|
|
492
|
-
return (
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
21
|
-
if (!
|
|
22
|
-
const {
|
|
23
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
107
|
-
|
|
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:
|
|
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
|
|
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
|
|
216
|
-
const
|
|
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 =
|
|
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 =
|
|
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: (
|
|
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 =
|
|
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 =
|
|
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
|
|
591
|
-
order: 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:
|
|
625
|
-
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-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
|
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-
|
|
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-
|
|
63
|
-
"@univerjs/
|
|
64
|
-
"@univerjs/
|
|
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-
|
|
70
|
-
"@univerjs-infra/shared": "1.0.0-
|
|
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",
|