@univerjs/docs-drawing-ui 1.0.0-alpha.2 → 1.0.0-alpha.3
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/index.js +386 -94
- package/lib/es/index.js +381 -92
- package/lib/index.js +381 -92
- package/lib/types/commands/commands/interfaces.d.ts +2 -1
- package/lib/types/controllers/doc-drawing-notification.controller.d.ts +1 -0
- package/lib/types/controllers/doc-float-dom.controller.d.ts +11 -1
- package/lib/types/controllers/render-controllers/doc-drawing-transform-update.controller.d.ts +2 -1
- package/lib/types/controllers/render-controllers/doc-drawing-update.render-controller.d.ts +2 -2
- package/lib/types/index.d.ts +5 -1
- package/lib/types/menu/drawing-popup-menu.controller.d.ts +6 -2
- package/lib/types/services/doc-drawing-floating-toolbar-adapter.service.d.ts +54 -0
- package/lib/umd/index.js +1 -1
- package/package.json +12 -12
package/lib/cjs/index.js
CHANGED
|
@@ -20,8 +20,10 @@ const RemoveDocDrawingCommand = {
|
|
|
20
20
|
id: "doc.command.remove-doc-image",
|
|
21
21
|
type: _univerjs_core.CommandType.COMMAND,
|
|
22
22
|
handler: (accessor, params) => {
|
|
23
|
-
var _docSelectionRenderSe, _documentDataModel$ge, _documentDataModel$ge2;
|
|
23
|
+
var _docSelectionRenderSe, _documentDataModel$ge, _documentDataModel$ge2, _removeDrawings$, _documentDataModel$ge3;
|
|
24
24
|
const commandService = accessor.get(_univerjs_core.ICommandService);
|
|
25
|
+
const undoRedoService = accessor.get(_univerjs_core.IUndoRedoService);
|
|
26
|
+
const drawingAdapterService = accessor.get(_univerjs_docs_drawing.IDocDrawingAdapterService);
|
|
25
27
|
const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
|
|
26
28
|
const renderManagerService = accessor.get(_univerjs_engine_render.IRenderManagerService);
|
|
27
29
|
const documentDataModel = univerInstanceService.getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_DOC);
|
|
@@ -33,7 +35,43 @@ const RemoveDocDrawingCommand = {
|
|
|
33
35
|
const jsonX = _univerjs_core.JSONX.getInstance();
|
|
34
36
|
const customBlocks = (_documentDataModel$ge = (_documentDataModel$ge2 = documentDataModel.getSelfOrHeaderFooterModel(segmentId)) === null || _documentDataModel$ge2 === void 0 || (_documentDataModel$ge2 = _documentDataModel$ge2.getBody()) === null || _documentDataModel$ge2 === void 0 ? void 0 : _documentDataModel$ge2.customBlocks) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : [];
|
|
35
37
|
const removeCustomBlocks = removeDrawings.map((drawing) => customBlocks.find((customBlock) => customBlock.blockId === drawing.drawingId)).filter((block) => !!block).sort((a, b) => a.startIndex > b.startIndex ? 1 : -1);
|
|
36
|
-
const unitId = removeDrawings[0]
|
|
38
|
+
const unitId = (_removeDrawings$ = removeDrawings[0]) === null || _removeDrawings$ === void 0 ? void 0 : _removeDrawings$.unitId;
|
|
39
|
+
if (unitId == null || removeCustomBlocks.length === 0) return false;
|
|
40
|
+
const drawings = (_documentDataModel$ge3 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : {};
|
|
41
|
+
const removeDrawingParamById = new Map(removeDrawings.map((drawing) => [drawing.drawingId, drawing]));
|
|
42
|
+
const removeDrawingSnapshots = removeCustomBlocks.map((block) => drawings[block.blockId]).filter((drawing) => drawing != null);
|
|
43
|
+
const resourceRedoMutations = [];
|
|
44
|
+
const resourceUndoMutations = [];
|
|
45
|
+
const resourceMutationGroups = [];
|
|
46
|
+
for (const block of removeCustomBlocks) {
|
|
47
|
+
var _removeDrawingParam$s;
|
|
48
|
+
const { blockId } = block;
|
|
49
|
+
const drawing = drawings[blockId];
|
|
50
|
+
if (drawing == null) continue;
|
|
51
|
+
const removeDrawingParam = removeDrawingParamById.get(blockId);
|
|
52
|
+
const mutationInfos = drawingAdapterService.getRemoveDrawingMutationInfos({
|
|
53
|
+
unitId,
|
|
54
|
+
subUnitId: (_removeDrawingParam$s = removeDrawingParam === null || removeDrawingParam === void 0 ? void 0 : removeDrawingParam.subUnitId) !== null && _removeDrawingParam$s !== void 0 ? _removeDrawingParam$s : unitId,
|
|
55
|
+
drawing,
|
|
56
|
+
removeDrawings: removeDrawingSnapshots
|
|
57
|
+
});
|
|
58
|
+
if (mutationInfos.redoMutations.length === 0 && mutationInfos.undoMutations.length === 0) continue;
|
|
59
|
+
resourceRedoMutations.push(...mutationInfos.redoMutations);
|
|
60
|
+
resourceUndoMutations.push(...mutationInfos.undoMutations);
|
|
61
|
+
resourceMutationGroups.push(mutationInfos);
|
|
62
|
+
}
|
|
63
|
+
if (!executeResourceMutationGroups(resourceMutationGroups, commandService)) return false;
|
|
64
|
+
const historyId = `doc-drawing-remove-resource:${unitId}:${removeCustomBlocks.map((block) => block.blockId).join(",")}`;
|
|
65
|
+
let batchingDisposable = null;
|
|
66
|
+
if (resourceRedoMutations.length > 0 || resourceUndoMutations.length > 0) {
|
|
67
|
+
batchingDisposable = undoRedoService.__tempBatchingUndoRedo(unitId);
|
|
68
|
+
undoRedoService.pushUndoRedo({
|
|
69
|
+
unitID: unitId,
|
|
70
|
+
redoMutations: resourceRedoMutations,
|
|
71
|
+
undoMutations: resourceUndoMutations,
|
|
72
|
+
id: historyId
|
|
73
|
+
});
|
|
74
|
+
}
|
|
37
75
|
const memoryCursor = new _univerjs_core.MemoryCursor();
|
|
38
76
|
memoryCursor.reset();
|
|
39
77
|
const cursorIndex = removeCustomBlocks[0].startIndex;
|
|
@@ -65,11 +103,9 @@ const RemoveDocDrawingCommand = {
|
|
|
65
103
|
const path = (0, _univerjs_core.getRichTextEditPath)(documentDataModel, segmentId);
|
|
66
104
|
rawActions.push(jsonX.editOp(textX.serialize(), path));
|
|
67
105
|
for (const block of removeCustomBlocks) {
|
|
68
|
-
var _documentDataModel$ge3;
|
|
69
106
|
const { blockId } = block;
|
|
70
|
-
const drawing = ((_documentDataModel$ge3 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : {})[blockId];
|
|
71
107
|
const drawingIndex = documentDataModel.getDrawingsOrder().indexOf(blockId);
|
|
72
|
-
const removeDrawingAction = jsonX.removeOp(["drawings", blockId],
|
|
108
|
+
const removeDrawingAction = jsonX.removeOp(["drawings", blockId], drawings[blockId]);
|
|
73
109
|
const removeDrawingOrderAction = jsonX.removeOp(["drawingsOrder", drawingIndex], blockId);
|
|
74
110
|
rawActions.push(removeDrawingAction);
|
|
75
111
|
rawActions.push(removeDrawingOrderAction);
|
|
@@ -78,9 +114,35 @@ const RemoveDocDrawingCommand = {
|
|
|
78
114
|
return _univerjs_core.JSONX.compose(acc, cur);
|
|
79
115
|
}, null);
|
|
80
116
|
const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
|
|
117
|
+
if (!result && batchingDisposable != null) {
|
|
118
|
+
batchingDisposable.dispose();
|
|
119
|
+
undoRedoService.rollback(historyId, unitId);
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
batchingDisposable === null || batchingDisposable === void 0 || batchingDisposable.dispose();
|
|
81
123
|
return Boolean(result);
|
|
82
124
|
}
|
|
83
125
|
};
|
|
126
|
+
function executeResourceMutationGroups(mutationGroups, commandService) {
|
|
127
|
+
const executedUndoGroups = [];
|
|
128
|
+
for (const mutationGroup of mutationGroups) {
|
|
129
|
+
if (!executeMutations(mutationGroup.redoMutations, commandService)) {
|
|
130
|
+
executeMutationGroups([...executedUndoGroups].reverse(), commandService);
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
executedUndoGroups.push(mutationGroup.undoMutations);
|
|
134
|
+
}
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
function executeMutationGroups(mutationGroups, commandService) {
|
|
138
|
+
mutationGroups.forEach((mutations) => {
|
|
139
|
+
executeMutations(mutations, commandService);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function executeMutations(mutations, commandService) {
|
|
143
|
+
for (const mutation of mutations) if (!commandService.syncExecuteCommand(mutation.id, mutation.params)) return false;
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
84
146
|
|
|
85
147
|
//#endregion
|
|
86
148
|
//#region src/commands/commands/delete-doc-drawing.command.ts
|
|
@@ -139,7 +201,8 @@ const InsertDocDrawingCommand = {
|
|
|
139
201
|
const documentDataModel = univerInstanceService.getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_DOC);
|
|
140
202
|
if (documentDataModel == null) return false;
|
|
141
203
|
const unitId = documentDataModel.getUnitId();
|
|
142
|
-
const
|
|
204
|
+
const explicitTextRange = params.textRange == null ? null : normalizeTextRange(params.textRange);
|
|
205
|
+
const contentInsertRange = explicitTextRange !== null && explicitTextRange !== void 0 ? explicitTextRange : getContentInsertRange(accessor, unitId);
|
|
143
206
|
const targetTextRange = contentInsertRange ? {
|
|
144
207
|
...activeTextRange,
|
|
145
208
|
startOffset: contentInsertRange.startOffset,
|
|
@@ -235,6 +298,16 @@ function getContentInsertRange(accessor, unitId) {
|
|
|
235
298
|
return null;
|
|
236
299
|
}
|
|
237
300
|
}
|
|
301
|
+
function normalizeTextRange(textRange) {
|
|
302
|
+
var _textRange$endOffset, _textRange$collapsed, _textRange$segmentId;
|
|
303
|
+
const endOffset = (_textRange$endOffset = textRange.endOffset) !== null && _textRange$endOffset !== void 0 ? _textRange$endOffset : textRange.startOffset;
|
|
304
|
+
return {
|
|
305
|
+
...textRange,
|
|
306
|
+
endOffset,
|
|
307
|
+
collapsed: (_textRange$collapsed = textRange.collapsed) !== null && _textRange$collapsed !== void 0 ? _textRange$collapsed : textRange.startOffset === endOffset,
|
|
308
|
+
segmentId: (_textRange$segmentId = textRange.segmentId) !== null && _textRange$segmentId !== void 0 ? _textRange$segmentId : ""
|
|
309
|
+
};
|
|
310
|
+
}
|
|
238
311
|
|
|
239
312
|
//#endregion
|
|
240
313
|
//#region src/commands/commands/set-drawing-arrange.command.ts
|
|
@@ -430,13 +503,13 @@ let DocDrawingUpdateRenderController = class DocDrawingUpdateRenderController ex
|
|
|
430
503
|
const type = error.message;
|
|
431
504
|
let content = "";
|
|
432
505
|
switch (type) {
|
|
433
|
-
case
|
|
506
|
+
case _univerjs_core.ImageUploadStatusType.ERROR_EXCEED_SIZE:
|
|
434
507
|
content = this._localeService.t("docs-drawing-ui.update-status.exceedMaxSize", String((0, _univerjs_drawing.getDrawingImageAllowSize)() / (1024 * 1024)));
|
|
435
508
|
break;
|
|
436
|
-
case
|
|
509
|
+
case _univerjs_core.ImageUploadStatusType.ERROR_IMAGE_TYPE:
|
|
437
510
|
content = this._localeService.t("docs-drawing-ui.update-status.invalidImageType");
|
|
438
511
|
break;
|
|
439
|
-
case
|
|
512
|
+
case _univerjs_core.ImageUploadStatusType.ERROR_IMAGE:
|
|
440
513
|
content = this._localeService.t("docs-drawing-ui.update-status.invalidImage");
|
|
441
514
|
break;
|
|
442
515
|
default: break;
|
|
@@ -666,7 +739,10 @@ let DocDrawingUpdateRenderController = class DocDrawingUpdateRenderController ex
|
|
|
666
739
|
});
|
|
667
740
|
}));
|
|
668
741
|
this.disposeWithMe(this._commandService.onCommandExecuted(async (command) => {
|
|
669
|
-
if (command.id
|
|
742
|
+
if (command.id !== _univerjs_docs.RichTextEditingMutation.id) return;
|
|
743
|
+
const params = command.params;
|
|
744
|
+
if ((params === null || params === void 0 ? void 0 : params.unitId) && params.unitId !== this._context.unitId) return;
|
|
745
|
+
queueMicrotask(() => {
|
|
670
746
|
this._updateDrawingsEditStatus();
|
|
671
747
|
});
|
|
672
748
|
}));
|
|
@@ -691,7 +767,7 @@ DocDrawingUpdateRenderController = __decorate([
|
|
|
691
767
|
__decorateParam(1, _univerjs_core.ICommandService),
|
|
692
768
|
__decorateParam(2, (0, _univerjs_core.Inject)(_univerjs_docs.DocSelectionManagerService)),
|
|
693
769
|
__decorateParam(3, _univerjs_engine_render.IRenderManagerService),
|
|
694
|
-
__decorateParam(4,
|
|
770
|
+
__decorateParam(4, _univerjs_core.IImageIoService),
|
|
695
771
|
__decorateParam(5, _univerjs_docs_drawing.IDocDrawingService),
|
|
696
772
|
__decorateParam(6, _univerjs_drawing.IDrawingManagerService),
|
|
697
773
|
__decorateParam(7, _univerjs_core.IContextService),
|
|
@@ -757,7 +833,7 @@ function createShapeInsertCommand(shape, width, height, id) {
|
|
|
757
833
|
subUnitId: unitId,
|
|
758
834
|
drawingId: (0, _univerjs_core.generateRandomId)(6),
|
|
759
835
|
drawingType: _univerjs_core.DrawingTypeEnum.DRAWING_IMAGE,
|
|
760
|
-
imageSourceType:
|
|
836
|
+
imageSourceType: _univerjs_core.ImageSourceType.BASE64,
|
|
761
837
|
source: createShapeSvgSource(shape, width, height),
|
|
762
838
|
transform: (0, _univerjs_docs_ui.docDrawingPositionToTransform)(docTransform),
|
|
763
839
|
docTransform,
|
|
@@ -1163,6 +1239,11 @@ const UpdateDrawingDocTransformCommand = {
|
|
|
1163
1239
|
return _univerjs_core.JSONX.compose(acc, cur);
|
|
1164
1240
|
}, null);
|
|
1165
1241
|
const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
|
|
1242
|
+
if (accessor.has(DocRefreshDrawingsService)) {
|
|
1243
|
+
var _renderObject$with$ge;
|
|
1244
|
+
const skeleton = (_renderObject$with$ge = renderObject === null || renderObject === void 0 ? void 0 : renderObject.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton()) !== null && _renderObject$with$ge !== void 0 ? _renderObject$with$ge : null;
|
|
1245
|
+
accessor.get(DocRefreshDrawingsService).refreshDrawings(skeleton);
|
|
1246
|
+
}
|
|
1166
1247
|
transformer.refreshControls();
|
|
1167
1248
|
return Boolean(result);
|
|
1168
1249
|
}
|
|
@@ -1465,6 +1546,30 @@ function calcDocFloatDomPosition(object, renderUnit) {
|
|
|
1465
1546
|
right: left + width
|
|
1466
1547
|
}, renderUnit.scene, opacity, angle);
|
|
1467
1548
|
}
|
|
1549
|
+
function mergeDocFloatDomRuntimeProps(existingProps, param) {
|
|
1550
|
+
const customBlockRenderViewport = pickValidCustomBlockRenderViewport(param.customBlockRenderViewport);
|
|
1551
|
+
if (!customBlockRenderViewport) return existingProps;
|
|
1552
|
+
return {
|
|
1553
|
+
...existingProps,
|
|
1554
|
+
customBlockRenderViewport
|
|
1555
|
+
};
|
|
1556
|
+
}
|
|
1557
|
+
function pickValidCustomBlockRenderViewport(viewport) {
|
|
1558
|
+
const result = {};
|
|
1559
|
+
if (isNonNegativeNumber(viewport === null || viewport === void 0 ? void 0 : viewport.bleedLeft)) result.bleedLeft = viewport.bleedLeft;
|
|
1560
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.bleedWidth)) result.bleedWidth = viewport.bleedWidth;
|
|
1561
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.contentHeight)) result.contentHeight = viewport.contentHeight;
|
|
1562
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.contentWidth)) result.contentWidth = viewport.contentWidth;
|
|
1563
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.height)) result.height = viewport.height;
|
|
1564
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.viewportHeight)) result.viewportHeight = viewport.viewportHeight;
|
|
1565
|
+
return Object.keys(result).length ? result : void 0;
|
|
1566
|
+
}
|
|
1567
|
+
function isPositiveNumber(value) {
|
|
1568
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
1569
|
+
}
|
|
1570
|
+
function isNonNegativeNumber(value) {
|
|
1571
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
1572
|
+
}
|
|
1468
1573
|
let DocFloatDomController = class DocFloatDomController extends _univerjs_core.Disposable {
|
|
1469
1574
|
constructor(_renderManagerService, _drawingManagerService, _drawingRenderService, _canvasFloatDomService, _univerInstanceService, _commandService) {
|
|
1470
1575
|
super();
|
|
@@ -1482,6 +1587,7 @@ let DocFloatDomController = class DocFloatDomController extends _univerjs_core.D
|
|
|
1482
1587
|
}
|
|
1483
1588
|
_initialize() {
|
|
1484
1589
|
this._drawingAddRemoveListener();
|
|
1590
|
+
this._drawingRuntimePropsListener();
|
|
1485
1591
|
this._initScrollAndZoomEvent();
|
|
1486
1592
|
}
|
|
1487
1593
|
_getSceneAndTransformerByDrawingSearch(unitId) {
|
|
@@ -1517,6 +1623,12 @@ let DocFloatDomController = class DocFloatDomController extends _univerjs_core.D
|
|
|
1517
1623
|
const rects = await this._drawingRenderService.renderFloatDom(rectParam, renderObject.scene);
|
|
1518
1624
|
if (rects == null || rects.length === 0) return;
|
|
1519
1625
|
for (const rect of rects) {
|
|
1626
|
+
var _renderObject$scene$g;
|
|
1627
|
+
const runtimeParam = rectParam;
|
|
1628
|
+
const runtimeViewport = pickValidCustomBlockRenderViewport(runtimeParam.customBlockRenderViewport);
|
|
1629
|
+
const preserveRuntimeGeometry = isEmbedFloatDomRuntimeParam(runtimeParam);
|
|
1630
|
+
syncRectWithRuntimeParam(rect, runtimeParam, runtimeViewport, void 0, preserveRuntimeGeometry);
|
|
1631
|
+
const runtimeTransform = runtimeViewport || preserveRuntimeGeometry ? createTransformFromRect(rect) : void 0;
|
|
1520
1632
|
this._addHoverForRect(rect);
|
|
1521
1633
|
const disposableCollection = new _univerjs_core.DisposableCollection();
|
|
1522
1634
|
const position$ = new rxjs.BehaviorSubject(calcDocFloatDomPosition(rect, renderObject.renderUnit));
|
|
@@ -1524,7 +1636,10 @@ let DocFloatDomController = class DocFloatDomController extends _univerjs_core.D
|
|
|
1524
1636
|
const data = rectParam.data;
|
|
1525
1637
|
const info = {
|
|
1526
1638
|
dispose: disposableCollection,
|
|
1639
|
+
preserveRuntimeGeometry,
|
|
1527
1640
|
rect,
|
|
1641
|
+
runtimeTransform,
|
|
1642
|
+
runtimeViewport,
|
|
1528
1643
|
position$,
|
|
1529
1644
|
unitId
|
|
1530
1645
|
};
|
|
@@ -1532,6 +1647,8 @@ let DocFloatDomController = class DocFloatDomController extends _univerjs_core.D
|
|
|
1532
1647
|
position$,
|
|
1533
1648
|
id: rectParam.drawingId,
|
|
1534
1649
|
componentKey: rectParam.componentKey,
|
|
1650
|
+
eventPassThrough: preserveRuntimeGeometry ? false : void 0,
|
|
1651
|
+
preserveOnFocusChange: preserveRuntimeGeometry,
|
|
1535
1652
|
onPointerDown: (evt) => {
|
|
1536
1653
|
canvas.dispatchEvent(new PointerEvent(evt.type, evt));
|
|
1537
1654
|
},
|
|
@@ -1545,20 +1662,42 @@ let DocFloatDomController = class DocFloatDomController extends _univerjs_core.D
|
|
|
1545
1662
|
canvas.dispatchEvent(new WheelEvent(evt.type, evt));
|
|
1546
1663
|
},
|
|
1547
1664
|
data,
|
|
1665
|
+
props: mergeDocFloatDomRuntimeProps(void 0, rectParam),
|
|
1548
1666
|
unitId
|
|
1549
1667
|
});
|
|
1550
1668
|
const listener = rect.onTransformChange$.subscribeEvent(() => {
|
|
1551
1669
|
const newPosition = calcDocFloatDomPosition(rect, renderObject.renderUnit);
|
|
1552
1670
|
position$.next(newPosition);
|
|
1553
1671
|
});
|
|
1672
|
+
const scrollListener = subscribeViewportScrollAfter((_renderObject$scene$g = renderObject.scene.getViewport(_univerjs_docs_ui.VIEWPORT_KEY.VIEW_MAIN)) === null || _renderObject$scene$g === void 0 ? void 0 : _renderObject$scene$g.onScrollAfter$, () => position$.next(calcDocFloatDomPosition(rect, renderObject.renderUnit)));
|
|
1554
1673
|
disposableCollection.add(() => {
|
|
1555
1674
|
this._canvasFloatDomService.removeFloatDom(rectParam.drawingId);
|
|
1556
1675
|
});
|
|
1557
1676
|
listener && disposableCollection.add(listener);
|
|
1677
|
+
scrollListener && disposableCollection.add(scrollListener);
|
|
1558
1678
|
this._domLayerInfoMap.set(rectParam.drawingId, info);
|
|
1559
1679
|
}
|
|
1560
1680
|
});
|
|
1561
1681
|
}
|
|
1682
|
+
_drawingRuntimePropsListener() {
|
|
1683
|
+
this.disposeWithMe(this._drawingManagerService.refreshTransform$.subscribe((params) => {
|
|
1684
|
+
params.forEach((param) => {
|
|
1685
|
+
var _this$_canvasFloatDom;
|
|
1686
|
+
const floatDomInfo = this._domLayerInfoMap.get(param.drawingId);
|
|
1687
|
+
if (!floatDomInfo) return;
|
|
1688
|
+
const runtimeParam = param;
|
|
1689
|
+
const runtimeViewport = pickValidCustomBlockRenderViewport(runtimeParam.customBlockRenderViewport);
|
|
1690
|
+
if (runtimeViewport) floatDomInfo.runtimeViewport = runtimeViewport;
|
|
1691
|
+
if (syncRectWithRuntimeParam(floatDomInfo.rect, runtimeParam, floatDomInfo.runtimeViewport, floatDomInfo.runtimeTransform, floatDomInfo.preserveRuntimeGeometry)) {
|
|
1692
|
+
if (runtimeViewport || floatDomInfo.preserveRuntimeGeometry) floatDomInfo.runtimeTransform = createTransformFromRect(floatDomInfo.rect);
|
|
1693
|
+
const renderObject = this._getSceneAndTransformerByDrawingSearch(floatDomInfo.unitId);
|
|
1694
|
+
if (renderObject) floatDomInfo.position$.next(calcDocFloatDomPosition(floatDomInfo.rect, renderObject.renderUnit));
|
|
1695
|
+
}
|
|
1696
|
+
const currentProps = (_this$_canvasFloatDom = this._canvasFloatDomService.domLayers.find(([id]) => id === param.drawingId)) === null || _this$_canvasFloatDom === void 0 ? void 0 : _this$_canvasFloatDom[1].props;
|
|
1697
|
+
this._canvasFloatDomService.updateFloatDom(param.drawingId, { props: mergeDocFloatDomRuntimeProps(currentProps, param) });
|
|
1698
|
+
});
|
|
1699
|
+
}));
|
|
1700
|
+
}
|
|
1562
1701
|
_addHoverForRect(o) {
|
|
1563
1702
|
this.disposeWithMe((0, _univerjs_core.toDisposable)(o.onPointerEnter$.subscribeEvent(() => {
|
|
1564
1703
|
o.cursor = _univerjs_engine_render.CURSOR_TYPE.GRAB;
|
|
@@ -1659,6 +1798,71 @@ DocFloatDomController = __decorate([
|
|
|
1659
1798
|
__decorateParam(4, _univerjs_core.IUniverInstanceService),
|
|
1660
1799
|
__decorateParam(5, _univerjs_core.ICommandService)
|
|
1661
1800
|
], DocFloatDomController);
|
|
1801
|
+
function syncRectWithRuntimeParam(rect, param, fallbackViewport, fallbackTransform, preserveRuntimeGeometry) {
|
|
1802
|
+
const transform = getRuntimeTransform(param, rect, fallbackViewport, fallbackTransform, preserveRuntimeGeometry);
|
|
1803
|
+
if (!transform) return false;
|
|
1804
|
+
rect.transformByState(transform);
|
|
1805
|
+
return true;
|
|
1806
|
+
}
|
|
1807
|
+
function getRuntimeTransform(param, rect, fallbackViewport, fallbackTransform, preserveRuntimeGeometry) {
|
|
1808
|
+
var _param$transform, _param$transforms, _param$customBlockRen, _runtimeViewport$heig2;
|
|
1809
|
+
const transform = (_param$transform = param.transform) !== null && _param$transform !== void 0 ? _param$transform : (_param$transforms = param.transforms) === null || _param$transforms === void 0 ? void 0 : _param$transforms[0];
|
|
1810
|
+
const runtimeViewport = (_param$customBlockRen = param.customBlockRenderViewport) !== null && _param$customBlockRen !== void 0 ? _param$customBlockRen : fallbackViewport;
|
|
1811
|
+
if (!param.customBlockRenderViewport && preserveRuntimeGeometry && fallbackTransform && transform) {
|
|
1812
|
+
var _fallbackTransform$wi, _fallbackTransform$he;
|
|
1813
|
+
return {
|
|
1814
|
+
...transform,
|
|
1815
|
+
width: (_fallbackTransform$wi = fallbackTransform.width) !== null && _fallbackTransform$wi !== void 0 ? _fallbackTransform$wi : transform.width,
|
|
1816
|
+
height: (_fallbackTransform$he = fallbackTransform.height) !== null && _fallbackTransform$he !== void 0 ? _fallbackTransform$he : transform.height
|
|
1817
|
+
};
|
|
1818
|
+
}
|
|
1819
|
+
if (!transform) {
|
|
1820
|
+
var _runtimeViewport$heig;
|
|
1821
|
+
const height = (_runtimeViewport$heig = runtimeViewport === null || runtimeViewport === void 0 ? void 0 : runtimeViewport.height) !== null && _runtimeViewport$heig !== void 0 ? _runtimeViewport$heig : runtimeViewport === null || runtimeViewport === void 0 ? void 0 : runtimeViewport.contentHeight;
|
|
1822
|
+
if (!isPositiveNumber(height)) return;
|
|
1823
|
+
return {
|
|
1824
|
+
left: rect.left,
|
|
1825
|
+
top: rect.top,
|
|
1826
|
+
width: rect.width,
|
|
1827
|
+
height,
|
|
1828
|
+
angle: rect.angle
|
|
1829
|
+
};
|
|
1830
|
+
}
|
|
1831
|
+
const height = (_runtimeViewport$heig2 = runtimeViewport === null || runtimeViewport === void 0 ? void 0 : runtimeViewport.height) !== null && _runtimeViewport$heig2 !== void 0 ? _runtimeViewport$heig2 : runtimeViewport === null || runtimeViewport === void 0 ? void 0 : runtimeViewport.contentHeight;
|
|
1832
|
+
if (!isPositiveNumber(height)) return transform;
|
|
1833
|
+
return {
|
|
1834
|
+
...transform,
|
|
1835
|
+
height
|
|
1836
|
+
};
|
|
1837
|
+
}
|
|
1838
|
+
function isEmbedFloatDomRuntimeParam(param) {
|
|
1839
|
+
const data = param.data;
|
|
1840
|
+
if (!data || typeof data !== "object") return false;
|
|
1841
|
+
const candidate = data;
|
|
1842
|
+
return candidate.version === 1 && typeof candidate.embedId === "string" && typeof candidate.hostAnchorId === "string";
|
|
1843
|
+
}
|
|
1844
|
+
function createTransformFromRect(rect) {
|
|
1845
|
+
return {
|
|
1846
|
+
angle: rect.angle,
|
|
1847
|
+
height: rect.height,
|
|
1848
|
+
left: rect.left,
|
|
1849
|
+
top: rect.top,
|
|
1850
|
+
width: rect.width
|
|
1851
|
+
};
|
|
1852
|
+
}
|
|
1853
|
+
function subscribeViewportScrollAfter(scrollEvent, callback) {
|
|
1854
|
+
if (!scrollEvent || typeof scrollEvent !== "object") return;
|
|
1855
|
+
const eventSubject = scrollEvent;
|
|
1856
|
+
if (typeof eventSubject.subscribeEvent === "function") return eventSubject.subscribeEvent(callback);
|
|
1857
|
+
const observable = scrollEvent;
|
|
1858
|
+
if (typeof observable.subscribe === "function") {
|
|
1859
|
+
const subscription = observable.subscribe(callback);
|
|
1860
|
+
return (0, _univerjs_core.toDisposable)(() => {
|
|
1861
|
+
var _subscription$unsubsc;
|
|
1862
|
+
return (_subscription$unsubsc = subscription.unsubscribe) === null || _subscription$unsubsc === void 0 ? void 0 : _subscription$unsubsc.call(subscription);
|
|
1863
|
+
});
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
1662
1866
|
|
|
1663
1867
|
//#endregion
|
|
1664
1868
|
//#region src/menu/image.menu.ts
|
|
@@ -1785,10 +1989,79 @@ function InsertEllipseShapeBelowMenuFactory(accessor) {
|
|
|
1785
1989
|
};
|
|
1786
1990
|
}
|
|
1787
1991
|
|
|
1992
|
+
//#endregion
|
|
1993
|
+
//#region src/menu/schema.ts
|
|
1994
|
+
const menuSchema = {
|
|
1995
|
+
[_univerjs_ui.RibbonInsertGroup.MEDIA]: { [DOCS_IMAGE_MENU_ID]: {
|
|
1996
|
+
order: 0,
|
|
1997
|
+
menuItemFactory: ImageMenuFactory,
|
|
1998
|
+
[IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
1999
|
+
order: 0,
|
|
2000
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2001
|
+
}
|
|
2002
|
+
} },
|
|
2003
|
+
[_univerjs_ui.ContextMenuPosition.PARAGRAPH]: {
|
|
2004
|
+
[_univerjs_ui.ContextMenuGroup.LAYOUT]: { [_univerjs_docs_ui.INSERT_BELLOW_MENU_ID]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
2005
|
+
order: 5,
|
|
2006
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2007
|
+
} } },
|
|
2008
|
+
[_univerjs_docs_ui.EMPTY_PARAGRAPH_MENU_ID]: { [_univerjs_ui.ContextMenuGroup.LAYOUT]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
2009
|
+
order: 5,
|
|
2010
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2011
|
+
} } },
|
|
2012
|
+
[_univerjs_docs_ui.DOC_CONTENT_INSERT_MENU_ID]: { [_univerjs_ui.ContextMenuGroup.LAYOUT]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
2013
|
+
order: 5,
|
|
2014
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2015
|
+
} } },
|
|
2016
|
+
[_univerjs_docs_ui.DOC_PARAGRAPH_T_INSERT_MENU_ID]: { insert: {
|
|
2017
|
+
[IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
2018
|
+
order: 1,
|
|
2019
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2020
|
+
},
|
|
2021
|
+
[DOCS_SHAPE_MENU_ID]: {
|
|
2022
|
+
order: 2,
|
|
2023
|
+
menuItemFactory: ShapeMenuFactory
|
|
2024
|
+
}
|
|
2025
|
+
} },
|
|
2026
|
+
[_univerjs_docs_ui.DOC_PARAGRAPH_T_INSERT_BELOW_MENU_ID]: { insert: {
|
|
2027
|
+
[`${IMAGE_MENU_UPLOAD_FLOAT_ID}.below`]: {
|
|
2028
|
+
order: 1,
|
|
2029
|
+
menuItemFactory: UploadFloatImageBelowMenuFactory
|
|
2030
|
+
},
|
|
2031
|
+
[DOCS_SHAPE_BELOW_MENU_ID]: {
|
|
2032
|
+
order: 2,
|
|
2033
|
+
menuItemFactory: ShapeBelowMenuFactory
|
|
2034
|
+
}
|
|
2035
|
+
} },
|
|
2036
|
+
[DOCS_SHAPE_MENU_ID]: { shapes: {
|
|
2037
|
+
order: 0,
|
|
2038
|
+
[InsertDocRectangleShapeCommand.id]: {
|
|
2039
|
+
order: 0,
|
|
2040
|
+
menuItemFactory: InsertRectangleShapeMenuFactory
|
|
2041
|
+
},
|
|
2042
|
+
[InsertDocEllipseShapeCommand.id]: {
|
|
2043
|
+
order: 1,
|
|
2044
|
+
menuItemFactory: InsertEllipseShapeMenuFactory
|
|
2045
|
+
}
|
|
2046
|
+
} },
|
|
2047
|
+
[DOCS_SHAPE_BELOW_MENU_ID]: { shapes: {
|
|
2048
|
+
order: 0,
|
|
2049
|
+
[`${InsertDocRectangleShapeCommand.id}.below`]: {
|
|
2050
|
+
order: 0,
|
|
2051
|
+
menuItemFactory: InsertRectangleShapeBelowMenuFactory
|
|
2052
|
+
},
|
|
2053
|
+
[`${InsertDocEllipseShapeCommand.id}.below`]: {
|
|
2054
|
+
order: 1,
|
|
2055
|
+
menuItemFactory: InsertEllipseShapeBelowMenuFactory
|
|
2056
|
+
}
|
|
2057
|
+
} }
|
|
2058
|
+
}
|
|
2059
|
+
};
|
|
2060
|
+
|
|
1788
2061
|
//#endregion
|
|
1789
2062
|
//#region package.json
|
|
1790
2063
|
var name = "@univerjs/docs-drawing-ui";
|
|
1791
|
-
var version = "1.0.0-alpha.
|
|
2064
|
+
var version = "1.0.0-alpha.3";
|
|
1792
2065
|
|
|
1793
2066
|
//#endregion
|
|
1794
2067
|
//#region src/config/config.ts
|
|
@@ -2451,6 +2724,24 @@ function getReOrderedDrawings(actions) {
|
|
|
2451
2724
|
}
|
|
2452
2725
|
return drawingIndexes;
|
|
2453
2726
|
}
|
|
2727
|
+
function collectUpdatedDrawingIds(actions, drawingIds = /* @__PURE__ */ new Set()) {
|
|
2728
|
+
if (_univerjs_core.JSONX.isNoop(actions) || !Array.isArray(actions)) return drawingIds;
|
|
2729
|
+
if (actions[0] === "drawings") {
|
|
2730
|
+
const drawingKeyOrOps = actions[1];
|
|
2731
|
+
if (typeof drawingKeyOrOps === "string") {
|
|
2732
|
+
drawingIds.add(drawingKeyOrOps);
|
|
2733
|
+
return drawingIds;
|
|
2734
|
+
}
|
|
2735
|
+
actions.slice(1).forEach((action) => {
|
|
2736
|
+
if (Array.isArray(action) && typeof action[0] === "string") drawingIds.add(action[0]);
|
|
2737
|
+
});
|
|
2738
|
+
return drawingIds;
|
|
2739
|
+
}
|
|
2740
|
+
actions.forEach((action) => {
|
|
2741
|
+
if (Array.isArray(action)) collectUpdatedDrawingIds(action, drawingIds);
|
|
2742
|
+
});
|
|
2743
|
+
return drawingIds;
|
|
2744
|
+
}
|
|
2454
2745
|
let DocDrawingAddRemoveController = class DocDrawingAddRemoveController extends _univerjs_core.Disposable {
|
|
2455
2746
|
constructor(_univerInstanceService, _commandService, _drawingManagerService, _docDrawingService, _renderManagerService) {
|
|
2456
2747
|
super();
|
|
@@ -2479,6 +2770,8 @@ let DocDrawingAddRemoveController = class DocDrawingAddRemoveController extends
|
|
|
2479
2770
|
if (command.id !== _univerjs_docs.RichTextEditingMutation.id) return;
|
|
2480
2771
|
const { unitId, actions } = command.params;
|
|
2481
2772
|
if (getReOrderedDrawings(actions).length > 0) this._updateDrawingsOrder(unitId);
|
|
2773
|
+
const updatedDrawingIds = [...collectUpdatedDrawingIds(actions)];
|
|
2774
|
+
if (updatedDrawingIds.length > 0) this._syncDrawingDataFromSnapshot(unitId, updatedDrawingIds);
|
|
2482
2775
|
}));
|
|
2483
2776
|
this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
|
|
2484
2777
|
var _this$_univerInstance;
|
|
@@ -2538,6 +2831,25 @@ let DocDrawingAddRemoveController = class DocDrawingAddRemoveController extends
|
|
|
2538
2831
|
drawingIds: drawingsOrder
|
|
2539
2832
|
});
|
|
2540
2833
|
}
|
|
2834
|
+
_syncDrawingDataFromSnapshot(unitId, drawingIds) {
|
|
2835
|
+
const documentDataModel = this._univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
|
|
2836
|
+
if (documentDataModel == null) return;
|
|
2837
|
+
const { drawings = {}, drawingsOrder = [] } = documentDataModel.getSnapshot();
|
|
2838
|
+
const drawingData = drawings;
|
|
2839
|
+
const renderOrder = (0, _univerjs_docs_drawing.getDocDrawingRenderOrder)(drawingsOrder, drawings);
|
|
2840
|
+
this._docDrawingService.setDrawingData(unitId, unitId, drawingData);
|
|
2841
|
+
this._drawingManagerService.setDrawingData(unitId, unitId, drawingData);
|
|
2842
|
+
this._docDrawingService.setDrawingOrder(unitId, unitId, drawingsOrder);
|
|
2843
|
+
this._drawingManagerService.setDrawingOrder(unitId, unitId, renderOrder);
|
|
2844
|
+
const objects = drawingIds.filter((drawingId) => drawingData[drawingId] != null).map((drawingId) => ({
|
|
2845
|
+
unitId,
|
|
2846
|
+
subUnitId: unitId,
|
|
2847
|
+
drawingId
|
|
2848
|
+
}));
|
|
2849
|
+
if (objects.length === 0) return;
|
|
2850
|
+
this._docDrawingService.updateNotification(objects);
|
|
2851
|
+
this._drawingManagerService.updateNotification(objects);
|
|
2852
|
+
}
|
|
2541
2853
|
};
|
|
2542
2854
|
DocDrawingAddRemoveController = __decorate([
|
|
2543
2855
|
__decorateParam(0, _univerjs_core.IUniverInstanceService),
|
|
@@ -2928,6 +3240,7 @@ let DocDrawingTransformUpdateController = class DocDrawingTransformUpdateControl
|
|
|
2928
3240
|
behindText,
|
|
2929
3241
|
transform,
|
|
2930
3242
|
transforms: [transform],
|
|
3243
|
+
customBlockRenderViewport: drawing.customBlockRenderViewport,
|
|
2931
3244
|
isMultiTransform
|
|
2932
3245
|
};
|
|
2933
3246
|
else if (isMultiTransform === _univerjs_core.BooleanNumber.TRUE) updateDrawingMap[drawingId].transforms.push(transform);
|
|
@@ -3521,75 +3834,6 @@ DocDrawingTransformerController = __decorate([
|
|
|
3521
3834
|
__decorateParam(3, _univerjs_engine_render.IRenderManagerService)
|
|
3522
3835
|
], DocDrawingTransformerController);
|
|
3523
3836
|
|
|
3524
|
-
//#endregion
|
|
3525
|
-
//#region src/menu/schema.ts
|
|
3526
|
-
const menuSchema = {
|
|
3527
|
-
[_univerjs_ui.RibbonInsertGroup.MEDIA]: { [DOCS_IMAGE_MENU_ID]: {
|
|
3528
|
-
order: 0,
|
|
3529
|
-
menuItemFactory: ImageMenuFactory,
|
|
3530
|
-
[IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3531
|
-
order: 0,
|
|
3532
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3533
|
-
}
|
|
3534
|
-
} },
|
|
3535
|
-
[_univerjs_ui.ContextMenuPosition.PARAGRAPH]: {
|
|
3536
|
-
[_univerjs_ui.ContextMenuGroup.LAYOUT]: { [_univerjs_docs_ui.INSERT_BELLOW_MENU_ID]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3537
|
-
order: 5,
|
|
3538
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3539
|
-
} } },
|
|
3540
|
-
[_univerjs_docs_ui.EMPTY_PARAGRAPH_MENU_ID]: { [_univerjs_ui.ContextMenuGroup.LAYOUT]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3541
|
-
order: 5,
|
|
3542
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3543
|
-
} } },
|
|
3544
|
-
[_univerjs_docs_ui.DOC_CONTENT_INSERT_MENU_ID]: { [_univerjs_ui.ContextMenuGroup.LAYOUT]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3545
|
-
order: 5,
|
|
3546
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3547
|
-
} } },
|
|
3548
|
-
[_univerjs_docs_ui.DOC_PARAGRAPH_T_INSERT_MENU_ID]: { insert: {
|
|
3549
|
-
[IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3550
|
-
order: 1,
|
|
3551
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3552
|
-
},
|
|
3553
|
-
[DOCS_SHAPE_MENU_ID]: {
|
|
3554
|
-
order: 2,
|
|
3555
|
-
menuItemFactory: ShapeMenuFactory
|
|
3556
|
-
}
|
|
3557
|
-
} },
|
|
3558
|
-
[_univerjs_docs_ui.DOC_PARAGRAPH_T_INSERT_BELOW_MENU_ID]: { insert: {
|
|
3559
|
-
[`${IMAGE_MENU_UPLOAD_FLOAT_ID}.below`]: {
|
|
3560
|
-
order: 1,
|
|
3561
|
-
menuItemFactory: UploadFloatImageBelowMenuFactory
|
|
3562
|
-
},
|
|
3563
|
-
[DOCS_SHAPE_BELOW_MENU_ID]: {
|
|
3564
|
-
order: 2,
|
|
3565
|
-
menuItemFactory: ShapeBelowMenuFactory
|
|
3566
|
-
}
|
|
3567
|
-
} },
|
|
3568
|
-
[DOCS_SHAPE_MENU_ID]: { shapes: {
|
|
3569
|
-
order: 0,
|
|
3570
|
-
[InsertDocRectangleShapeCommand.id]: {
|
|
3571
|
-
order: 0,
|
|
3572
|
-
menuItemFactory: InsertRectangleShapeMenuFactory
|
|
3573
|
-
},
|
|
3574
|
-
[InsertDocEllipseShapeCommand.id]: {
|
|
3575
|
-
order: 1,
|
|
3576
|
-
menuItemFactory: InsertEllipseShapeMenuFactory
|
|
3577
|
-
}
|
|
3578
|
-
} },
|
|
3579
|
-
[DOCS_SHAPE_BELOW_MENU_ID]: { shapes: {
|
|
3580
|
-
order: 0,
|
|
3581
|
-
[`${InsertDocRectangleShapeCommand.id}.below`]: {
|
|
3582
|
-
order: 0,
|
|
3583
|
-
menuItemFactory: InsertRectangleShapeBelowMenuFactory
|
|
3584
|
-
},
|
|
3585
|
-
[`${InsertDocEllipseShapeCommand.id}.below`]: {
|
|
3586
|
-
order: 1,
|
|
3587
|
-
menuItemFactory: InsertEllipseShapeBelowMenuFactory
|
|
3588
|
-
}
|
|
3589
|
-
} }
|
|
3590
|
-
}
|
|
3591
|
-
};
|
|
3592
|
-
|
|
3593
3837
|
//#endregion
|
|
3594
3838
|
//#region src/controllers/shortcuts/drawing.shortcut.ts
|
|
3595
3839
|
function whenDocDrawingFocused(contextService) {
|
|
@@ -3721,16 +3965,40 @@ DocDrawingUIController = __decorate([
|
|
|
3721
3965
|
__decorateParam(2, _univerjs_ui.IShortcutService)
|
|
3722
3966
|
], DocDrawingUIController);
|
|
3723
3967
|
|
|
3968
|
+
//#endregion
|
|
3969
|
+
//#region src/services/doc-drawing-floating-toolbar-adapter.service.ts
|
|
3970
|
+
var DocDrawingFloatingToolbarAdapterService = class {
|
|
3971
|
+
constructor() {
|
|
3972
|
+
_defineProperty(this, "_adapters", []);
|
|
3973
|
+
}
|
|
3974
|
+
registerAdapter(adapter) {
|
|
3975
|
+
this._adapters.push(adapter);
|
|
3976
|
+
return (0, _univerjs_core.toDisposable)(() => {
|
|
3977
|
+
const index = this._adapters.indexOf(adapter);
|
|
3978
|
+
if (index >= 0) this._adapters.splice(index, 1);
|
|
3979
|
+
});
|
|
3980
|
+
}
|
|
3981
|
+
getItems(params) {
|
|
3982
|
+
for (const adapter of this._adapters) {
|
|
3983
|
+
const items = adapter.getItems(params);
|
|
3984
|
+
if (items) return [...items].sort((a, b) => a.index - b.index);
|
|
3985
|
+
}
|
|
3986
|
+
return null;
|
|
3987
|
+
}
|
|
3988
|
+
};
|
|
3989
|
+
|
|
3724
3990
|
//#endregion
|
|
3725
3991
|
//#region src/menu/drawing-popup-menu.controller.ts
|
|
3726
3992
|
let DocDrawingPopupMenuController = class DocDrawingPopupMenuController extends _univerjs_core.RxDisposable {
|
|
3727
|
-
constructor(_drawingManagerService, _canvasPopManagerService, _renderManagerService, _univerInstanceService, _contextService, _commandService) {
|
|
3993
|
+
constructor(_drawingManagerService, _canvasPopManagerService, _renderManagerService, _univerInstanceService, _contextService, _drawingAdapterService, _floatingToolbarAdapterService, _commandService) {
|
|
3728
3994
|
super();
|
|
3729
3995
|
this._drawingManagerService = _drawingManagerService;
|
|
3730
3996
|
this._canvasPopManagerService = _canvasPopManagerService;
|
|
3731
3997
|
this._renderManagerService = _renderManagerService;
|
|
3732
3998
|
this._univerInstanceService = _univerInstanceService;
|
|
3733
3999
|
this._contextService = _contextService;
|
|
4000
|
+
this._drawingAdapterService = _drawingAdapterService;
|
|
4001
|
+
this._floatingToolbarAdapterService = _floatingToolbarAdapterService;
|
|
3734
4002
|
this._commandService = _commandService;
|
|
3735
4003
|
_defineProperty(this, "_initImagePopupMenu", /* @__PURE__ */ new Set());
|
|
3736
4004
|
_defineProperty(this, "_disposePopups", []);
|
|
@@ -3800,13 +4068,14 @@ let DocDrawingPopupMenuController = class DocDrawingPopupMenuController extends
|
|
|
3800
4068
|
if (!drawingParam || drawingParam.drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_DOM || drawingParam.drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_SHAPE) return;
|
|
3801
4069
|
const { unitId, subUnitId, drawingId, drawingType } = drawingParam;
|
|
3802
4070
|
const isImage = drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_IMAGE;
|
|
4071
|
+
const isChart = drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_CHART;
|
|
3803
4072
|
const popup = this._canvasPopManagerService.attachPopupToObject(object, {
|
|
3804
4073
|
componentKey: _univerjs_drawing_ui.COMPONENT_IMAGE_POPUP_MENU,
|
|
3805
|
-
direction: isImage ? "top-center" : "horizontal",
|
|
3806
|
-
offset: isImage ? [0, 8] : [2, 0],
|
|
4074
|
+
direction: isImage || isChart ? "top-center" : "horizontal",
|
|
4075
|
+
offset: isImage || isChart ? [0, 8] : [2, 0],
|
|
3807
4076
|
extraProps: {
|
|
3808
|
-
menuItems: this.
|
|
3809
|
-
variant: isImage ? "doc-floating-toolbar" : void 0,
|
|
4077
|
+
menuItems: this._getDrawingPopupMenuItems(unitId, subUnitId, drawingId, drawingType),
|
|
4078
|
+
variant: isImage ? "doc-floating-toolbar" : isChart ? "doc-chart-floating-toolbar" : void 0,
|
|
3810
4079
|
unitId,
|
|
3811
4080
|
subUnitId,
|
|
3812
4081
|
drawingId
|
|
@@ -3835,18 +4104,35 @@ let DocDrawingPopupMenuController = class DocDrawingPopupMenuController extends
|
|
|
3835
4104
|
disposePopups.length = 0;
|
|
3836
4105
|
}));
|
|
3837
4106
|
}
|
|
3838
|
-
|
|
4107
|
+
_getDrawingPopupMenuItems(unitId, subUnitId, drawingId, drawingType) {
|
|
4108
|
+
var _editCommandInfo$labe, _editCommandInfo$comm, _editCommandInfo$comm2, _editCommandInfo$disa;
|
|
4109
|
+
const drawing = this._drawingManagerService.getDrawingByParam({
|
|
4110
|
+
unitId,
|
|
4111
|
+
subUnitId,
|
|
4112
|
+
drawingId
|
|
4113
|
+
});
|
|
4114
|
+
const floatingToolbarMenuItems = drawing ? this._floatingToolbarAdapterService.getItems({
|
|
4115
|
+
unitId,
|
|
4116
|
+
subUnitId,
|
|
4117
|
+
drawing
|
|
4118
|
+
}) : null;
|
|
4119
|
+
if (floatingToolbarMenuItems) return floatingToolbarMenuItems;
|
|
4120
|
+
const editCommandInfo = drawing ? this._drawingAdapterService.getEditDrawingCommandInfo({
|
|
4121
|
+
unitId,
|
|
4122
|
+
subUnitId,
|
|
4123
|
+
drawing
|
|
4124
|
+
}) : null;
|
|
3839
4125
|
return [
|
|
3840
4126
|
{
|
|
3841
|
-
label: "docs-drawing-ui.image-popup.edit",
|
|
4127
|
+
label: (_editCommandInfo$labe = editCommandInfo === null || editCommandInfo === void 0 ? void 0 : editCommandInfo.label) !== null && _editCommandInfo$labe !== void 0 ? _editCommandInfo$labe : "docs-drawing-ui.image-popup.edit",
|
|
3842
4128
|
index: 0,
|
|
3843
|
-
commandId: EditDocDrawingOperation.id,
|
|
3844
|
-
commandParams: {
|
|
4129
|
+
commandId: (_editCommandInfo$comm = editCommandInfo === null || editCommandInfo === void 0 ? void 0 : editCommandInfo.commandId) !== null && _editCommandInfo$comm !== void 0 ? _editCommandInfo$comm : EditDocDrawingOperation.id,
|
|
4130
|
+
commandParams: (_editCommandInfo$comm2 = editCommandInfo === null || editCommandInfo === void 0 ? void 0 : editCommandInfo.commandParams) !== null && _editCommandInfo$comm2 !== void 0 ? _editCommandInfo$comm2 : {
|
|
3845
4131
|
unitId,
|
|
3846
4132
|
subUnitId,
|
|
3847
4133
|
drawingId
|
|
3848
4134
|
},
|
|
3849
|
-
disable: drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_DOM
|
|
4135
|
+
disable: (_editCommandInfo$disa = editCommandInfo === null || editCommandInfo === void 0 ? void 0 : editCommandInfo.disable) !== null && _editCommandInfo$disa !== void 0 ? _editCommandInfo$disa : drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_DOM
|
|
3850
4136
|
},
|
|
3851
4137
|
{
|
|
3852
4138
|
label: "docs-drawing-ui.image-popup.delete",
|
|
@@ -3893,7 +4179,9 @@ DocDrawingPopupMenuController = __decorate([
|
|
|
3893
4179
|
__decorateParam(2, _univerjs_engine_render.IRenderManagerService),
|
|
3894
4180
|
__decorateParam(3, _univerjs_core.IUniverInstanceService),
|
|
3895
4181
|
__decorateParam(4, _univerjs_core.IContextService),
|
|
3896
|
-
__decorateParam(5,
|
|
4182
|
+
__decorateParam(5, _univerjs_docs_drawing.IDocDrawingAdapterService),
|
|
4183
|
+
__decorateParam(6, (0, _univerjs_core.Inject)(DocDrawingFloatingToolbarAdapterService)),
|
|
4184
|
+
__decorateParam(7, _univerjs_core.ICommandService)
|
|
3897
4185
|
], DocDrawingPopupMenuController);
|
|
3898
4186
|
|
|
3899
4187
|
//#endregion
|
|
@@ -3916,6 +4204,7 @@ let UniverDocsDrawingUIPlugin = class UniverDocsDrawingUIPlugin extends _univerj
|
|
|
3916
4204
|
[DocDrawingTransformerController],
|
|
3917
4205
|
[DocDrawingAddRemoveController],
|
|
3918
4206
|
[DocRefreshDrawingsService],
|
|
4207
|
+
[DocDrawingFloatingToolbarAdapterService],
|
|
3919
4208
|
[DocFloatDomController],
|
|
3920
4209
|
[DocDrawingPrintingController]
|
|
3921
4210
|
].forEach((dependency) => this._injector.add(dependency));
|
|
@@ -3950,6 +4239,7 @@ exports.DOCS_IMAGE_MENU_ID = DOCS_IMAGE_MENU_ID;
|
|
|
3950
4239
|
exports.DOCS_SHAPE_BELOW_MENU_ID = DOCS_SHAPE_BELOW_MENU_ID;
|
|
3951
4240
|
exports.DOCS_SHAPE_MENU_ID = DOCS_SHAPE_MENU_ID;
|
|
3952
4241
|
exports.DeleteDocDrawingsCommand = DeleteDocDrawingsCommand;
|
|
4242
|
+
exports.DocDrawingFloatingToolbarAdapterService = DocDrawingFloatingToolbarAdapterService;
|
|
3953
4243
|
exports.DocDrawingPosition = DocDrawingPosition;
|
|
3954
4244
|
exports.DocDrawingTextWrap = DocDrawingTextWrap;
|
|
3955
4245
|
Object.defineProperty(exports, 'DocFloatDomController', {
|
|
@@ -3958,6 +4248,7 @@ Object.defineProperty(exports, 'DocFloatDomController', {
|
|
|
3958
4248
|
return DocFloatDomController;
|
|
3959
4249
|
}
|
|
3960
4250
|
});
|
|
4251
|
+
exports.DocsDrawingUIMenuSchema = menuSchema;
|
|
3961
4252
|
exports.EditDocDrawingOperation = EditDocDrawingOperation;
|
|
3962
4253
|
exports.GroupDocDrawingCommand = GroupDocDrawingCommand;
|
|
3963
4254
|
exports.InsertDocDrawingCommand = InsertDocDrawingCommand;
|
|
@@ -3974,4 +4265,5 @@ Object.defineProperty(exports, 'UniverDocsDrawingUIPlugin', {
|
|
|
3974
4265
|
get: function () {
|
|
3975
4266
|
return UniverDocsDrawingUIPlugin;
|
|
3976
4267
|
}
|
|
3977
|
-
});
|
|
4268
|
+
});
|
|
4269
|
+
exports.UpdateDrawingDocTransformCommand = UpdateDrawingDocTransformCommand;
|