@univerjs/drawing-ui 1.0.0-beta.0 → 1.0.0-beta.1

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.
Files changed (86) hide show
  1. package/lib/cjs/index.js +110 -58
  2. package/lib/cjs/locale/ar-SA.js +1 -19
  3. package/lib/cjs/locale/ca-ES.js +1 -19
  4. package/lib/cjs/locale/de-DE.js +1 -19
  5. package/lib/cjs/locale/en-US.js +1 -19
  6. package/lib/cjs/locale/es-ES.js +1 -19
  7. package/lib/cjs/locale/fa-IR.js +1 -19
  8. package/lib/cjs/locale/fr-FR.js +1 -19
  9. package/lib/cjs/locale/id-ID.js +1 -19
  10. package/lib/cjs/locale/it-IT.js +1 -19
  11. package/lib/cjs/locale/ja-JP.js +1 -19
  12. package/lib/cjs/locale/ko-KR.js +1 -19
  13. package/lib/cjs/locale/pl-PL.js +1 -19
  14. package/lib/cjs/locale/pt-BR.js +1 -19
  15. package/lib/cjs/locale/ru-RU.js +1 -19
  16. package/lib/cjs/locale/sk-SK.js +1 -19
  17. package/lib/cjs/locale/vi-VN.js +1 -19
  18. package/lib/cjs/locale/zh-CN.js +1 -19
  19. package/lib/cjs/locale/zh-HK.js +1 -19
  20. package/lib/cjs/locale/zh-TW.js +1 -19
  21. package/lib/es/index.js +113 -61
  22. package/lib/es/locale/ar-SA.js +1 -19
  23. package/lib/es/locale/ca-ES.js +1 -19
  24. package/lib/es/locale/de-DE.js +1 -19
  25. package/lib/es/locale/en-US.js +1 -19
  26. package/lib/es/locale/es-ES.js +1 -19
  27. package/lib/es/locale/fa-IR.js +1 -19
  28. package/lib/es/locale/fr-FR.js +1 -19
  29. package/lib/es/locale/id-ID.js +1 -19
  30. package/lib/es/locale/it-IT.js +1 -19
  31. package/lib/es/locale/ja-JP.js +1 -19
  32. package/lib/es/locale/ko-KR.js +1 -19
  33. package/lib/es/locale/pl-PL.js +1 -19
  34. package/lib/es/locale/pt-BR.js +1 -19
  35. package/lib/es/locale/ru-RU.js +1 -19
  36. package/lib/es/locale/sk-SK.js +1 -19
  37. package/lib/es/locale/vi-VN.js +1 -19
  38. package/lib/es/locale/zh-CN.js +1 -19
  39. package/lib/es/locale/zh-HK.js +1 -19
  40. package/lib/es/locale/zh-TW.js +1 -19
  41. package/lib/index.css +28 -10
  42. package/lib/index.js +113 -61
  43. package/lib/locale/ar-SA.js +1 -19
  44. package/lib/locale/ca-ES.js +1 -19
  45. package/lib/locale/de-DE.js +1 -19
  46. package/lib/locale/en-US.js +1 -19
  47. package/lib/locale/es-ES.js +1 -19
  48. package/lib/locale/fa-IR.js +1 -19
  49. package/lib/locale/fr-FR.js +1 -19
  50. package/lib/locale/id-ID.js +1 -19
  51. package/lib/locale/it-IT.js +1 -19
  52. package/lib/locale/ja-JP.js +1 -19
  53. package/lib/locale/ko-KR.js +1 -19
  54. package/lib/locale/pl-PL.js +1 -19
  55. package/lib/locale/pt-BR.js +1 -19
  56. package/lib/locale/ru-RU.js +1 -19
  57. package/lib/locale/sk-SK.js +1 -19
  58. package/lib/locale/vi-VN.js +1 -19
  59. package/lib/locale/zh-CN.js +1 -19
  60. package/lib/locale/zh-HK.js +1 -19
  61. package/lib/locale/zh-TW.js +1 -19
  62. package/lib/types/commands/operations/image-crop.operation.d.ts +4 -2
  63. package/lib/types/controllers/image-cropper.controller.d.ts +10 -2
  64. package/lib/types/locale/en-US.d.ts +0 -18
  65. package/lib/types/views/image-popup-menu/ImagePopupMenu.d.ts +1 -0
  66. package/lib/umd/index.js +2 -2
  67. package/lib/umd/locale/ar-SA.js +1 -1
  68. package/lib/umd/locale/ca-ES.js +1 -1
  69. package/lib/umd/locale/de-DE.js +1 -1
  70. package/lib/umd/locale/en-US.js +1 -1
  71. package/lib/umd/locale/es-ES.js +1 -1
  72. package/lib/umd/locale/fa-IR.js +1 -1
  73. package/lib/umd/locale/fr-FR.js +1 -1
  74. package/lib/umd/locale/id-ID.js +1 -1
  75. package/lib/umd/locale/it-IT.js +1 -1
  76. package/lib/umd/locale/ja-JP.js +1 -1
  77. package/lib/umd/locale/ko-KR.js +1 -1
  78. package/lib/umd/locale/pl-PL.js +1 -1
  79. package/lib/umd/locale/pt-BR.js +1 -1
  80. package/lib/umd/locale/ru-RU.js +1 -1
  81. package/lib/umd/locale/sk-SK.js +1 -1
  82. package/lib/umd/locale/vi-VN.js +1 -1
  83. package/lib/umd/locale/zh-CN.js +1 -1
  84. package/lib/umd/locale/zh-HK.js +1 -1
  85. package/lib/umd/locale/zh-TW.js +1 -1
  86. package/package.json +7 -7
