@excalidraw/excalidraw 0.17.1-d9bbf1e → 0.17.1-e63dd02
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 +4 -0
- package/dist/browser/dev/excalidraw-assets-dev/CascadiaCode-Regular-TMZI7IJ5.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/{chunk-XOM7LNOU.js → chunk-IT7T3AIK.js} +49 -8
- package/dist/browser/dev/excalidraw-assets-dev/chunk-IT7T3AIK.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-BLEB3M62.js → chunk-RNHSD5AR.js} +7668 -2142
- package/dist/browser/dev/excalidraw-assets-dev/chunk-RNHSD5AR.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{dist-ITJNUBZF.js → dist-DNSPZDOZ.js} +66 -32
- package/dist/browser/dev/excalidraw-assets-dev/dist-DNSPZDOZ.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{en-TR4QLF5E.js → en-XV7OZCPP.js} +8 -2
- package/dist/browser/dev/excalidraw-assets-dev/{image-ZGDDRBEN.js → image-77HZYGLG.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{image-O66MQ7WQ.css → image-WDHYGKKP.css} +1 -1
- package/dist/browser/dev/excalidraw-assets-dev/{image-O66MQ7WQ.css.map → image-WDHYGKKP.css.map} +2 -2
- package/dist/browser/dev/index.css +610 -180
- package/dist/browser/dev/index.css.map +3 -3
- package/dist/browser/dev/index.js +13306 -8006
- package/dist/browser/dev/index.js.map +4 -4
- package/dist/browser/prod/excalidraw-assets/CascadiaCode-Regular-TMZI7IJ5.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/chunk-OYEADJSR.js +63 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-5SYIAZGL.js → chunk-PDYFZJMS.js} +5 -5
- package/dist/browser/prod/excalidraw-assets/dist-NLUQPPQQ.js +7 -0
- package/dist/browser/prod/excalidraw-assets/en-YVAVVILW.js +1 -0
- package/dist/browser/prod/excalidraw-assets/image-X3GFZHNN.js +1 -0
- package/dist/browser/prod/index.css +1 -1
- package/dist/browser/prod/index.js +70 -51
- package/dist/dev/CascadiaCode-Regular-TMZI7IJ5.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/dev/{en-XW4JO6VX.json → en-YNVBSAIL.json} +42 -7
- package/dist/dev/index.css +610 -180
- package/dist/dev/index.css.map +3 -3
- package/dist/dev/index.js +22165 -16833
- package/dist/dev/index.js.map +4 -4
- package/dist/excalidraw/actions/actionAddToLibrary.d.ts +24 -9
- package/dist/excalidraw/actions/actionAlign.d.ts +8 -8
- package/dist/excalidraw/actions/actionBoundText.d.ts +20 -10
- package/dist/excalidraw/actions/actionBoundText.js +3 -1
- package/dist/excalidraw/actions/actionCanvas.d.ts +100 -40
- package/dist/excalidraw/actions/actionCanvas.js +1 -1
- package/dist/excalidraw/actions/actionClipboard.d.ts +62 -26
- package/dist/excalidraw/actions/actionDeleteSelected.d.ts +28 -12
- package/dist/excalidraw/actions/actionDeleteSelected.js +24 -5
- package/dist/excalidraw/actions/actionDistribute.d.ts +4 -4
- package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +3 -3
- package/dist/excalidraw/actions/actionDuplicateSelection.js +1 -2
- package/dist/excalidraw/actions/actionElementLock.d.ts +17 -7
- package/dist/excalidraw/actions/actionExport.d.ts +75 -30
- package/dist/excalidraw/actions/actionFinalize.d.ts +17 -7
- package/dist/excalidraw/actions/actionFinalize.js +2 -2
- package/dist/excalidraw/actions/actionFlip.d.ts +4 -4
- package/dist/excalidraw/actions/actionFlip.js +2 -2
- package/dist/excalidraw/actions/actionFrame.d.ts +338 -10
- package/dist/excalidraw/actions/actionGroup.d.ts +324 -4
- package/dist/excalidraw/actions/actionHistory.d.ts +3 -3
- package/dist/excalidraw/actions/actionHistory.js +8 -8
- package/dist/excalidraw/actions/actionLinearEditor.d.ts +12 -5
- package/dist/excalidraw/actions/actionLinearEditor.js +21 -5
- package/dist/excalidraw/actions/actionLink.d.ts +8 -3
- package/dist/excalidraw/actions/actionMenu.d.ts +24 -9
- package/dist/excalidraw/actions/actionNavigate.d.ts +17 -7
- package/dist/excalidraw/actions/actionProperties.d.ts +476 -82
- package/dist/excalidraw/actions/actionProperties.js +384 -59
- package/dist/excalidraw/actions/actionSelectAll.d.ts +9 -4
- package/dist/excalidraw/actions/actionStyles.d.ts +12 -4
- package/dist/excalidraw/actions/actionStyles.js +3 -2
- package/dist/excalidraw/actions/actionTextAutoResize.d.ts +17 -0
- package/dist/excalidraw/actions/actionTextAutoResize.js +38 -0
- package/dist/excalidraw/actions/actionToggleGridMode.d.ts +9 -4
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +8 -3
- package/dist/excalidraw/actions/actionToggleStats.d.ts +9 -3
- package/dist/excalidraw/actions/actionToggleStats.js +4 -3
- package/dist/excalidraw/actions/actionToggleViewMode.d.ts +8 -3
- package/dist/excalidraw/actions/actionToggleZenMode.d.ts +8 -3
- package/dist/excalidraw/actions/actionZindex.d.ts +8 -4
- package/dist/excalidraw/actions/actionZindex.js +4 -0
- package/dist/excalidraw/actions/manager.d.ts +3 -3
- package/dist/excalidraw/actions/register.d.ts +1 -1
- package/dist/excalidraw/actions/shortcuts.d.ts +2 -2
- package/dist/excalidraw/actions/types.d.ts +6 -6
- package/dist/excalidraw/align.d.ts +1 -1
- package/dist/excalidraw/analytics.js +9 -7
- package/dist/excalidraw/animated-trail.d.ts +2 -2
- package/dist/excalidraw/appState.d.ts +6 -2
- package/dist/excalidraw/appState.js +14 -3
- package/dist/excalidraw/binaryheap.d.ts +12 -0
- package/dist/excalidraw/binaryheap.js +93 -0
- package/dist/excalidraw/change.d.ts +6 -5
- package/dist/excalidraw/change.js +20 -11
- package/dist/excalidraw/charts.d.ts +1 -1
- package/dist/excalidraw/charts.js +0 -10
- 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 +14 -9
- package/dist/excalidraw/components/App.d.ts +14 -17
- package/dist/excalidraw/components/App.js +356 -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 +5 -5
- package/dist/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -1
- package/dist/excalidraw/components/CommandPalette/types.d.ts +3 -3
- package/dist/excalidraw/components/ConfirmDialog.d.ts +1 -1
- package/dist/excalidraw/components/ContextMenu.d.ts +2 -2
- package/dist/excalidraw/components/ContextMenu.js +2 -2
- package/dist/excalidraw/components/DarkModeToggle.d.ts +1 -1
- package/dist/excalidraw/components/DefaultSidebar.d.ts +2 -2
- package/dist/excalidraw/components/Dialog.js +1 -1
- package/dist/excalidraw/components/DialogActionButton.d.ts +1 -1
- package/dist/excalidraw/components/EyeDropper.d.ts +2 -2
- package/dist/excalidraw/components/FollowMode/FollowMode.d.ts +1 -1
- package/dist/excalidraw/components/FollowMode/FollowMode.js +1 -1
- package/dist/excalidraw/components/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 +2 -2
- package/dist/excalidraw/components/HintViewer.d.ts +1 -1
- package/dist/excalidraw/components/HintViewer.js +6 -3
- 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/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.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/Stats/Angle.d.ts +12 -0
- package/dist/excalidraw/components/Stats/Angle.js +53 -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 +68 -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 +199 -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 +101 -0
- package/dist/excalidraw/components/Stats/Position.d.ts +13 -0
- package/dist/excalidraw/components/Stats/Position.js +40 -0
- package/dist/excalidraw/components/Stats/index.d.ts +16 -0
- package/dist/excalidraw/components/Stats/index.js +79 -0
- package/dist/excalidraw/components/Stats/utils.d.ts +26 -0
- package/dist/excalidraw/components/Stats/utils.js +162 -0
- package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialog.js +2 -2
- package/dist/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogPanels.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogTabs.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/common.d.ts +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 +3 -2
- 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 +3 -2
- package/dist/excalidraw/components/canvases/InteractiveCanvas.js +4 -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/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/helpers.d.ts +3 -3
- package/dist/excalidraw/components/icons.d.ts +10 -2
- package/dist/excalidraw/components/icons.js +29 -6
- 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 -3
- package/dist/excalidraw/constants.js +28 -4
- package/dist/excalidraw/context/ui-appState.d.ts +1 -1
- package/dist/excalidraw/cursor.d.ts +1 -1
- package/dist/excalidraw/data/EditorLocalStorage.d.ts +2 -2
- package/dist/excalidraw/data/blob.d.ts +5 -5
- package/dist/excalidraw/data/filesystem.d.ts +2 -1
- package/dist/excalidraw/data/index.d.ts +4 -4
- package/dist/excalidraw/data/json.d.ts +3 -3
- package/dist/excalidraw/data/library.d.ts +3 -3
- package/dist/excalidraw/data/magic.d.ts +3 -3
- package/dist/excalidraw/data/reconcile.d.ts +3 -3
- package/dist/excalidraw/data/reconcile.js +18 -1
- package/dist/excalidraw/data/resave.d.ts +2 -2
- package/dist/excalidraw/data/restore.d.ts +3 -3
- package/dist/excalidraw/data/restore.js +58 -9
- package/dist/excalidraw/data/transform.d.ts +3 -3
- package/dist/excalidraw/data/transform.js +8 -5
- package/dist/excalidraw/data/types.d.ts +3 -3
- package/dist/excalidraw/element/ElementCanvasButtons.d.ts +1 -1
- package/dist/excalidraw/element/binding.d.ts +29 -10
- package/dist/excalidraw/element/binding.js +303 -71
- package/dist/excalidraw/element/bounds.d.ts +3 -3
- package/dist/excalidraw/element/collision.d.ts +4 -4
- package/dist/excalidraw/element/collision.js +5 -2
- package/dist/excalidraw/element/containerCache.d.ts +1 -1
- package/dist/excalidraw/element/dragElements.d.ts +6 -6
- package/dist/excalidraw/element/dragElements.js +39 -5
- package/dist/excalidraw/element/embeddable.d.ts +11 -6
- package/dist/excalidraw/element/heading.d.ts +11 -0
- package/dist/excalidraw/element/heading.js +81 -0
- package/dist/excalidraw/element/image.d.ts +2 -2
- package/dist/excalidraw/element/index.d.ts +2 -2
- package/dist/excalidraw/element/index.js +1 -1
- package/dist/excalidraw/element/linearElementEditor.d.ts +27 -16
- package/dist/excalidraw/element/linearElementEditor.js +133 -56
- package/dist/excalidraw/element/mutateElement.d.ts +3 -3
- package/dist/excalidraw/element/mutateElement.js +5 -3
- package/dist/excalidraw/element/newElement.d.ts +12 -10
- package/dist/excalidraw/element/newElement.js +31 -16
- package/dist/excalidraw/element/resizeElements.d.ts +15 -6
- package/dist/excalidraw/element/resizeElements.js +122 -46
- package/dist/excalidraw/element/resizeTest.d.ts +4 -4
- package/dist/excalidraw/element/resizeTest.js +2 -4
- package/dist/excalidraw/element/routing.d.ts +13 -0
- package/dist/excalidraw/element/routing.js +641 -0
- package/dist/excalidraw/element/showSelectedShapeActions.d.ts +2 -2
- package/dist/excalidraw/element/sizeHelpers.d.ts +2 -2
- package/dist/excalidraw/element/sortElements.d.ts +1 -1
- package/dist/excalidraw/element/textElement.d.ts +6 -28
- package/dist/excalidraw/element/textElement.js +64 -112
- package/dist/excalidraw/element/textWysiwyg.d.ts +12 -6
- package/dist/excalidraw/element/textWysiwyg.js +75 -62
- package/dist/excalidraw/element/transformHandles.d.ts +3 -3
- package/dist/excalidraw/element/transformHandles.js +7 -12
- package/dist/excalidraw/element/typeChecks.d.ts +7 -4
- package/dist/excalidraw/element/typeChecks.js +17 -0
- package/dist/excalidraw/element/types.d.ts +22 -4
- package/dist/excalidraw/emitter.d.ts +1 -1
- package/dist/excalidraw/fonts/ExcalidrawFont.d.ts +21 -0
- package/dist/excalidraw/fonts/ExcalidrawFont.js +112 -0
- package/dist/excalidraw/fonts/index.d.ts +58 -0
- package/dist/excalidraw/fonts/index.js +240 -0
- package/dist/excalidraw/fonts/metadata.d.ts +36 -0
- package/dist/excalidraw/fonts/metadata.js +91 -0
- package/dist/excalidraw/fractionalIndex.d.ts +12 -5
- package/dist/excalidraw/fractionalIndex.js +40 -10
- package/dist/excalidraw/frame.d.ts +4 -4
- package/dist/excalidraw/frame.js +3 -3
- package/dist/excalidraw/gatransforms.d.ts +1 -1
- package/dist/excalidraw/gesture.d.ts +1 -1
- package/dist/excalidraw/groups.d.ts +4 -4
- package/dist/excalidraw/history.d.ts +8 -7
- package/dist/excalidraw/history.js +8 -8
- package/dist/excalidraw/hooks/useEmitter.d.ts +1 -1
- package/dist/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
- package/dist/excalidraw/i18n.d.ts +1 -1
- package/dist/excalidraw/index.d.ts +2 -2
- package/dist/excalidraw/index.js +3 -3
- package/dist/excalidraw/jotai.d.ts +1 -1
- package/dist/excalidraw/laser-trails.d.ts +3 -2
- package/dist/excalidraw/locales/en.json +42 -7
- package/dist/excalidraw/math.d.ts +47 -2
- package/dist/excalidraw/math.js +116 -0
- package/dist/excalidraw/mermaid.d.ts +2 -0
- package/dist/excalidraw/mermaid.js +29 -0
- package/dist/excalidraw/points.d.ts +1 -1
- package/dist/excalidraw/queue.d.ts +1 -1
- package/dist/excalidraw/renderer/helpers.d.ts +2 -2
- package/dist/excalidraw/renderer/interactiveScene.d.ts +2 -2
- package/dist/excalidraw/renderer/interactiveScene.js +64 -22
- package/dist/excalidraw/renderer/renderElement.d.ts +6 -4
- package/dist/excalidraw/renderer/renderElement.js +78 -58
- package/dist/excalidraw/renderer/renderSnaps.d.ts +1 -1
- package/dist/excalidraw/renderer/staticScene.d.ts +1 -1
- package/dist/excalidraw/renderer/staticSvgScene.d.ts +4 -4
- package/dist/excalidraw/renderer/staticSvgScene.js +2 -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 +16 -7
- package/dist/excalidraw/scene/Scene.js +26 -11
- package/dist/excalidraw/scene/Shape.d.ts +1 -1
- package/dist/excalidraw/scene/Shape.js +56 -5
- package/dist/excalidraw/scene/ShapeCache.d.ts +4 -4
- package/dist/excalidraw/scene/comparisons.d.ts +3 -2
- package/dist/excalidraw/scene/comparisons.js +1 -1
- package/dist/excalidraw/scene/export.d.ts +4 -3
- package/dist/excalidraw/scene/export.js +34 -36
- 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 +6 -8
- package/dist/excalidraw/scene/zoom.d.ts +1 -1
- package/dist/excalidraw/shapes.d.ts +8 -0
- package/dist/excalidraw/shapes.js +57 -0
- package/dist/excalidraw/snapping.d.ts +4 -4
- package/dist/excalidraw/snapping.js +2 -1
- package/dist/excalidraw/store.d.ts +34 -4
- package/dist/excalidraw/store.js +27 -0
- package/dist/excalidraw/types.d.ts +32 -21
- package/dist/excalidraw/utils.d.ts +15 -5
- package/dist/excalidraw/utils.js +22 -0
- package/dist/excalidraw/zindex.d.ts +2 -2
- package/dist/prod/CascadiaCode-Regular-TMZI7IJ5.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/prod/{en-XW4JO6VX.json → en-YNVBSAIL.json} +42 -7
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +49 -53
- package/dist/utils/bbox.d.ts +2 -2
- package/dist/utils/collision.d.ts +1 -1
- package/dist/utils/export.d.ts +4 -3
- package/dist/utils/export.js +2 -1
- package/dist/utils/geometry/geometry.d.ts +3 -2
- package/dist/utils/geometry/geometry.js +5 -1
- package/dist/utils/geometry/shape.d.ts +1 -1
- 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 +13 -6
- package/package.json +2 -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-BLEB3M62.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-XOM7LNOU.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/dist-ITJNUBZF.js.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-UWBW5SR2.js +0 -55
- package/dist/browser/prod/excalidraw-assets/dist-54276HPL.js +0 -6
- package/dist/browser/prod/excalidraw-assets/en-7GPZE2Y2.js +0 -1
- package/dist/browser/prod/excalidraw-assets/image-35KQQ5EN.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/{en-TR4QLF5E.js.map → en-XV7OZCPP.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-ZGDDRBEN.js.map → image-77HZYGLG.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
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export default class BinaryHeap {
|
|
2
|
+
scoreFunction;
|
|
3
|
+
content = [];
|
|
4
|
+
constructor(scoreFunction) {
|
|
5
|
+
this.scoreFunction = scoreFunction;
|
|
6
|
+
}
|
|
7
|
+
sinkDown(idx) {
|
|
8
|
+
const node = this.content[idx];
|
|
9
|
+
while (idx > 0) {
|
|
10
|
+
const parentN = ((idx + 1) >> 1) - 1;
|
|
11
|
+
const parent = this.content[parentN];
|
|
12
|
+
if (this.scoreFunction(node) < this.scoreFunction(parent)) {
|
|
13
|
+
this.content[parentN] = node;
|
|
14
|
+
this.content[idx] = parent;
|
|
15
|
+
idx = parentN; // TODO: Optimize
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
bubbleUp(idx) {
|
|
23
|
+
const length = this.content.length;
|
|
24
|
+
const node = this.content[idx];
|
|
25
|
+
const score = this.scoreFunction(node);
|
|
26
|
+
while (true) {
|
|
27
|
+
const child2N = (idx + 1) << 1;
|
|
28
|
+
const child1N = child2N - 1;
|
|
29
|
+
let swap = null;
|
|
30
|
+
let child1Score = 0;
|
|
31
|
+
if (child1N < length) {
|
|
32
|
+
const child1 = this.content[child1N];
|
|
33
|
+
child1Score = this.scoreFunction(child1);
|
|
34
|
+
if (child1Score < score) {
|
|
35
|
+
swap = child1N;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (child2N < length) {
|
|
39
|
+
const child2 = this.content[child2N];
|
|
40
|
+
const child2Score = this.scoreFunction(child2);
|
|
41
|
+
if (child2Score < (swap === null ? score : child1Score)) {
|
|
42
|
+
swap = child2N;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (swap !== null) {
|
|
46
|
+
this.content[idx] = this.content[swap];
|
|
47
|
+
this.content[swap] = node;
|
|
48
|
+
idx = swap; // TODO: Optimize
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
push(node) {
|
|
56
|
+
this.content.push(node);
|
|
57
|
+
this.sinkDown(this.content.length - 1);
|
|
58
|
+
}
|
|
59
|
+
pop() {
|
|
60
|
+
if (this.content.length === 0) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const result = this.content[0];
|
|
64
|
+
const end = this.content.pop();
|
|
65
|
+
if (this.content.length > 0) {
|
|
66
|
+
this.content[0] = end;
|
|
67
|
+
this.bubbleUp(0);
|
|
68
|
+
}
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
remove(node) {
|
|
72
|
+
if (this.content.length === 0) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const i = this.content.indexOf(node);
|
|
76
|
+
const end = this.content.pop();
|
|
77
|
+
if (i < this.content.length) {
|
|
78
|
+
this.content[i] = end;
|
|
79
|
+
if (this.scoreFunction(end) < this.scoreFunction(node)) {
|
|
80
|
+
this.sinkDown(i);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.bubbleUp(i);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
size() {
|
|
88
|
+
return this.content.length;
|
|
89
|
+
}
|
|
90
|
+
rescoreElement(node) {
|
|
91
|
+
this.sinkDown(this.content.indexOf(node));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { ElementUpdate } from "./element/mutateElement";
|
|
2
|
-
import { OrderedExcalidrawElement, SceneElementsMap } from "./element/types";
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
1
|
+
import type { ElementUpdate } from "./element/mutateElement";
|
|
2
|
+
import type { OrderedExcalidrawElement, SceneElementsMap } from "./element/types";
|
|
3
|
+
import type Scene from "./scene/Scene";
|
|
4
|
+
import type { AppState, ObservedAppState } from "./types";
|
|
5
|
+
import type { ValueOf } from "./utility-types";
|
|
5
6
|
/**
|
|
6
7
|
* Represents the difference between two objects of the same type.
|
|
7
8
|
*
|
|
@@ -153,7 +154,7 @@ export declare class ElementsChange implements Change<SceneElementsMap> {
|
|
|
153
154
|
* @returns new instance with modified delta/s
|
|
154
155
|
*/
|
|
155
156
|
applyLatestChanges(elements: SceneElementsMap): ElementsChange;
|
|
156
|
-
applyTo(elements: SceneElementsMap, snapshot: Map<string, OrderedExcalidrawElement
|
|
157
|
+
applyTo(elements: SceneElementsMap, snapshot: Map<string, OrderedExcalidrawElement>, scene: Scene): [SceneElementsMap, boolean];
|
|
157
158
|
private static createApplier;
|
|
158
159
|
private static createGetter;
|
|
159
160
|
private static applyDelta;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ENV } from "./constants";
|
|
2
2
|
import { BoundElement, BindableElement, bindingProperties, updateBoundElements, } from "./element/binding";
|
|
3
3
|
import { LinearElementEditor } from "./element/linearElementEditor";
|
|
4
|
-
import { mutateElement, newElementWith
|
|
4
|
+
import { mutateElement, newElementWith } from "./element/mutateElement";
|
|
5
5
|
import { getBoundTextElementId, redrawTextBoundingBox, } from "./element/textElement";
|
|
6
6
|
import { hasBoundTextElement, isBindableElement, isBoundToContainer, isTextElement, } from "./element/typeChecks";
|
|
7
7
|
import { orderByFractionalIndex, syncMovedIndices } from "./fractionalIndex";
|
|
@@ -599,7 +599,7 @@ export class ElementsChange {
|
|
|
599
599
|
shouldRedistribute: true, // redistribute the deltas as `isDeleted` could have been updated
|
|
600
600
|
});
|
|
601
601
|
}
|
|
602
|
-
applyTo(elements, snapshot) {
|
|
602
|
+
applyTo(elements, snapshot, scene) {
|
|
603
603
|
let nextElements = toBrandedType(new Map(elements));
|
|
604
604
|
let changedElements;
|
|
605
605
|
const flags = {
|
|
@@ -635,7 +635,7 @@ export class ElementsChange {
|
|
|
635
635
|
try {
|
|
636
636
|
// TODO: #7348 refactor away mutations below, so that we couldn't end up in an incosistent state
|
|
637
637
|
ElementsChange.redrawTextBoundingBoxes(nextElements, changedElements);
|
|
638
|
-
ElementsChange.redrawBoundArrows(nextElements, changedElements);
|
|
638
|
+
ElementsChange.redrawBoundArrows(nextElements, changedElements, scene);
|
|
639
639
|
// the following reorder performs also mutations, but only on new instances of changed elements
|
|
640
640
|
// (unless something goes really bad and it fallbacks to fixing all invalid indices)
|
|
641
641
|
nextElements = ElementsChange.reorderElements(nextElements, changedElements, flags);
|
|
@@ -847,10 +847,12 @@ export class ElementsChange {
|
|
|
847
847
|
redrawTextBoundingBox(boundText, container, elements, false);
|
|
848
848
|
}
|
|
849
849
|
}
|
|
850
|
-
static redrawBoundArrows(elements, changed) {
|
|
850
|
+
static redrawBoundArrows(elements, changed, scene) {
|
|
851
851
|
for (const element of changed.values()) {
|
|
852
852
|
if (!element.isDeleted && isBindableElement(element)) {
|
|
853
|
-
updateBoundElements(element, elements
|
|
853
|
+
updateBoundElements(element, elements, scene, {
|
|
854
|
+
changedElements: changed,
|
|
855
|
+
});
|
|
854
856
|
}
|
|
855
857
|
}
|
|
856
858
|
}
|
|
@@ -858,15 +860,22 @@ export class ElementsChange {
|
|
|
858
860
|
if (!flags.containsZindexDifference) {
|
|
859
861
|
return elements;
|
|
860
862
|
}
|
|
861
|
-
const
|
|
862
|
-
const
|
|
863
|
-
|
|
864
|
-
|
|
863
|
+
const unordered = Array.from(elements.values());
|
|
864
|
+
const ordered = orderByFractionalIndex([...unordered]);
|
|
865
|
+
const moved = Delta.getRightDifferences(unordered, ordered, true).reduce((acc, arrayIndex) => {
|
|
866
|
+
const candidate = unordered[Number(arrayIndex)];
|
|
867
|
+
if (candidate && changed.has(candidate.id)) {
|
|
868
|
+
acc.set(candidate.id, candidate);
|
|
869
|
+
}
|
|
870
|
+
return acc;
|
|
871
|
+
}, new Map());
|
|
872
|
+
if (!flags.containsVisibleDifference && moved.size) {
|
|
865
873
|
// we found a difference in order!
|
|
866
874
|
flags.containsVisibleDifference = true;
|
|
867
875
|
}
|
|
868
|
-
//
|
|
869
|
-
|
|
876
|
+
// synchronize all elements that were actually moved
|
|
877
|
+
// could fallback to synchronizing all invalid indices
|
|
878
|
+
return arrayToMap(syncMovedIndices(ordered, moved));
|
|
870
879
|
}
|
|
871
880
|
/**
|
|
872
881
|
* It is necessary to post process the partials in case of reference values,
|
|
@@ -181,8 +181,6 @@ const chartLines = (spreadsheet, x, y, groupId, backgroundColor) => {
|
|
|
181
181
|
type: "line",
|
|
182
182
|
x,
|
|
183
183
|
y,
|
|
184
|
-
startArrowhead: null,
|
|
185
|
-
endArrowhead: null,
|
|
186
184
|
width: chartWidth,
|
|
187
185
|
points: [
|
|
188
186
|
[0, 0],
|
|
@@ -196,8 +194,6 @@ const chartLines = (spreadsheet, x, y, groupId, backgroundColor) => {
|
|
|
196
194
|
type: "line",
|
|
197
195
|
x,
|
|
198
196
|
y,
|
|
199
|
-
startArrowhead: null,
|
|
200
|
-
endArrowhead: null,
|
|
201
197
|
height: chartHeight,
|
|
202
198
|
points: [
|
|
203
199
|
[0, 0],
|
|
@@ -211,8 +207,6 @@ const chartLines = (spreadsheet, x, y, groupId, backgroundColor) => {
|
|
|
211
207
|
type: "line",
|
|
212
208
|
x,
|
|
213
209
|
y: y - BAR_HEIGHT - BAR_GAP,
|
|
214
|
-
startArrowhead: null,
|
|
215
|
-
endArrowhead: null,
|
|
216
210
|
strokeStyle: "dotted",
|
|
217
211
|
width: chartWidth,
|
|
218
212
|
opacity: GRID_OPACITY,
|
|
@@ -306,8 +300,6 @@ const chartTypeLine = (spreadsheet, x, y) => {
|
|
|
306
300
|
type: "line",
|
|
307
301
|
x: x + BAR_GAP + BAR_WIDTH / 2,
|
|
308
302
|
y: y - BAR_GAP,
|
|
309
|
-
startArrowhead: null,
|
|
310
|
-
endArrowhead: null,
|
|
311
303
|
height: maxY - minY,
|
|
312
304
|
width: maxX - minX,
|
|
313
305
|
strokeWidth: 2,
|
|
@@ -339,8 +331,6 @@ const chartTypeLine = (spreadsheet, x, y) => {
|
|
|
339
331
|
type: "line",
|
|
340
332
|
x: x + cx + BAR_WIDTH / 2 + BAR_GAP / 2,
|
|
341
333
|
y: y - cy,
|
|
342
|
-
startArrowhead: null,
|
|
343
|
-
endArrowhead: null,
|
|
344
334
|
height: cy,
|
|
345
335
|
strokeStyle: "dotted",
|
|
346
336
|
opacity: GRID_OPACITY,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { InteractiveCanvasRenderConfig } from "./scene/types";
|
|
2
|
-
import { Collaborator, InteractiveCanvasAppState, SocketId } from "./types";
|
|
1
|
+
import type { InteractiveCanvasRenderConfig } from "./scene/types";
|
|
2
|
+
import type { Collaborator, InteractiveCanvasAppState, SocketId } from "./types";
|
|
3
3
|
export declare const getClientColor: (socketId: SocketId, collaborator: Collaborator | undefined) => string;
|
|
4
4
|
/**
|
|
5
5
|
* returns first char, capitalized
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { COLOR_CHARCOAL_BLACK, COLOR_VOICE_CALL, COLOR_WHITE, THEME, } from "./constants";
|
|
2
2
|
import { roundRect } from "./renderer/roundRect";
|
|
3
|
-
import { UserIdleState
|
|
3
|
+
import { UserIdleState } from "./types";
|
|
4
4
|
function hashToInteger(id) {
|
|
5
5
|
let hash = 0;
|
|
6
6
|
if (id.length === 0) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ExcalidrawElement, NonDeletedExcalidrawElement } from "./element/types";
|
|
2
|
-
import { BinaryFiles } from "./types";
|
|
3
|
-
import { Spreadsheet } from "./charts";
|
|
1
|
+
import type { ExcalidrawElement, NonDeletedExcalidrawElement } from "./element/types";
|
|
2
|
+
import type { BinaryFiles } from "./types";
|
|
3
|
+
import type { Spreadsheet } from "./charts";
|
|
4
4
|
import { ALLOWED_PASTE_MIME_TYPES } from "./constants";
|
|
5
5
|
export type PastedMixedContent = {
|
|
6
6
|
type: "text" | "imageUrl";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import oc from "open-color";
|
|
2
|
-
import { Merge } from "./utility-types";
|
|
2
|
+
import type { Merge } from "./utility-types";
|
|
3
3
|
export type ColorPickerColor = Exclude<keyof oc, "indigo" | "lime"> | "transparent" | "bronze";
|
|
4
4
|
export type ColorTuple = readonly [string, string, string, string, string];
|
|
5
5
|
export type ColorPalette = Merge<Record<ColorPickerColor, ColorTuple>, {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { ActionManager } from "../actions/manager";
|
|
3
|
-
import { ExcalidrawElement, NonDeletedElementsMap, NonDeletedSceneElementsMap } from "../element/types";
|
|
4
|
-
import { AppClassProperties, AppProps, UIAppState, Zoom } from "../types";
|
|
2
|
+
import type { ActionManager } from "../actions/manager";
|
|
3
|
+
import type { ExcalidrawElement, NonDeletedElementsMap, NonDeletedSceneElementsMap } from "../element/types";
|
|
4
|
+
import type { AppClassProperties, AppProps, UIAppState, Zoom } from "../types";
|
|
5
5
|
import "./Actions.scss";
|
|
6
6
|
export declare const canChangeStrokeColor: (appState: UIAppState, targetElements: ExcalidrawElement[]) => boolean;
|
|
7
7
|
export declare const canChangeBackgroundColor: (appState: UIAppState, targetElements: ExcalidrawElement[]) => boolean;
|
|
@@ -7,9 +7,9 @@ import { SHAPES } from "../shapes";
|
|
|
7
7
|
import { capitalizeString, isTransparent } from "../utils";
|
|
8
8
|
import Stack from "./Stack";
|
|
9
9
|
import { ToolButton } from "./ToolButton";
|
|
10
|
-
import { hasStrokeColor } from "../scene/comparisons";
|
|
10
|
+
import { hasStrokeColor, toolIsArrow } from "../scene/comparisons";
|
|
11
11
|
import { trackEvent } from "../analytics";
|
|
12
|
-
import { hasBoundTextElement, isTextElement } from "../element/typeChecks";
|
|
12
|
+
import { hasBoundTextElement, isElbowArrow, isLinearElement, isTextElement, } from "../element/typeChecks";
|
|
13
13
|
import clsx from "clsx";
|
|
14
14
|
import { actionToggleZenMode } from "../actions";
|
|
15
15
|
import { Tooltip } from "./Tooltip";
|
|
@@ -53,6 +53,10 @@ export const SelectedShapeActions = ({ appState, elementsMap, renderAction, }) =
|
|
|
53
53
|
!isTransparent(appState.currentItemBackgroundColor)) ||
|
|
54
54
|
targetElements.some((element) => hasBackground(element.type) && !isTransparent(element.backgroundColor));
|
|
55
55
|
const showLinkIcon = targetElements.length === 1 || isSingleElementBoundContainer;
|
|
56
|
+
const showLineEditorAction = !appState.editingLinearElement &&
|
|
57
|
+
targetElements.length === 1 &&
|
|
58
|
+
isLinearElement(targetElements[0]) &&
|
|
59
|
+
!isElbowArrow(targetElements[0]);
|
|
56
60
|
return (_jsxs("div", { className: "panelColumn", children: [_jsx("div", { children: canChangeStrokeColor(appState, targetElements) &&
|
|
57
61
|
renderAction("changeStrokeColor") }), canChangeBackgroundColor(appState, targetElements) && (_jsx("div", { children: renderAction("changeBackgroundColor") })), showFillIcons && renderAction("changeFillStyle"), (hasStrokeWidth(appState.activeTool.type) ||
|
|
58
62
|
targetElements.some((element) => hasStrokeWidth(element.type))) &&
|
|
@@ -60,19 +64,20 @@ export const SelectedShapeActions = ({ appState, elementsMap, renderAction, }) =
|
|
|
60
64
|
targetElements.some((element) => element.type === "freedraw")) &&
|
|
61
65
|
renderAction("changeStrokeShape"), (hasStrokeStyle(appState.activeTool.type) ||
|
|
62
66
|
targetElements.some((element) => hasStrokeStyle(element.type))) && (_jsxs(_Fragment, { children: [renderAction("changeStrokeStyle"), renderAction("changeSloppiness")] })), (canChangeRoundness(appState.activeTool.type) ||
|
|
63
|
-
targetElements.some((element) => canChangeRoundness(element.type))) && (_jsx(_Fragment, { children: renderAction("changeRoundness") })), (appState.activeTool.type
|
|
64
|
-
targetElements.some(
|
|
67
|
+
targetElements.some((element) => canChangeRoundness(element.type))) && (_jsx(_Fragment, { children: renderAction("changeRoundness") })), (toolIsArrow(appState.activeTool.type) ||
|
|
68
|
+
targetElements.some((element) => toolIsArrow(element.type))) && (_jsx(_Fragment, { children: renderAction("changeArrowType") })), (appState.activeTool.type === "text" ||
|
|
69
|
+
targetElements.some(isTextElement)) && (_jsxs(_Fragment, { children: [renderAction("changeFontFamily"), renderAction("changeFontSize"), (appState.activeTool.type === "text" ||
|
|
65
70
|
suppportsHorizontalAlign(targetElements, elementsMap)) &&
|
|
66
71
|
renderAction("changeTextAlign")] })), shouldAllowVerticalAlign(targetElements, elementsMap) &&
|
|
67
72
|
renderAction("changeVerticalAlign"), (canHaveArrowheads(appState.activeTool.type) ||
|
|
68
|
-
targetElements.some((element) => canHaveArrowheads(element.type))) && (_jsx(_Fragment, { children: renderAction("changeArrowhead") })), renderAction("changeOpacity"), _jsxs("fieldset", { children: [_jsx("legend", { children: t("labels.layers") }), _jsxs("div", { className: "buttonList", children: [renderAction("sendToBack"), renderAction("sendBackward"), renderAction("
|
|
73
|
+
targetElements.some((element) => canHaveArrowheads(element.type))) && (_jsx(_Fragment, { children: renderAction("changeArrowhead") })), renderAction("changeOpacity"), _jsxs("fieldset", { children: [_jsx("legend", { children: t("labels.layers") }), _jsxs("div", { className: "buttonList", children: [renderAction("sendToBack"), renderAction("sendBackward"), renderAction("bringForward"), renderAction("bringToFront")] })] }), targetElements.length > 1 && !isSingleElementBoundContainer && (_jsxs("fieldset", { children: [_jsx("legend", { children: t("labels.align") }), _jsxs("div", { className: "buttonList", children: [isRTL ? (_jsxs(_Fragment, { children: [renderAction("alignRight"), renderAction("alignHorizontallyCentered"), renderAction("alignLeft")] })) : (_jsxs(_Fragment, { children: [renderAction("alignLeft"), renderAction("alignHorizontallyCentered"), renderAction("alignRight")] })), targetElements.length > 2 &&
|
|
69
74
|
renderAction("distributeHorizontally"), _jsx("div", { style: { flexBasis: "100%", height: 0 } }), _jsxs("div", { style: {
|
|
70
75
|
display: "flex",
|
|
71
76
|
flexWrap: "wrap",
|
|
72
77
|
gap: ".5rem",
|
|
73
78
|
marginTop: "-0.5rem",
|
|
74
79
|
}, children: [renderAction("alignTop"), renderAction("alignVerticallyCentered"), renderAction("alignBottom"), targetElements.length > 2 &&
|
|
75
|
-
renderAction("distributeVertically")] })] })] })), !isEditing && targetElements.length > 0 && (_jsxs("fieldset", { children: [_jsx("legend", { children: t("labels.actions") }), _jsxs("div", { className: "buttonList", children: [!device.editor.isMobile && renderAction("duplicateSelection"), !device.editor.isMobile && renderAction("deleteSelectedElements"), renderAction("group"), renderAction("ungroup"), showLinkIcon && renderAction("hyperlink")] })] }))] }));
|
|
80
|
+
renderAction("distributeVertically")] })] })] })), !isEditing && targetElements.length > 0 && (_jsxs("fieldset", { children: [_jsx("legend", { children: t("labels.actions") }), _jsxs("div", { className: "buttonList", children: [!device.editor.isMobile && renderAction("duplicateSelection"), !device.editor.isMobile && renderAction("deleteSelectedElements"), renderAction("group"), renderAction("ungroup"), showLinkIcon && renderAction("hyperlink"), showLineEditorAction && renderAction("toggleLinearEditor")] })] }))] }));
|
|
76
81
|
};
|
|
77
82
|
export const ShapesSwitcher = ({ activeTool, appState, app, UIOptions, }) => {
|
|
78
83
|
const [isExtraToolsMenuOpen, setIsExtraToolsMenuOpen] = useState(false);
|
|
@@ -122,8 +127,8 @@ export const ShapesSwitcher = ({ activeTool, appState, app, UIOptions, }) => {
|
|
|
122
127
|
fontSize: 8,
|
|
123
128
|
fontFamily: "Cascadia, monospace",
|
|
124
129
|
position: "absolute",
|
|
125
|
-
background: "
|
|
126
|
-
color: "
|
|
130
|
+
background: "var(--color-promo)",
|
|
131
|
+
color: "var(--color-surface-lowest)",
|
|
127
132
|
bottom: 3,
|
|
128
133
|
right: 4,
|
|
129
134
|
}, children: "AI" }))] }), _jsxs(DropdownMenu.Content, { onClickOutside: () => setIsExtraToolsMenuOpen(false), onSelect: () => setIsExtraToolsMenuOpen(false), className: "App-toolbar__extra-tools-dropdown", children: [_jsx(DropdownMenu.Item, { onSelect: () => app.setActiveTool({ type: "frame" }), icon: frameToolIcon, shortcut: KEYS.F.toLocaleUpperCase(), "data-testid": "toolbar-frame", selected: frameToolSelected, children: t("toolBar.frame") }), _jsx(DropdownMenu.Item, { onSelect: () => app.setActiveTool({ type: "embeddable" }), icon: EmbedIcon, "data-testid": "toolbar-embeddable", selected: embeddableToolSelected, children: t("toolBar.embeddable") }), _jsx(DropdownMenu.Item, { onSelect: () => app.setActiveTool({ type: "laser" }), icon: laserPointerToolIcon, "data-testid": "toolbar-laser", selected: laserToolSelected, shortcut: KEYS.K.toLocaleUpperCase(), children: t("toolBar.laser") }), _jsx("div", { style: { margin: "6px 0", fontSize: 14, fontWeight: 600 }, children: "Generate" }), app.props.aiEnabled !== false && _jsx(TTDDialogTriggerTunnel.Out, {}), _jsx(DropdownMenu.Item, { onSelect: () => app.setOpenDialog({ name: "ttd", tab: "mermaid" }), icon: mermaidLogoIcon, "data-testid": "toolbar-embeddable", children: t("toolBar.mermaidToExcalidraw") }), app.props.aiEnabled !== false && (_jsxs(_Fragment, { children: [_jsxs(DropdownMenu.Item, { onSelect: () => app.onMagicframeToolSelect(), icon: MagicIcon, "data-testid": "toolbar-magicframe", children: [t("toolBar.magicframe"), _jsx(DropdownMenu.Item.Badge, { children: "AI" })] }), _jsx(DropdownMenu.Item, { onSelect: () => {
|
|
@@ -137,7 +142,7 @@ export const ShapesSwitcher = ({ activeTool, appState, app, UIOptions, }) => {
|
|
|
137
142
|
};
|
|
138
143
|
export const ZoomActions = ({ renderAction, zoom, }) => (_jsx(Stack.Col, { gap: 1, className: "zoom-actions", children: _jsxs(Stack.Row, { align: "center", children: [renderAction("zoomOut"), renderAction("resetZoom"), renderAction("zoomIn")] }) }));
|
|
139
144
|
export const UndoRedoActions = ({ renderAction, className, }) => (_jsxs("div", { className: `undo-redo-buttons ${className}`, children: [_jsx("div", { className: "undo-button-container", children: _jsx(Tooltip, { label: t("buttons.undo"), children: renderAction("undo") }) }), _jsx("div", { className: "redo-button-container", children: _jsxs(Tooltip, { label: t("buttons.redo"), children: [" ", renderAction("redo")] }) })] }));
|
|
140
|
-
export const ExitZenModeAction = ({ actionManager, showExitZenModeBtn, }) => (_jsx("button", { className: clsx("disable-zen-mode", {
|
|
145
|
+
export const ExitZenModeAction = ({ actionManager, showExitZenModeBtn, }) => (_jsx("button", { type: "button", className: clsx("disable-zen-mode", {
|
|
141
146
|
"disable-zen-mode--visible": showExitZenModeBtn,
|
|
142
147
|
}), onClick: () => actionManager.executeAction(actionToggleZenMode), children: t("buttons.exitZenMode") }));
|
|
143
148
|
export const FinalizeAction = ({ renderAction, className, }) => (_jsx("div", { className: `finalize-button ${className}`, children: renderAction("finalize", { size: "small" }) }));
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { RoughCanvas } from "roughjs/bin/canvas";
|
|
2
|
+
import type { RoughCanvas } from "roughjs/bin/canvas";
|
|
3
3
|
import { ActionManager } from "../actions/manager";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import type { ActionResult } from "../actions/types";
|
|
5
|
+
import { type EXPORT_IMAGE_TYPES } from "../constants";
|
|
6
|
+
import type { ExportedElements } from "../data";
|
|
6
7
|
import { LinearElementEditor } from "../element/linearElementEditor";
|
|
7
|
-
import { ExcalidrawElement, NonDeleted, NonDeletedExcalidrawElement, ExcalidrawFrameLikeElement, ExcalidrawIframeElement, ExcalidrawEmbeddableElement, Ordered } from "../element/types";
|
|
8
|
+
import type { ExcalidrawElement, NonDeleted, NonDeletedExcalidrawElement, ExcalidrawFrameLikeElement, ExcalidrawIframeElement, ExcalidrawEmbeddableElement, Ordered } from "../element/types";
|
|
8
9
|
import { History } from "../history";
|
|
9
10
|
import Scene from "../scene/Scene";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
11
|
+
import type { AppClassProperties, AppProps, AppState, ExcalidrawImperativeAPI, BinaryFiles, LibraryItems, SceneData, Device, FrameNameBoundsCache, SidebarName, SidebarTabName, ToolType, OnUserFollowedPayload } from "../types";
|
|
12
|
+
import type { FileSystemHandle } from "../data/filesystem";
|
|
13
|
+
import { Fonts } from "../fonts";
|
|
13
14
|
import { Renderer } from "../scene/Renderer";
|
|
14
15
|
import { Emitter } from "../emitter";
|
|
15
16
|
import { Store } from "../store";
|
|
@@ -50,8 +51,8 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
50
51
|
device: Device;
|
|
51
52
|
private excalidrawContainerRef;
|
|
52
53
|
scene: Scene;
|
|
54
|
+
fonts: Fonts;
|
|
53
55
|
renderer: Renderer;
|
|
54
|
-
private fonts;
|
|
55
56
|
private resizeObserver;
|
|
56
57
|
private nearestScrollableContainer;
|
|
57
58
|
library: AppClassProperties["library"];
|
|
@@ -252,7 +253,8 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
252
253
|
private onMagicSettingsConfirm;
|
|
253
254
|
onMagicframeToolSelect: () => void;
|
|
254
255
|
private openEyeDropper;
|
|
255
|
-
|
|
256
|
+
dismissLinearEditor: () => void;
|
|
257
|
+
syncActionResult: (actionResult: ActionResult) => void;
|
|
256
258
|
private onBlur;
|
|
257
259
|
private onUnload;
|
|
258
260
|
private disableEvent;
|
|
@@ -342,10 +344,10 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
342
344
|
elements?: SceneData["elements"];
|
|
343
345
|
appState?: Pick<AppState, K> | null | undefined;
|
|
344
346
|
collaborators?: SceneData["collaborators"];
|
|
345
|
-
/** @default StoreAction.
|
|
347
|
+
/** @default StoreAction.NONE */
|
|
346
348
|
storeAction?: SceneData["storeAction"];
|
|
347
349
|
}) => void;
|
|
348
|
-
private
|
|
350
|
+
private triggerRender;
|
|
349
351
|
/**
|
|
350
352
|
* @returns whether the menu was toggled on or off
|
|
351
353
|
*/
|
|
@@ -387,12 +389,6 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
387
389
|
private handleTextWysiwyg;
|
|
388
390
|
private deselectElements;
|
|
389
391
|
private getTextElementAtPosition;
|
|
390
|
-
/**
|
|
391
|
-
* get the pure geometric shape of an excalidraw element
|
|
392
|
-
* which is then used for hit detection
|
|
393
|
-
*/
|
|
394
|
-
getElementShape(element: ExcalidrawElement): GeometricShape;
|
|
395
|
-
private getBoundTextShape;
|
|
396
392
|
private getElementAtPosition;
|
|
397
393
|
private getElementsAtPosition;
|
|
398
394
|
private getElementHitThreshold;
|
|
@@ -494,6 +490,7 @@ declare class App extends React.Component<AppProps, AppState> {
|
|
|
494
490
|
declare global {
|
|
495
491
|
interface Window {
|
|
496
492
|
h: {
|
|
493
|
+
scene: Scene;
|
|
497
494
|
elements: readonly ExcalidrawElement[];
|
|
498
495
|
state: AppState;
|
|
499
496
|
setState: React.Component<any, AppState>["setState"];
|