tldraw 4.3.0-next.7f179bd04d6c → 4.3.0-next.842fb21476f2
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-cjs/index.d.ts +297 -237
- package/dist-cjs/index.js +13 -5
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +2 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +2 -2
- package/dist-cjs/lib/defaultEmbedDefinitions.js +1 -1
- package/dist-cjs/lib/defaultEmbedDefinitions.js.map +2 -2
- package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -5
- package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
- package/dist-cjs/lib/defaultSideEffects.js +6 -1
- package/dist-cjs/lib/defaultSideEffects.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +14 -13
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/arrow-types.js.map +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowLabel.js +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js +1 -1
- package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js +4 -10
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +7 -4
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +25 -23
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/getPath.js +20 -11
- package/dist-cjs/lib/shapes/draw/getPath.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +82 -86
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +3 -3
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +6 -0
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +6 -5
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +146 -142
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js +5 -10
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js +3 -3
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +23 -21
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js +3 -3
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +6 -11
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js +5 -10
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +3 -2
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +14 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js +12 -4
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/ShapeFill.js +2 -2
- package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/interpolate-props.js +3 -3
- package/dist-cjs/lib/shapes/shared/interpolate-props.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/{useForceSolid.js → useEfficientZoomThreshold.js} +10 -7
- package/dist-cjs/lib/shapes/shared/useEfficientZoomThreshold.js.map +7 -0
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +1 -1
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
- package/dist-cjs/lib/shapes/text/RichTextArea.js +5 -0
- package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js +5 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js +4 -10
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +7 -5
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +4 -5
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +2 -4
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/HandTool.js +3 -5
- package/dist-cjs/lib/tools/HandTool/HandTool.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js +3 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js +1 -1
- package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js +1 -1
- package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js +9 -7
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +6 -5
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js +4 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js +2 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +7 -5
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js +38 -11
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +42 -50
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js +6 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js +4 -14
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +4 -13
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +5 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +2 -3
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js +7 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +13 -11
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/selectHelpers.js +15 -4
- package/dist-cjs/lib/tools/SelectTool/selectHelpers.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js +1 -1
- package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js +3 -3
- package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js +5 -6
- package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js +1 -3
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js +1 -1
- package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js +1 -1
- package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js.map +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js +3 -9
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js +1 -3
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/CursorChatBubble.js +1 -1
- package/dist-cjs/lib/ui/components/CursorChatBubble.js.map +2 -2
- package/dist-cjs/lib/ui/components/DefaultDebugPanel.js +1 -21
- package/dist-cjs/lib/ui/components/DefaultDebugPanel.js.map +2 -2
- package/dist-cjs/lib/ui/components/HelperButtons/BackToContent.js +1 -1
- package/dist-cjs/lib/ui/components/HelperButtons/BackToContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/HelperButtons/StopFollowing.js.map +2 -2
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +1 -1
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
- package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js +2 -15
- package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js.map +3 -3
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js +3 -1
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js +6 -0
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/TopPanel/CenteredTopPanelContainer.js.map +1 -1
- package/dist-cjs/lib/ui/components/menu-items.js +3 -1
- package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +3 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +1 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +149 -93
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +14 -7
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
- package/dist-cjs/lib/ui/context/actions.js +6 -6
- package/dist-cjs/lib/ui/context/actions.js.map +2 -2
- package/dist-cjs/lib/ui/context/components.js +1 -2
- package/dist-cjs/lib/ui/context/components.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +2 -2
- package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +2 -2
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useTools.js +4 -5
- package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
- package/dist-cjs/lib/ui/version.js +3 -3
- package/dist-cjs/lib/ui/version.js.map +1 -1
- package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js +8 -6
- package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +2 -2
- package/dist-cjs/lib/{tools/selection-logic/getShouldEnterCropModeOnPointerDown.js → utils/test-helpers.js} +21 -8
- package/dist-cjs/lib/utils/test-helpers.js.map +7 -0
- package/dist-cjs/lib/utils/text/richText.js +11 -19
- package/dist-cjs/lib/utils/text/richText.js.map +3 -3
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +7 -2
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +2 -2
- package/dist-esm/index.d.mts +297 -237
- package/dist-esm/index.mjs +14 -5
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +2 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +2 -2
- package/dist-esm/lib/defaultEmbedDefinitions.mjs +1 -1
- package/dist-esm/lib/defaultEmbedDefinitions.mjs.map +2 -2
- package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -5
- package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
- package/dist-esm/lib/defaultSideEffects.mjs +6 -1
- package/dist-esm/lib/defaultSideEffects.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +15 -15
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs +4 -10
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +7 -4
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +1 -1
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +30 -25
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/getPath.mjs +21 -11
- package/dist-esm/lib/shapes/draw/getPath.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +83 -86
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +3 -3
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +6 -0
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +6 -5
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +147 -142
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs +5 -10
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs +3 -3
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +24 -22
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs +3 -3
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +7 -12
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs +5 -10
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +4 -3
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +14 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +12 -4
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs +2 -2
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs +4 -4
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs +12 -0
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs.map +7 -0
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +1 -1
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/RichTextArea.mjs +5 -0
- package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +5 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs +4 -10
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +7 -5
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +1 -1
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +4 -5
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +2 -4
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/HandTool.mjs +3 -5
- package/dist-esm/lib/tools/HandTool/HandTool.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs +3 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs +1 -1
- package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs +1 -1
- package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs +9 -7
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +6 -5
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs +4 -6
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs +2 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +7 -5
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs +38 -11
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +43 -51
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs +6 -6
- package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs +5 -15
- package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +4 -13
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +5 -6
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +2 -3
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs +7 -6
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +13 -11
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs +17 -4
- package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs +1 -1
- package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs +3 -3
- package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs +5 -6
- package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs +1 -3
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs +1 -1
- package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs +1 -1
- package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs.map +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs +2 -8
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs +1 -3
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/CursorChatBubble.mjs +1 -1
- package/dist-esm/lib/ui/components/CursorChatBubble.mjs.map +2 -2
- package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs +3 -30
- package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs.map +2 -2
- package/dist-esm/lib/ui/components/HelperButtons/BackToContent.mjs +1 -1
- package/dist-esm/lib/ui/components/HelperButtons/BackToContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/HelperButtons/StopFollowing.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +1 -1
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
- package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs +3 -6
- package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs.map +2 -2
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs +3 -1
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs +6 -0
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs +1 -1
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs +1 -1
- package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/TopPanel/CenteredTopPanelContainer.mjs.map +1 -1
- package/dist-esm/lib/ui/components/menu-items.mjs +3 -1
- package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +3 -1
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +157 -95
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +15 -8
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
- package/dist-esm/lib/ui/context/actions.mjs +6 -6
- package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
- package/dist-esm/lib/ui/context/components.mjs +1 -2
- package/dist-esm/lib/ui/context/components.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +2 -2
- package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +2 -2
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useTools.mjs +4 -5
- package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
- package/dist-esm/lib/ui/version.mjs +3 -3
- package/dist-esm/lib/ui/version.mjs.map +1 -1
- package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs +9 -6
- package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +2 -2
- package/dist-esm/lib/utils/test-helpers.mjs +21 -0
- package/dist-esm/lib/utils/test-helpers.mjs.map +7 -0
- package/dist-esm/lib/utils/text/richText.mjs +8 -5
- package/dist-esm/lib/utils/text/richText.mjs.map +2 -2
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +8 -2
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +2 -2
- package/package.json +18 -16
- package/src/index.ts +6 -2
- package/src/lib/Tldraw.test.tsx +46 -1
- package/src/lib/canvas/TldrawSelectionForeground.tsx +2 -2
- package/src/lib/defaultEmbedDefinitions.ts +2 -1
- package/src/lib/defaultExternalContentHandlers.ts +10 -10
- package/src/lib/defaultSideEffects.ts +6 -1
- package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +40 -133
- package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +8 -8
- package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +15 -15
- package/src/lib/shapes/arrow/arrow-types.ts +2 -0
- package/src/lib/shapes/arrow/arrowLabel.ts +1 -1
- package/src/lib/shapes/arrow/arrowTargetState.ts +1 -1
- package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.test.ts +80 -0
- package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.tsx +1 -1
- package/src/lib/shapes/arrow/toolStates/Idle.tsx +4 -14
- package/src/lib/shapes/arrow/toolStates/Pointing.tsx +7 -4
- package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +1 -1
- package/src/lib/shapes/draw/DrawShapeUtil.test.ts +146 -0
- package/src/lib/shapes/draw/DrawShapeUtil.tsx +31 -27
- package/src/lib/shapes/draw/getPath.ts +31 -10
- package/src/lib/shapes/draw/toolStates/Drawing.ts +96 -86
- package/src/lib/shapes/embed/EmbedShapeUtil.tsx +7 -0
- package/src/lib/shapes/frame/FrameShapeUtil.tsx +10 -4
- package/src/lib/shapes/geo/GeoShapeUtil.tsx +228 -176
- package/src/lib/shapes/geo/toolStates/Idle.ts +5 -15
- package/src/lib/shapes/geo/toolStates/Pointing.ts +3 -3
- package/src/lib/shapes/highlight/HighlightShapeUtil.test.ts +146 -0
- package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +25 -24
- package/src/lib/shapes/line/toolStates/Pointing.ts +3 -3
- package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -10
- package/src/lib/shapes/note/noteCloning.test.ts +3 -1
- package/src/lib/shapes/note/toolStates/Pointing.ts +5 -10
- package/src/lib/shapes/shared/HyperlinkButton.tsx +4 -3
- package/src/lib/shapes/shared/PlainTextLabel.tsx +10 -1
- package/src/lib/shapes/shared/RichTextLabel.tsx +12 -3
- package/src/lib/shapes/shared/ShapeFill.tsx +2 -2
- package/src/lib/shapes/shared/interpolate-props.ts +4 -4
- package/src/lib/shapes/shared/useEfficientZoomThreshold.ts +10 -0
- package/src/lib/shapes/shared/useImageOrVideoAsset.ts +1 -1
- package/src/lib/shapes/text/RichTextArea.tsx +5 -0
- package/src/lib/shapes/text/TextShapeUtil.tsx +5 -0
- package/src/lib/shapes/text/toolStates/Idle.ts +4 -14
- package/src/lib/shapes/text/toolStates/Pointing.ts +7 -7
- package/src/lib/shapes/video/VideoShapeUtil.tsx +2 -1
- package/src/lib/tools/EraserTool/childStates/Erasing.ts +4 -5
- package/src/lib/tools/EraserTool/childStates/Pointing.ts +2 -4
- package/src/lib/tools/HandTool/HandTool.ts +3 -5
- package/src/lib/tools/HandTool/childStates/Dragging.ts +3 -2
- package/src/lib/tools/HandTool/childStates/Pointing.ts +1 -1
- package/src/lib/tools/LaserTool/childStates/Lasering.ts +1 -1
- package/src/lib/tools/SelectTool/DragAndDropManager.ts +12 -7
- package/src/lib/tools/SelectTool/childStates/Brushing.ts +6 -5
- package/src/lib/tools/SelectTool/childStates/Crop/children/Cropping.ts +7 -6
- package/src/lib/tools/SelectTool/childStates/Crop/children/Idle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.ts +2 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +7 -5
- package/src/lib/tools/SelectTool/childStates/EditingShape.ts +55 -12
- package/src/lib/tools/SelectTool/childStates/Idle.ts +58 -71
- package/src/lib/tools/SelectTool/childStates/PointingArrowLabel.ts +6 -7
- package/src/lib/tools/SelectTool/childStates/PointingCanvas.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingHandle.ts +5 -5
- package/src/lib/tools/SelectTool/childStates/PointingResizeHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingRotateHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingSelection.ts +2 -2
- package/src/lib/tools/SelectTool/childStates/PointingShape.ts +4 -14
- package/src/lib/tools/SelectTool/childStates/Resizing.ts +6 -6
- package/src/lib/tools/SelectTool/childStates/Rotating.ts +2 -3
- package/src/lib/tools/SelectTool/childStates/ScribbleBrushing.ts +7 -6
- package/src/lib/tools/SelectTool/childStates/Translating.ts +15 -12
- package/src/lib/tools/SelectTool/selectHelpers.ts +39 -4
- package/src/lib/tools/ZoomTool/ZoomTool.ts +1 -1
- package/src/lib/tools/ZoomTool/childStates/Pointing.ts +3 -3
- package/src/lib/tools/ZoomTool/childStates/ZoomBrushing.ts +5 -6
- package/src/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.ts +1 -3
- package/src/lib/tools/selection-logic/selectOnCanvasPointerUp.ts +1 -1
- package/src/lib/tools/selection-logic/updateHoveredShapeId.ts +1 -1
- package/src/lib/ui/TldrawUi.tsx +5 -2
- package/src/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.tsx +1 -9
- package/src/lib/ui/components/ContextMenu/DefaultContextMenu.tsx +1 -3
- package/src/lib/ui/components/CursorChatBubble.tsx +2 -2
- package/src/lib/ui/components/DefaultDebugPanel.tsx +3 -42
- package/src/lib/ui/components/HelperButtons/BackToContent.tsx +1 -1
- package/src/lib/ui/components/HelperButtons/StopFollowing.tsx +2 -2
- package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +1 -1
- package/src/lib/ui/components/OfflineIndicator/OfflineIndicator.tsx +6 -5
- package/src/lib/ui/components/PageMenu/PageItemInput.tsx +3 -1
- package/src/lib/ui/components/SharePanel/PeopleMenu.tsx +8 -0
- package/src/lib/ui/components/Toolbar/DefaultImageToolbar.tsx +1 -1
- package/src/lib/ui/components/Toolbar/DefaultRichTextToolbar.tsx +1 -1
- package/src/lib/ui/components/TopPanel/CenteredTopPanelContainer.tsx +1 -1
- package/src/lib/ui/components/menu-items.tsx +3 -1
- package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +5 -3
- package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +2 -2
- package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +208 -113
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.tsx +1 -1
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.tsx +1 -1
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +7 -4
- package/src/lib/ui/context/actions.tsx +6 -6
- package/src/lib/ui/context/components.tsx +1 -2
- package/src/lib/ui/hooks/useClipboardEvents.ts +2 -2
- package/src/lib/ui/hooks/useKeyboardShortcuts.ts +2 -2
- package/src/lib/ui/hooks/useTools.tsx +4 -5
- package/src/lib/ui/version.ts +3 -3
- package/src/lib/ui.css +27 -23
- package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +12 -48
- package/src/lib/utils/excalidraw/putExcalidrawContent.ts +11 -6
- package/src/lib/utils/test-helpers.ts +60 -0
- package/src/lib/utils/text/richText.ts +9 -8
- package/src/lib/utils/tldr/buildFromV1Document.ts +9 -2
- package/src/test/Editor.test.tsx +40 -29
- package/src/test/EraserTool.test.ts +10 -12
- package/src/test/TestEditor.ts +48 -47
- package/src/test/TldrawEditor.test.tsx +3 -2
- package/src/test/__snapshots__/drawing.test.ts.snap +3 -1257
- package/src/test/__snapshots__/resizing.test.ts.snap +3 -12
- package/src/test/arrows-megabus.test.tsx +1 -1
- package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +10 -10
- package/src/test/commands/cameraState.test.ts +299 -0
- package/src/test/commands/putContent.test.ts +79 -1
- package/src/test/commands/setCamera.test.ts +13 -11
- package/src/test/commands/stackShapes.test.ts +34 -8
- package/src/test/commands/zoomToBounds.test.ts +19 -3
- package/src/test/commands/zoomToSelection.test.ts +14 -3
- package/src/test/custom-clipping.test.ts +16 -9
- package/src/test/drawing.test.ts +17 -10
- package/src/test/flipShapes.test.ts +33 -0
- package/src/test/frames.test.ts +92 -0
- package/src/test/groups.test.tsx +1 -1
- package/src/test/modifiers.test.ts +6 -6
- package/src/test/resizing.test.ts +7 -9
- package/src/test/selection-omnibus.test.ts +2 -2
- package/src/test/spacebarPanning.test.ts +28 -10
- package/src/test/test-jsx.tsx +3 -0
- package/src/test/ui/BackToContent.test.tsx +111 -0
- package/tldraw.css +41 -35
- package/dist-cjs/lib/shapes/shared/useForceSolid.js.map +0 -7
- package/dist-cjs/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.js.map +0 -7
- package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js +0 -32
- package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js.map +0 -7
- package/dist-cjs/lib/utils/text/textDirection.js +0 -51
- package/dist-cjs/lib/utils/text/textDirection.js.map +0 -7
- package/dist-esm/lib/shapes/shared/useForceSolid.mjs +0 -9
- package/dist-esm/lib/shapes/shared/useForceSolid.mjs.map +0 -7
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs +0 -8
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs.map +0 -7
- package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs +0 -12
- package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs.map +0 -7
- package/dist-esm/lib/utils/text/textDirection.mjs +0 -31
- package/dist-esm/lib/utils/text/textDirection.mjs.map +0 -7
- package/src/lib/shapes/shared/useForceSolid.ts +0 -6
- package/src/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.ts +0 -10
- package/src/lib/ui/components/TopPanel/DefaultTopPanel.tsx +0 -10
- package/src/lib/utils/text/textDirection.ts +0 -32
|
@@ -16,10 +16,9 @@ import {
|
|
|
16
16
|
} from '@tldraw/editor'
|
|
17
17
|
import { isOverArrowLabel } from '../../../shapes/arrow/arrowLabel'
|
|
18
18
|
import { getHitShapeOnCanvasPointerDown } from '../../selection-logic/getHitShapeOnCanvasPointerDown'
|
|
19
|
-
import { getShouldEnterCropMode } from '../../selection-logic/getShouldEnterCropModeOnPointerDown'
|
|
20
19
|
import { selectOnCanvasPointerUp } from '../../selection-logic/selectOnCanvasPointerUp'
|
|
21
20
|
import { updateHoveredShapeId } from '../../selection-logic/updateHoveredShapeId'
|
|
22
|
-
import {
|
|
21
|
+
import { hasRichText, startEditingShapeWithRichText } from '../selectHelpers'
|
|
23
22
|
|
|
24
23
|
const SKIPPED_KEYS_FOR_AUTO_EDITING = [
|
|
25
24
|
'Delete',
|
|
@@ -53,8 +52,6 @@ export class Idle extends StateNode {
|
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
override onPointerDown(info: TLPointerEventInfo) {
|
|
56
|
-
const shouldEnterCropMode = info.ctrlKey && getShouldEnterCropMode(this.editor)
|
|
57
|
-
|
|
58
55
|
switch (info.target) {
|
|
59
56
|
case 'canvas': {
|
|
60
57
|
// Check to see if we hit any shape under the pointer; if so,
|
|
@@ -71,9 +68,7 @@ export class Idle extends StateNode {
|
|
|
71
68
|
|
|
72
69
|
const selectedShapeIds = this.editor.getSelectedShapeIds()
|
|
73
70
|
const onlySelectedShape = this.editor.getOnlySelectedShape()
|
|
74
|
-
const
|
|
75
|
-
inputs: { currentPagePoint },
|
|
76
|
-
} = this.editor
|
|
71
|
+
const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
|
|
77
72
|
|
|
78
73
|
if (
|
|
79
74
|
selectedShapeIds.length > 1 ||
|
|
@@ -106,7 +101,7 @@ export class Idle extends StateNode {
|
|
|
106
101
|
}
|
|
107
102
|
case 'handle': {
|
|
108
103
|
if (this.editor.getIsReadonly()) break
|
|
109
|
-
if (this.editor.inputs.
|
|
104
|
+
if (this.editor.inputs.getAltKey()) {
|
|
110
105
|
this.parent.transition('pointing_shape', info)
|
|
111
106
|
} else {
|
|
112
107
|
// If we're holding ctrl key, we might select it, or start brushing...
|
|
@@ -136,7 +131,8 @@ export class Idle extends StateNode {
|
|
|
136
131
|
case 'top_right':
|
|
137
132
|
case 'bottom_left':
|
|
138
133
|
case 'bottom_right': {
|
|
139
|
-
|
|
134
|
+
const onlySelectedShape = this.editor.getOnlySelectedShape()
|
|
135
|
+
if (info.ctrlKey && this.editor.canCropShape(onlySelectedShape)) {
|
|
140
136
|
this.parent.transition('crop.pointing_crop_handle', info)
|
|
141
137
|
} else {
|
|
142
138
|
if (info.accelKey) {
|
|
@@ -171,7 +167,7 @@ export class Idle extends StateNode {
|
|
|
171
167
|
}
|
|
172
168
|
|
|
173
169
|
override onDoubleClick(info: TLClickEventInfo) {
|
|
174
|
-
if (this.editor.inputs.
|
|
170
|
+
if (this.editor.inputs.getShiftKey() || info.phase !== 'up') return
|
|
175
171
|
|
|
176
172
|
// We don't want to double click while toggling shapes
|
|
177
173
|
if (info.ctrlKey || info.shiftKey) return
|
|
@@ -187,11 +183,12 @@ export class Idle extends StateNode {
|
|
|
187
183
|
// of the shape yet because that also creates text shapes, and can produce
|
|
188
184
|
// unexpected results when working "inside of" a hollow shape.
|
|
189
185
|
|
|
186
|
+
const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
|
|
190
187
|
const hitShape =
|
|
191
188
|
hoveredShape && !this.editor.isShapeOfType(hoveredShape, 'group')
|
|
192
189
|
? hoveredShape
|
|
193
|
-
: (this.editor.getSelectedShapeAtPoint(
|
|
194
|
-
this.editor.getShapeAtPoint(
|
|
190
|
+
: (this.editor.getSelectedShapeAtPoint(currentPagePoint) ??
|
|
191
|
+
this.editor.getShapeAtPoint(currentPagePoint, {
|
|
195
192
|
margin: this.editor.options.hitTestMargin / this.editor.getZoomLevel(),
|
|
196
193
|
hitInside: false,
|
|
197
194
|
}))
|
|
@@ -232,30 +229,45 @@ export class Idle extends StateNode {
|
|
|
232
229
|
return
|
|
233
230
|
}
|
|
234
231
|
|
|
235
|
-
if (!this.editor.inputs.
|
|
232
|
+
if (!this.editor.inputs.getShiftKey()) {
|
|
236
233
|
this.handleDoubleClickOnCanvas(info)
|
|
237
234
|
}
|
|
238
235
|
break
|
|
239
236
|
}
|
|
240
237
|
case 'selection': {
|
|
241
|
-
if (this.editor.getIsReadonly()) break
|
|
242
|
-
|
|
243
238
|
const onlySelectedShape = this.editor.getOnlySelectedShape()
|
|
244
239
|
|
|
245
240
|
if (onlySelectedShape) {
|
|
246
241
|
const util = this.editor.getShapeUtil(onlySelectedShape)
|
|
247
|
-
|
|
248
|
-
if (!this.canInteractWithShapeInReadOnly(onlySelectedShape)) {
|
|
249
|
-
return
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
// Test edges for an onDoubleClickEdge handler
|
|
253
|
-
if (
|
|
242
|
+
const isEdge =
|
|
254
243
|
info.handle === 'right' ||
|
|
255
244
|
info.handle === 'left' ||
|
|
256
245
|
info.handle === 'top' ||
|
|
257
246
|
info.handle === 'bottom'
|
|
258
|
-
|
|
247
|
+
const isCorner =
|
|
248
|
+
info.handle === 'top_left' ||
|
|
249
|
+
info.handle === 'top_right' ||
|
|
250
|
+
info.handle === 'bottom_right' ||
|
|
251
|
+
info.handle === 'bottom_left'
|
|
252
|
+
|
|
253
|
+
if (this.editor.getIsReadonly()) {
|
|
254
|
+
// includes readonly check
|
|
255
|
+
if (
|
|
256
|
+
this.editor.canEditShape(onlySelectedShape, {
|
|
257
|
+
type: isCorner
|
|
258
|
+
? 'double-click-corner'
|
|
259
|
+
: isEdge
|
|
260
|
+
? 'double-click-edge'
|
|
261
|
+
: 'double-click',
|
|
262
|
+
})
|
|
263
|
+
) {
|
|
264
|
+
this.startEditingShape(onlySelectedShape, info, true /* select all */)
|
|
265
|
+
}
|
|
266
|
+
break
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// Test edges for an onDoubleClickEdge handler
|
|
270
|
+
if (isEdge) {
|
|
259
271
|
const change = util.onDoubleClickEdge?.(onlySelectedShape, info)
|
|
260
272
|
if (change) {
|
|
261
273
|
this.editor.markHistoryStoppingPoint('double click edge')
|
|
@@ -265,12 +277,7 @@ export class Idle extends StateNode {
|
|
|
265
277
|
}
|
|
266
278
|
}
|
|
267
279
|
|
|
268
|
-
if (
|
|
269
|
-
info.handle === 'top_left' ||
|
|
270
|
-
info.handle === 'top_right' ||
|
|
271
|
-
info.handle === 'bottom_right' ||
|
|
272
|
-
info.handle === 'bottom_left'
|
|
273
|
-
) {
|
|
280
|
+
if (isCorner) {
|
|
274
281
|
const change = util.onDoubleClickCorner?.(onlySelectedShape, info)
|
|
275
282
|
if (change) {
|
|
276
283
|
this.editor.markHistoryStoppingPoint('double click corner')
|
|
@@ -279,16 +286,14 @@ export class Idle extends StateNode {
|
|
|
279
286
|
return
|
|
280
287
|
}
|
|
281
288
|
}
|
|
289
|
+
|
|
282
290
|
// For corners OR edges but NOT rotation corners
|
|
283
|
-
if (
|
|
284
|
-
util.canCrop(onlySelectedShape) &&
|
|
285
|
-
!this.editor.isShapeOrAncestorLocked(onlySelectedShape)
|
|
286
|
-
) {
|
|
291
|
+
if (this.editor.canCropShape(onlySelectedShape)) {
|
|
287
292
|
this.parent.transition('crop', info)
|
|
288
293
|
return
|
|
289
294
|
}
|
|
290
295
|
|
|
291
|
-
if (this.
|
|
296
|
+
if (this.editor.canEditShape(onlySelectedShape)) {
|
|
292
297
|
this.startEditingShape(onlySelectedShape, info, true /* select all */)
|
|
293
298
|
}
|
|
294
299
|
}
|
|
@@ -319,7 +324,7 @@ export class Idle extends StateNode {
|
|
|
319
324
|
}
|
|
320
325
|
|
|
321
326
|
// If the shape can edit, then begin editing
|
|
322
|
-
if (this.
|
|
327
|
+
if (this.editor.canEditShape(shape)) {
|
|
323
328
|
this.startEditingShape(shape, info, true /* select all */)
|
|
324
329
|
} else {
|
|
325
330
|
// If the shape's double click handler has not created a change,
|
|
@@ -341,7 +346,7 @@ export class Idle extends StateNode {
|
|
|
341
346
|
} else {
|
|
342
347
|
// If the shape's double click handler has not created a change,
|
|
343
348
|
// and if the shape can edit, then begin editing the shape.
|
|
344
|
-
if (this.
|
|
349
|
+
if (this.editor.canEditShape(shape)) {
|
|
345
350
|
this.startEditingShape(shape, info, true /* select all */)
|
|
346
351
|
}
|
|
347
352
|
}
|
|
@@ -356,7 +361,7 @@ export class Idle extends StateNode {
|
|
|
356
361
|
const hitShape =
|
|
357
362
|
hoveredShape && !this.editor.isShapeOfType(hoveredShape, 'group')
|
|
358
363
|
? hoveredShape
|
|
359
|
-
: this.editor.getShapeAtPoint(this.editor.inputs.
|
|
364
|
+
: this.editor.getShapeAtPoint(this.editor.inputs.getCurrentPagePoint(), {
|
|
360
365
|
margin: this.editor.options.hitTestMargin / this.editor.getZoomLevel(),
|
|
361
366
|
hitInside: false,
|
|
362
367
|
hitLabels: true,
|
|
@@ -376,9 +381,7 @@ export class Idle extends StateNode {
|
|
|
376
381
|
|
|
377
382
|
const selectedShapeIds = this.editor.getSelectedShapeIds()
|
|
378
383
|
const onlySelectedShape = this.editor.getOnlySelectedShape()
|
|
379
|
-
const
|
|
380
|
-
inputs: { currentPagePoint },
|
|
381
|
-
} = this.editor
|
|
384
|
+
const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
|
|
382
385
|
|
|
383
386
|
if (
|
|
384
387
|
selectedShapeIds.length > 1 ||
|
|
@@ -471,7 +474,7 @@ export class Idle extends StateNode {
|
|
|
471
474
|
// If it's a note shape, then edit on type
|
|
472
475
|
this.editor.isShapeOfType(onlySelectedShape, 'note') &&
|
|
473
476
|
// If it's not locked or anything
|
|
474
|
-
this.
|
|
477
|
+
this.editor.canEditShape(onlySelectedShape)
|
|
475
478
|
) {
|
|
476
479
|
this.startEditingShape(
|
|
477
480
|
onlySelectedShape,
|
|
@@ -532,7 +535,10 @@ export class Idle extends StateNode {
|
|
|
532
535
|
|
|
533
536
|
// If the only selected shape is editable, then begin editing it
|
|
534
537
|
const onlySelectedShape = this.editor.getOnlySelectedShape()
|
|
535
|
-
if (
|
|
538
|
+
if (
|
|
539
|
+
onlySelectedShape &&
|
|
540
|
+
this.editor.canEditShape(onlySelectedShape, { type: 'press_enter' })
|
|
541
|
+
) {
|
|
536
542
|
this.startEditingShape(
|
|
537
543
|
onlySelectedShape,
|
|
538
544
|
{
|
|
@@ -546,7 +552,7 @@ export class Idle extends StateNode {
|
|
|
546
552
|
}
|
|
547
553
|
|
|
548
554
|
// If the only selected shape is croppable, then begin cropping it
|
|
549
|
-
if (
|
|
555
|
+
if (this.editor.canCropShape(onlySelectedShape)) {
|
|
550
556
|
this.parent.transition('crop', info)
|
|
551
557
|
}
|
|
552
558
|
break
|
|
@@ -561,23 +567,18 @@ export class Idle extends StateNode {
|
|
|
561
567
|
}
|
|
562
568
|
}
|
|
563
569
|
|
|
564
|
-
private shouldStartEditingShape(
|
|
565
|
-
shape: TLShape | null = this.editor.getOnlySelectedShape()
|
|
566
|
-
): boolean {
|
|
567
|
-
if (!shape) return false
|
|
568
|
-
if (this.editor.isShapeOrAncestorLocked(shape) && shape.type !== 'embed') return false
|
|
569
|
-
if (!this.canInteractWithShapeInReadOnly(shape)) return false
|
|
570
|
-
return this.editor.getShapeUtil(shape).canEdit(shape)
|
|
571
|
-
}
|
|
572
|
-
|
|
573
570
|
private startEditingShape(
|
|
574
571
|
shape: TLShape,
|
|
575
572
|
info: TLClickEventInfo | TLKeyboardEventInfo,
|
|
576
573
|
shouldSelectAll?: boolean
|
|
577
574
|
) {
|
|
578
|
-
|
|
575
|
+
const { editor } = this
|
|
579
576
|
this.editor.markHistoryStoppingPoint('editing shape')
|
|
580
|
-
|
|
577
|
+
if (hasRichText(shape)) {
|
|
578
|
+
startEditingShapeWithRichText(editor, shape, { selectAll: shouldSelectAll })
|
|
579
|
+
} else {
|
|
580
|
+
editor.setEditingShape(shape)
|
|
581
|
+
}
|
|
581
582
|
this.parent.transition('editing_shape', info)
|
|
582
583
|
}
|
|
583
584
|
|
|
@@ -597,7 +598,7 @@ export class Idle extends StateNode {
|
|
|
597
598
|
|
|
598
599
|
const id = createShapeId()
|
|
599
600
|
|
|
600
|
-
const { x, y } = this.editor.inputs.
|
|
601
|
+
const { x, y } = this.editor.inputs.getCurrentPagePoint()
|
|
601
602
|
|
|
602
603
|
// Allow this to trigger the max shapes reached alert
|
|
603
604
|
this.editor.createShapes([
|
|
@@ -616,16 +617,9 @@ export class Idle extends StateNode {
|
|
|
616
617
|
const shape = this.editor.getShape(id)
|
|
617
618
|
if (!shape) return
|
|
618
619
|
|
|
619
|
-
|
|
620
|
-
if (this.editor.getIsReadonly()) {
|
|
621
|
-
if (!util.canEditInReadonly(shape)) {
|
|
622
|
-
return
|
|
623
|
-
}
|
|
624
|
-
}
|
|
620
|
+
if (!this.editor.canEditShape(shape)) return
|
|
625
621
|
|
|
626
|
-
this.editor
|
|
627
|
-
this.editor.select(id)
|
|
628
|
-
this.parent.transition('editing_shape', info)
|
|
622
|
+
startEditingShapeWithRichText(this.editor, id, { info })
|
|
629
623
|
}
|
|
630
624
|
|
|
631
625
|
private nudgeSelectedShapes(ephemeral = false) {
|
|
@@ -665,13 +659,6 @@ export class Idle extends StateNode {
|
|
|
665
659
|
this.editor.nudgeShapes(selectedShapeIds, delta.mul(step))
|
|
666
660
|
kickoutOccludedShapes(this.editor, selectedShapeIds)
|
|
667
661
|
}
|
|
668
|
-
|
|
669
|
-
private canInteractWithShapeInReadOnly(shape: TLShape) {
|
|
670
|
-
if (!this.editor.getIsReadonly()) return true
|
|
671
|
-
const util = this.editor.getShapeUtil(shape)
|
|
672
|
-
if (util.canEditInReadonly(shape)) return true
|
|
673
|
-
return false
|
|
674
|
-
}
|
|
675
662
|
}
|
|
676
663
|
|
|
677
664
|
export const MAJOR_NUDGE_FACTOR = 10
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
getArrowBodyGeometry,
|
|
12
12
|
getArrowLabelDefaultPosition,
|
|
13
13
|
} from '../../../shapes/arrow/arrowLabel'
|
|
14
|
+
import { startEditingShapeWithRichText } from '../selectHelpers'
|
|
14
15
|
|
|
15
16
|
export class PointingArrowLabel extends StateNode {
|
|
16
17
|
static override id = 'pointing_arrow_label'
|
|
@@ -54,7 +55,7 @@ export class PointingArrowLabel extends StateNode {
|
|
|
54
55
|
if (!labelGeometry) {
|
|
55
56
|
throw Error(`Expected to find an arrow label geometry for shape: ${shape.id}`)
|
|
56
57
|
}
|
|
57
|
-
const
|
|
58
|
+
const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
|
|
58
59
|
const pointInShapeSpace = this.editor.getPointInShapeSpace(shape, currentPagePoint)
|
|
59
60
|
|
|
60
61
|
this._labelDragOffset = Vec.Sub(labelGeometry.center, pointInShapeSpace)
|
|
@@ -81,7 +82,7 @@ export class PointingArrowLabel extends StateNode {
|
|
|
81
82
|
private _labelDragOffset = new Vec(0, 0)
|
|
82
83
|
|
|
83
84
|
override onPointerMove() {
|
|
84
|
-
const
|
|
85
|
+
const isDragging = this.editor.inputs.getIsDragging()
|
|
85
86
|
if (!isDragging) return
|
|
86
87
|
|
|
87
88
|
if (this.didCtrlOnEnter) {
|
|
@@ -97,7 +98,7 @@ export class PointingArrowLabel extends StateNode {
|
|
|
97
98
|
const transform = this.editor.getShapePageTransform(shape.id)
|
|
98
99
|
|
|
99
100
|
const pointInShapeSpace = this.editor
|
|
100
|
-
.getPointInShapeSpace(shape, this.editor.inputs.
|
|
101
|
+
.getPointInShapeSpace(shape, this.editor.inputs.getCurrentPagePoint())
|
|
101
102
|
.add(this._labelDragOffset)
|
|
102
103
|
|
|
103
104
|
const defaultLabelPosition = getArrowLabelDefaultPosition(this.editor, shape)
|
|
@@ -137,10 +138,8 @@ export class PointingArrowLabel extends StateNode {
|
|
|
137
138
|
|
|
138
139
|
if (this.didDrag || !this.wasAlreadySelected) {
|
|
139
140
|
this.complete()
|
|
140
|
-
} else if (
|
|
141
|
-
|
|
142
|
-
this.editor.setEditingShape(shape.id)
|
|
143
|
-
this.editor.setCurrentTool('select.editing_shape')
|
|
141
|
+
} else if (this.editor.canEditShape(shape)) {
|
|
142
|
+
startEditingShapeWithRichText(this.editor, shape.id)
|
|
144
143
|
}
|
|
145
144
|
}
|
|
146
145
|
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
getNoteAdjacentPositions,
|
|
7
7
|
getNoteShapeForAdjacentPosition,
|
|
8
8
|
} from '../../../shapes/note/noteHelpers'
|
|
9
|
-
import {
|
|
9
|
+
import { startEditingShapeWithRichText } from '../selectHelpers'
|
|
10
10
|
|
|
11
11
|
export class PointingHandle extends StateNode {
|
|
12
12
|
static override id = 'pointing_handle'
|
|
@@ -54,7 +54,7 @@ export class PointingHandle extends StateNode {
|
|
|
54
54
|
const { editor } = this
|
|
55
55
|
const nextNote = getNoteForAdjacentPosition(editor, shape, handle, false)
|
|
56
56
|
if (nextNote) {
|
|
57
|
-
|
|
57
|
+
startEditingShapeWithRichText(editor, nextNote, { selectAll: true })
|
|
58
58
|
return
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -64,7 +64,7 @@ export class PointingHandle extends StateNode {
|
|
|
64
64
|
|
|
65
65
|
override onPointerMove(info: TLPointerEventInfo) {
|
|
66
66
|
const { editor } = this
|
|
67
|
-
if (editor.inputs.
|
|
67
|
+
if (editor.inputs.getIsDragging()) {
|
|
68
68
|
if (this.didCtrlOnEnter) {
|
|
69
69
|
this.parent.transition('brushing', info)
|
|
70
70
|
} else {
|
|
@@ -87,7 +87,7 @@ export class PointingHandle extends StateNode {
|
|
|
87
87
|
if (nextNote) {
|
|
88
88
|
// Center the shape on the current pointer
|
|
89
89
|
const centeredOnPointer = editor
|
|
90
|
-
.getPointInParentSpace(nextNote, editor.inputs.
|
|
90
|
+
.getPointInParentSpace(nextNote, editor.inputs.getOriginPagePoint())
|
|
91
91
|
.sub(Vec.Rot(NOTE_CENTER_OFFSET.clone().mul(shape.props.scale), nextNote.rotation))
|
|
92
92
|
editor.updateShape({ ...nextNote, x: centeredOnPointer.x, y: centeredOnPointer.y })
|
|
93
93
|
|
|
@@ -103,7 +103,7 @@ export class PointingHandle extends StateNode {
|
|
|
103
103
|
isCreating: true,
|
|
104
104
|
onCreate: () => {
|
|
105
105
|
// When we're done, start editing it
|
|
106
|
-
|
|
106
|
+
startEditingShapeWithRichText(editor, nextNote, { selectAll: true })
|
|
107
107
|
},
|
|
108
108
|
})
|
|
109
109
|
return
|
|
@@ -18,7 +18,7 @@ export class PointingSelection extends StateNode {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
override onPointerMove(info: TLPointerEventInfo) {
|
|
21
|
-
if (this.editor.inputs.
|
|
21
|
+
if (this.editor.inputs.getIsDragging()) {
|
|
22
22
|
this.startTranslating(info)
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -37,7 +37,7 @@ export class PointingSelection extends StateNode {
|
|
|
37
37
|
const hitShape =
|
|
38
38
|
hoveredShape && !this.editor.isShapeOfType(hoveredShape, 'group')
|
|
39
39
|
? hoveredShape
|
|
40
|
-
: this.editor.getShapeAtPoint(this.editor.inputs.
|
|
40
|
+
: this.editor.getShapeAtPoint(this.editor.inputs.getCurrentPagePoint(), {
|
|
41
41
|
hitInside: true,
|
|
42
42
|
margin: 0,
|
|
43
43
|
renderingOnly: true,
|
|
@@ -16,9 +16,7 @@ export class PointingShape extends StateNode {
|
|
|
16
16
|
const selectedShapeIds = this.editor.getSelectedShapeIds()
|
|
17
17
|
const selectionBounds = this.editor.getSelectionRotatedPageBounds()
|
|
18
18
|
const focusedGroupId = this.editor.getFocusedGroupId()
|
|
19
|
-
const
|
|
20
|
-
inputs: { currentPagePoint },
|
|
21
|
-
} = this.editor
|
|
19
|
+
const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
|
|
22
20
|
const { shiftKey, altKey, accelKey } = info
|
|
23
21
|
|
|
24
22
|
this.hitShape = info.shape
|
|
@@ -66,9 +64,7 @@ export class PointingShape extends StateNode {
|
|
|
66
64
|
const selectedShapeIds = this.editor.getSelectedShapeIds()
|
|
67
65
|
const focusedGroupId = this.editor.getFocusedGroupId()
|
|
68
66
|
const zoomLevel = this.editor.getZoomLevel()
|
|
69
|
-
const
|
|
70
|
-
inputs: { currentPagePoint },
|
|
71
|
-
} = this.editor
|
|
67
|
+
const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
|
|
72
68
|
|
|
73
69
|
const additiveSelectionKey = info.shiftKey || info.accelKey
|
|
74
70
|
|
|
@@ -153,13 +149,7 @@ export class PointingShape extends StateNode {
|
|
|
153
149
|
this.editor.markHistoryStoppingPoint('editing on pointer up')
|
|
154
150
|
this.editor.select(selectingShape.id)
|
|
155
151
|
|
|
156
|
-
|
|
157
|
-
if (this.editor.getIsReadonly()) {
|
|
158
|
-
if (!util.canEditInReadonly(selectingShape)) {
|
|
159
|
-
return
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
152
|
+
if (!this.editor.canEditShape(selectingShape)) return
|
|
163
153
|
this.editor.setEditingShape(selectingShape.id)
|
|
164
154
|
this.editor.setCurrentTool('select.editing_shape')
|
|
165
155
|
|
|
@@ -210,7 +200,7 @@ export class PointingShape extends StateNode {
|
|
|
210
200
|
}
|
|
211
201
|
|
|
212
202
|
override onPointerMove(info: TLPointerEventInfo) {
|
|
213
|
-
if (this.editor.inputs.
|
|
203
|
+
if (this.editor.inputs.getIsDragging()) {
|
|
214
204
|
if (isOverArrowLabel(this.editor, this.hitShape)) {
|
|
215
205
|
// We're moving the label on a shape.
|
|
216
206
|
this.parent.transition('pointing_arrow_label', { ...info, shape: this.hitShape })
|
|
@@ -211,7 +211,8 @@ export class Resizing extends StateNode {
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
private updateShapes() {
|
|
214
|
-
const
|
|
214
|
+
const altKey = this.editor.inputs.getAltKey()
|
|
215
|
+
const shiftKey = this.editor.inputs.getShiftKey()
|
|
215
216
|
const {
|
|
216
217
|
frames,
|
|
217
218
|
shapeSnapshots,
|
|
@@ -266,12 +267,13 @@ export class Resizing extends StateNode {
|
|
|
266
267
|
|
|
267
268
|
const isHoldingAccel = isAccelKey(this.editor.inputs)
|
|
268
269
|
|
|
269
|
-
const currentPagePoint = this.editor.inputs
|
|
270
|
+
const currentPagePoint = this.editor.inputs
|
|
271
|
+
.getCurrentPagePoint()
|
|
270
272
|
.clone()
|
|
271
273
|
.sub(cursorHandleOffset)
|
|
272
274
|
.sub(this.creationCursorOffset)
|
|
273
275
|
|
|
274
|
-
const originPagePoint = this.editor.inputs.
|
|
276
|
+
const originPagePoint = this.editor.inputs.getOriginPagePoint().clone().sub(cursorHandleOffset)
|
|
275
277
|
|
|
276
278
|
if (this.editor.getInstanceState().isGridMode && !isHoldingAccel) {
|
|
277
279
|
const { gridSize } = this.editor.getDocumentSettings()
|
|
@@ -474,9 +476,7 @@ export class Resizing extends StateNode {
|
|
|
474
476
|
const { editor } = this
|
|
475
477
|
const selectedShapeIds = editor.getSelectedShapeIds()
|
|
476
478
|
const selectionRotation = editor.getSelectionRotation()
|
|
477
|
-
const
|
|
478
|
-
inputs: { originPagePoint },
|
|
479
|
-
} = editor
|
|
479
|
+
const originPagePoint = editor.inputs.getOriginPagePoint()
|
|
480
480
|
|
|
481
481
|
const selectionBounds = editor.getSelectionRotatedPageBounds()
|
|
482
482
|
if (!selectionBounds) throw Error('Resizing but nothing is selected')
|
|
@@ -163,9 +163,8 @@ export class Rotating extends StateNode {
|
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
_getRotationFromPointerPosition({ snapToNearestDegree }: { snapToNearestDegree: boolean }) {
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
} = this.editor
|
|
166
|
+
const shiftKey = this.editor.inputs.getShiftKey()
|
|
167
|
+
const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
|
|
169
168
|
const { initialCursorAngle, initialShapesRotation, initialPageCenter } = this.snapshot
|
|
170
169
|
|
|
171
170
|
// The delta is the difference between the current angle and the initial angle
|
|
@@ -22,7 +22,7 @@ export class ScribbleBrushing extends StateNode {
|
|
|
22
22
|
|
|
23
23
|
override onEnter() {
|
|
24
24
|
this.initialSelectedShapeIds = new Set<TLShapeId>(
|
|
25
|
-
this.editor.inputs.
|
|
25
|
+
this.editor.inputs.getShiftKey() ? this.editor.getSelectedShapeIds() : []
|
|
26
26
|
)
|
|
27
27
|
this.newlySelectedShapeIds = new Set<TLShapeId>()
|
|
28
28
|
this.size = 0
|
|
@@ -58,7 +58,7 @@ export class ScribbleBrushing extends StateNode {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
override onKeyUp() {
|
|
61
|
-
if (!this.editor.inputs.
|
|
61
|
+
if (!this.editor.inputs.getAltKey()) {
|
|
62
62
|
this.parent.transition('brushing')
|
|
63
63
|
} else {
|
|
64
64
|
this.updateScribbleSelection(false)
|
|
@@ -74,7 +74,7 @@ export class ScribbleBrushing extends StateNode {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
private pushPointToScribble() {
|
|
77
|
-
const { x, y } = this.editor.inputs.
|
|
77
|
+
const { x, y } = this.editor.inputs.getCurrentPagePoint()
|
|
78
78
|
this.editor.scribbles.addPoint(this.scribbleId, x, y)
|
|
79
79
|
}
|
|
80
80
|
|
|
@@ -82,9 +82,10 @@ export class ScribbleBrushing extends StateNode {
|
|
|
82
82
|
const { editor } = this
|
|
83
83
|
// const zoomLevel = this.editor.getZoomLevel()
|
|
84
84
|
const currentPageShapes = this.editor.getCurrentPageRenderingShapesSorted()
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
const shiftKey = this.editor.inputs.getShiftKey()
|
|
86
|
+
const originPagePoint = this.editor.inputs.getOriginPagePoint()
|
|
87
|
+
const previousPagePoint = this.editor.inputs.getPreviousPagePoint()
|
|
88
|
+
const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
|
|
88
89
|
|
|
89
90
|
const { newlySelectedShapeIds, initialSelectedShapeIds } = this
|
|
90
91
|
|
|
@@ -92,7 +92,7 @@ export class Translating extends StateNode {
|
|
|
92
92
|
|
|
93
93
|
// Don't clone on create; otherwise clone on altKey
|
|
94
94
|
if (!this.isCreating) {
|
|
95
|
-
if (this.editor.inputs.
|
|
95
|
+
if (this.editor.inputs.getAltKey()) {
|
|
96
96
|
this.startCloning()
|
|
97
97
|
if (this.isCloning) return
|
|
98
98
|
}
|
|
@@ -122,7 +122,7 @@ export class Translating extends StateNode {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
override onKeyDown() {
|
|
125
|
-
if (this.editor.inputs.
|
|
125
|
+
if (this.editor.inputs.getAltKey() && !this.isCloning) {
|
|
126
126
|
this.startCloning()
|
|
127
127
|
if (this.isCloning) return
|
|
128
128
|
}
|
|
@@ -132,7 +132,7 @@ export class Translating extends StateNode {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
override onKeyUp() {
|
|
135
|
-
if (!this.editor.inputs.
|
|
135
|
+
if (!this.editor.inputs.getAltKey() && this.isCloning) {
|
|
136
136
|
this.stopCloning()
|
|
137
137
|
return
|
|
138
138
|
}
|
|
@@ -258,7 +258,7 @@ export class Translating extends StateNode {
|
|
|
258
258
|
// Get fresh shapes from the snapshot, in case onTranslateStart mutates the shape
|
|
259
259
|
compact(this.snapshot.movingShapes.map((s) => this.editor.getShape(s.id))),
|
|
260
260
|
// Start from the place where the user started dragging
|
|
261
|
-
this.editor.inputs.
|
|
261
|
+
this.editor.inputs.getOriginPagePoint(),
|
|
262
262
|
this.updateParentTransforms
|
|
263
263
|
)
|
|
264
264
|
|
|
@@ -305,7 +305,7 @@ export class Translating extends StateNode {
|
|
|
305
305
|
// We should have started already, but hey
|
|
306
306
|
this.dragAndDropManager.startDraggingShapes(
|
|
307
307
|
snapshot.movingShapes,
|
|
308
|
-
this.editor.inputs.
|
|
308
|
+
this.editor.inputs.getOriginPagePoint(),
|
|
309
309
|
this.updateParentTransforms
|
|
310
310
|
)
|
|
311
311
|
|
|
@@ -404,7 +404,7 @@ function getTranslatingSnapshot(editor: Editor) {
|
|
|
404
404
|
let noteAdjacentPositions: Vec[] | undefined
|
|
405
405
|
let noteSnapshot: (MovingShapeSnapshot & { shape: TLNoteShape }) | undefined
|
|
406
406
|
|
|
407
|
-
const
|
|
407
|
+
const originPagePoint = editor.inputs.getOriginPagePoint()
|
|
408
408
|
|
|
409
409
|
const allHoveredNotes = shapeSnapshots.filter(
|
|
410
410
|
(s) => editor.isShapeOfType(s.shape, 'note') && editor.isPointInShape(s.shape, originPagePoint)
|
|
@@ -473,13 +473,16 @@ export function moveShapesToPoint({
|
|
|
473
473
|
averagePagePoint,
|
|
474
474
|
} = snapshot
|
|
475
475
|
|
|
476
|
+
const shiftKey = editor.inputs.getShiftKey()
|
|
477
|
+
const accelKey = editor.inputs.getAccelKey()
|
|
478
|
+
|
|
476
479
|
const isGridMode = editor.getInstanceState().isGridMode
|
|
477
480
|
|
|
478
481
|
const gridSize = editor.getDocumentSettings().gridSize
|
|
479
482
|
|
|
480
|
-
const delta = Vec.Sub(inputs.
|
|
483
|
+
const delta = Vec.Sub(inputs.getCurrentPagePoint(), inputs.getOriginPagePoint())
|
|
481
484
|
|
|
482
|
-
const flatten: 'x' | 'y' | null =
|
|
485
|
+
const flatten: 'x' | 'y' | null = shiftKey
|
|
483
486
|
? Math.abs(delta.x) < Math.abs(delta.y)
|
|
484
487
|
? 'x'
|
|
485
488
|
: 'y'
|
|
@@ -495,9 +498,9 @@ export function moveShapesToPoint({
|
|
|
495
498
|
editor.snaps.clearIndicators()
|
|
496
499
|
|
|
497
500
|
// If the user isn't moving super quick
|
|
498
|
-
const isSnapping = editor.user.getIsSnapMode() ? !
|
|
501
|
+
const isSnapping = editor.user.getIsSnapMode() ? !accelKey : accelKey
|
|
499
502
|
let snappedToPit = false
|
|
500
|
-
if (isSnapping && editor.inputs.
|
|
503
|
+
if (isSnapping && editor.inputs.getPointerVelocity().len() < 0.5) {
|
|
501
504
|
// snapping
|
|
502
505
|
const { nudge } = editor.snaps.shapeBounds.snapTranslateShapes({
|
|
503
506
|
dragDelta: delta,
|
|
@@ -537,9 +540,9 @@ export function moveShapesToPoint({
|
|
|
537
540
|
|
|
538
541
|
const averageSnappedPoint = Vec.Add(averagePagePoint, delta)
|
|
539
542
|
|
|
540
|
-
// we don't want to snap to the grid if we're holding the
|
|
543
|
+
// we don't want to snap to the grid if we're holding the accel key, if we've already snapped into a pit, or if we're showing snapping indicators
|
|
541
544
|
const snapIndicators = editor.snaps.getIndicators()
|
|
542
|
-
if (isGridMode && !
|
|
545
|
+
if (isGridMode && !accelKey && !snappedToPit && snapIndicators.length === 0) {
|
|
543
546
|
averageSnappedPoint.snapToGrid(gridSize)
|
|
544
547
|
}
|
|
545
548
|
|