@excalidraw/excalidraw 0.17.1-890ed9f → 0.17.1-96eeec5

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 (451) hide show
  1. package/CHANGELOG.md +15 -2
  2. package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-ACFH36JV.js → blockDiagram-91b80b7a-H47FTXHA.js} +5 -5
  3. package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-QZ27YR47.js → c4Diagram-b2a90758-NNJK6GKC.js} +3 -3
  4. package/dist/browser/dev/excalidraw-assets-dev/{chunk-HO2HMSK7.js → chunk-4KQVEBHW.js} +3 -3
  5. package/dist/browser/dev/excalidraw-assets-dev/{chunk-USGV265L.js → chunk-53YI56GV.js} +4 -4
  6. package/dist/browser/dev/excalidraw-assets-dev/{chunk-EDFX3S7X.js → chunk-A2WCJI4I.js} +3 -3
  7. package/dist/browser/dev/excalidraw-assets-dev/{chunk-WQFMSDPT.js → chunk-DEYXWPUO.js} +7503 -2575
  8. package/dist/browser/dev/excalidraw-assets-dev/chunk-DEYXWPUO.js.map +7 -0
  9. package/dist/browser/dev/excalidraw-assets-dev/{chunk-IX4V72YG.js → chunk-EFLPX7NE.js} +6 -6
  10. package/dist/browser/dev/excalidraw-assets-dev/{chunk-XOM7LNOU.js → chunk-EM6LVGFW.js} +27 -4
  11. package/dist/browser/dev/excalidraw-assets-dev/chunk-EM6LVGFW.js.map +7 -0
  12. package/dist/browser/dev/excalidraw-assets-dev/{chunk-MXVETLVM.js → chunk-JYIQCNWV.js} +2 -2
  13. package/dist/browser/dev/excalidraw-assets-dev/{chunk-YZIOORVX.js → chunk-LVIQQW6F.js} +2 -2
  14. package/dist/browser/dev/excalidraw-assets-dev/{chunk-6U7GQNJT.js → chunk-PXLO3FOU.js} +2 -2
  15. package/dist/browser/dev/excalidraw-assets-dev/{chunk-7DACDEY3.js → chunk-TO2AW5PW.js} +2 -2
  16. package/dist/browser/dev/excalidraw-assets-dev/{chunk-NJ77ZFNJ.js → chunk-VURILHLY.js} +2 -2
  17. package/dist/browser/dev/excalidraw-assets-dev/{chunk-2T2GU7NF.js → chunk-ZAYGSUHF.js} +2 -2
  18. package/dist/browser/dev/excalidraw-assets-dev/{chunk-Z3PH3V2B.js → chunk-ZQR5ML6Y.js} +26 -26
  19. package/dist/browser/dev/excalidraw-assets-dev/chunk-ZQR5ML6Y.js.map +7 -0
  20. package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-QSLMH4JW.js → classDiagram-30eddba6-CUYIJICN.js} +5 -5
  21. package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-DY4DYQ5P.js → classDiagram-v2-f2df5561-K6WW6K73.js} +8 -8
  22. package/dist/browser/dev/excalidraw-assets-dev/{dist-Z46EOVOL.js → dist-6QVAH5JA.js} +37 -15
  23. package/dist/browser/dev/excalidraw-assets-dev/dist-6QVAH5JA.js.map +7 -0
  24. package/dist/browser/dev/excalidraw-assets-dev/{en-TR4QLF5E.js → en-AZFA5HJJ.js} +4 -2
  25. package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-SOOJRTCB.js → erDiagram-47591fe2-XGAD7EEP.js} +4 -4
  26. package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-AHGL4KPK.js → flowDiagram-5540d9b9-B6EOVNNO.js} +9 -9
  27. package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-56LDZZWY.js → flowDiagram-v2-3b53844e-NUG24FJH.js} +9 -9
  28. package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-27LUKRI6.js → flowchart-elk-definition-5fe447d6-25Y7PCBL.js} +5 -5
  29. package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-EHGYGNG6.js → ganttDiagram-9a3bba1f-GNL6ZDTC.js} +2 -2
  30. package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJQNBDW5.js → gitGraphDiagram-96e6b4ee-HNW52NVO.js} +2 -2
  31. package/dist/browser/dev/excalidraw-assets-dev/{image-OIPMBJGR.js → image-5XCR4WHS.js} +2 -2
  32. package/dist/browser/dev/excalidraw-assets-dev/{image-OFRRV5MB.css → image-O66MQ7WQ.css} +1 -1
  33. package/dist/browser/dev/excalidraw-assets-dev/image-O66MQ7WQ.css.map +7 -0
  34. package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-SWLLQVES.js → infoDiagram-bcd20f53-FWEUVFLT.js} +2 -2
  35. package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-7UAVCWOZ.js → journeyDiagram-4fe6b3dc-RZIUI7UG.js} +3 -3
  36. package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-SROW5KGM.js → mindmap-definition-f354de21-GBVN45GU.js} +3 -3
  37. package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-QKCI6NCB.js → pieDiagram-79897490-ECENNII6.js} +2 -2
  38. package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-LNYJZFC5.js → quadrantDiagram-62f64e94-ZMEOFVNL.js} +2 -2
  39. package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZZD7ZHFA.js → requirementDiagram-05bf5f74-FHZSFHCR.js} +4 -4
  40. package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-L75ZZ4UM.js → sankeyDiagram-97764748-VDKIKTA6.js} +2 -2
  41. package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-6PCU7TDK.js → sequenceDiagram-acc0e65c-6JUSPVKX.js} +3 -3
  42. package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-WM76WOPR.js → stateDiagram-0ff1cf1a-L3AKWENF.js} +5 -5
  43. package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-N4HZW3O2.js → stateDiagram-v2-9a9d610d-NU3GGMCH.js} +8 -8
  44. package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-ZHGCAXGP.js → timeline-definition-fea2a41d-JGP7XCHW.js} +2 -2
  45. package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-2DLOVRAZ.js → xychartDiagram-ab372869-HLFHHF2I.js} +3 -3
  46. package/dist/browser/dev/index.css +199 -77
  47. package/dist/browser/dev/index.css.map +3 -3
  48. package/dist/browser/dev/index.js +12477 -8028
  49. package/dist/browser/dev/index.js.map +4 -4
  50. package/dist/browser/prod/excalidraw-assets/{blockDiagram-91b80b7a-ONPS22AM.js → blockDiagram-91b80b7a-FVCRVGN5.js} +1 -1
  51. package/dist/browser/prod/excalidraw-assets/{c4Diagram-b2a90758-XMIQY7ZT.js → c4Diagram-b2a90758-56CXO7GA.js} +1 -1
  52. package/dist/browser/prod/excalidraw-assets/{chunk-GCHQBOKV.js → chunk-635MQ3CK.js} +1 -1
  53. package/dist/browser/prod/excalidraw-assets/{chunk-5SYIAZGL.js → chunk-7DXALCB2.js} +5 -5
  54. package/dist/browser/prod/excalidraw-assets/{chunk-P5M3G2RP.js → chunk-AIKXYJX3.js} +1 -1
  55. package/dist/browser/prod/excalidraw-assets/{chunk-E2YLWFZX.js → chunk-CR7VMNWC.js} +1 -1
  56. package/dist/browser/prod/excalidraw-assets/{chunk-WEYK4A2L.js → chunk-FFF2CSVG.js} +1 -1
  57. package/dist/browser/prod/excalidraw-assets/{chunk-R3HAIP6R.js → chunk-G4WDCSPE.js} +1 -1
  58. package/dist/browser/prod/excalidraw-assets/{chunk-HFOXJM22.js → chunk-HKZSHFLX.js} +1 -1
  59. package/dist/browser/prod/excalidraw-assets/{chunk-XIMFFJTE.js → chunk-IKCDYWMW.js} +1 -1
  60. package/dist/browser/prod/excalidraw-assets/{chunk-AHLLBBVJ.js → chunk-L5DS24G6.js} +1 -1
  61. package/dist/browser/prod/excalidraw-assets/{chunk-CQJF3C6G.js → chunk-MUNOKHUD.js} +1 -1
  62. package/dist/browser/prod/excalidraw-assets/chunk-ODWTVSS7.js +68 -0
  63. package/dist/browser/prod/excalidraw-assets/{chunk-NI6SYCUG.js → chunk-QOQYOOQ4.js} +1 -1
  64. package/dist/browser/prod/excalidraw-assets/{chunk-I2PZFXTK.js → chunk-ZTIWFPBM.js} +21 -21
  65. package/dist/browser/prod/excalidraw-assets/{classDiagram-30eddba6-IEJXXCVX.js → classDiagram-30eddba6-BCUTAUMD.js} +1 -1
  66. package/dist/browser/prod/excalidraw-assets/{classDiagram-v2-f2df5561-7LZDSWOS.js → classDiagram-v2-f2df5561-6SOXSGQ2.js} +1 -1
  67. package/dist/browser/prod/excalidraw-assets/dist-567JAXHK.js +7 -0
  68. package/dist/browser/prod/excalidraw-assets/en-6E7MYLWO.js +1 -0
  69. package/dist/browser/prod/excalidraw-assets/{erDiagram-47591fe2-E5V666CF.js → erDiagram-47591fe2-RE6HB7RM.js} +1 -1
  70. package/dist/browser/prod/excalidraw-assets/{flowDiagram-5540d9b9-GMBRCYVF.js → flowDiagram-5540d9b9-ZNJZBERW.js} +1 -1
  71. package/dist/browser/prod/excalidraw-assets/{flowDiagram-v2-3b53844e-Z4HUWP6B.js → flowDiagram-v2-3b53844e-LY44JLQJ.js} +1 -1
  72. package/dist/browser/prod/excalidraw-assets/{flowchart-elk-definition-5fe447d6-5ZCYTX5N.js → flowchart-elk-definition-5fe447d6-TMTJ6Z7O.js} +1 -1
  73. package/dist/browser/prod/excalidraw-assets/{ganttDiagram-9a3bba1f-WM32OMT5.js → ganttDiagram-9a3bba1f-5O6EA6LX.js} +1 -1
  74. package/dist/browser/prod/excalidraw-assets/{gitGraphDiagram-96e6b4ee-CAKZ2U6E.js → gitGraphDiagram-96e6b4ee-UHYNM5DI.js} +1 -1
  75. package/dist/browser/prod/excalidraw-assets/image-LQAMCFQI.js +1 -0
  76. package/dist/browser/prod/excalidraw-assets/{infoDiagram-bcd20f53-MUIKXGC4.js → infoDiagram-bcd20f53-BP77NQEH.js} +1 -1
  77. package/dist/browser/prod/excalidraw-assets/{journeyDiagram-4fe6b3dc-NYRV4HK2.js → journeyDiagram-4fe6b3dc-XMGKCMES.js} +1 -1
  78. package/dist/browser/prod/excalidraw-assets/{mindmap-definition-f354de21-MY55DRSM.js → mindmap-definition-f354de21-ZQRRBRWF.js} +1 -1
  79. package/dist/browser/prod/excalidraw-assets/{pieDiagram-79897490-47L6J6L2.js → pieDiagram-79897490-IGXEC2KX.js} +1 -1
  80. package/dist/browser/prod/excalidraw-assets/{quadrantDiagram-62f64e94-DF5C2GDT.js → quadrantDiagram-62f64e94-WTHHDYJL.js} +1 -1
  81. package/dist/browser/prod/excalidraw-assets/{requirementDiagram-05bf5f74-C4IMUBDN.js → requirementDiagram-05bf5f74-MV4OFRVW.js} +1 -1
  82. package/dist/browser/prod/excalidraw-assets/{sankeyDiagram-97764748-YHW7EUST.js → sankeyDiagram-97764748-ZGYUHEJT.js} +1 -1
  83. package/dist/browser/prod/excalidraw-assets/{sequenceDiagram-acc0e65c-H3XEHT32.js → sequenceDiagram-acc0e65c-IBSENK6W.js} +1 -1
  84. package/dist/browser/prod/excalidraw-assets/{stateDiagram-0ff1cf1a-Z5WB6Q3P.js → stateDiagram-0ff1cf1a-DB73XNZH.js} +1 -1
  85. package/dist/browser/prod/excalidraw-assets/{stateDiagram-v2-9a9d610d-T7OZETQC.js → stateDiagram-v2-9a9d610d-2OOBUPNR.js} +1 -1
  86. package/dist/browser/prod/excalidraw-assets/{timeline-definition-fea2a41d-VVC22BWF.js → timeline-definition-fea2a41d-P3NQQVDU.js} +1 -1
  87. package/dist/browser/prod/excalidraw-assets/{xychartDiagram-ab372869-JAXODQF7.js → xychartDiagram-ab372869-HI3XLK3Y.js} +1 -1
  88. package/dist/browser/prod/index.css +1 -1
  89. package/dist/browser/prod/index.js +69 -51
  90. package/dist/{prod/en-XW4JO6VX.json → dev/en-EB2MBPAV.json} +24 -3
  91. package/dist/dev/index.css +199 -77
  92. package/dist/dev/index.css.map +3 -3
  93. package/dist/dev/index.js +15120 -11334
  94. package/dist/dev/index.js.map +4 -4
  95. package/dist/excalidraw/actions/actionAddToLibrary.d.ts +16 -7
  96. package/dist/excalidraw/actions/actionAddToLibrary.js +4 -3
  97. package/dist/excalidraw/actions/actionAlign.d.ts +22 -22
  98. package/dist/excalidraw/actions/actionAlign.js +7 -6
  99. package/dist/excalidraw/actions/actionBoundText.d.ts +18 -12
  100. package/dist/excalidraw/actions/actionBoundText.js +7 -4
  101. package/dist/excalidraw/actions/actionCanvas.d.ts +100 -64
  102. package/dist/excalidraw/actions/actionCanvas.js +17 -14
  103. package/dist/excalidraw/actions/actionClipboard.d.ts +52 -31
  104. package/dist/excalidraw/actions/actionClipboard.js +14 -13
  105. package/dist/excalidraw/actions/actionDeleteSelected.d.ts +22 -13
  106. package/dist/excalidraw/actions/actionDeleteSelected.js +6 -3
  107. package/dist/excalidraw/actions/actionDistribute.d.ts +10 -10
  108. package/dist/excalidraw/actions/actionDistribute.js +3 -2
  109. package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +7 -8
  110. package/dist/excalidraw/actions/actionDuplicateSelection.js +4 -4
  111. package/dist/excalidraw/actions/actionElementLock.d.ts +17 -11
  112. package/dist/excalidraw/actions/actionElementLock.js +3 -2
  113. package/dist/excalidraw/actions/actionExport.d.ts +68 -41
  114. package/dist/excalidraw/actions/actionExport.js +15 -11
  115. package/dist/excalidraw/actions/actionFinalize.d.ts +17 -11
  116. package/dist/excalidraw/actions/actionFinalize.js +7 -3
  117. package/dist/excalidraw/actions/actionFlip.d.ts +10 -10
  118. package/dist/excalidraw/actions/actionFlip.js +9 -9
  119. package/dist/excalidraw/actions/actionFrame.d.ts +186 -21
  120. package/dist/excalidraw/actions/actionFrame.js +7 -6
  121. package/dist/excalidraw/actions/actionGroup.d.ts +24 -18
  122. package/dist/excalidraw/actions/actionGroup.js +7 -11
  123. package/dist/excalidraw/actions/actionHistory.d.ts +4 -3
  124. package/dist/excalidraw/actions/actionHistory.js +27 -31
  125. package/dist/excalidraw/actions/actionLinearEditor.d.ts +10 -5
  126. package/dist/excalidraw/actions/actionLinearEditor.js +21 -5
  127. package/dist/excalidraw/actions/actionLink.d.ts +9 -6
  128. package/dist/excalidraw/actions/actionLink.js +2 -1
  129. package/dist/excalidraw/actions/actionMenu.d.ts +20 -11
  130. package/dist/excalidraw/actions/actionMenu.js +4 -3
  131. package/dist/excalidraw/actions/actionNavigate.d.ts +12 -6
  132. package/dist/excalidraw/actions/actionNavigate.js +3 -2
  133. package/dist/excalidraw/actions/actionProperties.d.ts +86 -47
  134. package/dist/excalidraw/actions/actionProperties.js +19 -14
  135. package/dist/excalidraw/actions/actionSelectAll.d.ts +9 -6
  136. package/dist/excalidraw/actions/actionSelectAll.js +2 -1
  137. package/dist/excalidraw/actions/actionStyles.d.ts +15 -12
  138. package/dist/excalidraw/actions/actionStyles.js +4 -3
  139. package/dist/excalidraw/actions/actionTextAutoResize.d.ts +17 -0
  140. package/dist/excalidraw/actions/actionTextAutoResize.js +38 -0
  141. package/dist/excalidraw/actions/actionToggleGridMode.d.ts +9 -6
  142. package/dist/excalidraw/actions/actionToggleGridMode.js +2 -1
  143. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +8 -5
  144. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.js +2 -1
  145. package/dist/excalidraw/actions/actionToggleStats.d.ts +9 -5
  146. package/dist/excalidraw/actions/actionToggleStats.js +6 -4
  147. package/dist/excalidraw/actions/actionToggleViewMode.d.ts +8 -5
  148. package/dist/excalidraw/actions/actionToggleViewMode.js +2 -1
  149. package/dist/excalidraw/actions/actionToggleZenMode.d.ts +8 -5
  150. package/dist/excalidraw/actions/actionToggleZenMode.js +2 -1
  151. package/dist/excalidraw/actions/actionZindex.d.ts +20 -16
  152. package/dist/excalidraw/actions/actionZindex.js +9 -4
  153. package/dist/excalidraw/actions/manager.d.ts +5 -5
  154. package/dist/excalidraw/actions/register.d.ts +1 -1
  155. package/dist/excalidraw/actions/shortcuts.d.ts +2 -2
  156. package/dist/excalidraw/actions/types.d.ts +8 -8
  157. package/dist/excalidraw/align.d.ts +1 -1
  158. package/dist/excalidraw/animated-trail.d.ts +2 -2
  159. package/dist/excalidraw/appState.d.ts +9 -6
  160. package/dist/excalidraw/appState.js +6 -3
  161. package/dist/excalidraw/change.d.ts +191 -0
  162. package/dist/excalidraw/change.js +901 -0
  163. package/dist/excalidraw/charts.d.ts +1 -1
  164. package/dist/excalidraw/clients.d.ts +2 -2
  165. package/dist/excalidraw/clients.js +1 -1
  166. package/dist/excalidraw/clipboard.d.ts +3 -3
  167. package/dist/excalidraw/colors.d.ts +1 -1
  168. package/dist/excalidraw/components/Actions.d.ts +3 -3
  169. package/dist/excalidraw/components/Actions.js +9 -6
  170. package/dist/excalidraw/components/App.d.ts +19 -20
  171. package/dist/excalidraw/components/App.js +323 -195
  172. package/dist/excalidraw/components/ButtonIconSelect.js +1 -1
  173. package/dist/excalidraw/components/CheckboxItem.js +1 -1
  174. package/dist/excalidraw/components/ColorPicker/ColorInput.d.ts +1 -1
  175. package/dist/excalidraw/components/ColorPicker/ColorInput.js +1 -1
  176. package/dist/excalidraw/components/ColorPicker/ColorPicker.d.ts +4 -4
  177. package/dist/excalidraw/components/ColorPicker/ColorPicker.js +1 -1
  178. package/dist/excalidraw/components/ColorPicker/Picker.d.ts +3 -3
  179. package/dist/excalidraw/components/ColorPicker/PickerColorList.d.ts +1 -1
  180. package/dist/excalidraw/components/ColorPicker/PickerHeading.d.ts +1 -1
  181. package/dist/excalidraw/components/ColorPicker/ShadeList.d.ts +1 -1
  182. package/dist/excalidraw/components/ColorPicker/TopPicks.d.ts +1 -1
  183. package/dist/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +2 -2
  184. package/dist/excalidraw/components/ColorPicker/colorPickerUtils.js +1 -1
  185. package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -2
  186. package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.js +1 -1
  187. package/dist/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -1
  188. package/dist/excalidraw/components/CommandPalette/CommandPalette.js +5 -5
  189. package/dist/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -1
  190. package/dist/excalidraw/components/CommandPalette/types.d.ts +3 -3
  191. package/dist/excalidraw/components/ConfirmDialog.d.ts +1 -1
  192. package/dist/excalidraw/components/ContextMenu.d.ts +2 -2
  193. package/dist/excalidraw/components/ContextMenu.js +2 -2
  194. package/dist/excalidraw/components/DarkModeToggle.d.ts +1 -1
  195. package/dist/excalidraw/components/DefaultSidebar.d.ts +2 -2
  196. package/dist/excalidraw/components/Dialog.js +1 -1
  197. package/dist/excalidraw/components/DialogActionButton.d.ts +1 -1
  198. package/dist/excalidraw/components/EyeDropper.d.ts +2 -2
  199. package/dist/excalidraw/components/FollowMode/FollowMode.d.ts +1 -1
  200. package/dist/excalidraw/components/FollowMode/FollowMode.js +1 -1
  201. package/dist/excalidraw/components/HelpDialog.js +1 -1
  202. package/dist/excalidraw/components/HintViewer.d.ts +1 -1
  203. package/dist/excalidraw/components/IconPicker.js +2 -2
  204. package/dist/excalidraw/components/ImageExportDialog.d.ts +1 -1
  205. package/dist/excalidraw/components/InitializeApp.d.ts +2 -2
  206. package/dist/excalidraw/components/JSONExportDialog.d.ts +3 -3
  207. package/dist/excalidraw/components/LayerUI.d.ts +4 -4
  208. package/dist/excalidraw/components/LayerUI.js +10 -7
  209. package/dist/excalidraw/components/LibraryMenu.d.ts +2 -2
  210. package/dist/excalidraw/components/LibraryMenuBrowseButton.d.ts +1 -1
  211. package/dist/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  212. package/dist/excalidraw/components/LibraryMenuHeaderContent.d.ts +2 -2
  213. package/dist/excalidraw/components/LibraryMenuItems.d.ts +1 -1
  214. package/dist/excalidraw/components/LibraryMenuSection.d.ts +5 -4
  215. package/dist/excalidraw/components/LibraryUnit.d.ts +2 -2
  216. package/dist/excalidraw/components/LoadingMessage.d.ts +1 -1
  217. package/dist/excalidraw/components/MagicSettings.js +2 -2
  218. package/dist/excalidraw/components/MobileMenu.d.ts +3 -3
  219. package/dist/excalidraw/components/MobileMenu.js +2 -6
  220. package/dist/excalidraw/components/Modal.d.ts +1 -1
  221. package/dist/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
  222. package/dist/excalidraw/components/PasteChartDialog.d.ts +1 -1
  223. package/dist/excalidraw/components/PasteChartDialog.js +1 -1
  224. package/dist/excalidraw/components/PublishLibrary.d.ts +1 -1
  225. package/dist/excalidraw/components/SVGLayer.d.ts +1 -1
  226. package/dist/excalidraw/components/Sidebar/Sidebar.d.ts +2 -2
  227. package/dist/excalidraw/components/Sidebar/Sidebar.js +1 -1
  228. package/dist/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -1
  229. package/dist/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -1
  230. package/dist/excalidraw/components/Sidebar/SidebarTrigger.d.ts +1 -1
  231. package/dist/excalidraw/components/Sidebar/common.d.ts +1 -1
  232. package/dist/excalidraw/components/Stack.d.ts +2 -2
  233. package/dist/excalidraw/components/Stats/Angle.d.ts +12 -0
  234. package/dist/excalidraw/components/Stats/Angle.js +52 -0
  235. package/dist/excalidraw/components/Stats/Collapsible.d.ts +9 -0
  236. package/dist/excalidraw/components/Stats/Collapsible.js +12 -0
  237. package/dist/excalidraw/components/Stats/Dimension.d.ts +12 -0
  238. package/dist/excalidraw/components/Stats/Dimension.js +67 -0
  239. package/dist/excalidraw/components/Stats/DragInput.d.ts +32 -0
  240. package/dist/excalidraw/components/Stats/DragInput.js +174 -0
  241. package/dist/excalidraw/components/Stats/FontSize.d.ts +12 -0
  242. package/dist/excalidraw/components/Stats/FontSize.js +50 -0
  243. package/dist/excalidraw/components/Stats/MultiAngle.d.ts +12 -0
  244. package/dist/excalidraw/components/Stats/MultiAngle.js +66 -0
  245. package/dist/excalidraw/components/Stats/MultiDimension.d.ts +15 -0
  246. package/dist/excalidraw/components/Stats/MultiDimension.js +197 -0
  247. package/dist/excalidraw/components/Stats/MultiFontSize.d.ts +13 -0
  248. package/dist/excalidraw/components/Stats/MultiFontSize.js +72 -0
  249. package/dist/excalidraw/components/Stats/MultiPosition.d.ts +15 -0
  250. package/dist/excalidraw/components/Stats/MultiPosition.js +100 -0
  251. package/dist/excalidraw/components/Stats/Position.d.ts +13 -0
  252. package/dist/excalidraw/components/Stats/Position.js +39 -0
  253. package/dist/excalidraw/components/Stats/index.d.ts +16 -0
  254. package/dist/excalidraw/components/Stats/index.js +78 -0
  255. package/dist/excalidraw/components/Stats/utils.d.ts +25 -0
  256. package/dist/excalidraw/components/Stats/utils.js +158 -0
  257. package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +1 -1
  258. package/dist/excalidraw/components/TTDDialog/TTDDialog.js +2 -2
  259. package/dist/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +1 -1
  260. package/dist/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +1 -1
  261. package/dist/excalidraw/components/TTDDialog/TTDDialogPanels.d.ts +1 -1
  262. package/dist/excalidraw/components/TTDDialog/TTDDialogTabs.d.ts +1 -1
  263. package/dist/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -1
  264. package/dist/excalidraw/components/TTDDialog/common.d.ts +4 -4
  265. package/dist/excalidraw/components/TextField.d.ts +1 -1
  266. package/dist/excalidraw/components/Toast.d.ts +1 -1
  267. package/dist/excalidraw/components/ToolButton.d.ts +4 -2
  268. package/dist/excalidraw/components/ToolButton.js +1 -1
  269. package/dist/excalidraw/components/Trans.d.ts +1 -1
  270. package/dist/excalidraw/components/UserList.d.ts +1 -1
  271. package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +5 -3
  272. package/dist/excalidraw/components/canvases/InteractiveCanvas.js +5 -2
  273. package/dist/excalidraw/components/canvases/StaticCanvas.d.ts +2 -2
  274. package/dist/excalidraw/components/canvases/StaticCanvas.js +2 -2
  275. package/dist/excalidraw/components/dropdownMenu/DropdownMenuItem.js +2 -2
  276. package/dist/excalidraw/components/footer/Footer.d.ts +2 -2
  277. package/dist/excalidraw/components/hyperlink/Hyperlink.d.ts +2 -2
  278. package/dist/excalidraw/components/hyperlink/helpers.d.ts +3 -3
  279. package/dist/excalidraw/components/icons.d.ts +6 -2
  280. package/dist/excalidraw/components/icons.js +22 -6
  281. package/dist/excalidraw/constants.d.ts +11 -2
  282. package/dist/excalidraw/constants.js +14 -1
  283. package/dist/excalidraw/context/ui-appState.d.ts +1 -1
  284. package/dist/excalidraw/cursor.d.ts +1 -1
  285. package/dist/excalidraw/data/EditorLocalStorage.d.ts +2 -2
  286. package/dist/excalidraw/data/blob.d.ts +5 -5
  287. package/dist/excalidraw/data/filesystem.d.ts +2 -1
  288. package/dist/excalidraw/data/index.d.ts +4 -4
  289. package/dist/excalidraw/data/json.d.ts +3 -3
  290. package/dist/excalidraw/data/library.d.ts +3 -3
  291. package/dist/excalidraw/data/magic.d.ts +3 -3
  292. package/dist/excalidraw/data/reconcile.d.ts +3 -3
  293. package/dist/excalidraw/data/reconcile.js +1 -1
  294. package/dist/excalidraw/data/resave.d.ts +2 -2
  295. package/dist/excalidraw/data/restore.d.ts +3 -3
  296. package/dist/excalidraw/data/restore.js +17 -2
  297. package/dist/excalidraw/data/transform.d.ts +3 -3
  298. package/dist/excalidraw/data/types.d.ts +3 -3
  299. package/dist/excalidraw/element/ElementCanvasButtons.d.ts +1 -1
  300. package/dist/excalidraw/element/binding.d.ts +48 -20
  301. package/dist/excalidraw/element/binding.js +354 -168
  302. package/dist/excalidraw/element/bounds.d.ts +3 -3
  303. package/dist/excalidraw/element/collision.d.ts +3 -3
  304. package/dist/excalidraw/element/collision.js +1 -1
  305. package/dist/excalidraw/element/containerCache.d.ts +1 -1
  306. package/dist/excalidraw/element/dragElements.d.ts +4 -4
  307. package/dist/excalidraw/element/dragElements.js +27 -3
  308. package/dist/excalidraw/element/embeddable.d.ts +10 -7
  309. package/dist/excalidraw/element/embeddable.js +2 -1
  310. package/dist/excalidraw/element/image.d.ts +2 -2
  311. package/dist/excalidraw/element/index.d.ts +2 -2
  312. package/dist/excalidraw/element/index.js +1 -1
  313. package/dist/excalidraw/element/linearElementEditor.d.ts +10 -7
  314. package/dist/excalidraw/element/linearElementEditor.js +9 -6
  315. package/dist/excalidraw/element/mutateElement.d.ts +3 -4
  316. package/dist/excalidraw/element/mutateElement.js +1 -1
  317. package/dist/excalidraw/element/newElement.d.ts +5 -8
  318. package/dist/excalidraw/element/newElement.js +16 -14
  319. package/dist/excalidraw/element/resizeElements.d.ts +12 -4
  320. package/dist/excalidraw/element/resizeElements.js +174 -98
  321. package/dist/excalidraw/element/resizeTest.d.ts +7 -7
  322. package/dist/excalidraw/element/resizeTest.js +53 -8
  323. package/dist/excalidraw/element/showSelectedShapeActions.d.ts +2 -2
  324. package/dist/excalidraw/element/sizeHelpers.d.ts +2 -2
  325. package/dist/excalidraw/element/sizeHelpers.js +3 -0
  326. package/dist/excalidraw/element/sortElements.d.ts +1 -1
  327. package/dist/excalidraw/element/textElement.d.ts +6 -5
  328. package/dist/excalidraw/element/textElement.js +16 -7
  329. package/dist/excalidraw/element/textWysiwyg.d.ts +12 -6
  330. package/dist/excalidraw/element/textWysiwyg.js +38 -17
  331. package/dist/excalidraw/element/transformHandles.d.ts +24 -6
  332. package/dist/excalidraw/element/transformHandles.js +22 -11
  333. package/dist/excalidraw/element/typeChecks.d.ts +5 -5
  334. package/dist/excalidraw/element/types.d.ts +16 -8
  335. package/dist/excalidraw/emitter.d.ts +1 -1
  336. package/dist/excalidraw/fractionalIndex.d.ts +1 -1
  337. package/dist/excalidraw/fractionalIndex.js +2 -4
  338. package/dist/excalidraw/frame.d.ts +3 -3
  339. package/dist/excalidraw/gatransforms.d.ts +1 -1
  340. package/dist/excalidraw/gesture.d.ts +1 -1
  341. package/dist/excalidraw/groups.d.ts +6 -4
  342. package/dist/excalidraw/groups.js +17 -0
  343. package/dist/excalidraw/history.d.ts +35 -47
  344. package/dist/excalidraw/history.js +100 -167
  345. package/dist/excalidraw/hooks/useEmitter.d.ts +2 -0
  346. package/dist/excalidraw/hooks/useEmitter.js +13 -0
  347. package/dist/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  348. package/dist/excalidraw/i18n.d.ts +1 -1
  349. package/dist/excalidraw/index.d.ts +3 -1
  350. package/dist/excalidraw/index.js +2 -0
  351. package/dist/excalidraw/jotai.d.ts +1 -1
  352. package/dist/excalidraw/laser-trails.d.ts +3 -2
  353. package/dist/excalidraw/locales/en.json +24 -3
  354. package/dist/excalidraw/math.d.ts +4 -2
  355. package/dist/excalidraw/math.js +6 -0
  356. package/dist/excalidraw/mermaid.d.ts +2 -0
  357. package/dist/excalidraw/mermaid.js +28 -0
  358. package/dist/excalidraw/points.d.ts +1 -1
  359. package/dist/excalidraw/queue.d.ts +1 -1
  360. package/dist/excalidraw/renderer/helpers.d.ts +2 -2
  361. package/dist/excalidraw/renderer/interactiveScene.d.ts +2 -2
  362. package/dist/excalidraw/renderer/interactiveScene.js +38 -11
  363. package/dist/excalidraw/renderer/renderElement.d.ts +4 -4
  364. package/dist/excalidraw/renderer/renderElement.js +5 -5
  365. package/dist/excalidraw/renderer/renderSnaps.d.ts +1 -1
  366. package/dist/excalidraw/renderer/staticScene.d.ts +1 -1
  367. package/dist/excalidraw/renderer/staticScene.js +1 -1
  368. package/dist/excalidraw/renderer/staticSvgScene.d.ts +4 -4
  369. package/dist/excalidraw/scene/Fonts.d.ts +2 -4
  370. package/dist/excalidraw/scene/Fonts.js +12 -15
  371. package/dist/excalidraw/scene/Renderer.d.ts +4 -4
  372. package/dist/excalidraw/scene/Renderer.js +2 -3
  373. package/dist/excalidraw/scene/Scene.d.ts +17 -8
  374. package/dist/excalidraw/scene/Scene.js +19 -10
  375. package/dist/excalidraw/scene/Shape.d.ts +1 -1
  376. package/dist/excalidraw/scene/ShapeCache.d.ts +4 -4
  377. package/dist/excalidraw/scene/comparisons.d.ts +2 -2
  378. package/dist/excalidraw/scene/export.d.ts +2 -2
  379. package/dist/excalidraw/scene/export.js +2 -2
  380. package/dist/excalidraw/scene/scroll.d.ts +2 -2
  381. package/dist/excalidraw/scene/scrollbars.d.ts +3 -3
  382. package/dist/excalidraw/scene/selection.d.ts +2 -2
  383. package/dist/excalidraw/scene/types.d.ts +7 -8
  384. package/dist/excalidraw/scene/zoom.d.ts +1 -1
  385. package/dist/excalidraw/shapes.d.ts +7 -0
  386. package/dist/excalidraw/shapes.js +40 -0
  387. package/dist/excalidraw/snapping.d.ts +4 -4
  388. package/dist/excalidraw/snapping.js +2 -1
  389. package/dist/excalidraw/store.d.ts +129 -0
  390. package/dist/excalidraw/store.js +296 -0
  391. package/dist/excalidraw/types.d.ts +38 -20
  392. package/dist/excalidraw/utils.d.ts +10 -4
  393. package/dist/excalidraw/utils.js +7 -0
  394. package/dist/excalidraw/zindex.d.ts +2 -2
  395. package/dist/{dev/en-XW4JO6VX.json → prod/en-EB2MBPAV.json} +24 -3
  396. package/dist/prod/index.css +1 -1
  397. package/dist/prod/index.js +39 -39
  398. package/dist/utils/bbox.d.ts +2 -2
  399. package/dist/utils/collision.d.ts +1 -1
  400. package/dist/utils/export.d.ts +2 -2
  401. package/dist/utils/geometry/geometry.d.ts +1 -1
  402. package/dist/utils/geometry/shape.d.ts +2 -1
  403. package/dist/utils/geometry/shape.js +19 -0
  404. package/dist/utils/withinBounds.d.ts +1 -1
  405. package/history.ts +163 -218
  406. package/package.json +2 -2
  407. package/dist/browser/dev/excalidraw-assets-dev/chunk-WQFMSDPT.js.map +0 -7
  408. package/dist/browser/dev/excalidraw-assets-dev/chunk-XOM7LNOU.js.map +0 -7
  409. package/dist/browser/dev/excalidraw-assets-dev/chunk-Z3PH3V2B.js.map +0 -7
  410. package/dist/browser/dev/excalidraw-assets-dev/dist-Z46EOVOL.js.map +0 -7
  411. package/dist/browser/dev/excalidraw-assets-dev/image-OFRRV5MB.css.map +0 -7
  412. package/dist/browser/prod/excalidraw-assets/chunk-U3COIHDW.js +0 -55
  413. package/dist/browser/prod/excalidraw-assets/dist-PIPZXALV.js +0 -6
  414. package/dist/browser/prod/excalidraw-assets/en-7GPZE2Y2.js +0 -1
  415. package/dist/browser/prod/excalidraw-assets/image-ZLNYKWVQ.js +0 -1
  416. package/dist/excalidraw/components/Stats.d.ts +0 -11
  417. package/dist/excalidraw/components/Stats.js +0 -13
  418. /package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-ACFH36JV.js.map → blockDiagram-91b80b7a-H47FTXHA.js.map} +0 -0
  419. /package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-QZ27YR47.js.map → c4Diagram-b2a90758-NNJK6GKC.js.map} +0 -0
  420. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-HO2HMSK7.js.map → chunk-4KQVEBHW.js.map} +0 -0
  421. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-USGV265L.js.map → chunk-53YI56GV.js.map} +0 -0
  422. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-EDFX3S7X.js.map → chunk-A2WCJI4I.js.map} +0 -0
  423. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-IX4V72YG.js.map → chunk-EFLPX7NE.js.map} +0 -0
  424. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-MXVETLVM.js.map → chunk-JYIQCNWV.js.map} +0 -0
  425. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-YZIOORVX.js.map → chunk-LVIQQW6F.js.map} +0 -0
  426. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-6U7GQNJT.js.map → chunk-PXLO3FOU.js.map} +0 -0
  427. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-7DACDEY3.js.map → chunk-TO2AW5PW.js.map} +0 -0
  428. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-NJ77ZFNJ.js.map → chunk-VURILHLY.js.map} +0 -0
  429. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-2T2GU7NF.js.map → chunk-ZAYGSUHF.js.map} +0 -0
  430. /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-QSLMH4JW.js.map → classDiagram-30eddba6-CUYIJICN.js.map} +0 -0
  431. /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-DY4DYQ5P.js.map → classDiagram-v2-f2df5561-K6WW6K73.js.map} +0 -0
  432. /package/dist/browser/dev/excalidraw-assets-dev/{en-TR4QLF5E.js.map → en-AZFA5HJJ.js.map} +0 -0
  433. /package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-SOOJRTCB.js.map → erDiagram-47591fe2-XGAD7EEP.js.map} +0 -0
  434. /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-AHGL4KPK.js.map → flowDiagram-5540d9b9-B6EOVNNO.js.map} +0 -0
  435. /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-56LDZZWY.js.map → flowDiagram-v2-3b53844e-NUG24FJH.js.map} +0 -0
  436. /package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-27LUKRI6.js.map → flowchart-elk-definition-5fe447d6-25Y7PCBL.js.map} +0 -0
  437. /package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-EHGYGNG6.js.map → ganttDiagram-9a3bba1f-GNL6ZDTC.js.map} +0 -0
  438. /package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJQNBDW5.js.map → gitGraphDiagram-96e6b4ee-HNW52NVO.js.map} +0 -0
  439. /package/dist/browser/dev/excalidraw-assets-dev/{image-OIPMBJGR.js.map → image-5XCR4WHS.js.map} +0 -0
  440. /package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-SWLLQVES.js.map → infoDiagram-bcd20f53-FWEUVFLT.js.map} +0 -0
  441. /package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-7UAVCWOZ.js.map → journeyDiagram-4fe6b3dc-RZIUI7UG.js.map} +0 -0
  442. /package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-SROW5KGM.js.map → mindmap-definition-f354de21-GBVN45GU.js.map} +0 -0
  443. /package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-QKCI6NCB.js.map → pieDiagram-79897490-ECENNII6.js.map} +0 -0
  444. /package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-LNYJZFC5.js.map → quadrantDiagram-62f64e94-ZMEOFVNL.js.map} +0 -0
  445. /package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZZD7ZHFA.js.map → requirementDiagram-05bf5f74-FHZSFHCR.js.map} +0 -0
  446. /package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-L75ZZ4UM.js.map → sankeyDiagram-97764748-VDKIKTA6.js.map} +0 -0
  447. /package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-6PCU7TDK.js.map → sequenceDiagram-acc0e65c-6JUSPVKX.js.map} +0 -0
  448. /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-WM76WOPR.js.map → stateDiagram-0ff1cf1a-L3AKWENF.js.map} +0 -0
  449. /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-N4HZW3O2.js.map → stateDiagram-v2-9a9d610d-NU3GGMCH.js.map} +0 -0
  450. /package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-ZHGCAXGP.js.map → timeline-definition-fea2a41d-JGP7XCHW.js.map} +0 -0
  451. /package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-2DLOVRAZ.js.map → xychartDiagram-ab372869-HLFHHF2I.js.map} +0 -0
