@excalidraw/element 0.18.0-200a6bd94 → 0.18.0-2a82821
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev/index.js +8373 -5210
- package/dist/dev/index.js.map +4 -4
- package/dist/prod/index.js +20 -19
- package/dist/types/common/debug.d.ts +21 -0
- package/dist/types/common/src/appEventBus.d.ts +27 -0
- package/dist/types/common/src/bounds.d.ts +10 -0
- package/dist/types/common/src/colors.d.ts +59 -39
- package/dist/types/common/src/constants.d.ts +46 -33
- package/dist/types/common/src/editorInterface.d.ts +34 -0
- package/dist/types/common/src/font-metadata.d.ts +1 -3
- package/dist/types/common/src/index.d.ts +5 -0
- package/dist/types/common/src/keys.d.ts +1 -1
- package/dist/types/common/src/utility-types.d.ts +0 -1
- package/dist/types/common/src/utils.d.ts +53 -41
- package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
- package/dist/types/element/src/Scene.d.ts +16 -8
- package/dist/types/element/src/arrowheads.d.ts +3 -0
- package/dist/types/element/src/arrows/focus.d.ts +27 -0
- package/dist/types/element/src/arrows/helpers.d.ts +5 -0
- package/dist/types/element/src/binding.d.ts +67 -48
- package/dist/types/element/src/bounds.d.ts +25 -14
- package/dist/types/element/src/collision.d.ts +7 -2
- package/dist/types/element/src/comparisons.d.ts +8 -7
- package/dist/types/element/src/delta.d.ts +6 -4
- package/dist/types/element/src/distribute.d.ts +2 -1
- package/dist/types/element/src/dragElements.d.ts +3 -3
- package/dist/types/element/src/duplicate.d.ts +4 -3
- package/dist/types/element/src/elbowArrow.d.ts +2 -0
- package/dist/types/element/src/fractionalIndex.d.ts +2 -2
- package/dist/types/element/src/frame.d.ts +12 -7
- package/dist/types/element/src/heading.d.ts +2 -1
- package/dist/types/element/src/image.d.ts +1 -11
- package/dist/types/element/src/index.d.ts +5 -3
- package/dist/types/element/src/linearElementEditor.d.ts +23 -22
- package/dist/types/element/src/mutateElement.d.ts +5 -1
- package/dist/types/element/src/newElement.d.ts +7 -6
- package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
- package/dist/types/element/src/renderElement.d.ts +4 -7
- package/dist/types/element/src/resizeElements.d.ts +10 -10
- package/dist/types/element/src/resizeTest.d.ts +6 -5
- package/dist/types/element/src/selection.d.ts +10 -10
- package/dist/types/element/src/shape.d.ts +9 -8
- package/dist/types/element/src/store.d.ts +6 -1
- package/dist/types/element/src/textElement.d.ts +2 -2
- package/dist/types/element/src/textMeasurements.d.ts +1 -3
- package/dist/types/element/src/textWrapping.d.ts +26 -0
- package/dist/types/{excalidraw/data → element/src}/transform.d.ts +3 -3
- package/dist/types/element/src/transformHandles.d.ts +8 -27
- package/dist/types/element/src/typeChecks.d.ts +5 -7
- package/dist/types/element/src/types.d.ts +18 -13
- package/dist/types/element/src/utils.d.ts +9 -4
- package/dist/types/element/src/visualdebug.d.ts +58 -0
- package/dist/types/element/src/zindex.d.ts +7 -1
- package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +137 -174
- package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -7
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +98 -123
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +581 -913
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +100 -866
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +47 -60
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +157 -198
- package/dist/types/excalidraw/actions/actionDeselect.d.ts +160 -0
- package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +39 -58
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +96 -121
- package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +48 -61
- package/dist/types/excalidraw/actions/actionExport.d.ts +177 -1407
- package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -394
- package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionFrame.d.ts +288 -374
- package/dist/types/excalidraw/actions/actionGroup.d.ts +101 -134
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +158 -208
- package/dist/types/excalidraw/actions/actionLink.d.ts +45 -58
- package/dist/types/excalidraw/actions/actionMenu.d.ts +38 -423
- package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -359
- package/dist/types/excalidraw/actions/actionProperties.d.ts +164 -2510
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +50 -67
- package/dist/types/excalidraw/actions/actionStyles.d.ts +47 -59
- package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +3 -3
- package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +173 -0
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +47 -60
- package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +173 -0
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +47 -60
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +36 -55
- package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +47 -60
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +47 -60
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +48 -61
- package/dist/types/excalidraw/actions/actionZindex.d.ts +2 -3
- package/dist/types/excalidraw/actions/index.d.ts +5 -2
- package/dist/types/excalidraw/actions/register.d.ts +2 -2
- package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
- package/dist/types/excalidraw/actions/types.d.ts +4 -4
- package/dist/types/excalidraw/{animated-trail.d.ts → animatedTrail.d.ts} +4 -3
- package/dist/types/excalidraw/appState.d.ts +24 -15
- package/dist/types/excalidraw/charts/charts.bar.d.ts +2 -0
- package/dist/types/excalidraw/charts/charts.constants.d.ts +48 -0
- package/dist/types/excalidraw/charts/charts.helpers.d.ts +32 -0
- package/dist/types/excalidraw/charts/charts.line.d.ts +2 -0
- package/dist/types/excalidraw/charts/charts.parse.d.ts +10 -0
- package/dist/types/excalidraw/charts/charts.radar.d.ts +2 -0
- package/dist/types/excalidraw/charts/charts.types.d.ts +18 -0
- package/dist/types/excalidraw/charts/index.d.ts +7 -0
- package/dist/types/excalidraw/clipboard.d.ts +57 -19
- package/dist/types/excalidraw/components/Actions.d.ts +22 -5
- package/dist/types/excalidraw/components/ActiveConfirmDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/App.d.ts +129 -79
- package/dist/types/excalidraw/components/AppStateObserver.d.ts +37 -0
- package/dist/types/excalidraw/components/Card.d.ts +1 -3
- package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
- package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +0 -1
- package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
- package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
- package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
- package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +1 -2
- package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
- package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
- package/dist/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -2
- package/dist/types/excalidraw/components/CommandPalette/types.d.ts +2 -4
- package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +3 -3
- package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
- package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
- package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
- package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/EyeDropper.d.ts +1 -2
- package/dist/types/excalidraw/components/FilledButton.d.ts +2 -1
- package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
- package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +3 -1
- package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
- package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
- package/dist/types/excalidraw/components/IconPicker.d.ts +14 -9
- package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
- package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
- package/dist/types/excalidraw/components/LibraryMenu.d.ts +1 -1
- package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
- package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
- package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
- package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -3
- package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
- package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
- package/dist/types/excalidraw/components/MobileToolBar.d.ts +10 -0
- package/dist/types/excalidraw/components/Modal.d.ts +0 -1
- package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
- package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
- package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
- package/dist/types/excalidraw/components/Popover.d.ts +2 -1
- package/dist/types/excalidraw/components/PropertiesPopover.d.ts +2 -1
- package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
- package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
- package/dist/types/excalidraw/components/Range.d.ts +10 -4
- package/dist/types/excalidraw/components/SVGLayer.d.ts +1 -1
- package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
- package/dist/types/excalidraw/components/SearchMenu.d.ts +1 -1
- package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +16 -22
- package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
- package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
- package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
- package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
- package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
- package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
- package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
- package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
- package/dist/types/excalidraw/components/Stats/DragInput.d.ts +0 -1
- package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
- package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
- package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +23 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +27 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
- package/dist/types/excalidraw/components/TTDDialog/CodeMirrorEditor.d.ts +11 -0
- package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +12 -29
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +3 -3
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +5 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
- package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +9 -0
- package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
- package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
- package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
- package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
- package/dist/types/excalidraw/components/TTDDialog/mermaid-lang-lite.d.ts +2 -0
- package/dist/types/excalidraw/components/TTDDialog/types.d.ts +95 -0
- package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/mermaidAutoFix.d.ts +1 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/mermaidError.d.ts +10 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
- package/dist/types/excalidraw/components/TextField.d.ts +1 -0
- package/dist/types/excalidraw/components/Toast.d.ts +11 -7
- package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
- package/dist/types/excalidraw/components/Trans.d.ts +2 -2
- package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +8 -4
- package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +1 -0
- package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +47 -35
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +7 -5
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +13 -22
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +2 -2
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSub.d.ts +23 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubContent.d.ts +8 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +12 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
- package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +2 -2
- package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
- package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
- package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -1
- package/dist/types/excalidraw/components/icons.d.ts +51 -21
- package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +24 -3
- package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +39 -35
- package/dist/types/excalidraw/components/shapes.d.ts +209 -1
- package/dist/types/excalidraw/data/blob.d.ts +329 -12
- package/dist/types/excalidraw/data/encode.d.ts +4 -4
- package/dist/types/excalidraw/data/encryption.d.ts +5 -5
- package/dist/types/excalidraw/data/filesystem.d.ts +5 -7
- package/dist/types/excalidraw/data/index.d.ts +4 -5
- package/dist/types/excalidraw/data/json.d.ts +171 -4
- package/dist/types/excalidraw/data/library.d.ts +25 -10
- package/dist/types/excalidraw/data/resave.d.ts +7 -2
- package/dist/types/excalidraw/data/restore.d.ts +27 -7
- package/dist/types/excalidraw/data/types.d.ts +4 -1
- package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
- package/dist/types/excalidraw/eraser/index.d.ts +2 -3
- package/dist/types/excalidraw/errors.d.ts +14 -0
- package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +2 -2
- package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
- package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
- package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
- package/dist/types/excalidraw/i18n.d.ts +2 -2
- package/dist/types/excalidraw/{laser-trails.d.ts → laserTrails.d.ts} +5 -7
- package/dist/types/excalidraw/lasso/index.d.ts +2 -3
- package/dist/types/excalidraw/renderer/animation.d.ts +15 -0
- package/dist/types/excalidraw/renderer/helpers.d.ts +6 -8
- package/dist/types/excalidraw/renderer/interactiveScene.d.ts +8 -14
- package/dist/types/excalidraw/scene/Renderer.d.ts +428 -18
- package/dist/types/excalidraw/scene/export.d.ts +2 -2
- package/dist/types/excalidraw/scene/index.d.ts +1 -1
- package/dist/types/excalidraw/scene/scroll.d.ts +1 -6
- package/dist/types/excalidraw/scene/types.d.ts +22 -5
- package/dist/types/excalidraw/shortcut.d.ts +1 -0
- package/dist/types/excalidraw/snapping.d.ts +5 -5
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
- package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
- package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
- package/dist/types/excalidraw/textAutoResizeHandle.d.ts +15 -0
- package/dist/types/excalidraw/types.d.ts +149 -38
- package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +7 -3
- package/dist/types/fractional-indexing/src/index.d.ts +29 -0
- package/dist/types/laser-pointer/src/index.d.ts +2 -0
- package/dist/types/laser-pointer/src/math.d.ts +16 -0
- package/dist/types/laser-pointer/src/simplify.d.ts +2 -0
- package/dist/types/laser-pointer/src/state.d.ts +35 -0
- package/dist/types/math/src/constants.d.ts +0 -1
- package/dist/types/math/src/curve.d.ts +4 -1
- package/dist/types/math/src/point.d.ts +8 -2
- package/dist/types/math/src/polygon.d.ts +2 -2
- package/dist/types/math/src/range.d.ts +1 -3
- package/dist/types/math/src/segment.d.ts +4 -3
- package/dist/types/math/src/types.d.ts +25 -1
- package/dist/types/utils/src/export.d.ts +5 -5
- package/dist/types/utils/src/index.d.ts +1 -2
- package/dist/types/utils/src/shape.d.ts +6 -6
- package/package.json +10 -3
- package/dist/types/excalidraw/animation-frame-handler.d.ts +0 -16
- package/dist/types/excalidraw/charts.d.ts +0 -27
- package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +0 -4
- package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +0 -16
- package/dist/types/excalidraw/components/InitializeApp.d.ts +0 -10
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +0 -9
- package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +0 -8
- package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +0 -10
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +0 -58
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +0 -19
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +0 -85
- package/dist/types/excalidraw/data/reconcile.d.ts +0 -7
- package/dist/types/excalidraw/index.d.ts +0 -47
- package/dist/types/excalidraw/polyfill.d.ts +0 -2
- package/dist/types/utils/src/bbox.d.ts +0 -9
- package/dist/types/utils/src/withinBounds.d.ts +0 -19
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import type { IMAGE_MIME_TYPES, UserIdleState, throttleRAF, MIME_TYPES } from "@excalidraw/common";
|
|
2
|
-
import type { SuggestedBinding } from "@excalidraw/element";
|
|
1
|
+
import type { IMAGE_MIME_TYPES, UserIdleState, throttleRAF, MIME_TYPES, EditorInterface, StrokeWidthKey } from "@excalidraw/common";
|
|
3
2
|
import type { LinearElementEditor } from "@excalidraw/element";
|
|
4
3
|
import type { MaybeTransformHandleType } from "@excalidraw/element";
|
|
5
|
-
import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead,
|
|
4
|
+
import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, FontFamilyValues, FileId, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement, OrderedExcalidrawElement, ExcalidrawNonSelectionElement, BindMode, ExcalidrawTextElement, StrokeVariability } from "@excalidraw/element/types";
|
|
6
5
|
import type { Merge, MaybePromise, ValueOf, MakeBrand } from "@excalidraw/common/utility-types";
|
|
7
6
|
import type { CaptureUpdateActionType, DurableIncrement, EphemeralIncrement } from "@excalidraw/element";
|
|
7
|
+
import type { GlobalPoint } from "@excalidraw/math";
|
|
8
8
|
import type { Action } from "./actions/types";
|
|
9
9
|
import type { Spreadsheet } from "./charts";
|
|
10
10
|
import type { ClipboardData } from "./clipboard";
|
|
11
11
|
import type App from "./components/App";
|
|
12
12
|
import type Library from "./data/library";
|
|
13
|
-
import type { FileSystemHandle } from "./data/filesystem";
|
|
14
13
|
import type { ContextMenuItems } from "./components/ContextMenu";
|
|
15
14
|
import type { SnapLine } from "./snapping";
|
|
16
15
|
import type { ImportedDataState } from "./data/types";
|
|
@@ -18,6 +17,7 @@ import type { Language } from "./i18n";
|
|
|
18
17
|
import type { isOverScrollBars } from "./scene/scrollbars";
|
|
19
18
|
import type React from "react";
|
|
20
19
|
import type { JSX } from "react";
|
|
20
|
+
export type { App };
|
|
21
21
|
export type SocketId = string & {
|
|
22
22
|
_brand: "SocketId";
|
|
23
23
|
};
|
|
@@ -125,16 +125,20 @@ export type StaticCanvasAppState = Readonly<_CommonCanvasAppState & {
|
|
|
125
125
|
frameRendering: AppState["frameRendering"];
|
|
126
126
|
currentHoveredFontFamily: AppState["currentHoveredFontFamily"];
|
|
127
127
|
hoveredElementIds: AppState["hoveredElementIds"];
|
|
128
|
+
suggestedBinding: AppState["suggestedBinding"];
|
|
128
129
|
croppingElementId: AppState["croppingElementId"];
|
|
129
130
|
}>;
|
|
130
131
|
export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
|
|
132
|
+
activeTool: AppState["activeTool"];
|
|
131
133
|
activeEmbeddable: AppState["activeEmbeddable"];
|
|
132
134
|
selectionElement: AppState["selectionElement"];
|
|
133
135
|
selectedGroupIds: AppState["selectedGroupIds"];
|
|
134
136
|
selectedLinearElement: AppState["selectedLinearElement"];
|
|
135
137
|
multiElement: AppState["multiElement"];
|
|
138
|
+
newElement: AppState["newElement"];
|
|
136
139
|
isBindingEnabled: AppState["isBindingEnabled"];
|
|
137
|
-
|
|
140
|
+
isMidpointSnappingEnabled: AppState["isMidpointSnappingEnabled"];
|
|
141
|
+
suggestedBinding: AppState["suggestedBinding"];
|
|
138
142
|
isRotating: AppState["isRotating"];
|
|
139
143
|
elementsToHighlight: AppState["elementsToHighlight"];
|
|
140
144
|
collaborators: AppState["collaborators"];
|
|
@@ -145,6 +149,11 @@ export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
|
|
|
145
149
|
croppingElementId: AppState["croppingElementId"];
|
|
146
150
|
searchMatches: AppState["searchMatches"];
|
|
147
151
|
activeLockedId: AppState["activeLockedId"];
|
|
152
|
+
hoveredElementIds: AppState["hoveredElementIds"];
|
|
153
|
+
frameRendering: AppState["frameRendering"];
|
|
154
|
+
shouldCacheIgnoreZoom: AppState["shouldCacheIgnoreZoom"];
|
|
155
|
+
exportScale: AppState["exportScale"];
|
|
156
|
+
currentItemArrowType: AppState["currentItemArrowType"];
|
|
148
157
|
}>;
|
|
149
158
|
export type ObservedAppState = ObservedStandaloneAppState & ObservedElementsAppState;
|
|
150
159
|
export type ObservedStandaloneAppState = {
|
|
@@ -155,14 +164,15 @@ export type ObservedElementsAppState = {
|
|
|
155
164
|
editingGroupId: AppState["editingGroupId"];
|
|
156
165
|
selectedElementIds: AppState["selectedElementIds"];
|
|
157
166
|
selectedGroupIds: AppState["selectedGroupIds"];
|
|
158
|
-
|
|
159
|
-
|
|
167
|
+
selectedLinearElement: {
|
|
168
|
+
elementId: LinearElementEditor["elementId"];
|
|
160
169
|
isEditing: boolean;
|
|
161
170
|
} | null;
|
|
162
171
|
croppingElementId: AppState["croppingElementId"];
|
|
163
172
|
lockedMultiSelections: AppState["lockedMultiSelections"];
|
|
164
173
|
activeLockedId: AppState["activeLockedId"];
|
|
165
174
|
};
|
|
175
|
+
export type BoxSelectionMode = "contain" | "overlap";
|
|
166
176
|
export interface AppState {
|
|
167
177
|
contextMenu: {
|
|
168
178
|
items: ContextMenuItems;
|
|
@@ -196,9 +206,25 @@ export interface AppState {
|
|
|
196
206
|
* - set on pointer down, updated during pointer move
|
|
197
207
|
*/
|
|
198
208
|
selectionElement: NonDeletedExcalidrawElement | null;
|
|
209
|
+
/**
|
|
210
|
+
* tracking current arrow binding editor state (takes into account
|
|
211
|
+
* `bindingPreference` and keyboard modifiers (ctrl/alt)
|
|
212
|
+
*/
|
|
199
213
|
isBindingEnabled: boolean;
|
|
200
|
-
|
|
201
|
-
|
|
214
|
+
/** user box selection preference; defaults to "contain" when unset */
|
|
215
|
+
boxSelectionMode: BoxSelectionMode;
|
|
216
|
+
/** user arrow binding preference */
|
|
217
|
+
bindingPreference: "enabled" | "disabled";
|
|
218
|
+
/** user preference whether arrow snap to midpoints while binding */
|
|
219
|
+
isMidpointSnappingEnabled: boolean;
|
|
220
|
+
/**
|
|
221
|
+
* The bindable element the UI highlights for the user when an arrow is
|
|
222
|
+
* dragged or otherwise its endpoint being close to said element.
|
|
223
|
+
*/
|
|
224
|
+
suggestedBinding: {
|
|
225
|
+
element: NonDeleted<ExcalidrawBindableElement>;
|
|
226
|
+
midPoint?: GlobalPoint;
|
|
227
|
+
} | null;
|
|
202
228
|
frameToHighlight: NonDeleted<ExcalidrawFrameLikeElement> | null;
|
|
203
229
|
frameRendering: {
|
|
204
230
|
enabled: boolean;
|
|
@@ -211,7 +237,7 @@ export interface AppState {
|
|
|
211
237
|
/**
|
|
212
238
|
* set when a new text is created or when an existing text is being edited
|
|
213
239
|
*/
|
|
214
|
-
editingTextElement:
|
|
240
|
+
editingTextElement: ExcalidrawTextElement | null;
|
|
215
241
|
activeTool: {
|
|
216
242
|
/**
|
|
217
243
|
* indicates a previous tool we should revert back to if we deselect the
|
|
@@ -221,6 +247,10 @@ export interface AppState {
|
|
|
221
247
|
locked: boolean;
|
|
222
248
|
fromSelection: boolean;
|
|
223
249
|
} & ActiveTool;
|
|
250
|
+
preferredSelectionTool: {
|
|
251
|
+
type: "selection" | "lasso";
|
|
252
|
+
initialized: boolean;
|
|
253
|
+
};
|
|
224
254
|
penMode: boolean;
|
|
225
255
|
penDetected: boolean;
|
|
226
256
|
exportBackground: boolean;
|
|
@@ -230,9 +260,10 @@ export interface AppState {
|
|
|
230
260
|
currentItemStrokeColor: string;
|
|
231
261
|
currentItemBackgroundColor: string;
|
|
232
262
|
currentItemFillStyle: ExcalidrawElement["fillStyle"];
|
|
233
|
-
|
|
263
|
+
currentItemStrokeWidthKey: StrokeWidthKey;
|
|
234
264
|
currentItemStrokeStyle: ExcalidrawElement["strokeStyle"];
|
|
235
265
|
currentItemRoughness: number;
|
|
266
|
+
currentItemStrokeVariability: StrokeVariability;
|
|
236
267
|
currentItemOpacity: number;
|
|
237
268
|
currentItemFontFamily: FontFamilyValues;
|
|
238
269
|
currentItemFontSize: number;
|
|
@@ -251,8 +282,8 @@ export interface AppState {
|
|
|
251
282
|
isResizing: boolean;
|
|
252
283
|
isRotating: boolean;
|
|
253
284
|
zoom: Zoom;
|
|
254
|
-
openMenu: "canvas" |
|
|
255
|
-
openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | null;
|
|
285
|
+
openMenu: "canvas" | null;
|
|
286
|
+
openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
|
|
256
287
|
openSidebar: {
|
|
257
288
|
name: SidebarName;
|
|
258
289
|
tab?: SidebarTabName;
|
|
@@ -264,9 +295,15 @@ export interface AppState {
|
|
|
264
295
|
tab: "text-to-diagram" | "mermaid";
|
|
265
296
|
} | {
|
|
266
297
|
name: "commandPalette";
|
|
298
|
+
} | {
|
|
299
|
+
name: "settings";
|
|
267
300
|
} | {
|
|
268
301
|
name: "elementLinkSelector";
|
|
269
302
|
sourceElementId: ExcalidrawElement["id"];
|
|
303
|
+
} | {
|
|
304
|
+
name: "charts";
|
|
305
|
+
data: Spreadsheet;
|
|
306
|
+
rawText: string;
|
|
270
307
|
};
|
|
271
308
|
/**
|
|
272
309
|
* Reflects user preference for whether the default sidebar should be docked.
|
|
@@ -289,7 +326,7 @@ export interface AppState {
|
|
|
289
326
|
selectedElementsAreBeingDragged: boolean;
|
|
290
327
|
shouldCacheIgnoreZoom: boolean;
|
|
291
328
|
toast: {
|
|
292
|
-
message:
|
|
329
|
+
message: React.ReactNode;
|
|
293
330
|
closable?: boolean;
|
|
294
331
|
duration?: number;
|
|
295
332
|
} | null;
|
|
@@ -311,21 +348,13 @@ export interface AppState {
|
|
|
311
348
|
height: number;
|
|
312
349
|
offsetTop: number;
|
|
313
350
|
offsetLeft: number;
|
|
314
|
-
fileHandle:
|
|
351
|
+
fileHandle: FileSystemFileHandle | null;
|
|
315
352
|
collaborators: Map<SocketId, Collaborator>;
|
|
316
353
|
stats: {
|
|
317
354
|
open: boolean;
|
|
318
355
|
/** bitmap. Use `STATS_PANELS` bit values */
|
|
319
356
|
panels: number;
|
|
320
357
|
};
|
|
321
|
-
currentChartType: ChartType;
|
|
322
|
-
pasteDialog: {
|
|
323
|
-
shown: false;
|
|
324
|
-
data: null;
|
|
325
|
-
} | {
|
|
326
|
-
shown: true;
|
|
327
|
-
data: Spreadsheet;
|
|
328
|
-
};
|
|
329
358
|
showHyperlinkPopup: false | "info" | "editor";
|
|
330
359
|
selectedLinearElement: LinearElementEditor | null;
|
|
331
360
|
snapLines: readonly SnapLine[];
|
|
@@ -351,6 +380,7 @@ export interface AppState {
|
|
|
351
380
|
lockedMultiSelections: {
|
|
352
381
|
[groupId: string]: true;
|
|
353
382
|
};
|
|
383
|
+
bindMode: BindMode;
|
|
354
384
|
}
|
|
355
385
|
export type SearchMatch = {
|
|
356
386
|
id: string;
|
|
@@ -363,7 +393,7 @@ export type SearchMatch = {
|
|
|
363
393
|
showOnCanvas: boolean;
|
|
364
394
|
}[];
|
|
365
395
|
};
|
|
366
|
-
export type UIAppState = Omit<AppState, "
|
|
396
|
+
export type UIAppState = Omit<AppState, "cursorButton" | "scrollX" | "scrollY">;
|
|
367
397
|
export type NormalizedZoomValue = number & {
|
|
368
398
|
_brand: "normalizedZoom";
|
|
369
399
|
};
|
|
@@ -411,11 +441,37 @@ export type OnUserFollowedPayload = {
|
|
|
411
441
|
userToFollow: UserToFollow;
|
|
412
442
|
action: "FOLLOW" | "UNFOLLOW";
|
|
413
443
|
};
|
|
444
|
+
export type OnExportProgress = {
|
|
445
|
+
type: "progress";
|
|
446
|
+
message?: React.ReactNode;
|
|
447
|
+
/** 0-1 range */
|
|
448
|
+
progress?: number;
|
|
449
|
+
};
|
|
414
450
|
export interface ExcalidrawProps {
|
|
415
451
|
onChange?: (elements: readonly OrderedExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
|
|
452
|
+
onThemeChange?: (theme: Theme | "system") => void;
|
|
453
|
+
/**
|
|
454
|
+
* note: only subscribes if the props.onIncrement is defined on initial render
|
|
455
|
+
*/
|
|
416
456
|
onIncrement?: (event: DurableIncrement | EphemeralIncrement) => void;
|
|
417
457
|
initialData?: (() => MaybePromise<ExcalidrawInitialDataState | null>) | MaybePromise<ExcalidrawInitialDataState | null>;
|
|
418
|
-
|
|
458
|
+
/**
|
|
459
|
+
* Invoked as soon as the Excalidraw API is available
|
|
460
|
+
* NOTE editor is not yet mounted, and state is not yet initialized
|
|
461
|
+
*/
|
|
462
|
+
onExcalidrawAPI?: (api: ExcalidrawImperativeAPI | null) => void;
|
|
463
|
+
/**
|
|
464
|
+
* Invoked once the editor root is mounted.
|
|
465
|
+
*/
|
|
466
|
+
onMount?: (payload: ExcalidrawMountPayload) => void;
|
|
467
|
+
/**
|
|
468
|
+
* Invoked when the editor root is unmounted.
|
|
469
|
+
*/
|
|
470
|
+
onUnmount?: () => void;
|
|
471
|
+
/**
|
|
472
|
+
* Invoked once the initial scene is loaded.
|
|
473
|
+
*/
|
|
474
|
+
onInitialize?: (api: ExcalidrawImperativeAPI) => void;
|
|
419
475
|
isCollaborating?: boolean;
|
|
420
476
|
onPointerUpdate?: (payload: {
|
|
421
477
|
pointer: {
|
|
@@ -441,6 +497,7 @@ export interface ExcalidrawProps {
|
|
|
441
497
|
onDuplicate?: (nextElements: readonly ExcalidrawElement[],
|
|
442
498
|
/** excludes the duplicated elements */
|
|
443
499
|
prevElements: readonly ExcalidrawElement[]) => ExcalidrawElement[] | void;
|
|
500
|
+
renderTopLeftUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
|
|
444
501
|
renderTopRightUI?: (isMobile: boolean, appState: UIAppState) => JSX.Element | null;
|
|
445
502
|
langCode?: Language["code"];
|
|
446
503
|
viewModeEnabled?: boolean;
|
|
@@ -452,6 +509,10 @@ export interface ExcalidrawProps {
|
|
|
452
509
|
name?: string;
|
|
453
510
|
renderCustomStats?: (elements: readonly NonDeletedExcalidrawElement[], appState: UIAppState) => JSX.Element;
|
|
454
511
|
UIOptions?: Partial<UIOptions>;
|
|
512
|
+
/**
|
|
513
|
+
* dimensions and size constraints for inserted images
|
|
514
|
+
*/
|
|
515
|
+
imageOptions?: ImageOptions;
|
|
455
516
|
detectScroll?: boolean;
|
|
456
517
|
handleKeyboardGlobally?: boolean;
|
|
457
518
|
onLibraryChange?: (libraryItems: LibraryItems) => void | Promise<any>;
|
|
@@ -471,6 +532,29 @@ export interface ExcalidrawProps {
|
|
|
471
532
|
aiEnabled?: boolean;
|
|
472
533
|
showDeprecatedFonts?: boolean;
|
|
473
534
|
renderScrollbars?: boolean;
|
|
535
|
+
/**
|
|
536
|
+
* Called before exporting to a file.
|
|
537
|
+
*
|
|
538
|
+
* Allows the host app to intercept and delay saving until async operations
|
|
539
|
+
* (e.g., images are loaded) complete.
|
|
540
|
+
*
|
|
541
|
+
* If Promise/AsyncGenerator is returned, a progress toast will be shown
|
|
542
|
+
* until the operation completes. Generator can yield progress updates.
|
|
543
|
+
*/
|
|
544
|
+
onExport?: (
|
|
545
|
+
/** type of export. Currently we only call for JSON exports or
|
|
546
|
+
* JSON-embedded PNG (which is also identified as `json` type here)*/
|
|
547
|
+
type: "json", data: {
|
|
548
|
+
elements: readonly ExcalidrawElement[];
|
|
549
|
+
appState: AppState;
|
|
550
|
+
files: BinaryFiles;
|
|
551
|
+
}, options: {
|
|
552
|
+
/** signal that gets aborted if user cancels the export (e.g. closes
|
|
553
|
+
* the native file picker dialog). In that case, you can either
|
|
554
|
+
* return immediately, or throw AbortError.
|
|
555
|
+
*/
|
|
556
|
+
signal: AbortSignal;
|
|
557
|
+
}) => MaybePromise<void> | AsyncGenerator<OnExportProgress, void>;
|
|
474
558
|
}
|
|
475
559
|
export type SceneData = {
|
|
476
560
|
elements?: ImportedDataState["elements"];
|
|
@@ -483,12 +567,21 @@ export type ExportOpts = {
|
|
|
483
567
|
onExportToBackend?: (exportedElements: readonly NonDeletedExcalidrawElement[], appState: UIAppState, files: BinaryFiles) => void;
|
|
484
568
|
renderCustomUI?: (exportedElements: readonly NonDeletedExcalidrawElement[], appState: UIAppState, files: BinaryFiles, canvas: HTMLCanvasElement) => JSX.Element;
|
|
485
569
|
};
|
|
570
|
+
export type ImageOptions = Partial<{
|
|
571
|
+
maxWidthOrHeight: number;
|
|
572
|
+
maxFileSizeBytes: number;
|
|
573
|
+
}>;
|
|
486
574
|
export type CanvasActions = Partial<{
|
|
487
575
|
changeViewBackgroundColor: boolean;
|
|
488
576
|
clearCanvas: boolean;
|
|
489
577
|
export: false | ExportOpts;
|
|
490
578
|
loadScene: boolean;
|
|
491
579
|
saveToActiveFile: boolean;
|
|
580
|
+
/**
|
|
581
|
+
* defaults to true if `props.theme` is omitted or `props.onThemeChange`
|
|
582
|
+
* is supplied (at which point the theme is considered as host-app controlled),
|
|
583
|
+
* else default to false
|
|
584
|
+
* */
|
|
492
585
|
toggleTheme: boolean | null;
|
|
493
586
|
saveAsImage: boolean;
|
|
494
587
|
}>;
|
|
@@ -498,6 +591,11 @@ export type UIOptions = Partial<{
|
|
|
498
591
|
tools: {
|
|
499
592
|
image: boolean;
|
|
500
593
|
};
|
|
594
|
+
/**
|
|
595
|
+
* Optionally control the editor form factor and desktop UI mode from the host app.
|
|
596
|
+
* If not provided, we will take care of it internally.
|
|
597
|
+
*/
|
|
598
|
+
getFormFactor?: (editorWidth: number, editorHeight: number) => EditorInterface["formFactor"];
|
|
501
599
|
/** @deprecated does nothing. Will be removed in 0.15 */
|
|
502
600
|
welcomeScreen?: boolean;
|
|
503
601
|
}>;
|
|
@@ -507,6 +605,7 @@ export type AppProps = Merge<ExcalidrawProps, {
|
|
|
507
605
|
export: ExportOpts;
|
|
508
606
|
};
|
|
509
607
|
}>;
|
|
608
|
+
imageOptions: Required<ImageOptions>;
|
|
510
609
|
detectScroll: boolean;
|
|
511
610
|
handleKeyboardGlobally: boolean;
|
|
512
611
|
isCollaborating: boolean;
|
|
@@ -518,6 +617,8 @@ export type AppProps = Merge<ExcalidrawProps, {
|
|
|
518
617
|
export type AppClassProperties = {
|
|
519
618
|
props: AppProps;
|
|
520
619
|
state: AppState;
|
|
620
|
+
api: App["api"];
|
|
621
|
+
sessionExportThemeOverride: App["sessionExportThemeOverride"];
|
|
521
622
|
interactiveCanvas: HTMLCanvasElement | null;
|
|
522
623
|
/** static canvas */
|
|
523
624
|
canvas: HTMLCanvasElement;
|
|
@@ -528,7 +629,7 @@ export type AppClassProperties = {
|
|
|
528
629
|
mimeType: ValueOf<typeof IMAGE_MIME_TYPES>;
|
|
529
630
|
}>;
|
|
530
631
|
files: BinaryFiles;
|
|
531
|
-
|
|
632
|
+
editorInterface: App["editorInterface"];
|
|
532
633
|
scene: App["scene"];
|
|
533
634
|
syncActionResult: App["syncActionResult"];
|
|
534
635
|
fonts: App["fonts"];
|
|
@@ -557,6 +658,12 @@ export type AppClassProperties = {
|
|
|
557
658
|
excalidrawContainerValue: App["excalidrawContainerValue"];
|
|
558
659
|
onPointerUpEmitter: App["onPointerUpEmitter"];
|
|
559
660
|
updateEditorAtom: App["updateEditorAtom"];
|
|
661
|
+
onPointerDownEmitter: App["onPointerDownEmitter"];
|
|
662
|
+
onEvent: App["onEvent"];
|
|
663
|
+
onStateChange: App["onStateChange"];
|
|
664
|
+
lastPointerMoveCoords: App["lastPointerMoveCoords"];
|
|
665
|
+
bindModeHandler: App["bindModeHandler"];
|
|
666
|
+
setAppState: App["setAppState"];
|
|
560
667
|
};
|
|
561
668
|
export type PointerDownState = Readonly<{
|
|
562
669
|
origin: Readonly<{
|
|
@@ -604,6 +711,7 @@ export type PointerDownState = Readonly<{
|
|
|
604
711
|
x: number;
|
|
605
712
|
y: number;
|
|
606
713
|
};
|
|
714
|
+
blockDragging: boolean;
|
|
607
715
|
};
|
|
608
716
|
eventListeners: {
|
|
609
717
|
onMove: null | ReturnType<typeof throttleRAF>;
|
|
@@ -616,8 +724,20 @@ export type PointerDownState = Readonly<{
|
|
|
616
724
|
};
|
|
617
725
|
}>;
|
|
618
726
|
export type UnsubscribeCallback = () => void;
|
|
727
|
+
export type ExcalidrawMountPayload = {
|
|
728
|
+
excalidrawAPI: ExcalidrawImperativeAPI;
|
|
729
|
+
container: HTMLDivElement | null;
|
|
730
|
+
};
|
|
731
|
+
export type ExcalidrawImperativeAPIEventMap = {
|
|
732
|
+
"editor:mount": [payload: ExcalidrawMountPayload];
|
|
733
|
+
"editor:initialize": [api: ExcalidrawImperativeAPI];
|
|
734
|
+
"editor:unmount": [];
|
|
735
|
+
};
|
|
619
736
|
export interface ExcalidrawImperativeAPI {
|
|
737
|
+
/** Whether the editor has been unmounted and the API is no longer usable. */
|
|
738
|
+
isDestroyed: boolean;
|
|
620
739
|
updateScene: InstanceType<typeof App>["updateScene"];
|
|
740
|
+
applyDeltas: InstanceType<typeof App>["applyDeltas"];
|
|
621
741
|
mutateElement: InstanceType<typeof App>["mutateElement"];
|
|
622
742
|
updateLibrary: InstanceType<typeof Library>["updateLibrary"];
|
|
623
743
|
resetScene: InstanceType<typeof App>["resetScene"];
|
|
@@ -640,6 +760,7 @@ export interface ExcalidrawImperativeAPI {
|
|
|
640
760
|
setCursor: InstanceType<typeof App>["setCursor"];
|
|
641
761
|
resetCursor: InstanceType<typeof App>["resetCursor"];
|
|
642
762
|
toggleSidebar: InstanceType<typeof App>["toggleSidebar"];
|
|
763
|
+
getEditorInterface: () => EditorInterface;
|
|
643
764
|
/**
|
|
644
765
|
* Disables rendering of frames (including element clipping), but currently
|
|
645
766
|
* the frames are still interactive in edit mode. As such, this API should be
|
|
@@ -652,18 +773,9 @@ export interface ExcalidrawImperativeAPI {
|
|
|
652
773
|
onPointerUp: (callback: (activeTool: AppState["activeTool"], pointerDownState: PointerDownState, event: PointerEvent) => void) => UnsubscribeCallback;
|
|
653
774
|
onScrollChange: (callback: (scrollX: number, scrollY: number, zoom: Zoom) => void) => UnsubscribeCallback;
|
|
654
775
|
onUserFollow: (callback: (payload: OnUserFollowedPayload) => void) => UnsubscribeCallback;
|
|
776
|
+
onStateChange: InstanceType<typeof App>["onStateChange"];
|
|
777
|
+
onEvent: InstanceType<typeof App>["onEvent"];
|
|
655
778
|
}
|
|
656
|
-
export type Device = Readonly<{
|
|
657
|
-
viewport: {
|
|
658
|
-
isMobile: boolean;
|
|
659
|
-
isLandscape: boolean;
|
|
660
|
-
};
|
|
661
|
-
editor: {
|
|
662
|
-
isMobile: boolean;
|
|
663
|
-
canFitSidebar: boolean;
|
|
664
|
-
};
|
|
665
|
-
isTouchScreen: boolean;
|
|
666
|
-
}>;
|
|
667
779
|
export type FrameNameBounds = {
|
|
668
780
|
x: number;
|
|
669
781
|
y: number;
|
|
@@ -703,4 +815,3 @@ export type Offsets = Partial<{
|
|
|
703
815
|
bottom: number;
|
|
704
816
|
left: number;
|
|
705
817
|
}>;
|
|
706
|
-
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ExcalidrawElement, ExcalidrawTextElement } from "@excalidraw/element/types";
|
|
2
2
|
import type App from "../components/App";
|
|
3
3
|
type SubmitHandler = () => void;
|
|
4
|
-
export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, autoSelect, }: {
|
|
4
|
+
export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, autoSelect, initialCaretSceneCoords, }: {
|
|
5
5
|
id: ExcalidrawElement["id"];
|
|
6
6
|
/**
|
|
7
7
|
* textWysiwyg only deals with `originalText`
|
|
@@ -9,7 +9,7 @@ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords,
|
|
|
9
9
|
* Note: `text`, which can be wrapped and therefore different from `originalText`,
|
|
10
10
|
* is derived from `originalText`
|
|
11
11
|
*/
|
|
12
|
-
onChange?: (
|
|
12
|
+
onChange?: (nextOriginalText: string) => void;
|
|
13
13
|
onSubmit: (data: {
|
|
14
14
|
viaKeyboard: boolean;
|
|
15
15
|
nextOriginalText: string;
|
|
@@ -19,6 +19,10 @@ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords,
|
|
|
19
19
|
canvas: HTMLCanvasElement;
|
|
20
20
|
excalidrawContainer: HTMLDivElement | null;
|
|
21
21
|
app: App;
|
|
22
|
-
autoSelect?: boolean
|
|
22
|
+
autoSelect?: boolean;
|
|
23
|
+
initialCaretSceneCoords?: {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
} | null;
|
|
23
27
|
}) => SubmitHandler;
|
|
24
28
|
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const BASE_62_DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
|
2
|
+
/**
|
|
3
|
+
* @param {string} key
|
|
4
|
+
* @param {string} digits
|
|
5
|
+
* @return {void}
|
|
6
|
+
*/
|
|
7
|
+
export declare function validateOrderKey(key: string, digits?: string): void;
|
|
8
|
+
/**
|
|
9
|
+
* @param {string | null | undefined} a
|
|
10
|
+
* @param {string | null | undefined} b
|
|
11
|
+
* @param {string=} digits
|
|
12
|
+
* @return {string}
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateKeyBetween(a: string | null | undefined, b: string | null | undefined, digits?: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* same preconditions as generateKeysBetween.
|
|
17
|
+
* n >= 0.
|
|
18
|
+
* Returns an array of n distinct keys in sorted order.
|
|
19
|
+
* If a and b are both null, returns [a0, a1, ...]
|
|
20
|
+
* If one or the other is null, returns consecutive "integer"
|
|
21
|
+
* keys. Otherwise, returns relatively short keys between
|
|
22
|
+
* a and b.
|
|
23
|
+
* @param {string | null | undefined} a
|
|
24
|
+
* @param {string | null | undefined} b
|
|
25
|
+
* @param {number} n
|
|
26
|
+
* @param {string} digits
|
|
27
|
+
* @return {string[]}
|
|
28
|
+
*/
|
|
29
|
+
export declare function generateNKeysBetween(a: string | null | undefined, b: string | null | undefined, n: number, digits?: string): string[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type Point = [x: number, y: number, r: number];
|
|
2
|
+
export declare function add([ax, ay, ar]: Point, [bx, by, br]: Point): Point;
|
|
3
|
+
export declare function sub([ax, ay, ar]: Point, [bx, by, br]: Point): Point;
|
|
4
|
+
export declare function smul([x, y, r]: Point, s: number): Point;
|
|
5
|
+
export declare function norm([x, y, r]: Point): Point;
|
|
6
|
+
export declare function rot([x, y, r]: Point, rad: number): Point;
|
|
7
|
+
export declare function plerp(a: Point, b: Point, t: number): Point;
|
|
8
|
+
export declare function lerp(a: number, b: number, t: number): number;
|
|
9
|
+
export declare function angle(p: Point, p1: Point, p2: Point): number;
|
|
10
|
+
export declare function normAngle(a: number): number;
|
|
11
|
+
export declare function mag([x, y]: Point): number;
|
|
12
|
+
export declare function dist([ax, ay]: Point, [bx, by]: Point): number;
|
|
13
|
+
export declare function getCircleAndPerpendicularLineIntersectionsAtPoint(point: Point, direction: Point, radius: number): [Point, Point];
|
|
14
|
+
export declare function runLength(ps: Point[]): number;
|
|
15
|
+
export declare const clamp: (v: number, min: number, max: number) => number;
|
|
16
|
+
export declare function distancePointToSegment(p3: Point, p1: Point, p2: Point): number;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Point } from "./math";
|
|
2
|
+
export type SizeMappingDetails = {
|
|
3
|
+
pressure: number;
|
|
4
|
+
runningLength: number;
|
|
5
|
+
currentIndex: number;
|
|
6
|
+
totalLength: number;
|
|
7
|
+
};
|
|
8
|
+
export type LaserPointerOptions = {
|
|
9
|
+
size: number;
|
|
10
|
+
streamline: number;
|
|
11
|
+
simplify: number;
|
|
12
|
+
simplifyPhase: "tail" | "output" | "input";
|
|
13
|
+
keepHead: boolean;
|
|
14
|
+
sizeMapping: (details: SizeMappingDetails) => number;
|
|
15
|
+
};
|
|
16
|
+
export declare class LaserPointer {
|
|
17
|
+
static defaults: LaserPointerOptions;
|
|
18
|
+
static constants: {
|
|
19
|
+
cornerDetectionMaxAngle: number;
|
|
20
|
+
cornerDetectionVariance: (s: number) => 1 | 0.5;
|
|
21
|
+
maxTailLength: number;
|
|
22
|
+
};
|
|
23
|
+
options: LaserPointerOptions;
|
|
24
|
+
constructor(options: Partial<LaserPointerOptions>);
|
|
25
|
+
originalPoints: Point[];
|
|
26
|
+
private stablePoints;
|
|
27
|
+
private tailPoints;
|
|
28
|
+
private isFresh;
|
|
29
|
+
private get lastPoint();
|
|
30
|
+
addPoint(point: Point): void;
|
|
31
|
+
close(): void;
|
|
32
|
+
stabilizeTail(): void;
|
|
33
|
+
private getSize;
|
|
34
|
+
getStrokeOutline(sizeOverride?: number | undefined): Point[];
|
|
35
|
+
}
|
|
@@ -12,7 +12,10 @@ export declare const bezierEquation: <Point extends GlobalPoint | LocalPoint>(c:
|
|
|
12
12
|
/**
|
|
13
13
|
* Computes the intersection between a cubic spline and a line segment.
|
|
14
14
|
*/
|
|
15
|
-
export declare function curveIntersectLineSegment<Point extends GlobalPoint | LocalPoint>(c: Curve<Point>, l: LineSegment<Point
|
|
15
|
+
export declare function curveIntersectLineSegment<Point extends GlobalPoint | LocalPoint>(c: Curve<Point>, l: LineSegment<Point>, opts?: {
|
|
16
|
+
tolerance?: number;
|
|
17
|
+
iterLimit?: number;
|
|
18
|
+
}): Point[];
|
|
16
19
|
/**
|
|
17
20
|
* Finds the closest point on the Bezier curve from another point
|
|
18
21
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LocalPoint, GlobalPoint, Radians, Degrees, Vector } from "./types";
|
|
1
|
+
import type { LocalPoint, GlobalPoint, Radians, Degrees, Vector, GlobalCoord, LocalCoord } from "./types";
|
|
2
2
|
/**
|
|
3
3
|
* Create a properly typed Point instance from the X and Y coordinates.
|
|
4
4
|
*
|
|
@@ -7,6 +7,11 @@ import type { LocalPoint, GlobalPoint, Radians, Degrees, Vector } from "./types"
|
|
|
7
7
|
* @returns The branded and created point
|
|
8
8
|
*/
|
|
9
9
|
export declare function pointFrom<Point extends GlobalPoint | LocalPoint>(x: number, y: number): Point;
|
|
10
|
+
export declare function pointFrom<Coord extends GlobalCoord | LocalCoord>(coords: Coord): Coord extends GlobalCoord ? GlobalPoint : LocalPoint;
|
|
11
|
+
export declare function pointFrom<Point extends GlobalPoint | LocalPoint>(coords: {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
}): Point;
|
|
10
15
|
/**
|
|
11
16
|
* Converts and remaps an array containing a pair of numbers to Point.
|
|
12
17
|
*
|
|
@@ -52,7 +57,7 @@ export declare function pointsEqual<Point extends GlobalPoint | LocalPoint>(a: P
|
|
|
52
57
|
* @param angle The radians to rotate the point by
|
|
53
58
|
* @returns The rotated point
|
|
54
59
|
*/
|
|
55
|
-
export declare function pointRotateRads<Point extends GlobalPoint | LocalPoint>(
|
|
60
|
+
export declare function pointRotateRads<Point extends GlobalPoint | LocalPoint>(point: Point, center: Point, angle: Radians): Point;
|
|
56
61
|
/**
|
|
57
62
|
* Rotate a point by [angle] degree.
|
|
58
63
|
*
|
|
@@ -120,3 +125,4 @@ export declare const pointScaleFromOrigin: <P extends GlobalPoint | LocalPoint>(
|
|
|
120
125
|
* @returns TRUE if q is indeed between p and r
|
|
121
126
|
*/
|
|
122
127
|
export declare const isPointWithinBounds: <P extends GlobalPoint | LocalPoint>(p: P, q: P, r: P) => boolean;
|
|
128
|
+
export declare const isValidPoint: (point: unknown) => point is LocalPoint;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { GlobalPoint, LocalPoint, Polygon } from "./types";
|
|
2
2
|
export declare function polygon<Point extends GlobalPoint | LocalPoint>(...points: Point[]): Polygon<Point>;
|
|
3
3
|
export declare function polygonFromPoints<Point extends GlobalPoint | LocalPoint>(points: Point[]): Polygon<Point>;
|
|
4
|
-
export declare const polygonIncludesPoint: <Point extends
|
|
4
|
+
export declare const polygonIncludesPoint: <Point extends LocalPoint | GlobalPoint>(point: Point, polygon: Polygon<Point>) => boolean;
|
|
5
5
|
export declare const polygonIncludesPointNonZero: <Point extends [number, number]>(point: Point, polygon: Point[]) => boolean;
|
|
6
|
-
export declare const pointOnPolygon: <Point extends
|
|
6
|
+
export declare const pointOnPolygon: <Point extends LocalPoint | GlobalPoint>(p: Point, poly: Polygon<Point>, threshold?: number) => boolean;
|
|
@@ -13,9 +13,7 @@ export declare function rangeInclusive(start: number, end: number): InclusiveRan
|
|
|
13
13
|
* @param pair The number pair to convert to an inclusive range
|
|
14
14
|
* @returns The new inclusive range
|
|
15
15
|
*/
|
|
16
|
-
export declare function rangeInclusiveFromPair(pair: [start: number, end: number]):
|
|
17
|
-
_brand: "excalimath_degree";
|
|
18
|
-
};
|
|
16
|
+
export declare function rangeInclusiveFromPair(pair: [start: number, end: number]): InclusiveRange;
|
|
19
17
|
/**
|
|
20
18
|
* Given two ranges, return if the two ranges overlap with each other e.g.
|
|
21
19
|
* [1, 3] overlaps with [2, 4] while [1, 3] does not overlap with [4, 5].
|
|
@@ -21,14 +21,14 @@ export declare const isLineSegment: <Point extends GlobalPoint | LocalPoint>(seg
|
|
|
21
21
|
* @param origin
|
|
22
22
|
* @returns
|
|
23
23
|
*/
|
|
24
|
-
export declare const lineSegmentRotate: <Point extends
|
|
24
|
+
export declare const lineSegmentRotate: <Point extends LocalPoint | GlobalPoint>(l: LineSegment<Point>, angle: Radians, origin?: Point) => LineSegment<Point>;
|
|
25
25
|
/**
|
|
26
26
|
* Calculates the point two line segments with a definite start and end point
|
|
27
27
|
* intersect at.
|
|
28
28
|
*/
|
|
29
29
|
export declare const segmentsIntersectAt: <Point extends GlobalPoint | LocalPoint>(a: Readonly<LineSegment<Point>>, b: Readonly<LineSegment<Point>>) => Point | null;
|
|
30
|
-
export declare const pointOnLineSegment: <Point extends
|
|
31
|
-
export declare const distanceToLineSegment: <Point extends
|
|
30
|
+
export declare const pointOnLineSegment: <Point extends LocalPoint | GlobalPoint>(point: Point, line: LineSegment<Point>, threshold?: number) => boolean;
|
|
31
|
+
export declare const distanceToLineSegment: <Point extends LocalPoint | GlobalPoint>(point: Point, line: LineSegment<Point>) => number;
|
|
32
32
|
/**
|
|
33
33
|
* Returns the intersection point of a segment and a line
|
|
34
34
|
*
|
|
@@ -37,3 +37,4 @@ export declare const distanceToLineSegment: <Point extends GlobalPoint | LocalPo
|
|
|
37
37
|
* @returns
|
|
38
38
|
*/
|
|
39
39
|
export declare function lineSegmentIntersectionPoints<Point extends GlobalPoint | LocalPoint>(l: LineSegment<Point>, s: LineSegment<Point>, threshold?: number): Point | null;
|
|
40
|
+
export declare function lineSegmentsDistance<Point extends GlobalPoint | LocalPoint>(s1: LineSegment<Point>, s2: LineSegment<Point>): number;
|