@excalidraw/excalidraw 0.17.1-550a388 → 0.17.1-62228e0
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/CHANGELOG.md +18 -2
- package/dist/browser/dev/excalidraw-assets-dev/CascadiaMono-Regular-NWCXRPUG.woff2 +0 -0
- package/dist/browser/dev/excalidraw-assets-dev/ComicShanns-Regular-6TOETDFT.woff2 +0 -0
- package/dist/browser/dev/excalidraw-assets-dev/Excalifont-Regular-CPKEUDVM.woff2 +0 -0
- package/dist/browser/dev/excalidraw-assets-dev/LiberationSans-Regular-ZQD73GJM.woff2 +0 -0
- package/dist/browser/dev/excalidraw-assets-dev/Virgil-Regular-YHAB2VGJ.woff2 +0 -0
- package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-ACFH36JV.js → blockDiagram-91b80b7a-H47FTXHA.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-QZ27YR47.js → c4Diagram-b2a90758-NNJK6GKC.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-HO2HMSK7.js → chunk-4KQVEBHW.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-USGV265L.js → chunk-53YI56GV.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-EDFX3S7X.js → chunk-A2WCJI4I.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-IX4V72YG.js → chunk-EFLPX7NE.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-MXVETLVM.js → chunk-JYIQCNWV.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-YZIOORVX.js → chunk-LVIQQW6F.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-6U7GQNJT.js → chunk-PXLO3FOU.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-7DACDEY3.js → chunk-TO2AW5PW.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-NJ77ZFNJ.js → chunk-VURILHLY.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-AK7SWNLN.js → chunk-XDYNNNIZ.js} +48 -10
- package/dist/browser/dev/excalidraw-assets-dev/chunk-XDYNNNIZ.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-2T2GU7NF.js → chunk-ZAYGSUHF.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-Z3PH3V2B.js → chunk-ZQR5ML6Y.js} +26 -26
- package/dist/browser/dev/excalidraw-assets-dev/chunk-ZQR5ML6Y.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-RWZVJAQU.js → chunk-ZYC7SDAJ.js} +13172 -7476
- package/dist/browser/dev/excalidraw-assets-dev/chunk-ZYC7SDAJ.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-QSLMH4JW.js → classDiagram-30eddba6-CUYIJICN.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-DY4DYQ5P.js → classDiagram-v2-f2df5561-K6WW6K73.js} +8 -8
- package/dist/browser/dev/excalidraw-assets-dev/{dist-Z46EOVOL.js → dist-DNSPZDOZ.js} +67 -33
- package/dist/browser/dev/excalidraw-assets-dev/dist-DNSPZDOZ.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{en-5TCZHGGJ.js → en-RAFN4KPD.js} +8 -2
- package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-SOOJRTCB.js → erDiagram-47591fe2-XGAD7EEP.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-AHGL4KPK.js → flowDiagram-5540d9b9-B6EOVNNO.js} +9 -9
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-56LDZZWY.js → flowDiagram-v2-3b53844e-NUG24FJH.js} +9 -9
- package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-27LUKRI6.js → flowchart-elk-definition-5fe447d6-25Y7PCBL.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-EHGYGNG6.js → ganttDiagram-9a3bba1f-GNL6ZDTC.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJQNBDW5.js → gitGraphDiagram-96e6b4ee-HNW52NVO.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{image-OFRRV5MB.css → image-WDHYGKKP.css} +1 -1
- package/dist/browser/dev/excalidraw-assets-dev/image-WDHYGKKP.css.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{image-EDKQZH7Z.js → image-ZNLDWTK3.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-SWLLQVES.js → infoDiagram-bcd20f53-FWEUVFLT.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-7UAVCWOZ.js → journeyDiagram-4fe6b3dc-RZIUI7UG.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-SROW5KGM.js → mindmap-definition-f354de21-GBVN45GU.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-QKCI6NCB.js → pieDiagram-79897490-ECENNII6.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-LNYJZFC5.js → quadrantDiagram-62f64e94-ZMEOFVNL.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZZD7ZHFA.js → requirementDiagram-05bf5f74-FHZSFHCR.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-L75ZZ4UM.js → sankeyDiagram-97764748-VDKIKTA6.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-6PCU7TDK.js → sequenceDiagram-acc0e65c-6JUSPVKX.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-WM76WOPR.js → stateDiagram-0ff1cf1a-L3AKWENF.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-N4HZW3O2.js → stateDiagram-v2-9a9d610d-NU3GGMCH.js} +8 -8
- package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-ZHGCAXGP.js → timeline-definition-fea2a41d-JGP7XCHW.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-2DLOVRAZ.js → xychartDiagram-ab372869-HLFHHF2I.js} +3 -3
- package/dist/browser/dev/index.css +668 -191
- package/dist/browser/dev/index.css.map +3 -3
- package/dist/browser/dev/index.js +14529 -9273
- package/dist/browser/dev/index.js.map +4 -4
- package/dist/browser/prod/excalidraw-assets/CascadiaMono-Regular-NWCXRPUG.woff2 +0 -0
- package/dist/browser/prod/excalidraw-assets/ComicShanns-Regular-6TOETDFT.woff2 +0 -0
- package/dist/browser/prod/excalidraw-assets/Excalifont-Regular-CPKEUDVM.woff2 +0 -0
- package/dist/browser/prod/excalidraw-assets/LiberationSans-Regular-ZQD73GJM.woff2 +0 -0
- package/dist/browser/prod/excalidraw-assets/Virgil-Regular-YHAB2VGJ.woff2 +0 -0
- package/dist/browser/prod/excalidraw-assets/{blockDiagram-91b80b7a-ONPS22AM.js → blockDiagram-91b80b7a-FVCRVGN5.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{c4Diagram-b2a90758-XMIQY7ZT.js → c4Diagram-b2a90758-56CXO7GA.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-GCHQBOKV.js → chunk-635MQ3CK.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-P5M3G2RP.js → chunk-AIKXYJX3.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-E2YLWFZX.js → chunk-CR7VMNWC.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/chunk-F3JN4YS2.js +61 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-WEYK4A2L.js → chunk-FFF2CSVG.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-R3HAIP6R.js → chunk-G4WDCSPE.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-HFOXJM22.js → chunk-HKZSHFLX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-XIMFFJTE.js → chunk-IKCDYWMW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-AHLLBBVJ.js → chunk-L5DS24G6.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-CQJF3C6G.js → chunk-MUNOKHUD.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-CTYINSWT.js → chunk-MXFM2KIK.js} +5 -5
- package/dist/browser/prod/excalidraw-assets/{chunk-NI6SYCUG.js → chunk-QOQYOOQ4.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-I2PZFXTK.js → chunk-ZTIWFPBM.js} +21 -21
- package/dist/browser/prod/excalidraw-assets/{classDiagram-30eddba6-IEJXXCVX.js → classDiagram-30eddba6-BCUTAUMD.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{classDiagram-v2-f2df5561-7LZDSWOS.js → classDiagram-v2-f2df5561-6SOXSGQ2.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/dist-NLUQPPQQ.js +7 -0
- package/dist/browser/prod/excalidraw-assets/en-SQSS4H2K.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{erDiagram-47591fe2-E5V666CF.js → erDiagram-47591fe2-RE6HB7RM.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{flowDiagram-5540d9b9-GMBRCYVF.js → flowDiagram-5540d9b9-ZNJZBERW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{flowDiagram-v2-3b53844e-Z4HUWP6B.js → flowDiagram-v2-3b53844e-LY44JLQJ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{flowchart-elk-definition-5fe447d6-5ZCYTX5N.js → flowchart-elk-definition-5fe447d6-TMTJ6Z7O.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{ganttDiagram-9a3bba1f-WM32OMT5.js → ganttDiagram-9a3bba1f-5O6EA6LX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{gitGraphDiagram-96e6b4ee-CAKZ2U6E.js → gitGraphDiagram-96e6b4ee-UHYNM5DI.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/image-CMH7O36X.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{infoDiagram-bcd20f53-MUIKXGC4.js → infoDiagram-bcd20f53-BP77NQEH.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{journeyDiagram-4fe6b3dc-NYRV4HK2.js → journeyDiagram-4fe6b3dc-XMGKCMES.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{mindmap-definition-f354de21-MY55DRSM.js → mindmap-definition-f354de21-ZQRRBRWF.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{pieDiagram-79897490-47L6J6L2.js → pieDiagram-79897490-IGXEC2KX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{quadrantDiagram-62f64e94-DF5C2GDT.js → quadrantDiagram-62f64e94-WTHHDYJL.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{requirementDiagram-05bf5f74-C4IMUBDN.js → requirementDiagram-05bf5f74-MV4OFRVW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{sankeyDiagram-97764748-YHW7EUST.js → sankeyDiagram-97764748-ZGYUHEJT.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{sequenceDiagram-acc0e65c-H3XEHT32.js → sequenceDiagram-acc0e65c-IBSENK6W.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-0ff1cf1a-Z5WB6Q3P.js → stateDiagram-0ff1cf1a-DB73XNZH.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-v2-9a9d610d-T7OZETQC.js → stateDiagram-v2-9a9d610d-2OOBUPNR.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{timeline-definition-fea2a41d-VVC22BWF.js → timeline-definition-fea2a41d-P3NQQVDU.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{xychartDiagram-ab372869-JAXODQF7.js → xychartDiagram-ab372869-HI3XLK3Y.js} +1 -1
- package/dist/browser/prod/index.css +1 -1
- package/dist/browser/prod/index.js +70 -51
- package/dist/dev/CascadiaMono-Regular-NWCXRPUG.woff2 +0 -0
- package/dist/dev/ComicShanns-Regular-6TOETDFT.woff2 +0 -0
- package/dist/dev/Excalifont-Regular-CPKEUDVM.woff2 +0 -0
- package/dist/dev/LiberationSans-Regular-ZQD73GJM.woff2 +0 -0
- package/dist/dev/Virgil-Regular-YHAB2VGJ.woff2 +0 -0
- package/dist/{prod/en-II4GK66F.json → dev/en-HDAPS7XK.json} +41 -9
- package/dist/dev/index.css +668 -191
- package/dist/dev/index.css.map +3 -3
- package/dist/dev/index.js +22026 -16675
- package/dist/dev/index.js.map +4 -4
- package/dist/excalidraw/actions/actionAddToLibrary.d.ts +22 -10
- package/dist/excalidraw/actions/actionAddToLibrary.js +4 -3
- package/dist/excalidraw/actions/actionAlign.d.ts +22 -22
- package/dist/excalidraw/actions/actionAlign.js +7 -6
- package/dist/excalidraw/actions/actionBoundText.d.ts +22 -14
- package/dist/excalidraw/actions/actionBoundText.js +11 -5
- package/dist/excalidraw/actions/actionCanvas.d.ts +124 -76
- package/dist/excalidraw/actions/actionCanvas.js +20 -15
- package/dist/excalidraw/actions/actionClipboard.d.ts +66 -38
- package/dist/excalidraw/actions/actionClipboard.js +14 -13
- package/dist/excalidraw/actions/actionDeleteSelected.d.ts +28 -16
- package/dist/excalidraw/actions/actionDeleteSelected.js +6 -3
- package/dist/excalidraw/actions/actionDistribute.d.ts +10 -10
- package/dist/excalidraw/actions/actionDistribute.js +3 -2
- package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +7 -8
- package/dist/excalidraw/actions/actionDuplicateSelection.js +7 -3
- package/dist/excalidraw/actions/actionElementLock.d.ts +21 -13
- package/dist/excalidraw/actions/actionElementLock.js +3 -2
- package/dist/excalidraw/actions/actionExport.d.ts +87 -51
- package/dist/excalidraw/actions/actionExport.js +15 -11
- package/dist/excalidraw/actions/actionFinalize.d.ts +21 -13
- package/dist/excalidraw/actions/actionFinalize.js +9 -5
- package/dist/excalidraw/actions/actionFlip.d.ts +10 -10
- package/dist/excalidraw/actions/actionFlip.js +12 -12
- package/dist/excalidraw/actions/actionFrame.d.ts +193 -24
- package/dist/excalidraw/actions/actionFrame.js +7 -6
- package/dist/excalidraw/actions/actionGroup.d.ts +28 -20
- package/dist/excalidraw/actions/actionGroup.js +9 -11
- package/dist/excalidraw/actions/actionHistory.d.ts +4 -3
- package/dist/excalidraw/actions/actionHistory.js +27 -28
- package/dist/excalidraw/actions/actionLinearEditor.d.ts +12 -6
- package/dist/excalidraw/actions/actionLinearEditor.js +21 -5
- package/dist/excalidraw/actions/actionLink.d.ts +11 -7
- package/dist/excalidraw/actions/actionLink.js +2 -1
- package/dist/excalidraw/actions/actionMenu.d.ts +26 -14
- package/dist/excalidraw/actions/actionMenu.js +4 -3
- package/dist/excalidraw/actions/actionNavigate.d.ts +16 -8
- package/dist/excalidraw/actions/actionNavigate.js +3 -2
- package/dist/excalidraw/actions/actionProperties.d.ts +272 -62
- package/dist/excalidraw/actions/actionProperties.js +261 -59
- package/dist/excalidraw/actions/actionSelectAll.d.ts +11 -7
- package/dist/excalidraw/actions/actionSelectAll.js +2 -1
- package/dist/excalidraw/actions/actionStyles.d.ts +17 -13
- package/dist/excalidraw/actions/actionStyles.js +7 -5
- package/dist/excalidraw/actions/actionTextAutoResize.d.ts +17 -0
- package/dist/excalidraw/actions/actionTextAutoResize.js +38 -0
- package/dist/excalidraw/actions/actionToggleGridMode.d.ts +13 -7
- package/dist/excalidraw/actions/actionToggleGridMode.js +6 -2
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +10 -6
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.js +2 -1
- package/dist/excalidraw/actions/actionToggleStats.d.ts +11 -6
- package/dist/excalidraw/actions/actionToggleStats.js +6 -4
- package/dist/excalidraw/actions/actionToggleViewMode.d.ts +10 -6
- package/dist/excalidraw/actions/actionToggleViewMode.js +2 -1
- package/dist/excalidraw/actions/actionToggleZenMode.d.ts +10 -6
- package/dist/excalidraw/actions/actionToggleZenMode.js +2 -1
- package/dist/excalidraw/actions/actionZindex.d.ts +23 -19
- package/dist/excalidraw/actions/actionZindex.js +9 -4
- package/dist/excalidraw/actions/manager.d.ts +5 -5
- package/dist/excalidraw/actions/register.d.ts +1 -1
- package/dist/excalidraw/actions/shortcuts.d.ts +2 -2
- package/dist/excalidraw/actions/shortcuts.js +1 -1
- package/dist/excalidraw/actions/types.d.ts +8 -8
- package/dist/excalidraw/align.d.ts +1 -1
- package/dist/excalidraw/analytics.js +9 -7
- package/dist/excalidraw/animated-trail.d.ts +2 -2
- package/dist/excalidraw/appState.d.ts +9 -6
- package/dist/excalidraw/appState.js +8 -3
- package/dist/excalidraw/change.d.ts +191 -0
- package/dist/excalidraw/change.js +901 -0
- 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 +10 -7
- package/dist/excalidraw/components/App.d.ts +26 -16
- package/dist/excalidraw/components/App.js +490 -217
- package/dist/excalidraw/components/ButtonIcon.d.ts +15 -0
- package/dist/excalidraw/components/ButtonIcon.js +8 -0
- package/dist/excalidraw/components/ButtonIconSelect.js +2 -3
- package/dist/excalidraw/components/ButtonSeparator.d.ts +2 -0
- package/dist/excalidraw/components/ButtonSeparator.js +7 -0
- 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 +48 -80
- package/dist/excalidraw/components/ColorPicker/Picker.d.ts +3 -3
- package/dist/excalidraw/components/ColorPicker/Picker.js +1 -1
- 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 +33 -18
- 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/DarkModeToggle.js +3 -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/FontPicker/FontPicker.d.ts +21 -0
- package/dist/excalidraw/components/FontPicker/FontPicker.js +49 -0
- package/dist/excalidraw/components/FontPicker/FontPickerList.d.ts +25 -0
- package/dist/excalidraw/components/FontPicker/FontPickerList.js +119 -0
- package/dist/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +7 -0
- package/dist/excalidraw/components/FontPicker/FontPickerTrigger.js +13 -0
- package/dist/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +14 -0
- package/dist/excalidraw/components/FontPicker/keyboardNavHandlers.js +38 -0
- package/dist/excalidraw/components/HelpDialog.js +9 -7
- 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 +10 -7
- 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 +2 -6
- 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/PropertiesPopover.d.ts +15 -0
- package/dist/excalidraw/components/PropertiesPopover.js +31 -0
- package/dist/excalidraw/components/PublishLibrary.d.ts +1 -1
- package/dist/excalidraw/components/QuickSearch.d.ts +9 -0
- package/dist/excalidraw/components/QuickSearch.js +8 -0
- package/dist/excalidraw/components/RadioGroup.d.ts +2 -1
- package/dist/excalidraw/components/RadioGroup.js +1 -1
- package/dist/excalidraw/components/SVGLayer.d.ts +1 -1
- package/dist/excalidraw/components/ScrollableList.d.ts +9 -0
- package/dist/excalidraw/components/ScrollableList.js +8 -0
- 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/Angle.d.ts +12 -0
- package/dist/excalidraw/components/Stats/Angle.js +52 -0
- package/dist/excalidraw/components/Stats/Collapsible.d.ts +9 -0
- package/dist/excalidraw/components/Stats/Collapsible.js +12 -0
- package/dist/excalidraw/components/Stats/Dimension.d.ts +12 -0
- package/dist/excalidraw/components/Stats/Dimension.js +67 -0
- package/dist/excalidraw/components/Stats/DragInput.d.ts +32 -0
- package/dist/excalidraw/components/Stats/DragInput.js +174 -0
- package/dist/excalidraw/components/Stats/FontSize.d.ts +12 -0
- package/dist/excalidraw/components/Stats/FontSize.js +50 -0
- package/dist/excalidraw/components/Stats/MultiAngle.d.ts +12 -0
- package/dist/excalidraw/components/Stats/MultiAngle.js +66 -0
- package/dist/excalidraw/components/Stats/MultiDimension.d.ts +15 -0
- package/dist/excalidraw/components/Stats/MultiDimension.js +197 -0
- package/dist/excalidraw/components/Stats/MultiFontSize.d.ts +13 -0
- package/dist/excalidraw/components/Stats/MultiFontSize.js +72 -0
- package/dist/excalidraw/components/Stats/MultiPosition.d.ts +15 -0
- package/dist/excalidraw/components/Stats/MultiPosition.js +100 -0
- package/dist/excalidraw/components/Stats/Position.d.ts +13 -0
- package/dist/excalidraw/components/Stats/Position.js +39 -0
- package/dist/excalidraw/components/Stats/index.d.ts +16 -0
- package/dist/excalidraw/components/Stats/index.js +78 -0
- package/dist/excalidraw/components/Stats/utils.d.ts +25 -0
- package/dist/excalidraw/components/Stats/utils.js +158 -0
- package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.js +6 -2
- 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 +5 -5
- package/dist/excalidraw/components/TTDDialog/common.js +3 -7
- 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 +4 -2
- package/dist/excalidraw/components/ToolButton.js +1 -1
- package/dist/excalidraw/components/Trans.d.ts +1 -1
- package/dist/excalidraw/components/UserList.d.ts +1 -1
- package/dist/excalidraw/components/UserList.js +22 -22
- 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 +3 -2
- package/dist/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +12 -3
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +24 -4
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItem.js +55 -14
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +2 -1
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContent.js +2 -2
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +18 -0
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.js +9 -0
- package/dist/excalidraw/components/dropdownMenu/common.d.ts +1 -1
- package/dist/excalidraw/components/dropdownMenu/common.js +3 -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/Hyperlink.js +3 -3
- package/dist/excalidraw/components/hyperlink/helpers.d.ts +3 -3
- package/dist/excalidraw/components/hyperlink/helpers.js +2 -3
- package/dist/excalidraw/components/icons.d.ts +10 -1
- package/dist/excalidraw/components/icons.js +27 -5
- package/dist/excalidraw/components/main-menu/DefaultItems.d.ts +12 -2
- package/dist/excalidraw/components/main-menu/DefaultItems.js +38 -7
- package/dist/excalidraw/components/main-menu/MainMenu.d.ts +12 -3
- package/dist/excalidraw/components/welcome-screen/WelcomeScreen.Center.js +2 -2
- package/dist/excalidraw/components/welcome-screen/WelcomeScreen.Hints.js +3 -3
- package/dist/excalidraw/constants.d.ts +24 -6
- package/dist/excalidraw/constants.js +29 -7
- 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/magic.js +2 -1
- package/dist/excalidraw/data/reconcile.d.ts +6 -0
- package/dist/excalidraw/data/reconcile.js +49 -0
- package/dist/excalidraw/data/resave.d.ts +2 -2
- package/dist/excalidraw/data/restore.d.ts +5 -5
- package/dist/excalidraw/data/restore.js +25 -10
- package/dist/excalidraw/data/transform.d.ts +4 -4
- package/dist/excalidraw/data/transform.js +15 -5
- package/dist/excalidraw/data/types.d.ts +3 -3
- package/dist/excalidraw/data/url.d.ts +1 -0
- package/dist/excalidraw/data/url.js +4 -1
- package/dist/excalidraw/element/ElementCanvasButtons.d.ts +1 -1
- package/dist/excalidraw/element/binding.d.ts +49 -8
- package/dist/excalidraw/element/binding.js +716 -153
- package/dist/excalidraw/element/bounds.d.ts +3 -4
- package/dist/excalidraw/element/bounds.js +0 -3
- package/dist/excalidraw/element/collision.d.ts +14 -19
- package/dist/excalidraw/element/collision.js +36 -713
- 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 +15 -8
- package/dist/excalidraw/element/embeddable.js +98 -62
- package/dist/excalidraw/element/image.d.ts +2 -2
- package/dist/excalidraw/element/index.d.ts +2 -3
- package/dist/excalidraw/element/index.js +1 -2
- package/dist/excalidraw/element/linearElementEditor.d.ts +18 -14
- package/dist/excalidraw/element/linearElementEditor.js +12 -7
- package/dist/excalidraw/element/mutateElement.d.ts +4 -5
- package/dist/excalidraw/element/mutateElement.js +5 -3
- package/dist/excalidraw/element/newElement.d.ts +6 -9
- package/dist/excalidraw/element/newElement.js +21 -17
- package/dist/excalidraw/element/resizeElements.d.ts +12 -4
- package/dist/excalidraw/element/resizeElements.js +174 -98
- 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/sizeHelpers.js +3 -0
- package/dist/excalidraw/element/sortElements.d.ts +1 -1
- package/dist/excalidraw/element/textElement.d.ts +7 -30
- package/dist/excalidraw/element/textElement.js +68 -144
- package/dist/excalidraw/element/textWysiwyg.d.ts +12 -6
- package/dist/excalidraw/element/textWysiwyg.js +75 -62
- package/dist/excalidraw/element/transformHandles.d.ts +24 -6
- package/dist/excalidraw/element/transformHandles.js +22 -11
- package/dist/excalidraw/element/typeChecks.d.ts +5 -5
- package/dist/excalidraw/element/types.d.ts +33 -10
- package/dist/excalidraw/emitter.d.ts +1 -1
- package/dist/excalidraw/errors.d.ts +3 -0
- package/dist/excalidraw/errors.js +3 -0
- package/dist/excalidraw/fonts/ExcalidrawFont.d.ts +17 -0
- package/dist/excalidraw/fonts/ExcalidrawFont.js +50 -0
- package/dist/excalidraw/fonts/index.d.ts +45 -0
- package/dist/excalidraw/fonts/index.js +202 -0
- package/dist/excalidraw/fonts/metadata.d.ts +34 -0
- package/dist/excalidraw/fonts/metadata.js +90 -0
- package/dist/excalidraw/fractionalIndex.d.ts +40 -0
- package/dist/excalidraw/fractionalIndex.js +239 -0
- package/dist/excalidraw/frame.d.ts +4 -4
- package/dist/excalidraw/gatransforms.d.ts +1 -1
- package/dist/excalidraw/gesture.d.ts +1 -1
- package/dist/excalidraw/groups.d.ts +6 -4
- package/dist/excalidraw/groups.js +17 -0
- package/dist/excalidraw/history.d.ts +35 -47
- package/dist/excalidraw/history.js +100 -167
- package/dist/excalidraw/hooks/useCreatePortalContainer.js +2 -1
- package/dist/excalidraw/hooks/useEmitter.d.ts +2 -0
- package/dist/excalidraw/hooks/useEmitter.js +13 -0
- package/dist/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
- package/dist/excalidraw/i18n.d.ts +1 -1
- package/dist/excalidraw/index.d.ts +4 -2
- package/dist/excalidraw/index.js +5 -3
- package/dist/excalidraw/jotai.d.ts +1 -1
- package/dist/excalidraw/laser-trails.d.ts +3 -2
- package/dist/excalidraw/locales/en.json +41 -9
- package/dist/excalidraw/math.d.ts +4 -2
- package/dist/excalidraw/math.js +6 -0
- 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/helpers.js +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 +6 -4
- package/dist/excalidraw/renderer/renderElement.js +81 -61
- package/dist/excalidraw/renderer/renderSnaps.d.ts +1 -1
- package/dist/excalidraw/renderer/renderSnaps.js +2 -1
- package/dist/excalidraw/renderer/staticScene.d.ts +1 -1
- package/dist/excalidraw/renderer/staticScene.js +14 -3
- package/dist/excalidraw/renderer/staticSvgScene.d.ts +4 -4
- package/dist/excalidraw/renderer/staticSvgScene.js +12 -1
- package/dist/excalidraw/scene/Renderer.d.ts +4 -4
- package/dist/excalidraw/scene/Renderer.js +2 -3
- package/dist/excalidraw/scene/Scene.d.ts +22 -12
- package/dist/excalidraw/scene/Scene.js +47 -23
- package/dist/excalidraw/scene/Shape.d.ts +1 -1
- package/dist/excalidraw/scene/ShapeCache.d.ts +4 -4
- package/dist/excalidraw/scene/comparisons.d.ts +2 -2
- package/dist/excalidraw/scene/export.d.ts +3 -2
- package/dist/excalidraw/scene/export.js +40 -29
- 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 -8
- package/dist/excalidraw/scene/zoom.d.ts +1 -1
- package/dist/excalidraw/shapes.d.ts +7 -0
- package/dist/excalidraw/shapes.js +40 -0
- package/dist/excalidraw/snapping.d.ts +4 -4
- package/dist/excalidraw/snapping.js +2 -1
- package/dist/excalidraw/store.d.ts +129 -0
- package/dist/excalidraw/store.js +296 -0
- package/dist/excalidraw/types.d.ts +45 -22
- package/dist/excalidraw/utils.d.ts +20 -4
- package/dist/excalidraw/utils.js +29 -0
- package/dist/excalidraw/zindex.d.ts +4 -4
- package/dist/excalidraw/zindex.js +9 -13
- package/dist/prod/CascadiaMono-Regular-NWCXRPUG.woff2 +0 -0
- package/dist/prod/ComicShanns-Regular-6TOETDFT.woff2 +0 -0
- package/dist/prod/Excalifont-Regular-CPKEUDVM.woff2 +0 -0
- package/dist/prod/LiberationSans-Regular-ZQD73GJM.woff2 +0 -0
- package/dist/prod/Virgil-Regular-YHAB2VGJ.woff2 +0 -0
- package/dist/{dev/en-II4GK66F.json → prod/en-HDAPS7XK.json} +41 -9
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +47 -53
- package/dist/utils/bbox.d.ts +2 -2
- package/dist/utils/collision.d.ts +4 -0
- package/dist/utils/collision.js +48 -0
- package/dist/utils/export.d.ts +4 -3
- package/dist/utils/export.js +2 -1
- package/dist/utils/geometry/geometry.d.ts +71 -0
- package/dist/utils/geometry/geometry.js +674 -0
- package/dist/utils/geometry/shape.d.ts +56 -0
- package/dist/utils/geometry/shape.js +168 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/withinBounds.d.ts +1 -1
- package/history.ts +163 -218
- package/package.json +3 -2
- package/dist/browser/dev/Cascadia-CYPE3OJC.woff2 +0 -0
- package/dist/browser/dev/Virgil-UZN6MUT6.woff2 +0 -0
- package/dist/browser/dev/excalidraw-assets-dev/chunk-AK7SWNLN.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-RWZVJAQU.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-Z3PH3V2B.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/dist-Z46EOVOL.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/image-OFRRV5MB.css.map +0 -7
- package/dist/browser/prod/Cascadia-CYPE3OJC.woff2 +0 -0
- package/dist/browser/prod/Virgil-UZN6MUT6.woff2 +0 -0
- package/dist/browser/prod/excalidraw-assets/chunk-LL4GORAM.js +0 -55
- package/dist/browser/prod/excalidraw-assets/dist-PIPZXALV.js +0 -6
- package/dist/browser/prod/excalidraw-assets/en-LROPV2RN.js +0 -1
- package/dist/browser/prod/excalidraw-assets/image-EFCJDJH3.js +0 -1
- package/dist/dev/Cascadia-CYPE3OJC.woff2 +0 -0
- package/dist/dev/Virgil-UZN6MUT6.woff2 +0 -0
- package/dist/excalidraw/components/Stats.d.ts +0 -11
- package/dist/excalidraw/components/Stats.js +0 -13
- package/dist/excalidraw/scene/Fonts.d.ts +0 -21
- package/dist/excalidraw/scene/Fonts.js +0 -72
- package/dist/prod/Cascadia-CYPE3OJC.woff2 +0 -0
- package/dist/prod/Virgil-UZN6MUT6.woff2 +0 -0
- /package/dist/browser/dev/{Assistant-Bold-ZDZZ6JHA.woff2 → excalidraw-assets-dev/Assistant-Bold-ZDZZ6JHA.woff2} +0 -0
- /package/dist/browser/dev/{Assistant-Medium-DZ25RZU3.woff2 → excalidraw-assets-dev/Assistant-Medium-DZ25RZU3.woff2} +0 -0
- /package/dist/browser/dev/{Assistant-Regular-PLF2XOGW.woff2 → excalidraw-assets-dev/Assistant-Regular-PLF2XOGW.woff2} +0 -0
- /package/dist/browser/dev/{Assistant-SemiBold-CZ5MX6FK.woff2 → excalidraw-assets-dev/Assistant-SemiBold-CZ5MX6FK.woff2} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-ACFH36JV.js.map → blockDiagram-91b80b7a-H47FTXHA.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-QZ27YR47.js.map → c4Diagram-b2a90758-NNJK6GKC.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-HO2HMSK7.js.map → chunk-4KQVEBHW.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-USGV265L.js.map → chunk-53YI56GV.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-EDFX3S7X.js.map → chunk-A2WCJI4I.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-IX4V72YG.js.map → chunk-EFLPX7NE.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-MXVETLVM.js.map → chunk-JYIQCNWV.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-YZIOORVX.js.map → chunk-LVIQQW6F.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-6U7GQNJT.js.map → chunk-PXLO3FOU.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-7DACDEY3.js.map → chunk-TO2AW5PW.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-NJ77ZFNJ.js.map → chunk-VURILHLY.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-2T2GU7NF.js.map → chunk-ZAYGSUHF.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-QSLMH4JW.js.map → classDiagram-30eddba6-CUYIJICN.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-DY4DYQ5P.js.map → classDiagram-v2-f2df5561-K6WW6K73.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{en-5TCZHGGJ.js.map → en-RAFN4KPD.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-SOOJRTCB.js.map → erDiagram-47591fe2-XGAD7EEP.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-AHGL4KPK.js.map → flowDiagram-5540d9b9-B6EOVNNO.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-56LDZZWY.js.map → flowDiagram-v2-3b53844e-NUG24FJH.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-27LUKRI6.js.map → flowchart-elk-definition-5fe447d6-25Y7PCBL.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-EHGYGNG6.js.map → ganttDiagram-9a3bba1f-GNL6ZDTC.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJQNBDW5.js.map → gitGraphDiagram-96e6b4ee-HNW52NVO.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-EDKQZH7Z.js.map → image-ZNLDWTK3.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-SWLLQVES.js.map → infoDiagram-bcd20f53-FWEUVFLT.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-7UAVCWOZ.js.map → journeyDiagram-4fe6b3dc-RZIUI7UG.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-SROW5KGM.js.map → mindmap-definition-f354de21-GBVN45GU.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-QKCI6NCB.js.map → pieDiagram-79897490-ECENNII6.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-LNYJZFC5.js.map → quadrantDiagram-62f64e94-ZMEOFVNL.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZZD7ZHFA.js.map → requirementDiagram-05bf5f74-FHZSFHCR.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-L75ZZ4UM.js.map → sankeyDiagram-97764748-VDKIKTA6.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-6PCU7TDK.js.map → sequenceDiagram-acc0e65c-6JUSPVKX.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-WM76WOPR.js.map → stateDiagram-0ff1cf1a-L3AKWENF.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-N4HZW3O2.js.map → stateDiagram-v2-9a9d610d-NU3GGMCH.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-ZHGCAXGP.js.map → timeline-definition-fea2a41d-JGP7XCHW.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-2DLOVRAZ.js.map → xychartDiagram-ab372869-HLFHHF2I.js.map} +0 -0
- /package/dist/browser/prod/{Assistant-Bold-ZDZZ6JHA.woff2 → excalidraw-assets/Assistant-Bold-ZDZZ6JHA.woff2} +0 -0
- /package/dist/browser/prod/{Assistant-Medium-DZ25RZU3.woff2 → excalidraw-assets/Assistant-Medium-DZ25RZU3.woff2} +0 -0
- /package/dist/browser/prod/{Assistant-Regular-PLF2XOGW.woff2 → excalidraw-assets/Assistant-Regular-PLF2XOGW.woff2} +0 -0
- /package/dist/browser/prod/{Assistant-SemiBold-CZ5MX6FK.woff2 → excalidraw-assets/Assistant-SemiBold-CZ5MX6FK.woff2} +0 -0
|
@@ -2,7 +2,7 @@ import { CODES, KEYS } from "../keys";
|
|
|
2
2
|
import { isWritableElement, getFontString, getFontFamilyString, isTestEnv, } from "../utils";
|
|
3
3
|
import Scene from "../scene/Scene";
|
|
4
4
|
import { isArrowElement, isBoundToContainer, isTextElement, } from "./typeChecks";
|
|
5
|
-
import { CLASSES } from "../constants";
|
|
5
|
+
import { CLASSES, isSafari } from "../constants";
|
|
6
6
|
import { bumpVersion, mutateElement } from "./mutateElement";
|
|
7
7
|
import { getBoundTextElementId, getContainerElement, getTextElementAngle, getTextWidth, normalizeText, redrawTextBoundingBox, wrapText, getBoundTextMaxHeight, getBoundTextMaxWidth, computeContainerDimensionForBoundText, computeBoundTextPosition, getBoundTextElement, } from "./textElement";
|
|
8
8
|
import { actionDecreaseFontSize, actionIncreaseFontSize, } from "../actions/actionProperties";
|
|
@@ -23,7 +23,7 @@ const getTransform = (width, height, angle, appState, maxWidth, maxHeight) => {
|
|
|
23
23
|
}
|
|
24
24
|
return `translate(${translateX}px, ${translateY}px) scale(${zoom.value}) rotate(${degree}deg)`;
|
|
25
25
|
};
|
|
26
|
-
export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, }) => {
|
|
26
|
+
export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, autoSelect = true, }) => {
|
|
27
27
|
const textPropertiesUpdated = (updatedTextElement, editable) => {
|
|
28
28
|
if (!editable.style.fontFamily || !editable.style.fontSize) {
|
|
29
29
|
return false;
|
|
@@ -50,12 +50,12 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
50
50
|
let coordX = updatedTextElement.x;
|
|
51
51
|
let coordY = updatedTextElement.y;
|
|
52
52
|
const container = getContainerElement(updatedTextElement, app.scene.getNonDeletedElementsMap());
|
|
53
|
+
let width = updatedTextElement.width;
|
|
54
|
+
// set to element height by default since that's
|
|
55
|
+
// what is going to be used for unbounded text
|
|
56
|
+
let height = updatedTextElement.height;
|
|
53
57
|
let maxWidth = updatedTextElement.width;
|
|
54
58
|
let maxHeight = updatedTextElement.height;
|
|
55
|
-
let textElementWidth = updatedTextElement.width;
|
|
56
|
-
// Set to element height by default since that's
|
|
57
|
-
// what is going to be used for unbounded text
|
|
58
|
-
const textElementHeight = updatedTextElement.height;
|
|
59
59
|
if (container && updatedTextElement.containerId) {
|
|
60
60
|
if (isArrowElement(container)) {
|
|
61
61
|
const boundTextCoords = LinearElementEditor.getBoundTextElementPosition(container, updatedTextElement, elementsMap);
|
|
@@ -76,8 +76,8 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
76
76
|
maxWidth = getBoundTextMaxWidth(container, updatedTextElement);
|
|
77
77
|
maxHeight = getBoundTextMaxHeight(container, updatedTextElement);
|
|
78
78
|
// autogrow container height if text exceeds
|
|
79
|
-
if (!isArrowElement(container) &&
|
|
80
|
-
const targetContainerHeight = computeContainerDimensionForBoundText(
|
|
79
|
+
if (!isArrowElement(container) && height > maxHeight) {
|
|
80
|
+
const targetContainerHeight = computeContainerDimensionForBoundText(height, container.type);
|
|
81
81
|
mutateElement(container, { height: targetContainerHeight });
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
@@ -86,8 +86,8 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
86
86
|
// is reached when text is removed
|
|
87
87
|
!isArrowElement(container) &&
|
|
88
88
|
container.height > originalContainerData.height &&
|
|
89
|
-
|
|
90
|
-
const targetContainerHeight = computeContainerDimensionForBoundText(
|
|
89
|
+
height < maxHeight) {
|
|
90
|
+
const targetContainerHeight = computeContainerDimensionForBoundText(height, container.type);
|
|
91
91
|
mutateElement(container, { height: targetContainerHeight });
|
|
92
92
|
}
|
|
93
93
|
else {
|
|
@@ -111,19 +111,30 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
111
111
|
}
|
|
112
112
|
if (!container) {
|
|
113
113
|
maxWidth = (appState.width - 8 - viewportX) / appState.zoom.value;
|
|
114
|
-
|
|
114
|
+
width = Math.min(width, maxWidth);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
width += 0.5;
|
|
115
118
|
}
|
|
119
|
+
// add 5% buffer otherwise it causes wysiwyg to jump
|
|
120
|
+
height *= 1.05;
|
|
121
|
+
const font = getFontString(updatedTextElement);
|
|
122
|
+
// adding left and right padding buffer, so that browser does not cut the glyphs (does not work in Safari)
|
|
123
|
+
const padding = !isSafari
|
|
124
|
+
? Math.ceil(updatedTextElement.fontSize / 2)
|
|
125
|
+
: 0;
|
|
116
126
|
// Make sure text editor height doesn't go beyond viewport
|
|
117
127
|
const editorMaxHeight = (appState.height - viewportY) / appState.zoom.value;
|
|
118
128
|
Object.assign(editable.style, {
|
|
119
|
-
font
|
|
129
|
+
font,
|
|
120
130
|
// must be defined *after* font ¯\_(ツ)_/¯
|
|
121
131
|
lineHeight: updatedTextElement.lineHeight,
|
|
122
|
-
width: `${
|
|
123
|
-
height: `${
|
|
124
|
-
left: `${viewportX}px`,
|
|
132
|
+
width: `${width}px`,
|
|
133
|
+
height: `${height}px`,
|
|
134
|
+
left: `${viewportX - padding}px`,
|
|
125
135
|
top: `${viewportY}px`,
|
|
126
|
-
transform: getTransform(
|
|
136
|
+
transform: getTransform(width, height, getTextElementAngle(updatedTextElement, container), appState, maxWidth, editorMaxHeight),
|
|
137
|
+
padding: `0 ${padding}px`,
|
|
127
138
|
textAlign,
|
|
128
139
|
verticalAlign,
|
|
129
140
|
color: updatedTextElement.strokeColor,
|
|
@@ -149,7 +160,7 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
149
160
|
editable.classList.add("excalidraw-wysiwyg");
|
|
150
161
|
let whiteSpace = "pre";
|
|
151
162
|
let wordBreak = "normal";
|
|
152
|
-
if (isBoundToContainer(element)) {
|
|
163
|
+
if (isBoundToContainer(element) || !element.autoResize) {
|
|
153
164
|
whiteSpace = "pre-wrap";
|
|
154
165
|
wordBreak = "break-word";
|
|
155
166
|
}
|
|
@@ -159,7 +170,6 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
159
170
|
minHeight: "1em",
|
|
160
171
|
backfaceVisibility: "hidden",
|
|
161
172
|
margin: 0,
|
|
162
|
-
padding: 0,
|
|
163
173
|
border: 0,
|
|
164
174
|
outline: 0,
|
|
165
175
|
resize: "none",
|
|
@@ -193,7 +203,7 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
193
203
|
if (container) {
|
|
194
204
|
const boundTextElement = getBoundTextElement(container, app.scene.getNonDeletedElementsMap());
|
|
195
205
|
const wrappedText = wrapText(`${editable.value}${data}`, font, getBoundTextMaxWidth(container, boundTextElement));
|
|
196
|
-
const width = getTextWidth(wrappedText, font);
|
|
206
|
+
const width = getTextWidth(wrappedText, font, true);
|
|
197
207
|
editable.style.width = `${width}px`;
|
|
198
208
|
}
|
|
199
209
|
};
|
|
@@ -319,13 +329,20 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
319
329
|
.reverse();
|
|
320
330
|
};
|
|
321
331
|
const stopEvent = (event) => {
|
|
322
|
-
event.
|
|
323
|
-
|
|
332
|
+
if (event.target instanceof HTMLCanvasElement) {
|
|
333
|
+
event.preventDefault();
|
|
334
|
+
event.stopPropagation();
|
|
335
|
+
}
|
|
324
336
|
};
|
|
325
337
|
// using a state variable instead of passing it to the handleSubmit callback
|
|
326
338
|
// so that we don't need to create separate a callback for event handlers
|
|
327
339
|
let submittedViaKeyboard = false;
|
|
328
340
|
const handleSubmit = () => {
|
|
341
|
+
// prevent double submit
|
|
342
|
+
if (isDestroyed) {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
isDestroyed = true;
|
|
329
346
|
// cleanup must be run before onSubmit otherwise when app blurs the wysiwyg
|
|
330
347
|
// it'd get stuck in an infinite loop of blur→onSubmit after we re-focus the
|
|
331
348
|
// wysiwyg on update
|
|
@@ -334,10 +351,8 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
334
351
|
if (!updateElement) {
|
|
335
352
|
return;
|
|
336
353
|
}
|
|
337
|
-
let text = editable.value;
|
|
338
354
|
const container = getContainerElement(updateElement, app.scene.getNonDeletedElementsMap());
|
|
339
355
|
if (container) {
|
|
340
|
-
text = updateElement.text;
|
|
341
356
|
if (editable.value.trim()) {
|
|
342
357
|
const boundTextElementId = getBoundTextElementId(container);
|
|
343
358
|
if (!boundTextElementId || boundTextElementId !== element.id) {
|
|
@@ -361,16 +376,11 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
361
376
|
redrawTextBoundingBox(updateElement, container, app.scene.getNonDeletedElementsMap());
|
|
362
377
|
}
|
|
363
378
|
onSubmit({
|
|
364
|
-
text,
|
|
365
379
|
viaKeyboard: submittedViaKeyboard,
|
|
366
|
-
|
|
380
|
+
nextOriginalText: editable.value,
|
|
367
381
|
});
|
|
368
382
|
};
|
|
369
383
|
const cleanup = () => {
|
|
370
|
-
if (isDestroyed) {
|
|
371
|
-
return;
|
|
372
|
-
}
|
|
373
|
-
isDestroyed = true;
|
|
374
384
|
// remove events to ensure they don't late-fire
|
|
375
385
|
editable.onblur = null;
|
|
376
386
|
editable.oninput = null;
|
|
@@ -394,65 +404,63 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
394
404
|
// Also to handle cases such as picking a color which would trigger a blur
|
|
395
405
|
// in that same tick.
|
|
396
406
|
const target = event?.target;
|
|
397
|
-
const
|
|
398
|
-
target.classList.contains("
|
|
407
|
+
const isPropertiesTrigger = target instanceof HTMLElement &&
|
|
408
|
+
target.classList.contains("properties-trigger");
|
|
399
409
|
setTimeout(() => {
|
|
400
410
|
editable.onblur = handleSubmit;
|
|
401
|
-
if (isTargetPickerTrigger) {
|
|
402
|
-
const callback = (mutationList, observer) => {
|
|
403
|
-
const radixIsRemoved = mutationList.find((mutation) => mutation.removedNodes.length > 0 &&
|
|
404
|
-
mutation.removedNodes[0].dataset
|
|
405
|
-
?.radixPopperContentWrapper !== undefined);
|
|
406
|
-
if (radixIsRemoved) {
|
|
407
|
-
// should work without this in theory
|
|
408
|
-
// and i think it does actually but radix probably somewhere,
|
|
409
|
-
// somehow sets the focus elsewhere
|
|
410
|
-
setTimeout(() => {
|
|
411
|
-
editable.focus();
|
|
412
|
-
});
|
|
413
|
-
observer.disconnect();
|
|
414
|
-
}
|
|
415
|
-
};
|
|
416
|
-
const observer = new MutationObserver(callback);
|
|
417
|
-
observer.observe(document.querySelector(".excalidraw-container"), {
|
|
418
|
-
childList: true,
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
411
|
// case: clicking on the same property → no change → no update → no focus
|
|
422
|
-
if (!
|
|
412
|
+
if (!isPropertiesTrigger) {
|
|
423
413
|
editable.focus();
|
|
424
414
|
}
|
|
425
415
|
});
|
|
426
416
|
};
|
|
427
417
|
// prevent blur when changing properties from the menu
|
|
428
418
|
const onPointerDown = (event) => {
|
|
429
|
-
const
|
|
430
|
-
|
|
419
|
+
const target = event?.target;
|
|
420
|
+
const isPropertiesTrigger = target instanceof HTMLElement &&
|
|
421
|
+
target.classList.contains("properties-trigger");
|
|
431
422
|
if (((event.target instanceof HTMLElement ||
|
|
432
423
|
event.target instanceof SVGElement) &&
|
|
433
424
|
event.target.closest(`.${CLASSES.SHAPE_ACTIONS_MENU}`) &&
|
|
434
425
|
!isWritableElement(event.target)) ||
|
|
435
|
-
|
|
426
|
+
isPropertiesTrigger) {
|
|
436
427
|
editable.onblur = null;
|
|
437
428
|
window.addEventListener("pointerup", bindBlurEvent);
|
|
438
429
|
// handle edge-case where pointerup doesn't fire e.g. due to user
|
|
439
430
|
// alt-tabbing away
|
|
440
431
|
window.addEventListener("blur", handleSubmit);
|
|
441
432
|
}
|
|
433
|
+
else if (event.target instanceof HTMLElement &&
|
|
434
|
+
event.target instanceof HTMLCanvasElement &&
|
|
435
|
+
// Vitest simply ignores stopPropagation, capture-mode, or rAF
|
|
436
|
+
// so without introducing crazier hacks, nothing we can do
|
|
437
|
+
!isTestEnv()) {
|
|
438
|
+
// On mobile, blur event doesn't seem to always fire correctly,
|
|
439
|
+
// so we want to also submit on pointerdown outside the wysiwyg.
|
|
440
|
+
// Done in the next frame to prevent pointerdown from creating a new text
|
|
441
|
+
// immediately (if tools locked) so that users on mobile have chance
|
|
442
|
+
// to submit first (to hide virtual keyboard).
|
|
443
|
+
// Note: revisit if we want to differ this behavior on Desktop
|
|
444
|
+
requestAnimationFrame(() => {
|
|
445
|
+
handleSubmit();
|
|
446
|
+
});
|
|
447
|
+
}
|
|
442
448
|
};
|
|
443
449
|
// handle updates of textElement properties of editing element
|
|
444
|
-
const unbindUpdate = Scene.getScene(element).
|
|
450
|
+
const unbindUpdate = Scene.getScene(element).onUpdate(() => {
|
|
445
451
|
updateWysiwygStyle();
|
|
446
|
-
const
|
|
447
|
-
if (!
|
|
452
|
+
const isPopupOpened = !!document.activeElement?.closest(".properties-content");
|
|
453
|
+
if (!isPopupOpened) {
|
|
448
454
|
editable.focus();
|
|
449
455
|
}
|
|
450
456
|
});
|
|
451
457
|
// ---------------------------------------------------------------------------
|
|
452
458
|
let isDestroyed = false;
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
459
|
+
if (autoSelect) {
|
|
460
|
+
// select on init (focusing is done separately inside the bindBlurEvent()
|
|
461
|
+
// because we need it to happen *after* the blur event from `pointerdown`)
|
|
462
|
+
editable.select();
|
|
463
|
+
}
|
|
456
464
|
bindBlurEvent();
|
|
457
465
|
// reposition wysiwyg in case of canvas is resized. Using ResizeObserver
|
|
458
466
|
// is preferred so we catch changes from host, where window may not resize.
|
|
@@ -466,7 +474,12 @@ export const textWysiwyg = ({ id, onChange, onSubmit, getViewportCoords, element
|
|
|
466
474
|
else {
|
|
467
475
|
window.addEventListener("resize", updateWysiwygStyle);
|
|
468
476
|
}
|
|
469
|
-
|
|
477
|
+
editable.onpointerdown = (event) => event.stopPropagation();
|
|
478
|
+
// rAF (+ capture to by doubly sure) so we don't catch te pointerdown that
|
|
479
|
+
// triggered the wysiwyg
|
|
480
|
+
requestAnimationFrame(() => {
|
|
481
|
+
window.addEventListener("pointerdown", onPointerDown, { capture: true });
|
|
482
|
+
});
|
|
470
483
|
window.addEventListener("wheel", stopEvent, {
|
|
471
484
|
passive: false,
|
|
472
485
|
capture: true,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement, PointerType } from "./types";
|
|
2
|
-
import { Bounds } from "./bounds";
|
|
3
|
-
import { InteractiveCanvasAppState, Zoom } from "../types";
|
|
1
|
+
import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement, PointerType } from "./types";
|
|
2
|
+
import type { Bounds } from "./bounds";
|
|
3
|
+
import type { Device, InteractiveCanvasAppState, Zoom } from "../types";
|
|
4
4
|
export type TransformHandleDirection = "n" | "s" | "w" | "e" | "nw" | "ne" | "sw" | "se";
|
|
5
5
|
export type TransformHandleType = TransformHandleDirection | "rotation";
|
|
6
6
|
export type TransformHandle = Bounds;
|
|
@@ -8,6 +8,12 @@ export type TransformHandles = Partial<{
|
|
|
8
8
|
[T in TransformHandleType]: TransformHandle;
|
|
9
9
|
}>;
|
|
10
10
|
export type MaybeTransformHandleType = TransformHandleType | false;
|
|
11
|
+
export declare const DEFAULT_OMIT_SIDES: {
|
|
12
|
+
e: boolean;
|
|
13
|
+
s: boolean;
|
|
14
|
+
n: boolean;
|
|
15
|
+
w: boolean;
|
|
16
|
+
};
|
|
11
17
|
export declare const OMIT_SIDES_FOR_MULTIPLE_ELEMENTS: {
|
|
12
18
|
e: boolean;
|
|
13
19
|
s: boolean;
|
|
@@ -21,16 +27,28 @@ export declare const OMIT_SIDES_FOR_FRAME: {
|
|
|
21
27
|
w: boolean;
|
|
22
28
|
rotation: boolean;
|
|
23
29
|
};
|
|
30
|
+
export declare const canResizeFromSides: (device: Device) => boolean;
|
|
31
|
+
export declare const getOmitSidesForDevice: (device: Device) => {};
|
|
24
32
|
export declare const getTransformHandlesFromCoords: ([x1, y1, x2, y2, cx, cy]: [number, number, number, number, number, number], angle: number, zoom: Zoom, pointerType: PointerType, omitSides?: {
|
|
25
33
|
s?: boolean | undefined;
|
|
26
|
-
n?: boolean | undefined;
|
|
27
|
-
w?: boolean | undefined;
|
|
28
34
|
e?: boolean | undefined;
|
|
35
|
+
w?: boolean | undefined;
|
|
36
|
+
n?: boolean | undefined;
|
|
29
37
|
nw?: boolean | undefined;
|
|
30
38
|
ne?: boolean | undefined;
|
|
31
39
|
sw?: boolean | undefined;
|
|
32
40
|
se?: boolean | undefined;
|
|
33
41
|
rotation?: boolean | undefined;
|
|
34
42
|
}, margin?: number) => TransformHandles;
|
|
35
|
-
export declare const getTransformHandles: (element: ExcalidrawElement, zoom: Zoom, elementsMap: ElementsMap, pointerType?: PointerType
|
|
43
|
+
export declare const getTransformHandles: (element: ExcalidrawElement, zoom: Zoom, elementsMap: ElementsMap, pointerType?: PointerType, omitSides?: {
|
|
44
|
+
s?: boolean | undefined;
|
|
45
|
+
e?: boolean | undefined;
|
|
46
|
+
w?: boolean | undefined;
|
|
47
|
+
n?: boolean | undefined;
|
|
48
|
+
nw?: boolean | undefined;
|
|
49
|
+
ne?: boolean | undefined;
|
|
50
|
+
sw?: boolean | undefined;
|
|
51
|
+
se?: boolean | undefined;
|
|
52
|
+
rotation?: boolean | undefined;
|
|
53
|
+
}) => TransformHandles;
|
|
36
54
|
export declare const shouldShowBoundingBox: (elements: readonly NonDeletedExcalidrawElement[], appState: InteractiveCanvasAppState) => boolean;
|
|
@@ -1,32 +1,31 @@
|
|
|
1
1
|
import { getElementAbsoluteCoords } from "./bounds";
|
|
2
2
|
import { rotate } from "../math";
|
|
3
|
-
import { isTextElement } from ".";
|
|
4
3
|
import { isFrameLikeElement, isLinearElement } from "./typeChecks";
|
|
5
|
-
import { DEFAULT_TRANSFORM_HANDLE_SPACING } from "../constants";
|
|
4
|
+
import { DEFAULT_TRANSFORM_HANDLE_SPACING, isAndroid, isIOS, } from "../constants";
|
|
6
5
|
const transformHandleSizes = {
|
|
7
6
|
mouse: 8,
|
|
8
7
|
pen: 16,
|
|
9
8
|
touch: 28,
|
|
10
9
|
};
|
|
11
10
|
const ROTATION_RESIZE_HANDLE_GAP = 16;
|
|
12
|
-
export const
|
|
11
|
+
export const DEFAULT_OMIT_SIDES = {
|
|
13
12
|
e: true,
|
|
14
13
|
s: true,
|
|
15
14
|
n: true,
|
|
16
15
|
w: true,
|
|
17
16
|
};
|
|
18
|
-
export const
|
|
17
|
+
export const OMIT_SIDES_FOR_MULTIPLE_ELEMENTS = {
|
|
19
18
|
e: true,
|
|
20
19
|
s: true,
|
|
21
20
|
n: true,
|
|
22
21
|
w: true,
|
|
23
|
-
rotation: true,
|
|
24
22
|
};
|
|
25
|
-
const
|
|
23
|
+
export const OMIT_SIDES_FOR_FRAME = {
|
|
26
24
|
e: true,
|
|
27
25
|
s: true,
|
|
28
26
|
n: true,
|
|
29
27
|
w: true,
|
|
28
|
+
rotation: true,
|
|
30
29
|
};
|
|
31
30
|
const OMIT_SIDES_FOR_LINE_SLASH = {
|
|
32
31
|
e: true,
|
|
@@ -46,6 +45,21 @@ const generateTransformHandle = (x, y, width, height, cx, cy, angle) => {
|
|
|
46
45
|
const [xx, yy] = rotate(x + width / 2, y + height / 2, cx, cy, angle);
|
|
47
46
|
return [xx - width / 2, yy - height / 2, width, height];
|
|
48
47
|
};
|
|
48
|
+
export const canResizeFromSides = (device) => {
|
|
49
|
+
if (device.viewport.isMobile) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
if (device.isTouchScreen && (isAndroid || isIOS)) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
};
|
|
57
|
+
export const getOmitSidesForDevice = (device) => {
|
|
58
|
+
if (canResizeFromSides(device)) {
|
|
59
|
+
return DEFAULT_OMIT_SIDES;
|
|
60
|
+
}
|
|
61
|
+
return {};
|
|
62
|
+
};
|
|
49
63
|
export const getTransformHandlesFromCoords = ([x1, y1, x2, y2, cx, cy], angle, zoom, pointerType, omitSides = {}, margin = 4) => {
|
|
50
64
|
const size = transformHandleSizes[pointerType];
|
|
51
65
|
const handleWidth = size / zoom.value;
|
|
@@ -98,14 +112,13 @@ export const getTransformHandlesFromCoords = ([x1, y1, x2, y2, cx, cy], angle, z
|
|
|
98
112
|
}
|
|
99
113
|
return transformHandles;
|
|
100
114
|
};
|
|
101
|
-
export const getTransformHandles = (element, zoom, elementsMap, pointerType = "mouse") => {
|
|
115
|
+
export const getTransformHandles = (element, zoom, elementsMap, pointerType = "mouse", omitSides = DEFAULT_OMIT_SIDES) => {
|
|
102
116
|
// so that when locked element is selected (especially when you toggle lock
|
|
103
117
|
// via keyboard) the locked element is visually distinct, indicating
|
|
104
118
|
// you can't move/resize
|
|
105
119
|
if (element.locked) {
|
|
106
120
|
return {};
|
|
107
121
|
}
|
|
108
|
-
let omitSides = {};
|
|
109
122
|
if (element.type === "freedraw" || isLinearElement(element)) {
|
|
110
123
|
if (element.points.length === 2) {
|
|
111
124
|
// only check the last point because starting point is always (0,0)
|
|
@@ -127,11 +140,9 @@ export const getTransformHandles = (element, zoom, elementsMap, pointerType = "m
|
|
|
127
140
|
}
|
|
128
141
|
}
|
|
129
142
|
}
|
|
130
|
-
else if (isTextElement(element)) {
|
|
131
|
-
omitSides = OMIT_SIDES_FOR_TEXT_ELEMENT;
|
|
132
|
-
}
|
|
133
143
|
else if (isFrameLikeElement(element)) {
|
|
134
144
|
omitSides = {
|
|
145
|
+
...omitSides,
|
|
135
146
|
rotation: true,
|
|
136
147
|
};
|
|
137
148
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ElementOrToolType } from "../types";
|
|
2
|
-
import { MarkNonNullable } from "../utility-types";
|
|
3
|
-
import { ExcalidrawElement, ExcalidrawTextElement, ExcalidrawEmbeddableElement, ExcalidrawLinearElement, ExcalidrawBindableElement, ExcalidrawFreeDrawElement, InitializedExcalidrawImageElement, ExcalidrawImageElement, ExcalidrawTextElementWithContainer, ExcalidrawTextContainer, ExcalidrawFrameElement, RoundnessType, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeElement, ExcalidrawIframeLikeElement, ExcalidrawMagicFrameElement } from "./types";
|
|
1
|
+
import type { ElementOrToolType } from "../types";
|
|
2
|
+
import type { MarkNonNullable } from "../utility-types";
|
|
3
|
+
import type { ExcalidrawElement, ExcalidrawTextElement, ExcalidrawEmbeddableElement, ExcalidrawLinearElement, ExcalidrawBindableElement, ExcalidrawFreeDrawElement, InitializedExcalidrawImageElement, ExcalidrawImageElement, ExcalidrawTextElementWithContainer, ExcalidrawTextContainer, ExcalidrawFrameElement, RoundnessType, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeElement, ExcalidrawIframeLikeElement, ExcalidrawMagicFrameElement, ExcalidrawArrowElement } from "./types";
|
|
4
4
|
export declare const isInitializedImageElement: (element: ExcalidrawElement | null) => element is InitializedExcalidrawImageElement;
|
|
5
5
|
export declare const isImageElement: (element: ExcalidrawElement | null) => element is ExcalidrawImageElement;
|
|
6
6
|
export declare const isEmbeddableElement: (element: ExcalidrawElement | null | undefined) => element is ExcalidrawEmbeddableElement;
|
|
@@ -13,11 +13,11 @@ export declare const isFrameLikeElement: (element: ExcalidrawElement | null) =>
|
|
|
13
13
|
export declare const isFreeDrawElement: (element?: ExcalidrawElement | null) => element is ExcalidrawFreeDrawElement;
|
|
14
14
|
export declare const isFreeDrawElementType: (elementType: ExcalidrawElementType) => boolean;
|
|
15
15
|
export declare const isLinearElement: (element?: ExcalidrawElement | null) => element is ExcalidrawLinearElement;
|
|
16
|
-
export declare const isArrowElement: (element?: ExcalidrawElement | null) => element is
|
|
16
|
+
export declare const isArrowElement: (element?: ExcalidrawElement | null) => element is ExcalidrawArrowElement;
|
|
17
17
|
export declare const isLinearElementType: (elementType: ElementOrToolType) => boolean;
|
|
18
18
|
export declare const isBindingElement: (element?: ExcalidrawElement | null, includeLocked?: boolean) => element is ExcalidrawLinearElement;
|
|
19
19
|
export declare const isBindingElementType: (elementType: ElementOrToolType) => boolean;
|
|
20
|
-
export declare const isBindableElement: (element: ExcalidrawElement | null, includeLocked?: boolean) => element is ExcalidrawBindableElement;
|
|
20
|
+
export declare const isBindableElement: (element: ExcalidrawElement | null | undefined, includeLocked?: boolean) => element is ExcalidrawBindableElement;
|
|
21
21
|
export declare const isTextBindableContainer: (element: ExcalidrawElement | null, includeLocked?: boolean) => element is ExcalidrawTextContainer;
|
|
22
22
|
export declare const isExcalidrawElement: (element: any) => element is ExcalidrawElement;
|
|
23
23
|
export declare const hasBoundTextElement: (element: ExcalidrawElement | null) => element is MarkNonNullable<ExcalidrawBindableElement, "boundElements">;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Point } from "../types";
|
|
2
|
-
import { FONT_FAMILY, ROUNDNESS, TEXT_ALIGN, THEME, VERTICAL_ALIGN } from "../constants";
|
|
3
|
-
import { MakeBrand, MarkNonNullable, ValueOf } from "../utility-types";
|
|
4
|
-
import { MagicCacheData } from "../data/magic";
|
|
1
|
+
import type { Point } from "../types";
|
|
2
|
+
import type { FONT_FAMILY, ROUNDNESS, TEXT_ALIGN, THEME, VERTICAL_ALIGN } from "../constants";
|
|
3
|
+
import type { MakeBrand, MarkNonNullable, ValueOf } from "../utility-types";
|
|
4
|
+
import type { MagicCacheData } from "../data/magic";
|
|
5
5
|
export type ChartType = "bar" | "line";
|
|
6
6
|
export type FillStyle = "hachure" | "cross-hatch" | "solid" | "zigzag";
|
|
7
7
|
export type FontFamilyKeys = keyof typeof FONT_FAMILY;
|
|
@@ -18,6 +18,13 @@ export type StrokeStyle = "solid" | "dashed" | "dotted";
|
|
|
18
18
|
export type TextAlign = typeof TEXT_ALIGN[keyof typeof TEXT_ALIGN];
|
|
19
19
|
type VerticalAlignKeys = keyof typeof VERTICAL_ALIGN;
|
|
20
20
|
export type VerticalAlign = typeof VERTICAL_ALIGN[VerticalAlignKeys];
|
|
21
|
+
export type FractionalIndex = string & {
|
|
22
|
+
_brand: "franctionalIndex";
|
|
23
|
+
};
|
|
24
|
+
export type BoundElement = Readonly<{
|
|
25
|
+
id: ExcalidrawLinearElement["id"];
|
|
26
|
+
type: "arrow" | "text";
|
|
27
|
+
}>;
|
|
21
28
|
type _ExcalidrawElementBase = Readonly<{
|
|
22
29
|
id: string;
|
|
23
30
|
x: number;
|
|
@@ -46,16 +53,18 @@ type _ExcalidrawElementBase = Readonly<{
|
|
|
46
53
|
Used for deterministic reconciliation of updates during collaboration,
|
|
47
54
|
in case the versions (see above) are identical. */
|
|
48
55
|
versionNonce: number;
|
|
56
|
+
/** String in a fractional form defined by https://github.com/rocicorp/fractional-indexing.
|
|
57
|
+
Used for ordering in multiplayer scenarios, such as during reconciliation or undo / redo.
|
|
58
|
+
Always kept in sync with the array order by `syncMovedIndices` and `syncInvalidIndices`.
|
|
59
|
+
Could be null, i.e. for new elements which were not yet assigned to the scene. */
|
|
60
|
+
index: FractionalIndex | null;
|
|
49
61
|
isDeleted: boolean;
|
|
50
62
|
/** List of groups the element belongs to.
|
|
51
63
|
Ordered from deepest to shallowest. */
|
|
52
64
|
groupIds: readonly GroupId[];
|
|
53
65
|
frameId: string | null;
|
|
54
66
|
/** other elements that are bound to this element */
|
|
55
|
-
boundElements: readonly
|
|
56
|
-
id: ExcalidrawLinearElement["id"];
|
|
57
|
-
type: "arrow" | "text";
|
|
58
|
-
}>[] | null;
|
|
67
|
+
boundElements: readonly BoundElement[] | null;
|
|
59
68
|
/** epoch (ms) timestamp of last element update */
|
|
60
69
|
updated: number;
|
|
61
70
|
link: string | null;
|
|
@@ -90,6 +99,9 @@ export type IframeData = ({
|
|
|
90
99
|
h: number;
|
|
91
100
|
};
|
|
92
101
|
error?: Error;
|
|
102
|
+
sandbox?: {
|
|
103
|
+
allowSameOrigin?: boolean;
|
|
104
|
+
};
|
|
93
105
|
} & ({
|
|
94
106
|
type: "video" | "generic";
|
|
95
107
|
link: string;
|
|
@@ -125,6 +137,10 @@ export type ExcalidrawGenericElement = ExcalidrawSelectionElement | ExcalidrawRe
|
|
|
125
137
|
* between peers and contain no state local to the peer.
|
|
126
138
|
*/
|
|
127
139
|
export type ExcalidrawElement = ExcalidrawGenericElement | ExcalidrawTextElement | ExcalidrawLinearElement | ExcalidrawFreeDrawElement | ExcalidrawImageElement | ExcalidrawFrameElement | ExcalidrawMagicFrameElement | ExcalidrawIframeElement | ExcalidrawEmbeddableElement;
|
|
140
|
+
export type Ordered<TElement extends ExcalidrawElement> = TElement & {
|
|
141
|
+
index: FractionalIndex;
|
|
142
|
+
};
|
|
143
|
+
export type OrderedExcalidrawElement = Ordered<ExcalidrawElement>;
|
|
128
144
|
export type NonDeleted<TElement extends ExcalidrawElement> = TElement & {
|
|
129
145
|
isDeleted: boolean;
|
|
130
146
|
};
|
|
@@ -138,6 +154,13 @@ export type ExcalidrawTextElement = _ExcalidrawElementBase & Readonly<{
|
|
|
138
154
|
verticalAlign: VerticalAlign;
|
|
139
155
|
containerId: ExcalidrawGenericElement["id"] | null;
|
|
140
156
|
originalText: string;
|
|
157
|
+
/**
|
|
158
|
+
* If `true` the width will fit the text. If `false`, the text will
|
|
159
|
+
* wrap to fit the width.
|
|
160
|
+
*
|
|
161
|
+
* @default true
|
|
162
|
+
*/
|
|
163
|
+
autoResize: boolean;
|
|
141
164
|
/**
|
|
142
165
|
* Unitless line height (aligned to W3C). To get line height in px, multiply
|
|
143
166
|
* with font size (using `getLineHeightInPx` helper).
|
|
@@ -195,11 +218,11 @@ export type NonDeletedElementsMap = Map<ExcalidrawElement["id"], NonDeletedExcal
|
|
|
195
218
|
* Map of all excalidraw Scene elements, including deleted.
|
|
196
219
|
* Not a subset. Use this type when you need access to current Scene elements.
|
|
197
220
|
*/
|
|
198
|
-
export type SceneElementsMap = Map<ExcalidrawElement["id"], ExcalidrawElement
|
|
221
|
+
export type SceneElementsMap = Map<ExcalidrawElement["id"], Ordered<ExcalidrawElement>> & MakeBrand<"SceneElementsMap">;
|
|
199
222
|
/**
|
|
200
223
|
* Map of all non-deleted Scene elements.
|
|
201
224
|
* Not a subset. Use this type when you need access to current Scene elements.
|
|
202
225
|
*/
|
|
203
|
-
export type NonDeletedSceneElementsMap = Map<ExcalidrawElement["id"], NonDeletedExcalidrawElement
|
|
226
|
+
export type NonDeletedSceneElementsMap = Map<ExcalidrawElement["id"], Ordered<NonDeletedExcalidrawElement>> & MakeBrand<"NonDeletedSceneElementsMap">;
|
|
204
227
|
export type ElementsMapOrArray = readonly ExcalidrawElement[] | Readonly<ElementsMap>;
|
|
205
228
|
export {};
|
|
@@ -10,4 +10,7 @@ export declare class ImageSceneDataError extends Error {
|
|
|
10
10
|
code: ImageSceneDataErrorCode;
|
|
11
11
|
constructor(message?: string, code?: ImageSceneDataErrorCode);
|
|
12
12
|
}
|
|
13
|
+
export declare class InvalidFractionalIndexError extends Error {
|
|
14
|
+
code: "ELEMENT_HAS_INVALID_INDEX";
|
|
15
|
+
}
|
|
13
16
|
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface Font {
|
|
2
|
+
url: URL;
|
|
3
|
+
fontFace: FontFace;
|
|
4
|
+
getContent(): Promise<string>;
|
|
5
|
+
}
|
|
6
|
+
export declare const UNPKG_PROD_URL: string;
|
|
7
|
+
export declare class ExcalidrawFont implements Font {
|
|
8
|
+
readonly url: URL;
|
|
9
|
+
readonly fontFace: FontFace;
|
|
10
|
+
constructor(family: string, uri: string, descriptors?: FontFaceDescriptors);
|
|
11
|
+
/**
|
|
12
|
+
* Fetches woff2 content based on the registered url (browser).
|
|
13
|
+
*
|
|
14
|
+
* Use dataurl outside the browser environment.
|
|
15
|
+
*/
|
|
16
|
+
getContent(): Promise<string>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { stringToBase64, toByteString } from "../data/encode";
|
|
2
|
+
export const UNPKG_PROD_URL = `https://unpkg.com/${import.meta.env.VITE_PKG_NAME}@${import.meta.env.PKG_VERSION}/dist/prod/`;
|
|
3
|
+
export class ExcalidrawFont {
|
|
4
|
+
url;
|
|
5
|
+
fontFace;
|
|
6
|
+
constructor(family, uri, descriptors) {
|
|
7
|
+
// absolute assets paths, which are found in tests and excalidraw-app build, won't work with base url, so we are stripping initial slash away
|
|
8
|
+
const assetUrl = uri.replace(/^\/+/, "");
|
|
9
|
+
let baseUrl = undefined;
|
|
10
|
+
// fallback to unpkg to form a valid URL in case of a passed relative assetUrl
|
|
11
|
+
let baseUrlBuilder = window.EXCALIDRAW_ASSET_PATH || UNPKG_PROD_URL;
|
|
12
|
+
// in case user passed a root-relative url (~absolute path),
|
|
13
|
+
// like "/" or "/some/path", or relative (starts with "./"),
|
|
14
|
+
// prepend it with `location.origin`
|
|
15
|
+
if (/^\.?\//.test(baseUrlBuilder)) {
|
|
16
|
+
baseUrlBuilder = new URL(baseUrlBuilder.replace(/^\.?\/+/, ""), window?.location?.origin).toString();
|
|
17
|
+
}
|
|
18
|
+
// ensure there is a trailing slash, otherwise url won't be correctly concatenated
|
|
19
|
+
baseUrl = `${baseUrlBuilder.replace(/\/+$/, "")}/`;
|
|
20
|
+
this.url = new URL(assetUrl, baseUrl);
|
|
21
|
+
this.fontFace = new FontFace(family, `url(${this.url})`, {
|
|
22
|
+
display: "swap",
|
|
23
|
+
style: "normal",
|
|
24
|
+
weight: "400",
|
|
25
|
+
...descriptors,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Fetches woff2 content based on the registered url (browser).
|
|
30
|
+
*
|
|
31
|
+
* Use dataurl outside the browser environment.
|
|
32
|
+
*/
|
|
33
|
+
async getContent() {
|
|
34
|
+
if (this.url.protocol === "data:") {
|
|
35
|
+
// it's dataurl, the font is inlined as base64, no need to fetch
|
|
36
|
+
return this.url.toString();
|
|
37
|
+
}
|
|
38
|
+
const response = await fetch(this.url, {
|
|
39
|
+
headers: {
|
|
40
|
+
Accept: "font/woff2",
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
if (!response.ok) {
|
|
44
|
+
console.error(`Couldn't fetch font-family "${this.fontFace.family}" from url "${this.url}"`, response);
|
|
45
|
+
}
|
|
46
|
+
const mimeType = await response.headers.get("Content-Type");
|
|
47
|
+
const buffer = await response.arrayBuffer();
|
|
48
|
+
return `data:${mimeType};base64,${await stringToBase64(await toByteString(buffer), true)}`;
|
|
49
|
+
}
|
|
50
|
+
}
|