@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,4 +1,4 @@
1
- import { ExcalidrawTextContainer } from "./types";
1
+ import type { ExcalidrawTextContainer } from "./types";
2
2
  export declare const originalContainerCache: {
3
3
  [id: ExcalidrawTextContainer["id"]]: {
4
4
  height: ExcalidrawTextContainer["height"];
@@ -1,6 +1,6 @@
1
- import { NonDeletedExcalidrawElement } from "./types";
2
- import { AppState, PointerDownState } from "../types";
3
- import Scene from "../scene/Scene";
1
+ import type { NonDeletedExcalidrawElement } from "./types";
2
+ import type { AppState, PointerDownState } from "../types";
3
+ import type Scene from "../scene/Scene";
4
4
  export declare const dragSelectedElements: (pointerDownState: PointerDownState, selectedElements: NonDeletedExcalidrawElement[], offset: {
5
5
  x: number;
6
6
  y: number;
@@ -1,8 +1,10 @@
1
1
  /// <reference types="react" />
2
- import { ExcalidrawProps } from "../types";
3
- import { ExcalidrawElement, ExcalidrawIframeLikeElement, IframeData } from "./types";
2
+ import type { ExcalidrawProps } from "../types";
3
+ import type { ExcalidrawElement, ExcalidrawIframeLikeElement, IframeData } from "./types";
4
+ import type { MarkRequired } from "../utility-types";
5
+ type IframeDataWithSandbox = MarkRequired<IframeData, "sandbox">;
4
6
  export declare const createSrcDoc: (body: string) => string;
5
- export declare const getEmbedLink: (link: string | null | undefined) => IframeData | null;
7
+ export declare const getEmbedLink: (link: string | null | undefined) => IframeDataWithSandbox | null;
6
8
  export declare const createPlaceholderEmbeddableLabel: (element: ExcalidrawIframeLikeElement) => ExcalidrawElement;
7
9
  export declare const actionSetEmbeddableAsActiveTool: {
8
10
  name: "setEmbeddableAsActiveTool";
@@ -11,8 +13,8 @@ export declare const actionSetEmbeddableAsActiveTool: {
11
13
  };
12
14
  target: string;
13
15
  label: string;
14
- perform: (elements: readonly ExcalidrawElement[], appState: Readonly<import("../types").AppState>, _: any, app: import("../types").AppClassProperties) => {
15
- elements: readonly ExcalidrawElement[];
16
+ perform: (elements: readonly import("./types").OrderedExcalidrawElement[], appState: Readonly<import("../types").AppState>, _: any, app: import("../types").AppClassProperties) => {
17
+ elements: readonly import("./types").OrderedExcalidrawElement[];
16
18
  appState: {
17
19
  activeTool: {
18
20
  lastActiveTool: import("../types").ActiveTool | null;
@@ -165,10 +167,11 @@ export declare const actionSetEmbeddableAsActiveTool: {
165
167
  userToFollow: import("../types").UserToFollow | null;
166
168
  followedBy: Set<import("../types").SocketId>;
167
169
  };
168
- commitToHistory: false;
170
+ storeAction: import("../store").StoreActionType;
169
171
  };
170
172
  } & {
171
173
  keyTest?: undefined;
172
174
  };
173
175
  export declare const maybeParseEmbedSrc: (str: string) => string;
174
176
  export declare const embeddableURLValidator: (url: string | null | undefined, validateEmbeddable: ExcalidrawProps["validateEmbeddable"]) => boolean;
177
+ export {};
@@ -5,16 +5,18 @@ import { setCursorForShape } from "../cursor";
5
5
  import { newTextElement } from "./newElement";
6
6
  import { wrapText } from "./textElement";
7
7
  import { isIframeElement } from "./typeChecks";
8
+ import { sanitizeHTMLAttribute } from "../data/url";
9
+ import { StoreAction } from "../store";
8
10
  const embeddedLinkCache = new Map();
9
11
  const RE_YOUTUBE = /^(?:http(?:s)?:\/\/)?(?:www\.)?youtu(?:be\.com|\.be)\/(embed\/|watch\?v=|shorts\/|playlist\?list=|embed\/videoseries\?list=)?([a-zA-Z0-9_-]+)(?:\?t=|&t=|\?start=|&start=)?([a-zA-Z0-9_-]+)?[^\s]*$/;
10
- const RE_VIMEO = /^(?:http(?:s)?:\/\/)?(?:(?:w){3}.)?(?:player\.)?vimeo\.com\/(?:video\/)?([^?\s]+)(?:\?.*)?$/;
12
+ const RE_VIMEO = /^(?:http(?:s)?:\/\/)?(?:(?:w){3}\.)?(?:player\.)?vimeo\.com\/(?:video\/)?([^?\s]+)(?:\?.*)?$/;
11
13
  const RE_FIGMA = /^https:\/\/(?:www\.)?figma\.com/;
12
- const RE_GH_GIST = /^https:\/\/gist\.github\.com/;
13
- const RE_GH_GIST_EMBED = /^<script[\s\S]*?\ssrc=["'](https:\/\/gist.github.com\/.*?)\.js["']/i;
14
+ const RE_GH_GIST = /^https:\/\/gist\.github\.com\/([\w_-]+)\/([\w_-]+)/;
15
+ const RE_GH_GIST_EMBED = /^<script[\s\S]*?\ssrc=["'](https:\/\/gist\.github\.com\/.*?)\.js["']/i;
14
16
  // not anchored to start to allow <blockquote> twitter embeds
15
- const RE_TWITTER = /(?:http(?:s)?:\/\/)?(?:(?:w){3}.)?(?:twitter|x).com/;
16
- const RE_TWITTER_EMBED = /^<blockquote[\s\S]*?\shref=["'](https:\/\/(?:twitter|x).com\/[^"']*)/i;
17
- const RE_VALTOWN = /^https:\/\/(?:www\.)?val.town\/(v|embed)\/[a-zA-Z_$][0-9a-zA-Z_$]+\.[a-zA-Z_$][0-9a-zA-Z_$]+/;
17
+ const RE_TWITTER = /(?:https?:\/\/)?(?:(?:w){3}\.)?(?:twitter|x)\.com\/[^/]+\/status\/(\d+)/;
18
+ const RE_TWITTER_EMBED = /^<blockquote[\s\S]*?\shref=["'](https?:\/\/(?:twitter|x)\.com\/[^"']*)/i;
19
+ const RE_VALTOWN = /^https:\/\/(?:www\.)?val\.town\/(v|embed)\/[a-zA-Z_$][0-9a-zA-Z_$]+\.[a-zA-Z_$][0-9a-zA-Z_$]+/;
18
20
  const RE_GENERIC_EMBED = /^<(?:iframe|blockquote)[\s\S]*?\s(?:src|href)=["']([^"']*)["'][\s\S]*?>$/i;
19
21
  const RE_GIPHY = /giphy.com\/(?:clips|embed|gifs)\/[a-zA-Z0-9]*?-?([a-zA-Z0-9]+)(?:[^a-zA-Z0-9]|$)/;
20
22
  const ALLOWED_DOMAINS = new Set([
@@ -31,7 +33,17 @@ const ALLOWED_DOMAINS = new Set([
31
33
  "stackblitz.com",
32
34
  "val.town",
33
35
  "giphy.com",
34
- "dddice.com",
36
+ ]);
37
+ const ALLOW_SAME_ORIGIN = new Set([
38
+ "youtube.com",
39
+ "youtu.be",
40
+ "vimeo.com",
41
+ "player.vimeo.com",
42
+ "figma.com",
43
+ "twitter.com",
44
+ "x.com",
45
+ "*.simplepdf.eu",
46
+ "stackblitz.com",
35
47
  ]);
36
48
  export const createSrcDoc = (body) => {
37
49
  return `<html><body>${body}</body></html>`;
@@ -44,6 +56,7 @@ export const getEmbedLink = (link) => {
44
56
  return embeddedLinkCache.get(link);
45
57
  }
46
58
  const originalLink = link;
59
+ const allowSameOrigin = ALLOW_SAME_ORIGIN.has(matchHostname(link, ALLOW_SAME_ORIGIN) || "");
47
60
  let type = "generic";
48
61
  let aspectRatio = { w: 560, h: 840 };
49
62
  const ytLink = link.match(RE_YOUTUBE);
@@ -70,8 +83,14 @@ export const getEmbedLink = (link) => {
70
83
  link,
71
84
  intrinsicSize: aspectRatio,
72
85
  type,
86
+ sandbox: { allowSameOrigin },
73
87
  });
74
- return { link, intrinsicSize: aspectRatio, type };
88
+ return {
89
+ link,
90
+ intrinsicSize: aspectRatio,
91
+ type,
92
+ sandbox: { allowSameOrigin },
93
+ };
75
94
  }
76
95
  const vimeoLink = link.match(RE_VIMEO);
77
96
  if (vimeoLink?.[1]) {
@@ -88,8 +107,15 @@ export const getEmbedLink = (link) => {
88
107
  link,
89
108
  intrinsicSize: aspectRatio,
90
109
  type,
110
+ sandbox: { allowSameOrigin },
91
111
  });
92
- return { link, intrinsicSize: aspectRatio, type, error };
112
+ return {
113
+ link,
114
+ intrinsicSize: aspectRatio,
115
+ type,
116
+ error,
117
+ sandbox: { allowSameOrigin },
118
+ };
93
119
  }
94
120
  const figmaLink = link.match(RE_FIGMA);
95
121
  if (figmaLink) {
@@ -100,8 +126,14 @@ export const getEmbedLink = (link) => {
100
126
  link,
101
127
  intrinsicSize: aspectRatio,
102
128
  type,
129
+ sandbox: { allowSameOrigin },
103
130
  });
104
- return { link, intrinsicSize: aspectRatio, type };
131
+ return {
132
+ link,
133
+ intrinsicSize: aspectRatio,
134
+ type,
135
+ sandbox: { allowSameOrigin },
136
+ };
105
137
  }
106
138
  const valLink = link.match(RE_VALTOWN);
107
139
  if (valLink) {
@@ -111,64 +143,62 @@ export const getEmbedLink = (link) => {
111
143
  link,
112
144
  intrinsicSize: aspectRatio,
113
145
  type,
146
+ sandbox: { allowSameOrigin },
114
147
  });
115
- return { link, intrinsicSize: aspectRatio, type };
148
+ return {
149
+ link,
150
+ intrinsicSize: aspectRatio,
151
+ type,
152
+ sandbox: { allowSameOrigin },
153
+ };
116
154
  }
117
155
  if (RE_TWITTER.test(link)) {
118
- // the embed srcdoc still supports twitter.com domain only
119
- link = link.replace(/\bx.com\b/, "twitter.com");
120
- let ret;
121
- // assume embed code
122
- if (/<blockquote/.test(link)) {
123
- const srcDoc = createSrcDoc(link);
124
- ret = {
125
- type: "document",
126
- srcdoc: () => srcDoc,
127
- intrinsicSize: { w: 480, h: 480 },
128
- };
129
- // assume regular tweet url
130
- }
131
- else {
132
- ret = {
133
- type: "document",
134
- srcdoc: (theme) => createSrcDoc(`<blockquote class="twitter-tweet" data-dnt="true" data-theme="${theme}"><a href="${link}"></a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>`),
135
- intrinsicSize: { w: 480, h: 480 },
136
- };
137
- }
156
+ const postId = link.match(RE_TWITTER)[1];
157
+ // the embed srcdoc still supports twitter.com domain only.
158
+ // Note that we don't attempt to parse the username as it can consist of
159
+ // non-latin1 characters, and the username in the url can be set to anything
160
+ // without affecting the embed.
161
+ const safeURL = sanitizeHTMLAttribute(`https://twitter.com/x/status/${postId}`);
162
+ const ret = {
163
+ type: "document",
164
+ srcdoc: (theme) => createSrcDoc(`<blockquote class="twitter-tweet" data-dnt="true" data-theme="${theme}"><a href="${safeURL}"></a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>`),
165
+ intrinsicSize: { w: 480, h: 480 },
166
+ sandbox: { allowSameOrigin },
167
+ };
138
168
  embeddedLinkCache.set(originalLink, ret);
139
169
  return ret;
140
170
  }
141
171
  if (RE_GH_GIST.test(link)) {
142
- let ret;
143
- // assume embed code
144
- if (/<script>/.test(link)) {
145
- const srcDoc = createSrcDoc(link);
146
- ret = {
147
- type: "document",
148
- srcdoc: () => srcDoc,
149
- intrinsicSize: { w: 550, h: 720 },
150
- };
151
- // assume regular url
152
- }
153
- else {
154
- ret = {
155
- type: "document",
156
- srcdoc: () => createSrcDoc(`
157
- <script src="${link}.js"></script>
172
+ const [, user, gistId] = link.match(RE_GH_GIST);
173
+ const safeURL = sanitizeHTMLAttribute(`https://gist.github.com/${user}/${gistId}`);
174
+ const ret = {
175
+ type: "document",
176
+ srcdoc: () => createSrcDoc(`
177
+ <script src="${safeURL}.js"></script>
158
178
  <style type="text/css">
159
179
  * { margin: 0px; }
160
180
  table, .gist { height: 100%; }
161
181
  .gist .gist-file { height: calc(100vh - 2px); padding: 0px; display: grid; grid-template-rows: 1fr auto; }
162
182
  </style>
163
183
  `),
164
- intrinsicSize: { w: 550, h: 720 },
165
- };
166
- }
184
+ intrinsicSize: { w: 550, h: 720 },
185
+ sandbox: { allowSameOrigin },
186
+ };
167
187
  embeddedLinkCache.set(link, ret);
168
188
  return ret;
169
189
  }
170
- embeddedLinkCache.set(link, { link, intrinsicSize: aspectRatio, type });
171
- return { link, intrinsicSize: aspectRatio, type };
190
+ embeddedLinkCache.set(link, {
191
+ link,
192
+ intrinsicSize: aspectRatio,
193
+ type,
194
+ sandbox: { allowSameOrigin },
195
+ });
196
+ return {
197
+ link,
198
+ intrinsicSize: aspectRatio,
199
+ type,
200
+ sandbox: { allowSameOrigin },
201
+ };
172
202
  };
173
203
  export const createPlaceholderEmbeddableLabel = (element) => {
174
204
  let text;
@@ -219,29 +249,35 @@ export const actionSetEmbeddableAsActiveTool = register({
219
249
  type: "embeddable",
220
250
  }),
221
251
  },
222
- commitToHistory: false,
252
+ storeAction: StoreAction.NONE,
223
253
  };
224
254
  },
225
255
  });
226
- const validateHostname = (url,
256
+ const matchHostname = (url,
227
257
  /** using a Set assumes it already contains normalized bare domains */
228
258
  allowedHostnames) => {
229
259
  try {
230
260
  const { hostname } = new URL(url);
231
261
  const bareDomain = hostname.replace(/^www\./, "");
232
- const bareDomainWithFirstSubdomainWildcarded = bareDomain.replace(/^([^.]+)/, "*");
233
262
  if (allowedHostnames instanceof Set) {
234
- return (ALLOWED_DOMAINS.has(bareDomain) ||
235
- ALLOWED_DOMAINS.has(bareDomainWithFirstSubdomainWildcarded));
263
+ if (ALLOWED_DOMAINS.has(bareDomain)) {
264
+ return bareDomain;
265
+ }
266
+ const bareDomainWithFirstSubdomainWildcarded = bareDomain.replace(/^([^.]+)/, "*");
267
+ if (ALLOWED_DOMAINS.has(bareDomainWithFirstSubdomainWildcarded)) {
268
+ return bareDomainWithFirstSubdomainWildcarded;
269
+ }
270
+ return null;
236
271
  }
237
- if (bareDomain === allowedHostnames.replace(/^www\./, "")) {
238
- return true;
272
+ const bareAllowedHostname = allowedHostnames.replace(/^www\./, "");
273
+ if (bareDomain === bareAllowedHostname) {
274
+ return bareAllowedHostname;
239
275
  }
240
276
  }
241
277
  catch (error) {
242
278
  // ignore
243
279
  }
244
- return false;
280
+ return null;
245
281
  };
246
282
  export const maybeParseEmbedSrc = (str) => {
247
283
  const twitterMatch = str.match(RE_TWITTER_EMBED);
@@ -286,12 +322,12 @@ export const embeddableURLValidator = (url, validateEmbeddable) => {
286
322
  return true;
287
323
  }
288
324
  }
289
- else if (validateHostname(url, domain)) {
325
+ else if (matchHostname(url, domain)) {
290
326
  return true;
291
327
  }
292
328
  }
293
329
  return false;
294
330
  }
295
331
  }
296
- return validateHostname(url, ALLOWED_DOMAINS);
332
+ return !!matchHostname(url, ALLOWED_DOMAINS);
297
333
  };
@@ -1,5 +1,5 @@
1
- import { AppClassProperties, DataURL, BinaryFiles } from "../types";
2
- import { ExcalidrawElement, FileId, InitializedExcalidrawImageElement } from "./types";
1
+ import type { AppClassProperties, DataURL, BinaryFiles } from "../types";
2
+ import type { ExcalidrawElement, FileId, InitializedExcalidrawImageElement } from "./types";
3
3
  export declare const loadHTMLImageElement: (dataURL: DataURL) => Promise<HTMLImageElement>;
4
4
  /** NOTE: updates cache even if already populated with given image. Thus,
5
5
  * you should filter out the images upstream if you want to optimize this. */
@@ -1,8 +1,7 @@
1
- import { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted } from "./types";
1
+ import type { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted } from "./types";
2
2
  export { newElement, newTextElement, updateTextElement, refreshTextDimensions, newLinearElement, newImageElement, duplicateElement, } from "./newElement";
3
3
  export { getElementAbsoluteCoords, getElementBounds, getCommonBounds, getDiamondPoints, getArrowheadPoints, getClosestElementBounds, } from "./bounds";
4
4
  export { OMIT_SIDES_FOR_MULTIPLE_ELEMENTS, getTransformHandlesFromCoords, getTransformHandles, } from "./transformHandles";
5
- export { hitTest, isHittingElementBoundingBoxWithoutHittingElement, } from "./collision";
6
5
  export { resizeTest, getCursorForResizingElement, getElementWithTransformHandleType, getTransformHandleTypeFromCoords, } from "./resizeTest";
7
6
  export { transformElements, getResizeOffsetXY, getResizeArrowDirection, } from "./resizeElements";
8
7
  export { dragSelectedElements, getDragOffsetXY, dragNewElement, } from "./dragElements";
@@ -3,7 +3,6 @@ import { isLinearElementType } from "./typeChecks";
3
3
  export { newElement, newTextElement, updateTextElement, refreshTextDimensions, newLinearElement, newImageElement, duplicateElement, } from "./newElement";
4
4
  export { getElementAbsoluteCoords, getElementBounds, getCommonBounds, getDiamondPoints, getArrowheadPoints, getClosestElementBounds, } from "./bounds";
5
5
  export { OMIT_SIDES_FOR_MULTIPLE_ELEMENTS, getTransformHandlesFromCoords, getTransformHandles, } from "./transformHandles";
6
- export { hitTest, isHittingElementBoundingBoxWithoutHittingElement, } from "./collision";
7
6
  export { resizeTest, getCursorForResizingElement, getElementWithTransformHandleType, getTransformHandleTypeFromCoords, } from "./resizeTest";
8
7
  export { transformElements, getResizeOffsetXY, getResizeArrowDirection, } from "./resizeElements";
9
8
  export { dragSelectedElements, getDragOffsetXY, dragNewElement, } from "./dragElements";
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
- import { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, ExcalidrawBindableElement, ExcalidrawTextElementWithContainer, ElementsMap, NonDeletedExcalidrawElement, NonDeletedSceneElementsMap } from "./types";
3
- import { Bounds } from "./bounds";
4
- import { Point, AppState, PointerCoords, InteractiveCanvasAppState } from "../types";
5
- import History from "../history";
2
+ import type { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, ExcalidrawBindableElement, ExcalidrawTextElementWithContainer, ElementsMap, NonDeletedSceneElementsMap } from "./types";
3
+ import type { Bounds } from "./bounds";
4
+ import type { Point, AppState, PointerCoords, InteractiveCanvasAppState, AppClassProperties } from "../types";
5
+ import type { Store } from "../store";
6
6
  declare const editorMidPointsCache: {
7
7
  version: number | null;
8
8
  points: (Point | null)[];
@@ -52,7 +52,7 @@ export declare class LinearElementEditor {
52
52
  x: number;
53
53
  y: number;
54
54
  }[]) => void, linearElementEditor: LinearElementEditor, elementsMap: NonDeletedSceneElementsMap): boolean;
55
- static handlePointerUp(event: PointerEvent, editingLinearElement: LinearElementEditor, appState: AppState, elements: readonly NonDeletedExcalidrawElement[], elementsMap: NonDeletedSceneElementsMap): LinearElementEditor;
55
+ static handlePointerUp(event: PointerEvent, editingLinearElement: LinearElementEditor, appState: AppState, app: AppClassProperties): LinearElementEditor;
56
56
  static getEditorMidPoints: (element: NonDeleted<ExcalidrawLinearElement>, elementsMap: ElementsMap, appState: InteractiveCanvasAppState) => (typeof editorMidPointsCache)["points"];
57
57
  static updateEditorMidPointsCache: (element: NonDeleted<ExcalidrawLinearElement>, elementsMap: ElementsMap, appState: InteractiveCanvasAppState) => void;
58
58
  static getSegmentMidpointHitCoords: (linearElementEditor: LinearElementEditor, scenePointer: {
@@ -62,10 +62,10 @@ export declare class LinearElementEditor {
62
62
  static isSegmentTooShort(element: NonDeleted<ExcalidrawLinearElement>, startPoint: Point, endPoint: Point, zoom: AppState["zoom"]): boolean;
63
63
  static getSegmentMidPoint(element: NonDeleted<ExcalidrawLinearElement>, startPoint: Point, endPoint: Point, endPointIndex: number, elementsMap: ElementsMap): readonly [number, number];
64
64
  static getSegmentMidPointIndex(linearElementEditor: LinearElementEditor, appState: AppState, midPoint: Point, elementsMap: ElementsMap): number;
65
- static handlePointerDown(event: React.PointerEvent<HTMLElement>, appState: AppState, history: History, scenePointer: {
65
+ static handlePointerDown(event: React.PointerEvent<HTMLElement>, appState: AppState, store: Store, scenePointer: {
66
66
  x: number;
67
67
  y: number;
68
- }, linearElementEditor: LinearElementEditor, elements: readonly NonDeletedExcalidrawElement[], elementsMap: NonDeletedSceneElementsMap): {
68
+ }, linearElementEditor: LinearElementEditor, app: AppClassProperties): {
69
69
  didAddPoint: boolean;
70
70
  hitElement: NonDeleted<ExcalidrawElement> | null;
71
71
  linearElementEditor: LinearElementEditor | null;
@@ -133,13 +133,13 @@ export declare class LinearElementEditor {
133
133
  isLoading: boolean;
134
134
  errorMessage: import("react").ReactNode;
135
135
  activeEmbeddable: {
136
- element: NonDeletedExcalidrawElement;
136
+ element: import("./types").NonDeletedExcalidrawElement;
137
137
  state: "hover" | "active";
138
138
  } | null;
139
- draggingElement: NonDeletedExcalidrawElement | null;
140
- resizingElement: NonDeletedExcalidrawElement | null;
139
+ draggingElement: import("./types").NonDeletedExcalidrawElement | null;
140
+ resizingElement: import("./types").NonDeletedExcalidrawElement | null;
141
141
  multiElement: NonDeleted<ExcalidrawLinearElement> | null;
142
- selectionElement: NonDeletedExcalidrawElement | null;
142
+ selectionElement: import("./types").NonDeletedExcalidrawElement | null;
143
143
  isBindingEnabled: boolean;
144
144
  startBoundElement: NonDeleted<ExcalidrawBindableElement> | null;
145
145
  suggestedBindings: import("./binding").SuggestedBinding[];
@@ -152,7 +152,7 @@ export declare class LinearElementEditor {
152
152
  };
153
153
  editingFrame: string | null;
154
154
  elementsToHighlight: NonDeleted<ExcalidrawElement>[] | null;
155
- editingElement: NonDeletedExcalidrawElement | null;
155
+ editingElement: import("./types").NonDeletedExcalidrawElement | null;
156
156
  activeTool: {
157
157
  lastActiveTool: import("../types").ActiveTool | null;
158
158
  locked: boolean;
@@ -163,7 +163,8 @@ export class LinearElementEditor {
163
163
  }
164
164
  return false;
165
165
  }
166
- static handlePointerUp(event, editingLinearElement, appState, elements, elementsMap) {
166
+ static handlePointerUp(event, editingLinearElement, appState, app) {
167
+ const elementsMap = app.scene.getNonDeletedElementsMap();
167
168
  const { elementId, selectedPointsIndices, isDragging, pointerDownState } = editingLinearElement;
168
169
  const element = LinearElementEditor.getElement(elementId, elementsMap);
169
170
  if (!element) {
@@ -185,7 +186,7 @@ export class LinearElementEditor {
185
186
  ]);
186
187
  }
187
188
  const bindingElement = isBindingEnabled(appState)
188
- ? getHoveredElementForBinding(tupleToCoors(LinearElementEditor.getPointAtIndexGlobalCoordinates(element, selectedPoint, elementsMap)), elements, elementsMap)
189
+ ? getHoveredElementForBinding(tupleToCoors(LinearElementEditor.getPointAtIndexGlobalCoordinates(element, selectedPoint, elementsMap)), app)
189
190
  : null;
190
191
  bindings[selectedPoint === 0 ? "startBindingElement" : "endBindingElement"] = bindingElement;
191
192
  }
@@ -313,7 +314,8 @@ export class LinearElementEditor {
313
314
  }
314
315
  return -1;
315
316
  }
316
- static handlePointerDown(event, appState, history, scenePointer, linearElementEditor, elements, elementsMap) {
317
+ static handlePointerDown(event, appState, store, scenePointer, linearElementEditor, app) {
318
+ const elementsMap = app.scene.getNonDeletedElementsMap();
317
319
  const ret = {
318
320
  didAddPoint: false,
319
321
  hitElement: null,
@@ -342,7 +344,7 @@ export class LinearElementEditor {
342
344
  });
343
345
  ret.didAddPoint = true;
344
346
  }
345
- history.resumeRecording();
347
+ store.shouldCaptureIncrement();
346
348
  ret.linearElementEditor = {
347
349
  ...linearElementEditor,
348
350
  pointerDownState: {
@@ -357,7 +359,7 @@ export class LinearElementEditor {
357
359
  },
358
360
  selectedPointsIndices: [element.points.length - 1],
359
361
  lastUncommittedPoint: null,
360
- endBindingElement: getHoveredElementForBinding(scenePointer, elements, elementsMap),
362
+ endBindingElement: getHoveredElementForBinding(scenePointer, app),
361
363
  };
362
364
  ret.didAddPoint = true;
363
365
  return ret;
@@ -1,6 +1,6 @@
1
- import { ExcalidrawElement } from "./types";
2
- import { Mutable } from "../utility-types";
3
- type ElementUpdate<TElement extends ExcalidrawElement> = Omit<Partial<TElement>, "id" | "version" | "versionNonce">;
1
+ import type { ExcalidrawElement } from "./types";
2
+ import type { Mutable } from "../utility-types";
3
+ export type ElementUpdate<TElement extends ExcalidrawElement> = Omit<Partial<TElement>, "id" | "version" | "versionNonce" | "updated">;
4
4
  export declare const mutateElement: <TElement extends Mutable<ExcalidrawElement>>(element: TElement, updates: ElementUpdate<TElement>, informMutation?: boolean) => TElement;
5
5
  export declare const newElementWith: <TElement extends ExcalidrawElement>(element: TElement, updates: ElementUpdate<TElement>) => TElement;
6
6
  /**
@@ -9,4 +9,3 @@ export declare const newElementWith: <TElement extends ExcalidrawElement>(elemen
9
9
  * NOTE: does not trigger re-render.
10
10
  */
11
11
  export declare const bumpVersion: <T extends Mutable<ExcalidrawElement>>(element: T, version?: ExcalidrawElement["version"]) => T;
12
- export {};
@@ -1,7 +1,7 @@
1
- import { ExcalidrawElement, ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, GroupId, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap } from "./types";
2
- import { AppState } from "../types";
3
- import { MarkOptional, Mutable } from "../utility-types";
4
- export type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "frameId" | "boundElements" | "seed" | "version" | "versionNonce" | "link" | "strokeStyle" | "fillStyle" | "strokeColor" | "backgroundColor" | "roughness" | "strokeWidth" | "roundness" | "locked" | "opacity" | "customData">;
1
+ import type { ExcalidrawElement, ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, GroupId, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap } from "./types";
2
+ import type { AppState } from "../types";
3
+ import type { MarkOptional, Mutable } from "../utility-types";
4
+ export type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "frameId" | "index" | "boundElements" | "seed" | "version" | "versionNonce" | "link" | "strokeStyle" | "fillStyle" | "strokeColor" | "backgroundColor" | "roughness" | "strokeWidth" | "roundness" | "locked" | "opacity" | "customData">;
5
5
  export declare const newElement: (opts: {
6
6
  type: ExcalidrawGenericElement["type"];
7
7
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawGenericElement>;
@@ -7,7 +7,7 @@ import { adjustXYWithRotation } from "../math";
7
7
  import { getResizedElementAbsoluteCoords } from "./bounds";
8
8
  import { measureText, normalizeText, wrapText, getBoundTextMaxWidth, getDefaultLineHeight, } from "./textElement";
9
9
  import { DEFAULT_ELEMENT_PROPS, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_TEXT_ALIGN, DEFAULT_VERTICAL_ALIGN, VERTICAL_ALIGN, } from "../constants";
10
- const _newElementBase = (type, { x, y, strokeColor = DEFAULT_ELEMENT_PROPS.strokeColor, backgroundColor = DEFAULT_ELEMENT_PROPS.backgroundColor, fillStyle = DEFAULT_ELEMENT_PROPS.fillStyle, strokeWidth = DEFAULT_ELEMENT_PROPS.strokeWidth, strokeStyle = DEFAULT_ELEMENT_PROPS.strokeStyle, roughness = DEFAULT_ELEMENT_PROPS.roughness, opacity = DEFAULT_ELEMENT_PROPS.opacity, width = 0, height = 0, angle = 0, groupIds = [], frameId = null, roundness = null, boundElements = null, link = null, locked = DEFAULT_ELEMENT_PROPS.locked, ...rest }) => {
10
+ const _newElementBase = (type, { x, y, strokeColor = DEFAULT_ELEMENT_PROPS.strokeColor, backgroundColor = DEFAULT_ELEMENT_PROPS.backgroundColor, fillStyle = DEFAULT_ELEMENT_PROPS.fillStyle, strokeWidth = DEFAULT_ELEMENT_PROPS.strokeWidth, strokeStyle = DEFAULT_ELEMENT_PROPS.strokeStyle, roughness = DEFAULT_ELEMENT_PROPS.roughness, opacity = DEFAULT_ELEMENT_PROPS.opacity, width = 0, height = 0, angle = 0, groupIds = [], frameId = null, index = null, roundness = null, boundElements = null, link = null, locked = DEFAULT_ELEMENT_PROPS.locked, ...rest }) => {
11
11
  // assign type to guard against excess properties
12
12
  const element = {
13
13
  id: rest.id || randomId(),
@@ -26,6 +26,7 @@ const _newElementBase = (type, { x, y, strokeColor = DEFAULT_ELEMENT_PROPS.strok
26
26
  opacity,
27
27
  groupIds,
28
28
  frameId,
29
+ index,
29
30
  roundness,
30
31
  seed: rest.seed ?? randomInteger(),
31
32
  version: rest.version || 1,
@@ -1,9 +1,9 @@
1
- import { ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, ElementsMap } from "./types";
2
- import { MaybeTransformHandleType, TransformHandleDirection } from "./transformHandles";
3
- import { PointerDownState } from "../types";
1
+ import type { ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, ElementsMap } from "./types";
2
+ import type { MaybeTransformHandleType, TransformHandleDirection } from "./transformHandles";
3
+ import type { PointerDownState } from "../types";
4
4
  export declare const normalizeAngle: (angle: number) => number;
5
5
  export declare const transformElements: (originalElements: PointerDownState["originalElements"], transformHandleType: MaybeTransformHandleType, selectedElements: readonly NonDeletedExcalidrawElement[], elementsMap: ElementsMap, shouldRotateWithDiscreteAngle: boolean, shouldResizeFromCenter: boolean, shouldMaintainAspectRatio: boolean, pointerX: number, pointerY: number, centerX: number, centerY: number) => boolean;
6
6
  export declare const resizeSingleElement: (originalElements: PointerDownState["originalElements"], shouldMaintainAspectRatio: boolean, element: NonDeletedExcalidrawElement, elementsMap: ElementsMap, transformHandleDirection: TransformHandleDirection, shouldResizeFromCenter: boolean, pointerX: number, pointerY: number) => void;
7
- export declare const resizeMultipleElements: (originalElements: PointerDownState["originalElements"], selectedElements: readonly NonDeletedExcalidrawElement[], elementsMap: ElementsMap, transformHandleType: "nw" | "ne" | "sw" | "se", shouldResizeFromCenter: boolean, pointerX: number, pointerY: number) => void;
7
+ export declare const resizeMultipleElements: (originalElements: PointerDownState["originalElements"], selectedElements: readonly NonDeletedExcalidrawElement[], elementsMap: ElementsMap, transformHandleType: TransformHandleDirection, shouldResizeFromCenter: boolean, shouldMaintainAspectRatio: boolean, pointerX: number, pointerY: number) => void;
8
8
  export declare const getResizeOffsetXY: (transformHandleType: MaybeTransformHandleType, selectedElements: NonDeletedExcalidrawElement[], elementsMap: ElementsMap, x: number, y: number) => [number, number];
9
9
  export declare const getResizeArrowDirection: (transformHandleType: MaybeTransformHandleType, element: NonDeleted<ExcalidrawLinearElement>) => "origin" | "end";