@dwelle/excalidraw 0.5.0-da1c822 → 0.5.0-e8bcd96

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 (462) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-RHODGCTM.js → blockDiagram-91b80b7a-SWMOP5PL.js} +6 -6
  3. package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-W7NCR7LR.js → c4Diagram-b2a90758-N33A4OZ7.js} +4 -4
  4. package/dist/browser/dev/excalidraw-assets-dev/{chunk-TKRIVTWP.js → chunk-3XV32LTV.js} +3 -3
  5. package/dist/browser/dev/excalidraw-assets-dev/{chunk-B2MHJWXZ.js → chunk-CLMTS5EY.js} +2 -2
  6. package/dist/browser/dev/excalidraw-assets-dev/{chunk-QFS4M5OJ.js → chunk-DIDQ2KEW.js} +3 -3
  7. package/dist/browser/dev/excalidraw-assets-dev/{chunk-5747M6KP.js → chunk-G3PHSEXY.js} +3 -3
  8. package/dist/browser/dev/excalidraw-assets-dev/{chunk-PPHFJLL7.js → chunk-HCMMCBMX.js} +4 -4
  9. package/dist/browser/dev/excalidraw-assets-dev/{chunk-DQOPSCYA.js → chunk-K5QPOXOQ.js} +3 -3
  10. package/dist/browser/dev/excalidraw-assets-dev/{chunk-52OGG53V.js → chunk-KMSH7QAI.js} +3 -3
  11. package/dist/browser/dev/excalidraw-assets-dev/{chunk-SLLUETBM.js → chunk-TVSGJBCZ.js} +7 -7
  12. package/dist/browser/dev/excalidraw-assets-dev/{chunk-GPOYIZPX.js → chunk-UEFQKRSO.js} +28 -28
  13. package/dist/browser/dev/excalidraw-assets-dev/chunk-UEFQKRSO.js.map +7 -0
  14. package/dist/browser/dev/excalidraw-assets-dev/{chunk-BESQLMCW.js → chunk-UONPRRXT.js} +5 -5
  15. package/dist/browser/dev/excalidraw-assets-dev/{chunk-UETNA2WX.js → chunk-V6ITT7XZ.js} +7397 -5320
  16. package/dist/browser/dev/excalidraw-assets-dev/chunk-V6ITT7XZ.js.map +7 -0
  17. package/dist/browser/dev/excalidraw-assets-dev/{chunk-USLWOHUZ.js → chunk-VU32GUMX.js} +4 -4
  18. package/dist/browser/dev/excalidraw-assets-dev/{chunk-GF7VCOUM.js → chunk-WQNNVZHO.js} +3 -3
  19. package/dist/browser/dev/excalidraw-assets-dev/{chunk-GCA4S2OA.js → chunk-WXRCMPEJ.js} +3 -3
  20. package/dist/browser/dev/excalidraw-assets-dev/{chunk-J5HRUYQR.js → chunk-YGAE3YWH.js} +6 -4
  21. package/dist/browser/dev/excalidraw-assets-dev/chunk-YGAE3YWH.js.map +7 -0
  22. package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-GJGBT4TV.js → classDiagram-30eddba6-HGXEWQY2.js} +6 -6
  23. package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-LYWTIPJA.js → classDiagram-v2-f2df5561-ANW5DGKP.js} +9 -9
  24. package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-UREMLRIT.js → directory-open-01563666-67XPRP2W.js} +2 -2
  25. package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-UN3BUDZZ.js → directory-open-4ed118d0-TZOVUMX3.js} +2 -2
  26. package/dist/browser/dev/excalidraw-assets-dev/dist-JWLY7ZTC.js +10 -0
  27. package/dist/browser/dev/excalidraw-assets-dev/{en-UW5C5KGW.js → en-RSUSLGPV.js} +2 -2
  28. package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-Z7U2XW2Y.js → erDiagram-47591fe2-HB4S6KST.js} +5 -5
  29. package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-4QG336MG.js → file-open-002ab408-ODQEDP24.js} +2 -2
  30. package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-3QI4ICCL.js → file-open-7c801643-RPLD6WZI.js} +2 -2
  31. package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-TNNERCWV.js → file-save-3189631c-63VHNBWZ.js} +2 -2
  32. package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-JFMH565P.js → file-save-745eba88-SJSX6XSD.js} +2 -2
  33. package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-PARVG263.js → flowDiagram-5540d9b9-4QMRNUIV.js} +10 -10
  34. package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-ZJOPVRMB.js → flowDiagram-v2-3b53844e-EH5O3NBM.js} +10 -10
  35. package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-ULPNBSZX.js → flowchart-elk-definition-5fe447d6-7HGYBXUA.js} +6 -6
  36. package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-ESSYVTJ4.js → ganttDiagram-9a3bba1f-V5WA3IP4.js} +3 -3
  37. package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-6V6VVNNP.js → gitGraphDiagram-96e6b4ee-6JA3Z4O2.js} +3 -3
  38. package/dist/browser/dev/excalidraw-assets-dev/{image-3LTGFHLF.js → image-GHNRJPTS.js} +6 -6
  39. package/dist/browser/dev/excalidraw-assets-dev/{image-ZNQQXS62.css → image-JYKIJPJC.css} +49 -29
  40. package/dist/browser/dev/excalidraw-assets-dev/image-JYKIJPJC.css.map +7 -0
  41. package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-KTX27DAY.js → image-blob-reduce.esm-QYPUYIZK.js} +2 -2
  42. package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-I22FLFX3.js → infoDiagram-bcd20f53-24MBINO2.js} +3 -3
  43. package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-WAO6F52C.js → journeyDiagram-4fe6b3dc-KJ4YYJII.js} +4 -4
  44. package/dist/browser/dev/excalidraw-assets-dev/{katex-NWA2YFOP.js → katex-INYZI6LE.js} +2 -2
  45. package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-K74IKX4Y.js → mindmap-definition-f354de21-VZEH45PD.js} +4 -4
  46. package/dist/browser/dev/excalidraw-assets-dev/{pica-3TH2EGXR.js → pica-YQGHCBVI.js} +2 -2
  47. package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-DOB2LVE5.js → pieDiagram-79897490-Z2LCRKGQ.js} +3 -3
  48. package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-MJV2X7WI.js → quadrantDiagram-62f64e94-J3AFAFGX.js} +3 -3
  49. package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-H4YM3XN7.js → requirementDiagram-05bf5f74-M474HB6I.js} +5 -5
  50. package/dist/browser/dev/excalidraw-assets-dev/{roundRect-4S3QV2NZ.js → roundRect-ZCXXTYZ4.js} +2 -2
  51. package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-7X74ABAN.js → sankeyDiagram-97764748-TNQP5HMX.js} +3 -3
  52. package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-PPDIJFQP.js → sequenceDiagram-acc0e65c-3NIA26ZM.js} +4 -4
  53. package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-JVBR7N35.js → stateDiagram-0ff1cf1a-V6UXRWCT.js} +6 -6
  54. package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-QYAJLQJH.js → stateDiagram-v2-9a9d610d-7LTZXINB.js} +9 -9
  55. package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-GL7U3WDB.js → timeline-definition-fea2a41d-X4VGA6IX.js} +3 -3
  56. package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-4U4JE4TW.js → xychartDiagram-ab372869-UQCQVK6J.js} +4 -4
  57. package/dist/browser/dev/index.css +48 -28
  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-BO7MW3VX.js → blockDiagram-91b80b7a-2ADOK2UH.js} +1 -1
  61. package/dist/browser/prod/excalidraw-assets/{c4Diagram-b2a90758-VCUPBVHR.js → c4Diagram-b2a90758-XJ3HR543.js} +1 -1
  62. package/dist/browser/prod/excalidraw-assets/{chunk-VXFFPRP2.js → chunk-4X2EVGJW.js} +1 -1
  63. package/dist/browser/prod/excalidraw-assets/{chunk-5PWM36DG.js → chunk-5ARJLPSL.js} +1 -1
  64. package/dist/browser/prod/excalidraw-assets/{chunk-B7CDQVNY.js → chunk-6RDIDVV6.js} +21 -21
  65. package/dist/browser/prod/excalidraw-assets/chunk-AWDUHWKA.js +269 -0
  66. package/dist/browser/prod/excalidraw-assets/{chunk-V7HUISEN.js → chunk-COMJOADH.js} +1 -1
  67. package/dist/browser/prod/excalidraw-assets/{chunk-NM5B2RBP.js → chunk-DHU3NMWJ.js} +1 -1
  68. package/dist/browser/prod/excalidraw-assets/{chunk-4JYQ3563.js → chunk-FKEWZS6G.js} +1 -1
  69. package/dist/browser/prod/excalidraw-assets/{chunk-3VCRCP5J.js → chunk-GID7HY42.js} +1 -1
  70. package/dist/browser/prod/excalidraw-assets/{chunk-7UJZVYSR.js → chunk-H4K7WCAG.js} +1 -1
  71. package/dist/browser/prod/excalidraw-assets/{chunk-3HZHH3PT.js → chunk-PDA7IERE.js} +1 -1
  72. package/dist/browser/prod/excalidraw-assets/{chunk-O77Z7CWL.js → chunk-SCYMUHNO.js} +1 -1
  73. package/dist/browser/prod/excalidraw-assets/{chunk-QLNFR4AJ.js → chunk-SCZE4QLN.js} +2 -2
  74. package/dist/browser/prod/excalidraw-assets/{chunk-HPA5W5VE.js → chunk-Y4AVKYKK.js} +1 -1
  75. package/dist/browser/prod/excalidraw-assets/{chunk-CVEF66PS.js → chunk-YFHFEESB.js} +1 -1
  76. package/dist/browser/prod/excalidraw-assets/{chunk-22FVL4I7.js → chunk-Z4B7QXT2.js} +1 -1
  77. package/dist/browser/prod/excalidraw-assets/{classDiagram-30eddba6-VXGNM3LI.js → classDiagram-30eddba6-RQ6VHNNF.js} +1 -1
  78. package/dist/browser/prod/excalidraw-assets/{classDiagram-v2-f2df5561-YALTASVE.js → classDiagram-v2-f2df5561-TL3XYHL6.js} +1 -1
  79. package/dist/browser/prod/excalidraw-assets/{directory-open-01563666-JWXY2QSC.js → directory-open-01563666-ORBUXLUB.js} +1 -1
  80. package/dist/browser/prod/excalidraw-assets/{directory-open-4ed118d0-6AL5X37W.js → directory-open-4ed118d0-HRBZ4CD4.js} +1 -1
  81. package/dist/browser/prod/excalidraw-assets/dist-IRBESAGJ.js +1 -0
  82. package/dist/browser/prod/excalidraw-assets/{en-CPU3UVKT.js → en-SOC7FEW5.js} +1 -1
  83. package/dist/browser/prod/excalidraw-assets/{erDiagram-47591fe2-GKYANCN7.js → erDiagram-47591fe2-PBCROW3M.js} +1 -1
  84. package/dist/browser/prod/excalidraw-assets/{file-open-002ab408-3EPJOH45.js → file-open-002ab408-SRGK55ER.js} +1 -1
  85. package/dist/browser/prod/excalidraw-assets/{file-open-7c801643-QIP6HK4D.js → file-open-7c801643-IAPRROWG.js} +1 -1
  86. package/dist/browser/prod/excalidraw-assets/{file-save-3189631c-4TQJBQCS.js → file-save-3189631c-LO2KPJNL.js} +1 -1
  87. package/dist/browser/prod/excalidraw-assets/{file-save-745eba88-C4L3ZGCC.js → file-save-745eba88-2DRIRHNX.js} +1 -1
  88. package/dist/browser/prod/excalidraw-assets/{flowDiagram-5540d9b9-QBRW5SLP.js → flowDiagram-5540d9b9-6MWFBLXS.js} +1 -1
  89. package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-3b53844e-CD6XHMHV.js +1 -0
  90. package/dist/browser/prod/excalidraw-assets/{flowchart-elk-definition-5fe447d6-YYO2EYKS.js → flowchart-elk-definition-5fe447d6-4UPGJKHJ.js} +1 -1
  91. package/dist/browser/prod/excalidraw-assets/{ganttDiagram-9a3bba1f-3B2DUUUQ.js → ganttDiagram-9a3bba1f-PDRTJQZH.js} +1 -1
  92. package/dist/browser/prod/excalidraw-assets/{gitGraphDiagram-96e6b4ee-G6CKXXWQ.js → gitGraphDiagram-96e6b4ee-3J3YSPOQ.js} +1 -1
  93. package/dist/browser/prod/excalidraw-assets/image-U235TWVW.css +1 -0
  94. package/dist/browser/prod/excalidraw-assets/image-ZYZR4L6P.js +1 -0
  95. package/dist/browser/prod/excalidraw-assets/{image-blob-reduce.esm-5DTGAOOI.js → image-blob-reduce.esm-XVCS6NNL.js} +1 -1
  96. package/dist/browser/prod/excalidraw-assets/{infoDiagram-bcd20f53-WJTZJERL.js → infoDiagram-bcd20f53-DVJQEG4I.js} +1 -1
  97. package/dist/browser/prod/excalidraw-assets/{journeyDiagram-4fe6b3dc-JF22KXXQ.js → journeyDiagram-4fe6b3dc-ASSTFADN.js} +1 -1
  98. package/dist/browser/prod/excalidraw-assets/{katex-N6R5DPQX.js → katex-RDNZD65H.js} +1 -1
  99. package/dist/browser/prod/excalidraw-assets/{mindmap-definition-f354de21-7SH5STU3.js → mindmap-definition-f354de21-4Y6OYM5B.js} +1 -1
  100. package/dist/browser/prod/excalidraw-assets/{pica-KWHN2PJ6.js → pica-P43LGTW6.js} +1 -1
  101. package/dist/browser/prod/excalidraw-assets/{pieDiagram-79897490-5O5EBEQB.js → pieDiagram-79897490-XJXBVFLX.js} +1 -1
  102. package/dist/browser/prod/excalidraw-assets/{quadrantDiagram-62f64e94-JTY6WOKB.js → quadrantDiagram-62f64e94-PC5DTCKV.js} +1 -1
  103. package/dist/browser/prod/excalidraw-assets/{requirementDiagram-05bf5f74-TSFQFY5X.js → requirementDiagram-05bf5f74-ILVOGHRN.js} +1 -1
  104. package/dist/browser/prod/excalidraw-assets/{roundRect-PUCZURYS.js → roundRect-HU3IUMCJ.js} +1 -1
  105. package/dist/browser/prod/excalidraw-assets/{sankeyDiagram-97764748-7G2R6W67.js → sankeyDiagram-97764748-SC5VBCT5.js} +1 -1
  106. package/dist/browser/prod/excalidraw-assets/{sequenceDiagram-acc0e65c-CTANNZCO.js → sequenceDiagram-acc0e65c-MFG2JCTS.js} +1 -1
  107. package/dist/browser/prod/excalidraw-assets/{stateDiagram-0ff1cf1a-I5COLKZ4.js → stateDiagram-0ff1cf1a-2HXG5RCM.js} +1 -1
  108. package/dist/browser/prod/excalidraw-assets/{stateDiagram-v2-9a9d610d-IIHI3AJN.js → stateDiagram-v2-9a9d610d-PKXRQ3RV.js} +1 -1
  109. package/dist/browser/prod/excalidraw-assets/{timeline-definition-fea2a41d-CXTGKWI4.js → timeline-definition-fea2a41d-LOYYYOFB.js} +1 -1
  110. package/dist/browser/prod/excalidraw-assets/{xychartDiagram-ab372869-QZGPPHJP.js → xychartDiagram-ab372869-LYHM7ECI.js} +1 -1
  111. package/dist/browser/prod/index.css +1 -1
  112. package/dist/browser/prod/index.js +1 -1
  113. package/dist/dev/{en-R7FEFJGC.json → en-GM5O55AO.json} +5 -3
  114. package/dist/dev/index.css +48 -28
  115. package/dist/dev/index.css.map +2 -2
  116. package/dist/dev/index.js +5324 -3292
  117. package/dist/dev/index.js.map +4 -4
  118. package/dist/excalidraw/actions/actionAddToLibrary.d.ts +4 -4
  119. package/dist/excalidraw/actions/actionAddToLibrary.js +4 -3
  120. package/dist/excalidraw/actions/actionAlign.d.ts +22 -22
  121. package/dist/excalidraw/actions/actionAlign.js +7 -6
  122. package/dist/excalidraw/actions/actionBoundText.d.ts +10 -10
  123. package/dist/excalidraw/actions/actionBoundText.js +11 -5
  124. package/dist/excalidraw/actions/actionCanvas.d.ts +52 -52
  125. package/dist/excalidraw/actions/actionCanvas.js +16 -13
  126. package/dist/excalidraw/actions/actionClipboard.d.ts +24 -24
  127. package/dist/excalidraw/actions/actionClipboard.js +14 -13
  128. package/dist/excalidraw/actions/actionDeleteSelected.d.ts +10 -10
  129. package/dist/excalidraw/actions/actionDeleteSelected.js +6 -3
  130. package/dist/excalidraw/actions/actionDistribute.d.ts +10 -10
  131. package/dist/excalidraw/actions/actionDistribute.js +3 -2
  132. package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +7 -8
  133. package/dist/excalidraw/actions/actionDuplicateSelection.js +7 -3
  134. package/dist/excalidraw/actions/actionElementLock.d.ts +9 -9
  135. package/dist/excalidraw/actions/actionElementLock.js +3 -2
  136. package/dist/excalidraw/actions/actionExport.d.ts +37 -37
  137. package/dist/excalidraw/actions/actionExport.js +15 -11
  138. package/dist/excalidraw/actions/actionFinalize.d.ts +9 -9
  139. package/dist/excalidraw/actions/actionFinalize.js +9 -5
  140. package/dist/excalidraw/actions/actionFlip.d.ts +10 -10
  141. package/dist/excalidraw/actions/actionFlip.js +12 -12
  142. package/dist/excalidraw/actions/actionFrame.d.ts +16 -171
  143. package/dist/excalidraw/actions/actionFrame.js +7 -6
  144. package/dist/excalidraw/actions/actionGroup.d.ts +12 -322
  145. package/dist/excalidraw/actions/actionGroup.js +9 -11
  146. package/dist/excalidraw/actions/actionHistory.d.ts +4 -3
  147. package/dist/excalidraw/actions/actionHistory.js +27 -28
  148. package/dist/excalidraw/actions/actionLinearEditor.d.ts +6 -4
  149. package/dist/excalidraw/actions/actionLinearEditor.js +21 -5
  150. package/dist/excalidraw/actions/actionLink.d.ts +5 -5
  151. package/dist/excalidraw/actions/actionLink.js +2 -1
  152. package/dist/excalidraw/actions/actionMenu.d.ts +8 -8
  153. package/dist/excalidraw/actions/actionMenu.js +4 -3
  154. package/dist/excalidraw/actions/actionNavigate.d.ts +4 -4
  155. package/dist/excalidraw/actions/actionNavigate.js +3 -2
  156. package/dist/excalidraw/actions/actionProperties.d.ts +34 -34
  157. package/dist/excalidraw/actions/actionProperties.js +19 -14
  158. package/dist/excalidraw/actions/actionSelectAll.d.ts +5 -5
  159. package/dist/excalidraw/actions/actionSelectAll.js +2 -1
  160. package/dist/excalidraw/actions/actionStyles.d.ts +9 -12
  161. package/dist/excalidraw/actions/actionStyles.js +4 -3
  162. package/dist/excalidraw/actions/actionTextAutoResize.d.ts +17 -0
  163. package/dist/excalidraw/actions/actionTextAutoResize.js +38 -0
  164. package/dist/excalidraw/actions/actionToggleGridMode.d.ts +7 -5
  165. package/dist/excalidraw/actions/actionToggleGridMode.js +6 -2
  166. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +4 -4
  167. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.js +2 -1
  168. package/dist/excalidraw/actions/actionToggleStats.d.ts +4 -4
  169. package/dist/excalidraw/actions/actionToggleStats.js +2 -1
  170. package/dist/excalidraw/actions/actionToggleViewMode.d.ts +4 -4
  171. package/dist/excalidraw/actions/actionToggleViewMode.js +2 -1
  172. package/dist/excalidraw/actions/actionToggleZenMode.d.ts +4 -4
  173. package/dist/excalidraw/actions/actionToggleZenMode.js +2 -1
  174. package/dist/excalidraw/actions/actionZindex.d.ts +23 -19
  175. package/dist/excalidraw/actions/actionZindex.js +9 -4
  176. package/dist/excalidraw/actions/manager.d.ts +5 -5
  177. package/dist/excalidraw/actions/register.d.ts +1 -1
  178. package/dist/excalidraw/actions/shortcuts.d.ts +2 -2
  179. package/dist/excalidraw/actions/types.d.ts +8 -8
  180. package/dist/excalidraw/align.d.ts +1 -1
  181. package/dist/excalidraw/animated-trail.d.ts +2 -2
  182. package/dist/excalidraw/appState.d.ts +6 -6
  183. package/dist/excalidraw/change.d.ts +191 -0
  184. package/dist/excalidraw/change.js +894 -0
  185. package/dist/excalidraw/charts.d.ts +1 -1
  186. package/dist/excalidraw/clients.d.ts +2 -2
  187. package/dist/excalidraw/clients.js +1 -1
  188. package/dist/excalidraw/clipboard.d.ts +3 -3
  189. package/dist/excalidraw/colors.d.ts +1 -1
  190. package/dist/excalidraw/components/Actions.d.ts +3 -3
  191. package/dist/excalidraw/components/Actions.js +8 -5
  192. package/dist/excalidraw/components/App.d.ts +28 -14
  193. package/dist/excalidraw/components/App.js +385 -177
  194. package/dist/excalidraw/components/ColorPicker/ColorInput.d.ts +1 -1
  195. package/dist/excalidraw/components/ColorPicker/ColorInput.js +1 -1
  196. package/dist/excalidraw/components/ColorPicker/ColorPicker.d.ts +4 -4
  197. package/dist/excalidraw/components/ColorPicker/ColorPicker.js +1 -1
  198. package/dist/excalidraw/components/ColorPicker/Picker.d.ts +3 -3
  199. package/dist/excalidraw/components/ColorPicker/PickerColorList.d.ts +1 -1
  200. package/dist/excalidraw/components/ColorPicker/PickerHeading.d.ts +1 -1
  201. package/dist/excalidraw/components/ColorPicker/ShadeList.d.ts +1 -1
  202. package/dist/excalidraw/components/ColorPicker/TopPicks.d.ts +1 -1
  203. package/dist/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +2 -2
  204. package/dist/excalidraw/components/ColorPicker/colorPickerUtils.js +1 -1
  205. package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -2
  206. package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.js +1 -1
  207. package/dist/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -1
  208. package/dist/excalidraw/components/CommandPalette/CommandPalette.js +6 -5
  209. package/dist/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -1
  210. package/dist/excalidraw/components/CommandPalette/types.d.ts +3 -3
  211. package/dist/excalidraw/components/ConfirmDialog.d.ts +1 -1
  212. package/dist/excalidraw/components/ContextMenu.d.ts +2 -2
  213. package/dist/excalidraw/components/ContextMenu.js +1 -1
  214. package/dist/excalidraw/components/DarkModeToggle.d.ts +1 -1
  215. package/dist/excalidraw/components/DefaultSidebar.d.ts +2 -2
  216. package/dist/excalidraw/components/DialogActionButton.d.ts +1 -1
  217. package/dist/excalidraw/components/EyeDropper.d.ts +2 -2
  218. package/dist/excalidraw/components/FollowMode/FollowMode.d.ts +1 -1
  219. package/dist/excalidraw/components/HelpDialog.js +1 -1
  220. package/dist/excalidraw/components/HintViewer.d.ts +1 -1
  221. package/dist/excalidraw/components/ImageExportDialog.d.ts +1 -1
  222. package/dist/excalidraw/components/InitializeApp.d.ts +2 -2
  223. package/dist/excalidraw/components/JSONExportDialog.d.ts +3 -3
  224. package/dist/excalidraw/components/LayerUI.d.ts +4 -4
  225. package/dist/excalidraw/components/LayerUI.js +1 -1
  226. package/dist/excalidraw/components/LibraryMenu.d.ts +2 -2
  227. package/dist/excalidraw/components/LibraryMenuBrowseButton.d.ts +1 -1
  228. package/dist/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  229. package/dist/excalidraw/components/LibraryMenuHeaderContent.d.ts +2 -2
  230. package/dist/excalidraw/components/LibraryMenuItems.d.ts +1 -1
  231. package/dist/excalidraw/components/LibraryMenuSection.d.ts +5 -4
  232. package/dist/excalidraw/components/LibraryUnit.d.ts +2 -2
  233. package/dist/excalidraw/components/LoadingMessage.d.ts +1 -1
  234. package/dist/excalidraw/components/MagicSettings.js +2 -2
  235. package/dist/excalidraw/components/MobileMenu.d.ts +3 -3
  236. package/dist/excalidraw/components/Modal.d.ts +1 -1
  237. package/dist/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
  238. package/dist/excalidraw/components/PasteChartDialog.d.ts +1 -1
  239. package/dist/excalidraw/components/PublishLibrary.d.ts +1 -1
  240. package/dist/excalidraw/components/SVGLayer.d.ts +1 -1
  241. package/dist/excalidraw/components/Sidebar/Sidebar.d.ts +2 -2
  242. package/dist/excalidraw/components/Sidebar/Sidebar.js +1 -1
  243. package/dist/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -1
  244. package/dist/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -1
  245. package/dist/excalidraw/components/Sidebar/SidebarTrigger.d.ts +1 -1
  246. package/dist/excalidraw/components/Sidebar/common.d.ts +1 -1
  247. package/dist/excalidraw/components/Stack.d.ts +2 -2
  248. package/dist/excalidraw/components/Stats.d.ts +2 -2
  249. package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +1 -1
  250. package/dist/excalidraw/components/TTDDialog/TTDDialog.js +2 -2
  251. package/dist/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +1 -1
  252. package/dist/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +1 -1
  253. package/dist/excalidraw/components/TTDDialog/TTDDialogPanels.d.ts +1 -1
  254. package/dist/excalidraw/components/TTDDialog/TTDDialogTabs.d.ts +1 -1
  255. package/dist/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -1
  256. package/dist/excalidraw/components/TTDDialog/common.d.ts +4 -4
  257. package/dist/excalidraw/components/TextField.d.ts +1 -1
  258. package/dist/excalidraw/components/Toast.d.ts +1 -1
  259. package/dist/excalidraw/components/ToolButton.d.ts +4 -2
  260. package/dist/excalidraw/components/ToolButton.js +1 -1
  261. package/dist/excalidraw/components/Trans.d.ts +1 -1
  262. package/dist/excalidraw/components/UserList.d.ts +1 -1
  263. package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +3 -2
  264. package/dist/excalidraw/components/canvases/InteractiveCanvas.js +3 -2
  265. package/dist/excalidraw/components/canvases/StaticCanvas.d.ts +2 -2
  266. package/dist/excalidraw/components/canvases/StaticCanvas.js +2 -2
  267. package/dist/excalidraw/components/dropdownMenu/DropdownMenuItem.js +2 -2
  268. package/dist/excalidraw/components/footer/Footer.d.ts +2 -2
  269. package/dist/excalidraw/components/hyperlink/Hyperlink.d.ts +2 -2
  270. package/dist/excalidraw/components/hyperlink/Hyperlink.js +3 -3
  271. package/dist/excalidraw/components/hyperlink/helpers.d.ts +3 -3
  272. package/dist/excalidraw/components/hyperlink/helpers.js +2 -3
  273. package/dist/excalidraw/components/icons.d.ts +4 -2
  274. package/dist/excalidraw/components/icons.js +20 -6
  275. package/dist/excalidraw/components/main-menu/DefaultItems.d.ts +1 -1
  276. package/dist/excalidraw/constants.d.ts +5 -5
  277. package/dist/excalidraw/constants.js +6 -3
  278. package/dist/excalidraw/context/ui-appState.d.ts +1 -1
  279. package/dist/excalidraw/cursor.d.ts +1 -1
  280. package/dist/excalidraw/data/EditorLocalStorage.d.ts +2 -2
  281. package/dist/excalidraw/data/blob.d.ts +5 -5
  282. package/dist/excalidraw/data/filesystem.d.ts +2 -1
  283. package/dist/excalidraw/data/index.d.ts +4 -4
  284. package/dist/excalidraw/data/json.d.ts +3 -3
  285. package/dist/excalidraw/data/library.d.ts +3 -3
  286. package/dist/excalidraw/data/magic.d.ts +3 -3
  287. package/dist/excalidraw/data/reconcile.d.ts +6 -0
  288. package/dist/excalidraw/data/reconcile.js +49 -0
  289. package/dist/excalidraw/data/resave.d.ts +2 -2
  290. package/dist/excalidraw/data/resave.js +1 -1
  291. package/dist/excalidraw/data/restore.d.ts +5 -5
  292. package/dist/excalidraw/data/restore.js +7 -7
  293. package/dist/excalidraw/data/transform.d.ts +4 -4
  294. package/dist/excalidraw/data/transform.js +4 -3
  295. package/dist/excalidraw/data/types.d.ts +3 -3
  296. package/dist/excalidraw/data/url.d.ts +1 -0
  297. package/dist/excalidraw/data/url.js +4 -1
  298. package/dist/excalidraw/element/ElementCanvasButtons.d.ts +1 -1
  299. package/dist/excalidraw/element/binding.d.ts +50 -9
  300. package/dist/excalidraw/element/binding.js +712 -155
  301. package/dist/excalidraw/element/bounds.d.ts +3 -4
  302. package/dist/excalidraw/element/bounds.js +0 -3
  303. package/dist/excalidraw/element/collision.d.ts +14 -19
  304. package/dist/excalidraw/element/collision.js +36 -713
  305. package/dist/excalidraw/element/containerCache.d.ts +1 -1
  306. package/dist/excalidraw/element/dragElements.d.ts +3 -3
  307. package/dist/excalidraw/element/embeddable.d.ts +9 -6
  308. package/dist/excalidraw/element/embeddable.js +88 -27
  309. package/dist/excalidraw/element/image.d.ts +2 -2
  310. package/dist/excalidraw/element/index.d.ts +2 -3
  311. package/dist/excalidraw/element/index.js +1 -2
  312. package/dist/excalidraw/element/linearElementEditor.d.ts +12 -12
  313. package/dist/excalidraw/element/linearElementEditor.js +7 -5
  314. package/dist/excalidraw/element/mutateElement.d.ts +4 -5
  315. package/dist/excalidraw/element/mutateElement.js +5 -3
  316. package/dist/excalidraw/element/newElement.d.ts +4 -9
  317. package/dist/excalidraw/element/newElement.js +17 -14
  318. package/dist/excalidraw/element/resizeElements.d.ts +4 -4
  319. package/dist/excalidraw/element/resizeElements.js +170 -97
  320. package/dist/excalidraw/element/resizeTest.d.ts +7 -7
  321. package/dist/excalidraw/element/resizeTest.js +53 -8
  322. package/dist/excalidraw/element/showSelectedShapeActions.d.ts +2 -2
  323. package/dist/excalidraw/element/sizeHelpers.d.ts +2 -2
  324. package/dist/excalidraw/element/sizeHelpers.js +3 -0
  325. package/dist/excalidraw/element/sortElements.d.ts +1 -1
  326. package/dist/excalidraw/element/textElement.d.ts +5 -6
  327. package/dist/excalidraw/element/textElement.js +13 -37
  328. package/dist/excalidraw/element/textWysiwyg.d.ts +10 -5
  329. package/dist/excalidraw/element/textWysiwyg.js +6 -8
  330. package/dist/excalidraw/element/transformHandles.d.ts +24 -6
  331. package/dist/excalidraw/element/transformHandles.js +22 -11
  332. package/dist/excalidraw/element/typeChecks.d.ts +4 -4
  333. package/dist/excalidraw/element/types.d.ts +30 -10
  334. package/dist/excalidraw/emitter.d.ts +1 -1
  335. package/dist/excalidraw/errors.d.ts +3 -0
  336. package/dist/excalidraw/errors.js +3 -0
  337. package/dist/excalidraw/fractionalIndex.d.ts +40 -0
  338. package/dist/excalidraw/fractionalIndex.js +241 -0
  339. package/dist/excalidraw/frame.d.ts +4 -4
  340. package/dist/excalidraw/gatransforms.d.ts +1 -1
  341. package/dist/excalidraw/gesture.d.ts +1 -1
  342. package/dist/excalidraw/groups.d.ts +5 -3
  343. package/dist/excalidraw/groups.js +17 -0
  344. package/dist/excalidraw/history.d.ts +35 -47
  345. package/dist/excalidraw/history.js +100 -167
  346. package/dist/excalidraw/hooks/useEmitter.d.ts +2 -0
  347. package/dist/excalidraw/hooks/useEmitter.js +13 -0
  348. package/dist/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  349. package/dist/excalidraw/i18n.d.ts +1 -1
  350. package/dist/excalidraw/index.d.ts +3 -1
  351. package/dist/excalidraw/index.js +2 -0
  352. package/dist/excalidraw/jotai.d.ts +1 -1
  353. package/dist/excalidraw/laser-trails.d.ts +3 -2
  354. package/dist/excalidraw/locales/en.json +5 -3
  355. package/dist/excalidraw/math.d.ts +2 -2
  356. package/dist/excalidraw/points.d.ts +1 -1
  357. package/dist/excalidraw/queue.d.ts +1 -1
  358. package/dist/excalidraw/renderer/helpers.d.ts +2 -2
  359. package/dist/excalidraw/renderer/interactiveScene.d.ts +2 -2
  360. package/dist/excalidraw/renderer/interactiveScene.js +8 -7
  361. package/dist/excalidraw/renderer/renderElement.d.ts +3 -3
  362. package/dist/excalidraw/renderer/renderElement.js +2 -2
  363. package/dist/excalidraw/renderer/renderSnaps.d.ts +1 -1
  364. package/dist/excalidraw/renderer/staticScene.d.ts +1 -1
  365. package/dist/excalidraw/renderer/staticScene.js +14 -3
  366. package/dist/excalidraw/renderer/staticSvgScene.d.ts +4 -4
  367. package/dist/excalidraw/renderer/staticSvgScene.js +10 -0
  368. package/dist/excalidraw/scene/Fonts.d.ts +2 -4
  369. package/dist/excalidraw/scene/Fonts.js +6 -12
  370. package/dist/excalidraw/scene/Renderer.d.ts +4 -4
  371. package/dist/excalidraw/scene/Renderer.js +2 -3
  372. package/dist/excalidraw/scene/Scene.d.ts +19 -12
  373. package/dist/excalidraw/scene/Scene.js +44 -23
  374. package/dist/excalidraw/scene/Shape.d.ts +1 -1
  375. package/dist/excalidraw/scene/ShapeCache.d.ts +5 -4
  376. package/dist/excalidraw/scene/comparisons.d.ts +2 -2
  377. package/dist/excalidraw/scene/export.d.ts +3 -3
  378. package/dist/excalidraw/scene/export.js +4 -3
  379. package/dist/excalidraw/scene/scroll.d.ts +2 -2
  380. package/dist/excalidraw/scene/scrollbars.d.ts +3 -3
  381. package/dist/excalidraw/scene/selection.d.ts +2 -2
  382. package/dist/excalidraw/scene/types.d.ts +5 -4
  383. package/dist/excalidraw/scene/zoom.d.ts +1 -1
  384. package/dist/excalidraw/snapping.d.ts +4 -4
  385. package/dist/excalidraw/store.d.ts +99 -0
  386. package/dist/excalidraw/store.js +269 -0
  387. package/dist/excalidraw/types.d.ts +33 -19
  388. package/dist/excalidraw/utils.d.ts +10 -4
  389. package/dist/excalidraw/utils.js +7 -0
  390. package/dist/excalidraw/zindex.d.ts +4 -4
  391. package/dist/excalidraw/zindex.js +9 -13
  392. package/dist/prod/{en-R7FEFJGC.json → en-GM5O55AO.json} +5 -3
  393. package/dist/prod/index.css +1 -1
  394. package/dist/prod/index.js +44 -44
  395. package/dist/utils/bbox.d.ts +2 -2
  396. package/dist/utils/collision.d.ts +4 -0
  397. package/dist/utils/collision.js +48 -0
  398. package/dist/utils/export.d.ts +1 -1
  399. package/dist/utils/geometry/geometry.d.ts +71 -0
  400. package/dist/utils/geometry/geometry.js +674 -0
  401. package/dist/utils/geometry/shape.d.ts +56 -0
  402. package/dist/utils/geometry/shape.js +168 -0
  403. package/dist/utils/withinBounds.d.ts +1 -1
  404. package/history.ts +163 -218
  405. package/package.json +2 -1
  406. package/dist/browser/dev/excalidraw-assets-dev/chunk-GPOYIZPX.js.map +0 -7
  407. package/dist/browser/dev/excalidraw-assets-dev/chunk-J5HRUYQR.js.map +0 -7
  408. package/dist/browser/dev/excalidraw-assets-dev/chunk-UETNA2WX.js.map +0 -7
  409. package/dist/browser/dev/excalidraw-assets-dev/dist-Y7S5GOTG.js +0 -10
  410. package/dist/browser/dev/excalidraw-assets-dev/image-ZNQQXS62.css.map +0 -7
  411. package/dist/browser/prod/excalidraw-assets/chunk-EEN6AFMH.js +0 -269
  412. package/dist/browser/prod/excalidraw-assets/dist-7FHVDAZ2.js +0 -1
  413. package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-3b53844e-CRHRHP7H.js +0 -1
  414. package/dist/browser/prod/excalidraw-assets/image-VXYNPVOG.js +0 -1
  415. package/dist/browser/prod/excalidraw-assets/image-WE6NA2G6.css +0 -1
  416. /package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-RHODGCTM.js.map → blockDiagram-91b80b7a-SWMOP5PL.js.map} +0 -0
  417. /package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-W7NCR7LR.js.map → c4Diagram-b2a90758-N33A4OZ7.js.map} +0 -0
  418. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-TKRIVTWP.js.map → chunk-3XV32LTV.js.map} +0 -0
  419. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-B2MHJWXZ.js.map → chunk-CLMTS5EY.js.map} +0 -0
  420. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-QFS4M5OJ.js.map → chunk-DIDQ2KEW.js.map} +0 -0
  421. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-5747M6KP.js.map → chunk-G3PHSEXY.js.map} +0 -0
  422. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-PPHFJLL7.js.map → chunk-HCMMCBMX.js.map} +0 -0
  423. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-DQOPSCYA.js.map → chunk-K5QPOXOQ.js.map} +0 -0
  424. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-52OGG53V.js.map → chunk-KMSH7QAI.js.map} +0 -0
  425. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-SLLUETBM.js.map → chunk-TVSGJBCZ.js.map} +0 -0
  426. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-BESQLMCW.js.map → chunk-UONPRRXT.js.map} +0 -0
  427. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-USLWOHUZ.js.map → chunk-VU32GUMX.js.map} +0 -0
  428. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-GF7VCOUM.js.map → chunk-WQNNVZHO.js.map} +0 -0
  429. /package/dist/browser/dev/excalidraw-assets-dev/{chunk-GCA4S2OA.js.map → chunk-WXRCMPEJ.js.map} +0 -0
  430. /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-GJGBT4TV.js.map → classDiagram-30eddba6-HGXEWQY2.js.map} +0 -0
  431. /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-LYWTIPJA.js.map → classDiagram-v2-f2df5561-ANW5DGKP.js.map} +0 -0
  432. /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-UREMLRIT.js.map → directory-open-01563666-67XPRP2W.js.map} +0 -0
  433. /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-UN3BUDZZ.js.map → directory-open-4ed118d0-TZOVUMX3.js.map} +0 -0
  434. /package/dist/browser/dev/excalidraw-assets-dev/{dist-Y7S5GOTG.js.map → dist-JWLY7ZTC.js.map} +0 -0
  435. /package/dist/browser/dev/excalidraw-assets-dev/{en-UW5C5KGW.js.map → en-RSUSLGPV.js.map} +0 -0
  436. /package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-Z7U2XW2Y.js.map → erDiagram-47591fe2-HB4S6KST.js.map} +0 -0
  437. /package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-4QG336MG.js.map → file-open-002ab408-ODQEDP24.js.map} +0 -0
  438. /package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-3QI4ICCL.js.map → file-open-7c801643-RPLD6WZI.js.map} +0 -0
  439. /package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-TNNERCWV.js.map → file-save-3189631c-63VHNBWZ.js.map} +0 -0
  440. /package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-JFMH565P.js.map → file-save-745eba88-SJSX6XSD.js.map} +0 -0
  441. /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-PARVG263.js.map → flowDiagram-5540d9b9-4QMRNUIV.js.map} +0 -0
  442. /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-ZJOPVRMB.js.map → flowDiagram-v2-3b53844e-EH5O3NBM.js.map} +0 -0
  443. /package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-ULPNBSZX.js.map → flowchart-elk-definition-5fe447d6-7HGYBXUA.js.map} +0 -0
  444. /package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-ESSYVTJ4.js.map → ganttDiagram-9a3bba1f-V5WA3IP4.js.map} +0 -0
  445. /package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-6V6VVNNP.js.map → gitGraphDiagram-96e6b4ee-6JA3Z4O2.js.map} +0 -0
  446. /package/dist/browser/dev/excalidraw-assets-dev/{image-3LTGFHLF.js.map → image-GHNRJPTS.js.map} +0 -0
  447. /package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-KTX27DAY.js.map → image-blob-reduce.esm-QYPUYIZK.js.map} +0 -0
  448. /package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-I22FLFX3.js.map → infoDiagram-bcd20f53-24MBINO2.js.map} +0 -0
  449. /package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-WAO6F52C.js.map → journeyDiagram-4fe6b3dc-KJ4YYJII.js.map} +0 -0
  450. /package/dist/browser/dev/excalidraw-assets-dev/{katex-NWA2YFOP.js.map → katex-INYZI6LE.js.map} +0 -0
  451. /package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-K74IKX4Y.js.map → mindmap-definition-f354de21-VZEH45PD.js.map} +0 -0
  452. /package/dist/browser/dev/excalidraw-assets-dev/{pica-3TH2EGXR.js.map → pica-YQGHCBVI.js.map} +0 -0
  453. /package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-DOB2LVE5.js.map → pieDiagram-79897490-Z2LCRKGQ.js.map} +0 -0
  454. /package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-MJV2X7WI.js.map → quadrantDiagram-62f64e94-J3AFAFGX.js.map} +0 -0
  455. /package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-H4YM3XN7.js.map → requirementDiagram-05bf5f74-M474HB6I.js.map} +0 -0
  456. /package/dist/browser/dev/excalidraw-assets-dev/{roundRect-4S3QV2NZ.js.map → roundRect-ZCXXTYZ4.js.map} +0 -0
  457. /package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-7X74ABAN.js.map → sankeyDiagram-97764748-TNQP5HMX.js.map} +0 -0
  458. /package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-PPDIJFQP.js.map → sequenceDiagram-acc0e65c-3NIA26ZM.js.map} +0 -0
  459. /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-JVBR7N35.js.map → stateDiagram-0ff1cf1a-V6UXRWCT.js.map} +0 -0
  460. /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-QYAJLQJH.js.map → stateDiagram-v2-9a9d610d-7LTZXINB.js.map} +0 -0
  461. /package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-GL7U3WDB.js.map → timeline-definition-fea2a41d-X4VGA6IX.js.map} +0 -0
  462. /package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-4U4JE4TW.js.map → xychartDiagram-ab372869-UQCQVK6J.js.map} +0 -0