@@ -89,29 +89,11 @@ const locale = { "drawing-ui": {
89
89
  null: "선택된 객체가 없습니다"
90
90
  },
91
91
  "image-text-wrap": {
92
- title: "텍스트 감싸기",
93
- wrappingStyle: "감싸기 스타일",
94
92
  square: "사각형",
95
93
  topAndBottom: "위아래",
96
94
  inline: "텍스트와 같은 줄",
97
95
  behindText: "텍스트 뒤",
98
- inFrontText: "텍스트 앞",
99
- wrapText: "텍스트 감싸기",
100
- bothSide: "양쪽",
101
- leftOnly: "왼쪽만",
102
- rightOnly: "오른쪽만",
103
- distanceFromText: "텍스트와 거리",
104
- top: "위(px)",
105
- left: "왼쪽(px)",
106
- bottom: "아래(px)",
107
- right: "오른쪽(px)"
108
- },
109
- "image-popup": {
110
- replace: "교체",
111
- delete: "삭제",
112
- edit: "편집",
113
- crop: "자르기",
114
- reset: "크기 초기화"
96
+ inFrontText: "텍스트 앞"
115
97
  }
116
98
  } };
117
99
 
@@ -89,29 +89,11 @@ const locale = { "drawing-ui": {
89
89
  null: "Brak zaznaczonego obiektu"
90
90
  },
91
91
  "image-text-wrap": {
92
- title: "Zawijanie tekstu",
93
- wrappingStyle: "Styl zawijania",
94
92
  square: "Kwadrat",
95
93
  topAndBottom: "Góra i dół",
96
94
  inline: "W linii z tekstem",
97
95
  behindText: "Za tekstem",
98
- inFrontText: "Przed tekstem",
99
- wrapText: "Zawijaj tekst",
100
- bothSide: "Obie strony",
101
- leftOnly: "Tylko lewa",
102
- rightOnly: "Tylko prawa",
103
- distanceFromText: "Odległość od tekstu",
104
- top: "Góra(px)",
105
- left: "Lewo(px)",
106
- bottom: "Dół(px)",
107
- right: "Prawo(px)"
108
- },
109
- "image-popup": {
110
- replace: "Zamień",
111
- delete: "Usuń",
112
- edit: "Edytuj",
113
- crop: "Przytnij",
114
- reset: "Resetuj rozmiar"
96
+ inFrontText: "Przed tekstem"
115
97
  }
116
98
  } };
117
99
 
@@ -89,29 +89,11 @@ const locale = { "drawing-ui": {
89
89
  null: "Nenhum objeto selecionado"
90
90
  },
91
91
  "image-text-wrap": {
92
- title: "Quebra de texto",
93
- wrappingStyle: "Estilo de quebra",
94
92
  square: "Quadrado",
95
93
  topAndBottom: "Superior e inferior",
96
94
  inline: "Em linha com o texto",
97
95
  behindText: "Atrás do texto",
98
- inFrontText: "À frente do texto",
99
- wrapText: "Quebrar texto automaticamente",
100
- bothSide: "Ambos os lados",
101
- leftOnly: "Somente esquerda",
102
- rightOnly: "Somente direita",
103
- distanceFromText: "Distância do texto",
104
- top: "Superior(px)",
105
- left: "Esquerda(px)",
106
- bottom: "Inferior(px)",
107
- right: "Direita(px)"
108
- },
109
- "image-popup": {
110
- replace: "Substituir",
111
- delete: "Excluir",
112
- edit: "Editar",
113
- crop: "Cortar",
114
- reset: "Redefinir tamanho"
96
+ inFrontText: "À frente do texto"
115
97
  }
116
98
  } };
117
99
 
@@ -89,29 +89,11 @@ const locale = { "drawing-ui": {
89
89
  null: "Нет выбранных объектов"
90
90
  },
91
91
  "image-text-wrap": {
92
- title: "Обтекание текстом",
93
- wrappingStyle: "Стиль обтекания",
94
92
  square: "Вокруг рамки",
95
93
  topAndBottom: "Сверху и снизу",
96
94
  inline: "В тексте",
97
95
  behindText: "За текстом",
98
- inFrontText: "Перед текстом",
99
- wrapText: "Обтекание",
100
- bothSide: "С обеих сторон",
101
- leftOnly: "Только слева",
102
- rightOnly: "Только справа",
103
- distanceFromText: "Расстояние от текста",
104
- top: "Сверху (пкс)",
105
- left: "Слева (пкс)",
106
- bottom: "Снизу (пкс)",
107
- right: "Справа (пкс)"
108
- },
109
- "image-popup": {
110
- replace: "Заменить",
111
- delete: "Удалить",
112
- edit: "Редактировать",
113
- crop: "Обрезать",
114
- reset: "Сбросить размер"
96
+ inFrontText: "Перед текстом"
115
97
  }
116
98
  } };
117
99
 
@@ -89,29 +89,11 @@ const locale = { "drawing-ui": {
89
89
  null: "Nie je vybraný žiadny objekt"
90
90
  },
91
91
  "image-text-wrap": {
92
- title: "Obtekanie textu",
93
- wrappingStyle: "Štýl obtekania",
94
92
  square: "Obdĺžnikové",
95
93
  topAndBottom: "Hore a dole",
96
94
  inline: "V riadku s textom",
97
95
  behindText: "Za textom",
98
- inFrontText: "Pred textom",
99
- wrapText: "Obtekať text",
100
- bothSide: "Obe strany",
101
- leftOnly: "Len ľavá",
102
- rightOnly: "Len pravá",
103
- distanceFromText: "Vzdialenosť od textu",
104
- top: "Hore (px)",
105
- left: "Vľavo (px)",
106
- bottom: "Dole (px)",
107
- right: "Vpravo (px)"
108
- },
109
- "image-popup": {
110
- replace: "Nahradiť",
111
- delete: "Odstrániť",
112
- edit: "Upraviť",
113
- crop: "Orezať",
114
- reset: "Obnoviť veľkosť"
96
+ inFrontText: "Pred textom"
115
97
  }
116
98
  } };
