@dwelle/excalidraw 0.5.0-ca754ef → 0.5.0-cbb5d6b

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 (324) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-QSJ4HNO7.js → blockDiagram-91b80b7a-IRJTK6Z5.js} +6 -6
  3. package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-4MYCZKG5.js → c4Diagram-b2a90758-CCPPXFPY.js} +4 -4
  4. package/dist/browser/dev/excalidraw-assets-dev/{chunk-BECDVD6R.js → chunk-32FQKC5U.js} +7 -7
  5. package/dist/browser/dev/excalidraw-assets-dev/{chunk-POWCA5QF.js → chunk-4RQWU7MH.js} +3 -3
  6. package/dist/browser/dev/excalidraw-assets-dev/{chunk-Q7SIL7GF.js → chunk-4XTDAI34.js} +3 -3
  7. package/dist/browser/dev/excalidraw-assets-dev/{chunk-U6PMUKRO.js → chunk-645MDRFH.js} +6570 -4548
  8. package/dist/browser/dev/excalidraw-assets-dev/chunk-645MDRFH.js.map +7 -0
  9. package/dist/browser/dev/excalidraw-assets-dev/{chunk-J5HRUYQR.js → chunk-AKQDHN2W.js} +2 -2
  10. package/dist/browser/dev/excalidraw-assets-dev/chunk-AKQDHN2W.js.map +7 -0
  11. package/dist/browser/dev/excalidraw-assets-dev/{chunk-FR3IAB6U.js → chunk-CH3VL6LE.js} +3 -3
  12. package/dist/browser/dev/excalidraw-assets-dev/{chunk-EPAK72CK.js → chunk-DAUKRODV.js} +3 -3
  13. package/dist/browser/dev/excalidraw-assets-dev/{chunk-U4Z6B5JW.js → chunk-GHBR42PD.js} +4 -4
  14. package/dist/browser/dev/excalidraw-assets-dev/{chunk-FRL7WYV2.js → chunk-I6APBPLG.js} +3 -3
  15. package/dist/browser/dev/excalidraw-assets-dev/{chunk-J4UG2B64.js → chunk-JT5FK676.js} +2 -2
  16. package/dist/browser/dev/excalidraw-assets-dev/{chunk-QZ4FGBZF.js → chunk-LHXEX6AX.js} +28 -28
  17. package/dist/browser/dev/excalidraw-assets-dev/chunk-LHXEX6AX.js.map +7 -0
  18. package/dist/browser/dev/excalidraw-assets-dev/{chunk-OH2FVCZF.js → chunk-MTN3FT3I.js} +4 -4
  19. package/dist/browser/dev/excalidraw-assets-dev/{chunk-IE752YUC.js → chunk-PTGAFHDE.js} +5 -5
  20. package/dist/browser/dev/excalidraw-assets-dev/{chunk-4LATYPUZ.js → chunk-TT3CLKL2.js} +3 -3
  21. package/dist/browser/dev/excalidraw-assets-dev/{chunk-EAK3FBDE.js → chunk-VTLDDAKT.js} +3 -3
  22. package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-43KRVI2R.js → classDiagram-30eddba6-EYEUBSFK.js} +6 -6
  23. package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-NDH5IIX2.js → classDiagram-v2-f2df5561-2Q4N2YXH.js} +9 -9
  24. package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-WIGO3PHP.js → directory-open-01563666-JI732I6L.js} +2 -2
  25. package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-CXEHOJKC.js → directory-open-4ed118d0-FCSLGWX4.js} +2 -2
  26. package/dist/browser/dev/excalidraw-assets-dev/dist-Y7YU7LF5.js +10 -0
  27. package/dist/browser/dev/excalidraw-assets-dev/{en-UW5C5KGW.js → en-PSBMWL4S.js} +2 -2
  28. package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-LXI3RBHB.js → erDiagram-47591fe2-YW6WXPKB.js} +5 -5
  29. package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-ZLYQ5POM.js → file-open-002ab408-VGLBX2SD.js} +2 -2
  30. package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-YEWKTXUK.js → file-open-7c801643-HOSRJESM.js} +2 -2
  31. package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-ZRB6VRMQ.js → file-save-3189631c-7UVDDLND.js} +2 -2
  32. package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-6AE2F2MK.js → file-save-745eba88-R4WI6C5N.js} +2 -2
  33. package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-MHX5LMLF.js → flowDiagram-5540d9b9-HMMVJLFR.js} +10 -10
  34. package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-HXZO64MP.js → flowDiagram-v2-3b53844e-MAKR536R.js} +10 -10
  35. package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-QJSM73VB.js → flowchart-elk-definition-5fe447d6-K5ZCVETB.js} +6 -6
  36. package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-DIBF4MAD.js → ganttDiagram-9a3bba1f-2ZVU3FTZ.js} +3 -3
  37. package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJVGQM3V.js → gitGraphDiagram-96e6b4ee-FZ6FANLP.js} +3 -3
  38. package/dist/browser/dev/excalidraw-assets-dev/{image-ZNQQXS62.css → image-FDQLNM24.css} +39 -16
  39. package/dist/browser/dev/excalidraw-assets-dev/image-FDQLNM24.css.map +7 -0
  40. package/dist/browser/dev/excalidraw-assets-dev/{image-GU4Q2RBL.js → image-SS5TMYT4.js} +6 -6
  41. package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-FERKXLKH.js → image-blob-reduce.esm-YXLX3RLK.js} +2 -2
  42. package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-M4VT2O6X.js → infoDiagram-bcd20f53-COYAHIVY.js} +3 -3
  43. package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-RBUJMJGB.js → journeyDiagram-4fe6b3dc-RFNSHLY7.js} +4 -4
  44. package/dist/browser/dev/excalidraw-assets-dev/{katex-U3KW6RMN.js → katex-E3UYSNFK.js} +2 -2
  45. package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-G75STLDF.js → mindmap-definition-f354de21-PLB66GYC.js} +4 -4
  46. package/dist/browser/dev/excalidraw-assets-dev/{pica-QCDDJ4FA.js → pica-FL6WHKHD.js} +2 -2
  47. package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-EYD6GWN6.js → pieDiagram-79897490-UZ3VDZDT.js} +3 -3
  48. package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-VCULRDXW.js → quadrantDiagram-62f64e94-T5FLQQ62.js} +3 -3
  49. package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-TASTTHUI.js → requirementDiagram-05bf5f74-VEHQOUFO.js} +5 -5
  50. package/dist/browser/dev/excalidraw-assets-dev/{roundRect-5GJOYZ3N.js → roundRect-K6N73LBJ.js} +2 -2
  51. package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-2YQACLIX.js → sankeyDiagram-97764748-KLJ7HONA.js} +3 -3
  52. package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-AQAXFV3S.js → sequenceDiagram-acc0e65c-L4ZWSX22.js} +4 -4
  53. package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-EI62FLQG.js → stateDiagram-0ff1cf1a-JZUDOEAH.js} +6 -6
  54. package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-MTSH7UNC.js → stateDiagram-v2-9a9d610d-WHNU7SI7.js} +9 -9
  55. package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-VQ2VZEWC.js → timeline-definition-fea2a41d-SLLH6X7S.js} +3 -3
  56. package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-VTFIYULE.js → xychartDiagram-ab372869-A7EDAO5Q.js} +4 -4
  57. package/dist/browser/dev/index.css +38 -15
  58. package/dist/browser/dev/index.css.map +2 -2
  59. package/dist/browser/dev/index.js +9 -5
  60. package/dist/browser/prod/excalidraw-assets/{blockDiagram-91b80b7a-DMU5Q74G.js → blockDiagram-91b80b7a-PRCOUPIS.js} +1 -1
  61. package/dist/browser/prod/excalidraw-assets/{c4Diagram-b2a90758-3XHOZTJB.js → c4Diagram-b2a90758-3DCO4J7M.js} +1 -1
  62. package/dist/browser/prod/excalidraw-assets/{chunk-4YLH7JLJ.js → chunk-ANOBCW22.js} +1 -1
  63. package/dist/browser/prod/excalidraw-assets/{chunk-Y2INGLO2.js → chunk-BJTCWAK5.js} +1 -1
  64. package/dist/browser/prod/excalidraw-assets/{chunk-LAEP4ITC.js → chunk-CFRW7BG7.js} +1 -1
  65. package/dist/browser/prod/excalidraw-assets/{chunk-3V3WOPNJ.js → chunk-GTPHSP2D.js} +1 -1
  66. package/dist/browser/prod/excalidraw-assets/{chunk-QGPVJN7J.js → chunk-H2YFA6TU.js} +1 -1
  67. package/dist/browser/prod/excalidraw-assets/{chunk-TMKJR56I.js → chunk-KCFOWMVC.js} +1 -1
  68. package/dist/browser/prod/excalidraw-assets/{chunk-C565KYGG.js → chunk-KVQMCXCA.js} +1 -1
  69. package/dist/browser/prod/excalidraw-assets/{chunk-CDMNCDGS.js → chunk-LGOYMPVW.js} +21 -21
  70. package/dist/browser/prod/excalidraw-assets/{chunk-RFOEVHBG.js → chunk-O4ONYAI6.js} +1 -1
  71. package/dist/browser/prod/excalidraw-assets/{chunk-EXNSCTNY.js → chunk-OKMPIZ5M.js} +1 -1
  72. package/dist/browser/prod/excalidraw-assets/{chunk-QLNFR4AJ.js → chunk-Q6QP4TRB.js} +1 -1
  73. package/dist/browser/prod/excalidraw-assets/{chunk-HIWCQBFA.js → chunk-QR6QYEOB.js} +1 -1
  74. package/dist/browser/prod/excalidraw-assets/chunk-QYNK5IRK.js +335 -0
  75. package/dist/browser/prod/excalidraw-assets/{chunk-PDOOBCPS.js → chunk-SBL22DUJ.js} +1 -1
  76. package/dist/browser/prod/excalidraw-assets/{chunk-2XMXKWJG.js → chunk-V5EOW4RQ.js} +1 -1
  77. package/dist/browser/prod/excalidraw-assets/{chunk-526DVAV4.js → chunk-W7MPDLSH.js} +1 -1
  78. package/dist/browser/prod/excalidraw-assets/{classDiagram-30eddba6-JWGA2TGA.js → classDiagram-30eddba6-WNQ24D2Y.js} +1 -1
  79. package/dist/browser/prod/excalidraw-assets/{classDiagram-v2-f2df5561-LUELACE2.js → classDiagram-v2-f2df5561-DWS457AE.js} +1 -1
  80. package/dist/browser/prod/excalidraw-assets/{directory-open-01563666-LVSEORCY.js → directory-open-01563666-NXKZ4VWO.js} +1 -1
  81. package/dist/browser/prod/excalidraw-assets/{directory-open-4ed118d0-RFY2TAQG.js → directory-open-4ed118d0-2CQFSTKO.js} +1 -1
  82. package/dist/browser/prod/excalidraw-assets/dist-M4EC2RVT.js +1 -0
  83. package/dist/browser/prod/excalidraw-assets/{en-CPU3UVKT.js → en-MPFDZHEH.js} +1 -1
  84. package/dist/browser/prod/excalidraw-assets/{en-R7FEFJGC-UHMLUFK3.js → en-Q552WR7L-QAV42NF3.js} +1 -1
  85. package/dist/browser/prod/excalidraw-assets/{erDiagram-47591fe2-GYXIXW26.js → erDiagram-47591fe2-GEZEODOI.js} +1 -1
  86. package/dist/browser/prod/excalidraw-assets/{file-open-002ab408-INFZI63D.js → file-open-002ab408-UXKZOBOC.js} +1 -1
  87. package/dist/browser/prod/excalidraw-assets/{file-open-7c801643-GKUCIQCX.js → file-open-7c801643-SERMWI2Z.js} +1 -1
  88. package/dist/browser/prod/excalidraw-assets/{file-save-3189631c-ANETLLLV.js → file-save-3189631c-7FEUIB5M.js} +1 -1
  89. package/dist/browser/prod/excalidraw-assets/{file-save-745eba88-Y5LQRZDO.js → file-save-745eba88-QB3HQPRU.js} +1 -1
  90. package/dist/browser/prod/excalidraw-assets/{flowDiagram-5540d9b9-3CJJJFXX.js → flowDiagram-5540d9b9-EWDI4FWB.js} +1 -1
  91. package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-3b53844e-CSN53VTR.js +1 -0
  92. package/dist/browser/prod/excalidraw-assets/{flowchart-elk-definition-5fe447d6-PDXCITK5.js → flowchart-elk-definition-5fe447d6-EPCYY7UZ.js} +1 -1
  93. package/dist/browser/prod/excalidraw-assets/{ganttDiagram-9a3bba1f-6H5RBJF2.js → ganttDiagram-9a3bba1f-5SFDQQ5Y.js} +1 -1
  94. package/dist/browser/prod/excalidraw-assets/{gitGraphDiagram-96e6b4ee-23XJXNXL.js → gitGraphDiagram-96e6b4ee-IK47LK43.js} +1 -1
  95. package/dist/browser/prod/excalidraw-assets/image-LI7WETXC.js +1 -0
  96. package/dist/browser/prod/excalidraw-assets/{image-blob-reduce.esm-47YEP2D2.js → image-blob-reduce.esm-44FOF6QQ.js} +1 -1
  97. package/dist/browser/prod/excalidraw-assets/{infoDiagram-bcd20f53-T57DUB27.js → infoDiagram-bcd20f53-2DLI3AEB.js} +1 -1
  98. package/dist/browser/prod/excalidraw-assets/{journeyDiagram-4fe6b3dc-V65HNLRJ.js → journeyDiagram-4fe6b3dc-MADFQ4OF.js} +1 -1
  99. package/dist/browser/prod/excalidraw-assets/{katex-GT3FOCX5.js → katex-24OYZMXR.js} +1 -1
  100. package/dist/browser/prod/excalidraw-assets/{mindmap-definition-f354de21-M6IDU4JG.js → mindmap-definition-f354de21-NFTFT2XB.js} +1 -1
  101. package/dist/browser/prod/excalidraw-assets/{pica-ORBFBYLP.js → pica-5IJTZHHE.js} +1 -1
  102. package/dist/browser/prod/excalidraw-assets/{pieDiagram-79897490-JMLERKYB.js → pieDiagram-79897490-AWYHG5OT.js} +1 -1
  103. package/dist/browser/prod/excalidraw-assets/{quadrantDiagram-62f64e94-M2UOBSKJ.js → quadrantDiagram-62f64e94-7R3WNOLE.js} +1 -1
  104. package/dist/browser/prod/excalidraw-assets/{requirementDiagram-05bf5f74-JGVLF3LK.js → requirementDiagram-05bf5f74-WVV4CACM.js} +1 -1
  105. package/dist/browser/prod/excalidraw-assets/{roundRect-B4P3NWN6.js → roundRect-Q7M7LXZP.js} +1 -1
  106. package/dist/browser/prod/excalidraw-assets/{sankeyDiagram-97764748-VRTAW4W2.js → sankeyDiagram-97764748-PGSJS2WP.js} +1 -1
  107. package/dist/browser/prod/excalidraw-assets/{sequenceDiagram-acc0e65c-M4OKLHBU.js → sequenceDiagram-acc0e65c-MVSXHT56.js} +1 -1
  108. package/dist/browser/prod/excalidraw-assets/{stateDiagram-0ff1cf1a-3CPFAEL2.js → stateDiagram-0ff1cf1a-PQJ344ML.js} +1 -1
  109. package/dist/browser/prod/excalidraw-assets/{stateDiagram-v2-9a9d610d-VLI5D4N6.js → stateDiagram-v2-9a9d610d-IKUMEGLC.js} +1 -1
  110. package/dist/browser/prod/excalidraw-assets/{timeline-definition-fea2a41d-MIOJHT22.js → timeline-definition-fea2a41d-4WBSWL7X.js} +1 -1
  111. package/dist/browser/prod/excalidraw-assets/{xychartDiagram-ab372869-SXWWQSYE.js → xychartDiagram-ab372869-RYRNQ54R.js} +1 -1
  112. package/dist/browser/prod/index.css +1 -1
  113. package/dist/browser/prod/index.js +15 -15
  114. package/dist/dev/{en-R7FEFJGC.json → en-Q552WR7L.json} +1 -1
  115. package/dist/dev/index.css +38 -15
  116. package/dist/dev/index.css.map +2 -2
  117. package/dist/dev/index.js +4553 -2591
  118. package/dist/dev/index.js.map +4 -4
  119. package/dist/excalidraw/actions/actionAddToLibrary.d.ts +4 -4
  120. package/dist/excalidraw/actions/actionAddToLibrary.js +4 -3
  121. package/dist/excalidraw/actions/actionAlign.d.ts +20 -20
  122. package/dist/excalidraw/actions/actionAlign.js +7 -6
  123. package/dist/excalidraw/actions/actionBoundText.d.ts +7 -7
  124. package/dist/excalidraw/actions/actionBoundText.js +8 -4
  125. package/dist/excalidraw/actions/actionCanvas.d.ts +49 -49
  126. package/dist/excalidraw/actions/actionCanvas.js +16 -13
  127. package/dist/excalidraw/actions/actionClipboard.d.ts +24 -24
  128. package/dist/excalidraw/actions/actionClipboard.js +14 -13
  129. package/dist/excalidraw/actions/actionDeleteSelected.d.ts +8 -8
  130. package/dist/excalidraw/actions/actionDeleteSelected.js +6 -3
  131. package/dist/excalidraw/actions/actionDistribute.d.ts +8 -8
  132. package/dist/excalidraw/actions/actionDistribute.js +3 -2
  133. package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +5 -6
  134. package/dist/excalidraw/actions/actionDuplicateSelection.js +7 -3
  135. package/dist/excalidraw/actions/actionElementLock.d.ts +8 -8
  136. package/dist/excalidraw/actions/actionElementLock.js +3 -2
  137. package/dist/excalidraw/actions/actionExport.d.ts +36 -36
  138. package/dist/excalidraw/actions/actionExport.js +15 -11
  139. package/dist/excalidraw/actions/actionFinalize.d.ts +8 -8
  140. package/dist/excalidraw/actions/actionFinalize.js +9 -5
  141. package/dist/excalidraw/actions/actionFlip.d.ts +9 -9
  142. package/dist/excalidraw/actions/actionFlip.js +12 -12
  143. package/dist/excalidraw/actions/actionFrame.d.ts +14 -169
  144. package/dist/excalidraw/actions/actionFrame.js +7 -6
  145. package/dist/excalidraw/actions/actionGroup.d.ts +11 -321
  146. package/dist/excalidraw/actions/actionGroup.js +9 -11
  147. package/dist/excalidraw/actions/actionHistory.d.ts +3 -2
  148. package/dist/excalidraw/actions/actionHistory.js +27 -28
  149. package/dist/excalidraw/actions/actionLinearEditor.d.ts +2 -2
  150. package/dist/excalidraw/actions/actionLinearEditor.js +2 -1
  151. package/dist/excalidraw/actions/actionLink.d.ts +5 -5
  152. package/dist/excalidraw/actions/actionLink.js +2 -1
  153. package/dist/excalidraw/actions/actionMenu.d.ts +8 -8
  154. package/dist/excalidraw/actions/actionMenu.js +4 -3
  155. package/dist/excalidraw/actions/actionNavigate.d.ts +3 -3
  156. package/dist/excalidraw/actions/actionNavigate.js +3 -2
  157. package/dist/excalidraw/actions/actionProperties.d.ts +32 -32
  158. package/dist/excalidraw/actions/actionProperties.js +18 -13
  159. package/dist/excalidraw/actions/actionSelectAll.d.ts +4 -4
  160. package/dist/excalidraw/actions/actionSelectAll.js +2 -1
  161. package/dist/excalidraw/actions/actionStyles.d.ts +9 -12
  162. package/dist/excalidraw/actions/actionStyles.js +4 -3
  163. package/dist/excalidraw/actions/actionToggleGridMode.d.ts +6 -4
  164. package/dist/excalidraw/actions/actionToggleGridMode.js +6 -2
  165. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +4 -4
  166. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.js +2 -1
  167. package/dist/excalidraw/actions/actionToggleStats.d.ts +4 -4
  168. package/dist/excalidraw/actions/actionToggleStats.js +2 -1
  169. package/dist/excalidraw/actions/actionToggleViewMode.d.ts +4 -4
  170. package/dist/excalidraw/actions/actionToggleViewMode.js +2 -1
  171. package/dist/excalidraw/actions/actionToggleZenMode.d.ts +4 -4
  172. package/dist/excalidraw/actions/actionToggleZenMode.js +2 -1
  173. package/dist/excalidraw/actions/actionZindex.d.ts +19 -19
  174. package/dist/excalidraw/actions/actionZindex.js +5 -4
  175. package/dist/excalidraw/actions/manager.d.ts +3 -3
  176. package/dist/excalidraw/actions/types.d.ts +4 -4
  177. package/dist/excalidraw/appState.d.ts +5 -5
  178. package/dist/excalidraw/change.d.ts +191 -0
  179. package/dist/excalidraw/change.js +894 -0
  180. package/dist/excalidraw/components/App.d.ts +22 -8
  181. package/dist/excalidraw/components/App.js +353 -147
  182. package/dist/excalidraw/components/CommandPalette/CommandPalette.js +1 -0
  183. package/dist/excalidraw/components/HelpDialog.js +1 -1
  184. package/dist/excalidraw/components/Sidebar/Sidebar.d.ts +2 -2
  185. package/dist/excalidraw/components/Stack.d.ts +2 -2
  186. package/dist/excalidraw/components/ToolButton.d.ts +1 -0
  187. package/dist/excalidraw/components/ToolButton.js +1 -1
  188. package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -1
  189. package/dist/excalidraw/components/canvases/InteractiveCanvas.js +1 -0
  190. package/dist/excalidraw/components/hyperlink/Hyperlink.js +3 -3
  191. package/dist/excalidraw/components/hyperlink/helpers.js +2 -3
  192. package/dist/excalidraw/components/icons.d.ts +1 -0
  193. package/dist/excalidraw/components/icons.js +1 -0
  194. package/dist/excalidraw/components/main-menu/DefaultItems.d.ts +1 -1
  195. package/dist/excalidraw/constants.d.ts +3 -3
  196. package/dist/excalidraw/constants.js +6 -3
  197. package/dist/excalidraw/data/reconcile.d.ts +6 -0
  198. package/dist/excalidraw/data/reconcile.js +49 -0
  199. package/dist/excalidraw/data/restore.d.ts +3 -3
  200. package/dist/excalidraw/data/restore.js +6 -7
  201. package/dist/excalidraw/data/transform.d.ts +1 -1
  202. package/dist/excalidraw/data/transform.js +4 -3
  203. package/dist/excalidraw/element/binding.d.ts +50 -9
  204. package/dist/excalidraw/element/binding.js +712 -155
  205. package/dist/excalidraw/element/bounds.d.ts +0 -1
  206. package/dist/excalidraw/element/bounds.js +0 -3
  207. package/dist/excalidraw/element/collision.d.ts +14 -19
  208. package/dist/excalidraw/element/collision.js +36 -713
  209. package/dist/excalidraw/element/embeddable.d.ts +7 -4
  210. package/dist/excalidraw/element/embeddable.js +72 -18
  211. package/dist/excalidraw/element/index.d.ts +0 -1
  212. package/dist/excalidraw/element/index.js +0 -1
  213. package/dist/excalidraw/element/linearElementEditor.d.ts +11 -11
  214. package/dist/excalidraw/element/linearElementEditor.js +7 -5
  215. package/dist/excalidraw/element/mutateElement.d.ts +1 -2
  216. package/dist/excalidraw/element/newElement.d.ts +1 -1
  217. package/dist/excalidraw/element/newElement.js +2 -1
  218. package/dist/excalidraw/element/resizeElements.d.ts +1 -1
  219. package/dist/excalidraw/element/resizeElements.js +110 -86
  220. package/dist/excalidraw/element/resizeTest.d.ts +4 -4
  221. package/dist/excalidraw/element/resizeTest.js +55 -8
  222. package/dist/excalidraw/element/sizeHelpers.js +3 -0
  223. package/dist/excalidraw/element/textElement.d.ts +1 -2
  224. package/dist/excalidraw/element/textElement.js +5 -34
  225. package/dist/excalidraw/element/transformHandles.d.ts +22 -4
  226. package/dist/excalidraw/element/transformHandles.js +24 -3
  227. package/dist/excalidraw/element/typeChecks.d.ts +2 -2
  228. package/dist/excalidraw/element/types.d.ts +19 -6
  229. package/dist/excalidraw/errors.d.ts +3 -0
  230. package/dist/excalidraw/errors.js +3 -0
  231. package/dist/excalidraw/fractionalIndex.d.ts +40 -0
  232. package/dist/excalidraw/fractionalIndex.js +241 -0
  233. package/dist/excalidraw/frame.d.ts +1 -1
  234. package/dist/excalidraw/groups.d.ts +2 -0
  235. package/dist/excalidraw/groups.js +17 -0
  236. package/dist/excalidraw/history.d.ts +34 -46
  237. package/dist/excalidraw/history.js +100 -167
  238. package/dist/excalidraw/hooks/useEmitter.d.ts +2 -0
  239. package/dist/excalidraw/hooks/useEmitter.js +13 -0
  240. package/dist/excalidraw/index.d.ts +2 -0
  241. package/dist/excalidraw/index.js +2 -0
  242. package/dist/excalidraw/locales/en.json +1 -1
  243. package/dist/excalidraw/renderer/interactiveScene.d.ts +1 -1
  244. package/dist/excalidraw/renderer/interactiveScene.js +8 -7
  245. package/dist/excalidraw/renderer/staticScene.js +14 -3
  246. package/dist/excalidraw/renderer/staticSvgScene.js +10 -0
  247. package/dist/excalidraw/scene/Scene.d.ts +7 -6
  248. package/dist/excalidraw/scene/Scene.js +31 -16
  249. package/dist/excalidraw/scene/export.js +2 -1
  250. package/dist/excalidraw/scene/types.d.ts +2 -1
  251. package/dist/excalidraw/store.d.ts +99 -0
  252. package/dist/excalidraw/store.js +269 -0
  253. package/dist/excalidraw/types.d.ts +18 -4
  254. package/dist/excalidraw/utils.d.ts +6 -0
  255. package/dist/excalidraw/utils.js +7 -0
  256. package/dist/excalidraw/zindex.d.ts +2 -2
  257. package/dist/excalidraw/zindex.js +9 -13
  258. package/dist/prod/{en-R7FEFJGC.json → en-Q552WR7L.json} +1 -1
  259. package/dist/prod/index.css +1 -1
  260. package/dist/prod/index.js +44 -44
  261. package/dist/utils/collision.d.ts +4 -0
  262. package/dist/utils/collision.js +48 -0
  263. package/dist/utils/geometry/geometry.d.ts +71 -0
  264. package/dist/utils/geometry/geometry.js +674 -0
  265. package/dist/utils/geometry/shape.d.ts +56 -0
  266. package/dist/utils/geometry/shape.js +168 -0
  267. package/history.ts +161 -216
  268. package/package.json +2 -1
  269. package/dist/browser/dev/excalidraw-assets-dev/chunk-J5HRUYQR.js.map +0 -7
  270. package/dist/browser/dev/excalidraw-assets-dev/chunk-QZ4FGBZF.js.map +0 -7
  271. package/dist/browser/dev/excalidraw-assets-dev/chunk-U6PMUKRO.js.map +0 -7
  272. package/dist/browser/dev/excalidraw-assets-dev/dist-KCKKSNUY.js +0 -10
  273. package/dist/browser/dev/excalidraw-assets-dev/image-ZNQQXS62.css.map +0 -7
  274. package/dist/browser/prod/excalidraw-assets/chunk-46SP2WMF.js +0 -335
  275. package/dist/browser/prod/excalidraw-assets/dist-F2IUHSJR.js +0 -1
  276. package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-3b53844e-ETRR4SD3.js +0 -1
  277. package/dist/browser/prod/excalidraw-assets/image-5SBTIZPN.js +0 -1
  278. /package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-QSJ4HNO7.js.map → blockDiagram-91b80b7a-IRJTK6Z5.js.map} +0 -0
  279. /package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-4MYCZKG5.js.map → c4Diagram-b2a90758-CCPPXFPY.js.map} +0 -0
  280. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-BECDVD6R.js.map → chunk-32FQKC5U.js.map} +0 -0
  281. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-POWCA5QF.js.map → chunk-4RQWU7MH.js.map} +0 -0
  282. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-Q7SIL7GF.js.map → chunk-4XTDAI34.js.map} +0 -0
  283. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-FR3IAB6U.js.map → chunk-CH3VL6LE.js.map} +0 -0
  284. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-EPAK72CK.js.map → chunk-DAUKRODV.js.map} +0 -0
  285. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-U4Z6B5JW.js.map → chunk-GHBR42PD.js.map} +0 -0
  286. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-FRL7WYV2.js.map → chunk-I6APBPLG.js.map} +0 -0
  287. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-J4UG2B64.js.map → chunk-JT5FK676.js.map} +0 -0
  288. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-OH2FVCZF.js.map → chunk-MTN3FT3I.js.map} +0 -0
  289. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-IE752YUC.js.map → chunk-PTGAFHDE.js.map} +0 -0
  290. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-4LATYPUZ.js.map → chunk-TT3CLKL2.js.map} +0 -0
  291. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-EAK3FBDE.js.map → chunk-VTLDDAKT.js.map} +0 -0
  292. /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-43KRVI2R.js.map → classDiagram-30eddba6-EYEUBSFK.js.map} +0 -0
  293. /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-NDH5IIX2.js.map → classDiagram-v2-f2df5561-2Q4N2YXH.js.map} +0 -0
  294. /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-WIGO3PHP.js.map → directory-open-01563666-JI732I6L.js.map} +0 -0
  295. /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-CXEHOJKC.js.map → directory-open-4ed118d0-FCSLGWX4.js.map} +0 -0
  296. /package/dist/browser/dev/excalidraw-assets-dev/{dist-KCKKSNUY.js.map → dist-Y7YU7LF5.js.map} +0 -0
  297. /package/dist/browser/dev/excalidraw-assets-dev/{en-UW5C5KGW.js.map → en-PSBMWL4S.js.map} +0 -0
  298. /package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-LXI3RBHB.js.map → erDiagram-47591fe2-YW6WXPKB.js.map} +0 -0
  299. /package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-ZLYQ5POM.js.map → file-open-002ab408-VGLBX2SD.js.map} +0 -0
  300. /package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-YEWKTXUK.js.map → file-open-7c801643-HOSRJESM.js.map} +0 -0
  301. /package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-ZRB6VRMQ.js.map → file-save-3189631c-7UVDDLND.js.map} +0 -0
  302. /package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-6AE2F2MK.js.map → file-save-745eba88-R4WI6C5N.js.map} +0 -0
  303. /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-MHX5LMLF.js.map → flowDiagram-5540d9b9-HMMVJLFR.js.map} +0 -0
  304. /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-HXZO64MP.js.map → flowDiagram-v2-3b53844e-MAKR536R.js.map} +0 -0
  305. /package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-QJSM73VB.js.map → flowchart-elk-definition-5fe447d6-K5ZCVETB.js.map} +0 -0
  306. /package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-DIBF4MAD.js.map → ganttDiagram-9a3bba1f-2ZVU3FTZ.js.map} +0 -0
  307. /package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJVGQM3V.js.map → gitGraphDiagram-96e6b4ee-FZ6FANLP.js.map} +0 -0
  308. /package/dist/browser/dev/excalidraw-assets-dev/{image-GU4Q2RBL.js.map → image-SS5TMYT4.js.map} +0 -0
  309. /package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-FERKXLKH.js.map → image-blob-reduce.esm-YXLX3RLK.js.map} +0 -0
  310. /package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-M4VT2O6X.js.map → infoDiagram-bcd20f53-COYAHIVY.js.map} +0 -0
  311. /package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-RBUJMJGB.js.map → journeyDiagram-4fe6b3dc-RFNSHLY7.js.map} +0 -0
  312. /package/dist/browser/dev/excalidraw-assets-dev/{katex-U3KW6RMN.js.map → katex-E3UYSNFK.js.map} +0 -0
  313. /package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-G75STLDF.js.map → mindmap-definition-f354de21-PLB66GYC.js.map} +0 -0
  314. /package/dist/browser/dev/excalidraw-assets-dev/{pica-QCDDJ4FA.js.map → pica-FL6WHKHD.js.map} +0 -0
  315. /package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-EYD6GWN6.js.map → pieDiagram-79897490-UZ3VDZDT.js.map} +0 -0
  316. /package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-VCULRDXW.js.map → quadrantDiagram-62f64e94-T5FLQQ62.js.map} +0 -0
  317. /package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-TASTTHUI.js.map → requirementDiagram-05bf5f74-VEHQOUFO.js.map} +0 -0
  318. /package/dist/browser/dev/excalidraw-assets-dev/{roundRect-5GJOYZ3N.js.map → roundRect-K6N73LBJ.js.map} +0 -0
  319. /package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-2YQACLIX.js.map → sankeyDiagram-97764748-KLJ7HONA.js.map} +0 -0
  320. /package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-AQAXFV3S.js.map → sequenceDiagram-acc0e65c-L4ZWSX22.js.map} +0 -0
  321. /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-EI62FLQG.js.map → stateDiagram-0ff1cf1a-JZUDOEAH.js.map} +0 -0
  322. /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-MTSH7UNC.js.map → stateDiagram-v2-9a9d610d-WHNU7SI7.js.map} +0 -0
  323. /package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-VQ2VZEWC.js.map → timeline-definition-fea2a41d-SLLH6X7S.js.map} +0 -0
  324. /package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-VTFIYULE.js.map → xychartDiagram-ab372869-A7EDAO5Q.js.map} +0 -0
