@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/es/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { AlignTypeH, AlignTypeV, ArrangeTypeEnum, BooleanNumber, BuildTextUtils, COLORS, CommandType, DOC_DRAWING_PRINTING_COMPONENT_KEY, DependentOn, Direction, Disposable, DisposableCollection, DocumentFlavor, DrawingTypeEnum, FOCUSING_COMMON_DRAWINGS, FOCUSING_DOC, FOCUSING_UNIVER_EDITOR, ICommandService, IConfigService, IContextService, IUniverInstanceService, Inject, Injector, JSONX, LifecycleService, LifecycleStages, LocaleService, MemoryCursor, ObjectRelativeFromH, ObjectRelativeFromV, Plugin, PositionedObjectLayoutType, RedoCommand, RxDisposable, TextX, TextXActionType, Tools, UndoCommand, UniverInstanceType, WrapTextType, fromEventSubject, generateRandomId, getRichTextEditPath, isInternalEditorID, merge, throttle, toDisposable } from "@univerjs/core";
|
|
2
|
-
import { IDocDrawingService, UniverDocsDrawingPlugin, getDocDrawingRenderOrder } from "@univerjs/docs-drawing";
|
|
1
|
+
import { AlignTypeH, AlignTypeV, ArrangeTypeEnum, BooleanNumber, BuildTextUtils, COLORS, CommandType, DOC_DRAWING_PRINTING_COMPONENT_KEY, DependentOn, Direction, Disposable, DisposableCollection, DocumentFlavor, DrawingTypeEnum, FOCUSING_COMMON_DRAWINGS, FOCUSING_DOC, FOCUSING_UNIVER_EDITOR, ICommandService, IConfigService, IContextService, IImageIoService, IUndoRedoService, IUniverInstanceService, ImageSourceType, ImageUploadStatusType, Inject, Injector, JSONX, LifecycleService, LifecycleStages, LocaleService, MemoryCursor, ObjectRelativeFromH, ObjectRelativeFromV, Plugin, PositionedObjectLayoutType, RedoCommand, RxDisposable, TextX, TextXActionType, Tools, UndoCommand, UniverInstanceType, WrapTextType, fromEventSubject, generateRandomId, getRichTextEditPath, isInternalEditorID, merge, throttle, toDisposable } from "@univerjs/core";
|
|
2
|
+
import { IDocDrawingAdapterService, IDocDrawingService, UniverDocsDrawingPlugin, getDocDrawingRenderOrder } from "@univerjs/docs-drawing";
|
|
3
3
|
import { DocContentInsertService, DocSelectionManagerService, DocSkeletonManagerService, RichTextEditingMutation } from "@univerjs/docs";
|
|
4
4
|
import { DOC_CONTENT_INSERT_MENU_ID, DOC_PARAGRAPH_T_INSERT_BELOW_MENU_ID, DOC_PARAGRAPH_T_INSERT_MENU_ID, DocCanvasPopManagerService, DocPrintInterceptorService, DocSelectionRenderService, EMPTY_PARAGRAPH_MENU_ID, IEditorService, INSERT_BELLOW_MENU_ID, NodePositionConvertToCursor, SetDocZoomRatioOperation, TEXT_RANGE_LAYER_INDEX, VIEWPORT_KEY, docDrawingPositionToTransform, getAnchorBounding, getCustomBlockIdsInSelections, getDocObject, getOneTextSelectionRange } from "@univerjs/docs-ui";
|
|
5
5
|
import { CURSOR_TYPE, DocumentEditArea, DocumentSkeletonPageType, IRenderManagerService, Liquid, PageLayoutType, Rect, TRANSFORM_CHANGE_OBSERVABLE_TYPE, Vector2, getColor, getCurrentTypeOfRenderer, getDocsTableRenderViewport, getTableIdAndSliceIndex } from "@univerjs/engine-render";
|
|
6
6
|
import { Checkbox, InputNumber, MessageType, Radio, RadioGroup, Select, clsx, render, unmount } from "@univerjs/design";
|
|
7
|
-
import { DRAWING_IMAGE_ALLOW_IMAGE_LIST, DRAWING_IMAGE_COUNT_LIMIT, DRAWING_IMAGE_HEIGHT_LIMIT, DRAWING_IMAGE_WIDTH_LIMIT, IDrawingManagerService,
|
|
7
|
+
import { DRAWING_IMAGE_ALLOW_IMAGE_LIST, DRAWING_IMAGE_COUNT_LIMIT, DRAWING_IMAGE_HEIGHT_LIMIT, DRAWING_IMAGE_WIDTH_LIMIT, IDrawingManagerService, UniverDrawingPlugin, getDrawingImageAllowSize, getDrawingShapeKeyByDrawingSearch, getImageSize } from "@univerjs/drawing";
|
|
8
8
|
import { CanvasFloatDomService, ComponentManager, ContextMenuGroup, ContextMenuPosition, ILocalFileService, IMenuManagerService, IMessageService, IShortcutService, ISidebarService, KeyCode, MenuItemType, PrintFloatDomSingle, RibbonInsertGroup, UniverUIPlugin, connectInjector, getMenuHiddenObservable, useDependency } from "@univerjs/ui";
|
|
9
9
|
import { BehaviorSubject, Observable, debounceTime, filter, map, of, switchMap, takeUntil } from "rxjs";
|
|
10
10
|
import { COMPONENT_IMAGE_POPUP_MENU, DrawingCommonPanel, DrawingRenderService, ImageCropperObject, ImageResetSizeOperation, OpenImageCropOperation, UniverDrawingUIPlugin } from "@univerjs/drawing-ui";
|
|
@@ -19,8 +19,10 @@ const RemoveDocDrawingCommand = {
|
|
|
19
19
|
id: "doc.command.remove-doc-image",
|
|
20
20
|
type: CommandType.COMMAND,
|
|
21
21
|
handler: (accessor, params) => {
|
|
22
|
-
var _docSelectionRenderSe, _documentDataModel$ge, _documentDataModel$ge2;
|
|
22
|
+
var _docSelectionRenderSe, _documentDataModel$ge, _documentDataModel$ge2, _removeDrawings$, _documentDataModel$ge3;
|
|
23
23
|
const commandService = accessor.get(ICommandService);
|
|
24
|
+
const undoRedoService = accessor.get(IUndoRedoService);
|
|
25
|
+
const drawingAdapterService = accessor.get(IDocDrawingAdapterService);
|
|
24
26
|
const univerInstanceService = accessor.get(IUniverInstanceService);
|
|
25
27
|
const renderManagerService = accessor.get(IRenderManagerService);
|
|
26
28
|
const documentDataModel = univerInstanceService.getCurrentUnitOfType(UniverInstanceType.UNIVER_DOC);
|
|
@@ -32,7 +34,43 @@ const RemoveDocDrawingCommand = {
|
|
|
32
34
|
const jsonX = JSONX.getInstance();
|
|
33
35
|
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 : [];
|
|
34
36
|
const removeCustomBlocks = removeDrawings.map((drawing) => customBlocks.find((customBlock) => customBlock.blockId === drawing.drawingId)).filter((block) => !!block).sort((a, b) => a.startIndex > b.startIndex ? 1 : -1);
|
|
35
|
-
const unitId = removeDrawings[0]
|
|
37
|
+
const unitId = (_removeDrawings$ = removeDrawings[0]) === null || _removeDrawings$ === void 0 ? void 0 : _removeDrawings$.unitId;
|
|
38
|
+
if (unitId == null || removeCustomBlocks.length === 0) return false;
|
|
39
|
+
const drawings = (_documentDataModel$ge3 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : {};
|
|
40
|
+
const removeDrawingParamById = new Map(removeDrawings.map((drawing) => [drawing.drawingId, drawing]));
|
|
41
|
+
const removeDrawingSnapshots = removeCustomBlocks.map((block) => drawings[block.blockId]).filter((drawing) => drawing != null);
|
|
42
|
+
const resourceRedoMutations = [];
|
|
43
|
+
const resourceUndoMutations = [];
|
|
44
|
+
const resourceMutationGroups = [];
|
|
45
|
+
for (const block of removeCustomBlocks) {
|
|
46
|
+
var _removeDrawingParam$s;
|
|
47
|
+
const { blockId } = block;
|
|
48
|
+
const drawing = drawings[blockId];
|
|
49
|
+
if (drawing == null) continue;
|
|
50
|
+
const removeDrawingParam = removeDrawingParamById.get(blockId);
|
|
51
|
+
const mutationInfos = drawingAdapterService.getRemoveDrawingMutationInfos({
|
|
52
|
+
unitId,
|
|
53
|
+
subUnitId: (_removeDrawingParam$s = removeDrawingParam === null || removeDrawingParam === void 0 ? void 0 : removeDrawingParam.subUnitId) !== null && _removeDrawingParam$s !== void 0 ? _removeDrawingParam$s : unitId,
|
|
54
|
+
drawing,
|
|
55
|
+
removeDrawings: removeDrawingSnapshots
|
|
56
|
+
});
|
|
57
|
+
if (mutationInfos.redoMutations.length === 0 && mutationInfos.undoMutations.length === 0) continue;
|
|
58
|
+
resourceRedoMutations.push(...mutationInfos.redoMutations);
|
|
59
|
+
resourceUndoMutations.push(...mutationInfos.undoMutations);
|
|
60
|
+
resourceMutationGroups.push(mutationInfos);
|
|
61
|
+
}
|
|
62
|
+
if (!executeResourceMutationGroups(resourceMutationGroups, commandService)) return false;
|
|
63
|
+
const historyId = `doc-drawing-remove-resource:${unitId}:${removeCustomBlocks.map((block) => block.blockId).join(",")}`;
|
|
64
|
+
let batchingDisposable = null;
|
|
65
|
+
if (resourceRedoMutations.length > 0 || resourceUndoMutations.length > 0) {
|
|
66
|
+
batchingDisposable = undoRedoService.__tempBatchingUndoRedo(unitId);
|
|
67
|
+
undoRedoService.pushUndoRedo({
|
|
68
|
+
unitID: unitId,
|
|
69
|
+
redoMutations: resourceRedoMutations,
|
|
70
|
+
undoMutations: resourceUndoMutations,
|
|
71
|
+
id: historyId
|
|
72
|
+
});
|
|
73
|
+
}
|
|
36
74
|
const memoryCursor = new MemoryCursor();
|
|
37
75
|
memoryCursor.reset();
|
|
38
76
|
const cursorIndex = removeCustomBlocks[0].startIndex;
|
|
@@ -64,11 +102,9 @@ const RemoveDocDrawingCommand = {
|
|
|
64
102
|
const path = getRichTextEditPath(documentDataModel, segmentId);
|
|
65
103
|
rawActions.push(jsonX.editOp(textX.serialize(), path));
|
|
66
104
|
for (const block of removeCustomBlocks) {
|
|
67
|
-
var _documentDataModel$ge3;
|
|
68
105
|
const { blockId } = block;
|
|
69
|
-
const drawing = ((_documentDataModel$ge3 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : {})[blockId];
|
|
70
106
|
const drawingIndex = documentDataModel.getDrawingsOrder().indexOf(blockId);
|
|
71
|
-
const removeDrawingAction = jsonX.removeOp(["drawings", blockId],
|
|
107
|
+
const removeDrawingAction = jsonX.removeOp(["drawings", blockId], drawings[blockId]);
|
|
72
108
|
const removeDrawingOrderAction = jsonX.removeOp(["drawingsOrder", drawingIndex], blockId);
|
|
73
109
|
rawActions.push(removeDrawingAction);
|
|
74
110
|
rawActions.push(removeDrawingOrderAction);
|
|
@@ -77,9 +113,35 @@ const RemoveDocDrawingCommand = {
|
|
|
77
113
|
return JSONX.compose(acc, cur);
|
|
78
114
|
}, null);
|
|
79
115
|
const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
|
|
116
|
+
if (!result && batchingDisposable != null) {
|
|
117
|
+
batchingDisposable.dispose();
|
|
118
|
+
undoRedoService.rollback(historyId, unitId);
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
batchingDisposable === null || batchingDisposable === void 0 || batchingDisposable.dispose();
|
|
80
122
|
return Boolean(result);
|
|
81
123
|
}
|
|
82
124
|
};
|
|
125
|
+
function executeResourceMutationGroups(mutationGroups, commandService) {
|
|
126
|
+
const executedUndoGroups = [];
|
|
127
|
+
for (const mutationGroup of mutationGroups) {
|
|
128
|
+
if (!executeMutations(mutationGroup.redoMutations, commandService)) {
|
|
129
|
+
executeMutationGroups([...executedUndoGroups].reverse(), commandService);
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
executedUndoGroups.push(mutationGroup.undoMutations);
|
|
133
|
+
}
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
function executeMutationGroups(mutationGroups, commandService) {
|
|
137
|
+
mutationGroups.forEach((mutations) => {
|
|
138
|
+
executeMutations(mutations, commandService);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function executeMutations(mutations, commandService) {
|
|
142
|
+
for (const mutation of mutations) if (!commandService.syncExecuteCommand(mutation.id, mutation.params)) return false;
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
83
145
|
|
|
84
146
|
//#endregion
|
|
85
147
|
//#region src/commands/commands/delete-doc-drawing.command.ts
|
|
@@ -138,7 +200,8 @@ const InsertDocDrawingCommand = {
|
|
|
138
200
|
const documentDataModel = univerInstanceService.getCurrentUnitOfType(UniverInstanceType.UNIVER_DOC);
|
|
139
201
|
if (documentDataModel == null) return false;
|
|
140
202
|
const unitId = documentDataModel.getUnitId();
|
|
141
|
-
const
|
|
203
|
+
const explicitTextRange = params.textRange == null ? null : normalizeTextRange(params.textRange);
|
|
204
|
+
const contentInsertRange = explicitTextRange !== null && explicitTextRange !== void 0 ? explicitTextRange : getContentInsertRange(accessor, unitId);
|
|
142
205
|
const targetTextRange = contentInsertRange ? {
|
|
143
206
|
...activeTextRange,
|
|
144
207
|
startOffset: contentInsertRange.startOffset,
|
|
@@ -234,6 +297,16 @@ function getContentInsertRange(accessor, unitId) {
|
|
|
234
297
|
return null;
|
|
235
298
|
}
|
|
236
299
|
}
|
|
300
|
+
function normalizeTextRange(textRange) {
|
|
301
|
+
var _textRange$endOffset, _textRange$collapsed, _textRange$segmentId;
|
|
302
|
+
const endOffset = (_textRange$endOffset = textRange.endOffset) !== null && _textRange$endOffset !== void 0 ? _textRange$endOffset : textRange.startOffset;
|
|
303
|
+
return {
|
|
304
|
+
...textRange,
|
|
305
|
+
endOffset,
|
|
306
|
+
collapsed: (_textRange$collapsed = textRange.collapsed) !== null && _textRange$collapsed !== void 0 ? _textRange$collapsed : textRange.startOffset === endOffset,
|
|
307
|
+
segmentId: (_textRange$segmentId = textRange.segmentId) !== null && _textRange$segmentId !== void 0 ? _textRange$segmentId : ""
|
|
308
|
+
};
|
|
309
|
+
}
|
|
237
310
|
|
|
238
311
|
//#endregion
|
|
239
312
|
//#region src/commands/commands/set-drawing-arrange.command.ts
|
|
@@ -665,7 +738,10 @@ let DocDrawingUpdateRenderController = class DocDrawingUpdateRenderController ex
|
|
|
665
738
|
});
|
|
666
739
|
}));
|
|
667
740
|
this.disposeWithMe(this._commandService.onCommandExecuted(async (command) => {
|
|
668
|
-
if (command.id
|
|
741
|
+
if (command.id !== RichTextEditingMutation.id) return;
|
|
742
|
+
const params = command.params;
|
|
743
|
+
if ((params === null || params === void 0 ? void 0 : params.unitId) && params.unitId !== this._context.unitId) return;
|
|
744
|
+
queueMicrotask(() => {
|
|
669
745
|
this._updateDrawingsEditStatus();
|
|
670
746
|
});
|
|
671
747
|
}));
|
|
@@ -1162,6 +1238,11 @@ const UpdateDrawingDocTransformCommand = {
|
|
|
1162
1238
|
return JSONX.compose(acc, cur);
|
|
1163
1239
|
}, null);
|
|
1164
1240
|
const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
|
|
1241
|
+
if (accessor.has(DocRefreshDrawingsService)) {
|
|
1242
|
+
var _renderObject$with$ge;
|
|
1243
|
+
const skeleton = (_renderObject$with$ge = renderObject === null || renderObject === void 0 ? void 0 : renderObject.with(DocSkeletonManagerService).getSkeleton()) !== null && _renderObject$with$ge !== void 0 ? _renderObject$with$ge : null;
|
|
1244
|
+
accessor.get(DocRefreshDrawingsService).refreshDrawings(skeleton);
|
|
1245
|
+
}
|
|
1165
1246
|
transformer.refreshControls();
|
|
1166
1247
|
return Boolean(result);
|
|
1167
1248
|
}
|
|
@@ -1464,6 +1545,30 @@ function calcDocFloatDomPosition(object, renderUnit) {
|
|
|
1464
1545
|
right: left + width
|
|
1465
1546
|
}, renderUnit.scene, opacity, angle);
|
|
1466
1547
|
}
|
|
1548
|
+
function mergeDocFloatDomRuntimeProps(existingProps, param) {
|
|
1549
|
+
const customBlockRenderViewport = pickValidCustomBlockRenderViewport(param.customBlockRenderViewport);
|
|
1550
|
+
if (!customBlockRenderViewport) return existingProps;
|
|
1551
|
+
return {
|
|
1552
|
+
...existingProps,
|
|
1553
|
+
customBlockRenderViewport
|
|
1554
|
+
};
|
|
1555
|
+
}
|
|
1556
|
+
function pickValidCustomBlockRenderViewport(viewport) {
|
|
1557
|
+
const result = {};
|
|
1558
|
+
if (isNonNegativeNumber(viewport === null || viewport === void 0 ? void 0 : viewport.bleedLeft)) result.bleedLeft = viewport.bleedLeft;
|
|
1559
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.bleedWidth)) result.bleedWidth = viewport.bleedWidth;
|
|
1560
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.contentHeight)) result.contentHeight = viewport.contentHeight;
|
|
1561
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.contentWidth)) result.contentWidth = viewport.contentWidth;
|
|
1562
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.height)) result.height = viewport.height;
|
|
1563
|
+
if (isPositiveNumber(viewport === null || viewport === void 0 ? void 0 : viewport.viewportHeight)) result.viewportHeight = viewport.viewportHeight;
|
|
1564
|
+
return Object.keys(result).length ? result : void 0;
|
|
1565
|
+
}
|
|
1566
|
+
function isPositiveNumber(value) {
|
|
1567
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
1568
|
+
}
|
|
1569
|
+
function isNonNegativeNumber(value) {
|
|
1570
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
1571
|
+
}
|
|
1467
1572
|
let DocFloatDomController = class DocFloatDomController extends Disposable {
|
|
1468
1573
|
constructor(_renderManagerService, _drawingManagerService, _drawingRenderService, _canvasFloatDomService, _univerInstanceService, _commandService) {
|
|
1469
1574
|
super();
|
|
@@ -1481,6 +1586,7 @@ let DocFloatDomController = class DocFloatDomController extends Disposable {
|
|
|
1481
1586
|
}
|
|
1482
1587
|
_initialize() {
|
|
1483
1588
|
this._drawingAddRemoveListener();
|
|
1589
|
+
this._drawingRuntimePropsListener();
|
|
1484
1590
|
this._initScrollAndZoomEvent();
|
|
1485
1591
|
}
|
|
1486
1592
|
_getSceneAndTransformerByDrawingSearch(unitId) {
|
|
@@ -1516,6 +1622,12 @@ let DocFloatDomController = class DocFloatDomController extends Disposable {
|
|
|
1516
1622
|
const rects = await this._drawingRenderService.renderFloatDom(rectParam, renderObject.scene);
|
|
1517
1623
|
if (rects == null || rects.length === 0) return;
|
|
1518
1624
|
for (const rect of rects) {
|
|
1625
|
+
var _renderObject$scene$g;
|
|
1626
|
+
const runtimeParam = rectParam;
|
|
1627
|
+
const runtimeViewport = pickValidCustomBlockRenderViewport(runtimeParam.customBlockRenderViewport);
|
|
1628
|
+
const preserveRuntimeGeometry = isEmbedFloatDomRuntimeParam(runtimeParam);
|
|
1629
|
+
syncRectWithRuntimeParam(rect, runtimeParam, runtimeViewport, void 0, preserveRuntimeGeometry);
|
|
1630
|
+
const runtimeTransform = runtimeViewport || preserveRuntimeGeometry ? createTransformFromRect(rect) : void 0;
|
|
1519
1631
|
this._addHoverForRect(rect);
|
|
1520
1632
|
const disposableCollection = new DisposableCollection();
|
|
1521
1633
|
const position$ = new BehaviorSubject(calcDocFloatDomPosition(rect, renderObject.renderUnit));
|
|
@@ -1523,7 +1635,10 @@ let DocFloatDomController = class DocFloatDomController extends Disposable {
|
|
|
1523
1635
|
const data = rectParam.data;
|
|
1524
1636
|
const info = {
|
|
1525
1637
|
dispose: disposableCollection,
|
|
1638
|
+
preserveRuntimeGeometry,
|
|
1526
1639
|
rect,
|
|
1640
|
+
runtimeTransform,
|
|
1641
|
+
runtimeViewport,
|
|
1527
1642
|
position$,
|
|
1528
1643
|
unitId
|
|
1529
1644
|
};
|
|
@@ -1531,6 +1646,8 @@ let DocFloatDomController = class DocFloatDomController extends Disposable {
|
|
|
1531
1646
|
position$,
|
|
1532
1647
|
id: rectParam.drawingId,
|
|
1533
1648
|
componentKey: rectParam.componentKey,
|
|
1649
|
+
eventPassThrough: preserveRuntimeGeometry ? false : void 0,
|
|
1650
|
+
preserveOnFocusChange: preserveRuntimeGeometry,
|
|
1534
1651
|
onPointerDown: (evt) => {
|
|
1535
1652
|
canvas.dispatchEvent(new PointerEvent(evt.type, evt));
|
|
1536
1653
|
},
|
|
@@ -1544,20 +1661,42 @@ let DocFloatDomController = class DocFloatDomController extends Disposable {
|
|
|
1544
1661
|
canvas.dispatchEvent(new WheelEvent(evt.type, evt));
|
|
1545
1662
|
},
|
|
1546
1663
|
data,
|
|
1664
|
+
props: mergeDocFloatDomRuntimeProps(void 0, rectParam),
|
|
1547
1665
|
unitId
|
|
1548
1666
|
});
|
|
1549
1667
|
const listener = rect.onTransformChange$.subscribeEvent(() => {
|
|
1550
1668
|
const newPosition = calcDocFloatDomPosition(rect, renderObject.renderUnit);
|
|
1551
1669
|
position$.next(newPosition);
|
|
1552
1670
|
});
|
|
1671
|
+
const scrollListener = subscribeViewportScrollAfter((_renderObject$scene$g = renderObject.scene.getViewport(VIEWPORT_KEY.VIEW_MAIN)) === null || _renderObject$scene$g === void 0 ? void 0 : _renderObject$scene$g.onScrollAfter$, () => position$.next(calcDocFloatDomPosition(rect, renderObject.renderUnit)));
|
|
1553
1672
|
disposableCollection.add(() => {
|
|
1554
1673
|
this._canvasFloatDomService.removeFloatDom(rectParam.drawingId);
|
|
1555
1674
|
});
|
|
1556
1675
|
listener && disposableCollection.add(listener);
|
|
1676
|
+
scrollListener && disposableCollection.add(scrollListener);
|
|
1557
1677
|
this._domLayerInfoMap.set(rectParam.drawingId, info);
|
|
1558
1678
|
}
|
|
1559
1679
|
});
|
|
1560
1680
|
}
|
|
1681
|
+
_drawingRuntimePropsListener() {
|
|
1682
|
+
this.disposeWithMe(this._drawingManagerService.refreshTransform$.subscribe((params) => {
|
|
1683
|
+
params.forEach((param) => {
|
|
1684
|
+
var _this$_canvasFloatDom;
|
|
1685
|
+
const floatDomInfo = this._domLayerInfoMap.get(param.drawingId);
|
|
1686
|
+
if (!floatDomInfo) return;
|
|
1687
|
+
const runtimeParam = param;
|
|
1688
|
+
const runtimeViewport = pickValidCustomBlockRenderViewport(runtimeParam.customBlockRenderViewport);
|
|
1689
|
+
if (runtimeViewport) floatDomInfo.runtimeViewport = runtimeViewport;
|
|
1690
|
+
if (syncRectWithRuntimeParam(floatDomInfo.rect, runtimeParam, floatDomInfo.runtimeViewport, floatDomInfo.runtimeTransform, floatDomInfo.preserveRuntimeGeometry)) {
|
|
1691
|
+
if (runtimeViewport || floatDomInfo.preserveRuntimeGeometry) floatDomInfo.runtimeTransform = createTransformFromRect(floatDomInfo.rect);
|
|
1692
|
+
const renderObject = this._getSceneAndTransformerByDrawingSearch(floatDomInfo.unitId);
|
|
1693
|
+
if (renderObject) floatDomInfo.position$.next(calcDocFloatDomPosition(floatDomInfo.rect, renderObject.renderUnit));
|
|
1694
|
+
}
|
|
1695
|
+
const currentProps = (_this$_canvasFloatDom = this._canvasFloatDomService.domLayers.find(([id]) => id === param.drawingId)) === null || _this$_canvasFloatDom === void 0 ? void 0 : _this$_canvasFloatDom[1].props;
|
|
1696
|
+
this._canvasFloatDomService.updateFloatDom(param.drawingId, { props: mergeDocFloatDomRuntimeProps(currentProps, param) });
|
|
1697
|
+
});
|
|
1698
|
+
}));
|
|
1699
|
+
}
|
|
1561
1700
|
_addHoverForRect(o) {
|
|
1562
1701
|
this.disposeWithMe(toDisposable(o.onPointerEnter$.subscribeEvent(() => {
|
|
1563
1702
|
o.cursor = CURSOR_TYPE.GRAB;
|
|
@@ -1658,6 +1797,71 @@ DocFloatDomController = __decorate([
|
|
|
1658
1797
|
__decorateParam(4, IUniverInstanceService),
|
|
1659
1798
|
__decorateParam(5, ICommandService)
|
|
1660
1799
|
], DocFloatDomController);
|
|
1800
|
+
function syncRectWithRuntimeParam(rect, param, fallbackViewport, fallbackTransform, preserveRuntimeGeometry) {
|
|
1801
|
+
const transform = getRuntimeTransform(param, rect, fallbackViewport, fallbackTransform, preserveRuntimeGeometry);
|
|
1802
|
+
if (!transform) return false;
|
|
1803
|
+
rect.transformByState(transform);
|
|
1804
|
+
return true;
|
|
1805
|
+
}
|
|
1806
|
+
function getRuntimeTransform(param, rect, fallbackViewport, fallbackTransform, preserveRuntimeGeometry) {
|
|
1807
|
+
var _param$transform, _param$transforms, _param$customBlockRen, _runtimeViewport$heig2;
|
|
1808
|
+
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];
|
|
1809
|
+
const runtimeViewport = (_param$customBlockRen = param.customBlockRenderViewport) !== null && _param$customBlockRen !== void 0 ? _param$customBlockRen : fallbackViewport;
|
|
1810
|
+
if (!param.customBlockRenderViewport && preserveRuntimeGeometry && fallbackTransform && transform) {
|
|
1811
|
+
var _fallbackTransform$wi, _fallbackTransform$he;
|
|
1812
|
+
return {
|
|
1813
|
+
...transform,
|
|
1814
|
+
width: (_fallbackTransform$wi = fallbackTransform.width) !== null && _fallbackTransform$wi !== void 0 ? _fallbackTransform$wi : transform.width,
|
|
1815
|
+
height: (_fallbackTransform$he = fallbackTransform.height) !== null && _fallbackTransform$he !== void 0 ? _fallbackTransform$he : transform.height
|
|
1816
|
+
};
|
|
1817
|
+
}
|
|
1818
|
+
if (!transform) {
|
|
1819
|
+
var _runtimeViewport$heig;
|
|
1820
|
+
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;
|
|
1821
|
+
if (!isPositiveNumber(height)) return;
|
|
1822
|
+
return {
|
|
1823
|
+
left: rect.left,
|
|
1824
|
+
top: rect.top,
|
|
1825
|
+
width: rect.width,
|
|
1826
|
+
height,
|
|
1827
|
+
angle: rect.angle
|
|
1828
|
+
};
|
|
1829
|
+
}
|
|
1830
|
+
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;
|
|
1831
|
+
if (!isPositiveNumber(height)) return transform;
|
|
1832
|
+
return {
|
|
1833
|
+
...transform,
|
|
1834
|
+
height
|
|
1835
|
+
};
|
|
1836
|
+
}
|
|
1837
|
+
function isEmbedFloatDomRuntimeParam(param) {
|
|
1838
|
+
const data = param.data;
|
|
1839
|
+
if (!data || typeof data !== "object") return false;
|
|
1840
|
+
const candidate = data;
|
|
1841
|
+
return candidate.version === 1 && typeof candidate.embedId === "string" && typeof candidate.hostAnchorId === "string";
|
|
1842
|
+
}
|
|
1843
|
+
function createTransformFromRect(rect) {
|
|
1844
|
+
return {
|
|
1845
|
+
angle: rect.angle,
|
|
1846
|
+
height: rect.height,
|
|
1847
|
+
left: rect.left,
|
|
1848
|
+
top: rect.top,
|
|
1849
|
+
width: rect.width
|
|
1850
|
+
};
|
|
1851
|
+
}
|
|
1852
|
+
function subscribeViewportScrollAfter(scrollEvent, callback) {
|
|
1853
|
+
if (!scrollEvent || typeof scrollEvent !== "object") return;
|
|
1854
|
+
const eventSubject = scrollEvent;
|
|
1855
|
+
if (typeof eventSubject.subscribeEvent === "function") return eventSubject.subscribeEvent(callback);
|
|
1856
|
+
const observable = scrollEvent;
|
|
1857
|
+
if (typeof observable.subscribe === "function") {
|
|
1858
|
+
const subscription = observable.subscribe(callback);
|
|
1859
|
+
return toDisposable(() => {
|
|
1860
|
+
var _subscription$unsubsc;
|
|
1861
|
+
return (_subscription$unsubsc = subscription.unsubscribe) === null || _subscription$unsubsc === void 0 ? void 0 : _subscription$unsubsc.call(subscription);
|
|
1862
|
+
});
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1661
1865
|
|
|
1662
1866
|
//#endregion
|
|
1663
1867
|
//#region src/menu/image.menu.ts
|
|
@@ -1784,10 +1988,79 @@ function InsertEllipseShapeBelowMenuFactory(accessor) {
|
|
|
1784
1988
|
};
|
|
1785
1989
|
}
|
|
1786
1990
|
|
|
1991
|
+
//#endregion
|
|
1992
|
+
//#region src/menu/schema.ts
|
|
1993
|
+
const menuSchema = {
|
|
1994
|
+
[RibbonInsertGroup.MEDIA]: { [DOCS_IMAGE_MENU_ID]: {
|
|
1995
|
+
order: 0,
|
|
1996
|
+
menuItemFactory: ImageMenuFactory,
|
|
1997
|
+
[IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
1998
|
+
order: 0,
|
|
1999
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2000
|
+
}
|
|
2001
|
+
} },
|
|
2002
|
+
[ContextMenuPosition.PARAGRAPH]: {
|
|
2003
|
+
[ContextMenuGroup.LAYOUT]: { [INSERT_BELLOW_MENU_ID]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
2004
|
+
order: 5,
|
|
2005
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2006
|
+
} } },
|
|
2007
|
+
[EMPTY_PARAGRAPH_MENU_ID]: { [ContextMenuGroup.LAYOUT]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
2008
|
+
order: 5,
|
|
2009
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2010
|
+
} } },
|
|
2011
|
+
[DOC_CONTENT_INSERT_MENU_ID]: { [ContextMenuGroup.LAYOUT]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
2012
|
+
order: 5,
|
|
2013
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2014
|
+
} } },
|
|
2015
|
+
[DOC_PARAGRAPH_T_INSERT_MENU_ID]: { insert: {
|
|
2016
|
+
[IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
2017
|
+
order: 1,
|
|
2018
|
+
menuItemFactory: UploadFloatImageMenuFactory
|
|
2019
|
+
},
|
|
2020
|
+
[DOCS_SHAPE_MENU_ID]: {
|
|
2021
|
+
order: 2,
|
|
2022
|
+
menuItemFactory: ShapeMenuFactory
|
|
2023
|
+
}
|
|
2024
|
+
} },
|
|
2025
|
+
[DOC_PARAGRAPH_T_INSERT_BELOW_MENU_ID]: { insert: {
|
|
2026
|
+
[`${IMAGE_MENU_UPLOAD_FLOAT_ID}.below`]: {
|
|
2027
|
+
order: 1,
|
|
2028
|
+
menuItemFactory: UploadFloatImageBelowMenuFactory
|
|
2029
|
+
},
|
|
2030
|
+
[DOCS_SHAPE_BELOW_MENU_ID]: {
|
|
2031
|
+
order: 2,
|
|
2032
|
+
menuItemFactory: ShapeBelowMenuFactory
|
|
2033
|
+
}
|
|
2034
|
+
} },
|
|
2035
|
+
[DOCS_SHAPE_MENU_ID]: { shapes: {
|
|
2036
|
+
order: 0,
|
|
2037
|
+
[InsertDocRectangleShapeCommand.id]: {
|
|
2038
|
+
order: 0,
|
|
2039
|
+
menuItemFactory: InsertRectangleShapeMenuFactory
|
|
2040
|
+
},
|
|
2041
|
+
[InsertDocEllipseShapeCommand.id]: {
|
|
2042
|
+
order: 1,
|
|
2043
|
+
menuItemFactory: InsertEllipseShapeMenuFactory
|
|
2044
|
+
}
|
|
2045
|
+
} },
|
|
2046
|
+
[DOCS_SHAPE_BELOW_MENU_ID]: { shapes: {
|
|
2047
|
+
order: 0,
|
|
2048
|
+
[`${InsertDocRectangleShapeCommand.id}.below`]: {
|
|
2049
|
+
order: 0,
|
|
2050
|
+
menuItemFactory: InsertRectangleShapeBelowMenuFactory
|
|
2051
|
+
},
|
|
2052
|
+
[`${InsertDocEllipseShapeCommand.id}.below`]: {
|
|
2053
|
+
order: 1,
|
|
2054
|
+
menuItemFactory: InsertEllipseShapeBelowMenuFactory
|
|
2055
|
+
}
|
|
2056
|
+
} }
|
|
2057
|
+
}
|
|
2058
|
+
};
|
|
2059
|
+
|
|
1787
2060
|
//#endregion
|
|
1788
2061
|
//#region package.json
|
|
1789
2062
|
var name = "@univerjs/docs-drawing-ui";
|
|
1790
|
-
var version = "1.0.0-alpha.
|
|
2063
|
+
var version = "1.0.0-alpha.3";
|
|
1791
2064
|
|
|
1792
2065
|
//#endregion
|
|
1793
2066
|
//#region src/config/config.ts
|
|
@@ -2450,6 +2723,24 @@ function getReOrderedDrawings(actions) {
|
|
|
2450
2723
|
}
|
|
2451
2724
|
return drawingIndexes;
|
|
2452
2725
|
}
|
|
2726
|
+
function collectUpdatedDrawingIds(actions, drawingIds = /* @__PURE__ */ new Set()) {
|
|
2727
|
+
if (JSONX.isNoop(actions) || !Array.isArray(actions)) return drawingIds;
|
|
2728
|
+
if (actions[0] === "drawings") {
|
|
2729
|
+
const drawingKeyOrOps = actions[1];
|
|
2730
|
+
if (typeof drawingKeyOrOps === "string") {
|
|
2731
|
+
drawingIds.add(drawingKeyOrOps);
|
|
2732
|
+
return drawingIds;
|
|
2733
|
+
}
|
|
2734
|
+
actions.slice(1).forEach((action) => {
|
|
2735
|
+
if (Array.isArray(action) && typeof action[0] === "string") drawingIds.add(action[0]);
|
|
2736
|
+
});
|
|
2737
|
+
return drawingIds;
|
|
2738
|
+
}
|
|
2739
|
+
actions.forEach((action) => {
|
|
2740
|
+
if (Array.isArray(action)) collectUpdatedDrawingIds(action, drawingIds);
|
|
2741
|
+
});
|
|
2742
|
+
return drawingIds;
|
|
2743
|
+
}
|
|
2453
2744
|
let DocDrawingAddRemoveController = class DocDrawingAddRemoveController extends Disposable {
|
|
2454
2745
|
constructor(_univerInstanceService, _commandService, _drawingManagerService, _docDrawingService, _renderManagerService) {
|
|
2455
2746
|
super();
|
|
@@ -2478,6 +2769,8 @@ let DocDrawingAddRemoveController = class DocDrawingAddRemoveController extends
|
|
|
2478
2769
|
if (command.id !== RichTextEditingMutation.id) return;
|
|
2479
2770
|
const { unitId, actions } = command.params;
|
|
2480
2771
|
if (getReOrderedDrawings(actions).length > 0) this._updateDrawingsOrder(unitId);
|
|
2772
|
+
const updatedDrawingIds = [...collectUpdatedDrawingIds(actions)];
|
|
2773
|
+
if (updatedDrawingIds.length > 0) this._syncDrawingDataFromSnapshot(unitId, updatedDrawingIds);
|
|
2481
2774
|
}));
|
|
2482
2775
|
this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
|
|
2483
2776
|
var _this$_univerInstance;
|
|
@@ -2537,6 +2830,25 @@ let DocDrawingAddRemoveController = class DocDrawingAddRemoveController extends
|
|
|
2537
2830
|
drawingIds: drawingsOrder
|
|
2538
2831
|
});
|
|
2539
2832
|
}
|
|
2833
|
+
_syncDrawingDataFromSnapshot(unitId, drawingIds) {
|
|
2834
|
+
const documentDataModel = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC);
|
|
2835
|
+
if (documentDataModel == null) return;
|
|
2836
|
+
const { drawings = {}, drawingsOrder = [] } = documentDataModel.getSnapshot();
|
|
2837
|
+
const drawingData = drawings;
|
|
2838
|
+
const renderOrder = getDocDrawingRenderOrder(drawingsOrder, drawings);
|
|
2839
|
+
this._docDrawingService.setDrawingData(unitId, unitId, drawingData);
|
|
2840
|
+
this._drawingManagerService.setDrawingData(unitId, unitId, drawingData);
|
|
2841
|
+
this._docDrawingService.setDrawingOrder(unitId, unitId, drawingsOrder);
|
|
2842
|
+
this._drawingManagerService.setDrawingOrder(unitId, unitId, renderOrder);
|
|
2843
|
+
const objects = drawingIds.filter((drawingId) => drawingData[drawingId] != null).map((drawingId) => ({
|
|
2844
|
+
unitId,
|
|
2845
|
+
subUnitId: unitId,
|
|
2846
|
+
drawingId
|
|
2847
|
+
}));
|
|
2848
|
+
if (objects.length === 0) return;
|
|
2849
|
+
this._docDrawingService.updateNotification(objects);
|
|
2850
|
+
this._drawingManagerService.updateNotification(objects);
|
|
2851
|
+
}
|
|
2540
2852
|
};
|
|
2541
2853
|
DocDrawingAddRemoveController = __decorate([
|
|
2542
2854
|
__decorateParam(0, IUniverInstanceService),
|
|
@@ -2927,6 +3239,7 @@ let DocDrawingTransformUpdateController = class DocDrawingTransformUpdateControl
|
|
|
2927
3239
|
behindText,
|
|
2928
3240
|
transform,
|
|
2929
3241
|
transforms: [transform],
|
|
3242
|
+
customBlockRenderViewport: drawing.customBlockRenderViewport,
|
|
2930
3243
|
isMultiTransform
|
|
2931
3244
|
};
|
|
2932
3245
|
else if (isMultiTransform === BooleanNumber.TRUE) updateDrawingMap[drawingId].transforms.push(transform);
|
|
@@ -3520,75 +3833,6 @@ DocDrawingTransformerController = __decorate([
|
|
|
3520
3833
|
__decorateParam(3, IRenderManagerService)
|
|
3521
3834
|
], DocDrawingTransformerController);
|
|
3522
3835
|
|
|
3523
|
-
//#endregion
|
|
3524
|
-
//#region src/menu/schema.ts
|
|
3525
|
-
const menuSchema = {
|
|
3526
|
-
[RibbonInsertGroup.MEDIA]: { [DOCS_IMAGE_MENU_ID]: {
|
|
3527
|
-
order: 0,
|
|
3528
|
-
menuItemFactory: ImageMenuFactory,
|
|
3529
|
-
[IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3530
|
-
order: 0,
|
|
3531
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3532
|
-
}
|
|
3533
|
-
} },
|
|
3534
|
-
[ContextMenuPosition.PARAGRAPH]: {
|
|
3535
|
-
[ContextMenuGroup.LAYOUT]: { [INSERT_BELLOW_MENU_ID]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3536
|
-
order: 5,
|
|
3537
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3538
|
-
} } },
|
|
3539
|
-
[EMPTY_PARAGRAPH_MENU_ID]: { [ContextMenuGroup.LAYOUT]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3540
|
-
order: 5,
|
|
3541
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3542
|
-
} } },
|
|
3543
|
-
[DOC_CONTENT_INSERT_MENU_ID]: { [ContextMenuGroup.LAYOUT]: { [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3544
|
-
order: 5,
|
|
3545
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3546
|
-
} } },
|
|
3547
|
-
[DOC_PARAGRAPH_T_INSERT_MENU_ID]: { insert: {
|
|
3548
|
-
[IMAGE_MENU_UPLOAD_FLOAT_ID]: {
|
|
3549
|
-
order: 1,
|
|
3550
|
-
menuItemFactory: UploadFloatImageMenuFactory
|
|
3551
|
-
},
|
|
3552
|
-
[DOCS_SHAPE_MENU_ID]: {
|
|
3553
|
-
order: 2,
|
|
3554
|
-
menuItemFactory: ShapeMenuFactory
|
|
3555
|
-
}
|
|
3556
|
-
} },
|
|
3557
|
-
[DOC_PARAGRAPH_T_INSERT_BELOW_MENU_ID]: { insert: {
|
|
3558
|
-
[`${IMAGE_MENU_UPLOAD_FLOAT_ID}.below`]: {
|
|
3559
|
-
order: 1,
|
|
3560
|
-
menuItemFactory: UploadFloatImageBelowMenuFactory
|
|
3561
|
-
},
|
|
3562
|
-
[DOCS_SHAPE_BELOW_MENU_ID]: {
|
|
3563
|
-
order: 2,
|
|
3564
|
-
menuItemFactory: ShapeBelowMenuFactory
|
|
3565
|
-
}
|
|
3566
|
-
} },
|
|
3567
|
-
[DOCS_SHAPE_MENU_ID]: { shapes: {
|
|
3568
|
-
order: 0,
|
|
3569
|
-
[InsertDocRectangleShapeCommand.id]: {
|
|
3570
|
-
order: 0,
|
|
3571
|
-
menuItemFactory: InsertRectangleShapeMenuFactory
|
|
3572
|
-
},
|
|
3573
|
-
[InsertDocEllipseShapeCommand.id]: {
|
|
3574
|
-
order: 1,
|
|
3575
|
-
menuItemFactory: InsertEllipseShapeMenuFactory
|
|
3576
|
-
}
|
|
3577
|
-
} },
|
|
3578
|
-
[DOCS_SHAPE_BELOW_MENU_ID]: { shapes: {
|
|
3579
|
-
order: 0,
|
|
3580
|
-
[`${InsertDocRectangleShapeCommand.id}.below`]: {
|
|
3581
|
-
order: 0,
|
|
3582
|
-
menuItemFactory: InsertRectangleShapeBelowMenuFactory
|
|
3583
|
-
},
|
|
3584
|
-
[`${InsertDocEllipseShapeCommand.id}.below`]: {
|
|
3585
|
-
order: 1,
|
|
3586
|
-
menuItemFactory: InsertEllipseShapeBelowMenuFactory
|
|
3587
|
-
}
|
|
3588
|
-
} }
|
|
3589
|
-
}
|
|
3590
|
-
};
|
|
3591
|
-
|
|
3592
3836
|
//#endregion
|
|
3593
3837
|
//#region src/controllers/shortcuts/drawing.shortcut.ts
|
|
3594
3838
|
function whenDocDrawingFocused(contextService) {
|
|
@@ -3720,16 +3964,40 @@ DocDrawingUIController = __decorate([
|
|
|
3720
3964
|
__decorateParam(2, IShortcutService)
|
|
3721
3965
|
], DocDrawingUIController);
|
|
3722
3966
|
|
|
3967
|
+
//#endregion
|
|
3968
|
+
//#region src/services/doc-drawing-floating-toolbar-adapter.service.ts
|
|
3969
|
+
var DocDrawingFloatingToolbarAdapterService = class {
|
|
3970
|
+
constructor() {
|
|
3971
|
+
_defineProperty(this, "_adapters", []);
|
|
3972
|
+
}
|
|
3973
|
+
registerAdapter(adapter) {
|
|
3974
|
+
this._adapters.push(adapter);
|
|
3975
|
+
return toDisposable(() => {
|
|
3976
|
+
const index = this._adapters.indexOf(adapter);
|
|
3977
|
+
if (index >= 0) this._adapters.splice(index, 1);
|
|
3978
|
+
});
|
|
3979
|
+
}
|
|
3980
|
+
getItems(params) {
|
|
3981
|
+
for (const adapter of this._adapters) {
|
|
3982
|
+
const items = adapter.getItems(params);
|
|
3983
|
+
if (items) return [...items].sort((a, b) => a.index - b.index);
|
|
3984
|
+
}
|
|
3985
|
+
return null;
|
|
3986
|
+
}
|
|
3987
|
+
};
|
|
3988
|
+
|
|
3723
3989
|
//#endregion
|
|
3724
3990
|
//#region src/menu/drawing-popup-menu.controller.ts
|
|
3725
3991
|
let DocDrawingPopupMenuController = class DocDrawingPopupMenuController extends RxDisposable {
|
|
3726
|
-
constructor(_drawingManagerService, _canvasPopManagerService, _renderManagerService, _univerInstanceService, _contextService, _commandService) {
|
|
3992
|
+
constructor(_drawingManagerService, _canvasPopManagerService, _renderManagerService, _univerInstanceService, _contextService, _drawingAdapterService, _floatingToolbarAdapterService, _commandService) {
|
|
3727
3993
|
super();
|
|
3728
3994
|
this._drawingManagerService = _drawingManagerService;
|
|
3729
3995
|
this._canvasPopManagerService = _canvasPopManagerService;
|
|
3730
3996
|
this._renderManagerService = _renderManagerService;
|
|
3731
3997
|
this._univerInstanceService = _univerInstanceService;
|
|
3732
3998
|
this._contextService = _contextService;
|
|
3999
|
+
this._drawingAdapterService = _drawingAdapterService;
|
|
4000
|
+
this._floatingToolbarAdapterService = _floatingToolbarAdapterService;
|
|
3733
4001
|
this._commandService = _commandService;
|
|
3734
4002
|
_defineProperty(this, "_initImagePopupMenu", /* @__PURE__ */ new Set());
|
|
3735
4003
|
_defineProperty(this, "_disposePopups", []);
|
|
@@ -3799,13 +4067,14 @@ let DocDrawingPopupMenuController = class DocDrawingPopupMenuController extends
|
|
|
3799
4067
|
if (!drawingParam || drawingParam.drawingType === DrawingTypeEnum.DRAWING_DOM || drawingParam.drawingType === DrawingTypeEnum.DRAWING_SHAPE) return;
|
|
3800
4068
|
const { unitId, subUnitId, drawingId, drawingType } = drawingParam;
|
|
3801
4069
|
const isImage = drawingType === DrawingTypeEnum.DRAWING_IMAGE;
|
|
4070
|
+
const isChart = drawingType === DrawingTypeEnum.DRAWING_CHART;
|
|
3802
4071
|
const popup = this._canvasPopManagerService.attachPopupToObject(object, {
|
|
3803
4072
|
componentKey: COMPONENT_IMAGE_POPUP_MENU,
|
|
3804
|
-
direction: isImage ? "top-center" : "horizontal",
|
|
3805
|
-
offset: isImage ? [0, 8] : [2, 0],
|
|
4073
|
+
direction: isImage || isChart ? "top-center" : "horizontal",
|
|
4074
|
+
offset: isImage || isChart ? [0, 8] : [2, 0],
|
|
3806
4075
|
extraProps: {
|
|
3807
|
-
menuItems: this.
|
|
3808
|
-
variant: isImage ? "doc-floating-toolbar" : void 0,
|
|
4076
|
+
menuItems: this._getDrawingPopupMenuItems(unitId, subUnitId, drawingId, drawingType),
|
|
4077
|
+
variant: isImage ? "doc-floating-toolbar" : isChart ? "doc-chart-floating-toolbar" : void 0,
|
|
3809
4078
|
unitId,
|
|
3810
4079
|
subUnitId,
|
|
3811
4080
|
drawingId
|
|
@@ -3834,18 +4103,35 @@ let DocDrawingPopupMenuController = class DocDrawingPopupMenuController extends
|
|
|
3834
4103
|
disposePopups.length = 0;
|
|
3835
4104
|
}));
|
|
3836
4105
|
}
|
|
3837
|
-
|
|
4106
|
+
_getDrawingPopupMenuItems(unitId, subUnitId, drawingId, drawingType) {
|
|
4107
|
+
var _editCommandInfo$labe, _editCommandInfo$comm, _editCommandInfo$comm2, _editCommandInfo$disa;
|
|
4108
|
+
const drawing = this._drawingManagerService.getDrawingByParam({
|
|
4109
|
+
unitId,
|
|
4110
|
+
subUnitId,
|
|
4111
|
+
drawingId
|
|
4112
|
+
});
|
|
4113
|
+
const floatingToolbarMenuItems = drawing ? this._floatingToolbarAdapterService.getItems({
|
|
4114
|
+
unitId,
|
|
4115
|
+
subUnitId,
|
|
4116
|
+
drawing
|
|
4117
|
+
}) : null;
|
|
4118
|
+
if (floatingToolbarMenuItems) return floatingToolbarMenuItems;
|
|
4119
|
+
const editCommandInfo = drawing ? this._drawingAdapterService.getEditDrawingCommandInfo({
|
|
4120
|
+
unitId,
|
|
4121
|
+
subUnitId,
|
|
4122
|
+
drawing
|
|
4123
|
+
}) : null;
|
|
3838
4124
|
return [
|
|
3839
4125
|
{
|
|
3840
|
-
label: "docs-drawing-ui.image-popup.edit",
|
|
4126
|
+
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",
|
|
3841
4127
|
index: 0,
|
|
3842
|
-
commandId: EditDocDrawingOperation.id,
|
|
3843
|
-
commandParams: {
|
|
4128
|
+
commandId: (_editCommandInfo$comm = editCommandInfo === null || editCommandInfo === void 0 ? void 0 : editCommandInfo.commandId) !== null && _editCommandInfo$comm !== void 0 ? _editCommandInfo$comm : EditDocDrawingOperation.id,
|
|
4129
|
+
commandParams: (_editCommandInfo$comm2 = editCommandInfo === null || editCommandInfo === void 0 ? void 0 : editCommandInfo.commandParams) !== null && _editCommandInfo$comm2 !== void 0 ? _editCommandInfo$comm2 : {
|
|
3844
4130
|
unitId,
|
|
3845
4131
|
subUnitId,
|
|
3846
4132
|
drawingId
|
|
3847
4133
|
},
|
|
3848
|
-
disable: drawingType === DrawingTypeEnum.DRAWING_DOM
|
|
4134
|
+
disable: (_editCommandInfo$disa = editCommandInfo === null || editCommandInfo === void 0 ? void 0 : editCommandInfo.disable) !== null && _editCommandInfo$disa !== void 0 ? _editCommandInfo$disa : drawingType === DrawingTypeEnum.DRAWING_DOM
|
|
3849
4135
|
},
|
|
3850
4136
|
{
|
|
3851
4137
|
label: "docs-drawing-ui.image-popup.delete",
|
|
@@ -3892,7 +4178,9 @@ DocDrawingPopupMenuController = __decorate([
|
|
|
3892
4178
|
__decorateParam(2, IRenderManagerService),
|
|
3893
4179
|
__decorateParam(3, IUniverInstanceService),
|
|
3894
4180
|
__decorateParam(4, IContextService),
|
|
3895
|
-
__decorateParam(5,
|
|
4181
|
+
__decorateParam(5, IDocDrawingAdapterService),
|
|
4182
|
+
__decorateParam(6, Inject(DocDrawingFloatingToolbarAdapterService)),
|
|
4183
|
+
__decorateParam(7, ICommandService)
|
|
3896
4184
|
], DocDrawingPopupMenuController);
|
|
3897
4185
|
|
|
3898
4186
|
//#endregion
|
|
@@ -3915,6 +4203,7 @@ let UniverDocsDrawingUIPlugin = class UniverDocsDrawingUIPlugin extends Plugin {
|
|
|
3915
4203
|
[DocDrawingTransformerController],
|
|
3916
4204
|
[DocDrawingAddRemoveController],
|
|
3917
4205
|
[DocRefreshDrawingsService],
|
|
4206
|
+
[DocDrawingFloatingToolbarAdapterService],
|
|
3918
4207
|
[DocFloatDomController],
|
|
3919
4208
|
[DocDrawingPrintingController]
|
|
3920
4209
|
].forEach((dependency) => this._injector.add(dependency));
|
|
@@ -3944,4 +4233,4 @@ UniverDocsDrawingUIPlugin = __decorate([
|
|
|
3944
4233
|
], UniverDocsDrawingUIPlugin);
|
|
3945
4234
|
|
|
3946
4235
|
//#endregion
|
|
3947
|
-
export { ClearDocDrawingTransformerOperation, DOCS_IMAGE_MENU_ID, DOCS_SHAPE_BELOW_MENU_ID, DOCS_SHAPE_MENU_ID, DeleteDocDrawingsCommand, DocDrawingPosition, DocDrawingTextWrap, DocFloatDomController, EditDocDrawingOperation, GroupDocDrawingCommand, InsertDocDrawingCommand, InsertDocEllipseShapeCommand, InsertDocImageCommand, InsertDocRectangleShapeCommand, MoveDocDrawingsCommand, RemoveDocDrawingCommand, SetDocDrawingArrangeCommand, SidebarDocDrawingOperation, UngroupDocDrawingCommand, UniverDocsDrawingUIPlugin };
|
|
4236
|
+
export { ClearDocDrawingTransformerOperation, DOCS_IMAGE_MENU_ID, DOCS_SHAPE_BELOW_MENU_ID, DOCS_SHAPE_MENU_ID, DeleteDocDrawingsCommand, DocDrawingFloatingToolbarAdapterService, DocDrawingPosition, DocDrawingTextWrap, DocFloatDomController, menuSchema as DocsDrawingUIMenuSchema, EditDocDrawingOperation, GroupDocDrawingCommand, InsertDocDrawingCommand, InsertDocEllipseShapeCommand, InsertDocImageCommand, InsertDocRectangleShapeCommand, MoveDocDrawingsCommand, RemoveDocDrawingCommand, SetDocDrawingArrangeCommand, SidebarDocDrawingOperation, UngroupDocDrawingCommand, UniverDocsDrawingUIPlugin, UpdateDrawingDocTransformCommand };
|