@dwelle/excalidraw 0.5.0-3bc80da → 0.5.0-3f1f8dd
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.
- package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-AV5QRETN.js → blockDiagram-91b80b7a-ILS6OLW7.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-76KP7R2J.js → c4Diagram-b2a90758-ZOMIZS7C.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-VC5KAH7K.js → chunk-2NKYQ7YO.js} +7 -7
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-5A2HLTCS.js → chunk-6MVAKZD7.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-ETW42MP7.js → chunk-A3JTYPH7.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-72BUNPBM.js → chunk-BUWJGA2Q.js} +1814 -1411
- package/dist/browser/dev/excalidraw-assets-dev/chunk-BUWJGA2Q.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-LQ6UJQPH.js → chunk-F3FIDJD4.js} +38 -16
- package/dist/browser/dev/excalidraw-assets-dev/chunk-F3FIDJD4.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-EGR52Q6D.js → chunk-FPTNVFSO.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-NZKR3TXM.js → chunk-HPTO4BUO.js} +28 -28
- package/dist/browser/dev/excalidraw-assets-dev/chunk-HPTO4BUO.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-RT5XHPGC.js → chunk-JAMLJD7O.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-7V2SB4RU.js → chunk-LOACNU4P.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-RC7ANJ5H.js → chunk-QGBZMLTJ.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-BHIY32T7.js → chunk-RLV4E4WN.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-ASZRDHCI.js → chunk-SHPKYTPS.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-ADIHRQXG.js → chunk-WYUX2CK4.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-LSPV6OUU.js → chunk-YAYXS7DC.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-AKQDHN2W.js → chunk-YGAE3YWH.js} +5 -3
- package/dist/browser/dev/excalidraw-assets-dev/chunk-YGAE3YWH.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-KKFMJDII.js → classDiagram-30eddba6-YGYWOEDS.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-H6OLRXIM.js → classDiagram-v2-f2df5561-4ZZOSFAG.js} +9 -9
- package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-JDTB6SPR.js → directory-open-01563666-QTUC5QKS.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-JL7GGNMJ.js → directory-open-4ed118d0-EAOFXSXO.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/dist-V4ZSY6BC.js +10 -0
- package/dist/browser/dev/excalidraw-assets-dev/{en-PSBMWL4S.js → en-RSUSLGPV.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-N5L7DKGN.js → erDiagram-47591fe2-JIHVWX3W.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-YDSARWPZ.js → file-open-002ab408-UPAWPTEF.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-EROXTFSX.js → file-open-7c801643-N5N32MHQ.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-TL6V2OEY.js → file-save-3189631c-PRH4NPQ5.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-6WWZFABL.js → file-save-745eba88-5GM4HHWQ.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-VRM36QCA.js → flowDiagram-5540d9b9-6CLLUMWF.js} +10 -10
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-3CAUSA7W.js → flowDiagram-v2-3b53844e-NBMLQH3M.js} +10 -10
- package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-ODK3QXSV.js → flowchart-elk-definition-5fe447d6-UEQSCXLT.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-KKXGBNQI.js → ganttDiagram-9a3bba1f-WK2H7LFS.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-TMH7E2V3.js → gitGraphDiagram-96e6b4ee-KDAA2U2K.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{image-DTHOT6RB.js → image-IPNHMJTL.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{image-FDQLNM24.css → image-JYKIJPJC.css} +11 -14
- package/dist/browser/dev/excalidraw-assets-dev/image-JYKIJPJC.css.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-COPHY4CW.js → image-blob-reduce.esm-LQUP674P.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-VF34AT6C.js → infoDiagram-bcd20f53-JHVEGFM5.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-I4SJ2IBL.js → journeyDiagram-4fe6b3dc-LELHHHNL.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{katex-SVKNABMQ.js → katex-24LMEI2S.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-PZW6XTRC.js → mindmap-definition-f354de21-EIYHHYCX.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{pica-KKOK34SZ.js → pica-AEP6VYOH.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-JATUFGKC.js → pieDiagram-79897490-LKE2EHUL.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-V5FY6DEM.js → quadrantDiagram-62f64e94-HZHJFQUT.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZHT5V47S.js → requirementDiagram-05bf5f74-FXXIEN7J.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{roundRect-ZX3RASBO.js → roundRect-5PHKZGUZ.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-ELYQDLSC.js → sankeyDiagram-97764748-KKTB5UYB.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-GEO2ZAH2.js → sequenceDiagram-acc0e65c-KPIADG32.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-BLHQKXOS.js → stateDiagram-0ff1cf1a-IQUWRAPJ.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-XFLTR7I5.js → stateDiagram-v2-9a9d610d-3OAKVFDX.js} +9 -9
- package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-6DNHPFX5.js → timeline-definition-fea2a41d-TRDW4746.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-4S5CTHTW.js → xychartDiagram-ab372869-IMLIZWMU.js} +4 -4
- package/dist/browser/dev/index.css +10 -13
- package/dist/browser/dev/index.css.map +2 -2
- package/dist/browser/dev/index.js +5 -5
- package/dist/browser/prod/excalidraw-assets/{blockDiagram-91b80b7a-JEM7KGWA.js → blockDiagram-91b80b7a-U252OY5I.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{c4Diagram-b2a90758-MPCOLKKP.js → c4Diagram-b2a90758-PZHH3D6H.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-U2OTJT7X.js → chunk-2Q2CONEB.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-6AI4F5QL.js → chunk-673OVD3J.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-OVXHC22A.js → chunk-6WNOLTTI.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-HSQV5QPE.js → chunk-74OJXQQW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-6EO6NUHK.js → chunk-AFIKGZ5K.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-722XS4R3.js → chunk-BEIT5EF6.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-7P65EP4L.js → chunk-BZSIRHFI.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/chunk-DIQBR7TD.js +7 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-VVPLNHF7.js → chunk-EHJPIGV7.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-JVAZGNHG.js → chunk-JP7OGUWY.js} +21 -21
- package/dist/browser/prod/excalidraw-assets/{chunk-Y5GBBDDT.js → chunk-LJU3KBAH.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/chunk-MZQB665Y.js +335 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-VMMEDW7P.js → chunk-NN5GPCYQ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-ICDT7GZX.js → chunk-PLOZZA4H.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-BJTCWAK5.js → chunk-SCZE4QLN.js} +2 -2
- package/dist/browser/prod/excalidraw-assets/{chunk-Q6QP4TRB.js → chunk-VVOVJRKV.js} +2 -2
- package/dist/browser/prod/excalidraw-assets/{classDiagram-30eddba6-L5O4YQR4.js → classDiagram-30eddba6-F55Z2E53.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{classDiagram-v2-f2df5561-FEFNEE7Y.js → classDiagram-v2-f2df5561-BT5JNEDE.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{directory-open-01563666-AYWCK7BJ.js → directory-open-01563666-6YO3OQDX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{directory-open-4ed118d0-QI47HV3G.js → directory-open-4ed118d0-4LV3RSSM.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/dist-4LC2UFYB.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{en-MPFDZHEH.js → en-GM5O55AO-LNPCBS7J.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{en-Q552WR7L-QAV42NF3.js → en-SOC7FEW5.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{erDiagram-47591fe2-BI5PYUZN.js → erDiagram-47591fe2-XG2ZEMCB.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-open-002ab408-55ZWRNMG.js → file-open-002ab408-A6LI262V.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-open-7c801643-HBAOEEFX.js → file-open-7c801643-BBGJO4PI.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-save-3189631c-FJ75SUZ7.js → file-save-3189631c-7RDEYICA.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{file-save-745eba88-RAVXYEAW.js → file-save-745eba88-4PPFVJWD.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{flowDiagram-5540d9b9-CYU56524.js → flowDiagram-5540d9b9-2SENIXRT.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-3b53844e-KLBTW5WV.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{flowchart-elk-definition-5fe447d6-PECNKVTE.js → flowchart-elk-definition-5fe447d6-TLXFCSNW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{ganttDiagram-9a3bba1f-CED7COSZ.js → ganttDiagram-9a3bba1f-5JR6PUBI.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{gitGraphDiagram-96e6b4ee-JKIKIQ6K.js → gitGraphDiagram-96e6b4ee-6A6CZ3PI.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/image-MFUVVFOH.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{image-blob-reduce.esm-JZQK2EOW.js → image-blob-reduce.esm-MLHV7PI7.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{infoDiagram-bcd20f53-FN22PGWX.js → infoDiagram-bcd20f53-AV3OBV2N.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{journeyDiagram-4fe6b3dc-4YOSXQFH.js → journeyDiagram-4fe6b3dc-BLHDTOGZ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{katex-VZTZSNIY.js → katex-WDF2YXSQ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{mindmap-definition-f354de21-F3HVRHRH.js → mindmap-definition-f354de21-ZETPFZUU.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{pica-UIPUQYNH.js → pica-EKWSA7DQ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{pieDiagram-79897490-2EPJDOIF.js → pieDiagram-79897490-YIGOGIGU.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{quadrantDiagram-62f64e94-DOUD6GJY.js → quadrantDiagram-62f64e94-PKU6OGXK.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{requirementDiagram-05bf5f74-6SN5DKRA.js → requirementDiagram-05bf5f74-ZS6DWQXC.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{roundRect-KPNU7DEE.js → roundRect-LMXTT73M.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{sankeyDiagram-97764748-UWC7MPXQ.js → sankeyDiagram-97764748-BAQTPNXW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{sequenceDiagram-acc0e65c-F6IOZYAD.js → sequenceDiagram-acc0e65c-ZGG6MEZO.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-0ff1cf1a-BFMFLWOS.js → stateDiagram-0ff1cf1a-FF7QI5F7.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-v2-9a9d610d-5VQQPAQD.js → stateDiagram-v2-9a9d610d-K3KQFXGQ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{timeline-definition-fea2a41d-7E3BGOKT.js → timeline-definition-fea2a41d-2A5Y4OLK.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{xychartDiagram-ab372869-THLWKJ2H.js → xychartDiagram-ab372869-RKDU5XOA.js} +1 -1
- package/dist/browser/prod/index.css +1 -1
- package/dist/browser/prod/index.js +15 -15
- package/dist/{prod/en-Q552WR7L.json → dev/en-GM5O55AO.json} +4 -2
- package/dist/dev/index.css +10 -13
- package/dist/dev/index.css.map +2 -2
- package/dist/dev/index.js +1606 -1192
- package/dist/dev/index.js.map +4 -4
- package/dist/excalidraw/actions/actionAddToLibrary.d.ts +3 -3
- package/dist/excalidraw/actions/actionAlign.d.ts +8 -8
- package/dist/excalidraw/actions/actionBoundText.d.ts +6 -6
- package/dist/excalidraw/actions/actionBoundText.js +3 -1
- package/dist/excalidraw/actions/actionCanvas.d.ts +16 -16
- package/dist/excalidraw/actions/actionClipboard.d.ts +12 -12
- package/dist/excalidraw/actions/actionDeleteSelected.d.ts +5 -5
- package/dist/excalidraw/actions/actionDistribute.d.ts +4 -4
- package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +3 -3
- package/dist/excalidraw/actions/actionElementLock.d.ts +3 -3
- package/dist/excalidraw/actions/actionExport.d.ts +12 -12
- package/dist/excalidraw/actions/actionFinalize.d.ts +3 -3
- package/dist/excalidraw/actions/actionFlip.d.ts +4 -4
- package/dist/excalidraw/actions/actionFlip.js +6 -7
- package/dist/excalidraw/actions/actionFrame.d.ts +314 -6
- package/dist/excalidraw/actions/actionGroup.d.ts +314 -4
- package/dist/excalidraw/actions/actionHistory.d.ts +3 -3
- package/dist/excalidraw/actions/actionHistory.js +4 -4
- package/dist/excalidraw/actions/actionLinearEditor.d.ts +5 -3
- package/dist/excalidraw/actions/actionLinearEditor.js +19 -4
- package/dist/excalidraw/actions/actionLink.d.ts +1 -1
- package/dist/excalidraw/actions/actionMenu.d.ts +3 -3
- package/dist/excalidraw/actions/actionNavigate.d.ts +3 -3
- package/dist/excalidraw/actions/actionProperties.d.ts +15 -15
- package/dist/excalidraw/actions/actionProperties.js +1 -1
- package/dist/excalidraw/actions/actionSelectAll.d.ts +2 -2
- package/dist/excalidraw/actions/actionStyles.d.ts +5 -2
- package/dist/excalidraw/actions/actionTextAutoResize.d.ts +17 -0
- package/dist/excalidraw/actions/actionTextAutoResize.js +38 -0
- package/dist/excalidraw/actions/actionToggleGridMode.d.ts +2 -2
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +1 -1
- package/dist/excalidraw/actions/actionToggleStats.d.ts +1 -1
- package/dist/excalidraw/actions/actionToggleViewMode.d.ts +1 -1
- package/dist/excalidraw/actions/actionToggleZenMode.d.ts +1 -1
- package/dist/excalidraw/actions/actionZindex.d.ts +8 -4
- package/dist/excalidraw/actions/actionZindex.js +4 -0
- package/dist/excalidraw/actions/manager.d.ts +3 -3
- package/dist/excalidraw/actions/register.d.ts +1 -1
- package/dist/excalidraw/actions/shortcuts.d.ts +2 -2
- package/dist/excalidraw/actions/types.d.ts +6 -6
- package/dist/excalidraw/align.d.ts +1 -1
- package/dist/excalidraw/animated-trail.d.ts +2 -2
- package/dist/excalidraw/appState.d.ts +1 -1
- package/dist/excalidraw/change.d.ts +4 -4
- package/dist/excalidraw/change.js +14 -7
- package/dist/excalidraw/charts.d.ts +1 -1
- package/dist/excalidraw/clients.d.ts +2 -2
- package/dist/excalidraw/clients.js +1 -1
- package/dist/excalidraw/clipboard.d.ts +3 -3
- package/dist/excalidraw/colors.d.ts +1 -1
- package/dist/excalidraw/components/Actions.d.ts +3 -3
- package/dist/excalidraw/components/Actions.js +9 -6
- package/dist/excalidraw/components/App.d.ts +10 -11
- package/dist/excalidraw/components/App.js +187 -95
- package/dist/excalidraw/components/ButtonIconSelect.js +1 -1
- package/dist/excalidraw/components/CheckboxItem.js +1 -1
- package/dist/excalidraw/components/ColorPicker/ColorInput.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/ColorInput.js +1 -1
- package/dist/excalidraw/components/ColorPicker/ColorPicker.d.ts +4 -4
- package/dist/excalidraw/components/ColorPicker/ColorPicker.js +1 -1
- package/dist/excalidraw/components/ColorPicker/Picker.d.ts +3 -3
- package/dist/excalidraw/components/ColorPicker/PickerColorList.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/PickerHeading.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/ShadeList.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/TopPicks.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +2 -2
- package/dist/excalidraw/components/ColorPicker/colorPickerUtils.js +1 -1
- package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -2
- package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.js +1 -1
- package/dist/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -1
- package/dist/excalidraw/components/CommandPalette/CommandPalette.js +5 -5
- package/dist/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -1
- package/dist/excalidraw/components/CommandPalette/types.d.ts +3 -3
- package/dist/excalidraw/components/ConfirmDialog.d.ts +1 -1
- package/dist/excalidraw/components/ContextMenu.d.ts +2 -2
- package/dist/excalidraw/components/ContextMenu.js +2 -2
- package/dist/excalidraw/components/DarkModeToggle.d.ts +1 -1
- package/dist/excalidraw/components/DefaultSidebar.d.ts +2 -2
- package/dist/excalidraw/components/Dialog.js +1 -1
- package/dist/excalidraw/components/DialogActionButton.d.ts +1 -1
- package/dist/excalidraw/components/EyeDropper.d.ts +2 -2
- package/dist/excalidraw/components/FollowMode/FollowMode.d.ts +1 -1
- package/dist/excalidraw/components/FollowMode/FollowMode.js +1 -1
- package/dist/excalidraw/components/HintViewer.d.ts +1 -1
- package/dist/excalidraw/components/IconPicker.js +2 -2
- package/dist/excalidraw/components/ImageExportDialog.d.ts +1 -1
- package/dist/excalidraw/components/InitializeApp.d.ts +2 -2
- package/dist/excalidraw/components/JSONExportDialog.d.ts +3 -3
- package/dist/excalidraw/components/LayerUI.d.ts +4 -4
- package/dist/excalidraw/components/LayerUI.js +2 -2
- package/dist/excalidraw/components/LibraryMenu.d.ts +2 -2
- package/dist/excalidraw/components/LibraryMenuBrowseButton.d.ts +1 -1
- package/dist/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
- package/dist/excalidraw/components/LibraryMenuHeaderContent.d.ts +2 -2
- package/dist/excalidraw/components/LibraryMenuItems.d.ts +1 -1
- package/dist/excalidraw/components/LibraryMenuSection.d.ts +5 -4
- package/dist/excalidraw/components/LibraryUnit.d.ts +2 -2
- package/dist/excalidraw/components/LoadingMessage.d.ts +1 -1
- package/dist/excalidraw/components/MagicSettings.js +2 -2
- package/dist/excalidraw/components/MobileMenu.d.ts +3 -3
- package/dist/excalidraw/components/MobileMenu.js +1 -1
- package/dist/excalidraw/components/Modal.d.ts +1 -1
- package/dist/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
- package/dist/excalidraw/components/PasteChartDialog.d.ts +1 -1
- package/dist/excalidraw/components/PasteChartDialog.js +1 -1
- package/dist/excalidraw/components/PublishLibrary.d.ts +1 -1
- package/dist/excalidraw/components/SVGLayer.d.ts +1 -1
- package/dist/excalidraw/components/Sidebar/Sidebar.d.ts +2 -2
- package/dist/excalidraw/components/Sidebar/Sidebar.js +1 -1
- package/dist/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -1
- package/dist/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -1
- package/dist/excalidraw/components/Sidebar/SidebarTrigger.d.ts +1 -1
- package/dist/excalidraw/components/Sidebar/common.d.ts +1 -1
- package/dist/excalidraw/components/Stack.d.ts +2 -2
- package/dist/excalidraw/components/Stats.d.ts +2 -2
- package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialog.js +2 -2
- package/dist/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogPanels.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogTabs.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/common.d.ts +4 -4
- package/dist/excalidraw/components/TextField.d.ts +1 -1
- package/dist/excalidraw/components/Toast.d.ts +1 -1
- package/dist/excalidraw/components/ToolButton.d.ts +3 -2
- package/dist/excalidraw/components/Trans.d.ts +1 -1
- package/dist/excalidraw/components/UserList.d.ts +1 -1
- package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +5 -3
- package/dist/excalidraw/components/canvases/InteractiveCanvas.js +5 -2
- package/dist/excalidraw/components/canvases/StaticCanvas.d.ts +2 -2
- package/dist/excalidraw/components/canvases/StaticCanvas.js +2 -2
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItem.js +2 -2
- package/dist/excalidraw/components/footer/Footer.d.ts +2 -2
- package/dist/excalidraw/components/hyperlink/Hyperlink.d.ts +2 -2
- package/dist/excalidraw/components/hyperlink/helpers.d.ts +3 -3
- package/dist/excalidraw/components/icons.d.ts +3 -2
- package/dist/excalidraw/components/icons.js +19 -6
- package/dist/excalidraw/constants.d.ts +5 -2
- package/dist/excalidraw/constants.js +10 -0
- package/dist/excalidraw/context/ui-appState.d.ts +1 -1
- package/dist/excalidraw/cursor.d.ts +1 -1
- package/dist/excalidraw/data/EditorLocalStorage.d.ts +2 -2
- package/dist/excalidraw/data/blob.d.ts +5 -5
- package/dist/excalidraw/data/filesystem.d.ts +2 -1
- package/dist/excalidraw/data/index.d.ts +4 -4
- package/dist/excalidraw/data/json.d.ts +3 -3
- package/dist/excalidraw/data/library.d.ts +3 -3
- package/dist/excalidraw/data/magic.d.ts +3 -3
- package/dist/excalidraw/data/reconcile.d.ts +3 -3
- package/dist/excalidraw/data/resave.d.ts +2 -2
- package/dist/excalidraw/data/resave.js +1 -1
- package/dist/excalidraw/data/restore.d.ts +3 -3
- package/dist/excalidraw/data/restore.js +3 -0
- package/dist/excalidraw/data/transform.d.ts +3 -3
- package/dist/excalidraw/data/types.d.ts +3 -3
- package/dist/excalidraw/element/ElementCanvasButtons.d.ts +1 -1
- package/dist/excalidraw/element/binding.d.ts +5 -19
- package/dist/excalidraw/element/binding.js +109 -90
- package/dist/excalidraw/element/bounds.d.ts +3 -3
- package/dist/excalidraw/element/collision.d.ts +3 -3
- package/dist/excalidraw/element/collision.js +1 -1
- package/dist/excalidraw/element/containerCache.d.ts +1 -1
- package/dist/excalidraw/element/dragElements.d.ts +4 -4
- package/dist/excalidraw/element/dragElements.js +27 -3
- package/dist/excalidraw/element/embeddable.d.ts +4 -4
- package/dist/excalidraw/element/image.d.ts +2 -2
- package/dist/excalidraw/element/index.d.ts +2 -2
- package/dist/excalidraw/element/index.js +1 -1
- package/dist/excalidraw/element/linearElementEditor.d.ts +4 -4
- package/dist/excalidraw/element/mutateElement.d.ts +3 -3
- package/dist/excalidraw/element/mutateElement.js +5 -3
- package/dist/excalidraw/element/newElement.d.ts +5 -8
- package/dist/excalidraw/element/newElement.js +16 -14
- package/dist/excalidraw/element/resizeElements.d.ts +4 -4
- package/dist/excalidraw/element/resizeElements.js +172 -96
- package/dist/excalidraw/element/resizeTest.d.ts +7 -7
- package/dist/excalidraw/element/resizeTest.js +53 -8
- package/dist/excalidraw/element/showSelectedShapeActions.d.ts +2 -2
- package/dist/excalidraw/element/sizeHelpers.d.ts +2 -2
- package/dist/excalidraw/element/sortElements.d.ts +1 -1
- package/dist/excalidraw/element/textElement.d.ts +5 -4
- package/dist/excalidraw/element/textElement.js +11 -3
- package/dist/excalidraw/element/textWysiwyg.d.ts +12 -6
- package/dist/excalidraw/element/textWysiwyg.js +38 -17
- package/dist/excalidraw/element/transformHandles.d.ts +22 -4
- package/dist/excalidraw/element/transformHandles.js +22 -11
- package/dist/excalidraw/element/typeChecks.d.ts +3 -3
- package/dist/excalidraw/element/types.d.ts +11 -4
- package/dist/excalidraw/emitter.d.ts +1 -1
- package/dist/excalidraw/fractionalIndex.d.ts +1 -1
- package/dist/excalidraw/fractionalIndex.js +2 -4
- package/dist/excalidraw/frame.d.ts +3 -3
- package/dist/excalidraw/gatransforms.d.ts +1 -1
- package/dist/excalidraw/gesture.d.ts +1 -1
- package/dist/excalidraw/groups.d.ts +4 -3
- package/dist/excalidraw/groups.js +3 -0
- package/dist/excalidraw/history.d.ts +4 -4
- package/dist/excalidraw/hooks/useEmitter.d.ts +1 -1
- package/dist/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
- package/dist/excalidraw/i18n.d.ts +1 -1
- package/dist/excalidraw/index.d.ts +1 -1
- package/dist/excalidraw/jotai.d.ts +1 -1
- package/dist/excalidraw/laser-trails.d.ts +3 -2
- package/dist/excalidraw/locales/en.json +4 -2
- package/dist/excalidraw/math.d.ts +2 -2
- package/dist/excalidraw/mermaid.d.ts +2 -0
- package/dist/excalidraw/mermaid.js +28 -0
- package/dist/excalidraw/points.d.ts +1 -1
- package/dist/excalidraw/queue.d.ts +1 -1
- package/dist/excalidraw/renderer/helpers.d.ts +2 -2
- package/dist/excalidraw/renderer/interactiveScene.d.ts +2 -2
- package/dist/excalidraw/renderer/interactiveScene.js +38 -11
- package/dist/excalidraw/renderer/renderElement.d.ts +4 -4
- package/dist/excalidraw/renderer/renderElement.js +4 -4
- package/dist/excalidraw/renderer/renderSnaps.d.ts +1 -1
- package/dist/excalidraw/renderer/staticScene.d.ts +1 -1
- package/dist/excalidraw/renderer/staticSvgScene.d.ts +4 -4
- package/dist/excalidraw/scene/Fonts.d.ts +2 -4
- package/dist/excalidraw/scene/Fonts.js +6 -12
- package/dist/excalidraw/scene/Renderer.d.ts +4 -4
- package/dist/excalidraw/scene/Renderer.js +2 -3
- package/dist/excalidraw/scene/Scene.d.ts +13 -7
- package/dist/excalidraw/scene/Scene.js +14 -8
- package/dist/excalidraw/scene/Shape.d.ts +1 -1
- package/dist/excalidraw/scene/ShapeCache.d.ts +5 -4
- package/dist/excalidraw/scene/comparisons.d.ts +2 -2
- package/dist/excalidraw/scene/export.d.ts +3 -3
- package/dist/excalidraw/scene/export.js +2 -2
- package/dist/excalidraw/scene/scroll.d.ts +2 -2
- package/dist/excalidraw/scene/scrollbars.d.ts +3 -3
- package/dist/excalidraw/scene/selection.d.ts +2 -2
- package/dist/excalidraw/scene/types.d.ts +7 -5
- package/dist/excalidraw/scene/zoom.d.ts +1 -1
- package/dist/excalidraw/snapping.d.ts +4 -4
- package/dist/excalidraw/snapping.js +2 -1
- package/dist/excalidraw/store.d.ts +34 -4
- package/dist/excalidraw/store.js +27 -0
- package/dist/excalidraw/types.d.ts +18 -17
- package/dist/excalidraw/utils.d.ts +4 -4
- package/dist/excalidraw/zindex.d.ts +2 -2
- package/dist/{dev/en-Q552WR7L.json → prod/en-GM5O55AO.json} +4 -2
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +41 -41
- package/dist/utils/bbox.d.ts +2 -2
- package/dist/utils/collision.d.ts +1 -1
- package/dist/utils/export.d.ts +1 -1
- package/dist/utils/geometry/geometry.d.ts +1 -1
- package/dist/utils/geometry/shape.d.ts +1 -1
- package/dist/utils/withinBounds.d.ts +1 -1
- package/history.ts +4 -4
- package/package.json +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/chunk-72BUNPBM.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-AKQDHN2W.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-LQ6UJQPH.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-NZKR3TXM.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/dist-QD4SCHJY.js +0 -10
- package/dist/browser/dev/excalidraw-assets-dev/image-FDQLNM24.css.map +0 -7
- package/dist/browser/prod/excalidraw-assets/chunk-MJ44PPVZ.js +0 -335
- package/dist/browser/prod/excalidraw-assets/chunk-W5Q65S7S.js +0 -6
- package/dist/browser/prod/excalidraw-assets/dist-5RJKYEVC.js +0 -1
- package/dist/browser/prod/excalidraw-assets/flowDiagram-v2-3b53844e-SDQRTWTZ.js +0 -1
- package/dist/browser/prod/excalidraw-assets/image-IBX4GOPW.js +0 -1
- /package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-AV5QRETN.js.map → blockDiagram-91b80b7a-ILS6OLW7.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-76KP7R2J.js.map → c4Diagram-b2a90758-ZOMIZS7C.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-VC5KAH7K.js.map → chunk-2NKYQ7YO.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-5A2HLTCS.js.map → chunk-6MVAKZD7.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-ETW42MP7.js.map → chunk-A3JTYPH7.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-EGR52Q6D.js.map → chunk-FPTNVFSO.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-RT5XHPGC.js.map → chunk-JAMLJD7O.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-7V2SB4RU.js.map → chunk-LOACNU4P.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-RC7ANJ5H.js.map → chunk-QGBZMLTJ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-BHIY32T7.js.map → chunk-RLV4E4WN.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-ASZRDHCI.js.map → chunk-SHPKYTPS.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-ADIHRQXG.js.map → chunk-WYUX2CK4.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-LSPV6OUU.js.map → chunk-YAYXS7DC.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-KKFMJDII.js.map → classDiagram-30eddba6-YGYWOEDS.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-H6OLRXIM.js.map → classDiagram-v2-f2df5561-4ZZOSFAG.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-01563666-JDTB6SPR.js.map → directory-open-01563666-QTUC5QKS.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{directory-open-4ed118d0-JL7GGNMJ.js.map → directory-open-4ed118d0-EAOFXSXO.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{dist-QD4SCHJY.js.map → dist-V4ZSY6BC.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{en-PSBMWL4S.js.map → en-RSUSLGPV.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-N5L7DKGN.js.map → erDiagram-47591fe2-JIHVWX3W.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-open-002ab408-YDSARWPZ.js.map → file-open-002ab408-UPAWPTEF.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-open-7c801643-EROXTFSX.js.map → file-open-7c801643-N5N32MHQ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-save-3189631c-TL6V2OEY.js.map → file-save-3189631c-PRH4NPQ5.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{file-save-745eba88-6WWZFABL.js.map → file-save-745eba88-5GM4HHWQ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-VRM36QCA.js.map → flowDiagram-5540d9b9-6CLLUMWF.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-3CAUSA7W.js.map → flowDiagram-v2-3b53844e-NBMLQH3M.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-ODK3QXSV.js.map → flowchart-elk-definition-5fe447d6-UEQSCXLT.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-KKXGBNQI.js.map → ganttDiagram-9a3bba1f-WK2H7LFS.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-TMH7E2V3.js.map → gitGraphDiagram-96e6b4ee-KDAA2U2K.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-DTHOT6RB.js.map → image-IPNHMJTL.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-blob-reduce.esm-COPHY4CW.js.map → image-blob-reduce.esm-LQUP674P.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-VF34AT6C.js.map → infoDiagram-bcd20f53-JHVEGFM5.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-I4SJ2IBL.js.map → journeyDiagram-4fe6b3dc-LELHHHNL.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{katex-SVKNABMQ.js.map → katex-24LMEI2S.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-PZW6XTRC.js.map → mindmap-definition-f354de21-EIYHHYCX.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{pica-KKOK34SZ.js.map → pica-AEP6VYOH.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-JATUFGKC.js.map → pieDiagram-79897490-LKE2EHUL.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-V5FY6DEM.js.map → quadrantDiagram-62f64e94-HZHJFQUT.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZHT5V47S.js.map → requirementDiagram-05bf5f74-FXXIEN7J.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{roundRect-ZX3RASBO.js.map → roundRect-5PHKZGUZ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-ELYQDLSC.js.map → sankeyDiagram-97764748-KKTB5UYB.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-GEO2ZAH2.js.map → sequenceDiagram-acc0e65c-KPIADG32.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-BLHQKXOS.js.map → stateDiagram-0ff1cf1a-IQUWRAPJ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-XFLTR7I5.js.map → stateDiagram-v2-9a9d610d-3OAKVFDX.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-6DNHPFX5.js.map → timeline-definition-fea2a41d-TRDW4746.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-4S5CTHTW.js.map → xychartDiagram-ab372869-IMLIZWMU.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ElementConstructorOpts } from "../element/newElement";
|
|
2
|
-
import { ExcalidrawBindableElement, ExcalidrawElement, ExcalidrawFrameElement, ExcalidrawFreeDrawElement, ExcalidrawGenericElement, ExcalidrawIframeLikeElement, ExcalidrawImageElement, ExcalidrawLinearElement, ExcalidrawMagicFrameElement, ExcalidrawSelectionElement, ExcalidrawTextElement, FileId, FontFamilyValues, TextAlign, VerticalAlign } from "../element/types";
|
|
3
|
-
import { MarkOptional } from "../utility-types";
|
|
1
|
+
import type { ElementConstructorOpts } from "../element/newElement";
|
|
2
|
+
import type { ExcalidrawBindableElement, ExcalidrawElement, ExcalidrawFrameElement, ExcalidrawFreeDrawElement, ExcalidrawGenericElement, ExcalidrawIframeLikeElement, ExcalidrawImageElement, ExcalidrawLinearElement, ExcalidrawMagicFrameElement, ExcalidrawSelectionElement, ExcalidrawTextElement, FileId, FontFamilyValues, TextAlign, VerticalAlign } from "../element/types";
|
|
3
|
+
import type { MarkOptional } from "../utility-types";
|
|
4
4
|
export type ValidLinearElement = {
|
|
5
5
|
type: "arrow" | "line";
|
|
6
6
|
x: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ExcalidrawElement } from "../element/types";
|
|
2
|
-
import { AppState, BinaryFiles, LibraryItems, LibraryItems_anyVersion } from "../types";
|
|
1
|
+
import type { ExcalidrawElement } from "../element/types";
|
|
2
|
+
import type { AppState, BinaryFiles, LibraryItems, LibraryItems_anyVersion } from "../types";
|
|
3
3
|
import type { cleanAppStateForExport } from "../appState";
|
|
4
|
-
import { VERSIONS } from "../constants";
|
|
4
|
+
import type { VERSIONS } from "../constants";
|
|
5
5
|
export interface ExportedDataState {
|
|
6
6
|
type: string;
|
|
7
7
|
version: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { ElementsMap, NonDeletedExcalidrawElement } from "./types";
|
|
2
|
+
import type { ElementsMap, NonDeletedExcalidrawElement } from "./types";
|
|
3
3
|
import "./ElementCanvasButtons.scss";
|
|
4
4
|
export declare const ElementCanvasButtons: ({ children, element, elementsMap, }: {
|
|
5
5
|
children: React.ReactNode;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ElementUpdate } from "./mutateElement";
|
|
1
|
+
import type { ExcalidrawBindableElement, ExcalidrawElement, NonDeleted, ExcalidrawLinearElement, NonDeletedExcalidrawElement, ElementsMap, NonDeletedSceneElementsMap } from "./types";
|
|
2
|
+
import type { AppClassProperties, AppState } from "../types";
|
|
3
|
+
import type { ElementUpdate } from "./mutateElement";
|
|
5
4
|
export type SuggestedBinding = NonDeleted<ExcalidrawBindableElement> | SuggestedPointBinding;
|
|
6
5
|
export type SuggestedPointBinding = [
|
|
7
6
|
NonDeleted<ExcalidrawLinearElement>,
|
|
@@ -11,14 +10,14 @@ export type SuggestedPointBinding = [
|
|
|
11
10
|
export declare const shouldEnableBindingForPointerEvent: (event: React.PointerEvent<HTMLElement>) => boolean;
|
|
12
11
|
export declare const isBindingEnabled: (appState: AppState) => boolean;
|
|
13
12
|
export declare const bindOrUnbindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, startBindingElement: ExcalidrawBindableElement | null | "keep", endBindingElement: ExcalidrawBindableElement | null | "keep", elementsMap: NonDeletedSceneElementsMap) => void;
|
|
14
|
-
export declare const
|
|
13
|
+
export declare const bindOrUnbindLinearElements: (selectedElements: NonDeleted<ExcalidrawLinearElement>[], app: AppClassProperties, isBindingEnabled: boolean, draggingPoints: readonly number[] | null) => void;
|
|
14
|
+
export declare const getSuggestedBindingsForArrows: (selectedElements: NonDeleted<ExcalidrawElement>[], app: AppClassProperties) => SuggestedBinding[];
|
|
15
15
|
export declare const maybeBindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, appState: AppState, pointerCoords: {
|
|
16
16
|
x: number;
|
|
17
17
|
y: number;
|
|
18
18
|
}, app: AppClassProperties) => void;
|
|
19
19
|
export declare const bindLinearElement: (linearElement: NonDeleted<ExcalidrawLinearElement>, hoveredElement: ExcalidrawBindableElement, startOrEnd: "start" | "end", elementsMap: NonDeletedSceneElementsMap) => void;
|
|
20
20
|
export declare const isLinearElementSimpleAndAlreadyBound: (linearElement: NonDeleted<ExcalidrawLinearElement>, alreadyBoundToId: ExcalidrawBindableElement["id"] | undefined, bindableElement: ExcalidrawBindableElement) => boolean;
|
|
21
|
-
export declare const unbindLinearElements: (elements: readonly NonDeleted<ExcalidrawElement>[], elementsMap: NonDeletedSceneElementsMap) => void;
|
|
22
21
|
export declare const getHoveredElementForBinding: (pointerCoords: {
|
|
23
22
|
x: number;
|
|
24
23
|
y: number;
|
|
@@ -30,22 +29,9 @@ export declare const updateBoundElements: (changedElement: NonDeletedExcalidrawE
|
|
|
30
29
|
height: number;
|
|
31
30
|
};
|
|
32
31
|
}) => void;
|
|
33
|
-
export declare const getEligibleElementsForBinding: (selectedElements: NonDeleted<ExcalidrawElement>[], app: AppClassProperties) => SuggestedBinding[];
|
|
34
32
|
export declare const fixBindingsAfterDuplication: (sceneElements: readonly ExcalidrawElement[], oldElements: readonly ExcalidrawElement[], oldIdToDuplicatedId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>, duplicatesServeAsOld?: "duplicatesServeAsOld" | undefined) => void;
|
|
35
33
|
export declare const fixBindingsAfterDeletion: (sceneElements: readonly ExcalidrawElement[], deletedElements: readonly ExcalidrawElement[]) => void;
|
|
36
|
-
export declare const bindingBorderTest: (element: NonDeleted<ExcalidrawBindableElement>, { x, y }: {
|
|
37
|
-
x: number;
|
|
38
|
-
y: number;
|
|
39
|
-
}, app: AppClassProperties) => boolean;
|
|
40
34
|
export declare const maxBindingGap: (element: ExcalidrawElement, elementWidth: number, elementHeight: number) => number;
|
|
41
|
-
export declare const distanceToBindableElement: (element: ExcalidrawBindableElement, point: readonly [number, number], elementsMap: ElementsMap) => number;
|
|
42
|
-
export declare const distanceToEllipse: (element: ExcalidrawEllipseElement, point: readonly [number, number], elementsMap: ElementsMap) => number;
|
|
43
|
-
export declare const determineFocusDistance: (element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], elementsMap: ElementsMap) => number;
|
|
44
|
-
export declare const determineFocusPoint: (element: ExcalidrawBindableElement, focus: number, adjecentPoint: readonly [number, number], elementsMap: ElementsMap) => readonly [number, number];
|
|
45
|
-
export declare const intersectElementWithLine: (element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap: number | undefined, elementsMap: ElementsMap) => Point[];
|
|
46
|
-
export declare const getCircleIntersections: (center: readonly [number, number, number, number, number, number, number, number], radius: number, line: readonly [number, number, number, number, number, number, number, number]) => GA.Point[];
|
|
47
|
-
export declare const findFocusPointForEllipse: (ellipse: ExcalidrawEllipseElement, relativeDistance: number, point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
|
|
48
|
-
export declare const findFocusPointForRectangulars: (element: ExcalidrawRectangleElement | ExcalidrawImageElement | ExcalidrawDiamondElement | ExcalidrawTextElement | ExcalidrawIframeLikeElement | ExcalidrawFrameLikeElement, relativeDistance: number, point: readonly [number, number, number, number, number, number, number, number]) => readonly [number, number, number, number, number, number, number, number];
|
|
49
35
|
export declare const bindingProperties: Set<BindableProp | BindingProp>;
|
|
50
36
|
export type BindableProp = "boundElements";
|
|
51
37
|
export type BindingProp = "frameId" | "containerId" | "startBinding" | "endBinding";
|
|
@@ -46,39 +46,110 @@ const bindOrUnbindLinearElementEdge = (linearElement, bindableElement, otherEdge
|
|
|
46
46
|
boundToElementIds,
|
|
47
47
|
// Is mutated
|
|
48
48
|
unboundFromElementIds, elementsMap) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
bindLinearElement(linearElement, bindableElement, startOrEnd, elementsMap);
|
|
59
|
-
boundToElementIds.add(bindableElement.id);
|
|
60
|
-
}
|
|
49
|
+
// "keep" is for method chaining convenience, a "no-op", so just bail out
|
|
50
|
+
if (bindableElement === "keep") {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// null means break the bind, so nothing to consider here
|
|
54
|
+
if (bindableElement === null) {
|
|
55
|
+
const unbound = unbindLinearElement(linearElement, startOrEnd);
|
|
56
|
+
if (unbound != null) {
|
|
57
|
+
unboundFromElementIds.add(unbound);
|
|
61
58
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// While complext arrows can do anything, simple arrow with both ends trying
|
|
62
|
+
// to bind to the same bindable should not be allowed, start binding takes
|
|
63
|
+
// precedence
|
|
64
|
+
if (isLinearElementSimple(linearElement)) {
|
|
65
|
+
if (otherEdgeBindableElement == null ||
|
|
66
|
+
(otherEdgeBindableElement === "keep"
|
|
67
|
+
? // TODO: Refactor - Needlessly complex
|
|
68
|
+
!isLinearElementSimpleAndAlreadyBoundOnOppositeEdge(linearElement, bindableElement, startOrEnd)
|
|
69
|
+
: startOrEnd === "start" ||
|
|
70
|
+
otherEdgeBindableElement.id !== bindableElement.id)) {
|
|
71
|
+
bindLinearElement(linearElement, bindableElement, startOrEnd, elementsMap);
|
|
72
|
+
boundToElementIds.add(bindableElement.id);
|
|
67
73
|
}
|
|
68
74
|
}
|
|
75
|
+
else {
|
|
76
|
+
bindLinearElement(linearElement, bindableElement, startOrEnd, elementsMap);
|
|
77
|
+
boundToElementIds.add(bindableElement.id);
|
|
78
|
+
}
|
|
69
79
|
};
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
const getOriginalBindingIfStillCloseOfLinearElementEdge = (linearElement, edge, app) => {
|
|
81
|
+
const elementsMap = app.scene.getNonDeletedElementsMap();
|
|
82
|
+
const coors = getLinearElementEdgeCoors(linearElement, edge, elementsMap);
|
|
83
|
+
const elementId = edge === "start"
|
|
84
|
+
? linearElement.startBinding?.elementId
|
|
85
|
+
: linearElement.endBinding?.elementId;
|
|
86
|
+
if (elementId) {
|
|
87
|
+
const element = elementsMap.get(elementId);
|
|
88
|
+
if (bindingBorderTest(element, coors, app)) {
|
|
89
|
+
return element;
|
|
77
90
|
}
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
};
|
|
94
|
+
const getOriginalBindingsIfStillCloseToArrowEnds = (linearElement, app) => ["start", "end"].map((edge) => getOriginalBindingIfStillCloseOfLinearElementEdge(linearElement, edge, app));
|
|
95
|
+
const getBindingStrategyForDraggingArrowEndpoints = (selectedElement, isBindingEnabled, draggingPoints, app) => {
|
|
96
|
+
const startIdx = 0;
|
|
97
|
+
const endIdx = selectedElement.points.length - 1;
|
|
98
|
+
const startDragged = draggingPoints.findIndex((i) => i === startIdx) > -1;
|
|
99
|
+
const endDragged = draggingPoints.findIndex((i) => i === endIdx) > -1;
|
|
100
|
+
const start = startDragged
|
|
101
|
+
? isBindingEnabled
|
|
102
|
+
? getElligibleElementForBindingElement(selectedElement, "start", app)
|
|
103
|
+
: null // If binding is disabled and start is dragged, break all binds
|
|
104
|
+
: // We have to update the focus and gap of the binding, so let's rebind
|
|
105
|
+
getElligibleElementForBindingElement(selectedElement, "start", app);
|
|
106
|
+
const end = endDragged
|
|
107
|
+
? isBindingEnabled
|
|
108
|
+
? getElligibleElementForBindingElement(selectedElement, "end", app)
|
|
109
|
+
: null // If binding is disabled and end is dragged, break all binds
|
|
110
|
+
: // We have to update the focus and gap of the binding, so let's rebind
|
|
111
|
+
getElligibleElementForBindingElement(selectedElement, "end", app);
|
|
112
|
+
return [start, end];
|
|
113
|
+
};
|
|
114
|
+
const getBindingStrategyForDraggingArrowOrJoints = (selectedElement, app, isBindingEnabled) => {
|
|
115
|
+
const [startIsClose, endIsClose] = getOriginalBindingsIfStillCloseToArrowEnds(selectedElement, app);
|
|
116
|
+
const start = startIsClose
|
|
117
|
+
? isBindingEnabled
|
|
118
|
+
? getElligibleElementForBindingElement(selectedElement, "start", app)
|
|
119
|
+
: null
|
|
120
|
+
: null;
|
|
121
|
+
const end = endIsClose
|
|
122
|
+
? isBindingEnabled
|
|
123
|
+
? getElligibleElementForBindingElement(selectedElement, "end", app)
|
|
124
|
+
: null
|
|
125
|
+
: null;
|
|
126
|
+
return [start, end];
|
|
127
|
+
};
|
|
128
|
+
export const bindOrUnbindLinearElements = (selectedElements, app, isBindingEnabled, draggingPoints) => {
|
|
129
|
+
selectedElements.forEach((selectedElement) => {
|
|
130
|
+
const [start, end] = draggingPoints?.length
|
|
131
|
+
? // The arrow edge points are dragged (i.e. start, end)
|
|
132
|
+
getBindingStrategyForDraggingArrowEndpoints(selectedElement, isBindingEnabled, draggingPoints ?? [], app)
|
|
133
|
+
: // The arrow itself (the shaft) or the inner joins are dragged
|
|
134
|
+
getBindingStrategyForDraggingArrowOrJoints(selectedElement, app, isBindingEnabled);
|
|
135
|
+
bindOrUnbindLinearElement(selectedElement, start, end, app.scene.getNonDeletedElementsMap());
|
|
78
136
|
});
|
|
79
137
|
};
|
|
80
|
-
const
|
|
81
|
-
|
|
138
|
+
export const getSuggestedBindingsForArrows = (selectedElements, app) => {
|
|
139
|
+
// HOT PATH: Bail out if selected elements list is too large
|
|
140
|
+
if (selectedElements.length > 50) {
|
|
141
|
+
return [];
|
|
142
|
+
}
|
|
143
|
+
return (selectedElements
|
|
144
|
+
.filter(isLinearElement)
|
|
145
|
+
.flatMap((element) => getOriginalBindingsIfStillCloseToArrowEnds(element, app))
|
|
146
|
+
.filter((element) => element !== null)
|
|
147
|
+
// Filter out bind candidates which are in the
|
|
148
|
+
// same selection / group with the arrow
|
|
149
|
+
//
|
|
150
|
+
// TODO: Is it worth turning the list into a set to avoid dupes?
|
|
151
|
+
.filter((element) => selectedElements.filter((selected) => selected.id === element?.id)
|
|
152
|
+
.length === 0));
|
|
82
153
|
};
|
|
83
154
|
export const maybeBindLinearElement = (linearElement, appState, pointerCoords, app) => {
|
|
84
155
|
if (appState.startBoundElement != null) {
|
|
@@ -113,20 +184,10 @@ const isLinearElementSimpleAndAlreadyBoundOnOppositeEdge = (linearElement, binda
|
|
|
113
184
|
return isLinearElementSimpleAndAlreadyBound(linearElement, otherBinding?.elementId, bindableElement);
|
|
114
185
|
};
|
|
115
186
|
export const isLinearElementSimpleAndAlreadyBound = (linearElement, alreadyBoundToId, bindableElement) => {
|
|
116
|
-
return (alreadyBoundToId === bindableElement.id &&
|
|
117
|
-
|
|
118
|
-
export const unbindLinearElements = (elements, elementsMap) => {
|
|
119
|
-
elements.forEach((element) => {
|
|
120
|
-
if (isBindingElement(element)) {
|
|
121
|
-
if (element.startBinding !== null && element.endBinding !== null) {
|
|
122
|
-
bindOrUnbindLinearElement(element, null, null, elementsMap);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
bindOrUnbindLinearElement(element, element.startBinding ? "keep" : null, element.endBinding ? "keep" : null, elementsMap);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
});
|
|
187
|
+
return (alreadyBoundToId === bindableElement.id &&
|
|
188
|
+
isLinearElementSimple(linearElement));
|
|
129
189
|
};
|
|
190
|
+
const isLinearElementSimple = (linearElement) => linearElement.points.length < 3;
|
|
130
191
|
const unbindLinearElement = (linearElement, startOrEnd) => {
|
|
131
192
|
const field = startOrEnd === "start" ? "startBinding" : "endBinding";
|
|
132
193
|
const binding = linearElement[field];
|
|
@@ -247,21 +308,6 @@ const maybeCalculateNewGapWhenScaling = (changedElement, currentBinding, newSize
|
|
|
247
308
|
const newGap = Math.max(1, Math.min(maxBindingGap(changedElement, newWidth, newHeight), gap * (newWidth < newHeight ? newWidth / width : newHeight / height)));
|
|
248
309
|
return { elementId, gap: newGap, focus };
|
|
249
310
|
};
|
|
250
|
-
// TODO: this is a bottleneck, optimise
|
|
251
|
-
export const getEligibleElementsForBinding = (selectedElements, app) => {
|
|
252
|
-
const includedElementIds = new Set(selectedElements.map(({ id }) => id));
|
|
253
|
-
return selectedElements.flatMap((selectedElement) => isBindingElement(selectedElement, false)
|
|
254
|
-
? getElligibleElementsForBindingElement(selectedElement, app).filter((element) => !includedElementIds.has(element.id))
|
|
255
|
-
: isBindableElement(selectedElement, false)
|
|
256
|
-
? getElligibleElementsForBindableElementAndWhere(selectedElement, app).filter((binding) => !includedElementIds.has(binding[0].id))
|
|
257
|
-
: []);
|
|
258
|
-
};
|
|
259
|
-
const getElligibleElementsForBindingElement = (linearElement, app) => {
|
|
260
|
-
return [
|
|
261
|
-
getElligibleElementForBindingElement(linearElement, "start", app),
|
|
262
|
-
getElligibleElementForBindingElement(linearElement, "end", app),
|
|
263
|
-
].filter((element) => element != null);
|
|
264
|
-
};
|
|
265
311
|
const getElligibleElementForBindingElement = (linearElement, startOrEnd, app) => {
|
|
266
312
|
return getHoveredElementForBinding(getLinearElementEdgeCoors(linearElement, startOrEnd, app.scene.getNonDeletedElementsMap()), app);
|
|
267
313
|
};
|
|
@@ -269,33 +315,6 @@ const getLinearElementEdgeCoors = (linearElement, startOrEnd, elementsMap) => {
|
|
|
269
315
|
const index = startOrEnd === "start" ? 0 : -1;
|
|
270
316
|
return tupleToCoors(LinearElementEditor.getPointAtIndexGlobalCoordinates(linearElement, index, elementsMap));
|
|
271
317
|
};
|
|
272
|
-
const getElligibleElementsForBindableElementAndWhere = (bindableElement, app) => {
|
|
273
|
-
const scene = Scene.getScene(bindableElement);
|
|
274
|
-
return scene
|
|
275
|
-
.getNonDeletedElements()
|
|
276
|
-
.map((element) => {
|
|
277
|
-
if (!isBindingElement(element, false)) {
|
|
278
|
-
return null;
|
|
279
|
-
}
|
|
280
|
-
const canBindStart = isLinearElementEligibleForNewBindingByBindable(element, "start", bindableElement, scene.getNonDeletedElementsMap(), app);
|
|
281
|
-
const canBindEnd = isLinearElementEligibleForNewBindingByBindable(element, "end", bindableElement, scene.getNonDeletedElementsMap(), app);
|
|
282
|
-
if (!canBindStart && !canBindEnd) {
|
|
283
|
-
return null;
|
|
284
|
-
}
|
|
285
|
-
return [
|
|
286
|
-
element,
|
|
287
|
-
canBindStart && canBindEnd ? "both" : canBindStart ? "start" : "end",
|
|
288
|
-
bindableElement,
|
|
289
|
-
];
|
|
290
|
-
})
|
|
291
|
-
.filter((maybeElement) => maybeElement != null);
|
|
292
|
-
};
|
|
293
|
-
const isLinearElementEligibleForNewBindingByBindable = (linearElement, startOrEnd, bindableElement, elementsMap, app) => {
|
|
294
|
-
const existingBinding = linearElement[startOrEnd === "start" ? "startBinding" : "endBinding"];
|
|
295
|
-
return (existingBinding == null &&
|
|
296
|
-
!isLinearElementSimpleAndAlreadyBoundOnOppositeEdge(linearElement, bindableElement, startOrEnd) &&
|
|
297
|
-
bindingBorderTest(bindableElement, getLinearElementEdgeCoors(linearElement, startOrEnd, elementsMap), app));
|
|
298
|
-
};
|
|
299
318
|
// We need to:
|
|
300
319
|
// 1: Update elements not selected to point to duplicated elements
|
|
301
320
|
// 2: Update duplicated elements to point to other duplicated elements
|
|
@@ -389,7 +408,7 @@ const newBoundElements = (boundElements, idsToRemove, elementsToAdd = []) => {
|
|
|
389
408
|
nextBoundElements.push(...elementsToAdd.map((x) => ({ id: x.id, type: x.type })));
|
|
390
409
|
return nextBoundElements;
|
|
391
410
|
};
|
|
392
|
-
|
|
411
|
+
const bindingBorderTest = (element, { x, y }, app) => {
|
|
393
412
|
const threshold = maxBindingGap(element, element.width, element.height);
|
|
394
413
|
const shape = app.getElementShape(element);
|
|
395
414
|
return isPointOnShape([x, y], shape, threshold);
|
|
@@ -401,7 +420,7 @@ export const maxBindingGap = (element, elementWidth, elementHeight) => {
|
|
|
401
420
|
// We make the bindable boundary bigger for bigger elements
|
|
402
421
|
return Math.max(16, Math.min(0.25 * smallerDimension, 32));
|
|
403
422
|
};
|
|
404
|
-
|
|
423
|
+
const distanceToBindableElement = (element, point, elementsMap) => {
|
|
405
424
|
switch (element.type) {
|
|
406
425
|
case "rectangle":
|
|
407
426
|
case "image":
|
|
@@ -426,7 +445,7 @@ const distanceToDiamond = (element, point, elementsMap) => {
|
|
|
426
445
|
const side = GALine.equation(hheight, hwidth, -hheight * hwidth);
|
|
427
446
|
return GAPoint.distanceToLine(pointRel, side);
|
|
428
447
|
};
|
|
429
|
-
|
|
448
|
+
const distanceToEllipse = (element, point, elementsMap) => {
|
|
430
449
|
const [pointRel, tangent] = ellipseParamsForTest(element, point, elementsMap);
|
|
431
450
|
return -GALine.sign(tangent) * GAPoint.distanceToLine(pointRel, tangent);
|
|
432
451
|
};
|
|
@@ -504,7 +523,7 @@ const coordsCenter = (x1, y1, x2, y2) => {
|
|
|
504
523
|
// all focus points lie, so it's a number between -1 and 1.
|
|
505
524
|
// The line going through `a` and `b` is a tangent to the "focus image"
|
|
506
525
|
// of the element.
|
|
507
|
-
|
|
526
|
+
const determineFocusDistance = (element,
|
|
508
527
|
// Point on the line, in absolute coordinates
|
|
509
528
|
a,
|
|
510
529
|
// Another point on the line, in absolute coordinates (closer to element)
|
|
@@ -541,7 +560,7 @@ b, elementsMap) => {
|
|
|
541
560
|
}
|
|
542
561
|
return ret || 0;
|
|
543
562
|
};
|
|
544
|
-
|
|
563
|
+
const determineFocusPoint = (element,
|
|
545
564
|
// The oriented, relative distance from the center of `element` of the
|
|
546
565
|
// returned focusPoint
|
|
547
566
|
focus, adjecentPoint, elementsMap) => {
|
|
@@ -573,7 +592,7 @@ focus, adjecentPoint, elementsMap) => {
|
|
|
573
592
|
};
|
|
574
593
|
// Returns 2 or 0 intersection points between line going through `a` and `b`
|
|
575
594
|
// and the `element`, in ascending order of distance from `a`.
|
|
576
|
-
|
|
595
|
+
const intersectElementWithLine = (element,
|
|
577
596
|
// Point on the line, in absolute coordinates
|
|
578
597
|
a,
|
|
579
598
|
// Another point on the line, in absolute coordinates
|
|
@@ -688,7 +707,7 @@ const getEllipseIntersections = (element, gap, line) => {
|
|
|
688
707
|
GA.point((xn - a * b * n * discrRoot) / squares, (yn + a * b * m * discrRoot) / squares),
|
|
689
708
|
];
|
|
690
709
|
};
|
|
691
|
-
|
|
710
|
+
const getCircleIntersections = (center, radius, line) => {
|
|
692
711
|
if (radius === 0) {
|
|
693
712
|
return GAPoint.distanceToLine(line, center) === 0 ? [center] : [];
|
|
694
713
|
}
|
|
@@ -712,7 +731,7 @@ export const getCircleIntersections = (center, radius, line) => {
|
|
|
712
731
|
};
|
|
713
732
|
// The focus point is the tangent point of the "focus image" of the
|
|
714
733
|
// `element`, where the tangent goes through `point`.
|
|
715
|
-
|
|
734
|
+
const findFocusPointForEllipse = (ellipse,
|
|
716
735
|
// Between -1 and 1 (not 0) the relative size of the "focus image" of
|
|
717
736
|
// the element on which the focus point lies
|
|
718
737
|
relativeDistance,
|
|
@@ -739,7 +758,7 @@ point) => {
|
|
|
739
758
|
const x = -(a ** 2 * m) / (n ** 2 * b ** 2 + m ** 2 * a ** 2);
|
|
740
759
|
return GA.point(x, (-m * x - 1) / n);
|
|
741
760
|
};
|
|
742
|
-
|
|
761
|
+
const findFocusPointForRectangulars = (element,
|
|
743
762
|
// Between -1 and 1 for how far away should the focus point be relative
|
|
744
763
|
// to the size of the element. Sign determines orientation.
|
|
745
764
|
relativeDistance,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ExcalidrawElement, ExcalidrawLinearElement, Arrowhead, ExcalidrawFreeDrawElement, NonDeleted, ElementsMap } from "./types";
|
|
2
|
-
import { Drawable, Op } from "roughjs/bin/core";
|
|
3
|
-
import { AppState, Point } from "../types";
|
|
1
|
+
import type { ExcalidrawElement, ExcalidrawLinearElement, Arrowhead, ExcalidrawFreeDrawElement, NonDeleted, ElementsMap } from "./types";
|
|
2
|
+
import type { Drawable, Op } from "roughjs/bin/core";
|
|
3
|
+
import type { AppState, Point } from "../types";
|
|
4
4
|
export type RectangleBox = {
|
|
5
5
|
x: number;
|
|
6
6
|
y: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ElementsMap, ExcalidrawElement } from "./types";
|
|
2
|
-
import { FrameNameBounds } from "../types";
|
|
3
|
-
import { GeometricShape } from "../../utils/geometry/shape";
|
|
1
|
+
import type { ElementsMap, ExcalidrawElement } from "./types";
|
|
2
|
+
import type { FrameNameBounds } from "../types";
|
|
3
|
+
import type { GeometricShape } from "../../utils/geometry/shape";
|
|
4
4
|
export declare const shouldTestInside: (element: ExcalidrawElement) => boolean;
|
|
5
5
|
export type HitTestArgs = {
|
|
6
6
|
x: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isPathALoop, isPointWithinBounds } from "../math";
|
|
2
2
|
import { getElementBounds } from "./bounds";
|
|
3
|
-
import { getPolygonShape
|
|
3
|
+
import { getPolygonShape } from "../../utils/geometry/shape";
|
|
4
4
|
import { isPointInShape, isPointOnShape } from "../../utils/collision";
|
|
5
5
|
import { isTransparent } from "../utils";
|
|
6
6
|
import { hasBoundTextElement, isIframeLikeElement, isImageElement, isTextElement, } from "./typeChecks";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { NonDeletedExcalidrawElement } from "./types";
|
|
2
|
-
import { AppState, PointerDownState } from "../types";
|
|
3
|
-
import Scene from "../scene/Scene";
|
|
1
|
+
import type { NonDeletedExcalidrawElement } from "./types";
|
|
2
|
+
import type { AppState, NormalizedZoomValue, PointerDownState } from "../types";
|
|
3
|
+
import type Scene from "../scene/Scene";
|
|
4
4
|
export declare const dragSelectedElements: (pointerDownState: PointerDownState, selectedElements: NonDeletedExcalidrawElement[], offset: {
|
|
5
5
|
x: number;
|
|
6
6
|
y: number;
|
|
@@ -9,7 +9,7 @@ export declare const dragSelectedElements: (pointerDownState: PointerDownState,
|
|
|
9
9
|
y: number;
|
|
10
10
|
}, gridSize: AppState["gridSize"]) => void;
|
|
11
11
|
export declare const getDragOffsetXY: (selectedElements: NonDeletedExcalidrawElement[], x: number, y: number) => [number, number];
|
|
12
|
-
export declare const dragNewElement: (draggingElement: NonDeletedExcalidrawElement, elementType: AppState["activeTool"]["type"], originX: number, originY: number, x: number, y: number, width: number, height: number, shouldMaintainAspectRatio: boolean, shouldResizeFromCenter: boolean, widthAspectRatio?: number | null, originOffset?: {
|
|
12
|
+
export declare const dragNewElement: (draggingElement: NonDeletedExcalidrawElement, elementType: AppState["activeTool"]["type"], originX: number, originY: number, x: number, y: number, width: number, height: number, shouldMaintainAspectRatio: boolean, shouldResizeFromCenter: boolean, zoom: NormalizedZoomValue, widthAspectRatio?: number | null, originOffset?: {
|
|
13
13
|
x: number;
|
|
14
14
|
y: number;
|
|
15
15
|
} | null) => void;
|
|
@@ -2,9 +2,11 @@ import { updateBoundElements } from "./binding";
|
|
|
2
2
|
import { getCommonBounds } from "./bounds";
|
|
3
3
|
import { mutateElement } from "./mutateElement";
|
|
4
4
|
import { getPerfectElementSize } from "./sizeHelpers";
|
|
5
|
-
import { getBoundTextElement } from "./textElement";
|
|
5
|
+
import { getBoundTextElement, getMinTextElementWidth } from "./textElement";
|
|
6
6
|
import { getGridPoint } from "../math";
|
|
7
|
-
import { isArrowElement, isFrameLikeElement } from "./typeChecks";
|
|
7
|
+
import { isArrowElement, isFrameLikeElement, isTextElement, } from "./typeChecks";
|
|
8
|
+
import { getFontString } from "../utils";
|
|
9
|
+
import { TEXT_AUTOWRAP_THRESHOLD } from "../constants";
|
|
8
10
|
export const dragSelectedElements = (pointerDownState, selectedElements, offset, appState, scene, snapOffset, gridSize) => {
|
|
9
11
|
// we do not want a frame and its elements to be selected at the same time
|
|
10
12
|
// but when it happens (due to some bug), we want to avoid updating element
|
|
@@ -68,7 +70,7 @@ export const getDragOffsetXY = (selectedElements, x, y) => {
|
|
|
68
70
|
const [x1, y1] = getCommonBounds(selectedElements);
|
|
69
71
|
return [x - x1, y - y1];
|
|
70
72
|
};
|
|
71
|
-
export const dragNewElement = (draggingElement, elementType, originX, originY, x, y, width, height, shouldMaintainAspectRatio, shouldResizeFromCenter,
|
|
73
|
+
export const dragNewElement = (draggingElement, elementType, originX, originY, x, y, width, height, shouldMaintainAspectRatio, shouldResizeFromCenter, zoom,
|
|
72
74
|
/** whether to keep given aspect ratio when `isResizeWithSidesSameLength` is
|
|
73
75
|
true */
|
|
74
76
|
widthAspectRatio, originOffset = null) => {
|
|
@@ -99,12 +101,34 @@ widthAspectRatio, originOffset = null) => {
|
|
|
99
101
|
newX = originX - width / 2;
|
|
100
102
|
newY = originY - height / 2;
|
|
101
103
|
}
|
|
104
|
+
let textAutoResize = null;
|
|
105
|
+
// NOTE this should apply only to creating text elements, not existing
|
|
106
|
+
// (once we rewrite appState.draggingElement to actually mean dragging
|
|
107
|
+
// elements)
|
|
108
|
+
if (isTextElement(draggingElement)) {
|
|
109
|
+
height = draggingElement.height;
|
|
110
|
+
const minWidth = getMinTextElementWidth(getFontString({
|
|
111
|
+
fontSize: draggingElement.fontSize,
|
|
112
|
+
fontFamily: draggingElement.fontFamily,
|
|
113
|
+
}), draggingElement.lineHeight);
|
|
114
|
+
width = Math.max(width, minWidth);
|
|
115
|
+
if (Math.abs(x - originX) > TEXT_AUTOWRAP_THRESHOLD / zoom) {
|
|
116
|
+
textAutoResize = {
|
|
117
|
+
autoResize: false,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
newY = originY;
|
|
121
|
+
if (shouldResizeFromCenter) {
|
|
122
|
+
newX = originX - width / 2;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
102
125
|
if (width !== 0 && height !== 0) {
|
|
103
126
|
mutateElement(draggingElement, {
|
|
104
127
|
x: newX + (originOffset?.x ?? 0),
|
|
105
128
|
y: newY + (originOffset?.y ?? 0),
|
|
106
129
|
width,
|
|
107
130
|
height,
|
|
131
|
+
...textAutoResize,
|
|
108
132
|
});
|
|
109
133
|
}
|
|
110
134
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { ExcalidrawProps } from "../types";
|
|
3
|
-
import { ExcalidrawElement, ExcalidrawIframeLikeElement, IframeData } from "./types";
|
|
4
|
-
import { MarkRequired } from "../utility-types";
|
|
2
|
+
import type { ExcalidrawProps } from "../types";
|
|
3
|
+
import type { ExcalidrawElement, ExcalidrawIframeLikeElement, IframeData } from "./types";
|
|
4
|
+
import type { MarkRequired } from "../utility-types";
|
|
5
5
|
type IframeDataWithSandbox = MarkRequired<IframeData, "sandbox">;
|
|
6
6
|
export declare const createSrcDoc: (body: string) => string;
|
|
7
7
|
export declare const getEmbedLink: (link: string | null | undefined) => IframeDataWithSandbox | null;
|
|
@@ -167,7 +167,7 @@ export declare const actionSetEmbeddableAsActiveTool: {
|
|
|
167
167
|
userToFollow: import("../types").UserToFollow | null;
|
|
168
168
|
followedBy: Set<import("../types").SocketId>;
|
|
169
169
|
};
|
|
170
|
-
storeAction:
|
|
170
|
+
storeAction: "none";
|
|
171
171
|
};
|
|
172
172
|
} & {
|
|
173
173
|
keyTest?: undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AppClassProperties, DataURL, BinaryFiles } from "../types";
|
|
2
|
-
import { ExcalidrawElement, FileId, InitializedExcalidrawImageElement } from "./types";
|
|
1
|
+
import type { AppClassProperties, DataURL, BinaryFiles } from "../types";
|
|
2
|
+
import type { ExcalidrawElement, FileId, InitializedExcalidrawImageElement } from "./types";
|
|
3
3
|
export declare const loadHTMLImageElement: (dataURL: DataURL) => Promise<HTMLImageElement>;
|
|
4
4
|
/** NOTE: updates cache even if already populated with given image. Thus,
|
|
5
5
|
* you should filter out the images upstream if you want to optimize this. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted } from "./types";
|
|
2
|
-
export { newElement, newTextElement,
|
|
1
|
+
import type { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted } from "./types";
|
|
2
|
+
export { newElement, newTextElement, 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
5
|
export { resizeTest, getCursorForResizingElement, getElementWithTransformHandleType, getTransformHandleTypeFromCoords, } from "./resizeTest";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isInvisiblySmallElement } from "./sizeHelpers";
|
|
2
2
|
import { isLinearElementType } from "./typeChecks";
|
|
3
|
-
export { newElement, newTextElement,
|
|
3
|
+
export { newElement, newTextElement, 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
6
|
export { resizeTest, getCursorForResizingElement, getElementWithTransformHandleType, getTransformHandleTypeFromCoords, } from "./resizeTest";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, ExcalidrawBindableElement, ExcalidrawTextElementWithContainer, ElementsMap, NonDeletedSceneElementsMap } from "./types";
|
|
3
|
-
import { Bounds } from "./bounds";
|
|
4
|
-
import { Point, AppState, PointerCoords, InteractiveCanvasAppState, AppClassProperties } from "../types";
|
|
5
|
-
import { Store } from "../store";
|
|
2
|
+
import type { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, ExcalidrawBindableElement, ExcalidrawTextElementWithContainer, ElementsMap, NonDeletedSceneElementsMap } from "./types";
|
|
3
|
+
import type { Bounds } from "./bounds";
|
|
4
|
+
import type { Point, AppState, PointerCoords, InteractiveCanvasAppState, AppClassProperties } from "../types";
|
|
5
|
+
import type { Store } from "../store";
|
|
6
6
|
declare const editorMidPointsCache: {
|
|
7
7
|
version: number | null;
|
|
8
8
|
points: (Point | null)[];
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ExcalidrawElement } from "./types";
|
|
2
|
-
import { Mutable } from "../utility-types";
|
|
1
|
+
import type { ExcalidrawElement } from "./types";
|
|
2
|
+
import type { Mutable } from "../utility-types";
|
|
3
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
|
-
export declare const newElementWith: <TElement extends ExcalidrawElement>(element: TElement, updates: ElementUpdate<TElement
|
|
5
|
+
export declare const newElementWith: <TElement extends ExcalidrawElement>(element: TElement, updates: ElementUpdate<TElement>, force?: boolean) => TElement;
|
|
6
6
|
/**
|
|
7
7
|
* Mutates element, bumping `version`, `versionNonce`, and `updated`.
|
|
8
8
|
*
|
|
@@ -71,11 +71,13 @@ export const mutateElement = (element, updates, informMutation = true) => {
|
|
|
71
71
|
element.versionNonce = randomInteger();
|
|
72
72
|
element.updated = getUpdatedTimestamp();
|
|
73
73
|
if (informMutation) {
|
|
74
|
-
Scene.getScene(element)?.
|
|
74
|
+
Scene.getScene(element)?.triggerUpdate();
|
|
75
75
|
}
|
|
76
76
|
return element;
|
|
77
77
|
};
|
|
78
|
-
export const newElementWith = (element, updates
|
|
78
|
+
export const newElementWith = (element, updates,
|
|
79
|
+
/** pass `true` to always regenerate */
|
|
80
|
+
force = false) => {
|
|
79
81
|
let didChange = false;
|
|
80
82
|
for (const key in updates) {
|
|
81
83
|
const value = updates[key];
|
|
@@ -88,7 +90,7 @@ export const newElementWith = (element, updates) => {
|
|
|
88
90
|
didChange = true;
|
|
89
91
|
}
|
|
90
92
|
}
|
|
91
|
-
if (!didChange) {
|
|
93
|
+
if (!didChange && !force) {
|
|
92
94
|
return element;
|
|
93
95
|
}
|
|
94
96
|
return {
|