@@ -1,8 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import { ExcalidrawProps } from "../types";
3
3
  import { ExcalidrawElement, ExcalidrawIframeLikeElement, IframeData } from "./types";
4
+ import { 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 {};
@@ -6,6 +6,7 @@ import { newTextElement } from "./newElement";
6
6
  import { wrapText } from "./textElement";
7
7
  import { isIframeElement } from "./typeChecks";
8
8
  import { sanitizeHTMLAttribute } from "../data/url";
9
+ import { StoreAction } from "../store";
9
10
  const embeddedLinkCache = new Map();
10
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]*$/;
11
12
  const RE_VIMEO = /^(?:http(?:s)?:\/\/)?(?:(?:w){3}\.)?(?:player\.)?vimeo\.com\/(?:video\/)?([^?\s]+)(?:\?.*)?$/;
@@ -32,7 +33,17 @@ const ALLOWED_DOMAINS = new Set([
32
33
  "stackblitz.com",
33
34
  "val.town",
34
35
  "giphy.com",
35
- "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",
36
47
  ]);
37
48
  export const createSrcDoc = (body) => {
38
49
  return `<html><body>${body}</body></html>`;
@@ -45,6 +56,7 @@ export const getEmbedLink = (link) => {
45
56
  return embeddedLinkCache.get(link);
46
57
  }
47
58
  const originalLink = link;
59
+ const allowSameOrigin = ALLOW_SAME_ORIGIN.has(matchHostname(link, ALLOW_SAME_ORIGIN) || "");
48
60
  let type = "generic";
49
61
  let aspectRatio = { w: 560, h: 840 };
50
62
  const ytLink = link.match(RE_YOUTUBE);
@@ -71,8 +83,14 @@ export const getEmbedLink = (link) => {
71
83
  link,
72
84
  intrinsicSize: aspectRatio,
73
85
  type,
86
+ sandbox: { allowSameOrigin },
74
87
  });
