tldraw 4.3.0-next.39f1d5b92226 → 4.3.0-next.40e4536afc8e
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/README.md +0 -2
- package/dist-cjs/index.d.ts +297 -237
- package/dist-cjs/index.js +13 -5
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +2 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +2 -2
- package/dist-cjs/lib/defaultEmbedDefinitions.js +1 -1
- package/dist-cjs/lib/defaultEmbedDefinitions.js.map +2 -2
- package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -5
- package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
- package/dist-cjs/lib/defaultSideEffects.js +6 -1
- package/dist-cjs/lib/defaultSideEffects.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +14 -13
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/arrow-types.js.map +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowLabel.js +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js +1 -1
- package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js +4 -10
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +7 -4
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +25 -23
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/getPath.js +20 -11
- package/dist-cjs/lib/shapes/draw/getPath.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +82 -86
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +3 -3
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +6 -0
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +6 -5
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +146 -142
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js +5 -10
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js +3 -3
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +23 -21
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js +3 -3
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +6 -11
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js +5 -10
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +3 -2
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +14 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js +12 -4
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/ShapeFill.js +2 -2
- package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/interpolate-props.js +3 -3
- package/dist-cjs/lib/shapes/shared/interpolate-props.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/{useForceSolid.js → useEfficientZoomThreshold.js} +10 -7
- package/dist-cjs/lib/shapes/shared/useEfficientZoomThreshold.js.map +7 -0
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +1 -1
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
- package/dist-cjs/lib/shapes/text/RichTextArea.js +5 -0
- package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js +5 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js +4 -10
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +7 -5
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +4 -5
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +2 -4
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/HandTool.js +3 -5
- package/dist-cjs/lib/tools/HandTool/HandTool.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js +3 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js +1 -1
- package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js +1 -1
- package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js +9 -7
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +6 -5
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js +4 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js +2 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +7 -5
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js +38 -11
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +42 -50
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js +6 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js +4 -14
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +4 -13
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +5 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +2 -3
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js +7 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +13 -11
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/selectHelpers.js +15 -4
- package/dist-cjs/lib/tools/SelectTool/selectHelpers.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js +1 -1
- package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js +3 -3
- package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js +5 -6
- package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js +1 -3
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js +1 -1
- package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js +1 -1
- package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js.map +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js +3 -9
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js +1 -3
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/CursorChatBubble.js +1 -1
- package/dist-cjs/lib/ui/components/CursorChatBubble.js.map +2 -2
- package/dist-cjs/lib/ui/components/DefaultDebugPanel.js +1 -21
- package/dist-cjs/lib/ui/components/DefaultDebugPanel.js.map +2 -2
- package/dist-cjs/lib/ui/components/HelperButtons/BackToContent.js +1 -1
- package/dist-cjs/lib/ui/components/HelperButtons/BackToContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/HelperButtons/StopFollowing.js.map +2 -2
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +1 -1
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
- package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js +2 -15
- package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js.map +3 -3
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js +3 -1
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js +6 -0
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/TopPanel/CenteredTopPanelContainer.js.map +1 -1
- package/dist-cjs/lib/ui/components/menu-items.js +3 -1
- package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +3 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +1 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +149 -93
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +14 -7
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
- package/dist-cjs/lib/ui/context/actions.js +6 -6
- package/dist-cjs/lib/ui/context/actions.js.map +2 -2
- package/dist-cjs/lib/ui/context/components.js +1 -2
- package/dist-cjs/lib/ui/context/components.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +2 -2
- package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +2 -2
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useTools.js +4 -5
- package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
- package/dist-cjs/lib/ui/version.js +3 -3
- package/dist-cjs/lib/ui/version.js.map +1 -1
- package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js +8 -6
- package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +2 -2
- package/dist-cjs/lib/{tools/selection-logic/getShouldEnterCropModeOnPointerDown.js → utils/test-helpers.js} +21 -8
- package/dist-cjs/lib/utils/test-helpers.js.map +7 -0
- package/dist-cjs/lib/utils/text/richText.js +15 -19
- package/dist-cjs/lib/utils/text/richText.js.map +3 -3
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +7 -2
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +2 -2
- package/dist-esm/index.d.mts +297 -237
- package/dist-esm/index.mjs +14 -5
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +2 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +2 -2
- package/dist-esm/lib/defaultEmbedDefinitions.mjs +1 -1
- package/dist-esm/lib/defaultEmbedDefinitions.mjs.map +2 -2
- package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -5
- package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
- package/dist-esm/lib/defaultSideEffects.mjs +6 -1
- package/dist-esm/lib/defaultSideEffects.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +15 -15
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs +4 -10
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +7 -4
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +1 -1
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +30 -25
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/getPath.mjs +21 -11
- package/dist-esm/lib/shapes/draw/getPath.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +83 -86
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +3 -3
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +6 -0
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +6 -5
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +147 -142
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs +5 -10
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs +3 -3
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +24 -22
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs +3 -3
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +7 -12
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs +5 -10
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +4 -3
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +14 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +12 -4
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs +2 -2
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs +4 -4
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs +12 -0
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs.map +7 -0
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +1 -1
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/RichTextArea.mjs +5 -0
- package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +5 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs +4 -10
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +7 -5
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +1 -1
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +4 -5
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +2 -4
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/HandTool.mjs +3 -5
- package/dist-esm/lib/tools/HandTool/HandTool.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs +3 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs +1 -1
- package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs +1 -1
- package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs +9 -7
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +6 -5
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs +4 -6
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs +2 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +7 -5
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs +38 -11
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +43 -51
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs +6 -6
- package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs +5 -15
- package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +4 -13
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +5 -6
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +2 -3
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs +7 -6
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +13 -11
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs +17 -4
- package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs +1 -1
- package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs +3 -3
- package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs +5 -6
- package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs +1 -3
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs +1 -1
- package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs +1 -1
- package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs.map +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs +2 -8
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs +1 -3
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/CursorChatBubble.mjs +1 -1
- package/dist-esm/lib/ui/components/CursorChatBubble.mjs.map +2 -2
- package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs +3 -30
- package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs.map +2 -2
- package/dist-esm/lib/ui/components/HelperButtons/BackToContent.mjs +1 -1
- package/dist-esm/lib/ui/components/HelperButtons/BackToContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/HelperButtons/StopFollowing.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +1 -1
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
- package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs +3 -6
- package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs.map +2 -2
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs +3 -1
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs +6 -0
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs +1 -1
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs +1 -1
- package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/TopPanel/CenteredTopPanelContainer.mjs.map +1 -1
- package/dist-esm/lib/ui/components/menu-items.mjs +3 -1
- package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +3 -1
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +157 -95
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +15 -8
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
- package/dist-esm/lib/ui/context/actions.mjs +6 -6
- package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
- package/dist-esm/lib/ui/context/components.mjs +1 -2
- package/dist-esm/lib/ui/context/components.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +2 -2
- package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +2 -2
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useTools.mjs +4 -5
- package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
- package/dist-esm/lib/ui/version.mjs +3 -3
- package/dist-esm/lib/ui/version.mjs.map +1 -1
- package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs +9 -6
- package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +2 -2
- package/dist-esm/lib/utils/test-helpers.mjs +21 -0
- package/dist-esm/lib/utils/test-helpers.mjs.map +7 -0
- package/dist-esm/lib/utils/text/richText.mjs +12 -5
- package/dist-esm/lib/utils/text/richText.mjs.map +2 -2
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +8 -2
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +2 -2
- package/package.json +18 -16
- package/src/index.ts +6 -2
- package/src/lib/Tldraw.test.tsx +46 -1
- package/src/lib/canvas/TldrawSelectionForeground.tsx +2 -2
- package/src/lib/defaultEmbedDefinitions.ts +2 -1
- package/src/lib/defaultExternalContentHandlers.ts +10 -10
- package/src/lib/defaultSideEffects.ts +6 -1
- package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +40 -133
- package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +8 -8
- package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +15 -15
- package/src/lib/shapes/arrow/arrow-types.ts +2 -0
- package/src/lib/shapes/arrow/arrowLabel.ts +1 -1
- package/src/lib/shapes/arrow/arrowTargetState.ts +1 -1
- package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.test.ts +80 -0
- package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.tsx +1 -1
- package/src/lib/shapes/arrow/toolStates/Idle.tsx +4 -14
- package/src/lib/shapes/arrow/toolStates/Pointing.tsx +7 -4
- package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +1 -1
- package/src/lib/shapes/draw/DrawShapeUtil.test.ts +146 -0
- package/src/lib/shapes/draw/DrawShapeUtil.tsx +31 -27
- package/src/lib/shapes/draw/getPath.ts +31 -10
- package/src/lib/shapes/draw/toolStates/Drawing.ts +96 -86
- package/src/lib/shapes/embed/EmbedShapeUtil.tsx +7 -0
- package/src/lib/shapes/frame/FrameShapeUtil.tsx +10 -4
- package/src/lib/shapes/geo/GeoShapeUtil.tsx +228 -176
- package/src/lib/shapes/geo/toolStates/Idle.ts +5 -15
- package/src/lib/shapes/geo/toolStates/Pointing.ts +3 -3
- package/src/lib/shapes/highlight/HighlightShapeUtil.test.ts +146 -0
- package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +25 -24
- package/src/lib/shapes/line/toolStates/Pointing.ts +3 -3
- package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -10
- package/src/lib/shapes/note/noteCloning.test.ts +3 -1
- package/src/lib/shapes/note/toolStates/Pointing.ts +5 -10
- package/src/lib/shapes/shared/HyperlinkButton.tsx +4 -3
- package/src/lib/shapes/shared/PlainTextLabel.tsx +10 -1
- package/src/lib/shapes/shared/RichTextLabel.tsx +12 -3
- package/src/lib/shapes/shared/ShapeFill.tsx +2 -2
- package/src/lib/shapes/shared/interpolate-props.ts +4 -4
- package/src/lib/shapes/shared/useEfficientZoomThreshold.ts +10 -0
- package/src/lib/shapes/shared/useImageOrVideoAsset.ts +1 -1
- package/src/lib/shapes/text/RichTextArea.tsx +5 -0
- package/src/lib/shapes/text/TextShapeUtil.tsx +5 -0
- package/src/lib/shapes/text/toolStates/Idle.ts +4 -14
- package/src/lib/shapes/text/toolStates/Pointing.ts +7 -7
- package/src/lib/shapes/video/VideoShapeUtil.tsx +2 -1
- package/src/lib/tools/EraserTool/childStates/Erasing.ts +4 -5
- package/src/lib/tools/EraserTool/childStates/Pointing.ts +2 -4
- package/src/lib/tools/HandTool/HandTool.ts +3 -5
- package/src/lib/tools/HandTool/childStates/Dragging.ts +3 -2
- package/src/lib/tools/HandTool/childStates/Pointing.ts +1 -1
- package/src/lib/tools/LaserTool/childStates/Lasering.ts +1 -1
- package/src/lib/tools/SelectTool/DragAndDropManager.ts +12 -7
- package/src/lib/tools/SelectTool/childStates/Brushing.ts +6 -5
- package/src/lib/tools/SelectTool/childStates/Crop/children/Cropping.ts +7 -6
- package/src/lib/tools/SelectTool/childStates/Crop/children/Idle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.ts +2 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +7 -5
- package/src/lib/tools/SelectTool/childStates/EditingShape.ts +55 -12
- package/src/lib/tools/SelectTool/childStates/Idle.ts +58 -71
- package/src/lib/tools/SelectTool/childStates/PointingArrowLabel.ts +6 -7
- package/src/lib/tools/SelectTool/childStates/PointingCanvas.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingHandle.ts +5 -5
- package/src/lib/tools/SelectTool/childStates/PointingResizeHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingRotateHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingSelection.ts +2 -2
- package/src/lib/tools/SelectTool/childStates/PointingShape.ts +4 -14
- package/src/lib/tools/SelectTool/childStates/Resizing.ts +6 -6
- package/src/lib/tools/SelectTool/childStates/Rotating.ts +2 -3
- package/src/lib/tools/SelectTool/childStates/ScribbleBrushing.ts +7 -6
- package/src/lib/tools/SelectTool/childStates/Translating.ts +15 -12
- package/src/lib/tools/SelectTool/selectHelpers.ts +39 -4
- package/src/lib/tools/ZoomTool/ZoomTool.ts +1 -1
- package/src/lib/tools/ZoomTool/childStates/Pointing.ts +3 -3
- package/src/lib/tools/ZoomTool/childStates/ZoomBrushing.ts +5 -6
- package/src/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.ts +1 -3
- package/src/lib/tools/selection-logic/selectOnCanvasPointerUp.ts +1 -1
- package/src/lib/tools/selection-logic/updateHoveredShapeId.ts +1 -1
- package/src/lib/ui/TldrawUi.tsx +5 -2
- package/src/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.tsx +1 -9
- package/src/lib/ui/components/ContextMenu/DefaultContextMenu.tsx +1 -3
- package/src/lib/ui/components/CursorChatBubble.tsx +2 -2
- package/src/lib/ui/components/DefaultDebugPanel.tsx +3 -42
- package/src/lib/ui/components/HelperButtons/BackToContent.tsx +1 -1
- package/src/lib/ui/components/HelperButtons/StopFollowing.tsx +2 -2
- package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +1 -1
- package/src/lib/ui/components/OfflineIndicator/OfflineIndicator.tsx +6 -5
- package/src/lib/ui/components/PageMenu/PageItemInput.tsx +3 -1
- package/src/lib/ui/components/SharePanel/PeopleMenu.tsx +8 -0
- package/src/lib/ui/components/Toolbar/DefaultImageToolbar.tsx +1 -1
- package/src/lib/ui/components/Toolbar/DefaultRichTextToolbar.tsx +1 -1
- package/src/lib/ui/components/TopPanel/CenteredTopPanelContainer.tsx +1 -1
- package/src/lib/ui/components/menu-items.tsx +3 -1
- package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +5 -3
- package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +2 -2
- package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +208 -113
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.tsx +1 -1
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.tsx +1 -1
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +7 -4
- package/src/lib/ui/context/actions.tsx +6 -6
- package/src/lib/ui/context/components.tsx +1 -2
- package/src/lib/ui/hooks/useClipboardEvents.ts +2 -2
- package/src/lib/ui/hooks/useKeyboardShortcuts.ts +2 -2
- package/src/lib/ui/hooks/useTools.tsx +4 -5
- package/src/lib/ui/version.ts +3 -3
- package/src/lib/ui.css +27 -23
- package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +12 -48
- package/src/lib/utils/excalidraw/putExcalidrawContent.ts +11 -6
- package/src/lib/utils/test-helpers.ts +60 -0
- package/src/lib/utils/text/richText.ts +13 -8
- package/src/lib/utils/tldr/buildFromV1Document.ts +9 -2
- package/src/test/Editor.test.tsx +40 -29
- package/src/test/EraserTool.test.ts +10 -12
- package/src/test/TestEditor.ts +48 -47
- package/src/test/TldrawEditor.test.tsx +3 -2
- package/src/test/__snapshots__/drawing.test.ts.snap +3 -1257
- package/src/test/__snapshots__/resizing.test.ts.snap +3 -12
- package/src/test/arrows-megabus.test.tsx +1 -1
- package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +10 -10
- package/src/test/commands/cameraState.test.ts +299 -0
- package/src/test/commands/putContent.test.ts +79 -1
- package/src/test/commands/setCamera.test.ts +13 -11
- package/src/test/commands/stackShapes.test.ts +34 -8
- package/src/test/commands/zoomToBounds.test.ts +19 -3
- package/src/test/commands/zoomToSelection.test.ts +14 -3
- package/src/test/custom-clipping.test.ts +16 -9
- package/src/test/drawing.test.ts +17 -10
- package/src/test/flipShapes.test.ts +33 -0
- package/src/test/frames.test.ts +92 -0
- package/src/test/groups.test.tsx +1 -1
- package/src/test/modifiers.test.ts +6 -6
- package/src/test/resizing.test.ts +7 -9
- package/src/test/selection-omnibus.test.ts +2 -2
- package/src/test/spacebarPanning.test.ts +28 -10
- package/src/test/test-jsx.tsx +3 -0
- package/src/test/ui/BackToContent.test.tsx +111 -0
- package/tldraw.css +41 -35
- package/dist-cjs/lib/shapes/shared/useForceSolid.js.map +0 -7
- package/dist-cjs/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.js.map +0 -7
- package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js +0 -32
- package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js.map +0 -7
- package/dist-cjs/lib/utils/text/textDirection.js +0 -51
- package/dist-cjs/lib/utils/text/textDirection.js.map +0 -7
- package/dist-esm/lib/shapes/shared/useForceSolid.mjs +0 -9
- package/dist-esm/lib/shapes/shared/useForceSolid.mjs.map +0 -7
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs +0 -8
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs.map +0 -7
- package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs +0 -12
- package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs.map +0 -7
- package/dist-esm/lib/utils/text/textDirection.mjs +0 -31
- package/dist-esm/lib/utils/text/textDirection.mjs.map +0 -7
- package/src/lib/shapes/shared/useForceSolid.ts +0 -6
- package/src/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.ts +0 -10
- package/src/lib/ui/components/TopPanel/DefaultTopPanel.tsx +0 -10
- package/src/lib/utils/text/textDirection.ts +0 -32
package/src/lib/ui.css
CHANGED
|
@@ -609,25 +609,31 @@
|
|
|
609
609
|
|
|
610
610
|
/* Submenu triggers */
|
|
611
611
|
|
|
612
|
-
.tlui-menu__submenu__trigger
|
|
613
|
-
|
|
614
|
-
background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
|
|
612
|
+
.tlui-menu__submenu__trigger {
|
|
613
|
+
--gradient-angle: 90deg;
|
|
615
614
|
}
|
|
616
615
|
|
|
617
|
-
.tlui-menu__submenu__trigger[data-direction='left']
|
|
616
|
+
.tlui-menu__submenu__trigger[data-direction='left'] {
|
|
617
|
+
--gradient-angle: 270deg;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
.tlui-menu__submenu__trigger[data-state='open']::after {
|
|
618
621
|
opacity: 1;
|
|
619
|
-
background: linear-gradient(
|
|
622
|
+
background: linear-gradient(
|
|
623
|
+
var(--gradient-angle),
|
|
624
|
+
rgba(144, 144, 144, 0) 0%,
|
|
625
|
+
var(--tl-color-muted-2) 100%
|
|
626
|
+
);
|
|
620
627
|
}
|
|
621
628
|
|
|
622
629
|
@media (hover: hover) {
|
|
623
|
-
.tlui-menu__submenu__trigger[data-state='open']
|
|
630
|
+
.tlui-menu__submenu__trigger:is(:hover, [data-state='open'])::after {
|
|
624
631
|
opacity: 1;
|
|
625
|
-
background: linear-gradient(
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
|
|
632
|
+
background: linear-gradient(
|
|
633
|
+
var(--gradient-angle),
|
|
634
|
+
rgba(144, 144, 144, 0) 0%,
|
|
635
|
+
var(--tl-color-muted-2) 100%
|
|
636
|
+
);
|
|
631
637
|
}
|
|
632
638
|
}
|
|
633
639
|
|
|
@@ -906,10 +912,8 @@
|
|
|
906
912
|
}
|
|
907
913
|
}
|
|
908
914
|
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
opacity: 1;
|
|
912
|
-
}
|
|
915
|
+
.tl-container[data-coarse='true'] .tlui-page_menu__item__submenu > .tlui-button {
|
|
916
|
+
opacity: 1;
|
|
913
917
|
}
|
|
914
918
|
|
|
915
919
|
.tlui-button__icon {
|
|
@@ -948,16 +952,15 @@
|
|
|
948
952
|
|
|
949
953
|
.tlui-offline-indicator {
|
|
950
954
|
display: flex;
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
padding: 0px var(--tl-space-5);
|
|
957
|
-
height: 42px;
|
|
955
|
+
color: var(--tl-color-background);
|
|
956
|
+
background-color: var(--tl-color-text);
|
|
957
|
+
border: none;
|
|
958
|
+
width: 32px;
|
|
959
|
+
height: 32px;
|
|
958
960
|
align-items: center;
|
|
959
961
|
justify-content: center;
|
|
960
962
|
border-radius: 99px;
|
|
963
|
+
cursor: default;
|
|
961
964
|
opacity: 0;
|
|
962
965
|
animation: tl-fade-in;
|
|
963
966
|
animation-duration: 0.12s;
|
|
@@ -1275,6 +1278,7 @@ tldraw? probably.
|
|
|
1275
1278
|
position: relative;
|
|
1276
1279
|
background: var(--tl-color-panel);
|
|
1277
1280
|
box-shadow: var(--tl-shadow-2);
|
|
1281
|
+
contain: layout style paint;
|
|
1278
1282
|
}
|
|
1279
1283
|
|
|
1280
1284
|
.tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
|
|
@@ -730,20 +730,11 @@ exports[`putExcalidrawContent test fixtures > line-drawing.json 1`] = `
|
|
|
730
730
|
"isComplete": false,
|
|
731
731
|
"isPen": false,
|
|
732
732
|
"scale": 1,
|
|
733
|
+
"scaleX": 1,
|
|
734
|
+
"scaleY": 1,
|
|
733
735
|
"segments": [
|
|
734
736
|
{
|
|
735
|
-
"points":
|
|
736
|
-
{
|
|
737
|
-
"x": 0,
|
|
738
|
-
"y": 0,
|
|
739
|
-
"z": 0.5,
|
|
740
|
-
},
|
|
741
|
-
{
|
|
742
|
-
"x": 0.0001,
|
|
743
|
-
"y": 0.0001,
|
|
744
|
-
"z": 0.5,
|
|
745
|
-
},
|
|
746
|
-
],
|
|
737
|
+
"points": "AAAAAAA4jgaOBgA4",
|
|
747
738
|
"type": "free",
|
|
748
739
|
},
|
|
749
740
|
],
|
|
@@ -770,20 +761,11 @@ exports[`putExcalidrawContent test fixtures > line-drawing.json 1`] = `
|
|
|
770
761
|
"isComplete": false,
|
|
771
762
|
"isPen": false,
|
|
772
763
|
"scale": 1,
|
|
764
|
+
"scaleX": 1,
|
|
765
|
+
"scaleY": 1,
|
|
773
766
|
"segments": [
|
|
774
767
|
{
|
|
775
|
-
"points":
|
|
776
|
-
{
|
|
777
|
-
"x": 0,
|
|
778
|
-
"y": 0,
|
|
779
|
-
"z": 0.5,
|
|
780
|
-
},
|
|
781
|
-
{
|
|
782
|
-
"x": 0.0001,
|
|
783
|
-
"y": 0.0001,
|
|
784
|
-
"z": 0.5,
|
|
785
|
-
},
|
|
786
|
-
],
|
|
768
|
+
"points": "AAAAAAA4jgaOBgA4",
|
|
787
769
|
"type": "free",
|
|
788
770
|
},
|
|
789
771
|
],
|
|
@@ -1393,20 +1375,11 @@ exports[`putExcalidrawContent test fixtures > line-drawing.json 1`] = `
|
|
|
1393
1375
|
"isComplete": false,
|
|
1394
1376
|
"isPen": false,
|
|
1395
1377
|
"scale": 1,
|
|
1378
|
+
"scaleX": 1,
|
|
1379
|
+
"scaleY": 1,
|
|
1396
1380
|
"segments": [
|
|
1397
1381
|
{
|
|
1398
|
-
"points":
|
|
1399
|
-
{
|
|
1400
|
-
"x": 0,
|
|
1401
|
-
"y": 0,
|
|
1402
|
-
"z": 0.5,
|
|
1403
|
-
},
|
|
1404
|
-
{
|
|
1405
|
-
"x": 0.0001,
|
|
1406
|
-
"y": 0.0001,
|
|
1407
|
-
"z": 0.5,
|
|
1408
|
-
},
|
|
1409
|
-
],
|
|
1382
|
+
"points": "AAAAAAA4jgaOBgA4",
|
|
1410
1383
|
"type": "free",
|
|
1411
1384
|
},
|
|
1412
1385
|
],
|
|
@@ -1433,20 +1406,11 @@ exports[`putExcalidrawContent test fixtures > line-drawing.json 1`] = `
|
|
|
1433
1406
|
"isComplete": false,
|
|
1434
1407
|
"isPen": false,
|
|
1435
1408
|
"scale": 1,
|
|
1409
|
+
"scaleX": 1,
|
|
1410
|
+
"scaleY": 1,
|
|
1436
1411
|
"segments": [
|
|
1437
1412
|
{
|
|
1438
|
-
"points":
|
|
1439
|
-
{
|
|
1440
|
-
"x": 0,
|
|
1441
|
-
"y": 0,
|
|
1442
|
-
"z": 0.5,
|
|
1443
|
-
},
|
|
1444
|
-
{
|
|
1445
|
-
"x": 0.0001,
|
|
1446
|
-
"y": 0.0001,
|
|
1447
|
-
"z": 0.5,
|
|
1448
|
-
},
|
|
1449
|
-
],
|
|
1413
|
+
"points": "AAAAAAA4jgaOBgA4",
|
|
1450
1414
|
"type": "free",
|
|
1451
1415
|
},
|
|
1452
1416
|
],
|
|
@@ -16,7 +16,9 @@ import {
|
|
|
16
16
|
TLShapeId,
|
|
17
17
|
Vec,
|
|
18
18
|
VecLike,
|
|
19
|
+
VecModel,
|
|
19
20
|
ZERO_INDEX_KEY,
|
|
21
|
+
b64Vecs,
|
|
20
22
|
compact,
|
|
21
23
|
createBindingId,
|
|
22
24
|
createShapeId,
|
|
@@ -149,6 +151,13 @@ export async function putExcalidrawContent(
|
|
|
149
151
|
break
|
|
150
152
|
}
|
|
151
153
|
case 'freedraw': {
|
|
154
|
+
const points: VecModel[] = element.points.map(([x, y, z = 0.5]: number[]) => ({
|
|
155
|
+
x,
|
|
156
|
+
y,
|
|
157
|
+
z,
|
|
158
|
+
}))
|
|
159
|
+
const base64Points = b64Vecs.encodePoints(points)
|
|
160
|
+
|
|
152
161
|
tldrawContent.shapes.push({
|
|
153
162
|
...base,
|
|
154
163
|
type: 'draw',
|
|
@@ -160,11 +169,7 @@ export async function putExcalidrawContent(
|
|
|
160
169
|
segments: [
|
|
161
170
|
{
|
|
162
171
|
type: 'free',
|
|
163
|
-
points:
|
|
164
|
-
x,
|
|
165
|
-
y,
|
|
166
|
-
z,
|
|
167
|
-
})),
|
|
172
|
+
points: base64Points,
|
|
168
173
|
},
|
|
169
174
|
],
|
|
170
175
|
},
|
|
@@ -329,7 +334,7 @@ export async function putExcalidrawContent(
|
|
|
329
334
|
index = getIndexAbove(index)
|
|
330
335
|
}
|
|
331
336
|
|
|
332
|
-
const p = point ?? (editor.inputs.
|
|
337
|
+
const p = point ?? (editor.inputs.getShiftKey() ? editor.inputs.getCurrentPagePoint() : undefined)
|
|
333
338
|
|
|
334
339
|
editor.putContentOntoCurrentPage(tldrawContent, {
|
|
335
340
|
point: p,
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { TLDrawShapeSegment, VecModel } from '@tldraw/editor'
|
|
2
|
+
import { b64Vecs, compressLegacySegments } from '@tldraw/editor'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Helper function to convert draw shape points from VecModel[] to base64 string.
|
|
6
|
+
* This is useful for tests that create draw shapes with the legacy array format.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const segments = [{ type: 'free', points: pointsToBase64([{x: 0, y: 0, z: 0.5}]) }]
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export function pointsToBase64(points: VecModel[]): string {
|
|
16
|
+
return b64Vecs.encodePoints(points)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Helper function to convert base64 string back to VecModel[] points.
|
|
21
|
+
* This is useful for tests that need to inspect draw shape points.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* const points = base64ToPoints(shape.props.segments[0].points)
|
|
26
|
+
* expect(points[0].x).toBe(0)
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
export function base64ToPoints(base64: string): VecModel[] {
|
|
32
|
+
return b64Vecs.decodePoints(base64)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Helper function to create draw shape segments from legacy array format.
|
|
37
|
+
* This allows tests to use the old format while the shape uses the new base64 format.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* editor.createShapes([{
|
|
42
|
+
* type: 'draw',
|
|
43
|
+
* props: {
|
|
44
|
+
* segments: createDrawSegments([[{x: 0, y: 0}, {x: 10, y: 10}]])
|
|
45
|
+
* }
|
|
46
|
+
* }])
|
|
47
|
+
* ```
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
export function createDrawSegments(
|
|
51
|
+
pointArrays: VecModel[][],
|
|
52
|
+
type: 'free' | 'straight' = 'free'
|
|
53
|
+
): TLDrawShapeSegment[] {
|
|
54
|
+
return compressLegacySegments(
|
|
55
|
+
pointArrays.map((points) => ({
|
|
56
|
+
type,
|
|
57
|
+
points,
|
|
58
|
+
}))
|
|
59
|
+
)
|
|
60
|
+
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Extension,
|
|
3
3
|
Extensions,
|
|
4
|
+
extensions,
|
|
4
5
|
generateHTML,
|
|
5
6
|
generateJSON,
|
|
6
7
|
generateText,
|
|
7
8
|
JSONContent,
|
|
8
9
|
} from '@tiptap/core'
|
|
9
|
-
import Code from '@tiptap/extension-code'
|
|
10
|
-
import Highlight from '@tiptap/extension-highlight'
|
|
10
|
+
import { Code } from '@tiptap/extension-code'
|
|
11
|
+
import { Highlight } from '@tiptap/extension-highlight'
|
|
11
12
|
import { Node } from '@tiptap/pm/model'
|
|
12
|
-
import StarterKit from '@tiptap/starter-kit'
|
|
13
|
+
import { StarterKit } from '@tiptap/starter-kit'
|
|
13
14
|
import {
|
|
14
15
|
Editor,
|
|
15
16
|
getOwnProperty,
|
|
@@ -19,7 +20,6 @@ import {
|
|
|
19
20
|
WeakCache,
|
|
20
21
|
} from '@tldraw/editor'
|
|
21
22
|
import { DefaultFontFaces } from '../../shapes/shared/defaultFonts'
|
|
22
|
-
import { TextDirection } from './textDirection'
|
|
23
23
|
|
|
24
24
|
/** @public */
|
|
25
25
|
export const KeyboardShiftEnterTweakExtension = Extension.create({
|
|
@@ -56,10 +56,18 @@ export const tipTapDefaultExtensions: Extensions = [
|
|
|
56
56
|
openOnClick: false,
|
|
57
57
|
autolink: true,
|
|
58
58
|
},
|
|
59
|
+
// Prevent trailing paragraph insertion after lists (fixes #7641)
|
|
60
|
+
trailingNode: {
|
|
61
|
+
notAfter: ['paragraph', 'bulletList', 'orderedList', 'listItem'],
|
|
62
|
+
},
|
|
59
63
|
}),
|
|
60
64
|
Highlight,
|
|
61
65
|
KeyboardShiftEnterTweakExtension,
|
|
62
|
-
|
|
66
|
+
|
|
67
|
+
// N.B. We disable the text direction core extension in RichTextArea,
|
|
68
|
+
// but we add it back in again here in our own extensions list so that
|
|
69
|
+
// people can omit/override it if they want to.
|
|
70
|
+
extensions.TextDirection.configure({ direction: 'auto' }),
|
|
63
71
|
]
|
|
64
72
|
|
|
65
73
|
// todo: bust this if the editor changes, too
|
|
@@ -88,7 +96,6 @@ export function renderHtmlFromRichText(editor: Editor, richText: TLRichText) {
|
|
|
88
96
|
* @param editor - The editor instance.
|
|
89
97
|
* @param richText - The rich text content.
|
|
90
98
|
*
|
|
91
|
-
*
|
|
92
99
|
* @public
|
|
93
100
|
*/
|
|
94
101
|
export function renderHtmlFromRichTextForMeasurement(editor: Editor, richText: TLRichText) {
|
|
@@ -111,7 +118,6 @@ export function isEmptyRichText(richText: TLRichText) {
|
|
|
111
118
|
* @param editor - The editor instance.
|
|
112
119
|
* @param richText - The rich text content.
|
|
113
120
|
*
|
|
114
|
-
*
|
|
115
121
|
* @public
|
|
116
122
|
*/
|
|
117
123
|
export function renderPlaintextFromRichText(editor: Editor, richText: TLRichText) {
|
|
@@ -131,7 +137,6 @@ export function renderPlaintextFromRichText(editor: Editor, richText: TLRichText
|
|
|
131
137
|
* @param editor - The editor instance.
|
|
132
138
|
* @param richText - The rich text content.
|
|
133
139
|
*
|
|
134
|
-
*
|
|
135
140
|
* @public
|
|
136
141
|
*/
|
|
137
142
|
export function renderRichTextFromHTML(editor: Editor, html: string): TLRichText {
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
TLShapeId,
|
|
18
18
|
Vec,
|
|
19
19
|
VecModel,
|
|
20
|
+
b64Vecs,
|
|
20
21
|
clamp,
|
|
21
22
|
createShapeId,
|
|
22
23
|
fetch,
|
|
@@ -370,6 +371,9 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
370
371
|
break
|
|
371
372
|
}
|
|
372
373
|
|
|
374
|
+
const points = v1Shape.points.map(getV2Point)
|
|
375
|
+
const base64Points = b64Vecs.encodePoints(points)
|
|
376
|
+
|
|
373
377
|
editor.createShapes([
|
|
374
378
|
{
|
|
375
379
|
...inCommon,
|
|
@@ -381,7 +385,10 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
381
385
|
dash: getV2Dash(v1Shape.style.dash),
|
|
382
386
|
isPen: false,
|
|
383
387
|
isComplete: v1Shape.isComplete,
|
|
384
|
-
segments: [{ type: 'free', points:
|
|
388
|
+
segments: [{ type: 'free', points: base64Points }],
|
|
389
|
+
scale: 1,
|
|
390
|
+
scaleX: 1,
|
|
391
|
+
scaleY: 1,
|
|
385
392
|
},
|
|
386
393
|
},
|
|
387
394
|
])
|
|
@@ -518,7 +525,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
518
525
|
const util = editor.getShapeUtil<TLArrowShape>('arrow')
|
|
519
526
|
|
|
520
527
|
// dumb but necessary
|
|
521
|
-
editor.inputs.
|
|
528
|
+
editor.inputs.setCtrlKey(false)
|
|
522
529
|
|
|
523
530
|
for (const handleId of ['start', 'end'] as const) {
|
|
524
531
|
const bindingId = v1Shape.handles[handleId].bindingId
|
package/src/test/Editor.test.tsx
CHANGED
|
@@ -143,17 +143,17 @@ describe('shapes that are moved to another page', () => {
|
|
|
143
143
|
it('Begins dragging from pointer move', () => {
|
|
144
144
|
editor.pointerDown(0, 0)
|
|
145
145
|
editor.pointerMove(2, 2)
|
|
146
|
-
expect(editor.inputs.
|
|
146
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
147
147
|
editor.pointerMove(10, 10)
|
|
148
|
-
expect(editor.inputs.
|
|
148
|
+
expect(editor.inputs.getIsDragging()).toBe(true)
|
|
149
149
|
})
|
|
150
150
|
|
|
151
151
|
it('Begins dragging from wheel', () => {
|
|
152
152
|
editor.pointerDown(0, 0)
|
|
153
153
|
editor.wheel(2, 2)
|
|
154
|
-
expect(editor.inputs.
|
|
154
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
155
155
|
editor.wheel(10, 10)
|
|
156
|
-
expect(editor.inputs.
|
|
156
|
+
expect(editor.inputs.getIsDragging()).toBe(true)
|
|
157
157
|
})
|
|
158
158
|
|
|
159
159
|
it('Does not create an undo stack item when first clicking on an empty canvas', () => {
|
|
@@ -266,36 +266,47 @@ describe('Editor.TickManager', () => {
|
|
|
266
266
|
// usually this is called by the app's tick manager, using the elapsed time
|
|
267
267
|
// between two animation frames, but we're calling it directly here.
|
|
268
268
|
const tick = (ms: number) => {
|
|
269
|
-
|
|
270
|
-
editor._tickManager.updatePointerVelocity(ms)
|
|
269
|
+
editor.inputs.updatePointerVelocity(ms)
|
|
271
270
|
}
|
|
272
271
|
|
|
273
272
|
// 1. pointer velocity should be 0 when there is no movement
|
|
274
|
-
expect(editor.inputs.
|
|
273
|
+
expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({ x: 0, y: 0 })
|
|
275
274
|
|
|
276
275
|
editor.pointerMove(10, 10)
|
|
277
276
|
|
|
278
277
|
// 2. moving is not enough, we also need to wait a frame before the velocity is updated
|
|
279
|
-
expect(editor.inputs.
|
|
278
|
+
expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({ x: 0, y: 0 })
|
|
280
279
|
|
|
281
280
|
// 3. once time passes, the pointer velocity should be updated
|
|
282
281
|
tick(16)
|
|
283
|
-
expect(editor.inputs.
|
|
282
|
+
expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({
|
|
283
|
+
x: 0.3125,
|
|
284
|
+
y: 0.3125,
|
|
285
|
+
})
|
|
284
286
|
|
|
285
287
|
// 4. let's do it again, it should be updated again. move, tick, measure
|
|
286
288
|
editor.pointerMove(20, 20)
|
|
287
289
|
tick(16)
|
|
288
|
-
expect(editor.inputs.
|
|
290
|
+
expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({
|
|
291
|
+
x: 0.46875,
|
|
292
|
+
y: 0.46875,
|
|
293
|
+
})
|
|
289
294
|
|
|
290
295
|
// 5. if we tick again without movement, the velocity should decay
|
|
291
296
|
tick(16)
|
|
292
297
|
|
|
293
|
-
expect(editor.inputs.
|
|
298
|
+
expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({
|
|
299
|
+
x: 0.23437,
|
|
300
|
+
y: 0.23437,
|
|
301
|
+
})
|
|
294
302
|
|
|
295
303
|
// 6. if updatePointerVelocity is (for whatever reason) called with an elapsed time of zero milliseconds, it should be ignored
|
|
296
304
|
tick(0)
|
|
297
305
|
|
|
298
|
-
expect(editor.inputs.
|
|
306
|
+
expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({
|
|
307
|
+
x: 0.23437,
|
|
308
|
+
y: 0.23437,
|
|
309
|
+
})
|
|
299
310
|
})
|
|
300
311
|
})
|
|
301
312
|
|
|
@@ -677,9 +688,9 @@ describe('middle-click panning', () => {
|
|
|
677
688
|
button: 1,
|
|
678
689
|
})
|
|
679
690
|
editor.pointerMove(100, 100)
|
|
680
|
-
expect(editor.inputs.
|
|
691
|
+
expect(editor.inputs.getIsPanning()).toBe(true)
|
|
681
692
|
editor.pointerUp(100, 100)
|
|
682
|
-
expect(editor.inputs.
|
|
693
|
+
expect(editor.inputs.getIsPanning()).toBe(false)
|
|
683
694
|
})
|
|
684
695
|
|
|
685
696
|
it('does not clear thee isPanning state if the space bar is down', () => {
|
|
@@ -688,51 +699,51 @@ describe('middle-click panning', () => {
|
|
|
688
699
|
button: 1,
|
|
689
700
|
})
|
|
690
701
|
editor.pointerMove(100, 100)
|
|
691
|
-
expect(editor.inputs.
|
|
702
|
+
expect(editor.inputs.getIsPanning()).toBe(true)
|
|
692
703
|
editor.keyDown(' ')
|
|
693
704
|
editor.pointerUp(100, 100, {
|
|
694
705
|
button: 1,
|
|
695
706
|
})
|
|
696
|
-
expect(editor.inputs.
|
|
707
|
+
expect(editor.inputs.getIsPanning()).toBe(true)
|
|
697
708
|
|
|
698
709
|
editor.keyUp(' ')
|
|
699
|
-
expect(editor.inputs.
|
|
710
|
+
expect(editor.inputs.getIsPanning()).toBe(false)
|
|
700
711
|
})
|
|
701
712
|
})
|
|
702
713
|
|
|
703
714
|
describe('dragging', () => {
|
|
704
715
|
it('drags correctly at 100% zoom', () => {
|
|
705
|
-
expect(editor.inputs.
|
|
716
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
706
717
|
editor.pointerMove(0, 0).pointerDown()
|
|
707
|
-
expect(editor.inputs.
|
|
718
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
708
719
|
editor.pointerMove(0, 1)
|
|
709
|
-
expect(editor.inputs.
|
|
720
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
710
721
|
editor.pointerMove(0, 5)
|
|
711
|
-
expect(editor.inputs.
|
|
722
|
+
expect(editor.inputs.getIsDragging()).toBe(true)
|
|
712
723
|
})
|
|
713
724
|
|
|
714
725
|
it('drags correctly at 150% zoom', () => {
|
|
715
726
|
editor.setCamera({ x: 0, y: 0, z: 8 }).forceTick()
|
|
716
727
|
|
|
717
|
-
expect(editor.inputs.
|
|
728
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
718
729
|
editor.pointerMove(0, 0).pointerDown()
|
|
719
|
-
expect(editor.inputs.
|
|
730
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
720
731
|
editor.pointerMove(0, 2)
|
|
721
|
-
expect(editor.inputs.
|
|
732
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
722
733
|
editor.pointerMove(0, 5)
|
|
723
|
-
expect(editor.inputs.
|
|
734
|
+
expect(editor.inputs.getIsDragging()).toBe(true)
|
|
724
735
|
})
|
|
725
736
|
|
|
726
737
|
it('drags correctly at 50% zoom', () => {
|
|
727
738
|
editor.setCamera({ x: 0, y: 0, z: 0.1 }).forceTick()
|
|
728
739
|
|
|
729
|
-
expect(editor.inputs.
|
|
740
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
730
741
|
editor.pointerMove(0, 0).pointerDown()
|
|
731
|
-
expect(editor.inputs.
|
|
742
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
732
743
|
editor.pointerMove(0, 2)
|
|
733
|
-
expect(editor.inputs.
|
|
744
|
+
expect(editor.inputs.getIsDragging()).toBe(false)
|
|
734
745
|
editor.pointerMove(0, 5)
|
|
735
|
-
expect(editor.inputs.
|
|
746
|
+
expect(editor.inputs.getIsDragging()).toBe(true)
|
|
736
747
|
})
|
|
737
748
|
})
|
|
738
749
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createShapeId } from '@tldraw/editor'
|
|
2
2
|
import { vi } from 'vitest'
|
|
3
|
+
import { createDrawSegments } from './test-jsx'
|
|
3
4
|
import { TestEditor } from './TestEditor'
|
|
4
5
|
|
|
5
6
|
let editor: TestEditor
|
|
@@ -72,18 +73,15 @@ beforeEach(() => {
|
|
|
72
73
|
x: 0,
|
|
73
74
|
y: 300,
|
|
74
75
|
props: {
|
|
75
|
-
segments: [
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
],
|
|
85
|
-
},
|
|
86
|
-
],
|
|
76
|
+
segments: createDrawSegments([
|
|
77
|
+
[
|
|
78
|
+
{ x: 0, y: 0 },
|
|
79
|
+
{ x: 2, y: 50 },
|
|
80
|
+
{ x: 10, y: 100 },
|
|
81
|
+
{ x: 48, y: 100 },
|
|
82
|
+
{ x: 100, y: 100 },
|
|
83
|
+
],
|
|
84
|
+
]),
|
|
87
85
|
},
|
|
88
86
|
},
|
|
89
87
|
])
|