@excalidraw/element 0.18.0-0fc927cb4 → 0.18.0-1acf66e
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 +10079 -6277
- 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 +48 -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/points.d.ts +1 -1
- package/dist/types/common/src/utility-types.d.ts +0 -1
- package/dist/types/common/src/utils.d.ts +47 -77
- package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
- package/dist/types/element/src/Scene.d.ts +11 -7
- package/dist/types/element/src/align.d.ts +2 -2
- package/dist/types/element/src/arrowEndpointText.d.ts +49 -0
- package/dist/types/element/src/arrowheads.d.ts +3 -0
- package/dist/types/element/src/arrows/focus.d.ts +30 -0
- package/dist/types/element/src/arrows/helpers.d.ts +5 -0
- package/dist/types/element/src/binding.d.ts +79 -51
- package/dist/types/element/src/bounds.d.ts +26 -19
- 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/convertToShape.d.ts +23 -0
- package/dist/types/element/src/delta.d.ts +2 -2
- package/dist/types/element/src/distribute.d.ts +3 -2
- package/dist/types/element/src/dragElements.d.ts +30 -3
- package/dist/types/element/src/duplicate.d.ts +7 -6
- package/dist/types/element/src/elbowArrow.d.ts +2 -0
- package/dist/types/element/src/embeddable.d.ts +2 -2
- package/dist/types/element/src/flowchart.d.ts +7 -7
- package/dist/types/element/src/fractionalIndex.d.ts +4 -4
- package/dist/types/element/src/frame.d.ts +14 -9
- package/dist/types/element/src/groups.d.ts +9 -9
- 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 +8 -4
- package/dist/types/element/src/linearElementEditor.d.ts +38 -30
- package/dist/types/element/src/mutateElement.d.ts +5 -1
- package/dist/types/element/src/newElement.d.ts +20 -6
- package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
- package/dist/types/element/src/renderElement.d.ts +4 -10
- package/dist/types/element/src/resizeElements.d.ts +12 -12
- package/dist/types/element/src/resizeTest.d.ts +6 -5
- package/dist/types/element/src/selection.d.ts +14 -14
- package/dist/types/element/src/shape.d.ts +9 -8
- package/dist/types/element/src/store.d.ts +3 -2
- package/dist/types/element/src/textElement.d.ts +14 -11
- 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 +29 -31
- package/dist/types/element/src/types.d.ts +20 -14
- 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 +158 -180
- package/dist/types/excalidraw/actions/actionAlign.d.ts +12 -13
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +112 -127
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +412 -1550
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +114 -870
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +54 -62
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +180 -205
- package/dist/types/excalidraw/actions/actionDeselect.d.ts +162 -0
- package/dist/types/excalidraw/actions/actionDistribute.d.ts +4 -6
- package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +46 -60
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +111 -126
- package/dist/types/excalidraw/actions/actionExport.d.ts +190 -1410
- 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 +267 -512
- package/dist/types/excalidraw/actions/actionGroup.d.ts +122 -145
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +168 -212
- package/dist/types/excalidraw/actions/actionLink.d.ts +53 -61
- package/dist/types/excalidraw/actions/actionMenu.d.ts +45 -425
- package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -359
- package/dist/types/excalidraw/actions/actionProperties.d.ts +191 -2527
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +61 -73
- package/dist/types/excalidraw/actions/actionStyles.d.ts +54 -61
- package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +3 -3
- package/dist/types/excalidraw/actions/{actionEmbeddable.d.ts → actionToggleArrowBinding.d.ts} +69 -76
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +58 -67
- package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +178 -0
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +55 -63
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +46 -61
- package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +2 -2
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +55 -63
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +56 -64
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +56 -64
- package/dist/types/excalidraw/actions/actionZindex.d.ts +2 -3
- package/dist/types/excalidraw/actions/index.d.ts +5 -3
- package/dist/types/excalidraw/actions/manager.d.ts +1 -0
- 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 +11 -7
- package/dist/types/excalidraw/{animated-trail.d.ts → animatedTrail.d.ts} +4 -3
- package/dist/types/excalidraw/appState.d.ts +27 -18
- 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 +33 -11
- package/dist/types/excalidraw/components/ActiveConfirmDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/App.arrowText.d.ts +72 -0
- package/dist/types/excalidraw/components/App.cursor.d.ts +31 -0
- package/dist/types/excalidraw/components/App.d.ts +447 -122
- package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
- package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
- package/dist/types/excalidraw/components/App.viewport.d.ts +73 -0
- 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 +2 -3
- 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 +4 -4
- package/dist/types/excalidraw/components/CursorHint.d.ts +46 -0
- 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/{ToolButton.d.ts → IconButton.d.ts} +16 -19
- 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/Island.d.ts +7 -0
- package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
- package/dist/types/excalidraw/components/LayerUI.d.ts +5 -2
- 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/LockButton.d.ts +3 -4
- package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
- package/dist/types/excalidraw/components/MobileMenu.d.ts +5 -7
- package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -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/PenModeButton.d.ts +2 -5
- package/dist/types/excalidraw/components/Popover.d.ts +2 -3
- package/dist/types/excalidraw/components/PropertiesPopover.d.ts +2 -1
- package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
- 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/Angle.d.ts +2 -2
- 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/Dimension.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/DragInput.d.ts +2 -3
- package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
- package/dist/types/excalidraw/components/Stats/Position.d.ts +3 -3
- 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 +22 -0
- package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
- package/dist/types/excalidraw/components/Tools.d.ts +145 -0
- package/dist/types/excalidraw/components/Trans.d.ts +2 -2
- package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +10 -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/footer/Footer.d.ts +3 -1
- package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
- package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +3 -3
- package/dist/types/excalidraw/components/icons.d.ts +52 -22
- 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/positionElementBesideCursor.d.ts +26 -0
- package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
- package/dist/types/excalidraw/data/blob.d.ts +339 -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 +8 -9
- package/dist/types/excalidraw/data/json.d.ts +175 -3
- 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 +25 -10
- package/dist/types/excalidraw/data/types.d.ts +4 -1
- package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
- 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/useAppStateValue.d.ts +29 -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 +16 -0
- package/dist/types/excalidraw/renderer/helpers.d.ts +6 -8
- package/dist/types/excalidraw/renderer/interactiveScene.d.ts +7 -15
- package/dist/types/excalidraw/scene/Renderer.d.ts +428 -18
- package/dist/types/excalidraw/scene/export.d.ts +4 -4
- package/dist/types/excalidraw/scene/index.d.ts +2 -2
- package/dist/types/excalidraw/scene/types.d.ts +26 -8
- package/dist/types/excalidraw/shortcut.d.ts +1 -0
- package/dist/types/excalidraw/snapping.d.ts +12 -12
- 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 +487 -50
- package/dist/types/excalidraw/viewport.d.ts +272 -0
- package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +8 -5
- 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 +36 -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/index.d.ts +1 -0
- package/dist/types/math/src/pca.d.ts +79 -0
- package/dist/types/math/src/point.d.ts +8 -2
- package/dist/types/math/src/polygon.d.ts +26 -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 +8 -8
- 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/HandButton.d.ts +0 -10
- 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/shapes.d.ts +0 -62
- 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/cursor.d.ts +0 -5
- 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/excalidraw/scene/scroll.d.ts +0 -23
- package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
- package/dist/types/utils/src/bbox.d.ts +0 -9
- package/dist/types/utils/src/withinBounds.d.ts +0 -19
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import type { SceneBounds } from "@excalidraw/element";
|
|
2
|
+
import type { Bounds } from "@excalidraw/common";
|
|
3
|
+
import type { ExcalidrawElement } from "@excalidraw/element/types";
|
|
4
|
+
import type { AppState, NormalizedZoomValue, Offsets, PointerCoords, ScrollConstraints, ViewportOffsets, Zoom } from "./types";
|
|
5
|
+
/** default rubberband overscroll give for scroll locks, in viewport px */
|
|
6
|
+
export declare const DEFAULT_OVERSCROLL = 150;
|
|
7
|
+
type ZoomOptions = {
|
|
8
|
+
viewportX: number;
|
|
9
|
+
viewportY: number;
|
|
10
|
+
nextZoom: NormalizedZoomValue;
|
|
11
|
+
};
|
|
12
|
+
export type AnimationOptions = {
|
|
13
|
+
duration?: number;
|
|
14
|
+
};
|
|
15
|
+
export type SetViewportRect = {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
width?: number;
|
|
19
|
+
height?: number;
|
|
20
|
+
};
|
|
21
|
+
export type SetViewportOptions = {
|
|
22
|
+
/**
|
|
23
|
+
* what to show in the viewport: an explicit scene-coordinate box/rect,
|
|
24
|
+
* element(s), or an element id / element-link URL.
|
|
25
|
+
*
|
|
26
|
+
* IMPORTANT: if supplying ExcalidrawElement(s), only non-deleted elements
|
|
27
|
+
* that actually exist on the canvas are considered. If you want to navigate
|
|
28
|
+
* to elements that's not on canvas yet, supply their bounds by using
|
|
29
|
+
* `getCommonBounds` (see {@link getCommonBounds}).
|
|
30
|
+
*/
|
|
31
|
+
target: Bounds | SetViewportRect | ExcalidrawElement | readonly ExcalidrawElement[] | string;
|
|
32
|
+
/**
|
|
33
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/object-fit
|
|
34
|
+
*
|
|
35
|
+
* - `scale-down` - zoom out so the target fits the viewport, never zooming past 100%
|
|
36
|
+
* - `contain` - zoom the target so it fills the viewport (may exceed 100%)
|
|
37
|
+
* - `none` - keep the current zoom, only center the target in the viewport
|
|
38
|
+
*/
|
|
39
|
+
fit?: "scale-down" | "contain" | "none";
|
|
40
|
+
lock?: {
|
|
41
|
+
/** constraints panning to the target box */
|
|
42
|
+
scroll?: ScrollConstraints["lockScroll"];
|
|
43
|
+
/** makes the resolved zoom the minimum zoom */
|
|
44
|
+
zoom?: ScrollConstraints["lockZoom"];
|
|
45
|
+
/**
|
|
46
|
+
* Rubberband give past the lock, in viewport px (zoom-independent): how
|
|
47
|
+
* far the user can pan beyond the constraint before snapping back.
|
|
48
|
+
* `true` (default) uses {@link DEFAULT_OVERSCROLL}, `false` disables
|
|
49
|
+
* (rigid lock), a number sets the give explicitly.
|
|
50
|
+
*/
|
|
51
|
+
overscroll?: boolean | number;
|
|
52
|
+
};
|
|
53
|
+
animation?: AnimationOptions | boolean;
|
|
54
|
+
/**
|
|
55
|
+
* CSS-style per-side viewport insets, in viewport pixels
|
|
56
|
+
* (zoom-independent) — static values, editor-UI-derived (`ui`), or a
|
|
57
|
+
* combination. See {@link ViewportOffsets}.
|
|
58
|
+
*/
|
|
59
|
+
offsets?: ViewportOffsets;
|
|
60
|
+
};
|
|
61
|
+
type Viewport = Pick<AppState, "scrollX" | "scrollY" | "zoom">;
|
|
62
|
+
/**
|
|
63
|
+
* Clamps a proposed scroll/zoom against the active lock (`scrollConstraints`).
|
|
64
|
+
* Returns the input scroll/zoom unchanged when there is no lock.
|
|
65
|
+
* `overscroll` (screen px, zoom-independent) is rubberband give past the
|
|
66
|
+
* resting clamp — pass 0 for a hard clamp.
|
|
67
|
+
*/
|
|
68
|
+
export declare const constrainScrollState: (state: Pick<AppState, "scrollX" | "scrollY" | "zoom" | "width" | "height" | "scrollConstraints">, overscroll?: number) => Viewport;
|
|
69
|
+
/**
|
|
70
|
+
* Resolves a focal-point zoom against the active scroll constraints while
|
|
71
|
+
* preserving the current rubberband displacement in screen pixels. This lets
|
|
72
|
+
* zoom and scroll-constraint snap-back compose without either visually
|
|
73
|
+
* cancelling the other.
|
|
74
|
+
*/
|
|
75
|
+
export declare const getViewportForZoomWithScrollConstraints: (opts: ZoomOptions, state: AppState) => Viewport;
|
|
76
|
+
export declare const zoomToFitBounds: ({ bounds, appState, canvasOffsets, fit, minZoom, maxZoom, steppedZoom, }: {
|
|
77
|
+
bounds: SceneBounds;
|
|
78
|
+
canvasOffsets?: Offsets;
|
|
79
|
+
appState: Readonly<AppState>;
|
|
80
|
+
fit?: SetViewportOptions["fit"];
|
|
81
|
+
minZoom?: number;
|
|
82
|
+
maxZoom?: number;
|
|
83
|
+
steppedZoom?: boolean;
|
|
84
|
+
}) => {
|
|
85
|
+
appState: {
|
|
86
|
+
scrollX: number;
|
|
87
|
+
scrollY: number;
|
|
88
|
+
zoom: {
|
|
89
|
+
value: NormalizedZoomValue;
|
|
90
|
+
};
|
|
91
|
+
contextMenu: {
|
|
92
|
+
items: import("./components/ContextMenu").ContextMenuItems;
|
|
93
|
+
top: number;
|
|
94
|
+
left: number;
|
|
95
|
+
} | null;
|
|
96
|
+
showWelcomeScreen: boolean;
|
|
97
|
+
isLoading: boolean;
|
|
98
|
+
errorMessage: React.ReactNode;
|
|
99
|
+
activeEmbeddable: {
|
|
100
|
+
element: import("@excalidraw/element/types").NonDeletedExcalidrawElement;
|
|
101
|
+
state: "hover" | "active";
|
|
102
|
+
} | null;
|
|
103
|
+
newElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawNonSelectionElement> | null;
|
|
104
|
+
resizingElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
|
|
105
|
+
multiElement: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawLinearElement> | null;
|
|
106
|
+
selectionElement: import("@excalidraw/element/types").NonDeletedExcalidrawElement | null;
|
|
107
|
+
isBindingEnabled: boolean;
|
|
108
|
+
boxSelectionMode: import("./types").BoxSelectionMode;
|
|
109
|
+
bindingPreference: "enabled" | "disabled";
|
|
110
|
+
isMidpointSnappingEnabled: boolean;
|
|
111
|
+
suggestedBinding: {
|
|
112
|
+
element: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawBindableElement>;
|
|
113
|
+
midPoint?: import("@excalidraw/math").GlobalPoint;
|
|
114
|
+
} | null;
|
|
115
|
+
hoveredArrowTextAnchor: {
|
|
116
|
+
elementId: import("@excalidraw/element/types").ExcalidrawArrowElement["id"];
|
|
117
|
+
anchor: "start" | "end" | "label";
|
|
118
|
+
} | null;
|
|
119
|
+
frameToHighlight: import("@excalidraw/element/types").NonDeleted<import("@excalidraw/element/types").ExcalidrawFrameLikeElement> | null;
|
|
120
|
+
frameRendering: {
|
|
121
|
+
enabled: boolean;
|
|
122
|
+
name: boolean;
|
|
123
|
+
outline: boolean;
|
|
124
|
+
clip: boolean;
|
|
125
|
+
};
|
|
126
|
+
editingFrame: import("@excalidraw/element/types").ExcalidrawFrameLikeElement["id"] | null;
|
|
127
|
+
elementsToHighlight: readonly import("@excalidraw/element/types").NonDeletedExcalidrawElement[] | null;
|
|
128
|
+
editingTextElement: import("@excalidraw/element/types").ExcalidrawTextElement | null;
|
|
129
|
+
activeTool: {
|
|
130
|
+
lastActiveTool: import("./types").ActiveTool | null;
|
|
131
|
+
locked: boolean;
|
|
132
|
+
fromSelection: boolean;
|
|
133
|
+
} & import("./types").ActiveTool;
|
|
134
|
+
preferredSelectionTool: {
|
|
135
|
+
type: "selection" | "lasso";
|
|
136
|
+
initialized: boolean;
|
|
137
|
+
};
|
|
138
|
+
penMode: boolean;
|
|
139
|
+
penDetected: boolean;
|
|
140
|
+
exportBackground: boolean;
|
|
141
|
+
exportEmbedScene: boolean;
|
|
142
|
+
exportWithDarkMode: boolean;
|
|
143
|
+
exportScale: number;
|
|
144
|
+
currentItemStrokeColor: string;
|
|
145
|
+
currentItemBackgroundColor: string;
|
|
146
|
+
currentItemFillStyle: ExcalidrawElement["fillStyle"];
|
|
147
|
+
currentItemStrokeWidthKey: import("@excalidraw/common").StrokeWidthKey;
|
|
148
|
+
currentItemStrokeStyle: ExcalidrawElement["strokeStyle"];
|
|
149
|
+
currentItemRoughness: number;
|
|
150
|
+
currentItemStrokeVariability: import("@excalidraw/element/types").StrokeVariability;
|
|
151
|
+
currentItemOpacity: number;
|
|
152
|
+
currentItemFontFamily: import("@excalidraw/element/types").FontFamilyValues;
|
|
153
|
+
currentItemFontSize: number;
|
|
154
|
+
currentItemTextAlign: import("@excalidraw/element/types").TextAlign;
|
|
155
|
+
currentItemStartArrowhead: import("@excalidraw/element/types").Arrowhead | null;
|
|
156
|
+
currentItemEndArrowhead: import("@excalidraw/element/types").Arrowhead | null;
|
|
157
|
+
currentHoveredFontFamily: import("@excalidraw/element/types").FontFamilyValues | null;
|
|
158
|
+
currentItemRoundness: import("@excalidraw/element/types").StrokeRoundness;
|
|
159
|
+
currentItemArrowType: "sharp" | "round" | "elbow";
|
|
160
|
+
viewBackgroundColor: string;
|
|
161
|
+
scrollConstraints: ScrollConstraints | null;
|
|
162
|
+
cursorButton: "up" | "down";
|
|
163
|
+
scrolledOutside: boolean;
|
|
164
|
+
name: string | null;
|
|
165
|
+
isResizing: boolean;
|
|
166
|
+
isRotating: boolean;
|
|
167
|
+
openMenu: "canvas" | null;
|
|
168
|
+
openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | "fontFamily" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
|
|
169
|
+
openSidebar: {
|
|
170
|
+
name: import("./types").SidebarName;
|
|
171
|
+
tab?: import("./types").SidebarTabName;
|
|
172
|
+
} | null;
|
|
173
|
+
openDialog: null | {
|
|
174
|
+
name: "imageExport" | "help" | "jsonExport";
|
|
175
|
+
} | {
|
|
176
|
+
name: "ttd";
|
|
177
|
+
tab: "text-to-diagram" | "mermaid";
|
|
178
|
+
} | {
|
|
179
|
+
name: "commandPalette";
|
|
180
|
+
} | {
|
|
181
|
+
name: "settings";
|
|
182
|
+
} | {
|
|
183
|
+
name: "elementLinkSelector";
|
|
184
|
+
sourceElementId: ExcalidrawElement["id"];
|
|
185
|
+
} | {
|
|
186
|
+
name: "charts";
|
|
187
|
+
data: import("./charts").Spreadsheet;
|
|
188
|
+
rawText: string;
|
|
189
|
+
};
|
|
190
|
+
defaultSidebarDockedPreference: boolean;
|
|
191
|
+
lastPointerDownWith: import("@excalidraw/element/types").PointerType;
|
|
192
|
+
selectedElementIds: Readonly<{
|
|
193
|
+
[id: string]: true;
|
|
194
|
+
}>;
|
|
195
|
+
hoveredElementIds: Readonly<{
|
|
196
|
+
[id: string]: true;
|
|
197
|
+
}>;
|
|
198
|
+
previousSelectedElementIds: {
|
|
199
|
+
[id: string]: true;
|
|
200
|
+
};
|
|
201
|
+
selectedElementsAreBeingDragged: boolean;
|
|
202
|
+
shouldCacheIgnoreZoom: boolean;
|
|
203
|
+
toast: {
|
|
204
|
+
message: React.ReactNode;
|
|
205
|
+
closable?: boolean;
|
|
206
|
+
duration?: number;
|
|
207
|
+
} | null;
|
|
208
|
+
zenModeEnabled: boolean;
|
|
209
|
+
theme: import("@excalidraw/element/types").Theme;
|
|
210
|
+
gridSize: number;
|
|
211
|
+
gridStep: number;
|
|
212
|
+
gridModeEnabled: boolean;
|
|
213
|
+
viewModeEnabled: boolean;
|
|
214
|
+
selectedGroupIds: {
|
|
215
|
+
[groupId: string]: boolean;
|
|
216
|
+
};
|
|
217
|
+
editingGroupId: import("@excalidraw/element/types").GroupId | null;
|
|
218
|
+
width: number;
|
|
219
|
+
height: number;
|
|
220
|
+
offsetTop: number;
|
|
221
|
+
offsetLeft: number;
|
|
222
|
+
fileHandle: FileSystemFileHandle | null;
|
|
223
|
+
collaborators: Map<import("./types").SocketId, import("./types").Collaborator>;
|
|
224
|
+
stats: {
|
|
225
|
+
open: boolean;
|
|
226
|
+
panels: number;
|
|
227
|
+
};
|
|
228
|
+
showHyperlinkPopup: false | "info" | "editor";
|
|
229
|
+
selectedLinearElement: import("@excalidraw/element").LinearElementEditor | null;
|
|
230
|
+
snapLines: readonly import("./snapping").SnapLine[];
|
|
231
|
+
originSnapOffset: {
|
|
232
|
+
x: number;
|
|
233
|
+
y: number;
|
|
234
|
+
} | null;
|
|
235
|
+
objectsSnapModeEnabled: boolean;
|
|
236
|
+
userToFollow: import("./types").UserToFollow | null;
|
|
237
|
+
followedBy: Set<import("./types").SocketId>;
|
|
238
|
+
isCropping: boolean;
|
|
239
|
+
croppingElementId: ExcalidrawElement["id"] | null;
|
|
240
|
+
searchMatches: Readonly<{
|
|
241
|
+
focusedId: ExcalidrawElement["id"] | null;
|
|
242
|
+
matches: readonly import("./types").SearchMatch[];
|
|
243
|
+
}> | null;
|
|
244
|
+
activeLockedId: string | null;
|
|
245
|
+
lockedMultiSelections: {
|
|
246
|
+
[groupId: string]: true;
|
|
247
|
+
};
|
|
248
|
+
bindMode: import("@excalidraw/element/types").BindMode;
|
|
249
|
+
};
|
|
250
|
+
captureUpdate: "EVENTUALLY";
|
|
251
|
+
};
|
|
252
|
+
export declare const getClosestElementBounds: (elements: readonly ExcalidrawElement[], from: {
|
|
253
|
+
x: number;
|
|
254
|
+
y: number;
|
|
255
|
+
}) => Bounds;
|
|
256
|
+
export declare const centerScrollOn: ({ scenePoint, viewportDimensions, zoom, offsets, }: {
|
|
257
|
+
scenePoint: PointerCoords;
|
|
258
|
+
viewportDimensions: {
|
|
259
|
+
height: number;
|
|
260
|
+
width: number;
|
|
261
|
+
};
|
|
262
|
+
zoom: Zoom;
|
|
263
|
+
offsets?: Offsets;
|
|
264
|
+
}) => {
|
|
265
|
+
scrollX: number;
|
|
266
|
+
scrollY: number;
|
|
267
|
+
};
|
|
268
|
+
export declare const getScrollToContentState: (elements: readonly ExcalidrawElement[], appState: AppState) => {
|
|
269
|
+
scrollX: number;
|
|
270
|
+
scrollY: number;
|
|
271
|
+
};
|
|
272
|
+
export {};
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ExcalidrawTextElement } from "@excalidraw/element/types";
|
|
2
2
|
import type App from "../components/App";
|
|
3
3
|
type SubmitHandler = () => void;
|
|
4
|
-
export declare const textWysiwyg: ({
|
|
5
|
-
id: ExcalidrawElement["id"];
|
|
4
|
+
export declare const textWysiwyg: ({ onChange, onSubmit, getViewportCoords, element, canvas, excalidrawContainer, app, autoSelect, initialCaretSceneCoords, }: {
|
|
6
5
|
/**
|
|
7
6
|
* textWysiwyg only deals with `originalText`
|
|
8
7
|
*
|
|
9
8
|
* Note: `text`, which can be wrapped and therefore different from `originalText`,
|
|
10
9
|
* is derived from `originalText`
|
|
11
10
|
*/
|
|
12
|
-
onChange?: (
|
|
11
|
+
onChange?: (nextOriginalText: string) => void;
|
|
13
12
|
onSubmit: (data: {
|
|
14
13
|
viaKeyboard: boolean;
|
|
15
14
|
nextOriginalText: string;
|
|
@@ -19,6 +18,10 @@ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords,
|
|
|
19
18
|
canvas: HTMLCanvasElement;
|
|
20
19
|
excalidrawContainer: HTMLDivElement | null;
|
|
21
20
|
app: App;
|
|
22
|
-
autoSelect?: boolean
|
|
21
|
+
autoSelect?: boolean;
|
|
22
|
+
initialCaretSceneCoords?: {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
} | null;
|
|
23
26
|
}) => SubmitHandler;
|
|
24
27
|
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,36 @@
|
|
|
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
|
+
/** @default 2 */
|
|
10
|
+
size: number;
|
|
11
|
+
streamline: number;
|
|
12
|
+
simplify: number;
|
|
13
|
+
simplifyPhase: "tail" | "output" | "input";
|
|
14
|
+
keepHead: boolean;
|
|
15
|
+
sizeMapping: (details: SizeMappingDetails) => number;
|
|
16
|
+
};
|
|
17
|
+
export declare class LaserPointer {
|
|
18
|
+
static defaults: LaserPointerOptions;
|
|
19
|
+
static constants: {
|
|
20
|
+
cornerDetectionMaxAngle: number;
|
|
21
|
+
cornerDetectionVariance: (s: number) => 1 | 0.5;
|
|
22
|
+
maxTailLength: number;
|
|
23
|
+
};
|
|
24
|
+
options: LaserPointerOptions;
|
|
25
|
+
constructor(options: Partial<LaserPointerOptions>);
|
|
26
|
+
originalPoints: Point[];
|
|
27
|
+
private stablePoints;
|
|
28
|
+
private tailPoints;
|
|
29
|
+
private isFresh;
|
|
30
|
+
private get lastPoint();
|
|
31
|
+
addPoint(point: Point): void;
|
|
32
|
+
close(): void;
|
|
33
|
+
stabilizeTail(): void;
|
|
34
|
+
private getSize;
|
|
35
|
+
getStrokeOutline(sizeOverride?: number | undefined): Point[];
|
|
36
|
+
}
|
|
@@ -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
|
*
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { GlobalPoint, LocalPoint, Vector } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* The principal axes of a point set, i.e. the eigen decomposition of its
|
|
4
|
+
* 2x2 covariance matrix.
|
|
5
|
+
*
|
|
6
|
+
* The axes are orthonormal and ordered by variance, so `major` is the
|
|
7
|
+
* direction along which the points spread the most. Together with `centroid`
|
|
8
|
+
* they define a canonical frame: expressing the points in it removes
|
|
9
|
+
* translation and rotation, and dividing by `sqrt(majorVariance)` removes
|
|
10
|
+
* scale.
|
|
11
|
+
*/
|
|
12
|
+
export type PrincipalAxes<Point extends GlobalPoint | LocalPoint> = {
|
|
13
|
+
centroid: Point;
|
|
14
|
+
/** Unit vector along the direction of largest variance. */
|
|
15
|
+
major: Vector;
|
|
16
|
+
/** Unit vector along the direction of smallest variance, normal to major. */
|
|
17
|
+
minor: Vector;
|
|
18
|
+
/** Variance along `major` (the larger eigenvalue, λ₁). */
|
|
19
|
+
majorVariance: number;
|
|
20
|
+
/** Variance along `minor` (the smaller eigenvalue, λ₂). */
|
|
21
|
+
minorVariance: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* A point expressed in a principal axes frame: `u` along the major axis,
|
|
25
|
+
* `v` along the minor axis, both relative to the centroid.
|
|
26
|
+
*/
|
|
27
|
+
export type PrincipalCoords = [u: number, v: number];
|
|
28
|
+
/**
|
|
29
|
+
* Compute the centroid of a point set.
|
|
30
|
+
*/
|
|
31
|
+
export declare function centroid<Point extends GlobalPoint | LocalPoint>(points: readonly Point[]): Point;
|
|
32
|
+
/**
|
|
33
|
+
* Principal component analysis of a 2D point set.
|
|
34
|
+
*
|
|
35
|
+
* Computes the centroid and the eigen decomposition of the covariance matrix
|
|
36
|
+
* [[μ20, μ11], [μ11, μ02]].
|
|
37
|
+
*
|
|
38
|
+
* @param points At least two points; fewer leaves the axes degenerate.
|
|
39
|
+
* @returns The centroid, the orthonormal axes and their variances.
|
|
40
|
+
*/
|
|
41
|
+
export declare function principalAxes<Point extends GlobalPoint | LocalPoint>(points: readonly Point[]): PrincipalAxes<Point>;
|
|
42
|
+
/**
|
|
43
|
+
* Express points in the frame of the given principal axes, making the point
|
|
44
|
+
* cloud rotation, scale and translation invariant.
|
|
45
|
+
*/
|
|
46
|
+
export declare function principalCoords<Point extends GlobalPoint | LocalPoint>(points: readonly Point[], axes: PrincipalAxes<Point>, scale?: number): PrincipalCoords[];
|
|
47
|
+
/**
|
|
48
|
+
* Flip the major axis so that it points toward the denser end of the point
|
|
49
|
+
* cloud, resolving the 180° sign ambiguity of the eigenvector.
|
|
50
|
+
*
|
|
51
|
+
* @returns The axes with `major`/`minor` flipped if needed. Variances are
|
|
52
|
+
* unchanged, as they are invariant to axis sign.
|
|
53
|
+
*/
|
|
54
|
+
export declare function orientPrincipalAxes<Point extends GlobalPoint | LocalPoint>(points: readonly Point[], axes: PrincipalAxes<Point>): PrincipalAxes<Point>;
|
|
55
|
+
/**
|
|
56
|
+
* Ratio of the minor to the major variance in [0, 1]
|
|
57
|
+
*
|
|
58
|
+
* @returns 0 is a perfectly straight stroke, 1 is a stroke with no preferred
|
|
59
|
+
* direction.
|
|
60
|
+
*/
|
|
61
|
+
export declare function elongation<Point extends GlobalPoint | LocalPoint>(axes: PrincipalAxes<Point>): number;
|
|
62
|
+
/**
|
|
63
|
+
* The `order`-th standardized moment of a sample in a rotation and scale
|
|
64
|
+
* invariant way (sandardizing by sigma).
|
|
65
|
+
*
|
|
66
|
+
* @returns 0 for a degenerate (zero variance) sample.
|
|
67
|
+
*/
|
|
68
|
+
export declare function standardizedMoment(values: readonly number[], order: number): number;
|
|
69
|
+
/**
|
|
70
|
+
* Third standardized moment: how lopsided a sample is.
|
|
71
|
+
*
|
|
72
|
+
*/
|
|
73
|
+
export declare function skewness(values: readonly number[]): number;
|
|
74
|
+
/**
|
|
75
|
+
* Fourth standardized moment: how the mass is split between the tails and the
|
|
76
|
+
* middle of a sample. Not excess kurtosis, a normal sample gives 3.
|
|
77
|
+
*
|
|
78
|
+
*/
|
|
79
|
+
export declare function kurtosis(values: readonly number[]): number;
|
|
@@ -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,30 @@
|
|
|
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
|
|
6
|
+
export declare function polygonIsClosed<Point extends LocalPoint | GlobalPoint>(polygon: readonly Point[], tolerance?: number): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* The signed area of a polygon via the shoelace formula. Positive when the
|
|
9
|
+
* vertices wind counter-clockwise in a y-down coordinate system.
|
|
10
|
+
*
|
|
11
|
+
* The polygon may be given open or closed; a closing vertex is ignored.
|
|
12
|
+
*/
|
|
13
|
+
export declare function polygonSignedArea<Point extends LocalPoint | GlobalPoint>(polygon: readonly Point[]): number;
|
|
14
|
+
export declare function polygonArea<Point extends LocalPoint | GlobalPoint>(polygon: readonly Point[]): number;
|
|
15
|
+
/**
|
|
16
|
+
* The convex hull of a point set via Andrew's monotone chain.
|
|
17
|
+
*
|
|
18
|
+
* @returns The hull vertices in counter-clockwise order (y-down), without a
|
|
19
|
+
* repeated closing vertex.
|
|
20
|
+
*/
|
|
21
|
+
export declare function convexHull<Point extends LocalPoint | GlobalPoint>(points: readonly Point[]): Point[];
|
|
22
|
+
/**
|
|
23
|
+
* Drop the points of a convex polygon that only contribute a shallow turn,
|
|
24
|
+
* merging each run of near-collinear points into one.
|
|
25
|
+
*
|
|
26
|
+
* @param polygon A convex polygon, as returned by `convexHull`.
|
|
27
|
+
* @param angleThreshold Minimum accumulated turn (radians) for a vertex to be
|
|
28
|
+
* kept.
|
|
29
|
+
*/
|
|
30
|
+
export declare function simplifyConvexPolygon<Point extends LocalPoint | GlobalPoint>(polygon: readonly Point[], angleThreshold: number): Point[];
|
|
@@ -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;
|
|
@@ -19,12 +19,24 @@ export type InclusiveRange = [number, number] & {
|
|
|
19
19
|
_brand: "excalimath_degree";
|
|
20
20
|
};
|
|
21
21
|
/**
|
|
22
|
-
* Represents a 2D position in world
|
|
22
|
+
* Represents a 2D position in world/canvas/scene space. A
|
|
23
23
|
* global coordinate.
|
|
24
24
|
*/
|
|
25
25
|
export type GlobalPoint = [x: number, y: number] & {
|
|
26
26
|
_brand: "excalimath__globalpoint";
|
|
27
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* Represents a 2D position in world/canvas/scene space. A
|
|
30
|
+
* global coordinate.
|
|
31
|
+
*
|
|
32
|
+
* TODO remove this once we migrate the codebase to use Point tuples everywhere
|
|
33
|
+
*/
|
|
34
|
+
export type GlobalCoord = {
|
|
35
|
+
x: number;
|
|
36
|
+
y: number;
|
|
37
|
+
} & {
|
|
38
|
+
_brand: "excalimath__globalcoord";
|
|
39
|
+
};
|
|
28
40
|
/**
|
|
29
41
|
* Represents a 2D position in whatever local space it's
|
|
30
42
|
* needed. A local coordinate.
|
|
@@ -32,6 +44,18 @@ export type GlobalPoint = [x: number, y: number] & {
|
|
|
32
44
|
export type LocalPoint = [x: number, y: number] & {
|
|
33
45
|
_brand: "excalimath__localpoint";
|
|
34
46
|
};
|
|
47
|
+
/**
|
|
48
|
+
* Represents a 2D position in whatever local space it's needed.
|
|
49
|
+
* A local coordinate.
|
|
50
|
+
*
|
|
51
|
+
* TODO remove this once we migrate the codebase to use Point tuples everywhere
|
|
52
|
+
*/
|
|
53
|
+
export type LocalCoord = {
|
|
54
|
+
x: number;
|
|
55
|
+
y: number;
|
|
56
|
+
} & {
|
|
57
|
+
_brand: "excalimath__localcoord";
|
|
58
|
+
};
|
|
35
59
|
/**
|
|
36
60
|
* A line is an infinitely long object with no width, depth, or curvature.
|
|
37
61
|
*/
|