75
- return { link, intrinsicSize: aspectRatio, type };
88
+ return {
89
+ link,
90
+ intrinsicSize: aspectRatio,
91
+ type,
92
+ sandbox: { allowSameOrigin },
93
+ };
76
94
  }
77
95
  const vimeoLink = link.match(RE_VIMEO);
78
96
  if (vimeoLink?.[1]) {
@@ -89,8 +107,15 @@ export const getEmbedLink = (link) => {
89
107
  link,
90
108
  intrinsicSize: aspectRatio,
91
109
  type,
110
+ sandbox: { allowSameOrigin },
92
111
  });
93
- return { link, intrinsicSize: aspectRatio, type, error };
112
+ return {
113
+ link,
114
+ intrinsicSize: aspectRatio,
115
+ type,
116
+ error,
117
+ sandbox: { allowSameOrigin },
118
+ };
94
119
  }
95
120
  const figmaLink = link.match(RE_FIGMA);
96
121
  if (figmaLink) {
@@ -101,8 +126,14 @@ export const getEmbedLink = (link) => {
101
126
  link,
102
127
  intrinsicSize: aspectRatio,
103
128
  type,
129
+ sandbox: { allowSameOrigin },
104
130
  });
105
- return { link, intrinsicSize: aspectRatio, type };
131
+ return {
132
+ link,
133
+ intrinsicSize: aspectRatio,
134
+ type,
135
+ sandbox: { allowSameOrigin },
136
+ };
106
137
  }
