tldraw 4.2.2 → 4.2.3
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 +242 -311
- package/dist-cjs/index.js +5 -13
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/bindings/arrow/ArrowBindingUtil.js.map +2 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +4 -7
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +2 -2
- 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 +1 -6
- package/dist-cjs/lib/defaultSideEffects.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +13 -14
- 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/elbowArrowSnapLines.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/shared.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js +10 -4
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +4 -7
- 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/bookmark/bookmarks.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +22 -24
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/getPath.js +11 -20
- package/dist-cjs/lib/shapes/draw/getPath.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +86 -82
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +3 -3
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +0 -6
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/frame/FrameShapeTool.js.map +1 -1
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +5 -6
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +142 -146
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js +10 -5
- 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 +21 -23
- 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 +11 -6
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/note/noteHelpers.js.map +2 -2
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js +10 -5
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +2 -3
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +2 -14
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js +4 -12
- 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/crop.js +0 -1
- package/dist-cjs/lib/shapes/shared/crop.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/useEditablePlainText.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/useEditableRichText.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/{useEfficientZoomThreshold.js → useForceSolid.js} +7 -10
- package/dist-cjs/lib/shapes/shared/useForceSolid.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 +0 -5
- package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -5
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js +10 -4
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +5 -7
- 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 +5 -4
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +4 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/HandTool.js +5 -3
- package/dist-cjs/lib/tools/HandTool/HandTool.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js +2 -3
- 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 +11 -10
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +5 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js +6 -4
- 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 +1 -2
- 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 +6 -8
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js +11 -38
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +50 -42
- 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 +14 -4
- 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 +13 -4
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +6 -5
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +3 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js +6 -7
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +11 -13
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/selectHelpers.js +4 -15
- 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 +6 -5
- package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js +3 -1
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js.map +2 -2
- package/dist-cjs/lib/{utils/test-helpers.js → tools/selection-logic/getShouldEnterCropModeOnPointerDown.js} +8 -21
- package/dist-cjs/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.js.map +7 -0
- 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 +9 -3
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js +3 -1
- 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 +21 -1
- package/dist-cjs/lib/ui/components/DefaultDebugPanel.js.map +2 -2
- package/dist-cjs/lib/ui/components/EditLinkDialog.js +1 -11
- package/dist-cjs/lib/ui/components/EditLinkDialog.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 +15 -2
- package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js.map +3 -3
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js +1 -3
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js +0 -6
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.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/TopPanel/DefaultTopPanel.js +32 -0
- package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js.map +7 -0
- package/dist-cjs/lib/ui/components/menu-items.js +1 -3
- package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -3
- 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 +93 -149
- 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 -1
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
- package/dist-cjs/lib/ui/context/actions.js +8 -7
- package/dist-cjs/lib/ui/context/actions.js.map +2 -2
- package/dist-cjs/lib/ui/context/components.js +2 -1
- package/dist-cjs/lib/ui/context/components.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/menu-hooks.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/useFlatten.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 +5 -4
- 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 +6 -16
- package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +2 -2
- package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
- package/dist-cjs/lib/utils/frames/frames.js.map +2 -2
- package/dist-cjs/lib/utils/text/richText.js +2 -4
- package/dist-cjs/lib/utils/text/richText.js.map +2 -2
- package/dist-cjs/lib/utils/text/textDirection.js +51 -0
- package/dist-cjs/lib/utils/text/textDirection.js.map +7 -0
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +2 -7
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +2 -2
- package/dist-esm/index.d.mts +242 -311
- package/dist-esm/index.mjs +5 -14
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/bindings/arrow/ArrowBindingUtil.mjs.map +2 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +4 -8
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +2 -2
- 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 +1 -6
- 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/elbowArrowSnapLines.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/shared.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs +10 -4
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +4 -7
- 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/bookmark/bookmarks.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +24 -29
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/getPath.mjs +11 -21
- package/dist-esm/lib/shapes/draw/getPath.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +86 -83
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +3 -3
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +0 -6
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/frame/FrameShapeTool.mjs.map +1 -1
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +5 -6
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +142 -147
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs +10 -5
- 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 +22 -24
- 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 +12 -7
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/noteHelpers.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs +10 -5
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +3 -4
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +2 -14
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +4 -12
- 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/crop.mjs +0 -1
- package/dist-esm/lib/shapes/shared/crop.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/useEditablePlainText.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/useEditableRichText.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/useForceSolid.mjs +9 -0
- package/dist-esm/lib/shapes/shared/useForceSolid.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 +0 -5
- package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +2 -5
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs +10 -4
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +5 -7
- 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 +5 -4
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +8 -3
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/HandTool.mjs +5 -3
- package/dist-esm/lib/tools/HandTool/HandTool.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs +2 -3
- 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 +11 -10
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +5 -6
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs +6 -4
- 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 +1 -2
- 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 +6 -8
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs +11 -38
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +51 -43
- 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 +19 -6
- 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 +13 -4
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +6 -5
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +3 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs +6 -7
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +11 -13
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs +4 -17
- 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 +6 -5
- package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs +3 -1
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs +8 -0
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs.map +7 -0
- 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 +8 -2
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs +3 -1
- 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 +30 -3
- package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs.map +2 -2
- package/dist-esm/lib/ui/components/EditLinkDialog.mjs +1 -11
- package/dist-esm/lib/ui/components/EditLinkDialog.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 +6 -3
- package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs.map +2 -2
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs +1 -3
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs +0 -6
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.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/TopPanel/DefaultTopPanel.mjs +12 -0
- package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs.map +7 -0
- package/dist-esm/lib/ui/components/menu-items.mjs +5 -4
- package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -3
- 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 +95 -157
- 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 +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
- package/dist-esm/lib/ui/context/actions.mjs +8 -7
- package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
- package/dist-esm/lib/ui/context/components.mjs +2 -1
- package/dist-esm/lib/ui/context/components.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/menu-hooks.mjs +4 -1
- package/dist-esm/lib/ui/hooks/menu-hooks.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/useFlatten.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 +5 -4
- 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 +6 -17
- package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +2 -2
- package/dist-esm/lib/utils/export/exportAs.mjs +3 -1
- package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
- package/dist-esm/lib/utils/frames/frames.mjs.map +2 -2
- package/dist-esm/lib/utils/text/richText.mjs +2 -5
- package/dist-esm/lib/utils/text/richText.mjs.map +2 -2
- package/dist-esm/lib/utils/text/textDirection.mjs +31 -0
- package/dist-esm/lib/utils/text/textDirection.mjs.map +7 -0
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +2 -8
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +2 -2
- package/package.json +16 -18
- package/src/index.ts +2 -6
- package/src/lib/Tldraw.test.tsx +1 -46
- package/src/lib/bindings/arrow/ArrowBindingUtil.ts +1 -1
- package/src/lib/canvas/TldrawSelectionForeground.tsx +9 -20
- package/src/lib/defaultEmbedDefinitions.ts +0 -1
- package/src/lib/defaultExternalContentHandlers.ts +14 -13
- package/src/lib/defaultSideEffects.ts +1 -6
- package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +133 -40
- package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +8 -8
- package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +2 -2
- package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +16 -16
- package/src/lib/shapes/arrow/arrow-types.ts +0 -2
- package/src/lib/shapes/arrow/arrowLabel.ts +2 -2
- package/src/lib/shapes/arrow/arrowTargetState.ts +2 -2
- package/src/lib/shapes/arrow/elbow/elbowArrowSnapLines.tsx +3 -3
- package/src/lib/shapes/arrow/shared.ts +4 -4
- package/src/lib/shapes/arrow/toolStates/Idle.tsx +14 -4
- package/src/lib/shapes/arrow/toolStates/Pointing.tsx +5 -8
- package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +1 -1
- package/src/lib/shapes/bookmark/bookmarks.ts +3 -3
- package/src/lib/shapes/draw/DrawShapeUtil.tsx +26 -30
- package/src/lib/shapes/draw/getPath.ts +10 -31
- package/src/lib/shapes/draw/toolStates/Drawing.ts +90 -100
- package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -8
- package/src/lib/shapes/frame/FrameShapeTool.ts +1 -1
- package/src/lib/shapes/frame/FrameShapeUtil.tsx +4 -10
- package/src/lib/shapes/geo/GeoShapeUtil.test.tsx +2 -10
- package/src/lib/shapes/geo/GeoShapeUtil.tsx +176 -228
- package/src/lib/shapes/geo/toolStates/Idle.ts +15 -5
- package/src/lib/shapes/geo/toolStates/Pointing.ts +6 -6
- package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +24 -25
- package/src/lib/shapes/line/LineShapeTool.test.ts +6 -6
- package/src/lib/shapes/line/LineShapeUtil.test.tsx +5 -5
- package/src/lib/shapes/line/toolStates/Pointing.ts +4 -4
- package/src/lib/shapes/note/NoteShapeTool.test.ts +1 -2
- package/src/lib/shapes/note/NoteShapeUtil.tsx +10 -9
- package/src/lib/shapes/note/noteCloning.test.ts +1 -3
- package/src/lib/shapes/note/noteHelpers.ts +2 -2
- package/src/lib/shapes/note/toolStates/Pointing.ts +10 -5
- package/src/lib/shapes/shared/HyperlinkButton.tsx +3 -4
- package/src/lib/shapes/shared/PlainTextLabel.tsx +2 -12
- package/src/lib/shapes/shared/RichTextLabel.tsx +4 -14
- package/src/lib/shapes/shared/ShapeFill.tsx +2 -2
- package/src/lib/shapes/shared/crop.ts +0 -1
- package/src/lib/shapes/shared/interpolate-props.ts +4 -4
- package/src/lib/shapes/shared/useEditablePlainText.ts +3 -7
- package/src/lib/shapes/shared/useEditableRichText.ts +3 -7
- package/src/lib/shapes/shared/useForceSolid.ts +6 -0
- package/src/lib/shapes/shared/useImageOrVideoAsset.ts +1 -1
- package/src/lib/shapes/text/RichTextArea.tsx +0 -5
- package/src/lib/shapes/text/TextShapeTool.test.ts +4 -4
- package/src/lib/shapes/text/TextShapeUtil.tsx +0 -5
- package/src/lib/shapes/text/toolStates/Idle.ts +14 -4
- package/src/lib/shapes/text/toolStates/Pointing.ts +8 -8
- package/src/lib/shapes/video/VideoShapeUtil.tsx +1 -2
- package/src/lib/tools/EraserTool/childStates/Erasing.ts +10 -7
- package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -5
- package/src/lib/tools/HandTool/HandTool.ts +5 -3
- package/src/lib/tools/HandTool/childStates/Dragging.ts +2 -3
- 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 +11 -14
- package/src/lib/tools/SelectTool/childStates/Brushing.ts +11 -8
- package/src/lib/tools/SelectTool/childStates/Crop/children/Cropping.ts +6 -7
- package/src/lib/tools/SelectTool/childStates/Crop/children/Idle.ts +4 -3
- 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 +1 -2
- package/src/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +12 -11
- package/src/lib/tools/SelectTool/childStates/EditingShape.ts +16 -57
- package/src/lib/tools/SelectTool/childStates/Idle.ts +81 -64
- package/src/lib/tools/SelectTool/childStates/PointingArrowLabel.ts +8 -7
- package/src/lib/tools/SelectTool/childStates/PointingCanvas.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingHandle.ts +17 -9
- 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 +4 -4
- package/src/lib/tools/SelectTool/childStates/PointingShape.ts +14 -4
- package/src/lib/tools/SelectTool/childStates/Resizing.ts +10 -8
- package/src/lib/tools/SelectTool/childStates/Rotating.ts +3 -2
- package/src/lib/tools/SelectTool/childStates/ScribbleBrushing.ts +10 -9
- package/src/lib/tools/SelectTool/childStates/Translating.ts +15 -16
- package/src/lib/tools/SelectTool/selectHelpers.ts +4 -39
- 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 +6 -5
- package/src/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.ts +3 -1
- package/src/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.ts +10 -0
- 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 +2 -5
- package/src/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.tsx +9 -1
- package/src/lib/ui/components/ContextMenu/DefaultContextMenu.tsx +3 -1
- package/src/lib/ui/components/CursorChatBubble.tsx +2 -2
- package/src/lib/ui/components/DefaultDebugPanel.tsx +42 -3
- package/src/lib/ui/components/EditLinkDialog.tsx +6 -16
- 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 +5 -6
- package/src/lib/ui/components/PageMenu/PageItemInput.tsx +1 -3
- package/src/lib/ui/components/SharePanel/PeopleMenu.tsx +0 -8
- package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +2 -2
- 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/TopPanel/DefaultTopPanel.tsx +10 -0
- package/src/lib/ui/components/menu-items.tsx +15 -9
- package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +3 -5
- package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +2 -2
- package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +113 -208
- 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 +2 -2
- package/src/lib/ui/context/actions.tsx +19 -15
- package/src/lib/ui/context/components.tsx +2 -1
- package/src/lib/ui/hooks/menu-hooks.ts +19 -9
- package/src/lib/ui/hooks/useClipboardEvents.ts +2 -2
- package/src/lib/ui/hooks/useFlatten.ts +2 -1
- package/src/lib/ui/hooks/useKeyboardShortcuts.ts +2 -2
- package/src/lib/ui/hooks/useTools.tsx +7 -5
- package/src/lib/ui/version.ts +3 -3
- package/src/lib/ui.css +29 -31
- package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +48 -12
- package/src/lib/utils/excalidraw/putExcalidrawContent.ts +6 -19
- package/src/lib/utils/export/exportAs.ts +9 -2
- package/src/lib/utils/frames/frames.ts +1 -1
- package/src/lib/utils/text/richText.ts +5 -6
- package/src/lib/utils/text/textDirection.ts +32 -0
- package/src/lib/utils/tldr/buildFromV1Document.ts +19 -21
- package/src/test/Editor.test.tsx +41 -78
- package/src/test/EraserTool.test.ts +12 -10
- package/src/test/SelectTool.test.ts +19 -11
- package/src/test/TestEditor.ts +51 -49
- package/src/test/TldrawEditor.test.tsx +20 -24
- package/src/test/__snapshots__/drawing.test.ts.snap +1257 -3
- package/src/test/__snapshots__/resizing.test.ts.snap +12 -3
- package/src/test/arrows-megabus.test.tsx +1 -1
- package/src/test/bindings.test.tsx +25 -29
- package/src/test/bindingsIndex.test.tsx +4 -4
- package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +10 -10
- package/src/test/commands/createShapes.test.ts +1 -15
- package/src/test/commands/getSvgString.test.ts +2 -2
- package/src/test/commands/putContent.test.ts +1 -80
- package/src/test/commands/setCamera.test.ts +11 -13
- package/src/test/commands/stackShapes.test.ts +8 -34
- package/src/test/commands/updateShapes.test.ts +5 -21
- package/src/test/commands/zoomToBounds.test.ts +3 -19
- package/src/test/commands/zoomToSelection.test.ts +3 -14
- package/src/test/custom-clipping.test.ts +44 -52
- package/src/test/customSnapping.test.tsx +62 -77
- package/src/test/drawing.test.ts +10 -17
- package/src/test/duplicate.test.ts +1 -1
- package/src/test/flipShapes.test.ts +0 -33
- package/src/test/frames.test.ts +2 -94
- package/src/test/getCulledShapes.test.tsx +3 -11
- package/src/test/getShapeAtPoint.test.ts +2 -2
- package/src/test/groups.test.tsx +4 -7
- package/src/test/modifiers.test.ts +6 -6
- package/src/test/resizing.test.ts +22 -16
- package/src/test/selection-omnibus.test.ts +13 -13
- package/src/test/shapeutils.test.ts +1 -1
- package/src/test/spacebarPanning.test.ts +10 -28
- package/src/test/styles2.test.tsx +1 -1
- package/src/test/styles3.test.ts +5 -5
- package/src/test/test-jsx.tsx +57 -72
- package/src/test/text.test.ts +17 -15
- package/src/test/translating.test.ts +8 -6
- package/tldraw.css +41 -45
- package/dist-cjs/lib/shapes/shared/useEfficientZoomThreshold.js.map +0 -7
- package/dist-cjs/lib/utils/test-helpers.js.map +0 -7
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs +0 -12
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs.map +0 -7
- package/dist-esm/lib/utils/test-helpers.mjs +0 -21
- package/dist-esm/lib/utils/test-helpers.mjs.map +0 -7
- package/src/lib/shapes/draw/DrawShapeUtil.test.ts +0 -146
- package/src/lib/shapes/highlight/HighlightShapeUtil.test.ts +0 -146
- package/src/lib/shapes/shared/useEfficientZoomThreshold.ts +0 -10
- package/src/lib/utils/test-helpers.ts +0 -60
- package/src/test/commands/cameraState.test.ts +0 -299
- package/src/test/commands/createShape.test.ts +0 -64
- package/src/test/commands/isShapeOfType.test.ts +0 -44
- package/src/test/commands/updateShape.test.ts +0 -67
|
@@ -22,7 +22,7 @@ export function removeFrame(editor: Editor, ids: TLShapeId[]) {
|
|
|
22
22
|
const frames = compact(
|
|
23
23
|
ids
|
|
24
24
|
.map((id) => editor.getShape<TLFrameShape>(id))
|
|
25
|
-
.filter((f) => f && editor.isShapeOfType(f, 'frame'))
|
|
25
|
+
.filter((f) => f && editor.isShapeOfType<TLFrameShape>(f, 'frame'))
|
|
26
26
|
)
|
|
27
27
|
if (!frames.length) return
|
|
28
28
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Extension,
|
|
3
3
|
Extensions,
|
|
4
|
-
extensions,
|
|
5
4
|
generateHTML,
|
|
6
5
|
generateJSON,
|
|
7
6
|
generateText,
|
|
@@ -20,6 +19,7 @@ import {
|
|
|
20
19
|
WeakCache,
|
|
21
20
|
} from '@tldraw/editor'
|
|
22
21
|
import { DefaultFontFaces } from '../../shapes/shared/defaultFonts'
|
|
22
|
+
import { TextDirection } from './textDirection'
|
|
23
23
|
|
|
24
24
|
/** @public */
|
|
25
25
|
export const KeyboardShiftEnterTweakExtension = Extension.create({
|
|
@@ -59,11 +59,7 @@ export const tipTapDefaultExtensions: Extensions = [
|
|
|
59
59
|
}),
|
|
60
60
|
Highlight,
|
|
61
61
|
KeyboardShiftEnterTweakExtension,
|
|
62
|
-
|
|
63
|
-
// N.B. We disable the text direction core extension in RichTextArea,
|
|
64
|
-
// but we add it back in again here in our own extensions list so that
|
|
65
|
-
// people can omit/override it if they want to.
|
|
66
|
-
extensions.TextDirection.configure({ direction: 'auto' }),
|
|
62
|
+
TextDirection,
|
|
67
63
|
]
|
|
68
64
|
|
|
69
65
|
// todo: bust this if the editor changes, too
|
|
@@ -92,6 +88,7 @@ export function renderHtmlFromRichText(editor: Editor, richText: TLRichText) {
|
|
|
92
88
|
* @param editor - The editor instance.
|
|
93
89
|
* @param richText - The rich text content.
|
|
94
90
|
*
|
|
91
|
+
*
|
|
95
92
|
* @public
|
|
96
93
|
*/
|
|
97
94
|
export function renderHtmlFromRichTextForMeasurement(editor: Editor, richText: TLRichText) {
|
|
@@ -114,6 +111,7 @@ export function isEmptyRichText(richText: TLRichText) {
|
|
|
114
111
|
* @param editor - The editor instance.
|
|
115
112
|
* @param richText - The rich text content.
|
|
116
113
|
*
|
|
114
|
+
*
|
|
117
115
|
* @public
|
|
118
116
|
*/
|
|
119
117
|
export function renderPlaintextFromRichText(editor: Editor, richText: TLRichText) {
|
|
@@ -133,6 +131,7 @@ export function renderPlaintextFromRichText(editor: Editor, richText: TLRichText
|
|
|
133
131
|
* @param editor - The editor instance.
|
|
134
132
|
* @param richText - The rich text content.
|
|
135
133
|
*
|
|
134
|
+
*
|
|
136
135
|
* @public
|
|
137
136
|
*/
|
|
138
137
|
export function renderRichTextFromHTML(editor: Editor, html: string): TLRichText {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Extension } from '@tiptap/core'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export const TextDirection = Extension.create({
|
|
7
|
+
name: 'textDirection',
|
|
8
|
+
|
|
9
|
+
addGlobalAttributes() {
|
|
10
|
+
return [
|
|
11
|
+
{
|
|
12
|
+
types: ['heading', 'paragraph'],
|
|
13
|
+
attributes: {
|
|
14
|
+
dir: {
|
|
15
|
+
default: 'auto',
|
|
16
|
+
parseHTML: (element) => {
|
|
17
|
+
const dirAttribute = element.getAttribute('dir')
|
|
18
|
+
if (dirAttribute && ['ltr', 'rtl', 'auto'].includes(dirAttribute)) {
|
|
19
|
+
return dirAttribute
|
|
20
|
+
} else {
|
|
21
|
+
return 'auto'
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
renderHTML: (attributes) => {
|
|
25
|
+
return { dir: attributes.dir }
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
})
|
|
@@ -12,12 +12,16 @@ import {
|
|
|
12
12
|
TLDefaultHorizontalAlignStyle,
|
|
13
13
|
TLDefaultSizeStyle,
|
|
14
14
|
TLDefaultTextAlignStyle,
|
|
15
|
+
TLDrawShape,
|
|
15
16
|
TLGeoShape,
|
|
17
|
+
TLImageShape,
|
|
18
|
+
TLNoteShape,
|
|
16
19
|
TLPageId,
|
|
17
20
|
TLShapeId,
|
|
21
|
+
TLTextShape,
|
|
22
|
+
TLVideoShape,
|
|
18
23
|
Vec,
|
|
19
24
|
VecModel,
|
|
20
|
-
b64Vecs,
|
|
21
25
|
clamp,
|
|
22
26
|
createShapeId,
|
|
23
27
|
fetch,
|
|
@@ -183,7 +187,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
183
187
|
|
|
184
188
|
switch (v1Shape.type) {
|
|
185
189
|
case TLV1ShapeType.Sticky: {
|
|
186
|
-
editor.createShapes([
|
|
190
|
+
editor.createShapes<TLNoteShape>([
|
|
187
191
|
{
|
|
188
192
|
...inCommon,
|
|
189
193
|
type: 'note',
|
|
@@ -199,7 +203,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
199
203
|
break
|
|
200
204
|
}
|
|
201
205
|
case TLV1ShapeType.Rectangle: {
|
|
202
|
-
editor.createShapes([
|
|
206
|
+
editor.createShapes<TLGeoShape>([
|
|
203
207
|
{
|
|
204
208
|
...inCommon,
|
|
205
209
|
type: 'geo',
|
|
@@ -221,7 +225,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
221
225
|
|
|
222
226
|
const pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id)!
|
|
223
227
|
|
|
224
|
-
editor.updateShapes([
|
|
228
|
+
editor.updateShapes<TLGeoShape>([
|
|
225
229
|
{
|
|
226
230
|
id: inCommon.id,
|
|
227
231
|
type: 'geo',
|
|
@@ -255,7 +259,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
255
259
|
break
|
|
256
260
|
}
|
|
257
261
|
case TLV1ShapeType.Triangle: {
|
|
258
|
-
editor.createShapes([
|
|
262
|
+
editor.createShapes<TLGeoShape>([
|
|
259
263
|
{
|
|
260
264
|
...inCommon,
|
|
261
265
|
type: 'geo',
|
|
@@ -276,7 +280,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
276
280
|
|
|
277
281
|
const pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id)!
|
|
278
282
|
|
|
279
|
-
editor.updateShapes([
|
|
283
|
+
editor.updateShapes<TLGeoShape>([
|
|
280
284
|
{
|
|
281
285
|
id: inCommon.id,
|
|
282
286
|
type: 'geo',
|
|
@@ -310,7 +314,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
310
314
|
break
|
|
311
315
|
}
|
|
312
316
|
case TLV1ShapeType.Ellipse: {
|
|
313
|
-
editor.createShapes([
|
|
317
|
+
editor.createShapes<TLGeoShape>([
|
|
314
318
|
{
|
|
315
319
|
...inCommon,
|
|
316
320
|
type: 'geo',
|
|
@@ -331,7 +335,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
331
335
|
|
|
332
336
|
const pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id)!
|
|
333
337
|
|
|
334
|
-
editor.updateShapes([
|
|
338
|
+
editor.updateShapes<TLGeoShape>([
|
|
335
339
|
{
|
|
336
340
|
id: inCommon.id,
|
|
337
341
|
type: 'geo',
|
|
@@ -371,10 +375,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
371
375
|
break
|
|
372
376
|
}
|
|
373
377
|
|
|
374
|
-
|
|
375
|
-
const base64Points = b64Vecs.encodePoints(points)
|
|
376
|
-
|
|
377
|
-
editor.createShapes([
|
|
378
|
+
editor.createShapes<TLDrawShape>([
|
|
378
379
|
{
|
|
379
380
|
...inCommon,
|
|
380
381
|
type: 'draw',
|
|
@@ -385,10 +386,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
385
386
|
dash: getV2Dash(v1Shape.style.dash),
|
|
386
387
|
isPen: false,
|
|
387
388
|
isComplete: v1Shape.isComplete,
|
|
388
|
-
segments: [{ type: 'free', points:
|
|
389
|
-
scale: 1,
|
|
390
|
-
scaleX: 1,
|
|
391
|
-
scaleY: 1,
|
|
389
|
+
segments: [{ type: 'free', points: v1Shape.points.map(getV2Point) }],
|
|
392
390
|
},
|
|
393
391
|
},
|
|
394
392
|
])
|
|
@@ -402,7 +400,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
402
400
|
const v2Bend = (dist * -v1Bend) / 2
|
|
403
401
|
|
|
404
402
|
// Could also be a line... but we'll use it as an arrow anyway
|
|
405
|
-
editor.createShapes([
|
|
403
|
+
editor.createShapes<TLArrowShape>([
|
|
406
404
|
{
|
|
407
405
|
...inCommon,
|
|
408
406
|
type: 'arrow',
|
|
@@ -431,7 +429,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
431
429
|
break
|
|
432
430
|
}
|
|
433
431
|
case TLV1ShapeType.Text: {
|
|
434
|
-
editor.createShapes([
|
|
432
|
+
editor.createShapes<TLTextShape>([
|
|
435
433
|
{
|
|
436
434
|
...inCommon,
|
|
437
435
|
type: 'text',
|
|
@@ -455,7 +453,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
455
453
|
return
|
|
456
454
|
}
|
|
457
455
|
|
|
458
|
-
editor.createShapes([
|
|
456
|
+
editor.createShapes<TLImageShape>([
|
|
459
457
|
{
|
|
460
458
|
...inCommon,
|
|
461
459
|
type: 'image',
|
|
@@ -476,7 +474,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
476
474
|
return
|
|
477
475
|
}
|
|
478
476
|
|
|
479
|
-
editor.createShapes([
|
|
477
|
+
editor.createShapes<TLVideoShape>([
|
|
480
478
|
{
|
|
481
479
|
...inCommon,
|
|
482
480
|
type: 'video',
|
|
@@ -525,7 +523,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
|
|
|
525
523
|
const util = editor.getShapeUtil<TLArrowShape>('arrow')
|
|
526
524
|
|
|
527
525
|
// dumb but necessary
|
|
528
|
-
editor.inputs.
|
|
526
|
+
editor.inputs.ctrlKey = false
|
|
529
527
|
|
|
530
528
|
for (const handleId of ['start', 'end'] as const) {
|
|
531
529
|
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.isDragging).toBe(false)
|
|
147
147
|
editor.pointerMove(10, 10)
|
|
148
|
-
expect(editor.inputs.
|
|
148
|
+
expect(editor.inputs.isDragging).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.isDragging).toBe(false)
|
|
155
155
|
editor.wheel(10, 10)
|
|
156
|
-
expect(editor.inputs.
|
|
156
|
+
expect(editor.inputs.isDragging).toBe(true)
|
|
157
157
|
})
|
|
158
158
|
|
|
159
159
|
it('Does not create an undo stack item when first clicking on an empty canvas', () => {
|
|
@@ -266,47 +266,36 @@ 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
|
-
|
|
269
|
+
// @ts-ignore
|
|
270
|
+
editor._tickManager.updatePointerVelocity(ms)
|
|
270
271
|
}
|
|
271
272
|
|
|
272
273
|
// 1. pointer velocity should be 0 when there is no movement
|
|
273
|
-
expect(editor.inputs.
|
|
274
|
+
expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0, y: 0 })
|
|
274
275
|
|
|
275
276
|
editor.pointerMove(10, 10)
|
|
276
277
|
|
|
277
278
|
// 2. moving is not enough, we also need to wait a frame before the velocity is updated
|
|
278
|
-
expect(editor.inputs.
|
|
279
|
+
expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0, y: 0 })
|
|
279
280
|
|
|
280
281
|
// 3. once time passes, the pointer velocity should be updated
|
|
281
282
|
tick(16)
|
|
282
|
-
expect(editor.inputs.
|
|
283
|
-
x: 0.3125,
|
|
284
|
-
y: 0.3125,
|
|
285
|
-
})
|
|
283
|
+
expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0.3125, y: 0.3125 })
|
|
286
284
|
|
|
287
285
|
// 4. let's do it again, it should be updated again. move, tick, measure
|
|
288
286
|
editor.pointerMove(20, 20)
|
|
289
287
|
tick(16)
|
|
290
|
-
expect(editor.inputs.
|
|
291
|
-
x: 0.46875,
|
|
292
|
-
y: 0.46875,
|
|
293
|
-
})
|
|
288
|
+
expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0.46875, y: 0.46875 })
|
|
294
289
|
|
|
295
290
|
// 5. if we tick again without movement, the velocity should decay
|
|
296
291
|
tick(16)
|
|
297
292
|
|
|
298
|
-
expect(editor.inputs.
|
|
299
|
-
x: 0.23437,
|
|
300
|
-
y: 0.23437,
|
|
301
|
-
})
|
|
293
|
+
expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0.23437, y: 0.23437 })
|
|
302
294
|
|
|
303
295
|
// 6. if updatePointerVelocity is (for whatever reason) called with an elapsed time of zero milliseconds, it should be ignored
|
|
304
296
|
tick(0)
|
|
305
297
|
|
|
306
|
-
expect(editor.inputs.
|
|
307
|
-
x: 0.23437,
|
|
308
|
-
y: 0.23437,
|
|
309
|
-
})
|
|
298
|
+
expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0.23437, y: 0.23437 })
|
|
310
299
|
})
|
|
311
300
|
})
|
|
312
301
|
|
|
@@ -483,20 +472,12 @@ describe('isFocused', () => {
|
|
|
483
472
|
})
|
|
484
473
|
})
|
|
485
474
|
|
|
486
|
-
const BLORG_TYPE = 'blorg'
|
|
487
|
-
|
|
488
|
-
declare module '@tldraw/tlschema' {
|
|
489
|
-
export interface TLGlobalShapePropsMap {
|
|
490
|
-
[BLORG_TYPE]: { w: number; h: number }
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
|
|
494
475
|
describe('getShapeUtil', () => {
|
|
495
476
|
let myUtil: any
|
|
496
477
|
|
|
497
478
|
beforeEach(() => {
|
|
498
479
|
class _MyFakeShapeUtil extends BaseBoxShapeUtil<any> {
|
|
499
|
-
static override type =
|
|
480
|
+
static override type = 'blorg'
|
|
500
481
|
|
|
501
482
|
getDefaultProps() {
|
|
502
483
|
return {
|
|
@@ -538,22 +519,16 @@ describe('getShapeUtil', () => {
|
|
|
538
519
|
})
|
|
539
520
|
|
|
540
521
|
it('throws if that shape type isnt registered', () => {
|
|
541
|
-
const myMissingShape = { type: 'missing' }
|
|
542
|
-
expect(() =>
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
myMissingShape
|
|
546
|
-
)
|
|
547
|
-
).toThrowErrorMatchingInlineSnapshot(`[Error: No shape util found for type "missing"]`)
|
|
522
|
+
const myMissingShape = { type: 'missing' } as TLShape
|
|
523
|
+
expect(() => editor.getShapeUtil(myMissingShape)).toThrowErrorMatchingInlineSnapshot(
|
|
524
|
+
`[Error: No shape util found for type "missing"]`
|
|
525
|
+
)
|
|
548
526
|
})
|
|
549
527
|
|
|
550
528
|
it('throws if that type isnt registered', () => {
|
|
551
|
-
expect(() =>
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
'missing'
|
|
555
|
-
)
|
|
556
|
-
).toThrowErrorMatchingInlineSnapshot(`[Error: No shape util found for type "missing"]`)
|
|
529
|
+
expect(() => editor.getShapeUtil('missing')).toThrowErrorMatchingInlineSnapshot(
|
|
530
|
+
`[Error: No shape util found for type "missing"]`
|
|
531
|
+
)
|
|
557
532
|
})
|
|
558
533
|
})
|
|
559
534
|
|
|
@@ -688,9 +663,9 @@ describe('middle-click panning', () => {
|
|
|
688
663
|
button: 1,
|
|
689
664
|
})
|
|
690
665
|
editor.pointerMove(100, 100)
|
|
691
|
-
expect(editor.inputs.
|
|
666
|
+
expect(editor.inputs.isPanning).toBe(true)
|
|
692
667
|
editor.pointerUp(100, 100)
|
|
693
|
-
expect(editor.inputs.
|
|
668
|
+
expect(editor.inputs.isPanning).toBe(false)
|
|
694
669
|
})
|
|
695
670
|
|
|
696
671
|
it('does not clear thee isPanning state if the space bar is down', () => {
|
|
@@ -699,51 +674,51 @@ describe('middle-click panning', () => {
|
|
|
699
674
|
button: 1,
|
|
700
675
|
})
|
|
701
676
|
editor.pointerMove(100, 100)
|
|
702
|
-
expect(editor.inputs.
|
|
677
|
+
expect(editor.inputs.isPanning).toBe(true)
|
|
703
678
|
editor.keyDown(' ')
|
|
704
679
|
editor.pointerUp(100, 100, {
|
|
705
680
|
button: 1,
|
|
706
681
|
})
|
|
707
|
-
expect(editor.inputs.
|
|
682
|
+
expect(editor.inputs.isPanning).toBe(true)
|
|
708
683
|
|
|
709
684
|
editor.keyUp(' ')
|
|
710
|
-
expect(editor.inputs.
|
|
685
|
+
expect(editor.inputs.isPanning).toBe(false)
|
|
711
686
|
})
|
|
712
687
|
})
|
|
713
688
|
|
|
714
689
|
describe('dragging', () => {
|
|
715
690
|
it('drags correctly at 100% zoom', () => {
|
|
716
|
-
expect(editor.inputs.
|
|
691
|
+
expect(editor.inputs.isDragging).toBe(false)
|
|
717
692
|
editor.pointerMove(0, 0).pointerDown()
|
|
718
|
-
expect(editor.inputs.
|
|
693
|
+
expect(editor.inputs.isDragging).toBe(false)
|
|
719
694
|
editor.pointerMove(0, 1)
|
|
720
|
-
expect(editor.inputs.
|
|
695
|
+
expect(editor.inputs.isDragging).toBe(false)
|
|
721
696
|
editor.pointerMove(0, 5)
|
|
722
|
-
expect(editor.inputs.
|
|
697
|
+
expect(editor.inputs.isDragging).toBe(true)
|
|
723
698
|
})
|
|
724
699
|
|
|
725
700
|
it('drags correctly at 150% zoom', () => {
|
|
726
701
|
editor.setCamera({ x: 0, y: 0, z: 8 }).forceTick()
|
|
727
702
|
|
|
728
|
-
expect(editor.inputs.
|
|
703
|
+
expect(editor.inputs.isDragging).toBe(false)
|
|
729
704
|
editor.pointerMove(0, 0).pointerDown()
|
|
730
|
-
expect(editor.inputs.
|
|
705
|
+
expect(editor.inputs.isDragging).toBe(false)
|
|
731
706
|
editor.pointerMove(0, 2)
|
|
732
|
-
expect(editor.inputs.
|
|
707
|
+
expect(editor.inputs.isDragging).toBe(false)
|
|
733
708
|
editor.pointerMove(0, 5)
|
|
734
|
-
expect(editor.inputs.
|
|
709
|
+
expect(editor.inputs.isDragging).toBe(true)
|
|
735
710
|
})
|
|
736
711
|
|
|
737
712
|
it('drags correctly at 50% zoom', () => {
|
|
738
713
|
editor.setCamera({ x: 0, y: 0, z: 0.1 }).forceTick()
|
|
739
714
|
|
|
740
|
-
expect(editor.inputs.
|
|
715
|
+
expect(editor.inputs.isDragging).toBe(false)
|
|
741
716
|
editor.pointerMove(0, 0).pointerDown()
|
|
742
|
-
expect(editor.inputs.
|
|
717
|
+
expect(editor.inputs.isDragging).toBe(false)
|
|
743
718
|
editor.pointerMove(0, 2)
|
|
744
|
-
expect(editor.inputs.
|
|
719
|
+
expect(editor.inputs.isDragging).toBe(false)
|
|
745
720
|
editor.pointerMove(0, 5)
|
|
746
|
-
expect(editor.inputs.
|
|
721
|
+
expect(editor.inputs.isDragging).toBe(true)
|
|
747
722
|
})
|
|
748
723
|
})
|
|
749
724
|
|
|
@@ -891,19 +866,9 @@ describe('instance.isReadonly', () => {
|
|
|
891
866
|
})
|
|
892
867
|
})
|
|
893
868
|
|
|
894
|
-
const MY_CUSTOM_SHAPE_TYPE = 'myCustomShape'
|
|
895
|
-
|
|
896
|
-
type MyCustomShape = TLShape<typeof MY_CUSTOM_SHAPE_TYPE>
|
|
897
|
-
|
|
898
|
-
declare module '@tldraw/tlschema' {
|
|
899
|
-
export interface TLGlobalShapePropsMap {
|
|
900
|
-
[MY_CUSTOM_SHAPE_TYPE]: { w: number; h: number }
|
|
901
|
-
}
|
|
902
|
-
}
|
|
903
|
-
|
|
904
869
|
describe('the geometry cache', () => {
|
|
905
|
-
class CustomShapeUtil extends BaseBoxShapeUtil<
|
|
906
|
-
static override type =
|
|
870
|
+
class CustomShapeUtil extends BaseBoxShapeUtil<any> {
|
|
871
|
+
static override type = 'custom'
|
|
907
872
|
|
|
908
873
|
getDefaultProps() {
|
|
909
874
|
return {
|
|
@@ -929,11 +894,9 @@ describe('the geometry cache', () => {
|
|
|
929
894
|
editor = new TestEditor({
|
|
930
895
|
shapeUtils: [CustomShapeUtil],
|
|
931
896
|
})
|
|
932
|
-
const { A } = editor.createShapesFromJsx([
|
|
933
|
-
<TL.myCustomShape ref="A" x={0} y={0} w={100} h={100} />,
|
|
934
|
-
])
|
|
897
|
+
const { A } = editor.createShapesFromJsx([<TL.custom ref="A" x={0} y={0} w={100} h={100} />])
|
|
935
898
|
expect(editor.getShapePageBounds(A)!.width).toBe(100)
|
|
936
|
-
editor.updateShape({ id: A, type: '
|
|
899
|
+
editor.updateShape({ id: A, type: 'custom', meta: { double: true } })
|
|
937
900
|
expect(editor.getShapePageBounds(A)!.width).toBe(200)
|
|
938
901
|
})
|
|
939
902
|
})
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { createShapeId } from '@tldraw/editor'
|
|
2
2
|
import { vi } from 'vitest'
|
|
3
|
-
import { createDrawSegments } from './test-jsx'
|
|
4
3
|
import { TestEditor } from './TestEditor'
|
|
5
4
|
|
|
6
5
|
let editor: TestEditor
|
|
@@ -73,15 +72,18 @@ beforeEach(() => {
|
|
|
73
72
|
x: 0,
|
|
74
73
|
y: 300,
|
|
75
74
|
props: {
|
|
76
|
-
segments:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
75
|
+
segments: [
|
|
76
|
+
{
|
|
77
|
+
type: 'free',
|
|
78
|
+
points: [
|
|
79
|
+
{ x: 0, y: 0 },
|
|
80
|
+
{ x: 2, y: 50 },
|
|
81
|
+
{ x: 10, y: 100 },
|
|
82
|
+
{ x: 48, y: 100 },
|
|
83
|
+
{ x: 100, y: 100 },
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
],
|
|
85
87
|
},
|
|
86
88
|
},
|
|
87
89
|
])
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
IndexKey,
|
|
3
|
+
TLArrowShape,
|
|
4
|
+
TLGeoShape,
|
|
5
|
+
TLNoteShape,
|
|
6
|
+
TLTextShape,
|
|
7
|
+
createShapeId,
|
|
8
|
+
toRichText,
|
|
9
|
+
} from '@tldraw/editor'
|
|
2
10
|
import { vi } from 'vitest'
|
|
3
11
|
import { TestEditor } from './TestEditor'
|
|
4
12
|
|
|
@@ -53,7 +61,7 @@ describe('TLSelectTool.Idle', () => {
|
|
|
53
61
|
describe.skip('Edit on type', () => {
|
|
54
62
|
it('Starts editing shape on key down if shape does auto-edit on key stroke', () => {
|
|
55
63
|
const id = createShapeId()
|
|
56
|
-
editor.createShapes([
|
|
64
|
+
editor.createShapes<TLNoteShape>([
|
|
57
65
|
{
|
|
58
66
|
id,
|
|
59
67
|
type: 'note',
|
|
@@ -77,7 +85,7 @@ describe.skip('Edit on type', () => {
|
|
|
77
85
|
|
|
78
86
|
it('Does not start editing on excluded keys', () => {
|
|
79
87
|
const id = createShapeId()
|
|
80
|
-
editor.createShapes([
|
|
88
|
+
editor.createShapes<TLNoteShape>([
|
|
81
89
|
{
|
|
82
90
|
id,
|
|
83
91
|
type: 'note',
|
|
@@ -94,7 +102,7 @@ describe.skip('Edit on type', () => {
|
|
|
94
102
|
|
|
95
103
|
it('Ignores key down if altKey or ctrlKey is pressed', () => {
|
|
96
104
|
const id = createShapeId()
|
|
97
|
-
editor.createShapes([
|
|
105
|
+
editor.createShapes<TLNoteShape>([
|
|
98
106
|
{
|
|
99
107
|
id,
|
|
100
108
|
type: 'note',
|
|
@@ -262,7 +270,7 @@ describe('DraggingHandle', () => {
|
|
|
262
270
|
|
|
263
271
|
describe('PointingLabel', () => {
|
|
264
272
|
it('Enters from pointing_arrow_label and exits to idle', () => {
|
|
265
|
-
editor.createShapes([
|
|
273
|
+
editor.createShapes<TLArrowShape>([
|
|
266
274
|
{
|
|
267
275
|
id: ids.arrow1,
|
|
268
276
|
type: 'arrow',
|
|
@@ -294,7 +302,7 @@ describe('PointingLabel', () => {
|
|
|
294
302
|
})
|
|
295
303
|
|
|
296
304
|
it('Bails on escape', () => {
|
|
297
|
-
editor.createShapes([
|
|
305
|
+
editor.createShapes<TLArrowShape>([
|
|
298
306
|
{
|
|
299
307
|
id: ids.arrow1,
|
|
300
308
|
type: 'arrow',
|
|
@@ -321,7 +329,7 @@ describe('PointingLabel', () => {
|
|
|
321
329
|
})
|
|
322
330
|
|
|
323
331
|
it('Doesnt go into pointing_arrow_label mode if not selecting the arrow shape', () => {
|
|
324
|
-
editor.createShapes([
|
|
332
|
+
editor.createShapes<TLArrowShape>([
|
|
325
333
|
{
|
|
326
334
|
id: ids.arrow1,
|
|
327
335
|
type: 'arrow',
|
|
@@ -398,7 +406,7 @@ describe('When double clicking the selection edge', () => {
|
|
|
398
406
|
.selectAll()
|
|
399
407
|
.deleteShapes(editor.getSelectedShapeIds())
|
|
400
408
|
.selectNone()
|
|
401
|
-
.createShapes([
|
|
409
|
+
.createShapes<TLTextShape>([
|
|
402
410
|
{
|
|
403
411
|
id,
|
|
404
412
|
type: 'text',
|
|
@@ -456,7 +464,7 @@ describe('When editing shapes', () => {
|
|
|
456
464
|
text2: createShapeId(),
|
|
457
465
|
}
|
|
458
466
|
|
|
459
|
-
editor.createShapes([
|
|
467
|
+
editor.createShapes<TLGeoShape | TLTextShape>([
|
|
460
468
|
{
|
|
461
469
|
id: ids.geo1,
|
|
462
470
|
type: 'geo',
|
|
@@ -694,7 +702,7 @@ describe('when passing a function to onInteractionEnd', () => {
|
|
|
694
702
|
},
|
|
695
703
|
}
|
|
696
704
|
|
|
697
|
-
editor.createShapes([arrow])
|
|
705
|
+
editor.createShapes<TLArrowShape>([arrow])
|
|
698
706
|
|
|
699
707
|
editor.setCurrentTool('select.pointing_arrow_label', {
|
|
700
708
|
shape: arrow,
|
|
@@ -820,7 +828,7 @@ describe('when passing a string to onInteractionEnd', () => {
|
|
|
820
828
|
},
|
|
821
829
|
}
|
|
822
830
|
|
|
823
|
-
editor.createShapes([arrow])
|
|
831
|
+
editor.createShapes<TLArrowShape>([arrow])
|
|
824
832
|
|
|
825
833
|
editor.setCurrentTool('select.pointing_arrow_label', {
|
|
826
834
|
shape: arrow,
|