@excalidraw/excalidraw 0.17.1-7500-ac247a0 → 0.17.1-b7babe5

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 (255) hide show
  1. package/CHANGELOG.md +56 -2
  2. package/dist/browser/dev/excalidraw-assets-dev/{chunk-2W5GQUR4.js → chunk-6NMK7JTV.js} +13 -6
  3. package/dist/browser/dev/excalidraw-assets-dev/chunk-6NMK7JTV.js.map +7 -0
  4. package/dist/browser/dev/excalidraw-assets-dev/chunk-CX3RATXT.js +20324 -0
  5. package/dist/browser/dev/excalidraw-assets-dev/chunk-CX3RATXT.js.map +7 -0
  6. package/dist/browser/dev/excalidraw-assets-dev/{en-OC6JWP3X.js → en-BZY7JRTM.js} +4 -2
  7. package/dist/browser/dev/excalidraw-assets-dev/{image-5TVMINCA.js → image-CVN3YKRW.js} +2 -4
  8. package/dist/browser/dev/excalidraw-assets-dev/image-LK4UNFRZ.css +6 -0
  9. package/dist/browser/dev/excalidraw-assets-dev/image-LK4UNFRZ.css.map +7 -0
  10. package/dist/browser/dev/excalidraw-assets-dev/roundRect-T5BX56ZF.js +161 -0
  11. package/dist/browser/dev/excalidraw-assets-dev/roundRect-T5BX56ZF.js.map +7 -0
  12. package/dist/browser/dev/index.css +189 -129
  13. package/dist/browser/dev/index.css.map +3 -3
  14. package/dist/browser/dev/index.js +34964 -37
  15. package/dist/browser/dev/index.js.map +4 -4
  16. package/dist/browser/prod/excalidraw-assets/chunk-VJAIK3AX.js +55 -0
  17. package/dist/browser/prod/excalidraw-assets/chunk-YYO5DFUW.js +11 -0
  18. package/dist/browser/prod/excalidraw-assets/en-O2YCQM2W.js +1 -0
  19. package/dist/browser/prod/excalidraw-assets/image-6FKY54X5.js +1 -0
  20. package/dist/browser/prod/excalidraw-assets/image-X66R2EM5.css +1 -0
  21. package/dist/browser/prod/excalidraw-assets/roundRect-2ACQK4DA.js +1 -0
  22. package/dist/browser/prod/index.css +1 -1
  23. package/dist/browser/prod/index.js +203 -1
  24. package/dist/{prod/en-RLIAOBCI.json → dev/en-EY7E2L5O.json} +10 -5
  25. package/dist/dev/index.css +189 -129
  26. package/dist/dev/index.css.map +3 -3
  27. package/dist/dev/index.js +38702 -39409
  28. package/dist/dev/index.js.map +4 -4
  29. package/dist/excalidraw/actions/actionAddToLibrary.d.ts +15 -15
  30. package/dist/excalidraw/actions/actionAlign.d.ts +6 -6
  31. package/dist/excalidraw/actions/actionAlign.js +2 -1
  32. package/dist/excalidraw/actions/actionBoundText.d.ts +10 -10
  33. package/dist/excalidraw/actions/actionBoundText.js +8 -8
  34. package/dist/excalidraw/actions/actionCanvas.d.ts +58 -58
  35. package/dist/excalidraw/actions/actionClipboard.d.ts +34 -34
  36. package/dist/excalidraw/actions/actionClipboard.js +9 -2
  37. package/dist/excalidraw/actions/actionDeleteSelected.d.ts +15 -15
  38. package/dist/excalidraw/actions/actionDeleteSelected.js +3 -2
  39. package/dist/excalidraw/actions/actionDistribute.d.ts +2 -2
  40. package/dist/excalidraw/actions/actionDistribute.js +1 -1
  41. package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +1 -1
  42. package/dist/excalidraw/actions/actionDuplicateSelection.js +4 -3
  43. package/dist/excalidraw/actions/actionElementLock.d.ts +10 -10
  44. package/dist/excalidraw/actions/actionExport.d.ts +43 -43
  45. package/dist/excalidraw/actions/actionExport.js +4 -4
  46. package/dist/excalidraw/actions/actionFinalize.d.ts +9 -9
  47. package/dist/excalidraw/actions/actionFinalize.js +7 -6
  48. package/dist/excalidraw/actions/actionFlip.d.ts +2 -2
  49. package/dist/excalidraw/actions/actionFlip.js +11 -11
  50. package/dist/excalidraw/actions/actionFrame.d.ts +16 -16
  51. package/dist/excalidraw/actions/actionFrame.js +1 -1
  52. package/dist/excalidraw/actions/actionGroup.d.ts +10 -10
  53. package/dist/excalidraw/actions/actionGroup.js +3 -2
  54. package/dist/excalidraw/actions/actionLinearEditor.d.ts +5 -5
  55. package/dist/excalidraw/actions/actionLinearEditor.js +1 -1
  56. package/dist/excalidraw/{element/Hyperlink.d.ts → actions/actionLink.d.ts} +29 -51
  57. package/dist/excalidraw/actions/actionLink.js +40 -0
  58. package/dist/excalidraw/actions/actionMenu.d.ts +13 -13
  59. package/dist/excalidraw/actions/actionNavigate.d.ts +10 -10
  60. package/dist/excalidraw/actions/actionNavigate.js +1 -1
  61. package/dist/excalidraw/actions/actionProperties.d.ts +77 -77
  62. package/dist/excalidraw/actions/actionProperties.js +32 -27
  63. package/dist/excalidraw/actions/actionSelectAll.d.ts +5 -5
  64. package/dist/excalidraw/actions/actionSelectAll.js +1 -1
  65. package/dist/excalidraw/actions/actionStyles.d.ts +7 -7
  66. package/dist/excalidraw/actions/actionStyles.js +4 -4
  67. package/dist/excalidraw/actions/actionToggleGridMode.d.ts +5 -5
  68. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +5 -5
  69. package/dist/excalidraw/actions/actionToggleStats.d.ts +5 -5
  70. package/dist/excalidraw/actions/actionToggleViewMode.d.ts +5 -5
  71. package/dist/excalidraw/actions/actionToggleZenMode.d.ts +5 -5
  72. package/dist/excalidraw/actions/index.d.ts +1 -1
  73. package/dist/excalidraw/actions/index.js +1 -1
  74. package/dist/excalidraw/actions/manager.js +2 -1
  75. package/dist/excalidraw/align.d.ts +2 -2
  76. package/dist/excalidraw/align.js +2 -2
  77. package/dist/excalidraw/animated-trail.d.ts +33 -0
  78. package/dist/excalidraw/animated-trail.js +96 -0
  79. package/dist/excalidraw/animation-frame-handler.d.ts +16 -0
  80. package/dist/excalidraw/animation-frame-handler.js +55 -0
  81. package/dist/excalidraw/appState.d.ts +1 -1
  82. package/dist/excalidraw/appState.js +1 -3
  83. package/dist/excalidraw/clipboard.js +5 -5
  84. package/dist/excalidraw/components/Actions.d.ts +3 -3
  85. package/dist/excalidraw/components/Actions.js +18 -7
  86. package/dist/excalidraw/components/App.d.ts +23 -16
  87. package/dist/excalidraw/components/App.js +387 -272
  88. package/dist/excalidraw/components/Button.d.ts +1 -1
  89. package/dist/excalidraw/components/FilledButton.d.ts +2 -2
  90. package/dist/excalidraw/components/FilledButton.js +27 -3
  91. package/dist/excalidraw/components/FollowMode/FollowMode.js +1 -1
  92. package/dist/excalidraw/components/ImageExportDialog.d.ts +2 -1
  93. package/dist/excalidraw/components/ImageExportDialog.js +17 -13
  94. package/dist/excalidraw/components/JSONExportDialog.js +1 -1
  95. package/dist/excalidraw/components/{LaserTool/LaserPointerButton.d.ts → LaserPointerButton.d.ts} +1 -1
  96. package/dist/excalidraw/components/{LaserTool/LaserPointerButton.js → LaserPointerButton.js} +2 -2
  97. package/dist/excalidraw/components/LayerUI.js +3 -3
  98. package/dist/excalidraw/components/MobileMenu.js +1 -1
  99. package/dist/excalidraw/components/ProjectName.d.ts +0 -1
  100. package/dist/excalidraw/components/ProjectName.js +1 -1
  101. package/dist/excalidraw/components/PublishLibrary.js +1 -1
  102. package/dist/excalidraw/components/SVGLayer.d.ts +8 -0
  103. package/dist/excalidraw/components/SVGLayer.js +20 -0
  104. package/dist/excalidraw/components/ShareableLinkDialog.js +10 -10
  105. package/dist/excalidraw/components/Sidebar/Sidebar.d.ts +1 -1
  106. package/dist/excalidraw/components/Stack.d.ts +2 -2
  107. package/dist/excalidraw/components/TTDDialog/common.js +10 -1
  108. package/dist/excalidraw/components/TextField.d.ts +5 -2
  109. package/dist/excalidraw/components/TextField.js +6 -3
  110. package/dist/excalidraw/components/Toast.d.ts +3 -2
  111. package/dist/excalidraw/components/Toast.js +2 -2
  112. package/dist/excalidraw/components/ToolButton.js +2 -1
  113. package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -2
  114. package/dist/excalidraw/components/canvases/InteractiveCanvas.js +6 -5
  115. package/dist/excalidraw/components/canvases/StaticCanvas.d.ts +4 -3
  116. package/dist/excalidraw/components/canvases/StaticCanvas.js +7 -5
  117. package/dist/excalidraw/components/dropdownMenu/DropdownMenuContent.js +22 -2
  118. package/dist/excalidraw/components/hyperlink/Hyperlink.d.ts +19 -0
  119. package/dist/excalidraw/{element → components/hyperlink}/Hyperlink.js +40 -115
  120. package/dist/excalidraw/components/hyperlink/helpers.d.ts +7 -0
  121. package/dist/excalidraw/components/hyperlink/helpers.js +49 -0
  122. package/dist/excalidraw/components/icons.d.ts +2 -1
  123. package/dist/excalidraw/components/icons.js +2 -1
  124. package/dist/excalidraw/components/live-collaboration/LiveCollaborationTrigger.js +3 -2
  125. package/dist/excalidraw/components/main-menu/DefaultItems.js +5 -2
  126. package/dist/excalidraw/constants.d.ts +6 -0
  127. package/dist/excalidraw/constants.js +6 -0
  128. package/dist/excalidraw/data/blob.js +13 -14
  129. package/dist/excalidraw/data/filesystem.d.ts +1 -1
  130. package/dist/excalidraw/data/index.d.ts +2 -1
  131. package/dist/excalidraw/data/index.js +20 -16
  132. package/dist/excalidraw/data/json.d.ts +1 -1
  133. package/dist/excalidraw/data/json.js +5 -3
  134. package/dist/excalidraw/data/library.d.ts +60 -8
  135. package/dist/excalidraw/data/library.js +302 -33
  136. package/dist/excalidraw/data/resave.d.ts +1 -1
  137. package/dist/excalidraw/data/resave.js +2 -2
  138. package/dist/excalidraw/data/restore.js +8 -13
  139. package/dist/excalidraw/data/transform.js +13 -9
  140. package/dist/excalidraw/distribute.d.ts +2 -2
  141. package/dist/excalidraw/distribute.js +2 -2
  142. package/dist/excalidraw/element/ElementCanvasButtons.d.ts +3 -2
  143. package/dist/excalidraw/element/ElementCanvasButtons.js +4 -4
  144. package/dist/excalidraw/element/binding.d.ts +9 -9
  145. package/dist/excalidraw/element/binding.js +61 -59
  146. package/dist/excalidraw/element/bounds.d.ts +5 -5
  147. package/dist/excalidraw/element/bounds.js +29 -32
  148. package/dist/excalidraw/element/collision.d.ts +11 -11
  149. package/dist/excalidraw/element/collision.js +49 -46
  150. package/dist/excalidraw/element/containerCache.d.ts +11 -0
  151. package/dist/excalidraw/element/containerCache.js +14 -0
  152. package/dist/excalidraw/element/dragElements.js +10 -19
  153. package/dist/excalidraw/element/embeddable.d.ts +12 -13
  154. package/dist/excalidraw/element/embeddable.js +17 -27
  155. package/dist/excalidraw/element/image.js +1 -2
  156. package/dist/excalidraw/element/index.d.ts +8 -1
  157. package/dist/excalidraw/element/index.js +23 -1
  158. package/dist/excalidraw/element/linearElementEditor.d.ts +36 -36
  159. package/dist/excalidraw/element/linearElementEditor.js +79 -80
  160. package/dist/excalidraw/element/newElement.d.ts +4 -6
  161. package/dist/excalidraw/element/newElement.js +11 -16
  162. package/dist/excalidraw/element/resizeElements.d.ts +6 -6
  163. package/dist/excalidraw/element/resizeElements.js +40 -46
  164. package/dist/excalidraw/element/resizeTest.d.ts +3 -3
  165. package/dist/excalidraw/element/resizeTest.js +4 -4
  166. package/dist/excalidraw/element/sizeHelpers.d.ts +2 -2
  167. package/dist/excalidraw/element/sizeHelpers.js +2 -2
  168. package/dist/excalidraw/element/textElement.d.ts +34 -21
  169. package/dist/excalidraw/element/textElement.js +87 -111
  170. package/dist/excalidraw/element/textWysiwyg.d.ts +1 -6
  171. package/dist/excalidraw/element/textWysiwyg.js +15 -37
  172. package/dist/excalidraw/element/transformHandles.d.ts +4 -4
  173. package/dist/excalidraw/element/transformHandles.js +6 -6
  174. package/dist/excalidraw/element/typeChecks.js +4 -1
  175. package/dist/excalidraw/element/types.d.ts +24 -11
  176. package/dist/excalidraw/frame.d.ts +26 -20
  177. package/dist/excalidraw/frame.js +157 -84
  178. package/dist/excalidraw/groups.d.ts +3 -3
  179. package/dist/excalidraw/groups.js +11 -3
  180. package/dist/excalidraw/history.d.ts +1 -1
  181. package/dist/excalidraw/hooks/useLibraryItemSvg.js +1 -1
  182. package/dist/excalidraw/index.d.ts +9 -10
  183. package/dist/excalidraw/index.js +16 -12
  184. package/dist/excalidraw/laser-trails.d.ts +19 -0
  185. package/dist/excalidraw/laser-trails.js +95 -0
  186. package/dist/excalidraw/locales/en.json +10 -5
  187. package/dist/excalidraw/queue.d.ts +9 -0
  188. package/dist/excalidraw/queue.js +27 -0
  189. package/dist/excalidraw/reactUtils.d.ts +14 -0
  190. package/dist/excalidraw/reactUtils.js +45 -0
  191. package/dist/excalidraw/renderer/helpers.d.ts +13 -0
  192. package/dist/excalidraw/renderer/helpers.js +39 -0
  193. package/dist/excalidraw/renderer/interactiveScene.d.ts +20 -0
  194. package/dist/excalidraw/renderer/{renderScene.js → interactiveScene.js} +199 -474
  195. package/dist/excalidraw/renderer/renderElement.d.ts +6 -6
  196. package/dist/excalidraw/renderer/renderElement.js +54 -366
  197. package/dist/excalidraw/renderer/staticScene.d.ts +11 -0
  198. package/dist/excalidraw/renderer/staticScene.js +205 -0
  199. package/dist/excalidraw/renderer/staticSvgScene.d.ts +5 -0
  200. package/dist/excalidraw/renderer/staticSvgScene.js +385 -0
  201. package/dist/excalidraw/scene/Fonts.js +2 -1
  202. package/dist/excalidraw/scene/Renderer.d.ts +1 -1
  203. package/dist/excalidraw/scene/Renderer.js +32 -20
  204. package/dist/excalidraw/scene/Scene.d.ts +10 -9
  205. package/dist/excalidraw/scene/Scene.js +45 -21
  206. package/dist/excalidraw/scene/Shape.d.ts +3 -1
  207. package/dist/excalidraw/scene/Shape.js +7 -5
  208. package/dist/excalidraw/scene/ShapeCache.d.ts +2 -1
  209. package/dist/excalidraw/scene/ShapeCache.js +1 -0
  210. package/dist/excalidraw/scene/comparisons.js +2 -1
  211. package/dist/excalidraw/scene/export.d.ts +3 -0
  212. package/dist/excalidraw/scene/export.js +20 -40
  213. package/dist/excalidraw/scene/index.d.ts +0 -1
  214. package/dist/excalidraw/scene/index.js +0 -1
  215. package/dist/excalidraw/scene/scrollbars.d.ts +1 -1
  216. package/dist/excalidraw/scene/scrollbars.js +1 -1
  217. package/dist/excalidraw/scene/selection.d.ts +5 -5
  218. package/dist/excalidraw/scene/selection.js +16 -14
  219. package/dist/excalidraw/scene/types.d.ts +11 -5
  220. package/dist/excalidraw/snapping.d.ts +7 -7
  221. package/dist/excalidraw/snapping.js +21 -20
  222. package/dist/excalidraw/types.d.ts +16 -17
  223. package/dist/excalidraw/utility-types.d.ts +7 -0
  224. package/dist/excalidraw/utils.d.ts +21 -16
  225. package/dist/excalidraw/utils.js +43 -45
  226. package/dist/{dev/en-RLIAOBCI.json → prod/en-EY7E2L5O.json} +10 -5
  227. package/dist/prod/index.css +1 -1
  228. package/dist/prod/index.js +42 -42
  229. package/dist/utils/bbox.d.ts +2 -2
  230. package/dist/utils/export.d.ts +3 -3
  231. package/dist/utils/export.js +3 -13
  232. package/dist/utils/index.d.ts +2 -2
  233. package/dist/utils/index.js +2 -2
  234. package/dist/utils/withinBounds.d.ts +1 -1
  235. package/dist/utils/withinBounds.js +5 -2
  236. package/package.json +4 -4
  237. package/dist/browser/dev/excalidraw-assets-dev/chunk-2W5GQUR4.js.map +0 -7
  238. package/dist/browser/dev/excalidraw-assets-dev/chunk-KGZXLFLR.js +0 -53497
  239. package/dist/browser/dev/excalidraw-assets-dev/chunk-KGZXLFLR.js.map +0 -7
  240. package/dist/browser/dev/excalidraw-assets-dev/image-3MFRCKYM.css +0 -5797
  241. package/dist/browser/dev/excalidraw-assets-dev/image-3MFRCKYM.css.map +0 -7
  242. package/dist/browser/prod/excalidraw-assets/chunk-4YN2HN3S.js +0 -257
  243. package/dist/browser/prod/excalidraw-assets/chunk-OWLL6VOG.js +0 -11
  244. package/dist/browser/prod/excalidraw-assets/en-ERQOR3OC.js +0 -1
  245. package/dist/browser/prod/excalidraw-assets/image-LTLHTTSE.js +0 -1
  246. package/dist/browser/prod/excalidraw-assets/image-QBL334OA.css +0 -1
  247. package/dist/excalidraw/components/LaserTool/LaserPathManager.d.ts +0 -28
  248. package/dist/excalidraw/components/LaserTool/LaserPathManager.js +0 -225
  249. package/dist/excalidraw/components/LaserTool/LaserTool.d.ts +0 -8
  250. package/dist/excalidraw/components/LaserTool/LaserTool.js +0 -15
  251. package/dist/excalidraw/renderer/renderScene.d.ts +0 -25
  252. package/dist/excalidraw/vite.config.d.mts +0 -2
  253. package/dist/excalidraw/vite.config.mjs +0 -13
  254. /package/dist/browser/dev/excalidraw-assets-dev/{en-OC6JWP3X.js.map → en-BZY7JRTM.js.map} +0 -0
  255. /package/dist/browser/dev/excalidraw-assets-dev/{image-5TVMINCA.js.map → image-CVN3YKRW.js.map} +0 -0