117
99
 
@@ -89,29 +89,11 @@ const locale = { "drawing-ui": {
89
89
  null: "Không có đối tượng nào được chọn"
90
90
  },
91
91
  "image-text-wrap": {
92
- title: "Bố cục văn bản",
93
- wrappingStyle: "Kiểu bố cục",
94
92
  square: "Vuông",
95
93
  topAndBottom: "Trên và dưới",
96
94
  inline: "Cùng dòng với văn bản",
97
95
  behindText: "Phía sau văn bản",
98
- inFrontText: "Phía trước văn bản",
99
- wrapText: "Bọc văn bản",
100
- bothSide: "Cả hai bên",
101
- leftOnly: "Chỉ bên trái",
102
- rightOnly: "Chỉ bên phải",
103
- distanceFromText: "Khoảng cách từ văn bản",
104
- top: "Trên (px)",
105
- left: "Trái (px)",
106
- bottom: "Dưới (px)",
107
- right: "Phải (px)"
108
- },
109
- "image-popup": {
110
- replace: "Thay thế",
111
- delete: "Xóa",
112
- edit: "Chỉnh sửa",
113
- crop: "Cắt",
114
- reset: "Đặt lại kích thước"
96
+ inFrontText: "Phía trước văn bản"
115
97
  }
116
98
  } };
117
99
 
@@ -89,29 +89,11 @@ const locale = { "drawing-ui": {
89
89
  null: "未选中任何对象"
90
90
  },
91
91
  "image-text-wrap": {
92
- title: "文字环绕",
93
- wrappingStyle: "环绕方式",
94
92
  square: "四周型",
95
93
  topAndBottom: "上下型",
96
94
  inline: "嵌入型",
97
95
  behindText: "衬于文字下方",
98
- inFrontText: "浮于文字上方",
99
- wrapText: "自动换行",
100
- bothSide: "两侧",
101
- leftOnly: "左侧",
102
- rightOnly: "右侧",
103
- distanceFromText: "距正文",
104
- top: "上(px)",
105
- left: "左(px)",
106
- bottom: "下(px)",
107
- right: "右(px)"
108
- },
109
- "image-popup": {
110
- replace: "替换",
111
- delete: "删除",
112
- edit: "编辑",
113
- crop: "裁剪",
114
- reset: "重置大小"
96
+ inFrontText: "浮于文字上方"
115
97
  }
116
98
  } };
117
99
 
@@ -89,29 +89,11 @@ const locale = { "drawing-ui": {
89
89
  null: "未選取任何物件"
90
90
  },
91
91
  "image-text-wrap": {
92
- title: "文繞圖",
93
- wrappingStyle: "文繞圖方式",
94
92
  square: "矩形",
95
93
  topAndBottom: "上及下",
96
94
  inline: "與文字排列",
97
95
  behindText: "文字在前",
98
- inFrontText: "文字在後",
99
- wrapText: "自動換行",
100
- bothSide: "兩側",
101
- leftOnly: "僅左側",
102
- rightOnly: "僅右側",
103
- distanceFromText: "與文字距離",
104
- top: "上(px)",
105
- left: "左(px)",
106
- bottom: "下(px)",
107
- right: "右(px)"
108
- },
109
- "image-popup": {
110
- replace: "替換",
111
- delete: "刪除",
112
- edit: "編輯",
113
- crop: "裁切",
114
- reset: "重置大小"
96
+ inFrontText: "文字在後"
115
97
  }
116
98
  } };
117
99
 
@@ -89,29 +89,11 @@ const locale = { "drawing-ui": {
89
89
  null: "未選取任何物件"
90
90
  },
91
91
  "image-text-wrap": {
92
- title: "文繞圖",
93
- wrappingStyle: "文繞圖方式",
94
92
  square: "矩形",
95
93
  topAndBottom: "上及下",
96
94
  inline: "與文字排列",
97
95
  behindText: "文字在前",
98
- inFrontText: "文字在後",
99
- wrapText: "自動換行",
100
- bothSide: "兩側",
101
- leftOnly: "僅左側",
102
- rightOnly: "僅右側",
103
- distanceFromText: "與文字距離",
104
- top: "上(px)",
105
- left: "左(px)",
106
- bottom: "下(px)",
107
- right: "右(px)"
108
- },
109
- "image-popup": {
110
- replace: "替換",
111
- delete: "刪除",
112
- edit: "編輯",
113
- crop: "裁切",
114
- reset: "重置大小"
96
+ inFrontText: "文字在後"
115
97
  }
116
98
  } };
117
99
 
package/lib/es/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { ArrangeTypeEnum, BooleanNumber, CommandType, DependentOn, Disposable, DrawingTypeEnum, ICommandService, IConfigService, IImageIoService, IURLImageService, IUniverInstanceService, ImageSourceType, Inject, Injector, LocaleService, Plugin, PositionedObjectLayoutType, UniverInstanceType, checkIfMove, debounce, generateRandomId, merge, toDisposable } from "@univerjs/core";
1
+ import { ArrangeTypeEnum, BooleanNumber, CommandType, DependentOn, Disposable, DisposableCollection, DrawingTypeEnum, ICommandService, IConfigService, IImageIoService, IURLImageService, IUniverInstanceService, ImageSourceType, Inject, Injector, LocaleService, Plugin, PositionedObjectLayoutType, UniverInstanceType, checkIfMove, debounce, generateRandomId, merge, toDisposable } from "@univerjs/core";
2
2
  import { DRAWING_GROUPABLE_TYPES, IDrawingManagerService, SetDrawingSelectedOperation, UniverDrawingPlugin, getDrawingShapeKeyByDrawingSearch, isGroupableDrawingType, resolveDrawingRotateEnabled } from "@univerjs/drawing";