@@ -0,0 +1,25 @@
1
+ import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "../../element/types";
2
+ import type { AppState } from "../../types";
3
+ export type StatsInputProperty = "x" | "y" | "width" | "height" | "angle" | "fontSize";
4
+ export declare const SMALLEST_DELTA = 0.01;
5
+ export declare const isPropertyEditable: (element: ExcalidrawElement, property: keyof ExcalidrawElement) => boolean;
6
+ export declare const getStepSizedValue: (value: number, stepSize: number) => number;
7
+ export type AtomicUnit = Record<string, true>;
8
+ export declare const getElementsInAtomicUnit: (atomicUnit: AtomicUnit, elementsMap: ElementsMap, originalElementsMap?: ElementsMap) => {
9
+ original: NonDeletedExcalidrawElement;
10
+ latest: NonDeletedExcalidrawElement;
11
+ }[];
12
+ export declare const newOrigin: (x1: number, y1: number, w1: number, h1: number, w2: number, h2: number, angle: number) => {
13
+ x: number;
14
+ y: number;
15
+ };
16
+ export declare const resizeElement: (nextWidth: number, nextHeight: number, keepAspectRatio: boolean, origElement: ExcalidrawElement, elementsMap: NonDeletedSceneElementsMap, shouldInformMutation?: boolean) => void;
17
+ export declare const moveElement: (newTopLeftX: number, newTopLeftY: number, originalElement: ExcalidrawElement, elementsMap: NonDeletedSceneElementsMap, originalElementsMap: ElementsMap, shouldInformMutation?: boolean) => void;
18
+ export declare const getAtomicUnits: (targetElements: readonly ExcalidrawElement[], appState: AppState) => AtomicUnit[];
19
+ export declare const updateBindings: (latestElement: ExcalidrawElement, elementsMap: NonDeletedSceneElementsMap, options?: {
20
+ simultaneouslyUpdated?: readonly ExcalidrawElement[];
21
+ newSize?: {
22
+ width: number;
23
+ height: number;
24
+ };
25
+ }) => void;
@@ -0,0 +1,158 @@
1
+ import { bindOrUnbindLinearElements, updateBoundElements, } from "../../element/binding";
2
+ import { mutateElement } from "../../element/mutateElement";
3
+ import { measureFontSizeFromWidth, rescalePointsInElement, } from "../../element/resizeElements";
4
+ import { getApproxMinLineHeight, getApproxMinLineWidth, getBoundTextElement, getBoundTextMaxWidth, handleBindTextResize, } from "../../element/textElement";
5
+ import { isFrameLikeElement, isLinearElement, isTextElement, } from "../../element/typeChecks";
6
+ import { getSelectedGroupIds, getElementsInGroup, isInGroup, } from "../../groups";
7
+ import { rotate } from "../../math";
8
+ import { getFontString } from "../../utils";
9
+ export const SMALLEST_DELTA = 0.01;
10
+ export const isPropertyEditable = (element, property) => {
11
+ if (property === "height" && isTextElement(element)) {
12
+ return false;
13
+ }
14
+ if (property === "width" && isTextElement(element)) {
15
+ return false;
16
+ }
17
+ if (property === "angle" && isFrameLikeElement(element)) {
18
+ return false;
19
+ }
20
+ return true;
21
+ };
22
+ export const getStepSizedValue = (value, stepSize) => {
23
+ const v = value + stepSize / 2;
24
+ return v - (v % stepSize);
25
+ };
26
+ export const getElementsInAtomicUnit = (atomicUnit, elementsMap, originalElementsMap) => {
27
+ return Object.keys(atomicUnit)
28
+ .map((id) => ({
29
+ original: (originalElementsMap ?? elementsMap).get(id),
30
+ latest: elementsMap.get(id),
31
+ }))
32
+ .filter((el) => el.original !== undefined && el.latest !== undefined);
33
+ };
34
+ export const newOrigin = (x1, y1, w1, h1, w2, h2, angle) => {
35
+ /**
36
+ * The formula below is the result of solving
37
+ * rotate(x1, y1, cx1, cy1, angle) = rotate(x2, y2, cx2, cy2, angle)
38
+ * where rotate is the function defined in math.ts
39
+ *
40
+ * This is so that the new origin (x2, y2),
41
+ * when rotated against the new center (cx2, cy2),
42
+ * coincides with (x1, y1) rotated against (cx1, cy1)
43
+ *
44
+ * The reason for doing this computation is so the element's top left corner
45
+ * on the canvas remains fixed after any changes in its dimension.
46
+ */
47
+ return {
48
+ x: x1 +
49
+ (w1 - w2) / 2 +
50
+ ((w2 - w1) / 2) * Math.cos(angle) +
51
+ ((h1 - h2) / 2) * Math.sin(angle),
52
+ y: y1 +
53
+ (h1 - h2) / 2 +
54
+ ((w2 - w1) / 2) * Math.sin(angle) +
55
+ ((h2 - h1) / 2) * Math.cos(angle),
56
+ };
57
+ };
58
+ export const resizeElement = (nextWidth, nextHeight, keepAspectRatio, origElement, elementsMap, shouldInformMutation = true) => {
59
+ const latestElement = elementsMap.get(origElement.id);
60
+ if (!latestElement) {
61
+ return;
62
+ }
63
+ let boundTextFont = {};
64
+ const boundTextElement = getBoundTextElement(latestElement, elementsMap);
65
+ if (boundTextElement) {
66
+ const minWidth = getApproxMinLineWidth(getFontString(boundTextElement), boundTextElement.lineHeight);
67
+ const minHeight = getApproxMinLineHeight(boundTextElement.fontSize, boundTextElement.lineHeight);
68
+ nextWidth = Math.max(nextWidth, minWidth);
69
+ nextHeight = Math.max(nextHeight, minHeight);
70
+ }
71
+ mutateElement(latestElement, {
72
+ ...newOrigin(latestElement.x, latestElement.y, latestElement.width, latestElement.height, nextWidth, nextHeight, latestElement.angle),
73
+ width: nextWidth,
74
+ height: nextHeight,
75
+ ...rescalePointsInElement(origElement, nextWidth, nextHeight, true),
76
+ }, shouldInformMutation);
77
+ updateBindings(latestElement, elementsMap, {
78
+ newSize: {
79
+ width: nextWidth,
80
+ height: nextHeight,
81
+ },
82
+ });
83
+ if (boundTextElement) {
84
+ boundTextFont = {
85
+ fontSize: boundTextElement.fontSize,
86
+ };
87
+ if (keepAspectRatio) {
88
+ const updatedElement = {
89
+ ...latestElement,
90
+ width: nextWidth,
91
+ height: nextHeight,
92
+ };
93
+ const nextFont = measureFontSizeFromWidth(boundTextElement, elementsMap, getBoundTextMaxWidth(updatedElement, boundTextElement));
94
+ boundTextFont = {
95
+ fontSize: nextFont?.size ?? boundTextElement.fontSize,
96
+ };
97
+ }
98
+ }
99
+ if (boundTextElement && boundTextFont) {
100
+ mutateElement(boundTextElement, {
101
+ fontSize: boundTextFont.fontSize,
102
+ });
103
+ }
104
+ handleBindTextResize(latestElement, elementsMap, "e", keepAspectRatio);
105
+ };
106
+ export const moveElement = (newTopLeftX, newTopLeftY, originalElement, elementsMap, originalElementsMap, shouldInformMutation = true) => {
107
+ const latestElement = elementsMap.get(originalElement.id);
108
+ if (!latestElement) {
109
+ return;
110
+ }
111
+ const [cx, cy] = [
112
+ originalElement.x + originalElement.width / 2,
113
+ originalElement.y + originalElement.height / 2,
114
+ ];
115
+ const [topLeftX, topLeftY] = rotate(originalElement.x, originalElement.y, cx, cy, originalElement.angle);
116
+ const changeInX = newTopLeftX - topLeftX;
117
+ const changeInY = newTopLeftY - topLeftY;
118
+ const [x, y] = rotate(newTopLeftX, newTopLeftY, cx + changeInX, cy + changeInY, -originalElement.angle);
119
+ mutateElement(latestElement, {
120
+ x,
121
+ y,
122
+ }, shouldInformMutation);
123
+ updateBindings(latestElement, elementsMap);
124
+ const boundTextElement = getBoundTextElement(originalElement, originalElementsMap);
125
+ if (boundTextElement) {
126
+ const latestBoundTextElement = elementsMap.get(boundTextElement.id);
127
+ latestBoundTextElement &&
128
+ mutateElement(latestBoundTextElement, {
129
+ x: boundTextElement.x + changeInX,
130
+ y: boundTextElement.y + changeInY,
131
+ }, shouldInformMutation);
132
+ }
133
+ };
134
+ export const getAtomicUnits = (targetElements, appState) => {
135
+ const selectedGroupIds = getSelectedGroupIds(appState);
136
+ const _atomicUnits = selectedGroupIds.map((gid) => {
137
+ return getElementsInGroup(targetElements, gid).reduce((acc, el) => {
138
+ acc[el.id] = true;
139
+ return acc;
140
+ }, {});
141
+ });
142
+ targetElements
143
+ .filter((el) => !isInGroup(el))
144
+ .forEach((el) => {
145
+ _atomicUnits.push({
146
+ [el.id]: true,
147
+ });
148
+ });
149
+ return _atomicUnits;
150
+ };
151
+ export const updateBindings = (latestElement, elementsMap, options) => {
152
+ if (isLinearElement(latestElement)) {
153
+ bindOrUnbindLinearElements([latestElement], elementsMap, true, []);
154
+ }
155
+ else {
156
+ updateBoundElements(latestElement, elementsMap, options);
157
+ }
158
+ };
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import "./MermaidToExcalidraw.scss";
3
- import { MermaidToExcalidrawLibProps } from "./common";
3
+ import type { MermaidToExcalidrawLibProps } from "./common";
4
4
  declare const MermaidToExcalidraw: ({ mermaidToExcalidrawLib, }: {
5
5
  mermaidToExcalidrawLib: MermaidToExcalidrawLibProps;
6
6
  }) => JSX.Element;