@@ -17,7 +17,7 @@ export declare const actionChangeProjectName: {
17
17
  errorMessage: import("react").ReactNode;
18
18
  activeEmbeddable: {
19
19
  element: import("../element/types").NonDeletedExcalidrawElement;
20
- state: "active" | "hover";
20
+ state: "hover" | "active";
21
21
  } | null;
22
22
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
23
23
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -77,14 +77,14 @@ export declare const actionChangeProjectName: {
77
77
  tab?: string | undefined;
78
78
  } | null;
79
79
  openDialog: {
80
- name: "help" | "imageExport" | "jsonExport";
80
+ name: "imageExport" | "help" | "jsonExport";
81
81
  } | {
82
82
  name: "settings";
83
83
  source: "settings" | "tool" | "generation";
84
84
  tab: "text-to-diagram" | "diagram-to-code";
85
85
  } | {
86
86
  name: "ttd";
87
- tab: "mermaid" | "text-to-diagram";
87
+ tab: "text-to-diagram" | "mermaid";
88
88
  } | null;
89
89
  defaultSidebarDockedPreference: boolean;
90
90
  lastPointerDownWith: import("../element/types").PointerType;
@@ -141,7 +141,7 @@ export declare const actionChangeProjectName: {
141
141
  data: import("../charts").Spreadsheet;
142
142
  };
143
143
  pendingImageElementId: string | null;
144
- showHyperlinkPopup: false | "editor" | "info";
144
+ showHyperlinkPopup: false | "info" | "editor";
145
145
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
146
146
  snapLines: readonly import("../snapping").SnapLine[];
147
147
  originSnapOffset: {
@@ -154,7 +154,7 @@ export declare const actionChangeProjectName: {
154
154
  };
155
155
  commitToHistory: false;
156
156
  };
157
- PanelComponent: ({ appState, updateData, appProps, data }: import("./types").PanelComponentProps) => JSX.Element;
157
+ PanelComponent: ({ appState, updateData, appProps, data, app }: import("./types").PanelComponentProps) => JSX.Element;
158
158
  } & {
159
159
  keyTest?: undefined;
160
160
  };
