@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/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, IImageIoService, ImageSourceType, ImageUploadStatusType, UniverDrawingPlugin, getDrawingImageAllowSize, getDrawingShapeKeyByDrawingSearch, getImageSize } from "@univerjs/drawing";
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].unitId;
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], drawing);
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 contentInsertRange = getContentInsertRange(accessor, unitId);
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 === RichTextEditingMutation.id) queueMicrotask(() => {
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.2";
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._getImageMenuItems(unitId, subUnitId, drawingId, drawingType),
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
- _getImageMenuItems(unitId, subUnitId, drawingId, drawingType) {
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, ICommandService)
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 };