3
3
  import { CURSOR_TYPE, Canvas, DRAWING_OBJECT_LAYER_INDEX, DrawingGroupObject, Group, IRenderManagerService, Image, RENDER_CLASS_TYPE, Rect, Shape, UniverRenderEnginePlugin, Vector2, degToRad, getGroupState, precisionTo, transformObjectOutOfGroup } from "@univerjs/engine-render";
4
- import { ComponentManager, ContextMenuGroup, ContextMenuPosition, IDialogService, IGalleryService, IMenuManagerService, IMessageService, IconManager, MenuItemType, useDependency, useObservable } from "@univerjs/ui";
4
+ import { ComponentManager, ContextMenuGroup, ContextMenuPosition, IDialogService, IGalleryService, IMenuManagerService, IMessageService, IShortcutService, IconManager, KeyCode, MenuItemType, useDependency, useObservable } from "@univerjs/ui";
5
5
  import { BehaviorSubject, Observable, bufferTime, filter, map, merge as merge$1, of, startWith, switchMap } from "rxjs";
6
- import { ArrowDownIcon, ArrowUpIcon, AutofillDoubleIcon, BottomIcon, ChartIcon, CreateCopyIcon, CropIcon, DeleteIcon, DocSettingIcon, EyeIcon, EyelashIcon, GroupIcon, LocateFixedIcon, LockIcon, MoreDownIcon, MoreRightIcon, MoveDownIcon, MoveUpIcon, TextWrapShapeIcon, TopmostIcon, UngroupIcon, UnlockIcon } from "@univerjs/icons";
6
+ import { ArrowDownIcon, ArrowUpIcon, AutofillDoubleIcon, BottomIcon, ChartIcon, CreateCopyIcon, CropIcon, DeleteIcon, DocSettingIcon, EyeIcon, EyelashIcon, GroupIcon, LocateFixedIcon, LockIcon, MoreDownIcon, MoveDownIcon, MoveUpIcon, TextWrapShapeIcon, TopmostIcon, UngroupIcon, UnlockIcon } from "@univerjs/icons";
7
7
  import { Button, Checkbox, Dropdown, DropdownMenu, Input, InputNumber, MessageType, Select, Separator, Tooltip, borderClassName, clsx } from "@univerjs/design";
8
8
  import { useEffect, useMemo, useRef, useState } from "react";
