@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
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getTransformHandlesFromCoords, getTransformHandles, getOmitSidesForDevice, canResizeFromSides, } from "./transformHandles";
|
|
2
|
+
import { getElementAbsoluteCoords } from "./bounds";
|
|
3
|
+
import { SIDE_RESIZING_THRESHOLD } from "../constants";
|
|
4
|
+
import { angleToDegrees, pointOnLine, pointRotate, } from "../../utils/geometry/geometry";
|
|
5
|
+
import { isLinearElement } from "./typeChecks";
|
|
2
6
|
const isInsideTransformHandle = (transformHandle, x, y) => x >= transformHandle[0] &&
|
|
3
7
|
x <= transformHandle[0] + transformHandle[2] &&
|
|
4
8
|
y >= transformHandle[1] &&
|
|
5
9
|
y <= transformHandle[1] + transformHandle[3];
|
|
6
|
-
export const resizeTest = (element, elementsMap, appState, x, y, zoom, pointerType) => {
|
|
10
|
+
export const resizeTest = (element, elementsMap, appState, x, y, zoom, pointerType, device) => {
|
|
7
11
|
if (!appState.selectedElementIds[element.id]) {
|
|
8
12
|
return false;
|
|
9
13
|
}
|
|
10
|
-
const { rotation: rotationTransformHandle, ...transformHandles } = getTransformHandles(element, zoom, elementsMap, pointerType);
|
|
14
|
+
const { rotation: rotationTransformHandle, ...transformHandles } = getTransformHandles(element, zoom, elementsMap, pointerType, getOmitSidesForDevice(device));
|
|
11
15
|
if (rotationTransformHandle &&
|
|
12
16
|
isInsideTransformHandle(rotationTransformHandle, x, y)) {
|
|
13
17
|
return "rotation";
|
|
@@ -22,25 +26,54 @@ export const resizeTest = (element, elementsMap, appState, x, y, zoom, pointerTy
|
|
|
22
26
|
if (filter.length > 0) {
|
|
23
27
|
return filter[0];
|
|
24
28
|
}
|
|
29
|
+
if (canResizeFromSides(device)) {
|
|
30
|
+
const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(element, elementsMap);
|
|
31
|
+
// do not resize from the sides for linear elements with only two points
|
|
32
|
+
if (!(isLinearElement(element) && element.points.length <= 2)) {
|
|
33
|
+
const SPACING = SIDE_RESIZING_THRESHOLD / zoom.value;
|
|
34
|
+
const sides = getSelectionBorders([x1 - SPACING, y1 - SPACING], [x2 + SPACING, y2 + SPACING], [cx, cy], angleToDegrees(element.angle));
|
|
35
|
+
for (const [dir, side] of Object.entries(sides)) {
|
|
36
|
+
// test to see if x, y are on the line segment
|
|
37
|
+
if (pointOnLine([x, y], side, SPACING)) {
|
|
38
|
+
return dir;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
25
43
|
return false;
|
|
26
44
|
};
|
|
27
|
-
export const getElementWithTransformHandleType = (elements, appState, scenePointerX, scenePointerY, zoom, pointerType, elementsMap) => {
|
|
45
|
+
export const getElementWithTransformHandleType = (elements, appState, scenePointerX, scenePointerY, zoom, pointerType, elementsMap, device) => {
|
|
28
46
|
return elements.reduce((result, element) => {
|
|
29
47
|
if (result) {
|
|
30
48
|
return result;
|
|
31
49
|
}
|
|
32
|
-
const transformHandleType = resizeTest(element, elementsMap, appState, scenePointerX, scenePointerY, zoom, pointerType);
|
|
50
|
+
const transformHandleType = resizeTest(element, elementsMap, appState, scenePointerX, scenePointerY, zoom, pointerType, device);
|
|
33
51
|
return transformHandleType ? { element, transformHandleType } : null;
|
|
34
52
|
}, null);
|
|
35
53
|
};
|
|
36
|
-
export const getTransformHandleTypeFromCoords = ([x1, y1, x2, y2], scenePointerX, scenePointerY, zoom, pointerType) => {
|
|
37
|
-
const transformHandles = getTransformHandlesFromCoords([x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2], 0, zoom, pointerType,
|
|
54
|
+
export const getTransformHandleTypeFromCoords = ([x1, y1, x2, y2], scenePointerX, scenePointerY, zoom, pointerType, device) => {
|
|
55
|
+
const transformHandles = getTransformHandlesFromCoords([x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2], 0, zoom, pointerType, getOmitSidesForDevice(device));
|
|
38
56
|
const found = Object.keys(transformHandles).find((key) => {
|
|
39
57
|
const transformHandle = transformHandles[key];
|
|
40
58
|
return (transformHandle &&
|
|
41
59
|
isInsideTransformHandle(transformHandle, scenePointerX, scenePointerY));
|
|
42
60
|
});
|
|
43
|
-
|
|
61
|
+
if (found) {
|
|
62
|
+
return found;
|
|
63
|
+
}
|
|
64
|
+
if (canResizeFromSides(device)) {
|
|
65
|
+
const cx = (x1 + x2) / 2;
|
|
66
|
+
const cy = (y1 + y2) / 2;
|
|
67
|
+
const SPACING = SIDE_RESIZING_THRESHOLD / zoom.value;
|
|
68
|
+
const sides = getSelectionBorders([x1 - SPACING, y1 - SPACING], [x2 + SPACING, y2 + SPACING], [cx, cy], angleToDegrees(0));
|
|
69
|
+
for (const [dir, side] of Object.entries(sides)) {
|
|
70
|
+
// test to see if x, y are on the line segment
|
|
71
|
+
if (pointOnLine([scenePointerX, scenePointerY], side, SPACING)) {
|
|
72
|
+
return dir;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
44
77
|
};
|
|
45
78
|
const RESIZE_CURSORS = ["ns", "nesw", "ew", "nwse"];
|
|
46
79
|
const rotateResizeCursor = (cursor, angle) => {
|
|
@@ -93,3 +126,15 @@ export const getCursorForResizingElement = (resizingElement) => {
|
|
|
93
126
|
}
|
|
94
127
|
return cursor ? `${cursor}-resize` : "";
|
|
95
128
|
};
|
|
129
|
+
const getSelectionBorders = ([x1, y1], [x2, y2], center, angleInDegrees) => {
|
|
130
|
+
const topLeft = pointRotate([x1, y1], angleInDegrees, center);
|
|
131
|
+
const topRight = pointRotate([x2, y1], angleInDegrees, center);
|
|
132
|
+
const bottomLeft = pointRotate([x1, y2], angleInDegrees, center);
|
|
133
|
+
const bottomRight = pointRotate([x2, y2], angleInDegrees, center);
|
|
134
|
+
return {
|
|
135
|
+
n: [topLeft, topRight],
|
|
136
|
+
e: [topRight, bottomRight],
|
|
137
|
+
s: [bottomRight, bottomLeft],
|
|
138
|
+
w: [bottomLeft, topLeft],
|
|
139
|
+
};
|
|
140
|
+
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { NonDeletedExcalidrawElement } from "./types";
|
|
2
|
-
import { UIAppState } from "../types";
|
|
1
|
+
import type { NonDeletedExcalidrawElement } from "./types";
|
|
2
|
+
import type { UIAppState } from "../types";
|
|
3
3
|
export declare const showSelectedShapeActions: (appState: UIAppState, elements: readonly NonDeletedExcalidrawElement[]) => boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ElementsMap, ExcalidrawElement } from "./types";
|
|
2
|
-
import { AppState, Zoom } from "../types";
|
|
1
|
+
import type { ElementsMap, ExcalidrawElement } from "./types";
|
|
2
|
+
import type { AppState, Zoom } from "../types";
|
|
3
3
|
export declare const isInvisiblySmallElement: (element: ExcalidrawElement) => boolean;
|
|
4
4
|
export declare const isElementInViewport: (element: ExcalidrawElement, width: number, height: number, viewTransformations: {
|
|
5
5
|
zoom: Zoom;
|
|
@@ -3,6 +3,9 @@ import { isFreeDrawElement, isLinearElement } from "./typeChecks";
|
|
|
3
3
|
import { SHIFT_LOCKING_ANGLE } from "../constants";
|
|
4
4
|
import { getElementBounds } from "./bounds";
|
|
5
5
|
import { viewportCoordsToSceneCoords } from "../utils";
|
|
6
|
+
// TODO: remove invisible elements consistently actions, so that invisible elements are not recorded by the store, exported, broadcasted or persisted
|
|
7
|
+
// - perhaps could be as part of a standalone 'cleanup' action, in addition to 'finalize'
|
|
8
|
+
// - could also be part of `_clearElements`
|
|
6
9
|
export const isInvisiblySmallElement = (element) => {
|
|
7
10
|
if (isLinearElement(element) || isFreeDrawElement(element)) {
|
|
8
11
|
return element.points.length < 2;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ExcalidrawElement } from "./types";
|
|
1
|
+
import type { ExcalidrawElement } from "./types";
|
|
2
2
|
export declare const normalizeElementOrder: (elements: readonly ExcalidrawElement[]) => readonly ExcalidrawElement[];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ElementsMap, ExcalidrawElement, ExcalidrawElementType, ExcalidrawTextContainer, ExcalidrawTextElement, ExcalidrawTextElementWithContainer,
|
|
2
|
-
import { MaybeTransformHandleType } from "./transformHandles";
|
|
3
|
-
import { AppState } from "../types";
|
|
4
|
-
import { ExtractSetType
|
|
1
|
+
import type { ElementsMap, ExcalidrawElement, ExcalidrawElementType, ExcalidrawTextContainer, ExcalidrawTextElement, ExcalidrawTextElementWithContainer, FontString, NonDeletedExcalidrawElement } from "./types";
|
|
2
|
+
import type { MaybeTransformHandleType } from "./transformHandles";
|
|
3
|
+
import type { AppState } from "../types";
|
|
4
|
+
import type { ExtractSetType } from "../utility-types";
|
|
5
5
|
export declare const normalizeText: (text: string) => string;
|
|
6
|
-
export declare const redrawTextBoundingBox: (textElement: ExcalidrawTextElement, container: ExcalidrawElement | null, elementsMap: ElementsMap) => void;
|
|
6
|
+
export declare const redrawTextBoundingBox: (textElement: ExcalidrawTextElement, container: ExcalidrawElement | null, elementsMap: ElementsMap, informMutation?: boolean) => void;
|
|
7
7
|
export declare const bindTextToShapeAfterDuplication: (newElements: ExcalidrawElement[], oldElements: ExcalidrawElement[], oldIdToDuplicatedId: Map<ExcalidrawElement["id"], ExcalidrawElement["id"]>) => void;
|
|
8
8
|
export declare const handleBindTextResize: (container: NonDeletedExcalidrawElement, elementsMap: ElementsMap, transformHandleType: MaybeTransformHandleType, shouldMaintainAspectRatio?: boolean) => void;
|
|
9
9
|
export declare const computeBoundTextPosition: (container: ExcalidrawElement, boundTextElement: ExcalidrawTextElementWithContainer, elementsMap: ElementsMap) => {
|
|
@@ -26,12 +26,8 @@ export declare const detectLineHeight: (textElement: ExcalidrawTextElement) => n
|
|
|
26
26
|
* aligning with the W3C spec.
|
|
27
27
|
*/
|
|
28
28
|
export declare const getLineHeightInPx: (fontSize: ExcalidrawTextElement["fontSize"], lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
|
|
29
|
-
/**
|
|
30
|
-
* Calculates vertical offset for a text with alphabetic baseline.
|
|
31
|
-
*/
|
|
32
|
-
export declare const getVerticalOffset: (fontFamily: ExcalidrawTextElement["fontFamily"], fontSize: ExcalidrawTextElement["fontSize"], lineHeightPx: number) => number;
|
|
33
29
|
export declare const getApproxMinLineHeight: (fontSize: ExcalidrawTextElement["fontSize"], lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
|
|
34
|
-
export declare const getTextWidth: (text: string, font: FontString) => number;
|
|
30
|
+
export declare const getTextWidth: (text: string, font: FontString, forceAdvanceWidth?: true) => number;
|
|
35
31
|
export declare const getTextHeight: (text: string, fontSize: number, lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
|
|
36
32
|
export declare const parseTokens: (text: string) => string[];
|
|
37
33
|
export declare const wrapText: (text: string, font: FontString, maxWidth: number) => string;
|
|
@@ -42,7 +38,6 @@ export declare const charWidth: {
|
|
|
42
38
|
export declare const getApproxMinLineWidth: (font: FontString, lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
|
|
43
39
|
export declare const getMinCharWidth: (font: FontString) => number;
|
|
44
40
|
export declare const getMaxCharWidth: (font: FontString) => number;
|
|
45
|
-
export declare const getApproxCharsToFitInWidth: (font: FontString, width: number) => number;
|
|
46
41
|
export declare const getBoundTextElementId: (container: ExcalidrawElement | null) => string | null;
|
|
47
42
|
export declare const getBoundTextElement: (element: ExcalidrawElement | null, elementsMap: ElementsMap) => ExcalidrawTextElementWithContainer | null;
|
|
48
43
|
export declare const getContainerElement: (element: ExcalidrawTextElement | null, elementsMap: ElementsMap) => ExcalidrawTextContainer | null;
|
|
@@ -61,7 +56,6 @@ export declare const getBoundTextElementPosition: (container: ExcalidrawElement,
|
|
|
61
56
|
} | undefined;
|
|
62
57
|
export declare const shouldAllowVerticalAlign: (selectedElements: NonDeletedExcalidrawElement[], elementsMap: ElementsMap) => boolean;
|
|
63
58
|
export declare const suppportsHorizontalAlign: (selectedElements: NonDeletedExcalidrawElement[], elementsMap: ElementsMap) => boolean;
|
|
64
|
-
export declare const getTextBindableContainerAtPosition: (elements: readonly ExcalidrawElement[], appState: AppState, x: number, y: number, elementsMap: ElementsMap) => ExcalidrawTextContainer | null;
|
|
65
59
|
declare const VALID_CONTAINER_TYPES: Set<string>;
|
|
66
60
|
export declare const isValidTextContainer: (element: {
|
|
67
61
|
type: ExcalidrawElementType;
|
|
@@ -70,22 +64,5 @@ export declare const computeContainerDimensionForBoundText: (dimension: number,
|
|
|
70
64
|
export declare const getBoundTextMaxWidth: (container: ExcalidrawElement, boundTextElement: ExcalidrawTextElement | null) => number;
|
|
71
65
|
export declare const getBoundTextMaxHeight: (container: ExcalidrawElement, boundTextElement: ExcalidrawTextElementWithContainer) => number;
|
|
72
66
|
export declare const isMeasureTextSupported: () => boolean;
|
|
73
|
-
|
|
74
|
-
type sTypoAscender = number & MakeBrand<"sTypoAscender">;
|
|
75
|
-
/** OS/2 sTypoDescender, https://learn.microsoft.com/en-us/typography/opentype/spec/os2#stypodescender */
|
|
76
|
-
type sTypoDescender = number & MakeBrand<"sTypoDescender">;
|
|
77
|
-
/**
|
|
78
|
-
* Hardcoded metrics for default fonts, read by https://opentype.js.org/font-inspector.html.
|
|
79
|
-
* For custom fonts, read these metrics from OS/2 table and extend this object.
|
|
80
|
-
*
|
|
81
|
-
* WARN: opentype does NOT open WOFF2 correctly, make sure to convert WOFF2 to TTF first.
|
|
82
|
-
*/
|
|
83
|
-
export declare const FONT_METRICS: Record<number, {
|
|
84
|
-
unitsPerEm: number;
|
|
85
|
-
ascender: sTypoAscender;
|
|
86
|
-
descender: sTypoDescender;
|
|
87
|
-
}>;
|
|
88
|
-
export declare const getDefaultLineHeight: (fontFamily: FontFamilyValues) => number & {
|
|
89
|
-
_brand: "unitlessLineHeight";
|
|
90
|
-
};
|
|
67
|
+
export declare const getMinTextElementWidth: (font: FontString, lineHeight: ExcalidrawTextElement["lineHeight"]) => number;
|
|
91
68
|
export {};
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { getFontString, arrayToMap, isTestEnv, normalizeEOL } from "../utils";
|
|
2
2
|
import { mutateElement } from "./mutateElement";
|
|
3
|
-
import { ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO, ARROW_LABEL_WIDTH_FRACTION, BOUND_TEXT_PADDING, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE,
|
|
3
|
+
import { ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO, ARROW_LABEL_WIDTH_FRACTION, BOUND_TEXT_PADDING, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, TEXT_ALIGN, VERTICAL_ALIGN, } from "../constants";
|
|
4
4
|
import { isTextElement } from ".";
|
|
5
5
|
import { isBoundToContainer, isArrowElement } from "./typeChecks";
|
|
6
6
|
import { LinearElementEditor } from "./linearElementEditor";
|
|
7
|
-
import { isTextBindableContainer } from "./typeChecks";
|
|
8
|
-
import { getElementAbsoluteCoords } from ".";
|
|
9
|
-
import { getSelectedElements } from "../scene";
|
|
10
|
-
import { isHittingElementNotConsideringBoundingBox } from "./collision";
|
|
11
7
|
import { resetOriginalContainerCache, updateOriginalContainerCache, } from "./containerCache";
|
|
12
8
|
export const normalizeText = (text) => {
|
|
13
9
|
return (normalizeEOL(text)
|
|
@@ -17,7 +13,7 @@ export const normalizeText = (text) => {
|
|
|
17
13
|
const splitIntoLines = (text) => {
|
|
18
14
|
return normalizeText(text).split("\n");
|
|
19
15
|
};
|
|
20
|
-
export const redrawTextBoundingBox = (textElement, container, elementsMap) => {
|
|
16
|
+
export const redrawTextBoundingBox = (textElement, container, elementsMap, informMutation = true) => {
|
|
21
17
|
let maxWidth = undefined;
|
|
22
18
|
const boundTextUpdates = {
|
|
23
19
|
x: textElement.x,
|
|
@@ -25,26 +21,32 @@ export const redrawTextBoundingBox = (textElement, container, elementsMap) => {
|
|
|
25
21
|
text: textElement.text,
|
|
26
22
|
width: textElement.width,
|
|
27
23
|
height: textElement.height,
|
|
24
|
+
angle: container?.angle ?? textElement.angle,
|
|
28
25
|
};
|
|
29
26
|
boundTextUpdates.text = textElement.text;
|
|
30
|
-
if (container) {
|
|
31
|
-
maxWidth =
|
|
27
|
+
if (container || !textElement.autoResize) {
|
|
28
|
+
maxWidth = container
|
|
29
|
+
? getBoundTextMaxWidth(container, textElement)
|
|
30
|
+
: textElement.width;
|
|
32
31
|
boundTextUpdates.text = wrapText(textElement.originalText, getFontString(textElement), maxWidth);
|
|
33
32
|
}
|
|
34
33
|
const metrics = measureText(boundTextUpdates.text, getFontString(textElement), textElement.lineHeight);
|
|
35
|
-
|
|
34
|
+
// Note: only update width for unwrapped text and bound texts (which always have autoResize set to true)
|
|
35
|
+
if (textElement.autoResize) {
|
|
36
|
+
boundTextUpdates.width = metrics.width;
|
|
37
|
+
}
|
|
36
38
|
boundTextUpdates.height = metrics.height;
|
|
37
39
|
if (container) {
|
|
38
40
|
const maxContainerHeight = getBoundTextMaxHeight(container, textElement);
|
|
39
41
|
const maxContainerWidth = getBoundTextMaxWidth(container, textElement);
|
|
40
42
|
if (!isArrowElement(container) && metrics.height > maxContainerHeight) {
|
|
41
43
|
const nextHeight = computeContainerDimensionForBoundText(metrics.height, container.type);
|
|
42
|
-
mutateElement(container, { height: nextHeight });
|
|
44
|
+
mutateElement(container, { height: nextHeight }, informMutation);
|
|
43
45
|
updateOriginalContainerCache(container.id, nextHeight);
|
|
44
46
|
}
|
|
45
47
|
if (metrics.width > maxContainerWidth) {
|
|
46
48
|
const nextWidth = computeContainerDimensionForBoundText(metrics.width, container.type);
|
|
47
|
-
mutateElement(container, { width: nextWidth });
|
|
49
|
+
mutateElement(container, { width: nextWidth }, informMutation);
|
|
48
50
|
}
|
|
49
51
|
const updatedTextElement = {
|
|
50
52
|
...textElement,
|
|
@@ -54,7 +56,7 @@ export const redrawTextBoundingBox = (textElement, container, elementsMap) => {
|
|
|
54
56
|
boundTextUpdates.x = x;
|
|
55
57
|
boundTextUpdates.y = y;
|
|
56
58
|
}
|
|
57
|
-
mutateElement(textElement, boundTextUpdates);
|
|
59
|
+
mutateElement(textElement, boundTextUpdates, informMutation);
|
|
58
60
|
};
|
|
59
61
|
export const bindTextToShapeAfterDuplication = (newElements, oldElements, oldIdToDuplicatedId) => {
|
|
60
62
|
const newElementsMap = arrayToMap(newElements);
|
|
@@ -199,41 +201,58 @@ export const detectLineHeight = (textElement) => {
|
|
|
199
201
|
export const getLineHeightInPx = (fontSize, lineHeight) => {
|
|
200
202
|
return fontSize * lineHeight;
|
|
201
203
|
};
|
|
202
|
-
/**
|
|
203
|
-
* Calculates vertical offset for a text with alphabetic baseline.
|
|
204
|
-
*/
|
|
205
|
-
export const getVerticalOffset = (fontFamily, fontSize, lineHeightPx) => {
|
|
206
|
-
const { unitsPerEm, ascender, descender } = FONT_METRICS[fontFamily] || FONT_METRICS[FONT_FAMILY.Helvetica];
|
|
207
|
-
const fontSizeEm = fontSize / unitsPerEm;
|
|
208
|
-
const lineGap = lineHeightPx - fontSizeEm * ascender + fontSizeEm * descender;
|
|
209
|
-
const verticalOffset = fontSizeEm * ascender + lineGap;
|
|
210
|
-
return verticalOffset;
|
|
211
|
-
};
|
|
212
204
|
// FIXME rename to getApproxMinContainerHeight
|
|
213
205
|
export const getApproxMinLineHeight = (fontSize, lineHeight) => {
|
|
214
206
|
return getLineHeightInPx(fontSize, lineHeight) + BOUND_TEXT_PADDING * 2;
|
|
215
207
|
};
|
|
216
208
|
let canvas;
|
|
217
|
-
|
|
209
|
+
/**
|
|
210
|
+
* @param forceAdvanceWidth use to force retrieve the "advance width" ~ `metrics.width`, instead of the actual boundind box width.
|
|
211
|
+
*
|
|
212
|
+
* > The advance width is the distance between the glyph's initial pen position and the next glyph's initial pen position.
|
|
213
|
+
*
|
|
214
|
+
* We need to use the advance width as that's the closest thing to the browser wrapping algo, hence using it for:
|
|
215
|
+
* - text wrapping
|
|
216
|
+
* - wysiwyg editor (+padding)
|
|
217
|
+
*
|
|
218
|
+
* Everything else should be based on the actual bounding box width.
|
|
219
|
+
*
|
|
220
|
+
* `Math.ceil` of the final width adds additional buffer which stabilizes slight wrapping incosistencies.
|
|
221
|
+
*/
|
|
222
|
+
const getLineWidth = (text, font, forceAdvanceWidth) => {
|
|
218
223
|
if (!canvas) {
|
|
219
224
|
canvas = document.createElement("canvas");
|
|
220
225
|
}
|
|
221
226
|
const canvas2dContext = canvas.getContext("2d");
|
|
222
227
|
canvas2dContext.font = font;
|
|
223
|
-
const
|
|
228
|
+
const metrics = canvas2dContext.measureText(text);
|
|
229
|
+
const advanceWidth = metrics.width;
|
|
230
|
+
// retrieve the actual bounding box width if these metrics are available (as of now > 95% coverage)
|
|
231
|
+
if (!forceAdvanceWidth &&
|
|
232
|
+
window.TextMetrics &&
|
|
233
|
+
"actualBoundingBoxLeft" in window.TextMetrics.prototype &&
|
|
234
|
+
"actualBoundingBoxRight" in window.TextMetrics.prototype) {
|
|
235
|
+
// could be negative, therefore getting the absolute value
|
|
236
|
+
const actualWidth = Math.abs(metrics.actualBoundingBoxLeft) +
|
|
237
|
+
Math.abs(metrics.actualBoundingBoxRight);
|
|
238
|
+
// fallback to advance width if the actual width is zero, i.e. on text editing start
|
|
239
|
+
// or when actual width does not respect whitespace chars, i.e. spaces
|
|
240
|
+
// otherwise actual width should always be bigger
|
|
241
|
+
return Math.max(actualWidth, advanceWidth);
|
|
242
|
+
}
|
|
224
243
|
// since in test env the canvas measureText algo
|
|
225
244
|
// doesn't measure text and instead just returns number of
|
|
226
245
|
// characters hence we assume that each letteris 10px
|
|
227
246
|
if (isTestEnv()) {
|
|
228
|
-
return
|
|
247
|
+
return advanceWidth * 10;
|
|
229
248
|
}
|
|
230
|
-
return
|
|
249
|
+
return advanceWidth;
|
|
231
250
|
};
|
|
232
|
-
export const getTextWidth = (text, font) => {
|
|
251
|
+
export const getTextWidth = (text, font, forceAdvanceWidth) => {
|
|
233
252
|
const lines = splitIntoLines(text);
|
|
234
253
|
let width = 0;
|
|
235
254
|
lines.forEach((line) => {
|
|
236
|
-
width = Math.max(width, getLineWidth(line, font));
|
|
255
|
+
width = Math.max(width, getLineWidth(line, font, forceAdvanceWidth));
|
|
237
256
|
});
|
|
238
257
|
return width;
|
|
239
258
|
};
|
|
@@ -267,7 +286,7 @@ export const wrapText = (text, font, maxWidth) => {
|
|
|
267
286
|
}
|
|
268
287
|
const lines = [];
|
|
269
288
|
const originalLines = text.split("\n");
|
|
270
|
-
const
|
|
289
|
+
const spaceAdvanceWidth = getLineWidth(" ", font, true);
|
|
271
290
|
let currentLine = "";
|
|
272
291
|
let currentLineWidthTillNow = 0;
|
|
273
292
|
const push = (str) => {
|
|
@@ -279,18 +298,18 @@ export const wrapText = (text, font, maxWidth) => {
|
|
|
279
298
|
currentLine = "";
|
|
280
299
|
currentLineWidthTillNow = 0;
|
|
281
300
|
};
|
|
282
|
-
|
|
283
|
-
const currentLineWidth =
|
|
301
|
+
for (const originalLine of originalLines) {
|
|
302
|
+
const currentLineWidth = getLineWidth(originalLine, font, true);
|
|
284
303
|
// Push the line if its <= maxWidth
|
|
285
304
|
if (currentLineWidth <= maxWidth) {
|
|
286
305
|
lines.push(originalLine);
|
|
287
|
-
|
|
306
|
+
continue;
|
|
288
307
|
}
|
|
289
308
|
const words = parseTokens(originalLine);
|
|
290
309
|
resetParams();
|
|
291
310
|
let index = 0;
|
|
292
311
|
while (index < words.length) {
|
|
293
|
-
const currentWordWidth = getLineWidth(words[index], font);
|
|
312
|
+
const currentWordWidth = getLineWidth(words[index], font, true);
|
|
294
313
|
// This will only happen when single word takes entire width
|
|
295
314
|
if (currentWordWidth === maxWidth) {
|
|
296
315
|
push(words[index]);
|
|
@@ -304,20 +323,24 @@ export const wrapText = (text, font, maxWidth) => {
|
|
|
304
323
|
resetParams();
|
|
305
324
|
while (words[index].length > 0) {
|
|
306
325
|
const currentChar = String.fromCodePoint(words[index].codePointAt(0));
|
|
307
|
-
const
|
|
308
|
-
|
|
326
|
+
const line = currentLine + currentChar;
|
|
327
|
+
// use advance width instead of the actual width as it's closest to the browser wapping algo
|
|
328
|
+
// use width of the whole line instead of calculating individual chars to accomodate for kerning
|
|
329
|
+
const lineAdvanceWidth = getLineWidth(line, font, true);
|
|
330
|
+
const charAdvanceWidth = charWidth.calculate(currentChar, font);
|
|
331
|
+
currentLineWidthTillNow = lineAdvanceWidth;
|
|
309
332
|
words[index] = words[index].slice(currentChar.length);
|
|
310
333
|
if (currentLineWidthTillNow >= maxWidth) {
|
|
311
334
|
push(currentLine);
|
|
312
335
|
currentLine = currentChar;
|
|
313
|
-
currentLineWidthTillNow =
|
|
336
|
+
currentLineWidthTillNow = charAdvanceWidth;
|
|
314
337
|
}
|
|
315
338
|
else {
|
|
316
|
-
currentLine
|
|
339
|
+
currentLine = line;
|
|
317
340
|
}
|
|
318
341
|
}
|
|
319
342
|
// push current line if appending space exceeds max width
|
|
320
|
-
if (currentLineWidthTillNow +
|
|
343
|
+
if (currentLineWidthTillNow + spaceAdvanceWidth >= maxWidth) {
|
|
321
344
|
push(currentLine);
|
|
322
345
|
resetParams();
|
|
323
346
|
// space needs to be appended before next word
|
|
@@ -327,7 +350,7 @@ export const wrapText = (text, font, maxWidth) => {
|
|
|
327
350
|
}
|
|
328
351
|
else if (!currentLine.endsWith("-")) {
|
|
329
352
|
currentLine += " ";
|
|
330
|
-
currentLineWidthTillNow +=
|
|
353
|
+
currentLineWidthTillNow += spaceAdvanceWidth;
|
|
331
354
|
}
|
|
332
355
|
index++;
|
|
333
356
|
}
|
|
@@ -335,7 +358,7 @@ export const wrapText = (text, font, maxWidth) => {
|
|
|
335
358
|
// Start appending words in a line till max width reached
|
|
336
359
|
while (currentLineWidthTillNow < maxWidth && index < words.length) {
|
|
337
360
|
const word = words[index];
|
|
338
|
-
currentLineWidthTillNow = getLineWidth(currentLine + word, font);
|
|
361
|
+
currentLineWidthTillNow = getLineWidth(currentLine + word, font, true);
|
|
339
362
|
if (currentLineWidthTillNow > maxWidth) {
|
|
340
363
|
push(currentLine);
|
|
341
364
|
resetParams();
|
|
@@ -350,7 +373,7 @@ export const wrapText = (text, font, maxWidth) => {
|
|
|
350
373
|
currentLine += " ";
|
|
351
374
|
}
|
|
352
375
|
// Push the word if appending space exceeds max width
|
|
353
|
-
if (currentLineWidthTillNow +
|
|
376
|
+
if (currentLineWidthTillNow + spaceAdvanceWidth >= maxWidth) {
|
|
354
377
|
if (shouldAppendSpace) {
|
|
355
378
|
lines.push(currentLine.slice(0, -1));
|
|
356
379
|
}
|
|
@@ -368,7 +391,7 @@ export const wrapText = (text, font, maxWidth) => {
|
|
|
368
391
|
currentLine = currentLine.slice(0, -1);
|
|
369
392
|
push(currentLine);
|
|
370
393
|
}
|
|
371
|
-
}
|
|
394
|
+
}
|
|
372
395
|
return lines.join("\n");
|
|
373
396
|
};
|
|
374
397
|
export const charWidth = (() => {
|
|
@@ -379,7 +402,7 @@ export const charWidth = (() => {
|
|
|
379
402
|
cachedCharWidth[font] = [];
|
|
380
403
|
}
|
|
381
404
|
if (!cachedCharWidth[font][ascii]) {
|
|
382
|
-
const width = getLineWidth(char, font);
|
|
405
|
+
const width = getLineWidth(char, font, true);
|
|
383
406
|
cachedCharWidth[font][ascii] = width;
|
|
384
407
|
}
|
|
385
408
|
return cachedCharWidth[font][ascii];
|
|
@@ -418,28 +441,6 @@ export const getMaxCharWidth = (font) => {
|
|
|
418
441
|
const cacheWithOutEmpty = cache.filter((val) => val !== undefined);
|
|
419
442
|
return Math.max(...cacheWithOutEmpty);
|
|
420
443
|
};
|
|
421
|
-
export const getApproxCharsToFitInWidth = (font, width) => {
|
|
422
|
-
// Generally lower case is used so converting to lower case
|
|
423
|
-
const dummyText = DUMMY_TEXT.toLocaleLowerCase();
|
|
424
|
-
const batchLength = 6;
|
|
425
|
-
let index = 0;
|
|
426
|
-
let widthTillNow = 0;
|
|
427
|
-
let str = "";
|
|
428
|
-
while (widthTillNow <= width) {
|
|
429
|
-
const batch = dummyText.substr(index, index + batchLength);
|
|
430
|
-
str += batch;
|
|
431
|
-
widthTillNow += getLineWidth(str, font);
|
|
432
|
-
if (index === dummyText.length - 1) {
|
|
433
|
-
index = 0;
|
|
434
|
-
}
|
|
435
|
-
index = index + batchLength;
|
|
436
|
-
}
|
|
437
|
-
while (widthTillNow > width) {
|
|
438
|
-
str = str.substr(0, str.length - 1);
|
|
439
|
-
widthTillNow = getLineWidth(str, font);
|
|
440
|
-
}
|
|
441
|
-
return str.length;
|
|
442
|
-
};
|
|
443
444
|
export const getBoundTextElementId = (container) => {
|
|
444
445
|
return container?.boundElements?.length
|
|
445
446
|
? container?.boundElements?.filter((ele) => ele.type === "text")[0]?.id ||
|
|
@@ -540,32 +541,6 @@ export const suppportsHorizontalAlign = (selectedElements, elementsMap) => {
|
|
|
540
541
|
return isTextElement(element);
|
|
541
542
|
});
|
|
542
543
|
};
|
|
543
|
-
export const getTextBindableContainerAtPosition = (elements, appState, x, y, elementsMap) => {
|
|
544
|
-
const selectedElements = getSelectedElements(elements, appState);
|
|
545
|
-
if (selectedElements.length === 1) {
|
|
546
|
-
return isTextBindableContainer(selectedElements[0], false)
|
|
547
|
-
? selectedElements[0]
|
|
548
|
-
: null;
|
|
549
|
-
}
|
|
550
|
-
let hitElement = null;
|
|
551
|
-
// We need to to hit testing from front (end of the array) to back (beginning of the array)
|
|
552
|
-
for (let index = elements.length - 1; index >= 0; --index) {
|
|
553
|
-
if (elements[index].isDeleted) {
|
|
554
|
-
continue;
|
|
555
|
-
}
|
|
556
|
-
const [x1, y1, x2, y2] = getElementAbsoluteCoords(elements[index], elementsMap);
|
|
557
|
-
if (isArrowElement(elements[index]) &&
|
|
558
|
-
isHittingElementNotConsideringBoundingBox(elements[index], appState, null, [x, y], elementsMap)) {
|
|
559
|
-
hitElement = elements[index];
|
|
560
|
-
break;
|
|
561
|
-
}
|
|
562
|
-
else if (x1 < x && x < x2 && y1 < y && y < y2) {
|
|
563
|
-
hitElement = elements[index];
|
|
564
|
-
break;
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
return isTextBindableContainer(hitElement, false) ? hitElement : null;
|
|
568
|
-
};
|
|
569
544
|
const VALID_CONTAINER_TYPES = new Set([
|
|
570
545
|
"rectangle",
|
|
571
546
|
"ellipse",
|
|
@@ -636,57 +611,6 @@ export const isMeasureTextSupported = () => {
|
|
|
636
611
|
}));
|
|
637
612
|
return width > 0;
|
|
638
613
|
};
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
*
|
|
642
|
-
* In previous versions we used `normal` line height, which browsers interpret
|
|
643
|
-
* differently, and based on font-family and font-size.
|
|
644
|
-
*
|
|
645
|
-
* To make line heights consistent across browsers we hardcode the values for
|
|
646
|
-
* each of our fonts based on most common average line-heights.
|
|
647
|
-
* See https://github.com/excalidraw/excalidraw/pull/6360#issuecomment-1477635971
|
|
648
|
-
* where the values come from.
|
|
649
|
-
*/
|
|
650
|
-
const DEFAULT_LINE_HEIGHT = {
|
|
651
|
-
// ~1.25 is the average for Virgil in WebKit and Blink.
|
|
652
|
-
// Gecko (FF) uses ~1.28.
|
|
653
|
-
[FONT_FAMILY.Virgil]: 1.25,
|
|
654
|
-
// ~1.15 is the average for Helvetica in WebKit and Blink.
|
|
655
|
-
[FONT_FAMILY.Helvetica]: 1.15,
|
|
656
|
-
// ~1.2 is the average for Cascadia in WebKit and Blink, and kinda Gecko too
|
|
657
|
-
[FONT_FAMILY.Cascadia]: 1.2,
|
|
658
|
-
};
|
|
659
|
-
/**
|
|
660
|
-
* Hardcoded metrics for default fonts, read by https://opentype.js.org/font-inspector.html.
|
|
661
|
-
* For custom fonts, read these metrics from OS/2 table and extend this object.
|
|
662
|
-
*
|
|
663
|
-
* WARN: opentype does NOT open WOFF2 correctly, make sure to convert WOFF2 to TTF first.
|
|
664
|
-
*/
|
|
665
|
-
export const FONT_METRICS = {
|
|
666
|
-
[FONT_FAMILY.Virgil]: {
|
|
667
|
-
unitsPerEm: 1000,
|
|
668
|
-
ascender: 886,
|
|
669
|
-
descender: -374,
|
|
670
|
-
},
|
|
671
|
-
[FONT_FAMILY.Helvetica]: {
|
|
672
|
-
unitsPerEm: 2048,
|
|
673
|
-
ascender: 1577,
|
|
674
|
-
descender: -471,
|
|
675
|
-
},
|
|
676
|
-
[FONT_FAMILY.Cascadia]: {
|
|
677
|
-
unitsPerEm: 2048,
|
|
678
|
-
ascender: 1977,
|
|
679
|
-
descender: -480,
|
|
680
|
-
},
|
|
681
|
-
[FONT_FAMILY.Assistant]: {
|
|
682
|
-
unitsPerEm: 1000,
|
|
683
|
-
ascender: 1021,
|
|
684
|
-
descender: -287,
|
|
685
|
-
},
|
|
686
|
-
};
|
|
687
|
-
export const getDefaultLineHeight = (fontFamily) => {
|
|
688
|
-
if (fontFamily in DEFAULT_LINE_HEIGHT) {
|
|
689
|
-
return DEFAULT_LINE_HEIGHT[fontFamily];
|
|
690
|
-
}
|
|
691
|
-
return DEFAULT_LINE_HEIGHT[DEFAULT_FONT_FAMILY];
|
|
614
|
+
export const getMinTextElementWidth = (font, lineHeight) => {
|
|
615
|
+
return measureText("", font, lineHeight).width + BOUND_TEXT_PADDING * 2;
|
|
692
616
|
};
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
import { ExcalidrawElement, ExcalidrawTextElement } from "./types";
|
|
2
|
-
import App from "../components/App";
|
|
3
|
-
export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, }: {
|
|
1
|
+
import type { ExcalidrawElement, ExcalidrawTextElement } from "./types";
|
|
2
|
+
import type App from "../components/App";
|
|
3
|
+
export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, autoSelect, }: {
|
|
4
4
|
id: ExcalidrawElement["id"];
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* textWysiwyg only deals with `originalText`
|
|
7
|
+
*
|
|
8
|
+
* Note: `text`, which can be wrapped and therefore different from `originalText`,
|
|
9
|
+
* is derived from `originalText`
|
|
10
|
+
*/
|
|
11
|
+
onChange?: ((nextOriginalText: string) => void) | undefined;
|
|
6
12
|
onSubmit: (data: {
|
|
7
|
-
text: string;
|
|
8
13
|
viaKeyboard: boolean;
|
|
9
|
-
|
|
14
|
+
nextOriginalText: string;
|
|
10
15
|
}) => void;
|
|
11
16
|
getViewportCoords: (x: number, y: number) => [number, number];
|
|
12
17
|
element: ExcalidrawTextElement;
|
|
13
18
|
canvas: HTMLCanvasElement;
|
|
14
19
|
excalidrawContainer: HTMLDivElement | null;
|
|
15
20
|
app: App;
|
|
21
|
+
autoSelect?: boolean | undefined;
|
|
16
22
|
}) => void;
|