@@ -1,190 +1,123 @@
1
- import { isLinearElement } from "./element/typeChecks";
2
- import { deepCopyElement } from "./element/newElement";
3
- const clearAppStatePropertiesForHistory = (appState) => {
4
- return {
5
- selectedElementIds: appState.selectedElementIds,
6
- selectedGroupIds: appState.selectedGroupIds,
7
- viewBackgroundColor: appState.viewBackgroundColor,
8
- editingLinearElement: appState.editingLinearElement,
9
- editingGroupId: appState.editingGroupId,
10
- name: appState.name,
11
- };
12
- };
13
- class History {
14
- elementCache = new Map();
15
- recording = true;
16
- stateHistory = [];
1
+ import { Emitter } from "./emitter";
2
+ export class HistoryChangedEvent {
3
+ isUndoStackEmpty;
4
+ isRedoStackEmpty;
5
+ constructor(isUndoStackEmpty = true, isRedoStackEmpty = true) {
6
+ this.isUndoStackEmpty = isUndoStackEmpty;
7
+ this.isRedoStackEmpty = isRedoStackEmpty;
8
+ }
9
+ }
10
+ export class History {
11
+ onHistoryChangedEmitter = new Emitter();
12
+ undoStack = [];
17
13
  redoStack = [];
18
- lastEntry = null;
19
- hydrateHistoryEntry({ appState, elements, }) {
20
- return {
21
- appState: JSON.parse(appState),
22
- elements: elements.map((dehydratedExcalidrawElement) => {
23
- const element = this.elementCache
24
- .get(dehydratedExcalidrawElement.id)
25
- ?.get(dehydratedExcalidrawElement.versionNonce);
26
- if (!element) {
27
- throw new Error(`Element not found: ${dehydratedExcalidrawElement.id}:${dehydratedExcalidrawElement.versionNonce}`);
28
- }
29
- return element;
30
- }),
31
- };
32
- }
33
- dehydrateHistoryEntry({ appState, elements, }) {
34
- return {
35
- appState: JSON.stringify(appState),
36
- elements: elements.map((element) => {
37
- if (!this.elementCache.has(element.id)) {
38
- this.elementCache.set(element.id, new Map());
39
- }
40
- const versions = this.elementCache.get(element.id);
41
- if (!versions.has(element.versionNonce)) {
42
- versions.set(element.versionNonce, deepCopyElement(element));
43
- }
44
- return {
45
- id: element.id,
46
- versionNonce: element.versionNonce,
47
- };
48
- }),
49
- };
50
- }
51
- getSnapshotForTest() {
52
- return {
53
- recording: this.recording,
54
- stateHistory: this.stateHistory.map((dehydratedHistoryEntry) => this.hydrateHistoryEntry(dehydratedHistoryEntry)),
55
- redoStack: this.redoStack.map((dehydratedHistoryEntry) => this.hydrateHistoryEntry(dehydratedHistoryEntry)),
56
- };
14
+ get isUndoStackEmpty() {
15
+ return this.undoStack.length === 0;
16
+ }
17
+ get isRedoStackEmpty() {
18
+ return this.redoStack.length === 0;
57
19
  }
58
20
  clear() {
59
- this.stateHistory.length = 0;
21
+ this.undoStack.length = 0;
60
22
  this.redoStack.length = 0;
61
- this.lastEntry = null;
62
- this.elementCache.clear();
63
- }
64
- generateEntry = (appState, elements) => this.dehydrateHistoryEntry({
65
- appState: clearAppStatePropertiesForHistory(appState),
66
- elements: elements.reduce((elements, element) => {
67
- if (isLinearElement(element) &&
68
- appState.multiElement &&
69
- appState.multiElement.id === element.id) {
70
- // don't store multi-point arrow if still has only one point
71
- if (appState.multiElement &&
72
- appState.multiElement.id === element.id &&
73
- element.points.length < 2) {
74
- return elements;
75
- }
76
- elements.push({
77
- ...element,
78
- // don't store last point if not committed
79
- points: element.lastCommittedPoint !==
80
- element.points[element.points.length - 1]
81
- ? element.points.slice(0, -1)
82
- : element.points,
83
- });
84
- }
85
- else {
86
- elements.push(element);
23
+ }
24
+ /**
25
+ * Record a local change which will go into the history
26
+ */
27
+ record(elementsChange, appStateChange) {
28
+ const entry = HistoryEntry.create(appStateChange, elementsChange);
29
+ if (!entry.isEmpty()) {
30
+ // we have the latest changes, no need to `applyLatest`, which is done within `History.push`
31
+ this.undoStack.push(entry.inverse());
32
+ if (!entry.elementsChange.isEmpty()) {
33
+ // don't reset redo stack on local appState changes,
34
+ // as a simple click (unselect) could lead to losing all the redo entries
35
+ // only reset on non empty elements changes!
36
+ this.redoStack.length = 0;
87
37
  }
88
- return elements;
89
- }, []),
90
- });
91
- shouldCreateEntry(nextEntry) {
92
- const { lastEntry } = this;
93
- if (!lastEntry) {
94
- return true;
95
- }
96
- if (nextEntry.elements.length !== lastEntry.elements.length) {
97
- return true;
38
+ this.onHistoryChangedEmitter.trigger(new HistoryChangedEvent(this.isUndoStackEmpty, this.isRedoStackEmpty));
98
39
  }
99
- // loop from right to left as changes are likelier to happen on new elements
100
- for (let i = nextEntry.elements.length - 1; i > -1; i--) {
101
- const prev = nextEntry.elements[i];
102
- const next = lastEntry.elements[i];
103
- if (!prev ||
104
- !next ||
105
- prev.id !== next.id ||
106
- prev.versionNonce !== next.versionNonce) {
107
- return true;
40
+ }
41
+ undo(elements, appState, snapshot) {
42
+ return this.perform(elements, appState, snapshot, () => History.pop(this.undoStack), (entry) => History.push(this.redoStack, entry, elements));
43
+ }
44
+ redo(elements, appState, snapshot) {
45
+ return this.perform(elements, appState, snapshot, () => History.pop(this.redoStack), (entry) => History.push(this.undoStack, entry, elements));
46
+ }
47
+ perform(elements, appState, snapshot, pop, push) {
48
+ try {
49
+ let historyEntry = pop();
50
+ if (historyEntry === null) {
51
+ return;
108
52
  }
109
- }
110
- // note: this is safe because entry's appState is guaranteed no excess props
111
- let key;
112
- for (key in nextEntry.appState) {
113
- if (key === "editingLinearElement") {
114
- if (nextEntry.appState[key]?.elementId ===
115
- lastEntry.appState[key]?.elementId) {
116
- continue;
53
+ let nextElements = elements;
54
+ let nextAppState = appState;
55
+ let containsVisibleChange = false;
56
+ // iterate through the history entries in case they result in no visible changes
57
+ while (historyEntry) {
58
+ try {
59
+ [nextElements, nextAppState, containsVisibleChange] =
60
+ historyEntry.applyTo(nextElements, nextAppState, snapshot);
117
61
  }
62
+ finally {
63
+ // make sure to always push / pop, even if the increment is corrupted
64
+ push(historyEntry);
65
+ }
66
+ if (containsVisibleChange) {
67
+ break;
68
+ }
69
+ historyEntry = pop();
118
70
  }
119
- if (key === "selectedElementIds" || key === "selectedGroupIds") {
120
- continue;
121
- }
122
- if (nextEntry.appState[key] !== lastEntry.appState[key]) {
123
- return true;
124
- }
71
+ return [nextElements, nextAppState];
125
72
  }
126
- return false;
127
- }
128
- pushEntry(appState, elements) {
129
- const newEntryDehydrated = this.generateEntry(appState, elements);
130
- const newEntry = this.hydrateHistoryEntry(newEntryDehydrated);
131
- if (newEntry) {
132
- if (!this.shouldCreateEntry(newEntry)) {
133
- return;
134
- }
135
- this.stateHistory.push(newEntryDehydrated);
136
- this.lastEntry = newEntry;
137
- // As a new entry was pushed, we invalidate the redo stack
138
- this.clearRedoStack();
73
+ finally {
74
+ // trigger the history change event before returning completely
75
+ // also trigger it just once, no need doing so on each entry
76
+ this.onHistoryChangedEmitter.trigger(new HistoryChangedEvent(this.isUndoStackEmpty, this.isRedoStackEmpty));
139
77
  }
140
78
  }
141
- clearRedoStack() {
142
- this.redoStack.splice(0, this.redoStack.length);
143
- }
144
- redoOnce() {
145
- if (this.redoStack.length === 0) {
79
+ static pop(stack) {
80
+ if (!stack.length) {
146
81
  return null;
147
82
  }
148
- const entryToRestore = this.redoStack.pop();
149
- if (entryToRestore !== undefined) {
150
- this.stateHistory.push(entryToRestore);
151
- return this.hydrateHistoryEntry(entryToRestore);
83
+ const entry = stack.pop();
84
+ if (entry !== undefined) {
85
+ return entry;
152
86
  }
153
87
  return null;
154
88
  }
155
- undoOnce() {
156
- if (this.stateHistory.length === 1) {
157
- return null;
158
- }
159
- const currentEntry = this.stateHistory.pop();
160
- const entryToRestore = this.stateHistory[this.stateHistory.length - 1];
161
- if (currentEntry !== undefined) {
162
- this.redoStack.push(currentEntry);
163
- return this.hydrateHistoryEntry(entryToRestore);
164
- }
165
- return null;
89
+ static push(stack, entry, prevElements) {
90
+ const updatedEntry = entry.inverse().applyLatestChanges(prevElements);
91
+ return stack.push(updatedEntry);
92
+ }
93
+ }
94
+ export class HistoryEntry {
95
+ appStateChange;
96
+ elementsChange;
97
+ constructor(appStateChange, elementsChange) {
98
+ this.appStateChange = appStateChange;
99
+ this.elementsChange = elementsChange;
100
+ }
101
+ static create(appStateChange, elementsChange) {
102
+ return new HistoryEntry(appStateChange, elementsChange);
103
+ }
104
+ inverse() {
105
+ return new HistoryEntry(this.appStateChange.inverse(), this.elementsChange.inverse());
106
+ }
107
+ applyTo(elements, appState, snapshot) {
108
+ const [nextElements, elementsContainVisibleChange] = this.elementsChange.applyTo(elements, snapshot.elements);
109
+ const [nextAppState, appStateContainsVisibleChange] = this.appStateChange.applyTo(appState, nextElements);
110
+ const appliedVisibleChanges = elementsContainVisibleChange || appStateContainsVisibleChange;
111
+ return [nextElements, nextAppState, appliedVisibleChanges];
166
112
  }
167
113
  /**
168
- * Updates history's `lastEntry` to latest app state. This is necessary
169
- * when doing undo/redo which itself doesn't commit to history, but updates
170
- * app state in a way that would break `shouldCreateEntry` which relies on
171
- * `lastEntry` to reflect last comittable history state.
172
- * We can't update `lastEntry` from within history when calling undo/redo
173
- * because the action potentially mutates appState/elements before storing
174
- * it.
114
+ * Apply latest (remote) changes to the history entry, creates new instance of `HistoryEntry`.
175
115
  */
176
- setCurrentState(appState, elements) {
177
- this.lastEntry = this.hydrateHistoryEntry(this.generateEntry(appState, elements));
116
+ applyLatestChanges(elements) {
117
+ const updatedElementsChange = this.elementsChange.applyLatestChanges(elements);
118
+ return HistoryEntry.create(this.appStateChange, updatedElementsChange);
178
119
  }
179
- // Suspicious that this is called so many places. Seems error-prone.
180
- resumeRecording() {
181
- this.recording = true;
182
- }
183
- record(state, elements) {
184
- if (this.recording) {
185
- this.pushEntry(state, elements);
186
- this.recording = false;
187
- }
120
+ isEmpty() {
121
+ return this.appStateChange.isEmpty() && this.elementsChange.isEmpty();
188
122
  }
189
123
  }
190
- export default History;
@@ -0,0 +1,2 @@
1
+ import type { Emitter } from "../emitter";
2
+ export declare const useEmitter: <TEvent extends unknown>(emitter: Emitter<[TEvent]>, initialState: TEvent) => TEvent;
@@ -0,0 +1,13 @@
1
+ import { useEffect, useState } from "react";
2
+ export const useEmitter = (emitter, initialState) => {
3
+ const [event, setEvent] = useState(initialState);
4
+ useEffect(() => {
5
+ const unsubscribe = emitter.on((event) => {
6
+ setEvent(event);
7
+ });
8
+ return () => {
9
+ unsubscribe();
10
+ };
11
+ }, [emitter]);
12
+ return event;
13
+ };
@@ -1,4 +1,4 @@
1
- import { LibraryItem } from "../types";
1
+ import type { LibraryItem } from "../types";
2
2
  export type SvgCache = Map<LibraryItem["id"], SVGSVGElement>;
3
3
  export declare const libraryItemSvgsCache: import("jotai").PrimitiveAtom<SvgCache> & {
4
4
  init: SvgCache;
@@ -1,5 +1,5 @@
1
1
  import fallbackLangData from "./locales/en.json";
2
- import { NestedKeyOf } from "./utility-types";
2
+ import type { NestedKeyOf } from "./utility-types";
3
3
  export interface Language {
4
4
  code: string;
5
5
  label: string;
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import "./css/app.scss";
3
3
  import "./css/styles.scss";
4
4
  import "../../public/fonts/fonts.css";
5
- import { ExcalidrawProps } from "./types";
5
+ import type { ExcalidrawProps } from "./types";
6
6
  import Footer from "./components/footer/FooterCenter";
7
7
  import MainMenu from "./components/main-menu/MainMenu";
8
8
  import WelcomeScreen from "./components/welcome-screen/WelcomeScreen";
@@ -11,6 +11,7 @@ export declare const Excalidraw: React.MemoExoticComponent<(props: ExcalidrawPro
11
11
  export { getSceneVersion, hashElementsVersion, hashString, isInvisiblySmallElement, getNonDeletedElements, } from "./element";
12
12
  export { defaultLang, useI18n, languages } from "./i18n";
13
13
  export { restore, restoreAppState, restoreElements, restoreLibraryItems, } from "./data/restore";
14
+ export { reconcileElements } from "./data/reconcile";
14
15
  export { exportToBlob, exportToSvg, exportToClipboard } from "../utils/export";
15
16
  export { serializeAsJSON, serializeLibraryAsJSON } from "./data/json";
16
17
  export { loadFromBlob, loadSceneOrLibraryFromBlob, loadLibraryFromBlob, } from "./data/blob";
@@ -19,6 +20,7 @@ export { mergeLibraryItems, getLibraryItemsHash } from "./data/library";
19
20
  export { isLinearElement } from "./element/typeChecks";
20
21
  export { FONT_FAMILY, THEME, MIME_TYPES, ROUNDNESS, DEFAULT_LASER_COLOR, } from "./constants";
21
22
  export { mutateElement, newElementWith, bumpVersion, } from "./element/mutateElement";
23
+ export { StoreAction } from "./store";
22
24
  export { parseLibraryTokensFromUrl, useHandleLibrary } from "./data/library";
23
25
  export { sceneCoordsToViewportCoords, viewportCoordsToSceneCoords, } from "./utils";
24
26
  export { Sidebar } from "./components/Sidebar/Sidebar";
@@ -98,6 +98,7 @@ Excalidraw.displayName = "Excalidraw";
98
98
  export { getSceneVersion, hashElementsVersion, hashString, isInvisiblySmallElement, getNonDeletedElements, } from "./element";
99
99
  export { defaultLang, useI18n, languages } from "./i18n";
100
100
  export { restore, restoreAppState, restoreElements, restoreLibraryItems, } from "./data/restore";
101
+ export { reconcileElements } from "./data/reconcile";
101
102
  export { exportToBlob, exportToSvg, exportToClipboard } from "../utils/export";
102
103
  export { serializeAsJSON, serializeLibraryAsJSON } from "./data/json";
103
104
  export { loadFromBlob, loadSceneOrLibraryFromBlob, loadLibraryFromBlob, } from "./data/blob";
@@ -106,6 +107,7 @@ export { mergeLibraryItems, getLibraryItemsHash } from "./data/library";
106
107
  export { isLinearElement } from "./element/typeChecks";
107
108
  export { FONT_FAMILY, THEME, MIME_TYPES, ROUNDNESS, DEFAULT_LASER_COLOR, } from "./constants";
108
109
  export { mutateElement, newElementWith, bumpVersion, } from "./element/mutateElement";
110
+ export { StoreAction } from "./store";
109
111
  export { parseLibraryTokensFromUrl, useHandleLibrary } from "./data/library";
110
112
  export { sceneCoordsToViewportCoords, viewportCoordsToSceneCoords, } from "./utils";
111
113
  export { Sidebar } from "./components/Sidebar/Sidebar";
@@ -1,4 +1,4 @@
1
- import { PrimitiveAtom } from "jotai";
1
+ import type { PrimitiveAtom } from "jotai";
2
2
  export declare const jotaiScope: unique symbol;
3
3
  export declare const jotaiStore: {
4
4
  get: <Value>(atom: import("jotai").Atom<Value>) => Awaited<Value> | undefined;
@@ -1,5 +1,6 @@
1
- import { AnimatedTrail, Trail } from "./animated-trail";
2
- import { AnimationFrameHandler } from "./animation-frame-handler";
1
+ import type { Trail } from "./animated-trail";
2
+ import { AnimatedTrail } from "./animated-trail";
3
+ import type { AnimationFrameHandler } from "./animation-frame-handler";
3
4
  import type App from "./components/App";
4
5
  export declare class LaserTrails implements Trail {
5
6
  private animationFrameHandler;
@@ -87,7 +87,7 @@
87
87
  "group": "Group selection",
88
88
  "ungroup": "Ungroup selection",
89
89
  "collaborators": "Collaborators",
90
- "showGrid": "Show grid",
90
+ "toggleGrid": "Toggle grid",
91
91
  "addToLibrary": "Add to library",
92
92
  "removeFromLibrary": "Remove from library",
93
93
  "libraryLoadingMessage": "Loading library…",
@@ -129,7 +129,7 @@
129
129
  },
130
130
  "lineEditor": {
131
131
  "edit": "Edit line",
132
- "exit": "Exit line editor"
132
+ "editArrow": "Edit arrow"
133
133
  },
134
134
  "elementLock": {
135
135
  "lock": "Lock",
@@ -148,7 +148,9 @@
148
148
  "discordChat": "Discord chat",
149
149
  "zoomToFitViewport": "Zoom to fit in viewport",
150
150
  "zoomToFitSelection": "Zoom to fit selection",
151
- "zoomToFit": "Zoom to fit all elements"
151
+ "zoomToFit": "Zoom to fit all elements",
152
+ "installPWA": "Install Excalidraw locally (PWA)",
153
+ "autoResize": "Enable text auto-resizing"
152
154
  },
153
155
  "library": {
154
156
  "noItems": "No items added yet...",
@@ -1,5 +1,5 @@
1
- import { Point, Zoom } from "./types";
2
- import { ExcalidrawElement, ExcalidrawLinearElement, NonDeleted } from "./element/types";
1
+ import type { Point, Zoom } from "./types";
2
+ import type { ExcalidrawElement, ExcalidrawLinearElement, NonDeleted } from "./element/types";
3
3
  export declare const rotate: (x: number, y: number, cx: number, cy: number, angle: number) => [number, number];
4
4
  export declare const rotatePoint: (point: readonly [number, number], center: readonly [number, number], angle: number) => [number, number];
5
5
  export declare const adjustXYWithRotation: (sides: {
@@ -1,4 +1,4 @@
1
- import { Point } from "./types";
1
+ import type { Point } from "./types";
2
2
  export declare const getSizeFromPoints: (points: readonly Point[]) => {
3
3
  width: number;
4
4
  height: number;
@@ -1,4 +1,4 @@
1
- import { MaybePromise } from "./utility-types";
1
+ import type { MaybePromise } from "./utility-types";
2
2
  type Job<T, TArgs extends unknown[]> = (...args: TArgs) => MaybePromise<T>;
3
3
  export declare class Queue {
4
4
  private jobs;
@@ -1,5 +1,5 @@
1
- import { AppState } from "../types";
2
- import { StaticCanvasRenderConfig } from "../scene/types";
1
+ import type { AppState } from "../types";
2
+ import type { StaticCanvasRenderConfig } from "../scene/types";
3
3
  export declare const fillCircle: (context: CanvasRenderingContext2D, cx: number, cy: number, radius: number, stroke?: boolean) => void;
4
4
  export declare const getNormalizedCanvasDimensions: (canvas: HTMLCanvasElement, scale: number) => [number, number];
5
5
  export declare const bootstrapCanvas: ({ canvas, scale, normalizedWidth, normalizedHeight, theme, isExporting, canvasBackgroundColor, }: {
@@ -1,4 +1,4 @@
1
- import { InteractiveSceneRenderConfig, RenderableElementsMap } from "../scene/types";
1
+ import type { InteractiveSceneRenderConfig, RenderableElementsMap } from "../scene/types";
2
2
  /** throttled to animation framerate */
3
3
  export declare const renderInteractiveSceneThrottled: {
4
4
  (config: InteractiveSceneRenderConfig): void;
@@ -9,7 +9,7 @@ export declare const renderInteractiveSceneThrottled: {
9
9
  * Interactive scene is the ui-canvas where we render bounding boxes, selections
10
10
  * and other ui stuff.
11
11
  */
12
- export declare const renderInteractiveScene: <U extends ({ canvas, elementsMap, visibleElements, selectedElements, scale, appState, renderConfig, }: InteractiveSceneRenderConfig) => {
12
+ export declare const renderInteractiveScene: <U extends ({ canvas, elementsMap, visibleElements, selectedElements, scale, appState, renderConfig, device, }: InteractiveSceneRenderConfig) => {
13
13
  atLeastOneVisibleElement: boolean;
14
14
  elementsMap: RenderableElementsMap;
15
15
  scrollBars?: undefined;
@@ -1,14 +1,14 @@
1
- import { getElementAbsoluteCoords, OMIT_SIDES_FOR_MULTIPLE_ELEMENTS, getTransformHandlesFromCoords, getTransformHandles, getCommonBounds, } from "../element";
1
+ import { getElementAbsoluteCoords, getTransformHandlesFromCoords, getTransformHandles, getCommonBounds, } from "../element";
2
2
  import { roundRect } from "../renderer/roundRect";
3
3
  import { getScrollBars, SCROLLBAR_COLOR, SCROLLBAR_WIDTH, } from "../scene/scrollbars";
4
4
  import { renderSelectionElement } from "../renderer/renderElement";
5
5
  import { getClientColor, renderRemoteCursors } from "../clients";
6
6
  import { isSelectedViaGroup, getSelectedGroupIds, getElementsInGroup, selectGroupsFromGivenElements, } from "../groups";
7
- import { OMIT_SIDES_FOR_FRAME, shouldShowBoundingBox, } from "../element/transformHandles";
7
+ import { getOmitSidesForDevice, shouldShowBoundingBox, } from "../element/transformHandles";
8
8
  import { arrayToMap, throttleRAF } from "../utils";
9
9
  import { DEFAULT_TRANSFORM_HANDLE_SPACING, FRAME_STYLE } from "../constants";
10
10
  import { renderSnaps } from "../renderer/renderSnaps";
11
- import { maxBindingGap } from "../element/collision";
11
+ import { maxBindingGap } from "../element/binding";
12
12
  import { LinearElementEditor } from "../element/linearElementEditor";
13
13
  import { bootstrapCanvas, fillCircle, getNormalizedCanvasDimensions, } from "./helpers";
14
14
  import oc from "open-color";
@@ -264,7 +264,7 @@ const renderTransformHandles = (context, renderConfig, appState, transformHandle
264
264
  }
265
265
  });
266
266
  };
267
- const _renderInteractiveScene = ({ canvas, elementsMap, visibleElements, selectedElements, scale, appState, renderConfig, }) => {
267
+ const _renderInteractiveScene = ({ canvas, elementsMap, visibleElements, selectedElements, scale, appState, renderConfig, device, }) => {
268
268
  if (canvas === null) {
269
269
  return { atLeastOneVisibleElement: false, elementsMap };
270
270
  }
@@ -403,7 +403,8 @@ const _renderInteractiveScene = ({ canvas, elementsMap, visibleElements, selecte
403
403
  context.translate(appState.scrollX, appState.scrollY);
404
404
  if (selectedElements.length === 1) {
405
405
  context.fillStyle = oc.white;
406
- const transformHandles = getTransformHandles(selectedElements[0], appState.zoom, elementsMap, "mouse");
406
+ const transformHandles = getTransformHandles(selectedElements[0], appState.zoom, elementsMap, "mouse", // when we render we don't know which pointer type so use mouse,
407
+ getOmitSidesForDevice(device));
407
408
  if (!appState.viewModeEnabled && showBoundingBox) {
408
409
  renderTransformHandles(context, renderConfig, appState, transformHandles, selectedElements[0].angle);
409
410
  }
@@ -421,8 +422,8 @@ const _renderInteractiveScene = ({ canvas, elementsMap, visibleElements, selecte
421
422
  context.lineWidth = lineWidth;
422
423
  context.setLineDash(initialLineDash);
423
424
  const transformHandles = getTransformHandlesFromCoords([x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2], 0, appState.zoom, "mouse", isFrameSelected
424
- ? OMIT_SIDES_FOR_FRAME
425
- : OMIT_SIDES_FOR_MULTIPLE_ELEMENTS);
425
+ ? { ...getOmitSidesForDevice(device), rotation: true }
426
+ : getOmitSidesForDevice(device));
426
427
  if (selectedElements.some((element) => !element.locked)) {
427
428
  renderTransformHandles(context, renderConfig, appState, transformHandles, 0);
428
429
  }
@@ -1,7 +1,7 @@
1
- import { ExcalidrawElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, ExcalidrawFreeDrawElement, ExcalidrawFrameLikeElement, NonDeletedSceneElementsMap } from "../element/types";
1
+ import type { ExcalidrawElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, ExcalidrawFreeDrawElement, ExcalidrawFrameLikeElement, NonDeletedSceneElementsMap } from "../element/types";
2
2
  import type { RoughCanvas } from "roughjs/bin/canvas";
3
- import { StaticCanvasRenderConfig, RenderableElementsMap } from "../scene/types";
4
- import { AppState, StaticCanvasAppState, InteractiveCanvasAppState, ElementsPendingErasure } from "../types";
3
+ import type { StaticCanvasRenderConfig, RenderableElementsMap } from "../scene/types";
4
+ import type { AppState, StaticCanvasAppState, InteractiveCanvasAppState, ElementsPendingErasure } from "../types";
5
5
  export declare const IMAGE_INVERT_FILTER = "invert(100%) hue-rotate(180deg) saturate(1.25)";
6
6
  export declare const getRenderOpacity: (element: ExcalidrawElement, containingFrame: ExcalidrawFrameLikeElement | null, elementsPendingErasure: ElementsPendingErasure) => number;
7
7
  export interface ExcalidrawElementWithCanvas {
@@ -119,7 +119,7 @@ const IMAGE_PLACEHOLDER_IMG = document.createElement("img");
119
119
  IMAGE_PLACEHOLDER_IMG.src = `data:${MIME_TYPES.svg},${encodeURIComponent(`<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="image" class="svg-inline--fa fa-image fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#888" d="M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"></path></svg>`)}`;
120
120
  const IMAGE_ERROR_PLACEHOLDER_IMG = document.createElement("img");
121
121
  IMAGE_ERROR_PLACEHOLDER_IMG.src = `data:${MIME_TYPES.svg},${encodeURIComponent(`<svg viewBox="0 0 668 668" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48ZM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56ZM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48Z" style="fill:#888;fill-rule:nonzero" transform="matrix(.81709 0 0 .81709 124.825 145.825)"/><path d="M256 8C119.034 8 8 119.033 8 256c0 136.967 111.034 248 248 248s248-111.034 248-248S392.967 8 256 8Zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676ZM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676Z" style="fill:#888;fill-rule:nonzero" transform="matrix(.30366 0 0 .30366 506.822 60.065)"/></svg>`)}`;
122
- const drawImagePlaceholder = (element, context, zoomValue) => {
122
+ const drawImagePlaceholder = (element, context) => {
123
123
  context.fillStyle = "#E7E7E7";
124
124
  context.fillRect(0, 0, element.width, element.height);
125
125
  const imageMinWidthOrHeight = Math.min(element.width, element.height);
@@ -176,7 +176,7 @@ const drawElementOnCanvas = (element, rc, context, renderConfig, appState) => {
176
176
  context.drawImage(img, 0 /* hardcoded for the selection box*/, 0, element.width, element.height);
177
177
  }
178
178
  else {
179
- drawImagePlaceholder(element, context, appState.zoom.value);
179
+ drawImagePlaceholder(element, context);
180
180
  }
181
181
  break;
182
182
  }
@@ -1,2 +1,2 @@
1
- import { InteractiveCanvasAppState } from "../types";
1
+ import type { InteractiveCanvasAppState } from "../types";
2
2
  export declare const renderSnaps: (context: CanvasRenderingContext2D, appState: InteractiveCanvasAppState) => void;
@@ -1,4 +1,4 @@
1
- import { StaticSceneRenderConfig } from "../scene/types";
1
+ import type { StaticSceneRenderConfig } from "../scene/types";
2
2
  /** throttled to animation framerate */
3
3
  export declare const renderStaticSceneThrottled: {
4
4
  (config: StaticSceneRenderConfig): void;
@@ -1,12 +1,13 @@
1
1
  import { FRAME_STYLE } from "../constants";
2
2
  import { getElementAbsoluteCoords } from "../element";
3
3
  import { elementOverlapsWithFrame, getTargetFrame, isElementInFrame, } from "../frame";
4
- import { isEmbeddableElement, isIframeLikeElement, } from "../element/typeChecks";
4
+ import { isEmbeddableElement, isIframeLikeElement, isTextElement, } from "../element/typeChecks";
5
5
  import { renderElement } from "../renderer/renderElement";
6
6
  import { createPlaceholderEmbeddableLabel } from "../element/embeddable";
7
7
  import { EXTERNAL_LINK_IMG, getLinkHandleFromCoords, } from "../components/hyperlink/helpers";
8
8
  import { bootstrapCanvas, getNormalizedCanvasDimensions } from "./helpers";
9
9
  import { throttleRAF } from "../utils";
10
+ import { getBoundTextElement } from "../element/textElement";
10
11
  const strokeGrid = (context, gridSize, scrollX, scrollY, zoom, width, height) => {
11
12
  const BOLD_LINE_FREQUENCY = 5;
12
13
  const GridLineColor = {
@@ -120,21 +121,31 @@ const _renderStaticScene = ({ canvas, rc, elementsMap, allElementsMap, visibleEl
120
121
  .forEach((element) => {
121
122
  try {
122
123
  const frameId = element.frameId || appState.frameToHighlight?.id;
124
+ if (isTextElement(element) &&
125
+ element.containerId &&
126
+ elementsMap.has(element.containerId)) {
127
+ // will be rendered with the container
128
+ return;
129
+ }
130
+ context.save();
123
131
  if (frameId &&
124
132
  appState.frameRendering.enabled &&
125
133
  appState.frameRendering.clip) {
126
- context.save();
127
134
  const frame = getTargetFrame(element, elementsMap, appState);
128
135
  // TODO do we need to check isElementInFrame here?
129
136
  if (frame && isElementInFrame(element, elementsMap, appState)) {
130
137
  frameClip(frame, context, renderConfig, appState);
131
138
  }
132
139
  renderElement(element, elementsMap, allElementsMap, rc, context, renderConfig, appState);
133
- context.restore();
134
140
  }
135
141
  else {
136
142
  renderElement(element, elementsMap, allElementsMap, rc, context, renderConfig, appState);
137
143
  }
144
+ const boundTextElement = getBoundTextElement(element, elementsMap);
145
+ if (boundTextElement) {
146
+ renderElement(boundTextElement, elementsMap, allElementsMap, rc, context, renderConfig, appState);
147
+ }
148
+ context.restore();
138
149
  if (!isExporting) {
139
150
  renderLinkIcon(element, context, appState, elementsMap);
140
151
  }
@@ -1,5 +1,5 @@
1
- import { RoughSVG } from "roughjs/bin/svg";
2
- import { NonDeletedExcalidrawElement } from "../element/types";
3
- import { RenderableElementsMap, SVGRenderConfig } from "../scene/types";
4
- import { BinaryFiles } from "../types";
1
+ import type { RoughSVG } from "roughjs/bin/svg";
2
+ import type { NonDeletedExcalidrawElement } from "../element/types";
3
+ import type { RenderableElementsMap, SVGRenderConfig } from "../scene/types";
4
+ import type { BinaryFiles } from "../types";
5
5
  export declare const renderSceneToSvg: (elements: readonly NonDeletedExcalidrawElement[], elementsMap: RenderableElementsMap, rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, renderConfig: SVGRenderConfig) => void;