107
138
  const valLink = link.match(RE_VALTOWN);
108
139
  if (valLink) {
@@ -112,8 +143,14 @@ export const getEmbedLink = (link) => {
112
143
  link,
113
144
  intrinsicSize: aspectRatio,
114
145
  type,
146
+ sandbox: { allowSameOrigin },
115
147
  });
116
- return { link, intrinsicSize: aspectRatio, type };
148
+ return {
149
+ link,
150
+ intrinsicSize: aspectRatio,
151
+ type,
152
+ sandbox: { allowSameOrigin },
153
+ };
117
154
  }
118
155
  if (RE_TWITTER.test(link)) {
119
156
  const postId = link.match(RE_TWITTER)[1];
@@ -126,7 +163,7 @@ export const getEmbedLink = (link) => {
126
163
  type: "document",
127
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>`),
128
165
  intrinsicSize: { w: 480, h: 480 },
129
- sandbox: { allowSameOrigin: true },
166
+ sandbox: { allowSameOrigin },
130
167
  };
131
168
  embeddedLinkCache.set(originalLink, ret);
132
169
  return ret;
@@ -145,12 +182,23 @@ export const getEmbedLink = (link) => {
145
182
  </style>
146
183
  `),
147
184
  intrinsicSize: { w: 550, h: 720 },
185
+ sandbox: { allowSameOrigin },
148
186
  };