@@ -177,7 +177,7 @@ export declare const actionChangeExportScale: {
177
177
  errorMessage: import("react").ReactNode;
178
178
  activeEmbeddable: {
179
179
  element: import("../element/types").NonDeletedExcalidrawElement;
180
- state: "active" | "hover";
180
+ state: "hover" | "active";
181
181
  } | null;
182
182
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
183
183
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -224,7 +224,7 @@ export declare const actionChangeExportScale: {
224
224
  scrollY: number;
225
225
  cursorButton: "up" | "down";
226
226
  scrolledOutside: boolean;
227
- name: string;
227
+ name: string | null;
228
228
  isResizing: boolean;
229
229
  isRotating: boolean;
230
230
  zoom: Readonly<{
@@ -237,14 +237,14 @@ export declare const actionChangeExportScale: {
237
237
  tab?: string | undefined;
238
238
  } | null;
239
239
  openDialog: {
240
- name: "help" | "imageExport" | "jsonExport";
240
+ name: "imageExport" | "help" | "jsonExport";
241
241
  } | {
242
242
  name: "settings";
243
243
  source: "settings" | "tool" | "generation";
244
244
  tab: "text-to-diagram" | "diagram-to-code";
245
245
  } | {
246
246
  name: "ttd";
247
- tab: "mermaid" | "text-to-diagram";
247
+ tab: "text-to-diagram" | "mermaid";
248
248
  } | null;
249
249
  defaultSidebarDockedPreference: boolean;
250
250
  lastPointerDownWith: import("../element/types").PointerType;
@@ -301,7 +301,7 @@ export declare const actionChangeExportScale: {
301
301
  data: import("../charts").Spreadsheet;
302
302
  };
303
303
  pendingImageElementId: string | null;
304
- showHyperlinkPopup: false | "editor" | "info";
304
+ showHyperlinkPopup: false | "info" | "editor";
305
305
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
306
306
  snapLines: readonly import("../snapping").SnapLine[];
307
307
  originSnapOffset: {
@@ -337,7 +337,7 @@ export declare const actionChangeExportBackground: {
337
337
  errorMessage: import("react").ReactNode;
338
338
  activeEmbeddable: {
339
339
  element: import("../element/types").NonDeletedExcalidrawElement;
340
- state: "active" | "hover";
340
+ state: "hover" | "active";
341
341
  } | null;
342
342
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
343
343
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -384,7 +384,7 @@ export declare const actionChangeExportBackground: {
384
384
  scrollY: number;
385
385
  cursorButton: "up" | "down";
386
386
  scrolledOutside: boolean;
387
- name: string;
387
+ name: string | null;
388
388
  isResizing: boolean;
389
389
  isRotating: boolean;
390
390
  zoom: Readonly<{
@@ -397,14 +397,14 @@ export declare const actionChangeExportBackground: {
397
397
  tab?: string | undefined;
398
398
  } | null;
399
399
  openDialog: {
400
- name: "help" | "imageExport" | "jsonExport";
400
+ name: "imageExport" | "help" | "jsonExport";
401
401
  } | {
402
402
  name: "settings";
403
403
  source: "settings" | "tool" | "generation";
404
404
  tab: "text-to-diagram" | "diagram-to-code";
405
405
  } | {
406
406
  name: "ttd";
407
- tab: "mermaid" | "text-to-diagram";
407
+ tab: "text-to-diagram" | "mermaid";
408
408
  } | null;
409
409
  defaultSidebarDockedPreference: boolean;
410
410
  lastPointerDownWith: import("../element/types").PointerType;
@@ -461,7 +461,7 @@ export declare const actionChangeExportBackground: {
461
461
  data: import("../charts").Spreadsheet;
462
462
  };
463
463
  pendingImageElementId: string | null;
464
- showHyperlinkPopup: false | "editor" | "info";
464
+ showHyperlinkPopup: false | "info" | "editor";
465
465
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
466
466
  snapLines: readonly import("../snapping").SnapLine[];
467
467
  originSnapOffset: {
@@ -497,7 +497,7 @@ export declare const actionChangeExportEmbedScene: {
497
497
  errorMessage: import("react").ReactNode;
498
498
  activeEmbeddable: {
499
499
  element: import("../element/types").NonDeletedExcalidrawElement;
500
- state: "active" | "hover";
500
+ state: "hover" | "active";
501
501
  } | null;
502
502
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
503
503
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -544,7 +544,7 @@ export declare const actionChangeExportEmbedScene: {
544
544
  scrollY: number;
545
545
  cursorButton: "up" | "down";
546
546
  scrolledOutside: boolean;
547
- name: string;
547
+ name: string | null;
548
548
  isResizing: boolean;
549
549
  isRotating: boolean;
550
550
  zoom: Readonly<{
@@ -557,14 +557,14 @@ export declare const actionChangeExportEmbedScene: {
557
557
  tab?: string | undefined;
558
558
  } | null;
559
559
  openDialog: {
560
- name: "help" | "imageExport" | "jsonExport";
560
+ name: "imageExport" | "help" | "jsonExport";
561
561
  } | {
562
562
  name: "settings";
563
563
  source: "settings" | "tool" | "generation";
564
564
  tab: "text-to-diagram" | "diagram-to-code";
565
565
  } | {
566
566
  name: "ttd";
567
- tab: "mermaid" | "text-to-diagram";
567
+ tab: "text-to-diagram" | "mermaid";
568
568
  } | null;
569
569
  defaultSidebarDockedPreference: boolean;
570
570
  lastPointerDownWith: import("../element/types").PointerType;
@@ -621,7 +621,7 @@ export declare const actionChangeExportEmbedScene: {
621
621
  data: import("../charts").Spreadsheet;
622
622
  };
623
623
  pendingImageElementId: string | null;
624
- showHyperlinkPopup: false | "editor" | "info";
624
+ showHyperlinkPopup: false | "info" | "editor";
625
625
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
626
626
  snapLines: readonly import("../snapping").SnapLine[];
627
627
  originSnapOffset: {
@@ -661,7 +661,7 @@ export declare const actionSaveToActiveFile: {
661
661
  errorMessage: import("react").ReactNode;
662
662
  activeEmbeddable: {
663
663
  element: import("../element/types").NonDeletedExcalidrawElement;
664
- state: "active" | "hover";
664
+ state: "hover" | "active";
665
665
  } | null;
666
666
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
667
667
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -709,7 +709,7 @@ export declare const actionSaveToActiveFile: {
709
709
  scrollY: number;
710
710
  cursorButton: "up" | "down";
711
711
  scrolledOutside: boolean;
712
- name: string;
712
+ name: string | null;
713
713
  isResizing: boolean;
714
714
  isRotating: boolean;
715
715
  zoom: Readonly<{
@@ -722,14 +722,14 @@ export declare const actionSaveToActiveFile: {
722
722
  tab?: string | undefined;
723
723
  } | null;
724
724
  openDialog: {
725
- name: "help" | "imageExport" | "jsonExport";
725
+ name: "imageExport" | "help" | "jsonExport";
726
726
  } | {
727
727
  name: "settings";
728
728
  source: "settings" | "tool" | "generation";
729
729
  tab: "text-to-diagram" | "diagram-to-code";
730
730
  } | {
731
731
  name: "ttd";
732
- tab: "mermaid" | "text-to-diagram";
732
+ tab: "text-to-diagram" | "mermaid";
733
733
  } | null;
734
734
  defaultSidebarDockedPreference: boolean;
735
735
  lastPointerDownWith: import("../element/types").PointerType;
@@ -780,7 +780,7 @@ export declare const actionSaveToActiveFile: {
780
780
  data: import("../charts").Spreadsheet;
781
781
  };
782
782
  pendingImageElementId: string | null;
783
- showHyperlinkPopup: false | "editor" | "info";
783
+ showHyperlinkPopup: false | "info" | "editor";
784
784
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
785
785
  snapLines: readonly import("../snapping").SnapLine[];
786
786
  originSnapOffset: {
@@ -823,7 +823,7 @@ export declare const actionSaveFileToDisk: {
823
823
  errorMessage: import("react").ReactNode;
824
824
  activeEmbeddable: {
825
825
  element: import("../element/types").NonDeletedExcalidrawElement;
826
- state: "active" | "hover";
826
+ state: "hover" | "active";
827
827
  } | null;
828
828
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
829
829
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -871,7 +871,7 @@ export declare const actionSaveFileToDisk: {
871
871
  scrollY: number;
872
872
  cursorButton: "up" | "down";
873
873
  scrolledOutside: boolean;
874
- name: string;
874
+ name: string | null;
875
875
  isResizing: boolean;
876
876
  isRotating: boolean;
877
877
  zoom: Readonly<{
@@ -932,7 +932,7 @@ export declare const actionSaveFileToDisk: {
932
932
  data: import("../charts").Spreadsheet;
933
933
  };
934
934
  pendingImageElementId: string | null;
935
- showHyperlinkPopup: false | "editor" | "info";
935
+ showHyperlinkPopup: false | "info" | "editor";
936
936
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
937
937
  snapLines: readonly import("../snapping").SnapLine[];
938
938
  originSnapOffset: {
@@ -971,7 +971,7 @@ export declare const actionLoadScene: {
971
971
  errorMessage: import("react").ReactNode;
972
972
  activeEmbeddable: {
973
973
  element: import("../element/types").NonDeletedExcalidrawElement;
974
- state: "active" | "hover";
974
+ state: "hover" | "active";
975
975
  } | null;
976
976
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
977
977
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -1019,7 +1019,7 @@ export declare const actionLoadScene: {
1019
1019
  scrollY: number;
1020
1020
  cursorButton: "up" | "down";
1021
1021
  scrolledOutside: boolean;
1022
- name: string;
1022
+ name: string | null;
1023
1023
  isResizing: boolean;
1024
1024
  isRotating: boolean;
1025
1025
  zoom: Readonly<{
@@ -1032,14 +1032,14 @@ export declare const actionLoadScene: {
1032
1032
  tab?: string | undefined;
1033
1033
  } | null;
1034
1034
  openDialog: {
1035
- name: "help" | "imageExport" | "jsonExport";
1035
+ name: "imageExport" | "help" | "jsonExport";
1036
1036
  } | {
1037
1037
  name: "settings";
1038
1038
  source: "settings" | "tool" | "generation";
1039
1039
  tab: "text-to-diagram" | "diagram-to-code";
1040
1040
  } | {
1041
1041
  name: "ttd";
1042
- tab: "mermaid" | "text-to-diagram";
1042
+ tab: "text-to-diagram" | "mermaid";
1043
1043
  } | null;
1044
1044
  defaultSidebarDockedPreference: boolean;
1045
1045
  lastPointerDownWith: import("../element/types").PointerType;
@@ -1092,7 +1092,7 @@ export declare const actionLoadScene: {
1092
1092
  data: import("../charts").Spreadsheet;
1093
1093
  };
1094
1094
  pendingImageElementId: string | null;
1095
- showHyperlinkPopup: false | "editor" | "info";
1095
+ showHyperlinkPopup: false | "info" | "editor";
1096
1096
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1097
1097
  snapLines: readonly import("../snapping").SnapLine[];
1098
1098
  originSnapOffset: {
@@ -1118,7 +1118,7 @@ export declare const actionLoadScene: {
1118
1118
  isLoading: boolean;
1119
1119
  activeEmbeddable: {
1120
1120
  element: import("../element/types").NonDeletedExcalidrawElement;
1121
- state: "active" | "hover";
1121
+ state: "hover" | "active";
1122
1122
  } | null;
1123
1123
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1124
1124
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -1166,7 +1166,7 @@ export declare const actionLoadScene: {
1166
1166
  scrollY: number;
1167
1167
  cursorButton: "up" | "down";
1168
1168
  scrolledOutside: boolean;
1169
- name: string;
1169
+ name: string | null;
1170
1170
  isResizing: boolean;
1171
1171
  isRotating: boolean;
1172
1172
  zoom: Readonly<{
@@ -1179,14 +1179,14 @@ export declare const actionLoadScene: {
1179
1179
  tab?: string | undefined;
1180
1180
  } | null;
1181
1181
  openDialog: {
1182
- name: "help" | "imageExport" | "jsonExport";
1182
+ name: "imageExport" | "help" | "jsonExport";
1183
1183
  } | {
1184
1184
  name: "settings";
1185
1185
  source: "settings" | "tool" | "generation";
1186
1186
  tab: "text-to-diagram" | "diagram-to-code";
1187
1187
  } | {
1188
1188
  name: "ttd";
1189
- tab: "mermaid" | "text-to-diagram";
1189
+ tab: "text-to-diagram" | "mermaid";
1190
1190
  } | null;
1191
1191
  defaultSidebarDockedPreference: boolean;
1192
1192
  lastPointerDownWith: import("../element/types").PointerType;
@@ -1243,7 +1243,7 @@ export declare const actionLoadScene: {
1243
1243
  data: import("../charts").Spreadsheet;
1244
1244
  };
1245
1245
  pendingImageElementId: string | null;
1246
- showHyperlinkPopup: false | "editor" | "info";
1246
+ showHyperlinkPopup: false | "info" | "editor";
1247
1247
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1248
1248
  snapLines: readonly import("../snapping").SnapLine[];
1249
1249
  originSnapOffset: {
@@ -1280,7 +1280,7 @@ export declare const actionExportWithDarkMode: {
1280
1280
  errorMessage: import("react").ReactNode;
1281
1281
  activeEmbeddable: {
1282
1282
  element: import("../element/types").NonDeletedExcalidrawElement;
1283
- state: "active" | "hover";
1283
+ state: "hover" | "active";
1284
1284
  } | null;
1285
1285
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
1286
1286
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -1327,7 +1327,7 @@ export declare const actionExportWithDarkMode: {
1327
1327
  scrollY: number;
1328
1328
  cursorButton: "up" | "down";
1329
1329
  scrolledOutside: boolean;
1330
- name: string;
1330
+ name: string | null;
1331
1331
  isResizing: boolean;
1332
1332
  isRotating: boolean;
1333
1333
  zoom: Readonly<{
@@ -1340,14 +1340,14 @@ export declare const actionExportWithDarkMode: {
1340
1340
  tab?: string | undefined;
1341
1341
  } | null;
1342
1342
  openDialog: {
1343
- name: "help" | "imageExport" | "jsonExport";
1343
+ name: "imageExport" | "help" | "jsonExport";
1344
1344
  } | {
1345
1345
  name: "settings";
1346
1346
  source: "settings" | "tool" | "generation";
1347
1347
  tab: "text-to-diagram" | "diagram-to-code";
1348
1348
  } | {
1349
1349
  name: "ttd";
1350
- tab: "mermaid" | "text-to-diagram";
1350
+ tab: "text-to-diagram" | "mermaid";
1351
1351
  } | null;
1352
1352
  defaultSidebarDockedPreference: boolean;
1353
1353
  lastPointerDownWith: import("../element/types").PointerType;
@@ -1404,7 +1404,7 @@ export declare const actionExportWithDarkMode: {
1404
1404
  data: import("../charts").Spreadsheet;
1405
1405
  };
1406
1406
  pendingImageElementId: string | null;
1407
- showHyperlinkPopup: false | "editor" | "info";
1407
+ showHyperlinkPopup: false | "info" | "editor";
1408
1408
  selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
1409
1409
  snapLines: readonly import("../snapping").SnapLine[];
1410
1410
  originSnapOffset: {
@@ -24,7 +24,7 @@ export const actionChangeProjectName = register({
24
24
  perform: (_elements, appState, value) => {
25
25
  return { appState: { ...appState, name: value }, commitToHistory: false };
26
26
  },
27
- PanelComponent: ({ appState, updateData, appProps, data }) => (_jsx(ProjectName, { label: t("labels.fileTitle"), value: appState.name || "Unnamed", onChange: (name) => updateData(name), isNameEditable: typeof appProps.name === "undefined" && !appState.viewModeEnabled, ignoreFocus: data?.ignoreFocus ?? false })),
27
+ PanelComponent: ({ appState, updateData, appProps, data, app }) => (_jsx(ProjectName, { label: t("labels.fileTitle"), value: app.getName(), onChange: (name) => updateData(name), ignoreFocus: data?.ignoreFocus ?? false })),
28
28
  });
29
29
  export const actionChangeExportScale = register({
30
30
  name: "changeExportScale",
@@ -82,8 +82,8 @@ export const actionSaveToActiveFile = register({
82
82
  const fileHandleExists = !!appState.fileHandle;
83
83
  try {
84
84
  const { fileHandle } = isImageFileHandle(appState.fileHandle)
85
- ? await resaveAsImageWithScene(elements, appState, app.files)
86
- : await saveAsJSON(elements, appState, app.files);
85
+ ? await resaveAsImageWithScene(elements, appState, app.files, app.getName())
86
+ : await saveAsJSON(elements, appState, app.files, app.getName());
87
87
  return {
88
88
  commitToHistory: false,
89
89
  appState: {
@@ -120,7 +120,7 @@ export const actionSaveFileToDisk = register({
120
120
  const { fileHandle } = await saveAsJSON(elements, {
121
121
  ...appState,
122
122
  fileHandle: null,
123
- }, app.files);
123
+ }, app.files, app.getName());
124
124
  return {
125
125
  commitToHistory: false,
126
126
  appState: {
@@ -19,7 +19,7 @@ export declare const actionFinalize: {
19
19
  errorMessage: import("react").ReactNode;
20
20
  activeEmbeddable: {
21
21
  element: import("../element/types").NonDeletedExcalidrawElement;
22
- state: "active" | "hover";
22
+ state: "hover" | "active";
23
23
  } | null;
24
24
  draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
25
25
  resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
@@ -65,7 +65,7 @@ export declare const actionFinalize: {
65
65
  scrollX: number;
66
66
  scrollY: number;
67
67
  scrolledOutside: boolean;
68
- name: string;
68
+ name: string | null;
69
69
  isResizing: boolean;
70
70
  isRotating: boolean;
71
71
  zoom: Readonly<{
@@ -78,14 +78,14 @@ export declare const actionFinalize: {
78
78
  tab?: string | undefined;
79
79
  } | null;
80
80
  openDialog: {
81
- name: "help" | "imageExport" | "jsonExport";
81
+ name: "imageExport" | "help" | "jsonExport";
82
82
  } | {
83
83
  name: "settings";
84
84
  source: "settings" | "tool" | "generation";
85
85
  tab: "text-to-diagram" | "diagram-to-code";
86
86
  } | {
87
87
  name: "ttd";
88
- tab: "mermaid" | "text-to-diagram";
88
+ tab: "text-to-diagram" | "mermaid";
89
89
  } | null;
90
90
  defaultSidebarDockedPreference: boolean;
91
91
  lastPointerDownWith: import("../element/types").PointerType;
@@ -142,7 +142,7 @@ export declare const actionFinalize: {
142
142
  data: import("../charts").Spreadsheet;
143
143
  };
144
144
  pendingImageElementId: string | null;
145
- showHyperlinkPopup: false | "editor" | "info";
145
+ showHyperlinkPopup: false | "info" | "editor";
146
146
  selectedLinearElement: LinearElementEditor | null;
147
147
  snapLines: readonly import("../snapping").SnapLine[];
148
148
  originSnapOffset: {
@@ -217,7 +217,7 @@ export declare const actionFinalize: {
217
217
  scrollX: number;
218
218
  scrollY: number;
219
219
  scrolledOutside: boolean;
220
- name: string;
220
+ name: string | null;
221
221
  isResizing: boolean;
222
222
  isRotating: boolean;
223
223
  zoom: Readonly<{
@@ -230,14 +230,14 @@ export declare const actionFinalize: {
230
230
  tab?: string | undefined;
231
231
  } | null;
232
232
  openDialog: {
233
- name: "help" | "imageExport" | "jsonExport";
233
+ name: "imageExport" | "help" | "jsonExport";
234
234
  } | {
235
235
  name: "settings";
236
236
  source: "settings" | "tool" | "generation";
237
237
  tab: "text-to-diagram" | "diagram-to-code";
238
238
  } | {
239
239
  name: "ttd";
240
- tab: "mermaid" | "text-to-diagram";
240
+ tab: "text-to-diagram" | "mermaid";
241
241
  } | null;
242
242
  defaultSidebarDockedPreference: boolean;
243
243
  lastPointerDownWith: import("../element/types").PointerType;
@@ -290,7 +290,7 @@ export declare const actionFinalize: {
290
290
  shown: true;
291
291
  data: import("../charts").Spreadsheet;
292
292
  };
293
- showHyperlinkPopup: false | "editor" | "info";
293
+ showHyperlinkPopup: false | "info" | "editor";
294
294
  snapLines: readonly import("../snapping").SnapLine[];
295
295
  originSnapOffset: {
296
296
  x: number;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { KEYS } from "../keys";
3
3
  import { isInvisiblySmallElement } from "../element";
4
- import { updateActiveTool } from "../utils";
4
+ import { arrayToMap, updateActiveTool } from "../utils";
5
5
  import { ToolButton } from "../components/ToolButton";
6
6
  import { done } from "../components/icons";
7
7
  import { t } from "../i18n";
@@ -17,12 +17,13 @@ export const actionFinalize = register({
17
17
  name: "finalize",
18
18
  trackEvent: false,
19
19
  perform: (elements, appState, _, { interactiveCanvas, focusContainer, scene }) => {
20
+ const elementsMap = scene.getNonDeletedElementsMap();
20
21
  if (appState.editingLinearElement) {
21
22
  const { elementId, startBindingElement, endBindingElement } = appState.editingLinearElement;
22
- const element = LinearElementEditor.getElement(elementId);
23
+ const element = LinearElementEditor.getElement(elementId, elementsMap);
23
24
  if (element) {
24
25
  if (isBindingElement(element)) {
25
- bindOrUnbindLinearElement(element, startBindingElement, endBindingElement);
26
+ bindOrUnbindLinearElement(element, startBindingElement, endBindingElement, elementsMap);
26
27
  }
27
28
  return {
28
29
  elements: element.points.length < 2 || isInvisiblySmallElement(element)
@@ -85,8 +86,8 @@ export const actionFinalize = register({
85
86
  if (isBindingElement(multiPointElement) &&
86
87
  !isLoop &&
87
88
  multiPointElement.points.length > 1) {
88
- const [x, y] = LinearElementEditor.getPointAtIndexGlobalCoordinates(multiPointElement, -1);
89
- maybeBindLinearElement(multiPointElement, appState, Scene.getScene(multiPointElement), { x, y });
89
+ const [x, y] = LinearElementEditor.getPointAtIndexGlobalCoordinates(multiPointElement, -1, arrayToMap(elements));
90
+ maybeBindLinearElement(multiPointElement, appState, Scene.getScene(multiPointElement), { x, y }, elementsMap);
90
91
  }
91
92
  }
92
93
  if ((!appState.activeTool.locked &&
@@ -134,7 +135,7 @@ export const actionFinalize = register({
134
135
  : appState.selectedElementIds,
135
136
  // To select the linear element when user has finished mutipoint editing
136
137
  selectedLinearElement: multiPointElement && isLinearElement(multiPointElement)
137
- ? new LinearElementEditor(multiPointElement, scene)
138
+ ? new LinearElementEditor(multiPointElement)
138
139
  : appState.selectedLinearElement,
139
140
  pendingImageElementId: null,
140
141
  },
@@ -7,7 +7,7 @@ export declare const actionFlipHorizontal: {
7
7
  category: "element";
8
8
  };
9
9
  perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, _: any, app: import("../types").AppClassProperties) => {
10
- elements: import("../scene/Scene").ExcalidrawElementsIncludingDeleted;
10
+ elements: ExcalidrawElement[];
11
11
  appState: Readonly<AppState>;
12
12
  commitToHistory: true;
13
13
  };
@@ -22,7 +22,7 @@ export declare const actionFlipVertical: {
22
22
  category: "element";
23
23
  };
24
24
  perform: (elements: readonly ExcalidrawElement[], appState: Readonly<AppState>, _: any, app: import("../types").AppClassProperties) => {
25
- elements: import("../scene/Scene").ExcalidrawElementsIncludingDeleted;
25
+ elements: ExcalidrawElement[];
26
26
  appState: Readonly<AppState>;
27
27
  commitToHistory: true;
28
28
  };
@@ -12,7 +12,7 @@ export const actionFlipHorizontal = register({
12
12
  trackEvent: { category: "element" },
13
13
  perform: (elements, appState, _, app) => {
14
14
  return {
15
- elements: updateFrameMembershipOfSelectedElements(flipSelectedElements(elements, appState, "horizontal"), appState, app),
15
+ elements: updateFrameMembershipOfSelectedElements(flipSelectedElements(elements, app.scene.getNonDeletedElementsMap(), appState, "horizontal"), appState, app),
16
16
  appState,
17
17
  commitToHistory: true,
18
18
  };
@@ -25,7 +25,7 @@ export const actionFlipVertical = register({
25
25
  trackEvent: { category: "element" },
26
26
  perform: (elements, appState, _, app) => {
27
27
  return {
28
- elements: updateFrameMembershipOfSelectedElements(flipSelectedElements(elements, appState, "vertical"), appState, app),
28
+ elements: updateFrameMembershipOfSelectedElements(flipSelectedElements(elements, app.scene.getNonDeletedElementsMap(), appState, "vertical"), appState, app),
29
29
  appState,
30
30
  commitToHistory: true,
31
31
  };
@@ -33,20 +33,20 @@ export const actionFlipVertical = register({
33
33
  keyTest: (event) => event.shiftKey && event.code === CODES.V && !event[KEYS.CTRL_OR_CMD],
34
34
  contextItemLabel: "labels.flipVertical",
35
35
  });
36
- const flipSelectedElements = (elements, appState, flipDirection) => {
36
+ const flipSelectedElements = (elements, elementsMap, appState, flipDirection) => {
37
37
  const selectedElements = getSelectedElements(getNonDeletedElements(elements), appState, {
38
38
  includeBoundTextElement: true,
39
39
  includeElementsInFrames: true,
40
40
  });
41
- const updatedElements = flipElements(selectedElements, appState, flipDirection);
41
+ const updatedElements = flipElements(selectedElements, elements, elementsMap, appState, flipDirection);
42
42
  const updatedElementsMap = arrayToMap(updatedElements);
43
43
  return elements.map((element) => updatedElementsMap.get(element.id) || element);
44
44
  };
45
- const flipElements = (elements, appState, flipDirection) => {
46
- const { minX, minY, maxX, maxY } = getCommonBoundingBox(elements);
47
- resizeMultipleElements({ originalElements: arrayToMap(elements) }, elements, "nw", true, flipDirection === "horizontal" ? maxX : minX, flipDirection === "horizontal" ? minY : maxY);
48
- (isBindingEnabled(appState)
49
- ? bindOrUnbindSelectedElements
50
- : unbindLinearElements)(elements);
51
- return elements;
45
+ const flipElements = (selectedElements, elements, elementsMap, appState, flipDirection) => {
46
+ const { minX, minY, maxX, maxY } = getCommonBoundingBox(selectedElements);
47
+ resizeMultipleElements(elementsMap, selectedElements, elementsMap, "nw", true, flipDirection === "horizontal" ? maxX : minX, flipDirection === "horizontal" ? minY : maxY);
48
+ isBindingEnabled(appState)
49
+ ? bindOrUnbindSelectedElements(selectedElements, elements, elementsMap)
50
+ : unbindLinearElements(selectedElements, elementsMap);
51
+ return selectedElements;
52
52
  };