@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 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].unitId;
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], drawing);
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 contentInsertRange = getContentInsertRange(accessor, unitId);
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 _univerjs_drawing.ImageUploadStatusType.ERROR_EXCEED_SIZE:
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 _univerjs_drawing.ImageUploadStatusType.ERROR_IMAGE_TYPE:
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 _univerjs_drawing.ImageUploadStatusType.ERROR_IMAGE:
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 === _univerjs_docs.RichTextEditingMutation.id) queueMicrotask(() => {
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, _univerjs_drawing.IImageIoService),
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: _univerjs_drawing.ImageSourceType.BASE64,
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.2";
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._getImageMenuItems(unitId, subUnitId, drawingId, drawingType),
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
- _getImageMenuItems(unitId, subUnitId, drawingId, drawingType) {
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, _univerjs_core.ICommandService)
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;