149
187
  embeddedLinkCache.set(link, ret);
150
188
  return ret;
151
189
  }
152
- embeddedLinkCache.set(link, { link, intrinsicSize: aspectRatio, type });
153
- 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
+ };
154
202
  };
155
203
  export const createPlaceholderEmbeddableLabel = (element) => {
156
204
  let text;
@@ -201,29 +249,35 @@ export const actionSetEmbeddableAsActiveTool = register({
201
249
  type: "embeddable",
202
250
  }),
203
251
  },
204
- commitToHistory: false,
252
+ storeAction: StoreAction.NONE,
205
253
  };
206
254
  },
207
255
  });
208
- const validateHostname = (url,
256
+ const matchHostname = (url,
209
257
  /** using a Set assumes it already contains normalized bare domains */
210
258
  allowedHostnames) => {
211
259
  try {
212
260
  const { hostname } = new URL(url);
213
261
  const bareDomain = hostname.replace(/^www\./, "");
214
- const bareDomainWithFirstSubdomainWildcarded = bareDomain.replace(/^([^.]+)/, "*");
215
262
  if (allowedHostnames instanceof Set) {
216
- return (ALLOWED_DOMAINS.has(bareDomain) ||
217
- 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;
218
271
  }
219
- if (bareDomain === allowedHostnames.replace(/^www\./, "")) {
220
- return true;
272
+ const bareAllowedHostname = allowedHostnames.replace(/^www\./, "");
273
+ if (bareDomain === bareAllowedHostname) {
274
+ return bareAllowedHostname;
221
275
  }
222
276
  }
223
277
  catch (error) {
224
278
  // ignore
225
279
  }
226
- return false;
280
+ return null;
227
281
  };
228
282
  export const maybeParseEmbedSrc = (str) => {
229
283
  const twitterMatch = str.match(RE_TWITTER_EMBED);
@@ -268,12 +322,12 @@ export const embeddableURLValidator = (url, validateEmbeddable) => {
268
322
  return true;
269
323
  }
270
324
  }
271
- else if (validateHostname(url, domain)) {
325
+ else if (matchHostname(url, domain)) {
272
326
  return true;
273
327
  }
274
328
  }
275
329
  return false;
276
330
  }
277
331
  }
278
- return validateHostname(url, ALLOWED_DOMAINS);
332
+ return !!matchHostname(url, ALLOWED_DOMAINS);
279
333
  };
@@ -2,7 +2,6 @@ import { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted } from "./ty
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";
2
+ import { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, ExcalidrawBindableElement, ExcalidrawTextElementWithContainer, ElementsMap, NonDeletedSceneElementsMap } from "./types";
3
3
  import { Bounds } from "./bounds";
4
- import { Point, AppState, PointerCoords, InteractiveCanvasAppState } from "../types";
5
- import History from "../history";
4
+ import { Point, AppState, PointerCoords, InteractiveCanvasAppState, AppClassProperties } from "../types";
5
+ import { 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
1
  import { ExcalidrawElement } from "./types";
2
2
  import { Mutable } from "../utility-types";
3
- type ElementUpdate<TElement extends ExcalidrawElement> = Omit<Partial<TElement>, "id" | "version" | "versionNonce">;
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
1
  import { ExcalidrawElement, ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, GroupId, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues, ExcalidrawTextContainer, ExcalidrawFrameElement, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap } from "./types";
2
2
  import { AppState } from "../types";
3
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">;
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,
@@ -4,6 +4,6 @@ import { 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";