tldraw 4.3.0-canary.9c474ef3fad5 → 4.3.0-canary.a2419250444e
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 +285 -237
- package/dist-cjs/index.js +12 -5
- package/dist-cjs/index.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 +6 -2
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
- 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 +22 -20
- 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 +5 -4
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +136 -136
- 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 +22 -20
- 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 +1 -6
- 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 +1 -1
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js +1 -1
- package/dist-cjs/lib/shapes/shared/RichTextLabel.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/text/RichTextArea.js +5 -0
- package/dist-cjs/lib/shapes/text/RichTextArea.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/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/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/ZoomMenu/DefaultZoomMenu.js +1 -1
- package/dist-cjs/lib/ui/components/ZoomMenu/DefaultZoomMenu.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/TldrawUiTooltip.js +6 -5
- 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 +13 -6
- 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 +4 -2
- package/dist-cjs/lib/utils/text/richText.js.map +2 -2
- 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 +285 -237
- package/dist-esm/index.mjs +12 -5
- package/dist-esm/index.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 +6 -2
- 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 +27 -22
- 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 +5 -4
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +137 -136
- 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 +23 -21
- 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 +2 -7
- 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 +1 -1
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +1 -1
- package/dist-esm/lib/shapes/shared/RichTextLabel.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/text/RichTextArea.mjs +5 -0
- package/dist-esm/lib/shapes/text/RichTextArea.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/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/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/ZoomMenu/DefaultZoomMenu.mjs +1 -1
- package/dist-esm/lib/ui/components/ZoomMenu/DefaultZoomMenu.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/TldrawUiTooltip.mjs +6 -5
- 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 +13 -6
- 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 +5 -2
- 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 +5 -2
- package/src/lib/Tldraw.test.tsx +46 -1
- 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 +6 -4
- 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 +28 -24
- 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 +9 -3
- package/src/lib/shapes/geo/GeoShapeUtil.tsx +219 -172
- 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 +24 -23
- package/src/lib/shapes/line/toolStates/Pointing.ts +3 -3
- package/src/lib/shapes/note/NoteShapeUtil.tsx +2 -2
- 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 +1 -1
- package/src/lib/shapes/shared/RichTextLabel.tsx +1 -1
- package/src/lib/shapes/shared/interpolate-props.ts +4 -4
- package/src/lib/shapes/text/RichTextArea.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/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/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/ZoomMenu/DefaultZoomMenu.tsx +1 -1
- package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +5 -3
- package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +12 -5
- 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 +5 -2
- 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 +6 -5
- 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 +8 -8
- 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 +33 -31
- 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/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/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
|
@@ -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
|
|
|
@@ -1,15 +1,50 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Editor,
|
|
3
|
+
ExtractShapeByProps,
|
|
4
|
+
richTextValidator,
|
|
5
|
+
TLEventInfo,
|
|
6
|
+
TLRichText,
|
|
7
|
+
TLShape,
|
|
8
|
+
TLShapeId,
|
|
9
|
+
} from '@tldraw/editor'
|
|
2
10
|
|
|
3
11
|
/** @internal */
|
|
4
|
-
export function
|
|
12
|
+
export function hasRichText(
|
|
13
|
+
shape: TLShape
|
|
14
|
+
): shape is ExtractShapeByProps<{ richText: TLRichText }> {
|
|
15
|
+
return 'richText' in shape.props && richTextValidator.isValid(shape.props.richText)
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Start editing a shape that has rich text, such as text, note, geo, or arrow shapes.
|
|
19
|
+
* This will enter the editing state for the shape and optionally select all the text.
|
|
20
|
+
*
|
|
21
|
+
* @param editor - The editor instance.
|
|
22
|
+
* @param shapeOrId - The shape to start editing. This shape must have a richText property with a TLRichText value.
|
|
23
|
+
* @param options - Options: selectAll or info (TLEventInfo)
|
|
24
|
+
*
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
export function startEditingShapeWithRichText(
|
|
28
|
+
editor: Editor,
|
|
29
|
+
shapeOrId: TLShape | TLShapeId,
|
|
30
|
+
options: { selectAll?: boolean; info?: TLEventInfo } = {}
|
|
31
|
+
) {
|
|
32
|
+
const shape = typeof shapeOrId === 'string' ? editor.getShape(shapeOrId) : shapeOrId
|
|
33
|
+
if (!shape) return
|
|
34
|
+
|
|
35
|
+
if (!editor.canEditShape(shape)) return
|
|
36
|
+
|
|
37
|
+
if (!hasRichText(shape)) {
|
|
38
|
+
throw new Error('Shape does not have rich text')
|
|
39
|
+
}
|
|
5
40
|
// Finish this shape and start editing the next one
|
|
6
|
-
editor.select(shape)
|
|
7
41
|
editor.setEditingShape(shape)
|
|
8
42
|
editor.setCurrentTool('select.editing_shape', {
|
|
43
|
+
...options.info,
|
|
9
44
|
target: 'shape',
|
|
10
45
|
shape: shape,
|
|
11
46
|
})
|
|
12
|
-
if (selectAll) {
|
|
47
|
+
if (options.selectAll) {
|
|
13
48
|
editor.emit('select-all-text', { shapeId: shape.id })
|
|
14
49
|
}
|
|
15
50
|
}
|
|
@@ -57,7 +57,7 @@ export class ZoomTool extends StateNode {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
private updateCursor() {
|
|
60
|
-
if (this.editor.inputs.
|
|
60
|
+
if (this.editor.inputs.getAltKey()) {
|
|
61
61
|
this.editor.setCursor({ type: 'zoom-out', rotation: 0 })
|
|
62
62
|
} else {
|
|
63
63
|
this.editor.setCursor({ type: 'zoom-in', rotation: 0 })
|
|
@@ -14,7 +14,7 @@ export class Pointing extends StateNode {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
override onPointerMove() {
|
|
17
|
-
if (this.editor.inputs.
|
|
17
|
+
if (this.editor.inputs.getIsDragging()) {
|
|
18
18
|
this.parent.transition('zoom_brushing', this.info)
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -24,8 +24,8 @@ export class Pointing extends StateNode {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
private complete() {
|
|
27
|
-
const
|
|
28
|
-
if (this.editor.inputs.
|
|
27
|
+
const currentScreenPoint = this.editor.inputs.getCurrentScreenPoint()
|
|
28
|
+
if (this.editor.inputs.getAltKey()) {
|
|
29
29
|
this.editor.zoomOut(currentScreenPoint, { animation: { duration: 220 } })
|
|
30
30
|
} else {
|
|
31
31
|
this.editor.zoomIn(currentScreenPoint, { animation: { duration: 220 } })
|
|
@@ -29,9 +29,8 @@ export class ZoomBrushing extends StateNode {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
private update() {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
} = this.editor
|
|
32
|
+
const originPagePoint = this.editor.inputs.getOriginPagePoint()
|
|
33
|
+
const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
|
|
35
34
|
|
|
36
35
|
this.zoomBrush.setTo(Box.FromPoints([originPagePoint, currentPagePoint]))
|
|
37
36
|
this.editor.updateInstanceState({ zoomBrush: this.zoomBrush.toJson() })
|
|
@@ -46,14 +45,14 @@ export class ZoomBrushing extends StateNode {
|
|
|
46
45
|
const threshold = 8 / this.editor.getZoomLevel()
|
|
47
46
|
// If the selected area is small then treat it as a click
|
|
48
47
|
if (zoomBrush.width < threshold && zoomBrush.height < threshold) {
|
|
49
|
-
const point = this.editor.inputs.
|
|
50
|
-
if (this.editor.inputs.
|
|
48
|
+
const point = this.editor.inputs.getCurrentScreenPoint()
|
|
49
|
+
if (this.editor.inputs.getAltKey()) {
|
|
51
50
|
this.editor.zoomOut(point, { animation: { duration: 220 } })
|
|
52
51
|
} else {
|
|
53
52
|
this.editor.zoomIn(point, { animation: { duration: 220 } })
|
|
54
53
|
}
|
|
55
54
|
} else {
|
|
56
|
-
const targetZoom = this.editor.inputs.
|
|
55
|
+
const targetZoom = this.editor.inputs.getAltKey() ? this.editor.getZoomLevel() / 2 : undefined
|
|
57
56
|
this.editor.zoomToBounds(zoomBrush, { targetZoom, animation: { duration: 220 } })
|
|
58
57
|
}
|
|
59
58
|
|
|
@@ -6,9 +6,7 @@ export function getHitShapeOnCanvasPointerDown(
|
|
|
6
6
|
hitLabels = false
|
|
7
7
|
): TLShape | undefined {
|
|
8
8
|
const zoomLevel = editor.getZoomLevel()
|
|
9
|
-
const
|
|
10
|
-
inputs: { currentPagePoint },
|
|
11
|
-
} = editor
|
|
9
|
+
const currentPagePoint = editor.inputs.getCurrentPagePoint()
|
|
12
10
|
|
|
13
11
|
return (
|
|
14
12
|
// hovered shape at point
|
|
@@ -5,7 +5,7 @@ export function selectOnCanvasPointerUp(
|
|
|
5
5
|
info: TLPointerEventInfo | TLClickEventInfo
|
|
6
6
|
) {
|
|
7
7
|
const selectedShapeIds = editor.getSelectedShapeIds()
|
|
8
|
-
const
|
|
8
|
+
const currentPagePoint = editor.inputs.getCurrentPagePoint()
|
|
9
9
|
const { shiftKey, altKey, accelKey } = info
|
|
10
10
|
const additiveSelectionKey = shiftKey || accelKey
|
|
11
11
|
|
|
@@ -2,7 +2,7 @@ import { Editor, TLShape, throttle } from '@tldraw/editor'
|
|
|
2
2
|
|
|
3
3
|
function _updateHoveredShapeId(editor: Editor) {
|
|
4
4
|
// todo: consider replacing `get hoveredShapeId` with this; it would mean keeping hoveredShapeId in memory rather than in the store and possibly re-computing it more often than necessary
|
|
5
|
-
const hitShape = editor.getShapeAtPoint(editor.inputs.
|
|
5
|
+
const hitShape = editor.getShapeAtPoint(editor.inputs.getCurrentPagePoint(), {
|
|
6
6
|
hitInside: false,
|
|
7
7
|
hitLabels: false,
|
|
8
8
|
margin: editor.options.hitTestMargin / editor.getZoomLevel(),
|
package/src/lib/ui/TldrawUi.tsx
CHANGED
|
@@ -81,6 +81,11 @@ const TldrawUiInner = React.memo(function TldrawUiInner({
|
|
|
81
81
|
// If we ever need want the UI to mount and preserve state, then
|
|
82
82
|
// we should change this behavior and hide the UI via CSS instead.
|
|
83
83
|
|
|
84
|
+
// Keyboard shortcuts and clipboard events should always be mounted,
|
|
85
|
+
// even when the UI is hidden.
|
|
86
|
+
useKeyboardShortcuts()
|
|
87
|
+
useNativeClipboardEvents()
|
|
88
|
+
|
|
84
89
|
return (
|
|
85
90
|
<>
|
|
86
91
|
{children}
|
|
@@ -112,8 +117,6 @@ const TldrawUiContent = React.memo(function TldrawUI() {
|
|
|
112
117
|
A11y,
|
|
113
118
|
} = useTldrawUiComponents()
|
|
114
119
|
|
|
115
|
-
useKeyboardShortcuts()
|
|
116
|
-
useNativeClipboardEvents()
|
|
117
120
|
useEditorEvents()
|
|
118
121
|
|
|
119
122
|
const rIsEditingAnything = useRef(false)
|
|
@@ -66,9 +66,7 @@ export const DefaultContextMenu = memo(function DefaultContextMenu({
|
|
|
66
66
|
// Weird route: selecting locked shapes on long press
|
|
67
67
|
if (editor.getInstanceState().isCoarsePointer) {
|
|
68
68
|
const selectedShapes = editor.getSelectedShapes()
|
|
69
|
-
const
|
|
70
|
-
inputs: { currentPagePoint },
|
|
71
|
-
} = editor
|
|
69
|
+
const currentPagePoint = editor.inputs.getCurrentPagePoint()
|
|
72
70
|
|
|
73
71
|
// get all of the shapes under the current pointer
|
|
74
72
|
const shapesAtPoint = editor.getShapesAtPoint(currentPagePoint)
|
|
@@ -46,14 +46,14 @@ export const CursorChatBubble = track(function CursorChatBubble() {
|
|
|
46
46
|
return chatMessage.trim() ? <NotEditingChatMessage chatMessage={chatMessage} /> : null
|
|
47
47
|
})
|
|
48
48
|
|
|
49
|
-
function usePositionBubble(ref: RefObject<HTMLInputElement>) {
|
|
49
|
+
function usePositionBubble(ref: RefObject<HTMLInputElement | null>) {
|
|
50
50
|
const editor = useEditor()
|
|
51
51
|
|
|
52
52
|
useLayoutEffect(() => {
|
|
53
53
|
const elm = ref.current
|
|
54
54
|
if (!elm) return
|
|
55
55
|
|
|
56
|
-
const { x, y } = editor.inputs.
|
|
56
|
+
const { x, y } = editor.inputs.getCurrentScreenPoint()
|
|
57
57
|
ref.current?.style.setProperty('transform', `translate(${x}px, ${y}px)`)
|
|
58
58
|
|
|
59
59
|
// Positioning the chat bubble
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
track,
|
|
4
|
-
useEditor,
|
|
5
|
-
usePassThroughWheelEvents,
|
|
6
|
-
useValue,
|
|
7
|
-
Vec,
|
|
8
|
-
} from '@tldraw/editor'
|
|
9
|
-
import { memo, useEffect, useRef, useState } from 'react'
|
|
1
|
+
import { debugFlags, track, useEditor, usePassThroughWheelEvents, useValue } from '@tldraw/editor'
|
|
2
|
+
import { memo, useEffect, useRef } from 'react'
|
|
10
3
|
import { useTldrawUiComponents } from '../context/components'
|
|
11
4
|
|
|
12
5
|
/** @internal */
|
|
@@ -25,42 +18,10 @@ export const DefaultDebugPanel = memo(function DefaultDebugPanel() {
|
|
|
25
18
|
)
|
|
26
19
|
})
|
|
27
20
|
|
|
28
|
-
function useTick(isEnabled = true) {
|
|
29
|
-
const [_, setTick] = useState(0)
|
|
30
|
-
const editor = useEditor()
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
if (!isEnabled) return
|
|
33
|
-
const update = () => setTick((tick) => tick + 1)
|
|
34
|
-
editor.on('tick', update)
|
|
35
|
-
return () => {
|
|
36
|
-
editor.off('tick', update)
|
|
37
|
-
}
|
|
38
|
-
}, [editor, isEnabled])
|
|
39
|
-
}
|
|
40
|
-
|
|
41
21
|
const CurrentState = track(function CurrentState() {
|
|
42
|
-
useTick()
|
|
43
|
-
|
|
44
22
|
const editor = useEditor()
|
|
45
|
-
|
|
46
23
|
const path = editor.getPath()
|
|
47
|
-
|
|
48
|
-
const selectedShape = editor.getOnlySelectedShape()
|
|
49
|
-
const shape = path === 'select.idle' || !path.includes('select.') ? hoverShape : selectedShape
|
|
50
|
-
const shapeInfo =
|
|
51
|
-
shape && path.includes('select.')
|
|
52
|
-
? ` / ${shape.type || ''}${
|
|
53
|
-
'geo' in shape.props ? ' / ' + shape.props.geo : ''
|
|
54
|
-
} / [${Vec.ToInt(editor.getPointInShapeSpace(shape, editor.inputs.currentPagePoint))}]`
|
|
55
|
-
: ''
|
|
56
|
-
const ruler =
|
|
57
|
-
path.startsWith('select.') && !path.includes('.idle')
|
|
58
|
-
? ` / [${Vec.ToInt(editor.inputs.originPagePoint)}] → [${Vec.ToInt(
|
|
59
|
-
editor.inputs.currentPagePoint
|
|
60
|
-
)}] = ${Vec.Dist(editor.inputs.originPagePoint, editor.inputs.currentPagePoint).toFixed(0)}`
|
|
61
|
-
: ''
|
|
62
|
-
|
|
63
|
-
return <div className="tlui-debug-panel__current-state">{`${path}${shapeInfo}${ruler}`}</div>
|
|
24
|
+
return <div className="tlui-debug-panel__current-state">{`${path}`}</div>
|
|
64
25
|
})
|
|
65
26
|
|
|
66
27
|
function FPS() {
|
|
@@ -18,7 +18,7 @@ export function BackToContent() {
|
|
|
18
18
|
const shapeIds = editor.getCurrentPageShapeIds()
|
|
19
19
|
let showBackToContentNow = false
|
|
20
20
|
if (shapeIds.size) {
|
|
21
|
-
showBackToContentNow = shapeIds.size === editor.
|
|
21
|
+
showBackToContentNow = shapeIds.size === editor.getNotVisibleShapes().size
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
if (showBackToContentPrev !== showBackToContentNow) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEditor, useValue } from '@tldraw/editor'
|
|
2
2
|
import { useActions } from '../../context/actions'
|
|
3
|
-
import { TldrawUiMenuItem } from '../primitives/menus/TldrawUiMenuItem'
|
|
3
|
+
import { TldrawUiMenuItem, type TLUiMenuItemProps } from '../primitives/menus/TldrawUiMenuItem'
|
|
4
4
|
|
|
5
5
|
export function StopFollowing() {
|
|
6
6
|
const editor = useEditor()
|
|
@@ -13,5 +13,5 @@ export function StopFollowing() {
|
|
|
13
13
|
)
|
|
14
14
|
if (!followingUser) return null
|
|
15
15
|
|
|
16
|
-
return <TldrawUiMenuItem {...actions['stop-following']} />
|
|
16
|
+
return <TldrawUiMenuItem {...(actions['stop-following'] as TLUiMenuItemProps)} />
|
|
17
17
|
}
|
|
@@ -24,7 +24,7 @@ export function DefaultMinimap() {
|
|
|
24
24
|
const rCanvas = React.useRef<HTMLCanvasElement>(null!)
|
|
25
25
|
const rPointing = React.useRef(false)
|
|
26
26
|
|
|
27
|
-
const minimapRef = React.useRef<MinimapManager>()
|
|
27
|
+
const minimapRef = React.useRef<MinimapManager | undefined>(undefined)
|
|
28
28
|
|
|
29
29
|
React.useEffect(() => {
|
|
30
30
|
try {
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import classNames from 'classnames'
|
|
2
1
|
import { useTranslation } from '../../hooks/useTranslation/useTranslation'
|
|
3
2
|
import { TldrawUiIcon } from '../primitives/TldrawUiIcon'
|
|
3
|
+
import { TldrawUiTooltip } from '../primitives/TldrawUiTooltip'
|
|
4
4
|
|
|
5
5
|
/** @public @react */
|
|
6
6
|
export function OfflineIndicator() {
|
|
7
7
|
const msg = useTranslation()
|
|
8
8
|
|
|
9
9
|
return (
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
<TldrawUiTooltip content={msg('status.offline')}>
|
|
11
|
+
<div className="tlui-offline-indicator">
|
|
12
|
+
<TldrawUiIcon icon="status-offline" label={msg('status.offline')} small />
|
|
13
|
+
</div>
|
|
14
|
+
</TldrawUiTooltip>
|
|
14
15
|
)
|
|
15
16
|
}
|
|
@@ -48,7 +48,9 @@ export const PageItemInput = function PageItemInput({
|
|
|
48
48
|
return (
|
|
49
49
|
<TldrawUiInput
|
|
50
50
|
className="tlui-page-menu__item__input"
|
|
51
|
-
ref={(el) =>
|
|
51
|
+
ref={(el) => {
|
|
52
|
+
rInput.current = el
|
|
53
|
+
}}
|
|
52
54
|
defaultValue={name}
|
|
53
55
|
onValueChange={handleChange}
|
|
54
56
|
onComplete={onComplete}
|