tldraw 4.3.0-canary.e52fa5385f86 → 4.3.0-canary.ea88b223b83a
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 +294 -237
- package/dist-cjs/index.js +12 -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/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/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 +1 -2
- 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 +294 -237
- package/dist-esm/index.mjs +12 -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/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/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 +1 -2
- 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/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/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/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 +0 -1
- 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 +10 -10
- package/src/test/commands/cameraState.test.ts +299 -0
- 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/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
|
@@ -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)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { useEditor, useValue } from '@tldraw/editor'
|
|
2
1
|
import { PORTRAIT_BREAKPOINT } from '../../constants'
|
|
3
2
|
import { useBreakpoint } from '../../context/breakpoints'
|
|
4
3
|
import {
|
|
@@ -9,6 +8,7 @@ import {
|
|
|
9
8
|
useThreeStackableItems,
|
|
10
9
|
useUnlockedSelectedShapesCount,
|
|
11
10
|
} from '../../hooks/menu-hooks'
|
|
11
|
+
import { ZoomTo100MenuItem } from '../menu-items'
|
|
12
12
|
import { TldrawUiMenuActionItem } from '../primitives/menus/TldrawUiMenuActionItem'
|
|
13
13
|
|
|
14
14
|
/** @public @react */
|
|
@@ -99,14 +99,6 @@ export function ZoomOrRotateMenuItem() {
|
|
|
99
99
|
}
|
|
100
100
|
/** @public @react */
|
|
101
101
|
|
|
102
|
-
export function ZoomTo100MenuItem() {
|
|
103
|
-
const editor = useEditor()
|
|
104
|
-
const isZoomedTo100 = useValue('zoom is 1', () => editor.getZoomLevel() === 1, [editor])
|
|
105
|
-
|
|
106
|
-
return <TldrawUiMenuActionItem actionId="zoom-to-100" disabled={isZoomedTo100} />
|
|
107
|
-
}
|
|
108
|
-
/** @public @react */
|
|
109
|
-
|
|
110
102
|
export function RotateCCWMenuItem() {
|
|
111
103
|
const oneSelected = useUnlockedSelectedShapesCount(1)
|
|
112
104
|
const isInSelectState = useIsInSelectState()
|
|
@@ -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() {
|
|
@@ -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}
|
|
@@ -3,8 +3,10 @@ import { Popover as _Popover } from 'radix-ui'
|
|
|
3
3
|
import { ReactNode } from 'react'
|
|
4
4
|
import { PORTRAIT_BREAKPOINT } from '../../constants'
|
|
5
5
|
import { useBreakpoint } from '../../context/breakpoints'
|
|
6
|
+
import { useCollaborationStatus } from '../../hooks/useCollaborationStatus'
|
|
6
7
|
import { useMenuIsOpen } from '../../hooks/useMenuIsOpen'
|
|
7
8
|
import { useTranslation } from '../../hooks/useTranslation/useTranslation'
|
|
9
|
+
import { OfflineIndicator } from '../OfflineIndicator/OfflineIndicator'
|
|
8
10
|
import { PeopleMenuAvatar } from './PeopleMenuAvatar'
|
|
9
11
|
import { PeopleMenuItem } from './PeopleMenuItem'
|
|
10
12
|
import { PeopleMenuMore } from './PeopleMenuMore'
|
|
@@ -30,6 +32,12 @@ export function PeopleMenu({ children }: PeopleMenuProps) {
|
|
|
30
32
|
const breakpoint = useBreakpoint()
|
|
31
33
|
const maxAvatars = breakpoint <= PORTRAIT_BREAKPOINT.MOBILE_XS ? 1 : 5
|
|
32
34
|
|
|
35
|
+
const collaborationStatus = useCollaborationStatus()
|
|
36
|
+
|
|
37
|
+
if (collaborationStatus === 'offline') {
|
|
38
|
+
return <OfflineIndicator />
|
|
39
|
+
}
|
|
40
|
+
|
|
33
41
|
if (!userIds.length) return null
|
|
34
42
|
|
|
35
43
|
return (
|
|
@@ -63,7 +63,7 @@ function ContextualToolbarInner({
|
|
|
63
63
|
)
|
|
64
64
|
const camera = useValue('camera', () => editor.getCamera(), [editor])
|
|
65
65
|
const isInCropTool = useValue('editor path', () => editor.isIn('select.crop.'), [editor])
|
|
66
|
-
const previousSelectionBounds = useRef<Box | undefined>()
|
|
66
|
+
const previousSelectionBounds = useRef<Box | undefined>(undefined)
|
|
67
67
|
const handleManipulatingEnd = useCallback(() => {
|
|
68
68
|
editor.setCroppingShape(null)
|
|
69
69
|
editor.setCurrentTool('select.idle')
|
|
@@ -38,7 +38,7 @@ function ContextualToolbarInner({
|
|
|
38
38
|
}) {
|
|
39
39
|
const { isEditingLink, onEditLinkStart, onEditLinkClose } = useEditingLinkBehavior(textEditor)
|
|
40
40
|
const [currentSelection, setCurrentSelection] = useState<Range | null>(null)
|
|
41
|
-
const previousSelectionBounds = useRef<Box | undefined>()
|
|
41
|
+
const previousSelectionBounds = useRef<Box | undefined>(undefined)
|
|
42
42
|
const isMousingDown = useIsMousingDownOnTextEditor(textEditor)
|
|
43
43
|
const msg = useTranslation()
|
|
44
44
|
|
|
@@ -182,7 +182,9 @@ export function UnlockAllMenuItem() {
|
|
|
182
182
|
/** @public @react */
|
|
183
183
|
export function ZoomTo100MenuItem() {
|
|
184
184
|
const editor = useEditor()
|
|
185
|
-
const isZoomedTo100 = useValue('zoomed to 100', () => editor.
|
|
185
|
+
const isZoomedTo100 = useValue('zoomed to 100', () => editor.getEfficientZoomLevel() === 1, [
|
|
186
|
+
editor,
|
|
187
|
+
])
|
|
186
188
|
|
|
187
189
|
return <TldrawUiMenuActionItem actionId="zoom-to-100" noClose disabled={isZoomedTo100} />
|
|
188
190
|
}
|
|
@@ -52,8 +52,8 @@ export const TldrawUiContextualToolbar = ({
|
|
|
52
52
|
const editor = useEditor()
|
|
53
53
|
const toolbarRef = useRef<HTMLDivElement>(null)
|
|
54
54
|
|
|
55
|
-
usePassThroughWheelEvents(toolbarRef as RefObject<HTMLDivElement>)
|
|
56
|
-
usePassThroughMouseOverEvents(toolbarRef as RefObject<HTMLDivElement>)
|
|
55
|
+
usePassThroughWheelEvents(toolbarRef as RefObject<HTMLDivElement | null>)
|
|
56
|
+
usePassThroughMouseOverEvents(toolbarRef as RefObject<HTMLDivElement | null>)
|
|
57
57
|
|
|
58
58
|
const { isVisible, isInteractive, hide, show, position, move } =
|
|
59
59
|
useToolbarVisibilityStateMachine(changeOnlyWhenYChanges)
|
|
@@ -105,7 +105,9 @@ export const TldrawUiContextualToolbar = ({
|
|
|
105
105
|
// to have the last updated position in page space, so that we could convert
|
|
106
106
|
// it to screen space and update it here
|
|
107
107
|
const elm = toolbarRef.current
|
|
108
|
-
|
|
108
|
+
if (elm) {
|
|
109
|
+
elm.style.setProperty('transform', `translate(${position.x}px, ${position.y}px)`)
|
|
110
|
+
}
|
|
109
111
|
} else {
|
|
110
112
|
const moveImmediately = lastContentSizeUpdateCounter !== nextContentSizeUpdateCounter
|
|
111
113
|
// Schedule a move to its next location
|
|
@@ -410,8 +410,15 @@ export const TldrawUiTooltip = forwardRef<HTMLButtonElement, TldrawUiTooltipProp
|
|
|
410
410
|
const child = React.Children.only(children)
|
|
411
411
|
assert(React.isValidElement(child), 'TldrawUiTooltip children must be a single element')
|
|
412
412
|
|
|
413
|
+
const childElement = child as React.ReactElement<{
|
|
414
|
+
onMouseEnter?(event: React.MouseEvent<HTMLElement>): void
|
|
415
|
+
onMouseLeave?(event: React.MouseEvent<HTMLElement>): void
|
|
416
|
+
onFocus?(event: React.FocusEvent<HTMLElement>): void
|
|
417
|
+
onBlur?(event: React.FocusEvent<HTMLElement>): void
|
|
418
|
+
}>
|
|
419
|
+
|
|
413
420
|
const handleMouseEnter = (event: React.MouseEvent<HTMLElement>) => {
|
|
414
|
-
|
|
421
|
+
childElement.props.onMouseEnter?.(event)
|
|
415
422
|
tooltipManager.handleEvent({
|
|
416
423
|
type: 'show',
|
|
417
424
|
tooltip: {
|
|
@@ -427,7 +434,7 @@ export const TldrawUiTooltip = forwardRef<HTMLButtonElement, TldrawUiTooltipProp
|
|
|
427
434
|
}
|
|
428
435
|
|
|
429
436
|
const handleMouseLeave = (event: React.MouseEvent<HTMLElement>) => {
|
|
430
|
-
|
|
437
|
+
childElement.props.onMouseLeave?.(event)
|
|
431
438
|
tooltipManager.handleEvent({
|
|
432
439
|
type: 'hide',
|
|
433
440
|
tooltipId: tooltipId.current,
|
|
@@ -437,7 +444,7 @@ export const TldrawUiTooltip = forwardRef<HTMLButtonElement, TldrawUiTooltipProp
|
|
|
437
444
|
}
|
|
438
445
|
|
|
439
446
|
const handleFocus = (event: React.FocusEvent<HTMLElement>) => {
|
|
440
|
-
|
|
447
|
+
childElement.props.onFocus?.(event)
|
|
441
448
|
tooltipManager.handleEvent({
|
|
442
449
|
type: 'show',
|
|
443
450
|
tooltip: {
|
|
@@ -453,7 +460,7 @@ export const TldrawUiTooltip = forwardRef<HTMLButtonElement, TldrawUiTooltipProp
|
|
|
453
460
|
}
|
|
454
461
|
|
|
455
462
|
const handleBlur = (event: React.FocusEvent<HTMLElement>) => {
|
|
456
|
-
|
|
463
|
+
childElement.props.onBlur?.(event)
|
|
457
464
|
tooltipManager.handleEvent({
|
|
458
465
|
type: 'hide',
|
|
459
466
|
tooltipId: tooltipId.current,
|
|
@@ -462,7 +469,7 @@ export const TldrawUiTooltip = forwardRef<HTMLButtonElement, TldrawUiTooltipProp
|
|
|
462
469
|
})
|
|
463
470
|
}
|
|
464
471
|
|
|
465
|
-
const childrenWithHandlers = React.cloneElement(
|
|
472
|
+
const childrenWithHandlers = React.cloneElement(childElement, {
|
|
466
473
|
onMouseEnter: handleMouseEnter,
|
|
467
474
|
onMouseLeave: handleMouseLeave,
|
|
468
475
|
onFocus: handleFocus,
|
|
@@ -17,5 +17,5 @@ export function TldrawUiMenuActionCheckboxItem({
|
|
|
17
17
|
const actions = useActions()
|
|
18
18
|
const action = actions[actionId]
|
|
19
19
|
if (!action) return null
|
|
20
|
-
return <TldrawUiMenuCheckboxItem {...action} {...rest} />
|
|
20
|
+
return <TldrawUiMenuCheckboxItem {...(action as TLUiMenuCheckboxItemProps)} {...rest} />
|
|
21
21
|
}
|
|
@@ -11,5 +11,5 @@ export function TldrawUiMenuActionItem({ actionId = '', ...rest }: TLUiMenuActio
|
|
|
11
11
|
const actions = useActions()
|
|
12
12
|
const action = actions[actionId]
|
|
13
13
|
if (!action) return null
|
|
14
|
-
return <TldrawUiMenuItem {...action} {...rest} />
|
|
14
|
+
return <TldrawUiMenuItem {...(action as TLUiMenuItemProps)} {...rest} />
|
|
15
15
|
}
|
|
@@ -134,7 +134,6 @@ export function TldrawUiMenuItem<
|
|
|
134
134
|
{iconLeft && <TldrawUiButtonIcon icon={iconLeft} small />}
|
|
135
135
|
<TldrawUiButtonLabel>{labelStr}</TldrawUiButtonLabel>
|
|
136
136
|
{kbd && <TldrawUiKbd>{kbd}</TldrawUiKbd>}
|
|
137
|
-
{icon && <TldrawUiButtonIcon icon={icon} small />}
|
|
138
137
|
</TldrawUiButton>
|
|
139
138
|
</TldrawUiDropdownMenuItem>
|
|
140
139
|
)
|
|
@@ -375,7 +375,7 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
|
|
|
375
375
|
if (editor.root.getCurrent()?.id === 'zoom') return
|
|
376
376
|
|
|
377
377
|
trackEvent('zoom-tool', { source })
|
|
378
|
-
if (!(editor.inputs.
|
|
378
|
+
if (!(editor.inputs.getShiftKey() || editor.inputs.getCtrlKey())) {
|
|
379
379
|
const currentTool = editor.root.getCurrent()
|
|
380
380
|
if (currentTool && currentTool.getCurrent()?.id === 'idle') {
|
|
381
381
|
editor.setCurrentTool('zoom', { onInteractionEnd: currentTool.id, maskAs: 'zoom' })
|
|
@@ -973,7 +973,7 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
|
|
|
973
973
|
helpers.paste(
|
|
974
974
|
clipboardItems,
|
|
975
975
|
source,
|
|
976
|
-
source === 'context-menu' ? editor.inputs.
|
|
976
|
+
source === 'context-menu' ? editor.inputs.getCurrentPagePoint() : undefined
|
|
977
977
|
)
|
|
978
978
|
})
|
|
979
979
|
.catch(() => {
|
|
@@ -1037,7 +1037,7 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
|
|
|
1037
1037
|
if (!canApplySelectionAction()) return
|
|
1038
1038
|
if (mustGoBackToSelectToolFirst()) return
|
|
1039
1039
|
|
|
1040
|
-
const isFine = editor.inputs.
|
|
1040
|
+
const isFine = editor.inputs.getAltKey()
|
|
1041
1041
|
trackEvent('rotate-cw', { source, fine: isFine })
|
|
1042
1042
|
editor.markHistoryStoppingPoint('rotate-cw')
|
|
1043
1043
|
editor.run(() => {
|
|
@@ -1060,7 +1060,7 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
|
|
|
1060
1060
|
if (!canApplySelectionAction()) return
|
|
1061
1061
|
if (mustGoBackToSelectToolFirst()) return
|
|
1062
1062
|
|
|
1063
|
-
const isFine = editor.inputs.
|
|
1063
|
+
const isFine = editor.inputs.getAltKey()
|
|
1064
1064
|
trackEvent('rotate-ccw', { source, fine: isFine })
|
|
1065
1065
|
editor.markHistoryStoppingPoint('rotate-ccw')
|
|
1066
1066
|
editor.run(() => {
|
|
@@ -1092,7 +1092,7 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
|
|
|
1092
1092
|
readonlyOk: true,
|
|
1093
1093
|
onSelect(source) {
|
|
1094
1094
|
trackEvent('zoom-in', { source, towardsCursor: true })
|
|
1095
|
-
editor.zoomIn(editor.inputs.
|
|
1095
|
+
editor.zoomIn(editor.inputs.getCurrentScreenPoint(), {
|
|
1096
1096
|
animation: { duration: editor.options.animationMediumMs },
|
|
1097
1097
|
})
|
|
1098
1098
|
},
|
|
@@ -1116,7 +1116,7 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
|
|
|
1116
1116
|
readonlyOk: true,
|
|
1117
1117
|
onSelect(source) {
|
|
1118
1118
|
trackEvent('zoom-out', { source, towardsCursor: true })
|
|
1119
|
-
editor.zoomOut(editor.inputs.
|
|
1119
|
+
editor.zoomOut(editor.inputs.getCurrentScreenPoint(), {
|
|
1120
1120
|
animation: { duration: editor.options.animationMediumMs },
|
|
1121
1121
|
})
|
|
1122
1122
|
},
|
|
@@ -42,7 +42,6 @@ import {
|
|
|
42
42
|
} from '../components/Toolbar/DefaultRichTextToolbar'
|
|
43
43
|
import { DefaultToolbar } from '../components/Toolbar/DefaultToolbar'
|
|
44
44
|
import { DefaultVideoToolbar } from '../components/Toolbar/DefaultVideoToolbar'
|
|
45
|
-
import { DefaultTopPanel } from '../components/TopPanel/DefaultTopPanel'
|
|
46
45
|
import { DefaultZoomMenu, TLUiZoomMenuProps } from '../components/ZoomMenu/DefaultZoomMenu'
|
|
47
46
|
import { useShowCollaborationUi } from '../hooks/useCollaborationStatus'
|
|
48
47
|
|
|
@@ -117,7 +116,7 @@ export function TldrawUiComponentsProvider({
|
|
|
117
116
|
MenuPanel: DefaultMenuPanel,
|
|
118
117
|
SharePanel: showCollaborationUi ? DefaultSharePanel : null,
|
|
119
118
|
CursorChatBubble: showCollaborationUi ? CursorChatBubble : null,
|
|
120
|
-
TopPanel:
|
|
119
|
+
TopPanel: null,
|
|
121
120
|
Dialogs: DefaultDialogs,
|
|
122
121
|
Toasts: DefaultToasts,
|
|
123
122
|
A11y: DefaultA11yAnnouncer,
|
|
@@ -783,9 +783,9 @@ export function useNativeClipboardEvents() {
|
|
|
783
783
|
// | Y | N | Y |
|
|
784
784
|
// | N | Y | Y |
|
|
785
785
|
// | Y | Y | N |
|
|
786
|
-
if (editor.inputs.
|
|
786
|
+
if (editor.inputs.getShiftKey()) pasteAtCursor = true
|
|
787
787
|
if (editor.user.getIsPasteAtCursorMode()) pasteAtCursor = !pasteAtCursor
|
|
788
|
-
if (pasteAtCursor) point = editor.inputs.
|
|
788
|
+
if (pasteAtCursor) point = editor.inputs.getCurrentPagePoint()
|
|
789
789
|
|
|
790
790
|
const pasteFromEvent = () => {
|
|
791
791
|
if (e.clipboardData) {
|
|
@@ -93,7 +93,7 @@ export function useKeyboardShortcuts() {
|
|
|
93
93
|
|
|
94
94
|
editor.inputs.keys.add('Comma')
|
|
95
95
|
|
|
96
|
-
const { x, y, z } = editor.inputs.
|
|
96
|
+
const { x, y, z } = editor.inputs.getCurrentPagePoint()
|
|
97
97
|
const screenpoints = editor.pageToScreen({ x, y })
|
|
98
98
|
|
|
99
99
|
const info: TLPointerEventInfo = {
|
|
@@ -120,7 +120,7 @@ export function useKeyboardShortcuts() {
|
|
|
120
120
|
|
|
121
121
|
editor.inputs.keys.delete('Comma')
|
|
122
122
|
|
|
123
|
-
const { x, y, z } = editor.inputs.
|
|
123
|
+
const { x, y, z } = editor.inputs.getCurrentScreenPoint()
|
|
124
124
|
const info: TLPointerEventInfo = {
|
|
125
125
|
type: 'pointer',
|
|
126
126
|
name: 'pointer_up',
|