@@ -141,8 +141,8 @@ export const TTDDialogBase = withInternalFallback("TTDDialogBase", ({ tab, ...re
141
141
  marginLeft: "10px",
142
142
  fontSize: 10,
143
143
  borderRadius: "12px",
144
- background: "pink",
145
- color: "#000",
144
+ background: "var(--color-promo)",
145
+ color: "var(--color-surface-lowest)",
146
146
  }, children: "AI Beta" })] }) }), _jsx(TTDDialogTabTrigger, { tab: "mermaid", children: "Mermaid" })] })), _jsx(TTDDialogTab, { className: "ttd-dialog-content", tab: "mermaid", children: _jsx(MermaidToExcalidraw, { mermaidToExcalidrawLib: mermaidToExcalidrawLib }) }), !("__fallback" in rest) && (_jsxs(TTDDialogTab, { className: "ttd-dialog-content", tab: "text-to-diagram", children: [_jsx("div", { className: "ttd-dialog-desc", children: "Currently we use Mermaid as a middle step, so you'll get best results if you describe a diagram, workflow, flow chart, and similar." }), _jsxs(TTDDialogPanels, { children: [_jsx(TTDDialogPanel, { label: t("labels.prompt"), panelAction: {
147
147
  action: onGenerate,
148
148
  label: "Generate",
@@ -1,4 +1,4 @@
1
- import { ChangeEventHandler } from "react";
1
+ import type { ChangeEventHandler } from "react";
2
2
  interface TTDDialogInputProps {
3
3
  input: string;
4
4
  placeholder: string;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from "react";
1
+ import type { ReactNode } from "react";
2
2
  interface TTDDialogPanelProps {
3
3
  label: string;
4
4
  children: ReactNode;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from "react";
1
+ import type { ReactNode } from "react";
2
2
  export declare const TTDDialogPanels: ({ children }: {
3
3
  children: ReactNode;
4
4
  }) => JSX.Element;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from "react";
1
+ import type { ReactNode } from "react";
2
2
  declare const TTDDialogTabs: {
3
3
  (props: {
4
4
  children: ReactNode;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from "react";
1
+ import type { ReactNode } from "react";
2
2
  export declare const TTDDialogTrigger: {
3
3
  ({ children, icon, }: {
4
4
  children?: ReactNode;
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
- import { MermaidOptions } from "@excalidraw/mermaid-to-excalidraw";
3
- import { MermaidToExcalidrawResult } from "@excalidraw/mermaid-to-excalidraw/dist/interfaces";
4
- import { NonDeletedExcalidrawElement } from "../../element/types";
5
- import { AppClassProperties, BinaryFiles } from "../../types";
2
+ import type { MermaidOptions } from "@excalidraw/mermaid-to-excalidraw";
3
+ import type { MermaidToExcalidrawResult } from "@excalidraw/mermaid-to-excalidraw/dist/interfaces";
4
+ import type { NonDeletedExcalidrawElement } from "../../element/types";
5
+ import type { AppClassProperties, BinaryFiles } from "../../types";
6
6
  export interface MermaidToExcalidrawLibProps {
7
7
  loaded: boolean;
8
8
  api: Promise<{
@@ -1,4 +1,4 @@
1
- import { KeyboardEvent } from "react";
1
+ import type { KeyboardEvent } from "react";
2
2
  import "./TextField.scss";
3
3
  type TextFieldProps = {
4
4
  onChange?: (value: string) => void;
@@ -1,4 +1,4 @@
1
- import { CSSProperties } from "react";
1
+ import type { CSSProperties } from "react";
2
2
  import "./Toast.scss";
3
3
  export declare const Toast: ({ message, onClose, closable, duration, style, }: {
4
4
  message: string;
@@ -1,6 +1,7 @@
1
1
  import "./ToolIcon.scss";
2
- import React, { CSSProperties } from "react";
3
- import { PointerType } from "../element/types";
2
+ import type { CSSProperties } from "react";
3
+ import React from "react";
4
+ import type { PointerType } from "../element/types";
4
5
  export type ToolButtonSize = "small" | "medium";
5
6
  type ToolButtonBaseProps = {
6
7
  icon?: React.ReactNode;
@@ -17,6 +18,7 @@ type ToolButtonBaseProps = {
17
18
  hidden?: boolean;
18
19
  visible?: boolean;
19
20
  selected?: boolean;
21
+ disabled?: boolean;
20
22
  className?: string;
21
23
  style?: CSSProperties;
22
24
  isLoading?: boolean;
@@ -52,7 +52,7 @@ export const ToolButton = React.forwardRef((props, ref) => {
52
52
  ToolIcon: !props.hidden,
53
53
  "ToolIcon--selected": props.selected,
54
54
  "ToolIcon--plain": props.type === "icon",
55
- }), style: props.style, "data-testid": props["data-testid"], hidden: props.hidden, title: props.title, "aria-label": props["aria-label"], type: type, onClick: onClick, ref: innerRef, disabled: isLoading || props.isLoading, children: [(props.icon || props.label) && (_jsxs("div", { className: "ToolIcon__icon", "aria-hidden": "true", children: [props.icon || props.label, props.keyBindingLabel && (_jsx("span", { className: "ToolIcon__keybinding", children: props.keyBindingLabel })), props.isLoading && _jsx(Spinner, {})] })), props.showAriaLabel && (_jsxs("div", { className: "ToolIcon__label", children: [props["aria-label"], " ", isLoading && _jsx(Spinner, {})] })), props.children] }));
55
+ }), style: props.style, "data-testid": props["data-testid"], hidden: props.hidden, title: props.title, "aria-label": props["aria-label"], type: type, onClick: onClick, ref: innerRef, disabled: isLoading || props.isLoading || !!props.disabled, children: [(props.icon || props.label) && (_jsxs("div", { className: "ToolIcon__icon", "aria-hidden": "true", "aria-disabled": !!props.disabled, children: [props.icon || props.label, props.keyBindingLabel && (_jsx("span", { className: "ToolIcon__keybinding", children: props.keyBindingLabel })), props.isLoading && _jsx(Spinner, {})] })), props.showAriaLabel && (_jsxs("div", { className: "ToolIcon__label", children: [props["aria-label"], " ", isLoading && _jsx(Spinner, {})] })), props.children] }));
56
56
  }
57
57
  return (_jsxs("label", { className: clsx("ToolIcon", props.className), title: props.title, onPointerDown: (event) => {
58
58
  lastPointerTypeRef.current = event.pointerType || null;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { TranslationKeys } from "../i18n";
2
+ import type { TranslationKeys } from "../i18n";
3
3
  declare const Trans: ({ i18nKey, children, ...props }: {
4
4
  [key: string]: React.ReactNode | ((el: React.ReactNode) => React.ReactNode);
5
5
  i18nKey: TranslationKeys;
@@ -1,6 +1,6 @@
1
1
  import "./UserList.scss";
2
2
  import React from "react";
3
- import { Collaborator, SocketId } from "../types";
3
+ import type { Collaborator, SocketId } from "../types";
4
4
  export type GoToCollaboratorComponentProps = {
5
5
  socketId: SocketId;
6
6
  collaborator: Collaborator;
@@ -1,18 +1,20 @@
1
1
  import React from "react";
2
2
  import type { DOMAttributes } from "react";
3
- import type { InteractiveCanvasAppState } from "../../types";
3
+ import type { Device, InteractiveCanvasAppState } from "../../types";
4
4
  import type { RenderableElementsMap, RenderInteractiveSceneCallback } from "../../scene/types";
5
- import type { NonDeletedExcalidrawElement } from "../../element/types";
5
+ import type { NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "../../element/types";
6
6
  type InteractiveCanvasProps = {
7
7
  containerRef: React.RefObject<HTMLDivElement>;
8
8
  canvas: HTMLCanvasElement | null;
9
9
  elementsMap: RenderableElementsMap;
10
10
  visibleElements: readonly NonDeletedExcalidrawElement[];
11
11
  selectedElements: readonly NonDeletedExcalidrawElement[];
12
- versionNonce: number | undefined;
12
+ allElementsMap: NonDeletedSceneElementsMap;
13
+ sceneNonce: number | undefined;
13
14
  selectionNonce: number | undefined;
14
15
  scale: number;
15
16
  appState: InteractiveCanvasAppState;
17
+ device: Device;
16
18
  renderInteractiveSceneCallback: (data: RenderInteractiveSceneCallback) => void;
17
19
  handleCanvasRef: (canvas: HTMLCanvasElement | null) => void;
18
20
  onContextMenu: Exclude<DOMAttributes<HTMLCanvasElement | HTMLDivElement>["onContextMenu"], undefined>;
@@ -49,6 +49,7 @@ const InteractiveCanvas = (props) => {
49
49
  elementsMap: props.elementsMap,
50
50
  visibleElements: props.visibleElements,
51
51
  selectedElements: props.selectedElements,
52
+ allElementsMap: props.allElementsMap,
52
53
  scale: window.devicePixelRatio,
53
54
  appState: props.appState,
54
55
  renderConfig: {
@@ -60,6 +61,7 @@ const InteractiveCanvas = (props) => {
60
61
  selectionColor,
61
62
  renderScrollbars: false,
62
63
  },
64
+ device: props.device,
63
65
  callback: props.renderInteractiveSceneCallback,
64
66
  }, isRenderThrottlingEnabled());
65
67
  });
@@ -98,14 +100,15 @@ const getRelevantAppStateProps = (appState) => ({
98
100
  activeEmbeddable: appState.activeEmbeddable,
99
101
  snapLines: appState.snapLines,
100
102
  zenModeEnabled: appState.zenModeEnabled,
103
+ editingElement: appState.editingElement,
101
104
  });
102
105
  const areEqual = (prevProps, nextProps) => {
103
106
  // This could be further optimised if needed, as we don't have to render interactive canvas on each scene mutation
104
107
  if (prevProps.selectionNonce !== nextProps.selectionNonce ||
105
- prevProps.versionNonce !== nextProps.versionNonce ||
108
+ prevProps.sceneNonce !== nextProps.sceneNonce ||
106
109
  prevProps.scale !== nextProps.scale ||
107
110
  // we need to memoize on elementsMap because they may have renewed
108
- // even if versionNonce didn't change (e.g. we filter elements out based
111
+ // even if sceneNonce didn't change (e.g. we filter elements out based
109
112
  // on appState)
110
113
  prevProps.elementsMap !== nextProps.elementsMap ||
111
114
  prevProps.visibleElements !== nextProps.visibleElements ||
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { RoughCanvas } from "roughjs/bin/canvas";
2
+ import type { RoughCanvas } from "roughjs/bin/canvas";
3
3
  import type { StaticCanvasAppState } from "../../types";
4
4
  import type { RenderableElementsMap, StaticCanvasRenderConfig } from "../../scene/types";
5
5
  import type { NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "../../element/types";
@@ -9,7 +9,7 @@ type StaticCanvasProps = {
9
9
  elementsMap: RenderableElementsMap;
10
10
  allElementsMap: NonDeletedSceneElementsMap;
11
11
  visibleElements: readonly NonDeletedExcalidrawElement[];
12
- versionNonce: number | undefined;
12
+ sceneNonce: number | undefined;
13
13
  selectionNonce: number | undefined;
14
14
  scale: number;
15
15
  appState: StaticCanvasAppState;
@@ -70,10 +70,10 @@ const getRelevantAppStateProps = (appState) => ({
70
70
  editingGroupId: appState.editingGroupId,
71
71
  });
72
72
  const areEqual = (prevProps, nextProps) => {
73
- if (prevProps.versionNonce !== nextProps.versionNonce ||
73
+ if (prevProps.sceneNonce !== nextProps.sceneNonce ||
74
74
  prevProps.scale !== nextProps.scale ||
75
75
  // we need to memoize on elementsMap because they may have renewed
76
- // even if versionNonce didn't change (e.g. we filter elements out based
76
+ // even if sceneNonce didn't change (e.g. we filter elements out based
77
77
  // on appState)
78
78
  prevProps.elementsMap !== nextProps.elementsMap ||
79
79
  prevProps.visibleElements !== nextProps.visibleElements) {
@@ -11,10 +11,10 @@ export const DropDownMenuItemBadge = ({ children, }) => {
11
11
  display: "inline-flex",
12
12
  marginLeft: "auto",
13
13
  padding: "2px 4px",
14
- background: "pink",
14
+ background: "var(--color-promo)",
15
+ color: "var(--color-surface-lowest)",
15
16
  borderRadius: 6,
16
17
  fontSize: 9,
17
- color: "black",
18
18
  fontFamily: "Cascadia, monospace",
19
19
  }, children: children }));
20
20
  };
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { ActionManager } from "../../actions/manager";
3
- import { UIAppState } from "../../types";
2
+ import type { ActionManager } from "../../actions/manager";
3
+ import type { UIAppState } from "../../types";
4
4
  declare const Footer: {
5
5
  ({ appState, actionManager, showExitZenModeBtn, renderWelcomeScreen, }: {
6
6
  appState: UIAppState;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { AppState, ExcalidrawProps, UIAppState } from "../../types";
3
- import { ElementsMap, ExcalidrawEmbeddableElement, NonDeletedExcalidrawElement } from "../../element/types";
2
+ import type { AppState, ExcalidrawProps, UIAppState } from "../../types";
3
+ import type { ElementsMap, ExcalidrawEmbeddableElement, NonDeletedExcalidrawElement } from "../../element/types";
4
4
  import "./Hyperlink.scss";
5
5
  export declare const Hyperlink: ({ element, elementsMap, setAppState, onLinkOpen, setToast, updateEmbedValidationStatus, }: {
6
6
  element: NonDeletedExcalidrawElement;
@@ -1,6 +1,6 @@
1
- import { Bounds } from "../../element/bounds";
2
- import { ElementsMap, NonDeletedExcalidrawElement } from "../../element/types";
3
- import { AppState, UIAppState } from "../../types";
1
+ import type { Bounds } from "../../element/bounds";
2
+ import type { ElementsMap, NonDeletedExcalidrawElement } from "../../element/types";
3
+ import type { AppState, UIAppState } from "../../types";
4
4
  export declare const EXTERNAL_LINK_IMG: HTMLImageElement;
5
5
  export declare const getLinkHandleFromCoords: ([x1, y1, x2, y2]: Bounds, angle: number, appState: Pick<UIAppState, "zoom">) => Bounds;
6
6
  export declare const isPointHittingLinkIcon: (element: NonDeletedExcalidrawElement, elementsMap: ElementsMap, appState: AppState, [x, y]: readonly [number, number]) => boolean;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { Theme } from "../element/types";
2
+ import type { Theme } from "../element/types";
3
3
  export declare const iconFillColor: (theme: Theme) => string;
4
4
  type Opts = {
5
5
  width?: number;
@@ -154,6 +154,7 @@ export declare const TextAlignBottomIcon: React.MemoExoticComponent<({ theme }:
154
154
  export declare const TextAlignMiddleIcon: React.MemoExoticComponent<({ theme }: {
155
155
  theme: Theme;
156
156
  }) => JSX.Element>;
157
+ export declare const angleIcon: JSX.Element;
157
158
  export declare const publishIcon: JSX.Element;
158
159
  export declare const eraser: JSX.Element;
159
160
  export declare const handIcon: JSX.Element;
@@ -195,7 +196,10 @@ export declare const pngIcon: JSX.Element;
195
196
  export declare const magnetIcon: JSX.Element;
196
197
  export declare const coffeeIcon: JSX.Element;
197
198
  export declare const DeviceDesktopIcon: JSX.Element;
198
- export declare const arrowBarToLeftIcon: JSX.Element;
199
+ export declare const loginIcon: JSX.Element;
199
200
  export declare const youtubeIcon: JSX.Element;
200
201
  export declare const gridIcon: JSX.Element;
202
+ export declare const lineEditorIcon: JSX.Element;
203
+ export declare const collapseDownIcon: JSX.Element;
204
+ export declare const collapseUpIcon: JSX.Element;
201
205
  export {};
@@ -121,10 +121,22 @@ export const shareWindows = createIcon(_jsxs(_Fragment, { children: [_jsx("path"
121
121
  // Icon imported form Storybook
122
122
  // Storybook is licensed under MIT https://github.com/storybookjs/storybook/blob/next/LICENSE
123
123
  export const resetZoom = createIcon(_jsx("path", { stroke: "currentColor", strokeWidth: "40", fill: "currentColor", d: "M148 560a318 318 0 0 0 522 110 316 316 0 0 0 0-450 316 316 0 0 0-450 0c-11 11-21 22-30 34v4h47c25 0 46 21 46 46s-21 45-46 45H90c-13 0-25-6-33-14-9-9-14-20-14-33V156c0-25 20-45 45-45s45 20 45 45v32l1 1a401 401 0 0 1 623 509l212 212a42 42 0 0 1-59 59L698 757A401 401 0 0 1 65 570a42 42 0 0 1 83-10z" }), { width: 1024 });
124
- export const BringForwardIcon = createIcon(_jsxs(_Fragment, { children: [_jsxs("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M13.889 4.167H8.333c-.767 0-1.389.622-1.389 1.389v5.555c0 .767.622 1.389 1.39 1.389h5.555c.767 0 1.389-.622 1.389-1.389V5.556c0-.767-.622-1.39-1.39-1.39Z", fill: "currentColor" }), _jsx("path", { d: "M12.5 12.5v1.389a1.389 1.389 0 0 1-1.389 1.389H5.556a1.389 1.389 0 0 1-1.39-1.39V8.334a1.389 1.389 0 0 1 1.39-1.389h1.388" })] }), _jsx("defs", { children: _jsx("clipPath", { id: "a", children: _jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), modifiedTablerIconProps);
125
- export const SendBackwardIcon = createIcon(_jsxs(_Fragment, { children: [_jsxs("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M6.944 12.5H12.5v1.389a1.389 1.389 0 0 1-1.389 1.389H5.556a1.389 1.389 0 0 1-1.39-1.39V8.334a1.389 1.389 0 0 1 1.39-1.389h1.388", fill: "currentColor" }), _jsx("path", { d: "M13.889 4.167H8.333c-.767 0-1.389.621-1.389 1.389v5.555c0 .767.622 1.389 1.39 1.389h5.555c.767 0 1.389-.622 1.389-1.389V5.556c0-.768-.622-1.39-1.39-1.39Z" })] }), _jsx("defs", { children: _jsx("clipPath", { id: "a", children: _jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), modifiedTablerIconProps);
126
- export const BringToFrontIcon = createIcon(_jsxs(_Fragment, { children: [_jsxs("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", children: [_jsx("path", { d: "M8.775 6.458h2.45a2.316 2.316 0 0 1 2.317 2.316v2.452a2.316 2.316 0 0 1-2.316 2.316H8.774a2.316 2.316 0 0 1-2.317-2.316V8.774a2.316 2.316 0 0 1 2.317-2.316Z", fill: "currentColor" }), _jsx("path", { d: "M5.441 9.792h2.451a2.316 2.316 0 0 1 2.316 2.316v2.45a2.316 2.316 0 0 1-2.316 2.317h-2.45a2.316 2.316 0 0 1-2.317-2.316v-2.451a2.316 2.316 0 0 1 2.316-2.316ZM12.108 3.125h2.45a2.316 2.316 0 0 1 2.317 2.316v2.451a2.316 2.316 0 0 1-2.316 2.316h-2.451a2.316 2.316 0 0 1-2.316-2.316v-2.45a2.316 2.316 0 0 1 2.316-2.317Z" })] }), _jsx("defs", { children: _jsx("clipPath", { id: "a", children: _jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), modifiedTablerIconProps);
127
- export const SendToBackIcon = createIcon(_jsxs(_Fragment, { children: [_jsxs("g", { clipPath: "url(#a)", children: [_jsx("path", { d: "M5.441 9.792h2.451a2.316 2.316 0 0 1 2.316 2.316v2.45a2.316 2.316 0 0 1-2.316 2.317h-2.45a2.316 2.316 0 0 1-2.317-2.316v-2.451a2.316 2.316 0 0 1 2.316-2.316Z", stroke: "currentColor", strokeWidth: "1.25" }), _jsx("path", { d: "M5.441 9.792h2.451a2.316 2.316 0 0 1 2.316 2.316v2.45a2.316 2.316 0 0 1-2.316 2.317h-2.45a2.316 2.316 0 0 1-2.317-2.316v-2.451a2.316 2.316 0 0 1 2.316-2.316Z", stroke: "currentColor", strokeWidth: "1.25" }), _jsx("mask", { id: "SendToBackIcon", fill: "#fff", children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M9.167 5.833v2.06a2.941 2.941 0 0 0 2.94 2.94h2.06v.393a2.941 2.941 0 0 1-2.941 2.94h-.393v-2.058a2.941 2.941 0 0 0-2.94-2.941h-2.06v-.393a2.941 2.941 0 0 1 2.942-2.94h.392Z" }) }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M9.167 5.833v2.06a2.941 2.941 0 0 0 2.94 2.94h2.06v.393a2.941 2.941 0 0 1-2.941 2.94h-.393v-2.058a2.941 2.941 0 0 0-2.94-2.941h-2.06v-.393a2.941 2.941 0 0 1 2.942-2.94h.392Z", fill: "currentColor" }), _jsx("path", { d: "M9.167 5.833h1.25v-1.25h-1.25v1.25Zm5 5h1.25v-1.25h-1.25v1.25Zm-3.334 3.334h-1.25v1.25h1.25v-1.25Zm-5-5h-1.25v1.25h1.25v-1.25Zm2.084-3.334v2.06h2.5v-2.06h-2.5Zm0 2.06a4.191 4.191 0 0 0 4.19 4.19v-2.5a1.691 1.691 0 0 1-1.69-1.69h-2.5Zm4.19 4.19h2.06v-2.5h-2.06v2.5Zm.81-1.25v.393h2.5v-.393h-2.5Zm0 .393c0 .933-.758 1.69-1.691 1.69v2.5a4.191 4.191 0 0 0 4.19-4.19h-2.5Zm-1.691 1.69h-.393v2.5h.393v-2.5Zm.857 1.25v-2.058h-2.5v2.059h2.5Zm0-2.058a4.191 4.191 0 0 0-4.19-4.191v2.5c.933 0 1.69.757 1.69 1.69h2.5Zm-4.19-4.191h-2.06v2.5h2.06v-2.5Zm-.81 1.25v-.393h-2.5v.393h2.5Zm0-.393c0-.934.758-1.69 1.692-1.69v-2.5a4.191 4.191 0 0 0-4.192 4.19h2.5Zm1.692-1.69h.392v-2.5h-.392v2.5Z", fill: "currentColor", mask: "url(#SendToBackIcon)" }), _jsx("path", { d: "M12.108 3.125h2.45a2.316 2.316 0 0 1 2.317 2.316v2.451a2.316 2.316 0 0 1-2.316 2.316h-2.451a2.316 2.316 0 0 1-2.316-2.316v-2.45a2.316 2.316 0 0 1 2.316-2.317Z", stroke: "currentColor", strokeWidth: "1.25" })] }), _jsx("defs", { children: _jsx("clipPath", { id: "a", children: _jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), modifiedTablerIconProps);
124
+ const arrowBarToTopJSX = (_jsxs("g", { strokeWidth: 1.5, children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M12 10l0 10" }), _jsx("path", { d: "M12 10l4 4" }), _jsx("path", { d: "M12 10l-4 4" }), _jsx("path", { d: "M4 4l16 0" })] }));
125
+ const arrownNarrowUpJSX = (_jsxs("g", { strokeWidth: 1.5, children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M12 5l0 14" }), _jsx("path", { d: "M16 9l-4 -4" }), _jsx("path", { d: "M8 9l4 -4" })] }));
126
+ export const BringForwardIcon = createIcon(arrownNarrowUpJSX, tablerIconProps);
127
+ export const SendBackwardIcon = createIcon(arrownNarrowUpJSX, {
128
+ ...tablerIconProps,
129
+ style: {
130
+ transform: "rotate(180deg)",
131
+ },
132
+ });
133
+ export const BringToFrontIcon = createIcon(arrowBarToTopJSX, tablerIconProps);
134
+ export const SendToBackIcon = createIcon(arrowBarToTopJSX, {
135
+ ...tablerIconProps,
136
+ style: {
137
+ transform: "rotate(180deg)",
138
+ },
139
+ });
128
140
  //
129
141
  // Align action icons created from scratch to match those of z-index actions
130
142
  // Note: vertical align icons are flipped so the larger item is always the
@@ -200,6 +212,7 @@ export const TextAlignTopIcon = React.memo(({ theme }) => createIcon(_jsxs("g",
200
212
  export const TextAlignBottomIcon = React.memo(({ theme }) => createIcon(_jsxs("g", { strokeWidth: "2", stroke: "currentColor", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("line", { x1: "4", y1: "20", x2: "20", y2: "20" }), _jsx("rect", { x: "9", y: "4", width: "6", height: "12", rx: "2" })] }), tablerIconProps));
201
213
  // tabler-icons: layout-align-middle
202
214
  export const TextAlignMiddleIcon = React.memo(({ theme }) => createIcon(_jsxs("g", { strokeWidth: "1.5", stroke: "currentColor", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("line", { x1: "4", y1: "12", x2: "9", y2: "12" }), _jsx("line", { x1: "15", y1: "12", x2: "20", y2: "12" }), _jsx("rect", { x: "9", y: "6", width: "6", height: "12", rx: "2" })] }), tablerIconProps));
215
+ export const angleIcon = createIcon(_jsxs("g", { children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M21 19h-18l9 -15" }), _jsx("path", { d: "M20.615 15.171h.015" }), _jsx("path", { d: "M19.515 11.771h.015" }), _jsx("path", { d: "M17.715 8.671h.015" }), _jsx("path", { d: "M15.415 5.971h.015" })] }), tablerIconProps);
203
216
  export const publishIcon = createIcon(_jsx("path", { d: "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z", fill: "currentColor" }), { width: 640, height: 512 });
204
217
  export const eraser = createIcon(_jsx("path", { d: "M480 416C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H150.6C133.7 480 117.4 473.3 105.4 461.3L25.37 381.3C.3786 356.3 .3786 315.7 25.37 290.7L258.7 57.37C283.7 32.38 324.3 32.38 349.3 57.37L486.6 194.7C511.6 219.7 511.6 260.3 486.6 285.3L355.9 416H480zM265.4 416L332.7 348.7L195.3 211.3L70.63 336L150.6 416L265.4 416z" }));
205
218
  export const handIcon = createIcon(_jsxs("g", { strokeWidth: 1.25, children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5" }), _jsx("path", { d: "M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5" }), _jsx("path", { d: "M14 5.5a1.5 1.5 0 0 1 3 0v6.5" }), _jsx("path", { d: "M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47" })] }), tablerIconProps);
@@ -241,7 +254,10 @@ export const pngIcon = createIcon(_jsxs("g", { strokeWidth: 1.25, children: [_js
241
254
  export const magnetIcon = createIcon(_jsxs("g", { strokeWidth: 1.25, children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M4 13v-8a2 2 0 0 1 2 -2h1a2 2 0 0 1 2 2v8a2 2 0 0 0 6 0v-8a2 2 0 0 1 2 -2h1a2 2 0 0 1 2 2v8a8 8 0 0 1 -16 0" }), _jsx("path", { d: "M4 8l5 0" }), _jsx("path", { d: "M15 8l4 0" })] }), tablerIconProps);
242
255
  export const coffeeIcon = createIcon(_jsxs("g", { strokeWidth: 1.25, children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M3 14c.83 .642 2.077 1.017 3.5 1c1.423 .017 2.67 -.358 3.5 -1c.83 -.642 2.077 -1.017 3.5 -1c1.423 -.017 2.67 .358 3.5 1" }), _jsx("path", { d: "M8 3a2.4 2.4 0 0 0 -1 2a2.4 2.4 0 0 0 1 2" }), _jsx("path", { d: "M12 3a2.4 2.4 0 0 0 -1 2a2.4 2.4 0 0 0 1 2" }), _jsx("path", { d: "M3 10h14v5a6 6 0 0 1 -6 6h-2a6 6 0 0 1 -6 -6v-5z" }), _jsx("path", { d: "M16.746 16.726a3 3 0 1 0 .252 -5.555" })] }), tablerIconProps);
243
256
  export const DeviceDesktopIcon = createIcon(_jsxs("g", { stroke: "currentColor", children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M3 5a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-16a1 1 0 0 1-1-1v-10zM7 20h10M9 16v4M15 16v4" })] }), { ...tablerIconProps, strokeWidth: 1.5 });
244
- // arrow-bar-to-left
245
- export const arrowBarToLeftIcon = createIcon(_jsxs("g", { children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M10 12l10 0" }), _jsx("path", { d: "M10 12l4 4" }), _jsx("path", { d: "M10 12l4 -4" }), _jsx("path", { d: "M4 4l0 16" })] }), tablerIconProps);
257
+ // login
258
+ export const loginIcon = createIcon(_jsxs("g", { strokeWidth: 1.5, children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M15 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2" }), _jsx("path", { d: "M21 12h-13l3 -3" }), _jsx("path", { d: "M11 15l-3 -3" })] }), tablerIconProps);
246
259
  export const youtubeIcon = createIcon(_jsxs("g", { children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M2 8a4 4 0 0 1 4 -4h12a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-12a4 4 0 0 1 -4 -4v-8z" }), _jsx("path", { d: "M10 9l5 3l-5 3z" })] }), tablerIconProps);
247
260
  export const gridIcon = createIcon(_jsxs("g", { strokeWidth: 1.5, children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M3 6h18" }), _jsx("path", { d: "M3 12h18" }), _jsx("path", { d: "M3 18h18" }), _jsx("path", { d: "M6 3v18" }), _jsx("path", { d: "M12 3v18" }), _jsx("path", { d: "M18 3v18" })] }), tablerIconProps);
261
+ export const lineEditorIcon = createIcon(_jsxs("g", { strokeWidth: 1.5, children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M17 3m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z" }), _jsx("path", { d: "M3 17m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z" }), _jsx("path", { d: "M17 5c-6.627 0 -12 5.373 -12 12" })] }), tablerIconProps);
262
+ export const collapseDownIcon = createIcon(_jsxs("g", { children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M6 9l6 6l6 -6" })] }), tablerIconProps);
263
+ export const collapseUpIcon = createIcon(_jsxs("g", { children: [_jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M6 15l6 -6l6 6" })] }), tablerIconProps);
@@ -1,5 +1,5 @@
1
- import { AppProps } from "./types";
2
- import { ExcalidrawElement, FontFamilyValues } from "./element/types";
1
+ import type { AppProps } from "./types";
2
+ import type { ExcalidrawElement, FontFamilyValues } from "./element/types";
3
3
  export declare const isDarwin: boolean;
4
4
  export declare const isWindows: boolean;
5
5
  export declare const isAndroid: boolean;
@@ -10,6 +10,7 @@ export declare const isIOS: boolean;
10
10
  export declare const isBrave: () => boolean;
11
11
  export declare const supportsResizeObserver: boolean;
12
12
  export declare const APP_NAME = "Excalidraw";
13
+ export declare const TEXT_AUTOWRAP_THRESHOLD = 36;
13
14
  export declare const DRAGGING_THRESHOLD = 10;
14
15
  export declare const LINE_CONFIRM_THRESHOLD = 8;
15
16
  export declare const ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5;
@@ -121,6 +122,8 @@ export declare const DEFAULT_TEXT_ALIGN = "left";
121
122
  export declare const DEFAULT_VERTICAL_ALIGN = "top";
122
123
  export declare const DEFAULT_VERSION = "{version}";
123
124
  export declare const DEFAULT_TRANSFORM_HANDLE_SPACING = 2;
125
+ export declare const SIDE_RESIZING_THRESHOLD: number;
126
+ export declare const DEFAULT_COLLISION_THRESHOLD: number;
124
127
  export declare const COLOR_WHITE = "#ffffff";
125
128
  export declare const COLOR_CHARCOAL_BLACK = "#1e1e1e";
126
129
  export declare const COLOR_VOICE_CALL = "#a2f1a6";
@@ -175,6 +178,7 @@ export declare const VERSION_TIMEOUT = 30000;
175
178
  export declare const SCROLL_TIMEOUT = 100;
176
179
  export declare const ZOOM_STEP = 0.1;
177
180
  export declare const MIN_ZOOM = 0.1;
181
+ export declare const MAX_ZOOM = 30;
178
182
  export declare const HYPERLINK_TOOLTIP_DELAY = 300;
179
183
  export declare const IDLE_THRESHOLD = 60000;
180
184
  export declare const ACTIVE_THRESHOLD = 3000;
@@ -276,3 +280,8 @@ export declare const EDITOR_LS_KEYS: {
276
280
  * where filename is optional and we can't retrieve name from app state
277
281
  */
278
282
  export declare const DEFAULT_FILENAME = "Untitled";
283
+ export declare const STATS_PANELS: {
284
+ readonly generalStats: 1;
285
+ readonly elementProperties: 2;
286
+ };
287
+ export declare const MIN_WIDTH_OR_HEIGHT = 1;