9
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -236,21 +236,21 @@ const CancelDrawingGroupOperation = {
236
236
  const OpenImageCropOperation = {
237
237
  id: "sheet.operation.open-image-crop",
238
238
  type: CommandType.OPERATION,
239
- handler: (accessor, params) => {
239
+ handler: (_accessor, _params) => {
240
240
  return true;
241
241
  }
242
242
  };
243
243
  const CloseImageCropOperation = {
244
244
  id: "sheet.operation.close-image-crop",
245
245
  type: CommandType.OPERATION,
246
- handler: (accessor, params) => {
246
+ handler: (_accessor, _params) => {
247
247
  return true;
248
248
  }
249
249
  };
250
250
  const AutoImageCropOperation = {
251
251
  id: "sheet.operation.Auto-image-crop",
252
252
  type: CommandType.OPERATION,
253
- handler: (accessor, params) => {
253
+ handler: (_accessor, _params) => {
254
254
  return true;
255
255
  }
256
256
  };
@@ -624,7 +624,7 @@ const menuSchema = { [ContextMenuPosition.DRAWING]: { [ContextMenuGroup.OTHERS]:
624
624
  //#endregion
625
625
  //#region package.json
626
626
  var name = "@univerjs/drawing-ui";
627
- var version = "1.0.0-beta.0";
627
+ var version = "1.0.0-beta.1";
628
628
 
629
629
  //#endregion
630
630
  //#region src/config/config.ts
@@ -697,11 +697,11 @@ function ImagePopupMenu(props) {
697
697
  open: visible,
698
698
  onOpenChange: onVisibleChange,
699
699
  children: /* @__PURE__ */ jsxs("div", {
700
- className: clsx("univer-flex univer-items-center univer-gap-2 univer-rounded univer-p-1 hover:univer-bg-gray-100 dark:hover:!univer-bg-gray-800", borderClassName, {
700
+ className: clsx("univer-flex univer-items-center univer-gap-2 univer-rounded univer-p-1 univer-text-gray-900 hover:univer-bg-gray-100 dark:hover:!univer-bg-gray-800", borderClassName, {
701
701
  "univer-bg-gray-100 dark:!univer-bg-gray-800": visible,
702
- "univer-bg-white dark:!univer-bg-gray-900": !visible
702
+ "univer-bg-gray-0 dark:!univer-bg-gray-900": !visible
703
703
  }),
704
- children: [/* @__PURE__ */ jsx(AutofillDoubleIcon, { className: "univer-fill-primary-600 univer-text-gray-900 dark:!univer-text-white" }), showMore && /* @__PURE__ */ jsx(MoreDownIcon, { className: "dark:!univer-text-white" })]
704
+ children: [/* @__PURE__ */ jsx(AutofillDoubleIcon, { className: "univer-fill-primary-600 univer-text-gray-900 dark:!univer-text-gray-0" }), showMore && /* @__PURE__ */ jsx(MoreDownIcon, { className: "dark:!univer-text-gray-0" })]
705
705
  })
706
706
  })
707
707
  });
@@ -742,7 +742,7 @@ function ToolbarDropdownButton(props) {
742
742
  open,
743
743
  onOpenChange: setOpen,
744
744
  overlay: /* @__PURE__ */ jsx("div", {
745
- className: "univer-min-w-32 univer-rounded-lg univer-border univer-border-solid univer-border-gray-200 univer-bg-white univer-p-1 univer-shadow-lg dark:!univer-border-gray-700 dark:!univer-bg-gray-900",
745
+ className: "univer-min-w-32 univer-rounded-lg univer-border univer-border-solid univer-border-gray-200 univer-bg-gray-0 univer-p-1 univer-shadow-lg dark:!univer-border-gray-700 dark:!univer-bg-gray-900",
746
746
  children: props.options.map((option) => /* @__PURE__ */ jsxs("button", {
747
747
  type: "button",
748
748
  onClick: () => {
@@ -831,7 +831,7 @@ function DocImageFloatingToolbar(props) {
831
831
  event.stopPropagation();
832
832
  event.preventDefault();
833
833
  },
834
- className: clsx("univer-box-border univer-flex univer-items-center univer-rounded univer-bg-white univer-px-1 univer-py-1 univer-shadow-sm dark:!univer-border-gray-700 dark:!univer-bg-gray-900", borderClassName),
834
+ className: clsx("univer-box-border univer-flex univer-items-center univer-rounded univer-bg-gray-0 univer-px-1 univer-py-1 univer-shadow-sm dark:!univer-border-gray-700 dark:!univer-bg-gray-900", borderClassName),
835
835
  children: [/* @__PURE__ */ jsx(ToolbarGroup, { children: /* @__PURE__ */ jsx(ToolbarDropdownButton, {
836
836
  title: ((_wrappingStyleOptions = wrappingStyleOptions.find((option) => option.value === wrappingStyle)) === null || _wrappingStyleOptions === void 0 ? void 0 : _wrappingStyleOptions.label) ?? localeService.t("drawing-ui.image-text-wrap.inline"),
837
837
  value: wrappingStyle,
@@ -856,11 +856,14 @@ function DocChartFloatingToolbar(props) {
856
856
  const [hidden, setHidden] = useState(false);
857
857
  const chartTypeItem = props.menuItems.find((item) => item.type === "select");
858
858
  const actionItems = props.menuItems.filter((item) => item.type !== "select" && item.icon).sort((a, b) => a.index - b.index);
859
- const chartTypeOptions = ((chartTypeItem === null || chartTypeItem === void 0 ? void 0 : chartTypeItem.options) ?? []).map((option) => ({
860
- label: String(option.label),
861
- value: option.value,
862
- icon: /* @__PURE__ */ jsx(ChartIcon, {})
863
- }));
859
+ const chartTypeOptions = ((chartTypeItem === null || chartTypeItem === void 0 ? void 0 : chartTypeItem.options) ?? []).map((option) => {
860
+ const Icon = option.icon ? iconManager.get(option.icon) : ChartIcon;
861
+ return {
862
+ label: String(option.label),
863
+ value: option.value,
864
+ icon: /* @__PURE__ */ jsx(Icon, {})
865
+ };
866
+ });
864
867
  const executeMenuItem = (item) => {
865
868
  if (!item || item.disable) return;
866
869
  if (item.hideOnClick) setHidden(true);
@@ -873,7 +876,7 @@ function DocChartFloatingToolbar(props) {
873
876
  event.stopPropagation();
874
877
  event.preventDefault();
875
878
  },
876
- className: clsx("univer-box-border univer-flex univer-items-center univer-rounded univer-bg-white univer-px-1 univer-py-1 univer-shadow-sm dark:!univer-border-gray-700 dark:!univer-bg-gray-900", borderClassName),
879
+ className: clsx("univer-box-border univer-flex univer-items-center univer-rounded univer-bg-gray-0 univer-px-1 univer-py-1 univer-shadow-sm dark:!univer-border-gray-700 dark:!univer-bg-gray-900", borderClassName),
877
880
  children: [chartTypeItem && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(ToolbarGroup, { children: /* @__PURE__ */ jsx(ToolbarDropdownButton, {
878
881
  title: localeService.t(chartTypeItem.label),
879
882
  value: chartTypeItem.value ?? ((_chartTypeOptions$ = chartTypeOptions[0]) === null || _chartTypeOptions$ === void 0 ? void 0 : _chartTypeOptions$.value) ?? "",
@@ -1953,7 +1956,7 @@ var ImageCropperObject = class extends Shape {
1953
1956
  //#endregion
1954
1957
  //#region src/controllers/image-cropper.controller.ts
1955
1958
  let ImageCropperController = class ImageCropperController extends Disposable {
1956
- constructor(_commandService, _drawingManagerService, _renderManagerService, _univerInstanceService, _messageService, _localeService) {
1959
+ constructor(_commandService, _drawingManagerService, _renderManagerService, _univerInstanceService, _messageService, _localeService, _shortcutService) {
1957
1960
  super();
1958
1961
  this._commandService = _commandService;
1959
1962
  this._drawingManagerService = _drawingManagerService;
@@ -1961,7 +1964,13 @@ let ImageCropperController = class ImageCropperController extends Disposable {
1961
1964
  this._univerInstanceService = _univerInstanceService;
1962
1965
  this._messageService = _messageService;
1963
1966
  this._localeService = _localeService;
1967
+ this._shortcutService = _shortcutService;
1964
1968
  _defineProperty(this, "_sceneListenerOnImageMap", /* @__PURE__ */ new WeakSet());
1969
+ _defineProperty(this, "_cropShortcutDisposables", new DisposableCollection());
1970
+ _defineProperty(this, "_cropSnapshots", /* @__PURE__ */ new WeakMap());
1971
+ _defineProperty(this, "_pendingCropSnapshot", null);
1972
+ _defineProperty(this, "_activeCropSession", null);
1973
+ this.disposeWithMe(this._cropShortcutDisposables);
1965
1974
  this._init();
1966
1975
  }
1967
1976
  _init() {
@@ -1996,12 +2005,17 @@ let ImageCropperController = class ImageCropperController extends Disposable {
1996
2005
  return;
1997
2006
  }
1998
2007
  if (imageShape == null) return;
1999
- this._updateCropperObject(cropType, imageShape);
2000
- this._commandService.executeCommand(OpenImageCropOperation.id, {
2001
- unitId,
2002
- subUnitId,
2003
- drawingId
2004
- });
2008
+ this._pendingCropSnapshot = this._captureCropSnapshot(imageShape);
2009
+ try {
2010
+ this._updateCropperObject(cropType, imageShape);
2011
+ this._commandService.syncExecuteCommand(OpenImageCropOperation.id, {
2012
+ unitId,
2013
+ subUnitId,
2014
+ drawingId
2015
+ });
2016
+ } finally {
2017
+ this._pendingCropSnapshot = null;
2018
+ }
2005
2019
  }));
2006
2020
  }
2007
2021
  _calculateSrcRectByRatio(left, top, width, height, numerator, denominator) {
@@ -2069,6 +2083,7 @@ let ImageCropperController = class ImageCropperController extends Disposable {
2069
2083
  if (command.id !== OpenImageCropOperation.id) return;
2070
2084
  const params = command.params;
2071
2085
  if (params == null) return;
2086
+ if (this._activeCropSession != null) this._commandService.syncExecuteCommand(CloseImageCropOperation.id, { isAuto: true });
2072
2087
  const { unitId, subUnitId, drawingId } = params;
2073
2088
  const renderObject = this._renderManagerService.getRenderUnitById(unitId);
2074
2089
  const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
@@ -2103,12 +2118,20 @@ let ImageCropperController = class ImageCropperController extends Disposable {
2103
2118
  prstGeom: imageShape.prstGeom,
2104
2119
  applyTransform: imageShape.calculateTransformWithSrcRect()
2105
2120
  });
2121
+ this._cropSnapshots.set(imageCropperObject, this._pendingCropSnapshot ?? this._captureCropSnapshot(imageShape));
2122
+ this._pendingCropSnapshot = null;
2106
2123
  scene.addObject(imageCropperObject, imageShape.getLayerIndex() + 1).attachTransformerTo(imageCropperObject);
2124
+ this._activeCropSession = {
2125
+ scene,
2126
+ imageShape,
2127
+ imageCropperObject
2128
+ };
2107
2129
  transformer === null || transformer === void 0 || transformer.createControlForCopper(imageCropperObject);
2108
2130
  this._addHoverForImageCopper(imageCropperObject);
2109
2131
  imageShape.openRenderByCropper();
2110
2132
  transformer === null || transformer === void 0 || transformer.refreshControls();
2111
2133
  imageCropperObject.makeDirty(true);
2134
+ this._registerCropShortcuts();
2112
2135
  this._commandService.syncExecuteCommand(SetDrawingSelectedOperation.id, [{
2113
2136
  unitId,
2114
2137
  subUnitId,
@@ -2123,39 +2146,40 @@ let ImageCropperController = class ImageCropperController extends Disposable {
2123
2146
  _initCloseCrop() {
2124
2147
  this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
2125
2148
  if (command.id !== CloseImageCropOperation.id) return;
2126
- const currentUnit = this._univerInstanceService.getFocusedUnit();
2127
- if (currentUnit == null) return;
2128
- const unitId = currentUnit.getUnitId();
2129
- const renderObject = this._renderManagerService.getRenderUnitById(unitId);
2130
- const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
2131
- if (scene == null) return true;
2132
- const imageCropperObject = this._searchCropObject(scene);
2133
- if (imageCropperObject == null) return;
2134
- const imageShape = this._getApplyObjectByCropObject(imageCropperObject);
2135
- if (imageShape == null) return;
2149
+ const cropSession = this._activeCropSession;
2150
+ if (cropSession == null) return;
2151
+ const { scene, imageShape, imageCropperObject } = cropSession;
2136
2152
  const transformer = scene.getTransformerByCreate();
2137
2153
  transformer.detachFrom(imageCropperObject);
2138
2154
  transformer.clearCopperControl();
2139
- const srcRect = this._getSrcRectByTransformState(imageShape, imageCropperObject);
2140
- const drawingParam = this._drawingManagerService.getDrawingOKey(imageShape.oKey);
2141
- if (drawingParam != null) {
2142
- const { left, top, height, width } = imageCropperObject;
2143
- this._drawingManagerService.featurePluginUpdateNotification([{
2144
- ...drawingParam,
2145
- transform: {
2146
- ...drawingParam.transform,
2147
- left,
2148
- top,
2149
- height,
2150
- width
2151
- },
2152
- srcRect: srcRect.srcRectAngle
2153
- }]);
2155
+ const params = command.params;
2156
+ if (params === null || params === void 0 ? void 0 : params.isCancel) this._restoreCropSnapshot(imageShape, imageCropperObject);
2157
+ else {
2158
+ const srcRect = this._getSrcRectByTransformState(imageShape, imageCropperObject);
2159
+ const drawingParam = this._drawingManagerService.getDrawingOKey(imageShape.oKey);
2160
+ if (drawingParam != null) {
2161
+ const { left, top, height, width } = imageCropperObject;
2162
+ this._drawingManagerService.featurePluginUpdateNotification([{
2163
+ ...drawingParam,
2164
+ transform: {
2165
+ ...drawingParam.transform,
2166
+ left,
2167
+ top,
2168
+ height,
2169
+ width
2170
+ },
2171
+ srcRect: srcRect.srcRectAngle
2172
+ }]);
2173
+ }
2174
+ imageShape.setSrcRect({ ...srcRect.srcRectAngle });
2154
2175
  }
2155
- imageShape.setSrcRect({ ...srcRect.srcRectAngle });
2156
2176
  imageShape.closeRenderByCropper();
2157
2177
  imageShape.makeDirty(true);
2158
- imageCropperObject === null || imageCropperObject === void 0 || imageCropperObject.dispose();
2178
+ transformer.refreshControls();
2179
+ this._cropSnapshots.delete(imageCropperObject);
2180
+ imageCropperObject.dispose();
2181
+ this._activeCropSession = null;
2182
+ this._cropShortcutDisposables.dispose();
2159
2183
  }));
2160
2184
  const sheetUnit$ = this._univerInstanceService.getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_SHEET).pipe(switchMap((workbook) => workbook ? workbook.activeSheet$ : of(null)));
2161
2185
  this.disposeWithMe(sheetUnit$.subscribe(() => {
@@ -2171,6 +2195,33 @@ let ImageCropperController = class ImageCropperController extends Disposable {
2171
2195
  if (applyObject == null) return null;
2172
2196
  return applyObject;
2173
2197
  }
2198
+ _captureCropSnapshot(imageShape) {
2199
+ return {
2200
+ transform: imageShape.getState(),
2201
+ srcRect: imageShape.srcRect == null ? imageShape.srcRect : { ...imageShape.srcRect }
2202
+ };
2203
+ }
2204
+ _restoreCropSnapshot(imageShape, imageCropperObject) {
2205
+ const snapshot = this._cropSnapshots.get(imageCropperObject);
2206
+ if (snapshot) {
2207
+ imageShape.transformByStateCloseCropper(snapshot.transform);
2208
+ imageShape.setSrcRect(snapshot.srcRect);
2209
+ }
2210
+ }
2211
+ _registerCropShortcuts() {
2212
+ this._cropShortcutDisposables.dispose();
2213
+ this._cropShortcutDisposables.add(this._shortcutService.registerShortcut({
2214
+ id: CloseImageCropOperation.id,
2215
+ binding: KeyCode.ENTER,
2216
+ priority: 1e3
2217
+ }));
2218
+ this._cropShortcutDisposables.add(this._shortcutService.registerShortcut({
2219
+ id: CloseImageCropOperation.id,
2220
+ binding: KeyCode.ESC,
2221
+ priority: 1e3,
2222
+ staticParameters: { isCancel: true }
2223
+ }));
2224
+ }
2174
2225
  _addListenerOnImage(scene) {
2175
2226
  const transformer = scene.getTransformerByCreate();
2176
2227
  let startTransform = null;
@@ -2223,8 +2274,8 @@ let ImageCropperController = class ImageCropperController extends Disposable {
2223
2274
  }));
2224
2275
  }
2225
2276
  _getSrcRectByTransformState(applyObject, imageCropperObject) {
2226
- const { left, top, height, width, strokeWidth, angle: copperAngle } = imageCropperObject;
2227
- const { left: applyLeft, top: applyTop, width: applyWidth, height: applyHeight, angle: applyAngle, strokeWidth: applyStrokeWidth } = applyObject;
2277
+ const { left, top, height, width } = imageCropperObject;
2278
+ const { left: applyLeft, top: applyTop, width: applyWidth, height: applyHeight, angle: applyAngle } = applyObject;
2228
2279
  const newLeft = left - applyLeft;
2229
2280
  const newTop = top - applyTop;
2230
2281
  const srcRect = {
@@ -2260,7 +2311,8 @@ ImageCropperController = __decorate([
2260
2311
  __decorateParam(2, IRenderManagerService),
2261
2312
  __decorateParam(3, IUniverInstanceService),
2262
2313
  __decorateParam(4, IMessageService),
2263
- __decorateParam(5, Inject(LocaleService))
2314
+ __decorateParam(5, Inject(LocaleService)),
2315
+ __decorateParam(6, IShortcutService)
2264
2316
  ], ImageCropperController);
2265
2317
 
2266
2318
  //#endregion
@@ -2746,7 +2798,7 @@ function ObjectListPanelBase(props) {
2746
2798
  ["locked", labels.filterLocked]
2747
2799
  ].map(([mode, label]) => /* @__PURE__ */ jsx("button", {
2748
2800
  type: "button",
2749
- className: clsx("univer-h-7 univer-min-w-0 univer-flex-1 univer-rounded-md univer-border univer-border-solid univer-px-2 univer-text-xs univer-outline-none univer-transition-colors dark:!univer-border-gray-700", filterMode === mode ? "dark:!univer-bg-primary-900/30 univer-border-primary-500 univer-bg-primary-50 univer-text-primary-600 dark:!univer-text-primary-200" : "univer-border-gray-200 univer-bg-white univer-text-gray-600 hover:univer-bg-gray-50 dark:!univer-bg-gray-900 dark:!univer-text-gray-300 dark:hover:!univer-bg-gray-800"),
2801
+ className: clsx("univer-h-7 univer-min-w-0 univer-flex-1 univer-rounded-md univer-border univer-border-solid univer-px-2 univer-text-xs univer-outline-none univer-transition-colors dark:!univer-border-gray-700", filterMode === mode ? "dark:!univer-bg-primary-900/30 univer-border-primary-500 univer-bg-primary-50 univer-text-primary-600 dark:!univer-text-primary-200" : "univer-border-gray-200 univer-bg-gray-0 univer-text-gray-600 hover:univer-bg-gray-50 dark:!univer-bg-gray-900 dark:!univer-text-gray-300 dark:hover:!univer-bg-gray-800"),
2750
2802
  "aria-pressed": filterMode === mode,
2751
2803
  onClick: () => setFilterMode(mode),
2752
2804
  children: /* @__PURE__ */ jsx("span", {
@@ -2776,7 +2828,7 @@ function ObjectListPanelBase(props) {
2776
2828
  children: [
2777
2829
  section.id ? /* @__PURE__ */ jsx("span", {
2778
2830
  className: "univer-flex univer-size-4 univer-shrink-0 univer-items-center univer-justify-center",
2779
- children: sectionCollapsed ? /* @__PURE__ */ jsx(MoreRightIcon, {}) : /* @__PURE__ */ jsx(MoreDownIcon, {})
2831
+ children: /* @__PURE__ */ jsx(MoreDownIcon, { className: clsx({ "-univer-rotate-90 rtl:univer-rotate-90": sectionCollapsed }) })
2780
2832
  }) : /* @__PURE__ */ jsx("span", { className: "univer-size-4 univer-shrink-0" }),
2781
2833
  /* @__PURE__ */ jsx("span", {
2782
2834
  className: "univer-min-w-0 univer-flex-1 univer-truncate univer-text-left",
@@ -2885,11 +2937,11 @@ function ObjectListRow(props) {
2885
2937
  event.stopPropagation();
2886
2938
  onToggleExpanded();
2887
2939
  },
2888
- children: item.expanded ? /* @__PURE__ */ jsx(MoreDownIcon, {}) : /* @__PURE__ */ jsx(MoreRightIcon, {})
2940
+ children: /* @__PURE__ */ jsx(MoreDownIcon, { className: clsx({ "-univer-rotate-90 rtl:univer-rotate-90": !item.expanded }) })
2889
2941
  }) : /* @__PURE__ */ jsx("span", { className: "univer-size-5 univer-shrink-0" }),
2890
2942
  showName ? /* @__PURE__ */ jsx(Input, {
2891
2943
  className: clsx("univer-h-7 univer-w-0 univer-min-w-0 univer-flex-1", disabled && "univer-cursor-not-allowed"),
2892
- inputClass: clsx("!univer-h-7 univer-min-w-0 univer-overflow-hidden univer-text-ellipsis univer-whitespace-nowrap !univer-rounded !univer-border-transparent !univer-bg-transparent !univer-px-1 univer-text-sm univer-text-gray-900 !univer-shadow-none focus:!univer-border-primary-500 focus:!univer-bg-white focus:!univer-ring-1 focus:!univer-ring-primary-100 disabled:!univer-bg-transparent disabled:univer-opacity-100 dark:!univer-text-gray-100 dark:focus:!univer-bg-gray-900 dark:focus:!univer-ring-primary-900", disabled && "univer-text-gray-400 dark:!univer-text-gray-500"),
2944
+ inputClass: clsx("!univer-h-7 univer-min-w-0 univer-overflow-hidden univer-text-ellipsis univer-whitespace-nowrap !univer-rounded !univer-border-transparent !univer-bg-transparent !univer-px-1 univer-text-sm univer-text-gray-900 !univer-shadow-none focus:!univer-border-primary-500 focus:!univer-bg-gray-0 focus:!univer-ring-1 focus:!univer-ring-primary-100 disabled:!univer-bg-transparent disabled:univer-opacity-100 dark:!univer-text-gray-100 dark:focus:!univer-bg-gray-900 dark:focus:!univer-ring-primary-900", disabled && "univer-text-gray-400 dark:!univer-text-gray-500"),
2893
2945
  inputStyle: {
2894
2946
  maxWidth: "100%",
2895
2947
  boxSizing: "border-box"
@@ -2983,7 +3035,7 @@ function ObjectDetailsEditor(props) {
2983
3035
  className: "univer-text-xs univer-text-gray-500 dark:!univer-text-gray-400",
2984
3036
  children: labels.description
2985
3037
  }), /* @__PURE__ */ jsx("textarea", {
2986
- className: "univer-box-border univer-min-h-16 univer-w-full univer-resize-none univer-rounded-md univer-border univer-border-solid univer-border-gray-200 univer-bg-white univer-p-2 univer-text-sm univer-text-gray-900 univer-outline-none focus:univer-border-primary-500 focus:univer-ring-1 focus:univer-ring-primary-100 disabled:univer-cursor-not-allowed disabled:univer-opacity-70 dark:!univer-border-gray-700 dark:!univer-bg-gray-900 dark:!univer-text-gray-100 dark:focus:!univer-ring-primary-900",
3038
+ className: "univer-box-border univer-min-h-16 univer-w-full univer-resize-none univer-rounded-md univer-border univer-border-solid univer-border-gray-200 univer-bg-gray-0 univer-p-2 univer-text-sm univer-text-gray-900 univer-outline-none focus:univer-border-primary-500 focus:univer-ring-1 focus:univer-ring-primary-100 disabled:univer-cursor-not-allowed disabled:univer-opacity-70 dark:!univer-border-gray-700 dark:!univer-bg-gray-900 dark:!univer-text-gray-100 dark:focus:!univer-ring-primary-900",
2987
3039
  value: draftDescription,
2988
3040
  disabled,
2989
3041
  placeholder: labels.descriptionPlaceholder,
@@ -3061,7 +3113,7 @@ const DrawingAlign = (props) => {
3061
3113
  }), /* @__PURE__ */ jsx("div", {
3062
3114
  className: "univer-relative univer-mt-2.5 univer-flex univer-h-full",
3063
3115
  children: /* @__PURE__ */ jsx("div", {
3064
- className: "univer-w-full univer-text-gray-900 dark:!univer-text-white",
3116
+ className: "univer-w-full univer-text-gray-900 dark:!univer-text-gray-0",
3065
3117
  children: /* @__PURE__ */ jsx(Select, {
3066
3118
  value: alignValue,
3067
3119
  options: alignOptions,