@excalidraw/excalidraw 0.17.1-1d71f84 → 0.17.1-1ed53b1

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 (426) hide show
  1. package/CHANGELOG.md +14 -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-IX4V72YG.js → chunk-EFLPX7NE.js} +6 -6
  8. package/dist/browser/dev/excalidraw-assets-dev/{chunk-AK7SWNLN.js → chunk-JKPJV7MZ.js} +6 -4
  9. package/dist/browser/dev/excalidraw-assets-dev/chunk-JKPJV7MZ.js.map +7 -0
  10. package/dist/browser/dev/excalidraw-assets-dev/{chunk-MXVETLVM.js → chunk-JYIQCNWV.js} +2 -2
  11. package/dist/browser/dev/excalidraw-assets-dev/{chunk-YZIOORVX.js → chunk-LVIQQW6F.js} +2 -2
  12. package/dist/browser/dev/excalidraw-assets-dev/{chunk-RWZVJAQU.js → chunk-OKAZAA6U.js} +4494 -2647
  13. package/dist/browser/dev/excalidraw-assets-dev/chunk-OKAZAA6U.js.map +7 -0
  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-ITJNUBZF.js} +2 -2
  23. package/dist/browser/dev/excalidraw-assets-dev/{en-5TCZHGGJ.js → en-BF4XUPIZ.js} +2 -2
  24. package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-SOOJRTCB.js → erDiagram-47591fe2-XGAD7EEP.js} +4 -4
  25. package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-AHGL4KPK.js → flowDiagram-5540d9b9-B6EOVNNO.js} +9 -9
  26. package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-56LDZZWY.js → flowDiagram-v2-3b53844e-NUG24FJH.js} +9 -9
  27. package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-27LUKRI6.js → flowchart-elk-definition-5fe447d6-25Y7PCBL.js} +5 -5
  28. package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-EHGYGNG6.js → ganttDiagram-9a3bba1f-GNL6ZDTC.js} +2 -2
  29. package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJQNBDW5.js → gitGraphDiagram-96e6b4ee-HNW52NVO.js} +2 -2
  30. package/dist/browser/dev/excalidraw-assets-dev/{image-EDKQZH7Z.js → image-LVS32KQQ.js} +2 -2
  31. package/dist/browser/dev/excalidraw-assets-dev/{image-OFRRV5MB.css → image-O66MQ7WQ.css} +1 -1
  32. package/dist/browser/dev/excalidraw-assets-dev/image-O66MQ7WQ.css.map +7 -0
  33. package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-SWLLQVES.js → infoDiagram-bcd20f53-FWEUVFLT.js} +2 -2
  34. package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-7UAVCWOZ.js → journeyDiagram-4fe6b3dc-RZIUI7UG.js} +3 -3
  35. package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-SROW5KGM.js → mindmap-definition-f354de21-GBVN45GU.js} +3 -3
  36. package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-QKCI6NCB.js → pieDiagram-79897490-ECENNII6.js} +2 -2
  37. package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-LNYJZFC5.js → quadrantDiagram-62f64e94-ZMEOFVNL.js} +2 -2
  38. package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZZD7ZHFA.js → requirementDiagram-05bf5f74-FHZSFHCR.js} +4 -4
  39. package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-L75ZZ4UM.js → sankeyDiagram-97764748-VDKIKTA6.js} +2 -2
  40. package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-6PCU7TDK.js → sequenceDiagram-acc0e65c-6JUSPVKX.js} +3 -3
  41. package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-WM76WOPR.js → stateDiagram-0ff1cf1a-L3AKWENF.js} +5 -5
  42. package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-N4HZW3O2.js → stateDiagram-v2-9a9d610d-NU3GGMCH.js} +8 -8
  43. package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-ZHGCAXGP.js → timeline-definition-fea2a41d-JGP7XCHW.js} +2 -2
  44. package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-2DLOVRAZ.js → xychartDiagram-ab372869-HLFHHF2I.js} +3 -3
  45. package/dist/browser/dev/index.css +72 -28
  46. package/dist/browser/dev/index.css.map +3 -3
  47. package/dist/browser/dev/index.js +2064 -1830
  48. package/dist/browser/dev/index.js.map +4 -4
  49. package/dist/browser/prod/excalidraw-assets/{blockDiagram-91b80b7a-ONPS22AM.js → blockDiagram-91b80b7a-FVCRVGN5.js} +1 -1
  50. package/dist/browser/prod/excalidraw-assets/{c4Diagram-b2a90758-XMIQY7ZT.js → c4Diagram-b2a90758-56CXO7GA.js} +1 -1
  51. package/dist/browser/prod/excalidraw-assets/{chunk-GCHQBOKV.js → chunk-635MQ3CK.js} +1 -1
  52. package/dist/browser/prod/excalidraw-assets/{chunk-P5M3G2RP.js → chunk-AIKXYJX3.js} +1 -1
  53. package/dist/browser/prod/excalidraw-assets/{chunk-E2YLWFZX.js → chunk-CR7VMNWC.js} +1 -1
  54. package/dist/browser/prod/excalidraw-assets/{chunk-WEYK4A2L.js → chunk-FFF2CSVG.js} +1 -1
  55. package/dist/browser/prod/excalidraw-assets/{chunk-R3HAIP6R.js → chunk-G4WDCSPE.js} +1 -1
  56. package/dist/browser/prod/excalidraw-assets/{chunk-HFOXJM22.js → chunk-HKZSHFLX.js} +1 -1
  57. package/dist/browser/prod/excalidraw-assets/{chunk-XIMFFJTE.js → chunk-IKCDYWMW.js} +1 -1
  58. package/dist/browser/prod/excalidraw-assets/{chunk-AHLLBBVJ.js → chunk-L5DS24G6.js} +1 -1
  59. package/dist/browser/prod/excalidraw-assets/{chunk-CQJF3C6G.js → chunk-MUNOKHUD.js} +1 -1
  60. package/dist/browser/prod/excalidraw-assets/{chunk-CTYINSWT.js → chunk-O4AI3NNG.js} +2 -2
  61. package/dist/browser/prod/excalidraw-assets/{chunk-NI6SYCUG.js → chunk-QOQYOOQ4.js} +1 -1
  62. package/dist/browser/prod/excalidraw-assets/chunk-SXBDZOS3.js +55 -0
  63. package/dist/browser/prod/excalidraw-assets/{chunk-I2PZFXTK.js → chunk-ZTIWFPBM.js} +21 -21
  64. package/dist/browser/prod/excalidraw-assets/{classDiagram-30eddba6-IEJXXCVX.js → classDiagram-30eddba6-BCUTAUMD.js} +1 -1
  65. package/dist/browser/prod/excalidraw-assets/{classDiagram-v2-f2df5561-7LZDSWOS.js → classDiagram-v2-f2df5561-6SOXSGQ2.js} +1 -1
  66. package/dist/browser/prod/excalidraw-assets/{dist-PIPZXALV.js → dist-54276HPL.js} +1 -1
  67. package/dist/browser/prod/excalidraw-assets/{en-LROPV2RN.js → en-N7CLNF6C.js} +1 -1
  68. package/dist/browser/prod/excalidraw-assets/{erDiagram-47591fe2-E5V666CF.js → erDiagram-47591fe2-RE6HB7RM.js} +1 -1
  69. package/dist/browser/prod/excalidraw-assets/{flowDiagram-5540d9b9-GMBRCYVF.js → flowDiagram-5540d9b9-ZNJZBERW.js} +1 -1
  70. package/dist/browser/prod/excalidraw-assets/{flowDiagram-v2-3b53844e-Z4HUWP6B.js → flowDiagram-v2-3b53844e-LY44JLQJ.js} +1 -1
  71. package/dist/browser/prod/excalidraw-assets/{flowchart-elk-definition-5fe447d6-5ZCYTX5N.js → flowchart-elk-definition-5fe447d6-TMTJ6Z7O.js} +1 -1
  72. package/dist/browser/prod/excalidraw-assets/{ganttDiagram-9a3bba1f-WM32OMT5.js → ganttDiagram-9a3bba1f-5O6EA6LX.js} +1 -1
  73. package/dist/browser/prod/excalidraw-assets/{gitGraphDiagram-96e6b4ee-CAKZ2U6E.js → gitGraphDiagram-96e6b4ee-UHYNM5DI.js} +1 -1
  74. package/dist/browser/prod/excalidraw-assets/image-VAGBVQ3G.js +1 -0
  75. package/dist/browser/prod/excalidraw-assets/{infoDiagram-bcd20f53-MUIKXGC4.js → infoDiagram-bcd20f53-BP77NQEH.js} +1 -1
  76. package/dist/browser/prod/excalidraw-assets/{journeyDiagram-4fe6b3dc-NYRV4HK2.js → journeyDiagram-4fe6b3dc-XMGKCMES.js} +1 -1
  77. package/dist/browser/prod/excalidraw-assets/{mindmap-definition-f354de21-MY55DRSM.js → mindmap-definition-f354de21-ZQRRBRWF.js} +1 -1
  78. package/dist/browser/prod/excalidraw-assets/{pieDiagram-79897490-47L6J6L2.js → pieDiagram-79897490-IGXEC2KX.js} +1 -1
  79. package/dist/browser/prod/excalidraw-assets/{quadrantDiagram-62f64e94-DF5C2GDT.js → quadrantDiagram-62f64e94-WTHHDYJL.js} +1 -1
  80. package/dist/browser/prod/excalidraw-assets/{requirementDiagram-05bf5f74-C4IMUBDN.js → requirementDiagram-05bf5f74-MV4OFRVW.js} +1 -1
  81. package/dist/browser/prod/excalidraw-assets/{sankeyDiagram-97764748-YHW7EUST.js → sankeyDiagram-97764748-ZGYUHEJT.js} +1 -1
  82. package/dist/browser/prod/excalidraw-assets/{sequenceDiagram-acc0e65c-H3XEHT32.js → sequenceDiagram-acc0e65c-IBSENK6W.js} +1 -1
  83. package/dist/browser/prod/excalidraw-assets/{stateDiagram-0ff1cf1a-Z5WB6Q3P.js → stateDiagram-0ff1cf1a-DB73XNZH.js} +1 -1
  84. package/dist/browser/prod/excalidraw-assets/{stateDiagram-v2-9a9d610d-T7OZETQC.js → stateDiagram-v2-9a9d610d-2OOBUPNR.js} +1 -1
  85. package/dist/browser/prod/excalidraw-assets/{timeline-definition-fea2a41d-VVC22BWF.js → timeline-definition-fea2a41d-P3NQQVDU.js} +1 -1
  86. package/dist/browser/prod/excalidraw-assets/{xychartDiagram-ab372869-JAXODQF7.js → xychartDiagram-ab372869-HI3XLK3Y.js} +1 -1
  87. package/dist/browser/prod/index.css +1 -1
  88. package/dist/browser/prod/index.js +24 -24
  89. package/dist/dev/{en-II4GK66F.json → en-UQDDYCH7.json} +5 -3
  90. package/dist/dev/index.css +72 -28
  91. package/dist/dev/index.css.map +3 -3
  92. package/dist/dev/index.js +5352 -3354
  93. package/dist/dev/index.js.map +4 -4
  94. package/dist/excalidraw/actions/actionAddToLibrary.d.ts +4 -4
  95. package/dist/excalidraw/actions/actionAddToLibrary.js +4 -3
  96. package/dist/excalidraw/actions/actionAlign.d.ts +22 -22
  97. package/dist/excalidraw/actions/actionAlign.js +7 -6
  98. package/dist/excalidraw/actions/actionBoundText.d.ts +10 -10
  99. package/dist/excalidraw/actions/actionBoundText.js +8 -4
  100. package/dist/excalidraw/actions/actionCanvas.d.ts +52 -52
  101. package/dist/excalidraw/actions/actionCanvas.js +19 -14
  102. package/dist/excalidraw/actions/actionClipboard.d.ts +24 -24
  103. package/dist/excalidraw/actions/actionClipboard.js +14 -13
  104. package/dist/excalidraw/actions/actionDeleteSelected.d.ts +10 -10
  105. package/dist/excalidraw/actions/actionDeleteSelected.js +6 -3
  106. package/dist/excalidraw/actions/actionDistribute.d.ts +10 -10
  107. package/dist/excalidraw/actions/actionDistribute.js +3 -2
  108. package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +7 -8
  109. package/dist/excalidraw/actions/actionDuplicateSelection.js +7 -3
  110. package/dist/excalidraw/actions/actionElementLock.d.ts +9 -9
  111. package/dist/excalidraw/actions/actionElementLock.js +3 -2
  112. package/dist/excalidraw/actions/actionExport.d.ts +33 -33
  113. package/dist/excalidraw/actions/actionExport.js +15 -11
  114. package/dist/excalidraw/actions/actionFinalize.d.ts +9 -9
  115. package/dist/excalidraw/actions/actionFinalize.js +9 -5
  116. package/dist/excalidraw/actions/actionFlip.d.ts +10 -10
  117. package/dist/excalidraw/actions/actionFlip.js +12 -12
  118. package/dist/excalidraw/actions/actionFrame.d.ts +16 -171
  119. package/dist/excalidraw/actions/actionFrame.js +7 -6
  120. package/dist/excalidraw/actions/actionGroup.d.ts +12 -322
  121. package/dist/excalidraw/actions/actionGroup.js +9 -11
  122. package/dist/excalidraw/actions/actionHistory.d.ts +4 -3
  123. package/dist/excalidraw/actions/actionHistory.js +27 -28
  124. package/dist/excalidraw/actions/actionLinearEditor.d.ts +6 -4
  125. package/dist/excalidraw/actions/actionLinearEditor.js +21 -5
  126. package/dist/excalidraw/actions/actionLink.d.ts +5 -5
  127. package/dist/excalidraw/actions/actionLink.js +2 -1
  128. package/dist/excalidraw/actions/actionMenu.d.ts +8 -8
  129. package/dist/excalidraw/actions/actionMenu.js +4 -3
  130. package/dist/excalidraw/actions/actionNavigate.d.ts +4 -4
  131. package/dist/excalidraw/actions/actionNavigate.js +3 -2
  132. package/dist/excalidraw/actions/actionProperties.d.ts +34 -34
  133. package/dist/excalidraw/actions/actionProperties.js +18 -13
  134. package/dist/excalidraw/actions/actionSelectAll.d.ts +5 -5
  135. package/dist/excalidraw/actions/actionSelectAll.js +2 -1
  136. package/dist/excalidraw/actions/actionStyles.d.ts +9 -12
  137. package/dist/excalidraw/actions/actionStyles.js +4 -3
  138. package/dist/excalidraw/actions/actionToggleGridMode.d.ts +7 -5
  139. package/dist/excalidraw/actions/actionToggleGridMode.js +6 -2
  140. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +4 -4
  141. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.js +2 -1
  142. package/dist/excalidraw/actions/actionToggleStats.d.ts +4 -4
  143. package/dist/excalidraw/actions/actionToggleStats.js +2 -1
  144. package/dist/excalidraw/actions/actionToggleViewMode.d.ts +4 -4
  145. package/dist/excalidraw/actions/actionToggleViewMode.js +2 -1
  146. package/dist/excalidraw/actions/actionToggleZenMode.d.ts +4 -4
  147. package/dist/excalidraw/actions/actionToggleZenMode.js +2 -1
  148. package/dist/excalidraw/actions/actionZindex.d.ts +23 -19
  149. package/dist/excalidraw/actions/actionZindex.js +9 -4
  150. package/dist/excalidraw/actions/manager.d.ts +5 -5
  151. package/dist/excalidraw/actions/register.d.ts +1 -1
  152. package/dist/excalidraw/actions/shortcuts.d.ts +2 -2
  153. package/dist/excalidraw/actions/shortcuts.js +1 -1
  154. package/dist/excalidraw/actions/types.d.ts +7 -7
  155. package/dist/excalidraw/align.d.ts +1 -1
  156. package/dist/excalidraw/analytics.js +1 -1
  157. package/dist/excalidraw/animated-trail.d.ts +2 -2
  158. package/dist/excalidraw/appState.d.ts +5 -5
  159. package/dist/excalidraw/change.d.ts +191 -0
  160. package/dist/excalidraw/change.js +894 -0
  161. package/dist/excalidraw/charts.d.ts +1 -1
  162. package/dist/excalidraw/clients.d.ts +2 -2
  163. package/dist/excalidraw/clients.js +1 -1
  164. package/dist/excalidraw/clipboard.d.ts +3 -3
  165. package/dist/excalidraw/colors.d.ts +1 -1
  166. package/dist/excalidraw/components/Actions.d.ts +3 -3
  167. package/dist/excalidraw/components/Actions.js +8 -5
  168. package/dist/excalidraw/components/App.d.ts +27 -13
  169. package/dist/excalidraw/components/App.js +362 -157
  170. package/dist/excalidraw/components/ColorPicker/ColorInput.d.ts +1 -1
  171. package/dist/excalidraw/components/ColorPicker/ColorInput.js +1 -1
  172. package/dist/excalidraw/components/ColorPicker/ColorPicker.d.ts +4 -4
  173. package/dist/excalidraw/components/ColorPicker/ColorPicker.js +1 -1
  174. package/dist/excalidraw/components/ColorPicker/Picker.d.ts +3 -3
  175. package/dist/excalidraw/components/ColorPicker/PickerColorList.d.ts +1 -1
  176. package/dist/excalidraw/components/ColorPicker/PickerHeading.d.ts +1 -1
  177. package/dist/excalidraw/components/ColorPicker/ShadeList.d.ts +1 -1
  178. package/dist/excalidraw/components/ColorPicker/TopPicks.d.ts +1 -1
  179. package/dist/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +2 -2
  180. package/dist/excalidraw/components/ColorPicker/colorPickerUtils.js +1 -1
  181. package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -2
  182. package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.js +1 -1
  183. package/dist/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -1
  184. package/dist/excalidraw/components/CommandPalette/CommandPalette.js +28 -13
  185. package/dist/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -1
  186. package/dist/excalidraw/components/CommandPalette/types.d.ts +3 -3
  187. package/dist/excalidraw/components/ConfirmDialog.d.ts +1 -1
  188. package/dist/excalidraw/components/ContextMenu.d.ts +2 -2
  189. package/dist/excalidraw/components/ContextMenu.js +1 -1
  190. package/dist/excalidraw/components/DarkModeToggle.d.ts +1 -1
  191. package/dist/excalidraw/components/DarkModeToggle.js +3 -1
  192. package/dist/excalidraw/components/DefaultSidebar.d.ts +2 -2
  193. package/dist/excalidraw/components/DialogActionButton.d.ts +1 -1
  194. package/dist/excalidraw/components/EyeDropper.d.ts +2 -2
  195. package/dist/excalidraw/components/FollowMode/FollowMode.d.ts +1 -1
  196. package/dist/excalidraw/components/HelpDialog.js +8 -6
  197. package/dist/excalidraw/components/HintViewer.d.ts +1 -1
  198. package/dist/excalidraw/components/ImageExportDialog.d.ts +1 -1
  199. package/dist/excalidraw/components/InitializeApp.d.ts +2 -2
  200. package/dist/excalidraw/components/JSONExportDialog.d.ts +3 -3
  201. package/dist/excalidraw/components/LayerUI.d.ts +4 -4
  202. package/dist/excalidraw/components/LibraryMenu.d.ts +2 -2
  203. package/dist/excalidraw/components/LibraryMenuBrowseButton.d.ts +1 -1
  204. package/dist/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  205. package/dist/excalidraw/components/LibraryMenuHeaderContent.d.ts +2 -2
  206. package/dist/excalidraw/components/LibraryMenuItems.d.ts +1 -1
  207. package/dist/excalidraw/components/LibraryMenuSection.d.ts +5 -4
  208. package/dist/excalidraw/components/LibraryUnit.d.ts +2 -2
  209. package/dist/excalidraw/components/LoadingMessage.d.ts +1 -1
  210. package/dist/excalidraw/components/MagicSettings.js +2 -2
  211. package/dist/excalidraw/components/MobileMenu.d.ts +3 -3
  212. package/dist/excalidraw/components/Modal.d.ts +1 -1
  213. package/dist/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
  214. package/dist/excalidraw/components/PasteChartDialog.d.ts +1 -1
  215. package/dist/excalidraw/components/PublishLibrary.d.ts +1 -1
  216. package/dist/excalidraw/components/RadioGroup.d.ts +2 -1
  217. package/dist/excalidraw/components/RadioGroup.js +1 -1
  218. package/dist/excalidraw/components/SVGLayer.d.ts +1 -1
  219. package/dist/excalidraw/components/Sidebar/Sidebar.d.ts +2 -2
  220. package/dist/excalidraw/components/Sidebar/Sidebar.js +1 -1
  221. package/dist/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -1
  222. package/dist/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -1
  223. package/dist/excalidraw/components/Sidebar/SidebarTrigger.d.ts +1 -1
  224. package/dist/excalidraw/components/Sidebar/common.d.ts +1 -1
  225. package/dist/excalidraw/components/Stack.d.ts +2 -2
  226. package/dist/excalidraw/components/Stats.d.ts +2 -2
  227. package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +1 -1
  228. package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.js +6 -2
  229. package/dist/excalidraw/components/TTDDialog/TTDDialog.js +2 -2
  230. package/dist/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +1 -1
  231. package/dist/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +1 -1
  232. package/dist/excalidraw/components/TTDDialog/TTDDialogPanels.d.ts +1 -1
  233. package/dist/excalidraw/components/TTDDialog/TTDDialogTabs.d.ts +1 -1
  234. package/dist/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -1
  235. package/dist/excalidraw/components/TTDDialog/common.d.ts +4 -4
  236. package/dist/excalidraw/components/TextField.d.ts +1 -1
  237. package/dist/excalidraw/components/Toast.d.ts +1 -1
  238. package/dist/excalidraw/components/ToolButton.d.ts +4 -2
  239. package/dist/excalidraw/components/ToolButton.js +1 -1
  240. package/dist/excalidraw/components/Trans.d.ts +1 -1
  241. package/dist/excalidraw/components/UserList.d.ts +1 -1
  242. package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -1
  243. package/dist/excalidraw/components/canvases/InteractiveCanvas.js +1 -0
  244. package/dist/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
  245. package/dist/excalidraw/components/dropdownMenu/DropdownMenuItem.js +2 -2
  246. package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +18 -0
  247. package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.js +9 -0
  248. package/dist/excalidraw/components/footer/Footer.d.ts +2 -2
  249. package/dist/excalidraw/components/hyperlink/Hyperlink.d.ts +2 -2
  250. package/dist/excalidraw/components/hyperlink/Hyperlink.js +3 -3
  251. package/dist/excalidraw/components/hyperlink/helpers.d.ts +3 -3
  252. package/dist/excalidraw/components/hyperlink/helpers.js +2 -3
  253. package/dist/excalidraw/components/icons.d.ts +6 -1
  254. package/dist/excalidraw/components/icons.js +19 -5
  255. package/dist/excalidraw/components/main-menu/DefaultItems.d.ts +12 -2
  256. package/dist/excalidraw/components/main-menu/DefaultItems.js +38 -7
  257. package/dist/excalidraw/constants.d.ts +5 -5
  258. package/dist/excalidraw/constants.js +6 -3
  259. package/dist/excalidraw/context/ui-appState.d.ts +1 -1
  260. package/dist/excalidraw/cursor.d.ts +1 -1
  261. package/dist/excalidraw/data/EditorLocalStorage.d.ts +2 -2
  262. package/dist/excalidraw/data/blob.d.ts +5 -5
  263. package/dist/excalidraw/data/filesystem.d.ts +2 -1
  264. package/dist/excalidraw/data/index.d.ts +4 -4
  265. package/dist/excalidraw/data/json.d.ts +3 -3
  266. package/dist/excalidraw/data/library.d.ts +3 -3
  267. package/dist/excalidraw/data/magic.d.ts +3 -3
  268. package/dist/excalidraw/data/magic.js +2 -1
  269. package/dist/excalidraw/data/reconcile.d.ts +6 -0
  270. package/dist/excalidraw/data/reconcile.js +49 -0
  271. package/dist/excalidraw/data/resave.d.ts +2 -2
  272. package/dist/excalidraw/data/restore.d.ts +5 -5
  273. package/dist/excalidraw/data/restore.js +6 -7
  274. package/dist/excalidraw/data/transform.d.ts +4 -4
  275. package/dist/excalidraw/data/transform.js +12 -3
  276. package/dist/excalidraw/data/types.d.ts +3 -3
  277. package/dist/excalidraw/data/url.d.ts +1 -0
  278. package/dist/excalidraw/data/url.js +4 -1
  279. package/dist/excalidraw/element/ElementCanvasButtons.d.ts +1 -1
  280. package/dist/excalidraw/element/binding.d.ts +50 -9
  281. package/dist/excalidraw/element/binding.js +712 -155
  282. package/dist/excalidraw/element/bounds.d.ts +3 -4
  283. package/dist/excalidraw/element/bounds.js +0 -3
  284. package/dist/excalidraw/element/collision.d.ts +14 -19
  285. package/dist/excalidraw/element/collision.js +36 -713
  286. package/dist/excalidraw/element/containerCache.d.ts +1 -1
  287. package/dist/excalidraw/element/dragElements.d.ts +3 -3
  288. package/dist/excalidraw/element/embeddable.d.ts +9 -6
  289. package/dist/excalidraw/element/embeddable.js +98 -62
  290. package/dist/excalidraw/element/image.d.ts +2 -2
  291. package/dist/excalidraw/element/index.d.ts +1 -2
  292. package/dist/excalidraw/element/index.js +0 -1
  293. package/dist/excalidraw/element/linearElementEditor.d.ts +12 -12
  294. package/dist/excalidraw/element/linearElementEditor.js +7 -5
  295. package/dist/excalidraw/element/mutateElement.d.ts +3 -4
  296. package/dist/excalidraw/element/newElement.d.ts +4 -4
  297. package/dist/excalidraw/element/newElement.js +2 -1
  298. package/dist/excalidraw/element/resizeElements.d.ts +4 -4
  299. package/dist/excalidraw/element/resizeElements.js +110 -86
  300. package/dist/excalidraw/element/resizeTest.d.ts +7 -7
  301. package/dist/excalidraw/element/resizeTest.js +55 -8
  302. package/dist/excalidraw/element/showSelectedShapeActions.d.ts +2 -2
  303. package/dist/excalidraw/element/sizeHelpers.d.ts +2 -2
  304. package/dist/excalidraw/element/sizeHelpers.js +3 -0
  305. package/dist/excalidraw/element/sortElements.d.ts +1 -1
  306. package/dist/excalidraw/element/textElement.d.ts +5 -6
  307. package/dist/excalidraw/element/textElement.js +5 -34
  308. package/dist/excalidraw/element/textWysiwyg.d.ts +2 -2
  309. package/dist/excalidraw/element/transformHandles.d.ts +24 -6
  310. package/dist/excalidraw/element/transformHandles.js +24 -3
  311. package/dist/excalidraw/element/typeChecks.d.ts +4 -4
  312. package/dist/excalidraw/element/types.d.ts +26 -10
  313. package/dist/excalidraw/emitter.d.ts +1 -1
  314. package/dist/excalidraw/errors.d.ts +3 -0
  315. package/dist/excalidraw/errors.js +3 -0
  316. package/dist/excalidraw/fractionalIndex.d.ts +40 -0
  317. package/dist/excalidraw/fractionalIndex.js +241 -0
  318. package/dist/excalidraw/frame.d.ts +4 -4
  319. package/dist/excalidraw/gatransforms.d.ts +1 -1
  320. package/dist/excalidraw/gesture.d.ts +1 -1
  321. package/dist/excalidraw/groups.d.ts +5 -3
  322. package/dist/excalidraw/groups.js +17 -0
  323. package/dist/excalidraw/history.d.ts +35 -47
  324. package/dist/excalidraw/history.js +100 -167
  325. package/dist/excalidraw/hooks/useCreatePortalContainer.js +2 -1
  326. package/dist/excalidraw/hooks/useEmitter.d.ts +2 -0
  327. package/dist/excalidraw/hooks/useEmitter.js +13 -0
  328. package/dist/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  329. package/dist/excalidraw/i18n.d.ts +1 -1
  330. package/dist/excalidraw/index.d.ts +3 -1
  331. package/dist/excalidraw/index.js +2 -0
  332. package/dist/excalidraw/jotai.d.ts +1 -1
  333. package/dist/excalidraw/laser-trails.d.ts +3 -2
  334. package/dist/excalidraw/locales/en.json +5 -3
  335. package/dist/excalidraw/math.d.ts +2 -2
  336. package/dist/excalidraw/points.d.ts +1 -1
  337. package/dist/excalidraw/queue.d.ts +1 -1
  338. package/dist/excalidraw/renderer/helpers.d.ts +2 -2
  339. package/dist/excalidraw/renderer/helpers.js +2 -2
  340. package/dist/excalidraw/renderer/interactiveScene.d.ts +2 -2
  341. package/dist/excalidraw/renderer/interactiveScene.js +8 -7
  342. package/dist/excalidraw/renderer/renderElement.d.ts +3 -3
  343. package/dist/excalidraw/renderer/renderElement.js +5 -5
  344. package/dist/excalidraw/renderer/renderSnaps.d.ts +1 -1
  345. package/dist/excalidraw/renderer/renderSnaps.js +2 -1
  346. package/dist/excalidraw/renderer/staticScene.d.ts +1 -1
  347. package/dist/excalidraw/renderer/staticScene.js +14 -3
  348. package/dist/excalidraw/renderer/staticSvgScene.d.ts +4 -4
  349. package/dist/excalidraw/renderer/staticSvgScene.js +10 -0
  350. package/dist/excalidraw/scene/Fonts.d.ts +1 -1
  351. package/dist/excalidraw/scene/Renderer.d.ts +3 -3
  352. package/dist/excalidraw/scene/Scene.d.ts +9 -8
  353. package/dist/excalidraw/scene/Scene.js +31 -16
  354. package/dist/excalidraw/scene/Shape.d.ts +1 -1
  355. package/dist/excalidraw/scene/ShapeCache.d.ts +4 -4
  356. package/dist/excalidraw/scene/comparisons.d.ts +2 -2
  357. package/dist/excalidraw/scene/export.d.ts +2 -2
  358. package/dist/excalidraw/scene/export.js +5 -4
  359. package/dist/excalidraw/scene/scroll.d.ts +2 -2
  360. package/dist/excalidraw/scene/scrollbars.d.ts +3 -3
  361. package/dist/excalidraw/scene/selection.d.ts +2 -2
  362. package/dist/excalidraw/scene/types.d.ts +5 -4
  363. package/dist/excalidraw/scene/zoom.d.ts +1 -1
  364. package/dist/excalidraw/snapping.d.ts +4 -4
  365. package/dist/excalidraw/store.d.ts +99 -0
  366. package/dist/excalidraw/store.js +269 -0
  367. package/dist/excalidraw/types.d.ts +33 -19
  368. package/dist/excalidraw/utils.d.ts +11 -4
  369. package/dist/excalidraw/utils.js +8 -0
  370. package/dist/excalidraw/zindex.d.ts +4 -4
  371. package/dist/excalidraw/zindex.js +9 -13
  372. package/dist/prod/{en-II4GK66F.json → en-UQDDYCH7.json} +5 -3
  373. package/dist/prod/index.css +1 -1
  374. package/dist/prod/index.js +44 -44
  375. package/dist/utils/bbox.d.ts +2 -2
  376. package/dist/utils/collision.d.ts +4 -0
  377. package/dist/utils/collision.js +48 -0
  378. package/dist/utils/export.d.ts +2 -2
  379. package/dist/utils/geometry/geometry.d.ts +71 -0
  380. package/dist/utils/geometry/geometry.js +674 -0
  381. package/dist/utils/geometry/shape.d.ts +56 -0
  382. package/dist/utils/geometry/shape.js +168 -0
  383. package/dist/utils/withinBounds.d.ts +1 -1
  384. package/history.ts +163 -218
  385. package/package.json +2 -1
  386. package/dist/browser/dev/excalidraw-assets-dev/chunk-AK7SWNLN.js.map +0 -7
  387. package/dist/browser/dev/excalidraw-assets-dev/chunk-RWZVJAQU.js.map +0 -7
  388. package/dist/browser/dev/excalidraw-assets-dev/chunk-Z3PH3V2B.js.map +0 -7
  389. package/dist/browser/dev/excalidraw-assets-dev/image-OFRRV5MB.css.map +0 -7
  390. package/dist/browser/prod/excalidraw-assets/chunk-LL4GORAM.js +0 -55
  391. package/dist/browser/prod/excalidraw-assets/image-EFCJDJH3.js +0 -1
  392. /package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-ACFH36JV.js.map → blockDiagram-91b80b7a-H47FTXHA.js.map} +0 -0
  393. /package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-QZ27YR47.js.map → c4Diagram-b2a90758-NNJK6GKC.js.map} +0 -0
  394. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-HO2HMSK7.js.map → chunk-4KQVEBHW.js.map} +0 -0
  395. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-USGV265L.js.map → chunk-53YI56GV.js.map} +0 -0
  396. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-EDFX3S7X.js.map → chunk-A2WCJI4I.js.map} +0 -0
  397. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-IX4V72YG.js.map → chunk-EFLPX7NE.js.map} +0 -0
  398. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-MXVETLVM.js.map → chunk-JYIQCNWV.js.map} +0 -0
  399. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-YZIOORVX.js.map → chunk-LVIQQW6F.js.map} +0 -0
  400. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-6U7GQNJT.js.map → chunk-PXLO3FOU.js.map} +0 -0
  401. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-7DACDEY3.js.map → chunk-TO2AW5PW.js.map} +0 -0
  402. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-NJ77ZFNJ.js.map → chunk-VURILHLY.js.map} +0 -0
  403. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-2T2GU7NF.js.map → chunk-ZAYGSUHF.js.map} +0 -0
  404. /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-QSLMH4JW.js.map → classDiagram-30eddba6-CUYIJICN.js.map} +0 -0
  405. /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-DY4DYQ5P.js.map → classDiagram-v2-f2df5561-K6WW6K73.js.map} +0 -0
  406. /package/dist/browser/dev/excalidraw-assets-dev/{dist-Z46EOVOL.js.map → dist-ITJNUBZF.js.map} +0 -0
  407. /package/dist/browser/dev/excalidraw-assets-dev/{en-5TCZHGGJ.js.map → en-BF4XUPIZ.js.map} +0 -0
  408. /package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-SOOJRTCB.js.map → erDiagram-47591fe2-XGAD7EEP.js.map} +0 -0
  409. /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-AHGL4KPK.js.map → flowDiagram-5540d9b9-B6EOVNNO.js.map} +0 -0
  410. /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-56LDZZWY.js.map → flowDiagram-v2-3b53844e-NUG24FJH.js.map} +0 -0
  411. /package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-27LUKRI6.js.map → flowchart-elk-definition-5fe447d6-25Y7PCBL.js.map} +0 -0
  412. /package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-EHGYGNG6.js.map → ganttDiagram-9a3bba1f-GNL6ZDTC.js.map} +0 -0
  413. /package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJQNBDW5.js.map → gitGraphDiagram-96e6b4ee-HNW52NVO.js.map} +0 -0
  414. /package/dist/browser/dev/excalidraw-assets-dev/{image-EDKQZH7Z.js.map → image-LVS32KQQ.js.map} +0 -0
  415. /package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-SWLLQVES.js.map → infoDiagram-bcd20f53-FWEUVFLT.js.map} +0 -0
  416. /package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-7UAVCWOZ.js.map → journeyDiagram-4fe6b3dc-RZIUI7UG.js.map} +0 -0
  417. /package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-SROW5KGM.js.map → mindmap-definition-f354de21-GBVN45GU.js.map} +0 -0
  418. /package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-QKCI6NCB.js.map → pieDiagram-79897490-ECENNII6.js.map} +0 -0
  419. /package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-LNYJZFC5.js.map → quadrantDiagram-62f64e94-ZMEOFVNL.js.map} +0 -0
  420. /package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZZD7ZHFA.js.map → requirementDiagram-05bf5f74-FHZSFHCR.js.map} +0 -0
  421. /package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-L75ZZ4UM.js.map → sankeyDiagram-97764748-VDKIKTA6.js.map} +0 -0
  422. /package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-6PCU7TDK.js.map → sequenceDiagram-acc0e65c-6JUSPVKX.js.map} +0 -0
  423. /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-WM76WOPR.js.map → stateDiagram-0ff1cf1a-L3AKWENF.js.map} +0 -0
  424. /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-N4HZW3O2.js.map → stateDiagram-v2-9a9d610d-NU3GGMCH.js.map} +0 -0
  425. /package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-ZHGCAXGP.js.map → timeline-definition-fea2a41d-JGP7XCHW.js.map} +0 -0
  426. /package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-2DLOVRAZ.js.map → xychartDiagram-ab372869-HLFHHF2I.js.map} +0 -0
