tldraw 4.3.0-canary.e52fa5385f86 → 4.3.0-canary.ea88b223b83a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-cjs/index.d.ts +294 -237
- package/dist-cjs/index.js +12 -5
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +2 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +2 -2
- package/dist-cjs/lib/defaultEmbedDefinitions.js +1 -1
- package/dist-cjs/lib/defaultEmbedDefinitions.js.map +2 -2
- package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -5
- package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
- package/dist-cjs/lib/defaultSideEffects.js +6 -1
- package/dist-cjs/lib/defaultSideEffects.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +14 -13
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/arrow-types.js.map +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowLabel.js +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js +1 -1
- package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js +4 -10
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +7 -4
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +25 -23
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/getPath.js +20 -11
- package/dist-cjs/lib/shapes/draw/getPath.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +82 -86
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +3 -3
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +6 -0
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +6 -5
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +146 -142
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js +5 -10
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js +3 -3
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +23 -21
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js +3 -3
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +6 -11
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js +5 -10
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +3 -2
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +14 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js +12 -4
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/ShapeFill.js +2 -2
- package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/interpolate-props.js +3 -3
- package/dist-cjs/lib/shapes/shared/interpolate-props.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/{useForceSolid.js → useEfficientZoomThreshold.js} +10 -7
- package/dist-cjs/lib/shapes/shared/useEfficientZoomThreshold.js.map +7 -0
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +1 -1
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
- package/dist-cjs/lib/shapes/text/RichTextArea.js +5 -0
- package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js +5 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js +4 -10
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +7 -5
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +4 -5
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +2 -4
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/HandTool.js +3 -5
- package/dist-cjs/lib/tools/HandTool/HandTool.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js +3 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js +1 -1
- package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js +1 -1
- package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js +9 -7
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +6 -5
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js +4 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js +2 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +7 -5
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js +38 -11
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +42 -50
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js +6 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js +4 -14
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +4 -13
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +5 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +2 -3
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js +7 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +13 -11
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/selectHelpers.js +15 -4
- package/dist-cjs/lib/tools/SelectTool/selectHelpers.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js +1 -1
- package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js +3 -3
- package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js +5 -6
- package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js +1 -3
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js +1 -1
- package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js +1 -1
- package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js.map +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js +3 -9
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js +1 -3
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/CursorChatBubble.js +1 -1
- package/dist-cjs/lib/ui/components/CursorChatBubble.js.map +2 -2
- package/dist-cjs/lib/ui/components/DefaultDebugPanel.js +1 -21
- package/dist-cjs/lib/ui/components/DefaultDebugPanel.js.map +2 -2
- package/dist-cjs/lib/ui/components/HelperButtons/StopFollowing.js.map +2 -2
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +1 -1
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
- package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js +2 -15
- package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js.map +3 -3
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js +3 -1
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js +6 -0
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/TopPanel/CenteredTopPanelContainer.js.map +1 -1
- package/dist-cjs/lib/ui/components/menu-items.js +3 -1
- package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +3 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +6 -5
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +1 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
- package/dist-cjs/lib/ui/context/actions.js +6 -6
- package/dist-cjs/lib/ui/context/actions.js.map +2 -2
- package/dist-cjs/lib/ui/context/components.js +1 -2
- package/dist-cjs/lib/ui/context/components.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +2 -2
- package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +2 -2
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useTools.js +4 -5
- package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
- package/dist-cjs/lib/ui/version.js +3 -3
- package/dist-cjs/lib/ui/version.js.map +1 -1
- package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js +8 -6
- package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +2 -2
- package/dist-cjs/lib/{tools/selection-logic/getShouldEnterCropModeOnPointerDown.js → utils/test-helpers.js} +21 -8
- package/dist-cjs/lib/utils/test-helpers.js.map +7 -0
- package/dist-cjs/lib/utils/text/richText.js +4 -2
- package/dist-cjs/lib/utils/text/richText.js.map +2 -2
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +7 -2
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +2 -2
- package/dist-esm/index.d.mts +294 -237
- package/dist-esm/index.mjs +12 -5
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +2 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +2 -2
- package/dist-esm/lib/defaultEmbedDefinitions.mjs +1 -1
- package/dist-esm/lib/defaultEmbedDefinitions.mjs.map +2 -2
- package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -5
- package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
- package/dist-esm/lib/defaultSideEffects.mjs +6 -1
- package/dist-esm/lib/defaultSideEffects.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +15 -15
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs +4 -10
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +7 -4
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +1 -1
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +30 -25
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/getPath.mjs +21 -11
- package/dist-esm/lib/shapes/draw/getPath.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +83 -86
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +3 -3
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +6 -0
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +6 -5
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +147 -142
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs +5 -10
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs +3 -3
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +24 -22
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs +3 -3
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +7 -12
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs +5 -10
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +4 -3
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +14 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +12 -4
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs +2 -2
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs +4 -4
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs +12 -0
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs.map +7 -0
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +1 -1
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/RichTextArea.mjs +5 -0
- package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +5 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs +4 -10
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +7 -5
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +1 -1
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +4 -5
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +2 -4
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/HandTool.mjs +3 -5
- package/dist-esm/lib/tools/HandTool/HandTool.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs +3 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs +1 -1
- package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs +1 -1
- package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs +9 -7
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +6 -5
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs +4 -6
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs +2 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +7 -5
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs +38 -11
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +43 -51
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs +6 -6
- package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs +5 -15
- package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +4 -13
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +5 -6
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +2 -3
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs +7 -6
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +13 -11
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs +17 -4
- package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs +1 -1
- package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs +3 -3
- package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs +5 -6
- package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs +1 -3
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs +1 -1
- package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs +1 -1
- package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs.map +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs +2 -8
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs +1 -3
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/CursorChatBubble.mjs +1 -1
- package/dist-esm/lib/ui/components/CursorChatBubble.mjs.map +2 -2
- package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs +3 -30
- package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs.map +2 -2
- package/dist-esm/lib/ui/components/HelperButtons/StopFollowing.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +1 -1
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
- package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs +3 -6
- package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs.map +2 -2
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs +3 -1
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs +6 -0
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs +1 -1
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs +1 -1
- package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/TopPanel/CenteredTopPanelContainer.mjs.map +1 -1
- package/dist-esm/lib/ui/components/menu-items.mjs +3 -1
- package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +3 -1
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +6 -5
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +1 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
- package/dist-esm/lib/ui/context/actions.mjs +6 -6
- package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
- package/dist-esm/lib/ui/context/components.mjs +1 -2
- package/dist-esm/lib/ui/context/components.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +2 -2
- package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +2 -2
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useTools.mjs +4 -5
- package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
- package/dist-esm/lib/ui/version.mjs +3 -3
- package/dist-esm/lib/ui/version.mjs.map +1 -1
- package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs +9 -6
- package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +2 -2
- package/dist-esm/lib/utils/test-helpers.mjs +21 -0
- package/dist-esm/lib/utils/test-helpers.mjs.map +7 -0
- package/dist-esm/lib/utils/text/richText.mjs +5 -2
- package/dist-esm/lib/utils/text/richText.mjs.map +2 -2
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +8 -2
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +2 -2
- package/package.json +18 -16
- package/src/index.ts +5 -2
- package/src/lib/Tldraw.test.tsx +46 -1
- package/src/lib/canvas/TldrawSelectionForeground.tsx +2 -2
- package/src/lib/defaultEmbedDefinitions.ts +2 -1
- package/src/lib/defaultExternalContentHandlers.ts +10 -10
- package/src/lib/defaultSideEffects.ts +6 -1
- package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +40 -133
- package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +8 -8
- package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +15 -15
- package/src/lib/shapes/arrow/arrow-types.ts +2 -0
- package/src/lib/shapes/arrow/arrowLabel.ts +1 -1
- package/src/lib/shapes/arrow/arrowTargetState.ts +1 -1
- package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.test.ts +80 -0
- package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.tsx +1 -1
- package/src/lib/shapes/arrow/toolStates/Idle.tsx +4 -14
- package/src/lib/shapes/arrow/toolStates/Pointing.tsx +7 -4
- package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +1 -1
- package/src/lib/shapes/draw/DrawShapeUtil.test.ts +146 -0
- package/src/lib/shapes/draw/DrawShapeUtil.tsx +31 -27
- package/src/lib/shapes/draw/getPath.ts +31 -10
- package/src/lib/shapes/draw/toolStates/Drawing.ts +96 -86
- package/src/lib/shapes/embed/EmbedShapeUtil.tsx +7 -0
- package/src/lib/shapes/frame/FrameShapeUtil.tsx +10 -4
- package/src/lib/shapes/geo/GeoShapeUtil.tsx +228 -176
- package/src/lib/shapes/geo/toolStates/Idle.ts +5 -15
- package/src/lib/shapes/geo/toolStates/Pointing.ts +3 -3
- package/src/lib/shapes/highlight/HighlightShapeUtil.test.ts +146 -0
- package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +25 -24
- package/src/lib/shapes/line/toolStates/Pointing.ts +3 -3
- package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -10
- package/src/lib/shapes/note/noteCloning.test.ts +3 -1
- package/src/lib/shapes/note/toolStates/Pointing.ts +5 -10
- package/src/lib/shapes/shared/HyperlinkButton.tsx +4 -3
- package/src/lib/shapes/shared/PlainTextLabel.tsx +10 -1
- package/src/lib/shapes/shared/RichTextLabel.tsx +12 -3
- package/src/lib/shapes/shared/ShapeFill.tsx +2 -2
- package/src/lib/shapes/shared/interpolate-props.ts +4 -4
- package/src/lib/shapes/shared/useEfficientZoomThreshold.ts +10 -0
- package/src/lib/shapes/shared/useImageOrVideoAsset.ts +1 -1
- package/src/lib/shapes/text/RichTextArea.tsx +5 -0
- package/src/lib/shapes/text/TextShapeUtil.tsx +5 -0
- package/src/lib/shapes/text/toolStates/Idle.ts +4 -14
- package/src/lib/shapes/text/toolStates/Pointing.ts +7 -7
- package/src/lib/shapes/video/VideoShapeUtil.tsx +2 -1
- package/src/lib/tools/EraserTool/childStates/Erasing.ts +4 -5
- package/src/lib/tools/EraserTool/childStates/Pointing.ts +2 -4
- package/src/lib/tools/HandTool/HandTool.ts +3 -5
- package/src/lib/tools/HandTool/childStates/Dragging.ts +3 -2
- package/src/lib/tools/HandTool/childStates/Pointing.ts +1 -1
- package/src/lib/tools/LaserTool/childStates/Lasering.ts +1 -1
- package/src/lib/tools/SelectTool/DragAndDropManager.ts +12 -7
- package/src/lib/tools/SelectTool/childStates/Brushing.ts +6 -5
- package/src/lib/tools/SelectTool/childStates/Crop/children/Cropping.ts +7 -6
- package/src/lib/tools/SelectTool/childStates/Crop/children/Idle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.ts +2 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +7 -5
- package/src/lib/tools/SelectTool/childStates/EditingShape.ts +55 -12
- package/src/lib/tools/SelectTool/childStates/Idle.ts +58 -71
- package/src/lib/tools/SelectTool/childStates/PointingArrowLabel.ts +6 -7
- package/src/lib/tools/SelectTool/childStates/PointingCanvas.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingHandle.ts +5 -5
- package/src/lib/tools/SelectTool/childStates/PointingResizeHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingRotateHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingSelection.ts +2 -2
- package/src/lib/tools/SelectTool/childStates/PointingShape.ts +4 -14
- package/src/lib/tools/SelectTool/childStates/Resizing.ts +6 -6
- package/src/lib/tools/SelectTool/childStates/Rotating.ts +2 -3
- package/src/lib/tools/SelectTool/childStates/ScribbleBrushing.ts +7 -6
- package/src/lib/tools/SelectTool/childStates/Translating.ts +15 -12
- package/src/lib/tools/SelectTool/selectHelpers.ts +39 -4
- package/src/lib/tools/ZoomTool/ZoomTool.ts +1 -1
- package/src/lib/tools/ZoomTool/childStates/Pointing.ts +3 -3
- package/src/lib/tools/ZoomTool/childStates/ZoomBrushing.ts +5 -6
- package/src/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.ts +1 -3
- package/src/lib/tools/selection-logic/selectOnCanvasPointerUp.ts +1 -1
- package/src/lib/tools/selection-logic/updateHoveredShapeId.ts +1 -1
- package/src/lib/ui/TldrawUi.tsx +5 -2
- package/src/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.tsx +1 -9
- package/src/lib/ui/components/ContextMenu/DefaultContextMenu.tsx +1 -3
- package/src/lib/ui/components/CursorChatBubble.tsx +2 -2
- package/src/lib/ui/components/DefaultDebugPanel.tsx +3 -42
- package/src/lib/ui/components/HelperButtons/StopFollowing.tsx +2 -2
- package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +1 -1
- package/src/lib/ui/components/OfflineIndicator/OfflineIndicator.tsx +6 -5
- package/src/lib/ui/components/PageMenu/PageItemInput.tsx +3 -1
- package/src/lib/ui/components/SharePanel/PeopleMenu.tsx +8 -0
- package/src/lib/ui/components/Toolbar/DefaultImageToolbar.tsx +1 -1
- package/src/lib/ui/components/Toolbar/DefaultRichTextToolbar.tsx +1 -1
- package/src/lib/ui/components/TopPanel/CenteredTopPanelContainer.tsx +1 -1
- package/src/lib/ui/components/menu-items.tsx +3 -1
- package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +5 -3
- package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +12 -5
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.tsx +1 -1
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.tsx +1 -1
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +0 -1
- package/src/lib/ui/context/actions.tsx +6 -6
- package/src/lib/ui/context/components.tsx +1 -2
- package/src/lib/ui/hooks/useClipboardEvents.ts +2 -2
- package/src/lib/ui/hooks/useKeyboardShortcuts.ts +2 -2
- package/src/lib/ui/hooks/useTools.tsx +4 -5
- package/src/lib/ui/version.ts +3 -3
- package/src/lib/ui.css +27 -23
- package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +12 -48
- package/src/lib/utils/excalidraw/putExcalidrawContent.ts +11 -6
- package/src/lib/utils/test-helpers.ts +60 -0
- package/src/lib/utils/text/richText.ts +6 -5
- package/src/lib/utils/tldr/buildFromV1Document.ts +9 -2
- package/src/test/Editor.test.tsx +40 -29
- package/src/test/EraserTool.test.ts +10 -12
- package/src/test/TestEditor.ts +48 -47
- package/src/test/TldrawEditor.test.tsx +3 -2
- package/src/test/__snapshots__/drawing.test.ts.snap +3 -1257
- package/src/test/__snapshots__/resizing.test.ts.snap +3 -12
- package/src/test/arrows-megabus.test.tsx +1 -1
- package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +10 -10
- package/src/test/commands/cameraState.test.ts +299 -0
- package/src/test/commands/setCamera.test.ts +13 -11
- package/src/test/commands/stackShapes.test.ts +34 -8
- package/src/test/commands/zoomToBounds.test.ts +19 -3
- package/src/test/commands/zoomToSelection.test.ts +14 -3
- package/src/test/custom-clipping.test.ts +16 -9
- package/src/test/drawing.test.ts +17 -10
- package/src/test/flipShapes.test.ts +33 -0
- package/src/test/frames.test.ts +92 -0
- package/src/test/groups.test.tsx +1 -1
- package/src/test/modifiers.test.ts +6 -6
- package/src/test/resizing.test.ts +7 -9
- package/src/test/selection-omnibus.test.ts +2 -2
- package/src/test/spacebarPanning.test.ts +28 -10
- package/src/test/test-jsx.tsx +3 -0
- package/tldraw.css +41 -35
- package/dist-cjs/lib/shapes/shared/useForceSolid.js.map +0 -7
- package/dist-cjs/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.js.map +0 -7
- package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js +0 -32
- package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js.map +0 -7
- package/dist-cjs/lib/utils/text/textDirection.js +0 -51
- package/dist-cjs/lib/utils/text/textDirection.js.map +0 -7
- package/dist-esm/lib/shapes/shared/useForceSolid.mjs +0 -9
- package/dist-esm/lib/shapes/shared/useForceSolid.mjs.map +0 -7
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs +0 -8
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs.map +0 -7
- package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs +0 -12
- package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs.map +0 -7
- package/dist-esm/lib/utils/text/textDirection.mjs +0 -31
- package/dist-esm/lib/utils/text/textDirection.mjs.map +0 -7
- package/src/lib/shapes/shared/useForceSolid.ts +0 -6
- package/src/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.ts +0 -10
- package/src/lib/ui/components/TopPanel/DefaultTopPanel.tsx +0 -10
- package/src/lib/utils/text/textDirection.ts +0 -32
package/src/test/drawing.test.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { TLDrawShape, TLHighlightShape, last } from '@tldraw/editor'
|
|
2
2
|
import { vi } from 'vitest'
|
|
3
|
-
import { TestEditor } from './TestEditor'
|
|
4
3
|
import { TEST_DRAW_SHAPE_SCREEN_POINTS } from './drawing.data'
|
|
4
|
+
import { base64ToPoints } from './test-jsx'
|
|
5
|
+
import { TestEditor } from './TestEditor'
|
|
5
6
|
|
|
6
7
|
vi.useFakeTimers()
|
|
7
8
|
|
|
@@ -77,7 +78,7 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
77
78
|
const segment = shape.props.segments[0]
|
|
78
79
|
expect(segment.type).toBe('straight')
|
|
79
80
|
|
|
80
|
-
const points = segment.points
|
|
81
|
+
const points = base64ToPoints(segment.points)
|
|
81
82
|
expect(points.length).toBe(2)
|
|
82
83
|
})
|
|
83
84
|
|
|
@@ -176,8 +177,9 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
176
177
|
|
|
177
178
|
const shape = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
178
179
|
const segment = shape.props.segments[0]
|
|
179
|
-
|
|
180
|
-
expect(
|
|
180
|
+
const points = base64ToPoints(segment.points)
|
|
181
|
+
expect(points[1].x).toBeCloseTo(snappedX)
|
|
182
|
+
expect(points[1].y).toBeCloseTo(snappedY)
|
|
181
183
|
})
|
|
182
184
|
|
|
183
185
|
it('Doesnt snap to 15 degree angle when cmd is held', () => {
|
|
@@ -190,8 +192,9 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
190
192
|
|
|
191
193
|
const shape = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
192
194
|
const segment = shape.props.segments[0]
|
|
193
|
-
|
|
194
|
-
expect(
|
|
195
|
+
const points = base64ToPoints(segment.points)
|
|
196
|
+
expect(points[1].x).toBeCloseTo(x)
|
|
197
|
+
expect(points[1].y).toBeCloseTo(y)
|
|
195
198
|
})
|
|
196
199
|
|
|
197
200
|
it('Snaps to start or end of straight segments in self when shift + cmd is held', () => {
|
|
@@ -209,13 +212,15 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
209
212
|
|
|
210
213
|
const shape1 = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
211
214
|
const segment1 = last(shape1.props.segments)!
|
|
212
|
-
const
|
|
215
|
+
const points1 = base64ToPoints(segment1.points)
|
|
216
|
+
const point1 = last(points1)!
|
|
213
217
|
expect(point1.x).toBe(1)
|
|
214
218
|
|
|
215
219
|
editor.keyDown('Meta')
|
|
216
220
|
const shape2 = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
217
221
|
const segment2 = last(shape2.props.segments)!
|
|
218
|
-
const
|
|
222
|
+
const points2 = base64ToPoints(segment2.points)
|
|
223
|
+
const point2 = last(points2)!
|
|
219
224
|
expect(point2.x).toBe(0)
|
|
220
225
|
})
|
|
221
226
|
|
|
@@ -234,13 +239,15 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
234
239
|
|
|
235
240
|
const shape1 = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
236
241
|
const segment1 = last(shape1.props.segments)!
|
|
237
|
-
const
|
|
242
|
+
const points1 = base64ToPoints(segment1.points)
|
|
243
|
+
const point1 = last(points1)!
|
|
238
244
|
expect(point1.x).toBe(1)
|
|
239
245
|
|
|
240
246
|
editor.keyDown('Meta')
|
|
241
247
|
const shape2 = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
242
248
|
const segment2 = last(shape2.props.segments)!
|
|
243
|
-
const
|
|
249
|
+
const points2 = base64ToPoints(segment2.points)
|
|
250
|
+
const point2 = last(points2)!
|
|
244
251
|
expect(point2.x).toBe(0)
|
|
245
252
|
})
|
|
246
253
|
|
|
@@ -637,3 +637,36 @@ it('Updates the image shape flip properties when flipped', () => {
|
|
|
637
637
|
editor.flipShapes(editor.getSelectedShapeIds(), 'vertical')
|
|
638
638
|
expect(editor.getLastCreatedShape<TLImageShape>().props.flipY).toBe(true)
|
|
639
639
|
})
|
|
640
|
+
|
|
641
|
+
it('Restores flipped shape positions when shape is rotated', () => {
|
|
642
|
+
editor.selectAll().rotateSelection(PI / 2.5)
|
|
643
|
+
const before = editor.getSelectedShapes()
|
|
644
|
+
editor.flipShapes(editor.getSelectedShapeIds(), 'horizontal')
|
|
645
|
+
editor.flipShapes(editor.getSelectedShapeIds(), 'horizontal')
|
|
646
|
+
const after = editor.getSelectedShapes()
|
|
647
|
+
expect(after.length).toBe(before.length)
|
|
648
|
+
for (let i = 0; i < before.length; i++) {
|
|
649
|
+
expect(after[i]).toCloselyMatchObject(before[i])
|
|
650
|
+
}
|
|
651
|
+
})
|
|
652
|
+
|
|
653
|
+
it('Restores flipped shape positions with draw shapes when shape is rotated', () => {
|
|
654
|
+
editor
|
|
655
|
+
.cancel()
|
|
656
|
+
.setCurrentTool('draw')
|
|
657
|
+
.pointerDown(0, 0)
|
|
658
|
+
.pointerMove(-100, -100)
|
|
659
|
+
.pointerMove(0, -100)
|
|
660
|
+
.pointerMove(100, 100)
|
|
661
|
+
.pointerUp()
|
|
662
|
+
|
|
663
|
+
editor.selectAll().rotateSelection(PI / 2.5)
|
|
664
|
+
const before = editor.getSelectedShapes()
|
|
665
|
+
editor.flipShapes(editor.getSelectedShapeIds(), 'horizontal')
|
|
666
|
+
editor.flipShapes(editor.getSelectedShapeIds(), 'horizontal')
|
|
667
|
+
const after = editor.getSelectedShapes()
|
|
668
|
+
expect(after.length).toBe(before.length)
|
|
669
|
+
for (let i = 0; i < before.length; i++) {
|
|
670
|
+
expect(after[i]).toCloselyMatchObject(before[i])
|
|
671
|
+
}
|
|
672
|
+
})
|
package/src/test/frames.test.ts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
} from '@tldraw/editor'
|
|
11
11
|
import { vi } from 'vitest'
|
|
12
12
|
import { getArrowBindings } from '../lib/shapes/arrow/shared'
|
|
13
|
+
import { FrameShapeUtil } from '../lib/shapes/frame/FrameShapeUtil'
|
|
13
14
|
import { DEFAULT_FRAME_PADDING, fitFrameToContent, removeFrame } from '../lib/utils/frames/frames'
|
|
14
15
|
import { TestEditor } from './TestEditor'
|
|
15
16
|
|
|
@@ -639,9 +640,13 @@ describe('frame shapes', () => {
|
|
|
639
640
|
|
|
640
641
|
editor.setCurrentTool('select')
|
|
641
642
|
|
|
643
|
+
// Not with enter key
|
|
642
644
|
editor.keyDown('Enter')
|
|
643
645
|
editor.keyUp('Enter')
|
|
646
|
+
expect(editor.getCurrentPageState().editingShapeId).toBe(null)
|
|
644
647
|
|
|
648
|
+
// Just with header click (tests against header's geometry)
|
|
649
|
+
editor.click(105, 95)
|
|
645
650
|
expect(editor.getCurrentPageState().editingShapeId).toBe(frameId)
|
|
646
651
|
})
|
|
647
652
|
|
|
@@ -850,6 +855,93 @@ describe('frame shapes', () => {
|
|
|
850
855
|
expect(editor.getSortedChildIdsForParent(insideFrameId)).toStrictEqual([rectAId, rectBId])
|
|
851
856
|
expect(editor.getSortedChildIdsForParent(outsideFrameId)).toStrictEqual([insideFrameId])
|
|
852
857
|
})
|
|
858
|
+
|
|
859
|
+
describe('resizeChildren configuration option', () => {
|
|
860
|
+
it('has default canResizeChildren behavior as false', () => {
|
|
861
|
+
const frameUtil = editor.getShapeUtil<TLFrameShape>('frame') as FrameShapeUtil
|
|
862
|
+
expect(frameUtil.options.resizeChildren).toBe(false)
|
|
863
|
+
expect(frameUtil.canResizeChildren()).toBe(false)
|
|
864
|
+
})
|
|
865
|
+
|
|
866
|
+
it('can be configured to allow resizing children', () => {
|
|
867
|
+
const ConfiguredFrameShapeUtil = FrameShapeUtil.configure({ resizeChildren: true })
|
|
868
|
+
const configuredFrameUtil = new ConfiguredFrameShapeUtil(editor)
|
|
869
|
+
expect(configuredFrameUtil.options.resizeChildren).toBe(true)
|
|
870
|
+
expect(configuredFrameUtil.canResizeChildren()).toBe(true)
|
|
871
|
+
})
|
|
872
|
+
|
|
873
|
+
it('can be configured to disallow resizing children', () => {
|
|
874
|
+
const ConfiguredFrameShapeUtil = FrameShapeUtil.configure({ resizeChildren: false })
|
|
875
|
+
const configuredFrameUtil = new ConfiguredFrameShapeUtil(editor)
|
|
876
|
+
expect(configuredFrameUtil.options.resizeChildren).toBe(false)
|
|
877
|
+
expect(configuredFrameUtil.canResizeChildren()).toBe(false)
|
|
878
|
+
})
|
|
879
|
+
|
|
880
|
+
it('maintains other options when configuring resizeChildren', () => {
|
|
881
|
+
const ConfiguredFrameShapeUtil = FrameShapeUtil.configure({
|
|
882
|
+
resizeChildren: true,
|
|
883
|
+
showColors: true,
|
|
884
|
+
})
|
|
885
|
+
const configuredFrameUtil = new ConfiguredFrameShapeUtil(editor)
|
|
886
|
+
expect(configuredFrameUtil.options.resizeChildren).toBe(true)
|
|
887
|
+
expect(configuredFrameUtil.options.showColors).toBe(true)
|
|
888
|
+
})
|
|
889
|
+
|
|
890
|
+
it('resizes children when configured with resizeChildren: true', () => {
|
|
891
|
+
// Create a frame with a child shape using a configured frame util
|
|
892
|
+
editor.setCurrentTool('frame')
|
|
893
|
+
editor.pointerDown(100, 100).pointerMove(200, 200).pointerUp(200, 200)
|
|
894
|
+
|
|
895
|
+
const frameId = editor.getOnlySelectedShape()!.id
|
|
896
|
+
|
|
897
|
+
// Add a child shape
|
|
898
|
+
editor.setCurrentTool('geo')
|
|
899
|
+
editor.pointerDown(125, 125).pointerMove(175, 175).pointerUp(175, 175)
|
|
900
|
+
|
|
901
|
+
const childId = editor.getOnlySelectedShape()!.id
|
|
902
|
+
|
|
903
|
+
// Get initial bounds
|
|
904
|
+
const initialChildBounds = editor.getShapePageBounds(childId)!
|
|
905
|
+
|
|
906
|
+
// Create a new editor with configured frame util that allows resizing children
|
|
907
|
+
const configuredEditor = new TestEditor({
|
|
908
|
+
shapeUtils: [FrameShapeUtil.configure({ resizeChildren: true })],
|
|
909
|
+
})
|
|
910
|
+
|
|
911
|
+
// Create the same frame and child in the new editor
|
|
912
|
+
configuredEditor.createShapes([
|
|
913
|
+
{ id: frameId, type: 'frame', x: 100, y: 100, props: { w: 100, h: 100 } },
|
|
914
|
+
{
|
|
915
|
+
id: childId,
|
|
916
|
+
type: 'geo',
|
|
917
|
+
parentId: frameId,
|
|
918
|
+
x: 125,
|
|
919
|
+
y: 125,
|
|
920
|
+
props: { w: 50, h: 50 },
|
|
921
|
+
},
|
|
922
|
+
])
|
|
923
|
+
|
|
924
|
+
// Resize the frame to half size
|
|
925
|
+
configuredEditor.select(frameId)
|
|
926
|
+
configuredEditor.resizeSelection({ scaleX: 0.5, scaleY: 0.5 }, 'bottom_right')
|
|
927
|
+
|
|
928
|
+
// Verify the frame was resized
|
|
929
|
+
const resizedFrameBounds = configuredEditor.getShapePageBounds(frameId)!
|
|
930
|
+
expect(resizedFrameBounds).toCloselyMatchObject({
|
|
931
|
+
x: 100,
|
|
932
|
+
y: 100,
|
|
933
|
+
w: 50,
|
|
934
|
+
h: 50,
|
|
935
|
+
})
|
|
936
|
+
|
|
937
|
+
// Verify the child was also resized
|
|
938
|
+
const resizedChildBounds = configuredEditor.getShapePageBounds(childId)!
|
|
939
|
+
expect(resizedChildBounds.w).toBeCloseTo(initialChildBounds.w * 0.5)
|
|
940
|
+
expect(resizedChildBounds.h).toBeCloseTo(initialChildBounds.h * 0.5)
|
|
941
|
+
|
|
942
|
+
configuredEditor.dispose()
|
|
943
|
+
})
|
|
944
|
+
})
|
|
853
945
|
})
|
|
854
946
|
|
|
855
947
|
test('arrows bound to a shape within a group within a frame are reparented if the group is moved outside of the frame', () => {
|
package/src/test/groups.test.tsx
CHANGED
|
@@ -13,25 +13,25 @@ it('Shift Key', () => {
|
|
|
13
13
|
editor.pointerDown(0, 0)
|
|
14
14
|
editor.pointerMove(100, 100, { shiftKey: true })
|
|
15
15
|
editor.pointerMove(100, 100, { shiftKey: false })
|
|
16
|
-
expect(editor.inputs.
|
|
16
|
+
expect(editor.inputs.getShiftKey()).toBe(true)
|
|
17
17
|
vi.advanceTimersByTime(200)
|
|
18
|
-
expect(editor.inputs.
|
|
18
|
+
expect(editor.inputs.getShiftKey()).toBe(false)
|
|
19
19
|
})
|
|
20
20
|
|
|
21
21
|
it('Alt Key', () => {
|
|
22
22
|
editor.pointerDown(0, 0)
|
|
23
23
|
editor.pointerMove(100, 100, { altKey: true })
|
|
24
24
|
editor.pointerMove(100, 100, { altKey: false })
|
|
25
|
-
expect(editor.inputs.
|
|
25
|
+
expect(editor.inputs.getAltKey()).toBe(true)
|
|
26
26
|
vi.advanceTimersByTime(200)
|
|
27
|
-
expect(editor.inputs.
|
|
27
|
+
expect(editor.inputs.getAltKey()).toBe(false)
|
|
28
28
|
})
|
|
29
29
|
|
|
30
30
|
it('Ctrl Key', () => {
|
|
31
31
|
editor.pointerDown(0, 0)
|
|
32
32
|
editor.pointerMove(100, 100, { ctrlKey: true })
|
|
33
33
|
editor.pointerMove(100, 100, { ctrlKey: false })
|
|
34
|
-
expect(editor.inputs.
|
|
34
|
+
expect(editor.inputs.getCtrlKey()).toBe(true)
|
|
35
35
|
vi.advanceTimersByTime(200)
|
|
36
|
-
expect(editor.inputs.
|
|
36
|
+
expect(editor.inputs.getCtrlKey()).toBe(false)
|
|
37
37
|
})
|
|
@@ -20,6 +20,7 @@ import { NoteShapeUtil } from '../lib/shapes/note/NoteShapeUtil'
|
|
|
20
20
|
import { TestEditor } from './TestEditor'
|
|
21
21
|
import { getSnapLines } from './getSnapLines'
|
|
22
22
|
import { roundedBox } from './roundedBox'
|
|
23
|
+
import { createDrawSegments } from './test-jsx'
|
|
23
24
|
|
|
24
25
|
vi.useFakeTimers()
|
|
25
26
|
|
|
@@ -904,15 +905,12 @@ describe('When resizing a shape with children', () => {
|
|
|
904
905
|
x: 100,
|
|
905
906
|
y: 100,
|
|
906
907
|
props: {
|
|
907
|
-
segments: [
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
],
|
|
914
|
-
},
|
|
915
|
-
],
|
|
908
|
+
segments: createDrawSegments([
|
|
909
|
+
[
|
|
910
|
+
{ x: 0, y: 0, z: 0.5 },
|
|
911
|
+
{ x: 100, y: 100, z: 0.5 },
|
|
912
|
+
],
|
|
913
|
+
]),
|
|
916
914
|
},
|
|
917
915
|
},
|
|
918
916
|
])
|
|
@@ -2194,7 +2194,7 @@ describe('long press', () => {
|
|
|
2194
2194
|
it('works correctly with screenbounds offset', () => {
|
|
2195
2195
|
editor.updateViewportScreenBounds(new Box(100, 100, 800, 600))
|
|
2196
2196
|
editor.pointerDown(201, 202)
|
|
2197
|
-
expect(editor.inputs.
|
|
2197
|
+
expect(editor.inputs.getCurrentScreenPoint()).toMatchObject({ x: 101, y: 102 })
|
|
2198
2198
|
})
|
|
2199
2199
|
|
|
2200
2200
|
it('works correctly with screenbounds offset', () => {
|
|
@@ -2202,7 +2202,7 @@ describe('long press', () => {
|
|
|
2202
2202
|
editor.pointerDown(201, 202)
|
|
2203
2203
|
vi.advanceTimersByTime(1000)
|
|
2204
2204
|
// without the fix added in this PR, it would have been 1, 2
|
|
2205
|
-
expect(editor.inputs.
|
|
2205
|
+
expect(editor.inputs.getCurrentScreenPoint()).toMatchObject({ x: 101, y: 102 })
|
|
2206
2206
|
})
|
|
2207
2207
|
})
|
|
2208
2208
|
|
|
@@ -16,16 +16,16 @@ beforeEach(() => {
|
|
|
16
16
|
|
|
17
17
|
it('Sets cursor and state correctly', () => {
|
|
18
18
|
expect(editor.getInstanceState().cursor.type).toBe('default')
|
|
19
|
-
expect(editor.inputs.
|
|
19
|
+
expect(editor.inputs.getIsPanning()).toBe(false)
|
|
20
20
|
editor.keyDown(' ')
|
|
21
|
-
expect(editor.inputs.
|
|
21
|
+
expect(editor.inputs.getIsPanning()).toBe(true)
|
|
22
22
|
expect(editor.getInstanceState().cursor.type).toBe('grab')
|
|
23
23
|
editor.pointerDown(0, 0)
|
|
24
24
|
expect(editor.getInstanceState().cursor.type).toBe('grabbing')
|
|
25
25
|
editor.pointerUp(0, 0)
|
|
26
26
|
expect(editor.getInstanceState().cursor.type).toBe('grab')
|
|
27
27
|
editor.keyUp(' ')
|
|
28
|
-
expect(editor.inputs.
|
|
28
|
+
expect(editor.inputs.getIsPanning()).toBe(false)
|
|
29
29
|
expect(editor.getInstanceState().cursor.type).toBe('default')
|
|
30
30
|
})
|
|
31
31
|
|
|
@@ -37,16 +37,34 @@ it('When holding spacebar and clicking and dragging, it pans the camera', () =>
|
|
|
37
37
|
editor.keyUp(' ')
|
|
38
38
|
})
|
|
39
39
|
|
|
40
|
-
it('When
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
editor.
|
|
40
|
+
it('When spacebar is held during pointer interaction, it activates panning', () => {
|
|
41
|
+
// This test verifies that holding spacebar prevents pointer events from
|
|
42
|
+
// being sent to the state chart, and instead activates panning mode.
|
|
43
|
+
editor.select(ids.box1)
|
|
44
|
+
|
|
45
|
+
// Start with pointer down on the shape
|
|
46
|
+
editor.pointerDown(150, 150, ids.box1)
|
|
44
47
|
|
|
48
|
+
// Hold spacebar before moving - should activate panning
|
|
45
49
|
editor.keyDown(' ')
|
|
46
|
-
editor.
|
|
47
|
-
editor.
|
|
48
|
-
|
|
50
|
+
expect(editor.inputs.getIsPanning()).toBe(true)
|
|
51
|
+
expect(editor.getInstanceState().cursor.type).toBe('grabbing') // 'grabbing' because pointer is down
|
|
52
|
+
|
|
53
|
+
// Moving the pointer should pan the camera, not translate the shape
|
|
54
|
+
const initialCamera = editor.getCamera()
|
|
55
|
+
editor.pointerMove(100, 100)
|
|
56
|
+
|
|
57
|
+
// Camera should have moved (panning)
|
|
58
|
+
const newCamera = editor.getCamera()
|
|
59
|
+
expect(newCamera.x).not.toBe(initialCamera.x)
|
|
60
|
+
expect(newCamera.y).not.toBe(initialCamera.y)
|
|
61
|
+
|
|
62
|
+
// Shape should not have moved (not translating)
|
|
63
|
+
editor.expectShapeToMatch({ id: ids.box1, x: 100, y: 100 })
|
|
64
|
+
|
|
65
|
+
editor.pointerUp()
|
|
49
66
|
editor.keyUp(' ')
|
|
67
|
+
expect(editor.inputs.getIsPanning()).toBe(false)
|
|
50
68
|
})
|
|
51
69
|
|
|
52
70
|
it('When holding spacebar, pressing the arrow keys moves over by one viewport', () => {
|
package/src/test/test-jsx.tsx
CHANGED
|
@@ -19,6 +19,9 @@ import {
|
|
|
19
19
|
} from '@tldraw/editor'
|
|
20
20
|
import React, { Fragment } from 'react'
|
|
21
21
|
|
|
22
|
+
// Re-export test helpers from their new location
|
|
23
|
+
export { base64ToPoints, createDrawSegments, pointsToBase64 } from '../lib/utils/test-helpers'
|
|
24
|
+
|
|
22
25
|
const shapeTypeSymbol = Symbol('shapeJsx')
|
|
23
26
|
const assetTypeSymbol = Symbol('assetJsx')
|
|
24
27
|
const bindingTypeSymbol = Symbol('bindingJsx')
|
package/tldraw.css
CHANGED
|
@@ -611,7 +611,6 @@ input,
|
|
|
611
611
|
pointer-events: all;
|
|
612
612
|
white-space: pre-wrap;
|
|
613
613
|
overflow-wrap: break-word;
|
|
614
|
-
text-shadow: var(--tl-text-outline);
|
|
615
614
|
}
|
|
616
615
|
|
|
617
616
|
.tl-text-wrapper[data-font='draw'] {
|
|
@@ -713,7 +712,7 @@ input,
|
|
|
713
712
|
resize: none;
|
|
714
713
|
border: none;
|
|
715
714
|
user-select: none;
|
|
716
|
-
contain: style paint;
|
|
715
|
+
contain: layout style paint;
|
|
717
716
|
/* N.B. This property, while discouraged ("intended for Document Type Definition (DTD) designers") is necessary for ensuring correct mixed RTL/LTR behavior when exporting SVGs. */
|
|
718
717
|
unicode-bidi: plaintext;
|
|
719
718
|
-webkit-user-select: none;
|
|
@@ -774,7 +773,6 @@ input,
|
|
|
774
773
|
justify-content: center;
|
|
775
774
|
align-items: center;
|
|
776
775
|
color: var(--tl-color-text);
|
|
777
|
-
text-shadow: var(--tl-text-outline);
|
|
778
776
|
line-height: inherit;
|
|
779
777
|
position: absolute;
|
|
780
778
|
inset: 0px;
|
|
@@ -974,6 +972,14 @@ input,
|
|
|
974
972
|
display: block;
|
|
975
973
|
}
|
|
976
974
|
|
|
975
|
+
.tl-text__outline {
|
|
976
|
+
text-shadow: var(--tl-text-outline);
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
.tl-text__no-outline {
|
|
980
|
+
text-shadow: none;
|
|
981
|
+
}
|
|
982
|
+
|
|
977
983
|
/* --------------------- Loading -------------------- */
|
|
978
984
|
|
|
979
985
|
.tl-loading {
|
|
@@ -1138,14 +1144,12 @@ input,
|
|
|
1138
1144
|
fill: none;
|
|
1139
1145
|
}
|
|
1140
1146
|
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
}
|
|
1147
|
+
.tl-container[data-coarse='true'] .tl-handle__bg:active {
|
|
1148
|
+
fill: var(--tl-color-selection-fill);
|
|
1149
|
+
}
|
|
1145
1150
|
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
}
|
|
1151
|
+
.tl-container[data-coarse='true'] .tl-handle__create {
|
|
1152
|
+
opacity: 1;
|
|
1149
1153
|
}
|
|
1150
1154
|
|
|
1151
1155
|
.tl-rotate-corner:not(:hover),
|
|
@@ -1221,7 +1225,6 @@ input,
|
|
|
1221
1225
|
align-items: center;
|
|
1222
1226
|
text-align: center;
|
|
1223
1227
|
color: var(--tl-color-text);
|
|
1224
|
-
text-shadow: var(--tl-text-outline);
|
|
1225
1228
|
}
|
|
1226
1229
|
|
|
1227
1230
|
.tl-shape[data-shape-type='arrow'] .tl-text-label__inner {
|
|
@@ -1450,7 +1453,6 @@ input,
|
|
|
1450
1453
|
}
|
|
1451
1454
|
|
|
1452
1455
|
.tl-note__container > .tl-text-label {
|
|
1453
|
-
text-shadow: none;
|
|
1454
1456
|
color: currentColor;
|
|
1455
1457
|
}
|
|
1456
1458
|
|
|
@@ -2410,25 +2412,31 @@ it from receiving any pointer events or affecting the cursor. */
|
|
|
2410
2412
|
|
|
2411
2413
|
/* Submenu triggers */
|
|
2412
2414
|
|
|
2413
|
-
.tlui-menu__submenu__trigger
|
|
2414
|
-
|
|
2415
|
-
|
|
2415
|
+
.tlui-menu__submenu__trigger {
|
|
2416
|
+
--gradient-angle: 90deg;
|
|
2417
|
+
}
|
|
2418
|
+
|
|
2419
|
+
.tlui-menu__submenu__trigger[data-direction='left'] {
|
|
2420
|
+
--gradient-angle: 270deg;
|
|
2416
2421
|
}
|
|
2417
2422
|
|
|
2418
|
-
.tlui-menu__submenu__trigger[data-
|
|
2423
|
+
.tlui-menu__submenu__trigger[data-state='open']::after {
|
|
2419
2424
|
opacity: 1;
|
|
2420
|
-
background: linear-gradient(
|
|
2425
|
+
background: linear-gradient(
|
|
2426
|
+
var(--gradient-angle),
|
|
2427
|
+
rgba(144, 144, 144, 0) 0%,
|
|
2428
|
+
var(--tl-color-muted-2) 100%
|
|
2429
|
+
);
|
|
2421
2430
|
}
|
|
2422
2431
|
|
|
2423
2432
|
@media (hover: hover) {
|
|
2424
|
-
.tlui-menu__submenu__trigger[data-state='open']
|
|
2433
|
+
.tlui-menu__submenu__trigger:is(:hover, [data-state='open'])::after {
|
|
2425
2434
|
opacity: 1;
|
|
2426
|
-
background: linear-gradient(
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
|
|
2435
|
+
background: linear-gradient(
|
|
2436
|
+
var(--gradient-angle),
|
|
2437
|
+
rgba(144, 144, 144, 0) 0%,
|
|
2438
|
+
var(--tl-color-muted-2) 100%
|
|
2439
|
+
);
|
|
2432
2440
|
}
|
|
2433
2441
|
}
|
|
2434
2442
|
|
|
@@ -2707,10 +2715,8 @@ it from receiving any pointer events or affecting the cursor. */
|
|
|
2707
2715
|
}
|
|
2708
2716
|
}
|
|
2709
2717
|
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
opacity: 1;
|
|
2713
|
-
}
|
|
2718
|
+
.tl-container[data-coarse='true'] .tlui-page_menu__item__submenu > .tlui-button {
|
|
2719
|
+
opacity: 1;
|
|
2714
2720
|
}
|
|
2715
2721
|
|
|
2716
2722
|
.tlui-button__icon {
|
|
@@ -2749,16 +2755,15 @@ it from receiving any pointer events or affecting the cursor. */
|
|
|
2749
2755
|
|
|
2750
2756
|
.tlui-offline-indicator {
|
|
2751
2757
|
display: flex;
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
padding: 0px var(--tl-space-5);
|
|
2758
|
-
height: 42px;
|
|
2758
|
+
color: var(--tl-color-background);
|
|
2759
|
+
background-color: var(--tl-color-text);
|
|
2760
|
+
border: none;
|
|
2761
|
+
width: 32px;
|
|
2762
|
+
height: 32px;
|
|
2759
2763
|
align-items: center;
|
|
2760
2764
|
justify-content: center;
|
|
2761
2765
|
border-radius: 99px;
|
|
2766
|
+
cursor: default;
|
|
2762
2767
|
opacity: 0;
|
|
2763
2768
|
animation: tl-fade-in;
|
|
2764
2769
|
animation-duration: 0.12s;
|
|
@@ -3076,6 +3081,7 @@ tldraw? probably.
|
|
|
3076
3081
|
position: relative;
|
|
3077
3082
|
background: var(--tl-color-panel);
|
|
3078
3083
|
box-shadow: var(--tl-shadow-2);
|
|
3084
|
+
contain: layout style paint;
|
|
3079
3085
|
}
|
|
3080
3086
|
|
|
3081
3087
|
.tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/lib/shapes/shared/useForceSolid.ts"],
|
|
4
|
-
"sourcesContent": ["import { useEditor, useValue } from '@tldraw/editor'\n\nexport function useForceSolid() {\n\tconst editor = useEditor()\n\treturn useValue('zoom', () => editor.getZoomLevel() < 0.35, [editor])\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoC;AAE7B,SAAS,gBAAgB;AAC/B,QAAM,aAAS,yBAAU;AACzB,aAAO,wBAAS,QAAQ,MAAM,OAAO,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC;AACrE;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.ts"],
|
|
4
|
-
"sourcesContent": ["import { Editor } from '@tldraw/editor'\n\nexport function getShouldEnterCropMode(editor: Editor): boolean {\n\tconst onlySelectedShape = editor.getOnlySelectedShape()\n\treturn !!(\n\t\tonlySelectedShape &&\n\t\t!editor.isShapeOrAncestorLocked(onlySelectedShape) &&\n\t\teditor.getShapeUtil(onlySelectedShape).canCrop(onlySelectedShape)\n\t)\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,uBAAuB,QAAyB;AAC/D,QAAM,oBAAoB,OAAO,qBAAqB;AACtD,SAAO,CAAC,EACP,qBACA,CAAC,OAAO,wBAAwB,iBAAiB,KACjD,OAAO,aAAa,iBAAiB,EAAE,QAAQ,iBAAiB;AAElE;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var DefaultTopPanel_exports = {};
|
|
20
|
-
__export(DefaultTopPanel_exports, {
|
|
21
|
-
DefaultTopPanel: () => DefaultTopPanel
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(DefaultTopPanel_exports);
|
|
24
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
|
-
var import_useCollaborationStatus = require("../../hooks/useCollaborationStatus");
|
|
26
|
-
var import_OfflineIndicator = require("../OfflineIndicator/OfflineIndicator");
|
|
27
|
-
var import_CenteredTopPanelContainer = require("./CenteredTopPanelContainer");
|
|
28
|
-
function DefaultTopPanel() {
|
|
29
|
-
const isOffline = (0, import_useCollaborationStatus.useCollaborationStatus)() === "offline";
|
|
30
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_CenteredTopPanelContainer.CenteredTopPanelContainer, { children: isOffline && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OfflineIndicator.OfflineIndicator, {}) });
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=DefaultTopPanel.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/lib/ui/components/TopPanel/DefaultTopPanel.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useCollaborationStatus } from '../../hooks/useCollaborationStatus'\nimport { OfflineIndicator } from '../OfflineIndicator/OfflineIndicator'\nimport { CenteredTopPanelContainer } from './CenteredTopPanelContainer'\n\n/** @public @react */\nexport function DefaultTopPanel() {\n\tconst isOffline = useCollaborationStatus() === 'offline'\n\n\treturn <CenteredTopPanelContainer>{isOffline && <OfflineIndicator />}</CenteredTopPanelContainer>\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQiD;AARjD,oCAAuC;AACvC,8BAAiC;AACjC,uCAA0C;AAGnC,SAAS,kBAAkB;AACjC,QAAM,gBAAY,sDAAuB,MAAM;AAE/C,SAAO,4CAAC,8DAA2B,uBAAa,4CAAC,4CAAiB,GAAG;AACtE;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var textDirection_exports = {};
|
|
20
|
-
__export(textDirection_exports, {
|
|
21
|
-
TextDirection: () => TextDirection
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(textDirection_exports);
|
|
24
|
-
var import_core = require("@tiptap/core");
|
|
25
|
-
const TextDirection = import_core.Extension.create({
|
|
26
|
-
name: "textDirection",
|
|
27
|
-
addGlobalAttributes() {
|
|
28
|
-
return [
|
|
29
|
-
{
|
|
30
|
-
types: ["heading", "paragraph"],
|
|
31
|
-
attributes: {
|
|
32
|
-
dir: {
|
|
33
|
-
default: "auto",
|
|
34
|
-
parseHTML: (element) => {
|
|
35
|
-
const dirAttribute = element.getAttribute("dir");
|
|
36
|
-
if (dirAttribute && ["ltr", "rtl", "auto"].includes(dirAttribute)) {
|
|
37
|
-
return dirAttribute;
|
|
38
|
-
} else {
|
|
39
|
-
return "auto";
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
renderHTML: (attributes) => {
|
|
43
|
-
return { dir: attributes.dir };
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=textDirection.js.map
|