@@ -1,3 +1,4 @@
1
+ import { THEME } from "../constants";
1
2
  const SNAP_COLOR_LIGHT = "#ff6b6b";
2
3
  const SNAP_COLOR_DARK = "#ff0000";
3
4
  const SNAP_WIDTH = 1;
@@ -9,7 +10,7 @@ export const renderSnaps = (context, appState) => {
9
10
  // in dark mode, we need to adjust the color to account for color inversion.
10
11
  // Don't change if zen mode, because we draw only crosses, we want the
11
12
  // colors to be more visible
12
- const snapColor = appState.theme === "light" || appState.zenModeEnabled
13
+ const snapColor = appState.theme === THEME.LIGHT || appState.zenModeEnabled
13
14
  ? SNAP_COLOR_LIGHT
14
15
  : SNAP_COLOR_DARK;
15
16
  // in zen mode make the cross more visible since we don't draw the lines
@@ -1,4 +1,4 @@
1
- import { StaticSceneRenderConfig } from "../scene/types";
1
+ import type { StaticSceneRenderConfig } from "../scene/types";
2
2
  /** throttled to animation framerate */
3
3
  export declare const renderStaticSceneThrottled: {
4
4
  (config: StaticSceneRenderConfig): void;
@@ -1,12 +1,13 @@
1
1
  import { FRAME_STYLE } from "../constants";
2
2
  import { getElementAbsoluteCoords } from "../element";
3
3
  import { elementOverlapsWithFrame, getTargetFrame, isElementInFrame, } from "../frame";
4
- import { isEmbeddableElement, isIframeLikeElement, } from "../element/typeChecks";
4
+ import { isEmbeddableElement, isIframeLikeElement, isTextElement, } from "../element/typeChecks";
5
5
  import { renderElement } from "../renderer/renderElement";
6
6
  import { createPlaceholderEmbeddableLabel } from "../element/embeddable";
7
7
  import { EXTERNAL_LINK_IMG, getLinkHandleFromCoords, } from "../components/hyperlink/helpers";
8
8
  import { bootstrapCanvas, getNormalizedCanvasDimensions } from "./helpers";
9
9
  import { throttleRAF } from "../utils";
10
+ import { getBoundTextElement } from "../element/textElement";
10
11
  const strokeGrid = (context, gridSize, scrollX, scrollY, zoom, width, height) => {
11
12
  const BOLD_LINE_FREQUENCY = 5;
12
13
  let GridLineColor;
@@ -121,21 +122,31 @@ const _renderStaticScene = ({ canvas, rc, elementsMap, allElementsMap, visibleEl
121
122
  .forEach((element) => {
122
123
  try {
123
124
  const frameId = element.frameId || appState.frameToHighlight?.id;
125
+ if (isTextElement(element) &&
126
+ element.containerId &&
127
+ elementsMap.has(element.containerId)) {
128
+ // will be rendered with the container
129
+ return;
130
+ }
131
+ context.save();
124
132
  if (frameId &&
125
133
  appState.frameRendering.enabled &&
126
134
  appState.frameRendering.clip) {
127
- context.save();
128
135
  const frame = getTargetFrame(element, elementsMap, appState);
129
136
  // TODO do we need to check isElementInFrame here?
130
137
  if (frame && isElementInFrame(element, elementsMap, appState)) {
131
138
  frameClip(frame, context, renderConfig, appState);
132
139
  }
133
140
  renderElement(element, elementsMap, allElementsMap, rc, context, renderConfig, appState);
134
- context.restore();
135
141
  }
136
142
  else {
137
143
  renderElement(element, elementsMap, allElementsMap, rc, context, renderConfig, appState);
138
144
  }
145
+ const boundTextElement = getBoundTextElement(element, elementsMap);
146
+ if (boundTextElement) {
147
+ renderElement(boundTextElement, elementsMap, allElementsMap, rc, context, renderConfig, appState);
148
+ }
149
+ context.restore();
139
150
  if (!isExporting) {
140
151
  renderLinkIcon(element, context, appState, elementsMap);
141
152
  }
@@ -1,5 +1,5 @@
1
- import { RoughSVG } from "roughjs/bin/svg";
2
- import { NonDeletedExcalidrawElement } from "../element/types";
3
- import { RenderableElementsMap, SVGRenderConfig } from "../scene/types";
4
- import { BinaryFiles } from "../types";
1
+ import type { RoughSVG } from "roughjs/bin/svg";
2
+ import type { NonDeletedExcalidrawElement } from "../element/types";
3
+ import type { RenderableElementsMap, SVGRenderConfig } from "../scene/types";
4
+ import type { BinaryFiles } from "../types";
5
5
  export declare const renderSceneToSvg: (elements: readonly NonDeletedExcalidrawElement[], elementsMap: RenderableElementsMap, rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, renderConfig: SVGRenderConfig) => void;
@@ -361,8 +361,18 @@ export const renderSceneToSvg = (elements, elementsMap, rsvg, svgRoot, files, re
361
361
  .filter((el) => !isIframeLikeElement(el))
362
362
  .forEach((element) => {
363
363
  if (!element.isDeleted) {
364
+ if (isTextElement(element) &&
365
+ element.containerId &&
366
+ elementsMap.has(element.containerId)) {
367
+ // will be rendered with the container
368
+ return;
369
+ }
364
370
  try {
365
371
  renderElementToSvg(element, elementsMap, rsvg, svgRoot, files, element.x + renderConfig.offsetX, element.y + renderConfig.offsetY, renderConfig);
372
+ const boundTextElement = getBoundTextElement(element, elementsMap);
373
+ if (boundTextElement) {
374
+ renderElementToSvg(boundTextElement, elementsMap, rsvg, svgRoot, files, boundTextElement.x + renderConfig.offsetX, boundTextElement.y + renderConfig.offsetY, renderConfig);
375
+ }
366
376
  }
367
377
  catch (error) {
368
378
  console.error(error);
@@ -1,4 +1,4 @@
1
- import { ExcalidrawElement } from "../element/types";
1
+ import type { ExcalidrawElement } from "../element/types";
2
2
  import type Scene from "./Scene";
3
3
  export declare class Fonts {
4
4
  private scene;
@@ -1,6 +1,6 @@
1
- import { NonDeletedExcalidrawElement } from "../element/types";
2
- import { AppState } from "../types";
3
- import Scene from "./Scene";
1
+ import type { NonDeletedExcalidrawElement } from "../element/types";
2
+ import type { AppState } from "../types";
3
+ import type Scene from "./Scene";
4
4
  export declare class Renderer {
5
5
  private scene;
6
6
  constructor(scene: Scene);
@@ -1,6 +1,6 @@
1
- import { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted, ExcalidrawFrameLikeElement, ElementsMapOrArray } from "../element/types";
2
- import { LinearElementEditor } from "../element/linearElementEditor";
3
- import { AppState } from "../types";
1
+ import type { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted, ExcalidrawFrameLikeElement, ElementsMapOrArray, OrderedExcalidrawElement, Ordered } from "../element/types";
2
+ import type { LinearElementEditor } from "../element/linearElementEditor";
3
+ import type { AppState } from "../types";
4
4
  type ElementIdKey = InstanceType<typeof LinearElementEditor>["elementId"];
5
5
  type ElementKey = ExcalidrawElement | ElementIdKey;
6
6
  type SceneStateCallback = () => void;
@@ -20,10 +20,10 @@ declare class Scene {
20
20
  private elementsMap;
21
21
  private selectedElementsCache;
22
22
  private versionNonce;
23
- getElementsMapIncludingDeleted(): Map<string, ExcalidrawElement> & import("../utility-types").MakeBrand<"SceneElementsMap">;
24
- getNonDeletedElementsMap(): Map<string, NonDeletedExcalidrawElement> & import("../utility-types").MakeBrand<"NonDeletedSceneElementsMap">;
25
- getElementsIncludingDeleted(): readonly ExcalidrawElement[];
26
- getNonDeletedElements(): readonly NonDeletedExcalidrawElement[];
23
+ getNonDeletedElementsMap(): Map<string, Ordered<NonDeletedExcalidrawElement>> & import("../utility-types").MakeBrand<"NonDeletedSceneElementsMap">;
24
+ getElementsIncludingDeleted(): readonly OrderedExcalidrawElement[];
25
+ getElementsMapIncludingDeleted(): Map<string, Ordered<ExcalidrawElement>> & import("../utility-types").MakeBrand<"SceneElementsMap">;
26
+ getNonDeletedElements(): readonly Ordered<NonDeletedExcalidrawElement>[];
27
27
  getFramesIncludingDeleted(): readonly ExcalidrawFrameLikeElement[];
28
28
  getSelectedElements(opts: {
29
29
  selectedElementIds: AppState["selectedElementIds"];
@@ -59,7 +59,8 @@ declare class Scene {
59
59
  destroy(): void;
60
60
  insertElementAtIndex(element: ExcalidrawElement, index: number): void;
61
61
  insertElementsAtIndex(elements: ExcalidrawElement[], index: number): void;
62
- addNewElement: (element: ExcalidrawElement) => void;
62
+ insertElement: (element: ExcalidrawElement) => void;
63
+ insertElements: (elements: ExcalidrawElement[]) => void;
63
64
  getElementIndex(elementId: string): number;
64
65
  getContainerElement: (element: (ExcalidrawElement & {
65
66
  containerId: ExcalidrawElement["id"] | null;
@@ -2,7 +2,10 @@ import { isNonDeletedElement } from "../element";
2
2
  import { isFrameLikeElement } from "../element/typeChecks";
3
3
  import { getSelectedElements } from "./selection";
4
4
  import { randomInteger } from "../random";
5
+ import { syncInvalidIndices, syncMovedIndices, validateFractionalIndices, } from "../fractionalIndex";
6
+ import { arrayToMap } from "../utils";
5
7
  import { toBrandedType } from "../utils";
8
+ import { ENV } from "../constants";
6
9
  const getNonDeletedElements = (allElements) => {
7
10
  const elementsMap = new Map();
8
11
  const elements = [];
@@ -59,6 +62,7 @@ class Scene {
59
62
  callbacks = new Set();
60
63
  nonDeletedElements = [];
61
64
  nonDeletedElementsMap = toBrandedType(new Map());
65
+ // ideally all elements within the scene should be wrapped around with `Ordered` type, but right now there is no real benefit doing so
62
66
  elements = [];
63
67
  nonDeletedFramesLikes = [];
64
68
  frames = [];
@@ -69,15 +73,15 @@ class Scene {
69
73
  cache: new Map(),
70
74
  };
71
75
  versionNonce;
72
- getElementsMapIncludingDeleted() {
73
- return this.elementsMap;
74
- }
75
76
  getNonDeletedElementsMap() {
76
77
  return this.nonDeletedElementsMap;
77
78
  }
78
79
  getElementsIncludingDeleted() {
79
80
  return this.elements;
80
81
  }
82
+ getElementsMapIncludingDeleted() {
83
+ return this.elementsMap;
84
+ }
81
85
  getNonDeletedElements() {
82
86
  return this.nonDeletedElements;
83
87
  }
@@ -151,12 +155,17 @@ class Scene {
151
155
  return didChange;
152
156
  }
153
157
  replaceAllElements(nextElements) {
154
- this.elements =
155
- // ts doesn't like `Array.isArray` of `instanceof Map`
156
- nextElements instanceof Array
157
- ? nextElements
158
- : Array.from(nextElements.values());
158
+ const _nextElements =
159
+ // ts doesn't like `Array.isArray` of `instanceof Map`
160
+ nextElements instanceof Array
161
+ ? nextElements
162
+ : Array.from(nextElements.values());
159
163
  const nextFrameLikes = [];
164
+ if (import.meta.env.DEV || import.meta.env.MODE === ENV.TEST) {
165
+ // throw on invalid indices in test / dev to potentially detect cases were we forgot to sync moved elements
166
+ validateFractionalIndices(_nextElements.map((x) => x.index));
167
+ }
168
+ this.elements = syncInvalidIndices(_nextElements);
160
169
  this.elementsMap.clear();
161
170
  this.elements.forEach((element) => {
162
171
  if (isFrameLikeElement(element)) {
@@ -191,8 +200,8 @@ class Scene {
191
200
  };
192
201
  }
193
202
  destroy() {
194
- this.nonDeletedElements = [];
195
203
  this.elements = [];
204
+ this.nonDeletedElements = [];
196
205
  this.nonDeletedFramesLikes = [];
197
206
  this.frames = [];
198
207
  this.elementsMap.clear();
@@ -217,6 +226,7 @@ class Scene {
217
226
  element,
218
227
  ...this.elements.slice(index),
219
228
  ];
229
+ syncMovedIndices(nextElements, arrayToMap([element]));
220
230
  this.replaceAllElements(nextElements);
221
231
  }
222
232
  insertElementsAtIndex(elements, index) {
@@ -228,15 +238,20 @@ class Scene {
228
238
  ...elements,
229
239
  ...this.elements.slice(index),
230
240
  ];
241
+ syncMovedIndices(nextElements, arrayToMap(elements));
231
242
  this.replaceAllElements(nextElements);
232
243
  }
233
- addNewElement = (element) => {
234
- if (element.frameId) {
235
- this.insertElementAtIndex(element, this.getElementIndex(element.frameId));
236
- }
237
- else {
238
- this.replaceAllElements([...this.elements, element]);
239
- }
244
+ insertElement = (element) => {
245
+ const index = element.frameId
246
+ ? this.getElementIndex(element.frameId)
247
+ : this.elements.length;
248
+ this.insertElementAtIndex(element, index);
249
+ };
250
+ insertElements = (elements) => {
251
+ const index = elements[0].frameId
252
+ ? this.getElementIndex(elements[0].frameId)
253
+ : this.elements.length;
254
+ this.insertElementsAtIndex(elements, index);
240
255
  };
241
256
  getElementIndex(elementId) {
242
257
  return this.elements.findIndex((element) => element.id === elementId);
@@ -1,7 +1,7 @@
1
1
  import type { Drawable, Options } from "roughjs/bin/core";
2
2
  import type { RoughGenerator } from "roughjs/bin/generator";
3
3
  import type { ExcalidrawElement, NonDeletedExcalidrawElement, ExcalidrawSelectionElement } from "../element/types";
4
- import { EmbedsValidationStatus } from "../types";
4
+ import type { EmbedsValidationStatus } from "../types";
5
5
  export declare const generateRoughOptions: (element: ExcalidrawElement, continuousPath?: boolean) => Options;
6
6
  /**
7
7
  * Generates the roughjs shape for given element.
@@ -1,7 +1,7 @@
1
- import { Drawable } from "roughjs/bin/core";
2
- import { ExcalidrawElement } from "../element/types";
3
- import { ElementShape, ElementShapes } from "./types";
4
- import { AppState, EmbedsValidationStatus } from "../types";
1
+ import type { Drawable } from "roughjs/bin/core";
2
+ import type { ExcalidrawElement } from "../element/types";
3
+ import type { ElementShape, ElementShapes } from "./types";
4
+ import type { AppState, EmbedsValidationStatus } from "../types";
5
5
  export declare class ShapeCache {
6
6
  private static rg;
7
7
  private static cache;
@@ -1,5 +1,5 @@
1
- import { NonDeletedExcalidrawElement } from "../element/types";
2
- import { ElementOrToolType } from "../types";
1
+ import type { NonDeletedExcalidrawElement } from "../element/types";
2
+ import type { ElementOrToolType } from "../types";
3
3
  export declare const hasBackground: (type: ElementOrToolType) => boolean;
4
4
  export declare const hasStrokeColor: (type: ElementOrToolType) => boolean;
5
5
  export declare const hasStrokeWidth: (type: ElementOrToolType) => boolean;
@@ -1,5 +1,5 @@
1
- import { ExcalidrawFrameLikeElement, NonDeletedExcalidrawElement } from "../element/types";
2
- import { AppState, BinaryFiles } from "../types";
1
+ import type { ExcalidrawFrameLikeElement, NonDeletedExcalidrawElement } from "../element/types";
2
+ import type { AppState, BinaryFiles } from "../types";
3
3
  export declare const exportToCanvas: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, files: BinaryFiles, { exportBackground, exportPadding, viewBackgroundColor, exportingFrame, }: {
4
4
  exportBackground: boolean;
5
5
  exportPadding?: number | undefined;
@@ -1,8 +1,8 @@
1
1
  import rough from "roughjs/bin/rough";
2
- import { getCommonBounds, getElementAbsoluteCoords, } from "../element/bounds";
2
+ import { getCommonBounds, getElementAbsoluteCoords } from "../element/bounds";
3
3
  import { renderSceneToSvg } from "../renderer/staticSvgScene";
4
4
  import { arrayToMap, distance, getFontString, toBrandedType } from "../utils";
5
- import { DEFAULT_EXPORT_PADDING, FONT_FAMILY, FRAME_STYLE, SVG_NS, THEME_FILTER, } from "../constants";
5
+ import { DEFAULT_EXPORT_PADDING, FONT_FAMILY, FRAME_STYLE, SVG_NS, THEME, THEME_FILTER, } from "../constants";
6
6
  import { getDefaultAppState } from "../appState";
7
7
  import { serializeAsJSON } from "../data/json";
8
8
  import { getInitializedImageElements, updateImageCache, } from "../element/image";
@@ -10,6 +10,7 @@ import { getElementsOverlappingFrame, getFrameLikeElements, getFrameLikeTitle, g
10
10
  import { newTextElement } from "../element";
11
11
  import { newElementWith } from "../element/mutateElement";
12
12
  import { isFrameElement, isFrameLikeElement } from "../element/typeChecks";
13
+ import { syncInvalidIndices } from "../fractionalIndex";
13
14
  import { renderStaticScene } from "../renderer/staticScene";
14
15
  const SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;
15
16
  const truncateText = (element, maxWidth) => {
@@ -128,7 +129,7 @@ export const exportToCanvas = async (elements, appState, files, { exportBackgrou
128
129
  canvas,
129
130
  rc: rough.canvas(canvas),
130
131
  elementsMap: toBrandedType(arrayToMap(elementsForRender)),
131
- allElementsMap: toBrandedType(arrayToMap(elements)),
132
+ allElementsMap: toBrandedType(arrayToMap(syncInvalidIndices(elements))),
132
133
  visibleElements: elementsForRender,
133
134
  scale,
134
135
  appState: {
@@ -139,7 +140,7 @@ export const exportToCanvas = async (elements, appState, files, { exportBackgrou
139
140
  scrollY: -minY + exportPadding,
140
141
  zoom: defaultAppState.zoom,
141
142
  shouldCacheIgnoreZoom: false,
142
- theme: appState.exportWithDarkMode ? "dark" : "light",
143
+ theme: appState.exportWithDarkMode ? THEME.DARK : THEME.LIGHT,
143
144
  },
144
145
  renderConfig: {
145
146
  canvasBackgroundColor: viewBackgroundColor,
@@ -1,5 +1,5 @@
1
- import { AppState, PointerCoords, Zoom } from "../types";
2
- import { ExcalidrawElement } from "../element/types";
1
+ import type { AppState, PointerCoords, Zoom } from "../types";
2
+ import type { ExcalidrawElement } from "../element/types";
3
3
  export declare const centerScrollOn: ({ scenePoint, viewportDimensions, zoom, }: {
4
4
  scenePoint: PointerCoords;
5
5
  viewportDimensions: {
@@ -1,6 +1,6 @@
1
- import { InteractiveCanvasAppState } from "../types";
2
- import { ScrollBars } from "./types";
3
- import { ExcalidrawElement } from "../element/types";
1
+ import type { InteractiveCanvasAppState } from "../types";
2
+ import type { ScrollBars } from "./types";
3
+ import type { ExcalidrawElement } from "../element/types";
4
4
  export declare const SCROLLBAR_MARGIN = 4;
5
5
  export declare const SCROLLBAR_WIDTH = 6;
6
6
  export declare const SCROLLBAR_COLOR = "rgba(0,0,0,0.3)";
@@ -1,5 +1,5 @@
1
- import { ElementsMap, ElementsMapOrArray, ExcalidrawElement, NonDeletedExcalidrawElement } from "../element/types";
2
- import { AppState, InteractiveCanvasAppState } from "../types";
1
+ import type { ElementsMap, ElementsMapOrArray, ExcalidrawElement, NonDeletedExcalidrawElement } from "../element/types";
2
+ import type { AppState, InteractiveCanvasAppState } from "../types";
3
3
  /**
4
4
  * Frames and their containing elements are not to be selected at the same time.
5
5
  * Given an array of selected elements, if there are frames and their containing elements
@@ -1,8 +1,8 @@
1
1
  import type { RoughCanvas } from "roughjs/bin/canvas";
2
- import { Drawable } from "roughjs/bin/core";
3
- import { ExcalidrawElement, ExcalidrawTextElement, NonDeletedElementsMap, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "../element/types";
4
- import { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, UserIdleState } from "../types";
5
- import { MakeBrand } from "../utility-types";
2
+ import type { Drawable } from "roughjs/bin/core";
3
+ import type { ExcalidrawElement, ExcalidrawTextElement, NonDeletedElementsMap, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "../element/types";
4
+ import type { AppClassProperties, AppState, EmbedsValidationStatus, ElementsPendingErasure, InteractiveCanvasAppState, StaticCanvasAppState, SocketId, UserIdleState, Device } from "../types";
5
+ import type { MakeBrand } from "../utility-types";
6
6
  export type RenderableElementsMap = NonDeletedElementsMap & MakeBrand<"RenderableElementsMap">;
7
7
  export type StaticCanvasRenderConfig = {
8
8
  canvasBackgroundColor: AppState["viewBackgroundColor"];
@@ -59,6 +59,7 @@ export type InteractiveSceneRenderConfig = {
59
59
  scale: number;
60
60
  appState: InteractiveCanvasAppState;
61
61
  renderConfig: InteractiveCanvasRenderConfig;
62
+ device: Device;
62
63
  callback: (data: RenderInteractiveSceneCallback) => void;
63
64
  };
64
65
  export type SceneScroll = {
@@ -1,4 +1,4 @@
1
- import { AppState, NormalizedZoomValue } from "../types";
1
+ import type { AppState, NormalizedZoomValue } from "../types";
2
2
  export declare const getNormalizedZoom: (zoom: number) => NormalizedZoomValue;
3
3
  export declare const getStateForZoom: ({ viewportX, viewportY, nextZoom, }: {
4
4
  viewportX: number;
@@ -1,7 +1,7 @@
1
- import { Bounds } from "./element/bounds";
2
- import { MaybeTransformHandleType } from "./element/transformHandles";
3
- import { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement } from "./element/types";
4
- import { AppState, KeyboardModifiersObject, Point } from "./types";
1
+ import type { Bounds } from "./element/bounds";
2
+ import type { MaybeTransformHandleType } from "./element/transformHandles";
3
+ import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement } from "./element/types";
4
+ import type { AppState, KeyboardModifiersObject, Point } from "./types";
5
5
  export declare const getSnapDistance: (zoomValue: number) => number;
6
6
  type Vector2D = {
7
7
  x: number;
@@ -0,0 +1,99 @@
1
+ import { AppStateChange, ElementsChange } from "./change";
2
+ import type { OrderedExcalidrawElement } from "./element/types";
3
+ import { Emitter } from "./emitter";
4
+ import type { AppState, ObservedAppState } from "./types";
5
+ export declare const getObservedAppState: (appState: AppState) => ObservedAppState;
6
+ export type StoreActionType = "capture" | "update" | "none";
7
+ export declare const StoreAction: {
8
+ [K in Uppercase<StoreActionType>]: StoreActionType;
9
+ };
10
+ /**
11
+ * Represent an increment to the Store.
12
+ */
13
+ declare class StoreIncrementEvent {
14
+ readonly elementsChange: ElementsChange;
15
+ readonly appStateChange: AppStateChange;
16
+ constructor(elementsChange: ElementsChange, appStateChange: AppStateChange);
17
+ }
18
+ /**
19
+ * Store which captures the observed changes and emits them as `StoreIncrementEvent` events.
20
+ *
21
+ * @experimental this interface is experimental and subject to change.
22
+ */
23
+ export interface IStore {
24
+ onStoreIncrementEmitter: Emitter<[StoreIncrementEvent]>;
25
+ get snapshot(): Snapshot;
26
+ set snapshot(snapshot: Snapshot);
27
+ /**
28
+ * Use to schedule update of the snapshot, useful on updates for which we don't need to calculate increments (i.e. remote updates).
29
+ */
30
+ shouldUpdateSnapshot(): void;
31
+ /**
32
+ * Use to schedule calculation of a store increment.
33
+ */
34
+ shouldCaptureIncrement(): void;
35
+ /**
36
+ * Based on the scheduled operation, either only updates store snapshot or also calculates increment and emits the result as a `StoreIncrementEvent`.
37
+ *
38
+ * @emits StoreIncrementEvent when increment is calculated.
39
+ */
40
+ commit(elements: Map<string, OrderedExcalidrawElement> | undefined, appState: AppState | ObservedAppState | undefined): void;
41
+ /**
42
+ * Clears the store instance.
43
+ */
44
+ clear(): void;
45
+ /**
46
+ * Filters out yet uncomitted elements from `nextElements`, which are part of in-progress local async actions (ephemerals) and thus were not yet commited to the snapshot.
47
+ *
48
+ * This is necessary in updates in which we receive reconciled elements, already containing elements which were not yet captured by the local store (i.e. collab).
49
+ */
50
+ filterUncomittedElements(prevElements: Map<string, OrderedExcalidrawElement>, nextElements: Map<string, OrderedExcalidrawElement>): Map<string, OrderedExcalidrawElement>;
51
+ }
52
+ export declare class Store implements IStore {
53
+ readonly onStoreIncrementEmitter: Emitter<[StoreIncrementEvent]>;
54
+ private scheduledActions;
55
+ private _snapshot;
56
+ get snapshot(): Snapshot;
57
+ set snapshot(snapshot: Snapshot);
58
+ shouldCaptureIncrement: () => void;
59
+ shouldUpdateSnapshot: () => void;
60
+ private scheduleAction;
61
+ commit: (elements: Map<string, OrderedExcalidrawElement> | undefined, appState: AppState | ObservedAppState | undefined) => void;
62
+ captureIncrement: (elements: Map<string, OrderedExcalidrawElement> | undefined, appState: AppState | ObservedAppState | undefined) => void;
63
+ updateSnapshot: (elements: Map<string, OrderedExcalidrawElement> | undefined, appState: AppState | ObservedAppState | undefined) => void;
64
+ filterUncomittedElements: (prevElements: Map<string, OrderedExcalidrawElement>, nextElements: Map<string, OrderedExcalidrawElement>) => Map<string, OrderedExcalidrawElement>;
65
+ clear: () => void;
66
+ private satisfiesScheduledActionsInvariant;
67
+ }
68
+ export declare class Snapshot {
69
+ readonly elements: Map<string, OrderedExcalidrawElement>;
70
+ readonly appState: ObservedAppState;
71
+ readonly meta: {
72
+ didElementsChange: boolean;
73
+ didAppStateChange: boolean;
74
+ isEmpty?: boolean;
75
+ };
76
+ private constructor();
77
+ static empty(): Snapshot;
78
+ isEmpty(): boolean | undefined;
79
+ /**
80
+ * Efficiently clone the existing snapshot, only if we detected changes.
81
+ *
82
+ * @returns same instance if there are no changes detected, new instance otherwise.
83
+ */
84
+ maybeClone(elements: Map<string, OrderedExcalidrawElement> | undefined, appState: AppState | ObservedAppState | undefined): Snapshot;
85
+ private maybeCreateAppStateSnapshot;
86
+ private detectChangedAppState;
87
+ private maybeCreateElementsSnapshot;
88
+ /**
89
+ * Detect if there any changed elements.
90
+ *
91
+ * NOTE: we shouldn't just use `sceneVersionNonce` instead, as we need to call this before the scene updates.
92
+ */
93
+ private detectChangedElements;
94
+ /**
95
+ * Perform structural clone, cloning only elements that changed.
96
+ */
97
+ private createElementsSnapshot;
98
+ }
99
+ export {};