tldraw 4.3.0-canary.e5f56251a468 → 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 +297 -237
- package/dist-cjs/index.js +13 -5
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +2 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +2 -2
- package/dist-cjs/lib/defaultEmbedDefinitions.js +1 -1
- package/dist-cjs/lib/defaultEmbedDefinitions.js.map +2 -2
- package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -5
- package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
- package/dist-cjs/lib/defaultSideEffects.js +6 -1
- package/dist-cjs/lib/defaultSideEffects.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +14 -13
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/arrow-types.js.map +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowLabel.js +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
- package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js +1 -1
- package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js +4 -10
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +7 -4
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +25 -23
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/getPath.js +20 -11
- package/dist-cjs/lib/shapes/draw/getPath.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +82 -86
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +3 -3
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +6 -0
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +6 -5
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +146 -142
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js +5 -10
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js +3 -3
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +23 -21
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js +3 -3
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +6 -11
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js +5 -10
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +3 -2
- package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +14 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js +12 -4
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/ShapeFill.js +2 -2
- package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/interpolate-props.js +3 -3
- package/dist-cjs/lib/shapes/shared/interpolate-props.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/{useForceSolid.js → useEfficientZoomThreshold.js} +10 -7
- package/dist-cjs/lib/shapes/shared/useEfficientZoomThreshold.js.map +7 -0
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +1 -1
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
- package/dist-cjs/lib/shapes/text/RichTextArea.js +5 -0
- package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js +5 -2
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js +4 -10
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +7 -5
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +4 -5
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +2 -4
- package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/HandTool.js +3 -5
- package/dist-cjs/lib/tools/HandTool/HandTool.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js +3 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js +1 -1
- package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js +1 -1
- package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js +9 -7
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +6 -5
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js +4 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js +2 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +7 -5
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js +38 -11
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +42 -50
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js +6 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js +4 -14
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +4 -13
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +5 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +2 -3
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js +7 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +13 -11
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/selectHelpers.js +15 -4
- package/dist-cjs/lib/tools/SelectTool/selectHelpers.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js +1 -1
- package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js +3 -3
- package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js +5 -6
- package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js +1 -3
- package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js +1 -1
- package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js.map +2 -2
- package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js +1 -1
- package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js.map +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js +3 -9
- package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js +1 -3
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/CursorChatBubble.js +1 -1
- package/dist-cjs/lib/ui/components/CursorChatBubble.js.map +2 -2
- package/dist-cjs/lib/ui/components/DefaultDebugPanel.js +1 -21
- package/dist-cjs/lib/ui/components/DefaultDebugPanel.js.map +2 -2
- package/dist-cjs/lib/ui/components/HelperButtons/StopFollowing.js.map +2 -2
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +1 -1
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
- package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js +2 -15
- package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js.map +3 -3
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js +3 -1
- package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js +6 -0
- package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/TopPanel/CenteredTopPanelContainer.js.map +1 -1
- package/dist-cjs/lib/ui/components/menu-items.js +3 -1
- package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +3 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +1 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +149 -93
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +2 -3
- 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 +11 -19
- package/dist-cjs/lib/utils/text/richText.js.map +3 -3
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +7 -2
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +2 -2
- package/dist-esm/index.d.mts +297 -237
- package/dist-esm/index.mjs +14 -5
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +2 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +2 -2
- package/dist-esm/lib/defaultEmbedDefinitions.mjs +1 -1
- package/dist-esm/lib/defaultEmbedDefinitions.mjs.map +2 -2
- package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -5
- package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
- package/dist-esm/lib/defaultSideEffects.mjs +6 -1
- package/dist-esm/lib/defaultSideEffects.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +15 -15
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs +1 -1
- package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs +4 -10
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +7 -4
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +1 -1
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +30 -25
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/getPath.mjs +21 -11
- package/dist-esm/lib/shapes/draw/getPath.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +83 -86
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +3 -3
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +6 -0
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +6 -5
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +147 -142
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs +5 -10
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs +3 -3
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +24 -22
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs +3 -3
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +7 -12
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs +5 -10
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +4 -3
- package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +14 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +12 -4
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs +2 -2
- package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs +4 -4
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs +12 -0
- package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs.map +7 -0
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +1 -1
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/RichTextArea.mjs +5 -0
- package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +5 -2
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs +4 -10
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +7 -5
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +1 -1
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +4 -5
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +2 -4
- package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/HandTool.mjs +3 -5
- package/dist-esm/lib/tools/HandTool/HandTool.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs +3 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs +1 -1
- package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs +1 -1
- package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs +9 -7
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +6 -5
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs +4 -6
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs +2 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +7 -5
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs +38 -11
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +43 -51
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs +6 -6
- package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs +5 -15
- package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +4 -13
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +5 -6
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +2 -3
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs +7 -6
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +13 -11
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs +17 -4
- package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs +1 -1
- package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs +3 -3
- package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs +5 -6
- package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs +1 -3
- package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs +1 -1
- package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs.map +2 -2
- package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs +1 -1
- package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs.map +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs +2 -8
- package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs +1 -3
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/CursorChatBubble.mjs +1 -1
- package/dist-esm/lib/ui/components/CursorChatBubble.mjs.map +2 -2
- package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs +3 -30
- package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs.map +2 -2
- package/dist-esm/lib/ui/components/HelperButtons/StopFollowing.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +1 -1
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
- package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs +3 -6
- package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs.map +2 -2
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs +3 -1
- package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs +6 -0
- package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs +1 -1
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs +1 -1
- package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/TopPanel/CenteredTopPanelContainer.mjs.map +1 -1
- package/dist-esm/lib/ui/components/menu-items.mjs +3 -1
- package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +3 -1
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +157 -95
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +3 -4
- 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 +8 -5
- package/dist-esm/lib/utils/text/richText.mjs.map +2 -2
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +8 -2
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +2 -2
- package/package.json +18 -16
- package/src/index.ts +6 -2
- package/src/lib/Tldraw.test.tsx +46 -1
- package/src/lib/canvas/TldrawSelectionForeground.tsx +2 -2
- package/src/lib/defaultEmbedDefinitions.ts +2 -1
- package/src/lib/defaultExternalContentHandlers.ts +10 -10
- package/src/lib/defaultSideEffects.ts +6 -1
- package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +40 -133
- package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +8 -8
- package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +15 -15
- package/src/lib/shapes/arrow/arrow-types.ts +2 -0
- package/src/lib/shapes/arrow/arrowLabel.ts +1 -1
- package/src/lib/shapes/arrow/arrowTargetState.ts +1 -1
- package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.test.ts +80 -0
- package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.tsx +1 -1
- package/src/lib/shapes/arrow/toolStates/Idle.tsx +4 -14
- package/src/lib/shapes/arrow/toolStates/Pointing.tsx +7 -4
- package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +1 -1
- package/src/lib/shapes/draw/DrawShapeUtil.test.ts +146 -0
- package/src/lib/shapes/draw/DrawShapeUtil.tsx +31 -27
- package/src/lib/shapes/draw/getPath.ts +31 -10
- package/src/lib/shapes/draw/toolStates/Drawing.ts +96 -86
- package/src/lib/shapes/embed/EmbedShapeUtil.tsx +7 -0
- package/src/lib/shapes/frame/FrameShapeUtil.tsx +10 -4
- package/src/lib/shapes/geo/GeoShapeUtil.tsx +228 -176
- package/src/lib/shapes/geo/toolStates/Idle.ts +5 -15
- package/src/lib/shapes/geo/toolStates/Pointing.ts +3 -3
- package/src/lib/shapes/highlight/HighlightShapeUtil.test.ts +146 -0
- package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +25 -24
- package/src/lib/shapes/line/toolStates/Pointing.ts +3 -3
- package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -10
- package/src/lib/shapes/note/noteCloning.test.ts +3 -1
- package/src/lib/shapes/note/toolStates/Pointing.ts +5 -10
- package/src/lib/shapes/shared/HyperlinkButton.tsx +4 -3
- package/src/lib/shapes/shared/PlainTextLabel.tsx +10 -1
- package/src/lib/shapes/shared/RichTextLabel.tsx +12 -3
- package/src/lib/shapes/shared/ShapeFill.tsx +2 -2
- package/src/lib/shapes/shared/interpolate-props.ts +4 -4
- package/src/lib/shapes/shared/useEfficientZoomThreshold.ts +10 -0
- package/src/lib/shapes/shared/useImageOrVideoAsset.ts +1 -1
- package/src/lib/shapes/text/RichTextArea.tsx +5 -0
- package/src/lib/shapes/text/TextShapeUtil.tsx +5 -0
- package/src/lib/shapes/text/toolStates/Idle.ts +4 -14
- package/src/lib/shapes/text/toolStates/Pointing.ts +7 -7
- package/src/lib/shapes/video/VideoShapeUtil.tsx +2 -1
- package/src/lib/tools/EraserTool/childStates/Erasing.ts +4 -5
- package/src/lib/tools/EraserTool/childStates/Pointing.ts +2 -4
- package/src/lib/tools/HandTool/HandTool.ts +3 -5
- package/src/lib/tools/HandTool/childStates/Dragging.ts +3 -2
- package/src/lib/tools/HandTool/childStates/Pointing.ts +1 -1
- package/src/lib/tools/LaserTool/childStates/Lasering.ts +1 -1
- package/src/lib/tools/SelectTool/DragAndDropManager.ts +12 -7
- package/src/lib/tools/SelectTool/childStates/Brushing.ts +6 -5
- package/src/lib/tools/SelectTool/childStates/Crop/children/Cropping.ts +7 -6
- package/src/lib/tools/SelectTool/childStates/Crop/children/Idle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.ts +2 -1
- package/src/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +7 -5
- package/src/lib/tools/SelectTool/childStates/EditingShape.ts +55 -12
- package/src/lib/tools/SelectTool/childStates/Idle.ts +58 -71
- package/src/lib/tools/SelectTool/childStates/PointingArrowLabel.ts +6 -7
- package/src/lib/tools/SelectTool/childStates/PointingCanvas.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingHandle.ts +5 -5
- package/src/lib/tools/SelectTool/childStates/PointingResizeHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingRotateHandle.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/PointingSelection.ts +2 -2
- package/src/lib/tools/SelectTool/childStates/PointingShape.ts +4 -14
- package/src/lib/tools/SelectTool/childStates/Resizing.ts +6 -6
- package/src/lib/tools/SelectTool/childStates/Rotating.ts +2 -3
- package/src/lib/tools/SelectTool/childStates/ScribbleBrushing.ts +7 -6
- package/src/lib/tools/SelectTool/childStates/Translating.ts +15 -12
- package/src/lib/tools/SelectTool/selectHelpers.ts +39 -4
- package/src/lib/tools/ZoomTool/ZoomTool.ts +1 -1
- package/src/lib/tools/ZoomTool/childStates/Pointing.ts +3 -3
- package/src/lib/tools/ZoomTool/childStates/ZoomBrushing.ts +5 -6
- package/src/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.ts +1 -3
- package/src/lib/tools/selection-logic/selectOnCanvasPointerUp.ts +1 -1
- package/src/lib/tools/selection-logic/updateHoveredShapeId.ts +1 -1
- package/src/lib/ui/TldrawUi.tsx +5 -2
- package/src/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.tsx +1 -9
- package/src/lib/ui/components/ContextMenu/DefaultContextMenu.tsx +1 -3
- package/src/lib/ui/components/CursorChatBubble.tsx +2 -2
- package/src/lib/ui/components/DefaultDebugPanel.tsx +3 -42
- package/src/lib/ui/components/HelperButtons/StopFollowing.tsx +2 -2
- package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +1 -1
- package/src/lib/ui/components/OfflineIndicator/OfflineIndicator.tsx +6 -5
- package/src/lib/ui/components/PageMenu/PageItemInput.tsx +3 -1
- package/src/lib/ui/components/SharePanel/PeopleMenu.tsx +8 -0
- package/src/lib/ui/components/Toolbar/DefaultImageToolbar.tsx +1 -1
- package/src/lib/ui/components/Toolbar/DefaultRichTextToolbar.tsx +1 -1
- package/src/lib/ui/components/TopPanel/CenteredTopPanelContainer.tsx +1 -1
- package/src/lib/ui/components/menu-items.tsx +3 -1
- package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +5 -3
- package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +2 -2
- package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +208 -113
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.tsx +1 -1
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.tsx +1 -1
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +2 -3
- 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 +9 -8
- package/src/lib/utils/tldr/buildFromV1Document.ts +9 -2
- package/src/test/Editor.test.tsx +40 -29
- package/src/test/EraserTool.test.ts +10 -12
- package/src/test/TestEditor.ts +48 -47
- package/src/test/TldrawEditor.test.tsx +6 -4
- package/src/test/__snapshots__/drawing.test.ts.snap +3 -1257
- package/src/test/__snapshots__/resizing.test.ts.snap +3 -12
- package/src/test/arrows-megabus.test.tsx +1 -1
- package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +10 -10
- package/src/test/commands/cameraState.test.ts +299 -0
- package/src/test/commands/putContent.test.ts +79 -1
- package/src/test/commands/setCamera.test.ts +13 -11
- package/src/test/commands/stackShapes.test.ts +34 -8
- package/src/test/commands/zoomToBounds.test.ts +19 -3
- package/src/test/commands/zoomToSelection.test.ts +14 -3
- package/src/test/custom-clipping.test.ts +16 -9
- package/src/test/drawing.test.ts +17 -10
- package/src/test/flipShapes.test.ts +33 -0
- package/src/test/frames.test.ts +92 -0
- package/src/test/groups.test.tsx +1 -1
- package/src/test/modifiers.test.ts +6 -6
- package/src/test/resizing.test.ts +7 -9
- package/src/test/selection-omnibus.test.ts +2 -2
- package/src/test/spacebarPanning.test.ts +28 -10
- package/src/test/test-jsx.tsx +3 -0
- package/tldraw.css +41 -35
- package/dist-cjs/lib/shapes/shared/useForceSolid.js.map +0 -7
- package/dist-cjs/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.js.map +0 -7
- package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js +0 -32
- package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js.map +0 -7
- package/dist-cjs/lib/utils/text/textDirection.js +0 -51
- package/dist-cjs/lib/utils/text/textDirection.js.map +0 -7
- package/dist-esm/lib/shapes/shared/useForceSolid.mjs +0 -9
- package/dist-esm/lib/shapes/shared/useForceSolid.mjs.map +0 -7
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs +0 -8
- package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs.map +0 -7
- package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs +0 -12
- package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs.map +0 -7
- package/dist-esm/lib/utils/text/textDirection.mjs +0 -31
- package/dist-esm/lib/utils/text/textDirection.mjs.map +0 -7
- package/src/lib/shapes/shared/useForceSolid.ts +0 -6
- package/src/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.ts +0 -10
- package/src/lib/ui/components/TopPanel/DefaultTopPanel.tsx +0 -10
- package/src/lib/utils/text/textDirection.ts +0 -32
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/utils/tldr/buildFromV1Document.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n\tAssetRecordType,\n\tEditor,\n\tPageRecordType,\n\tTLArrowShape,\n\tTLArrowShapeArrowheadStyle,\n\tTLAsset,\n\tTLAssetId,\n\tTLDefaultColorStyle,\n\tTLDefaultDashStyle,\n\tTLDefaultFontStyle,\n\tTLDefaultHorizontalAlignStyle,\n\tTLDefaultSizeStyle,\n\tTLDefaultTextAlignStyle,\n\tTLGeoShape,\n\tTLPageId,\n\tTLShapeId,\n\tVec,\n\tVecModel,\n\tclamp,\n\tcreateShapeId,\n\tfetch,\n\tstructuredClone,\n\ttoRichText,\n} from '@tldraw/editor'\nimport { getArrowBindings } from '../../shapes/arrow/shared'\n\nconst TLDRAW_V1_VERSION = 15.5\n\n/** @internal */\nexport function buildFromV1Document(editor: Editor, _document: unknown) {\n\tlet document = _document as TLV1Document\n\teditor.run(() => {\n\t\tdocument = migrate(document, TLDRAW_V1_VERSION)\n\t\t// Cancel any interactions / states\n\t\teditor.cancel().cancel().cancel().cancel()\n\n\t\tconst firstPageId = editor.getPages()[0].id\n\n\t\t// Set the current page to the first page\n\t\teditor.setCurrentPage(firstPageId)\n\n\t\t// Delete all pages except first page\n\t\tfor (const page of editor.getPages().slice(1)) {\n\t\t\teditor.deletePage(page.id)\n\t\t}\n\n\t\t// Delete all of the shapes on the current page\n\t\teditor.selectAll()\n\t\teditor.deleteShapes(editor.getSelectedShapeIds())\n\n\t\t// Create assets\n\t\tconst v1AssetIdsToV2AssetIds = new Map<string, TLAssetId>()\n\n\t\tObject.values(document.assets ?? {}).forEach((v1Asset) => {\n\t\t\tswitch (v1Asset.type) {\n\t\t\t\tcase TLV1AssetType.Image: {\n\t\t\t\t\tconst assetId: TLAssetId = AssetRecordType.createId()\n\t\t\t\t\tv1AssetIdsToV2AssetIds.set(v1Asset.id, assetId)\n\t\t\t\t\tconst placeholderAsset: TLAsset = {\n\t\t\t\t\t\tid: assetId,\n\t\t\t\t\t\ttypeName: 'asset',\n\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tw: coerceDimension(v1Asset.size[0]),\n\t\t\t\t\t\t\th: coerceDimension(v1Asset.size[1]),\n\t\t\t\t\t\t\tname: v1Asset.fileName ?? 'Untitled',\n\t\t\t\t\t\t\tisAnimated: false,\n\t\t\t\t\t\t\tmimeType: null,\n\t\t\t\t\t\t\tsrc: v1Asset.src,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmeta: {},\n\t\t\t\t\t}\n\t\t\t\t\teditor.createAssets([placeholderAsset])\n\t\t\t\t\ttryMigrateAsset(editor, placeholderAsset)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase TLV1AssetType.Video:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst assetId: TLAssetId = AssetRecordType.createId()\n\t\t\t\t\t\tv1AssetIdsToV2AssetIds.set(v1Asset.id, assetId)\n\t\t\t\t\t\teditor.createAssets([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: assetId,\n\t\t\t\t\t\t\t\ttypeName: 'asset',\n\t\t\t\t\t\t\t\ttype: 'video',\n\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Asset.size[0]),\n\t\t\t\t\t\t\t\t\th: coerceDimension(v1Asset.size[1]),\n\t\t\t\t\t\t\t\t\tname: v1Asset.fileName ?? 'Untitled',\n\t\t\t\t\t\t\t\t\tisAnimated: true,\n\t\t\t\t\t\t\t\t\tmimeType: null,\n\t\t\t\t\t\t\t\t\tsrc: v1Asset.src,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tmeta: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t})\n\n\t\t// Create pages\n\n\t\tconst v1PageIdsToV2PageIds = new Map<string, TLPageId>()\n\n\t\tObject.values(document.pages ?? {})\n\t\t\t.sort((a, b) => ((a.childIndex ?? 1) < (b.childIndex ?? 1) ? -1 : 1))\n\t\t\t.forEach((v1Page, i) => {\n\t\t\t\tif (i === 0) {\n\t\t\t\t\tv1PageIdsToV2PageIds.set(v1Page.id, editor.getCurrentPageId())\n\t\t\t\t} else {\n\t\t\t\t\tconst pageId = PageRecordType.createId()\n\t\t\t\t\tv1PageIdsToV2PageIds.set(v1Page.id, pageId)\n\t\t\t\t\teditor.createPage({ name: v1Page.name ?? 'Page', id: pageId })\n\t\t\t\t}\n\t\t\t})\n\n\t\tObject.values(document.pages ?? {})\n\t\t\t.sort((a, b) => ((a.childIndex ?? 1) < (b.childIndex ?? 1) ? -1 : 1))\n\t\t\t.forEach((v1Page) => {\n\t\t\t\t// Set the current page id to the current page\n\t\t\t\teditor.setCurrentPage(v1PageIdsToV2PageIds.get(v1Page.id)!)\n\n\t\t\t\tconst v1ShapeIdsToV2ShapeIds = new Map<string, TLShapeId>()\n\t\t\t\tconst v1GroupShapeIdsToV1ChildIds = new Map<string, string[]>()\n\n\t\t\t\tconst v1Shapes = Object.values(v1Page.shapes ?? {})\n\t\t\t\t\t.sort((a, b) => (a.childIndex < b.childIndex ? -1 : 1))\n\t\t\t\t\t.slice(0, editor.options.maxShapesPerPage)\n\n\t\t\t\t// Groups only\n\t\t\t\tv1Shapes.forEach((v1Shape) => {\n\t\t\t\t\tif (v1Shape.type !== TLV1ShapeType.Group) return\n\n\t\t\t\t\tconst shapeId = createShapeId()\n\t\t\t\t\tv1ShapeIdsToV2ShapeIds.set(v1Shape.id, shapeId)\n\t\t\t\t\tv1GroupShapeIdsToV1ChildIds.set(v1Shape.id, [])\n\t\t\t\t})\n\n\t\t\t\tfunction decideNotToCreateShape(v1Shape: TLV1Shape) {\n\t\t\t\t\tv1ShapeIdsToV2ShapeIds.delete(v1Shape.id)\n\t\t\t\t\tconst v1GroupParent = v1GroupShapeIdsToV1ChildIds.has(v1Shape.parentId)\n\t\t\t\t\tif (v1GroupParent) {\n\t\t\t\t\t\tconst ids = v1GroupShapeIdsToV1ChildIds\n\t\t\t\t\t\t\t.get(v1Shape.parentId)!\n\t\t\t\t\t\t\t.filter((id) => id !== v1Shape.id)\n\t\t\t\t\t\tv1GroupShapeIdsToV1ChildIds.set(v1Shape.parentId, ids)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Non-groups only\n\t\t\t\tv1Shapes.forEach((v1Shape) => {\n\t\t\t\t\t// Skip groups for now, we'll create groups via the app's API\n\t\t\t\t\tif (v1Shape.type === TLV1ShapeType.Group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tconst shapeId = createShapeId()\n\t\t\t\t\tv1ShapeIdsToV2ShapeIds.set(v1Shape.id, shapeId)\n\n\t\t\t\t\tif (v1Shape.parentId !== v1Page.id) {\n\t\t\t\t\t\t// If the parent is a group, then add the shape to the group's children\n\t\t\t\t\t\tif (v1GroupShapeIdsToV1ChildIds.has(v1Shape.parentId)) {\n\t\t\t\t\t\t\tv1GroupShapeIdsToV1ChildIds.get(v1Shape.parentId)!.push(v1Shape.id)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.warn('parent does not exist', v1Shape)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// First, try to find the shape's parent among the existing groups\n\t\t\t\t\tconst parentId = v1PageIdsToV2PageIds.get(v1Page.id)!\n\n\t\t\t\t\tconst inCommon = {\n\t\t\t\t\t\tid: shapeId,\n\t\t\t\t\t\tparentId,\n\t\t\t\t\t\tx: coerceNumber(v1Shape.point[0]),\n\t\t\t\t\t\ty: coerceNumber(v1Shape.point[1]),\n\t\t\t\t\t\trotation: 0,\n\t\t\t\t\t\tisLocked: !!v1Shape.isLocked,\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (v1Shape.type) {\n\t\t\t\t\t\tcase TLV1ShapeType.Sticky: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'note',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.text ?? ''),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\talign: getV2Align(v1Shape.style.textAlign),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Rectangle: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tgeo: 'rectangle',\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.size[0]),\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.size[1]),\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t\tfill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tlabelColor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\talign: 'middle',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tconst pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id)!\n\n\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tif (pageBoundsBeforeLabel.width === pageBoundsBeforeLabel.height) {\n\t\t\t\t\t\t\t\tconst shape = editor.getShape<TLGeoShape>(inCommon.id)!\n\t\t\t\t\t\t\t\tconst { growY } = shape.props\n\t\t\t\t\t\t\t\tconst w = coerceDimension(shape.props.w)\n\t\t\t\t\t\t\t\tconst h = coerceDimension(shape.props.h)\n\t\t\t\t\t\t\t\tconst newW = w + growY / 2\n\t\t\t\t\t\t\t\tconst newH = h + growY / 2\n\n\t\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\t\tx: coerceNumber(shape.x) - (newW - w) / 2,\n\t\t\t\t\t\t\t\t\t\ty: coerceNumber(shape.y) - (newH - h) / 2,\n\t\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\t\tw: newW,\n\t\t\t\t\t\t\t\t\t\t\th: newH,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Triangle: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tgeo: 'triangle',\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.size[0]),\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.size[1]),\n\t\t\t\t\t\t\t\t\t\tfill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tlabelColor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\talign: 'middle',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tconst pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id)!\n\n\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tif (pageBoundsBeforeLabel.width === pageBoundsBeforeLabel.height) {\n\t\t\t\t\t\t\t\tconst shape = editor.getShape<TLGeoShape>(inCommon.id)!\n\t\t\t\t\t\t\t\tconst { growY } = shape.props\n\t\t\t\t\t\t\t\tconst w = coerceDimension(shape.props.w)\n\t\t\t\t\t\t\t\tconst h = coerceDimension(shape.props.h)\n\t\t\t\t\t\t\t\tconst newW = w + growY / 2\n\t\t\t\t\t\t\t\tconst newH = h + growY / 2\n\n\t\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\t\tx: coerceNumber(shape.x) - (newW - w) / 2,\n\t\t\t\t\t\t\t\t\t\ty: coerceNumber(shape.y) - (newH - h) / 2,\n\t\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\t\tw: newW,\n\t\t\t\t\t\t\t\t\t\t\th: newH,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Ellipse: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tgeo: 'ellipse',\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.radius[0]) * 2,\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.radius[1]) * 2,\n\t\t\t\t\t\t\t\t\t\tfill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tlabelColor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\talign: 'middle',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tconst pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id)!\n\n\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tif (pageBoundsBeforeLabel.width === pageBoundsBeforeLabel.height) {\n\t\t\t\t\t\t\t\tconst shape = editor.getShape<TLGeoShape>(inCommon.id)!\n\t\t\t\t\t\t\t\tconst { growY } = shape.props\n\t\t\t\t\t\t\t\tconst w = coerceDimension(shape.props.w)\n\t\t\t\t\t\t\t\tconst h = coerceDimension(shape.props.h)\n\t\t\t\t\t\t\t\tconst newW = w + growY / 2\n\t\t\t\t\t\t\t\tconst newH = h + growY / 2\n\n\t\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\t\tx: coerceNumber(shape.x) - (newW - w) / 2,\n\t\t\t\t\t\t\t\t\t\ty: coerceNumber(shape.y) - (newH - h) / 2,\n\t\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\t\tw: newW,\n\t\t\t\t\t\t\t\t\t\t\th: newH,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Draw: {\n\t\t\t\t\t\t\tif (v1Shape.points.length === 0) {\n\t\t\t\t\t\t\t\tdecideNotToCreateShape(v1Shape)\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'draw',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tfill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\tisPen: false,\n\t\t\t\t\t\t\t\t\t\tisComplete: v1Shape.isComplete,\n\t\t\t\t\t\t\t\t\t\tsegments: [{ type: 'free', points: v1Shape.points.map(getV2Point) }],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Arrow: {\n\t\t\t\t\t\t\tconst v1Bend = coerceNumber(v1Shape.bend)\n\t\t\t\t\t\t\tconst v1Start = getV2Point(v1Shape.handles.start.point)\n\t\t\t\t\t\t\tconst v1End = getV2Point(v1Shape.handles.end.point)\n\t\t\t\t\t\t\tconst dist = Vec.Dist(v1Start, v1End)\n\t\t\t\t\t\t\tconst v2Bend = (dist * -v1Bend) / 2\n\n\t\t\t\t\t\t\t// Could also be a line... but we'll use it as an arrow anyway\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'arrow',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tlabelColor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\tarrowheadStart: getV2Arrowhead(v1Shape.decorations?.start),\n\t\t\t\t\t\t\t\t\t\tarrowheadEnd: getV2Arrowhead(v1Shape.decorations?.end),\n\t\t\t\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\t\t\t\tx: coerceNumber(v1Shape.handles.start.point[0]),\n\t\t\t\t\t\t\t\t\t\t\ty: coerceNumber(v1Shape.handles.start.point[1]),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\t\t\t\tx: coerceNumber(v1Shape.handles.end.point[0]),\n\t\t\t\t\t\t\t\t\t\t\ty: coerceNumber(v1Shape.handles.end.point[1]),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tbend: v2Bend,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Text: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.text ?? ' '),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2TextSize(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\ttextAlign: getV2TextAlign(v1Shape.style.textAlign),\n\t\t\t\t\t\t\t\t\t\tscale: v1Shape.style.scale ?? 1,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Image: {\n\t\t\t\t\t\t\tconst assetId = v1AssetIdsToV2AssetIds.get(v1Shape.assetId)\n\n\t\t\t\t\t\t\tif (!assetId) {\n\t\t\t\t\t\t\t\tconsole.warn('Could not find asset id', v1Shape.assetId)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.size[0]),\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.size[1]),\n\t\t\t\t\t\t\t\t\t\tassetId,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Video: {\n\t\t\t\t\t\t\tconst assetId = v1AssetIdsToV2AssetIds.get(v1Shape.assetId)\n\n\t\t\t\t\t\t\tif (!assetId) {\n\t\t\t\t\t\t\t\tconsole.warn('Could not find asset id', v1Shape.assetId)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'video',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.size[0]),\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.size[1]),\n\t\t\t\t\t\t\t\t\t\tassetId,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst rotation = coerceNumber(v1Shape.rotation)\n\n\t\t\t\t\tif (rotation !== 0) {\n\t\t\t\t\t\teditor.select(shapeId)\n\t\t\t\t\t\teditor.rotateShapesBy([shapeId], rotation)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t// Create groups\n\t\t\t\tv1GroupShapeIdsToV1ChildIds.forEach((v1ChildIds, v1GroupId) => {\n\t\t\t\t\tconst v2ChildShapeIds = v1ChildIds.map((id) => v1ShapeIdsToV2ShapeIds.get(id)!)\n\t\t\t\t\tconst v2GroupId = v1ShapeIdsToV2ShapeIds.get(v1GroupId)!\n\t\t\t\t\teditor.groupShapes(v2ChildShapeIds, { groupId: v2GroupId })\n\n\t\t\t\t\tconst v1Group = v1Page.shapes[v1GroupId]\n\t\t\t\t\tconst rotation = coerceNumber(v1Group.rotation)\n\n\t\t\t\t\tif (rotation !== 0) {\n\t\t\t\t\t\teditor.select(v2GroupId)\n\t\t\t\t\t\teditor.rotateShapesBy([v2GroupId], rotation)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t// Bind arrows to shapes\n\n\t\t\t\tv1Shapes.forEach((v1Shape) => {\n\t\t\t\t\tif (v1Shape.type !== TLV1ShapeType.Arrow) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tconst v2ShapeId = v1ShapeIdsToV2ShapeIds.get(v1Shape.id)!\n\t\t\t\t\tconst util = editor.getShapeUtil<TLArrowShape>('arrow')\n\n\t\t\t\t\t// dumb but necessary\n\t\t\t\t\teditor.inputs.ctrlKey = false\n\n\t\t\t\t\tfor (const handleId of ['start', 'end'] as const) {\n\t\t\t\t\t\tconst bindingId = v1Shape.handles[handleId].bindingId\n\t\t\t\t\t\tif (bindingId) {\n\t\t\t\t\t\t\tconst binding = v1Page.bindings[bindingId]\n\t\t\t\t\t\t\tif (!binding) {\n\t\t\t\t\t\t\t\t// arrow has a reference to a binding that no longer exists\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst targetId = v1ShapeIdsToV2ShapeIds.get(binding.toId)!\n\n\t\t\t\t\t\t\tconst targetShape = editor.getShape(targetId)!\n\n\t\t\t\t\t\t\t// (unexpected) We didn't create the target shape\n\t\t\t\t\t\t\tif (!targetShape) continue\n\n\t\t\t\t\t\t\tif (targetId) {\n\t\t\t\t\t\t\t\tconst bounds = editor.getShapePageBounds(targetId)!\n\n\t\t\t\t\t\t\t\tconst v2ShapeFresh = editor.getShape<TLArrowShape>(v2ShapeId)!\n\n\t\t\t\t\t\t\t\tconst nx = clamp((coerceNumber(binding.point[0]) + 0.5) / 2, 0.2, 0.8)\n\t\t\t\t\t\t\t\tconst ny = clamp((coerceNumber(binding.point[1]) + 0.5) / 2, 0.2, 0.8)\n\n\t\t\t\t\t\t\t\tconst point = editor.getPointInShapeSpace(v2ShapeFresh, {\n\t\t\t\t\t\t\t\t\tx: bounds.minX + bounds.width * nx,\n\t\t\t\t\t\t\t\t\ty: bounds.minY + bounds.height * ny,\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tconst handles = editor.getShapeHandles(v2ShapeFresh)!\n\t\t\t\t\t\t\t\tconst change = util.onHandleDrag!(v2ShapeFresh, {\n\t\t\t\t\t\t\t\t\thandle: {\n\t\t\t\t\t\t\t\t\t\t...handles.find((h) => h.id === handleId)!,\n\t\t\t\t\t\t\t\t\t\tx: point.x,\n\t\t\t\t\t\t\t\t\t\ty: point.y,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tisPrecise: point.x !== 0.5 || point.y !== 0.5,\n\t\t\t\t\t\t\t\t\tisCreatingShape: true,\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tif (change) {\n\t\t\t\t\t\t\t\t\teditor.updateShape(change)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst freshBinding = getArrowBindings(\n\t\t\t\t\t\t\t\t\teditor,\n\t\t\t\t\t\t\t\t\teditor.getShape<TLArrowShape>(v2ShapeId)!\n\t\t\t\t\t\t\t\t)[handleId]\n\t\t\t\t\t\t\t\tif (freshBinding) {\n\t\t\t\t\t\t\t\t\tconst updatedFreshBinding = structuredClone(freshBinding)\n\t\t\t\t\t\t\t\t\tif (binding.distance === 0) {\n\t\t\t\t\t\t\t\t\t\tupdatedFreshBinding.props.isExact = true\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (updatedFreshBinding.toId !== targetId) {\n\t\t\t\t\t\t\t\t\t\tupdatedFreshBinding.toId = targetId\n\t\t\t\t\t\t\t\t\t\tupdatedFreshBinding.props.normalizedAnchor = { x: nx, y: ny }\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\teditor.updateBinding(updatedFreshBinding)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\n\t\t// Set the current page to the first page again\n\t\teditor.setCurrentPage(firstPageId)\n\n\t\teditor.clearHistory()\n\t\teditor.selectNone()\n\n\t\tconst bounds = editor.getCurrentPageBounds()\n\t\tif (bounds) {\n\t\t\teditor.zoomToBounds(bounds, { targetZoom: 1 })\n\t\t}\n\t})\n}\n\nfunction coerceNumber(n: unknown): number {\n\tif (typeof n !== 'number') return 0\n\tif (Number.isNaN(n)) return 0\n\tif (!Number.isFinite(n)) return 0\n\treturn n\n}\n\nfunction coerceDimension(d: unknown): number {\n\tconst n = coerceNumber(d)\n\tif (n <= 0) return 1\n\treturn n\n}\n\n/**\n * We want to move assets over to our new S3 bucket & extract any relevant metadata. That process is\n * async though, where the rest of our migration is synchronous.\n *\n * We'll write placeholder assets to the app using the old asset URLs, then kick off a process async\n * to try and download the real assets, extract the metadata, and upload them to our new bucket.\n * It's not a big deal if this fails though.\n */\nasync function tryMigrateAsset(editor: Editor, placeholderAsset: TLAsset) {\n\ttry {\n\t\tif (placeholderAsset.type === 'bookmark' || !placeholderAsset.props.src) return\n\n\t\tconst response = await fetch(placeholderAsset.props.src)\n\t\tif (!response.ok) return\n\n\t\tconst file = new File([await response.blob()], placeholderAsset.props.name, {\n\t\t\ttype: response.headers.get('content-type') ?? placeholderAsset.props.mimeType ?? undefined,\n\t\t})\n\n\t\tconst newAsset = await editor.getAssetForExternalContent({ type: 'file', file })\n\t\tif (!newAsset) throw new Error('Could not get asset for external content')\n\t\tif (newAsset.type === 'bookmark') return\n\n\t\teditor.updateAssets([\n\t\t\t{\n\t\t\t\tid: placeholderAsset.id,\n\t\t\t\ttype: placeholderAsset.type,\n\t\t\t\tprops: {\n\t\t\t\t\t...newAsset.props,\n\t\t\t\t\tname: placeholderAsset.props.name,\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t} catch {\n\t\t// not a big deal, we'll just keep the placeholder asset\n\t}\n}\n\nfunction migrate(document: TLV1Document, newVersion: number): TLV1Document {\n\tconst { version = 0 } = document\n\n\tif (!document.assets) {\n\t\tdocument.assets = {}\n\t}\n\n\t// Remove unused assets when loading a document\n\tconst assetIdsInUse = new Set<string>()\n\n\tObject.values(document.pages).forEach((page) =>\n\t\tObject.values(page.shapes).forEach((shape) => {\n\t\t\tconst { parentId, children, assetId } = shape\n\n\t\t\tif (assetId) {\n\t\t\t\tassetIdsInUse.add(assetId)\n\t\t\t}\n\n\t\t\t// Fix missing parent bug\n\t\t\tif (parentId !== page.id && !page.shapes[parentId]) {\n\t\t\t\tconsole.warn('Encountered a shape with a missing parent!')\n\t\t\t\tshape.parentId = page.id\n\t\t\t}\n\n\t\t\tif (shape.type === TLV1ShapeType.Group && children) {\n\t\t\t\tchildren.forEach((childId) => {\n\t\t\t\t\tif (!page.shapes[childId]) {\n\t\t\t\t\t\tconsole.warn('Encountered a parent with a missing child!', shape.id, childId)\n\t\t\t\t\t\tchildren?.splice(children.indexOf(childId), 1)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t// TODO: Remove the shape if it has no children\n\t\t\t}\n\t\t})\n\t)\n\n\tObject.keys(document.assets).forEach((assetId) => {\n\t\tif (!assetIdsInUse.has(assetId)) {\n\t\t\tdelete document.assets[assetId]\n\t\t}\n\t})\n\n\tif (version !== newVersion) {\n\t\tif (version < 14) {\n\t\t\tObject.values(document.pages).forEach((page) => {\n\t\t\t\tObject.values(page.shapes)\n\t\t\t\t\t.filter((shape) => shape.type === TLV1ShapeType.Text)\n\t\t\t\t\t.forEach((shape) => {\n\t\t\t\t\t\tif ((shape as TLV1TextShape).style.font === undefined) {\n\t\t\t\t\t\t\t;(shape as TLV1TextShape).style.font = TLV1FontStyle.Script\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\t// Lowercase styles, move binding meta to binding\n\t\tif (version <= 13) {\n\t\t\tObject.values(document.pages).forEach((page) => {\n\t\t\t\tObject.values(page.bindings).forEach((binding) => {\n\t\t\t\t\tObject.assign(binding, (binding as any).meta)\n\t\t\t\t})\n\n\t\t\t\tObject.values(page.shapes).forEach((shape) => {\n\t\t\t\t\tObject.entries(shape.style).forEach(([id, style]) => {\n\t\t\t\t\t\tif (typeof style === 'string') {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tshape.style[id] = style.toLowerCase()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tif (shape.type === TLV1ShapeType.Arrow) {\n\t\t\t\t\t\tif (shape.decorations) {\n\t\t\t\t\t\t\tObject.entries(shape.decorations).forEach(([id, decoration]) => {\n\t\t\t\t\t\t\t\tif ((decoration as unknown) === 'Arrow') {\n\t\t\t\t\t\t\t\t\tshape.decorations = {\n\t\t\t\t\t\t\t\t\t\t...shape.decorations,\n\t\t\t\t\t\t\t\t\t\t[id]: TLV1Decoration.Arrow,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\t// Add document name and file system handle\n\t\tif (version <= 13.1 && document.name == null) {\n\t\t\tdocument.name = 'New Document'\n\t\t}\n\n\t\tif (version < 15 && document.assets == null) {\n\t\t\tdocument.assets = {}\n\t\t}\n\n\t\tObject.values(document.pages).forEach((page) => {\n\t\t\tObject.values(page.shapes).forEach((shape) => {\n\t\t\t\tif (version < 15.2) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(shape.type === TLV1ShapeType.Image || shape.type === TLV1ShapeType.Video) &&\n\t\t\t\t\t\tshape.style.isFilled == null\n\t\t\t\t\t) {\n\t\t\t\t\t\tshape.style.isFilled = true\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (version < 15.3) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tshape.type === TLV1ShapeType.Rectangle ||\n\t\t\t\t\t\tshape.type === TLV1ShapeType.Triangle ||\n\t\t\t\t\t\tshape.type === TLV1ShapeType.Ellipse ||\n\t\t\t\t\t\tshape.type === TLV1ShapeType.Arrow\n\t\t\t\t\t) {\n\t\t\t\t\t\tif ('text' in shape && typeof shape.text === 'string') {\n\t\t\t\t\t\t\tshape.label = shape.text\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!shape.label) {\n\t\t\t\t\t\t\tshape.label = ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!shape.labelPoint) {\n\t\t\t\t\t\t\tshape.labelPoint = [0.5, 0.5]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t// Cleanup\n\tObject.values(document.pageStates).forEach((pageState) => {\n\t\tpageState.selectedIds = pageState.selectedIds.filter((id) => {\n\t\t\treturn document.pages[pageState.id].shapes[id] !== undefined\n\t\t})\n\t\tpageState.bindingId = undefined\n\t\tpageState.editingId = undefined\n\t\tpageState.hoveredId = undefined\n\t\tpageState.pointedId = undefined\n\t})\n\n\tdocument.version = newVersion\n\n\treturn document\n}\n\n/* -------------------- TLV1 Types -------------------- */\n\n/** @internal */\nexport interface TLV1Handle {\n\tid: string\n\tindex: number\n\tpoint: number[]\n\tcanBind?: boolean\n\tbindingId?: string\n}\n\n/** @internal */\nexport interface TLV1BaseBinding {\n\tid: string\n\ttoId: string\n\tfromId: string\n}\n\n/** @internal */\nexport enum TLV1ShapeType {\n\tSticky = 'sticky',\n\tEllipse = 'ellipse',\n\tRectangle = 'rectangle',\n\tTriangle = 'triangle',\n\tDraw = 'draw',\n\tArrow = 'arrow',\n\tText = 'text',\n\tGroup = 'group',\n\tImage = 'image',\n\tVideo = 'video',\n}\n\n/** @internal */\nexport enum TLV1ColorStyle {\n\tWhite = 'white',\n\tLightGray = 'lightGray',\n\tGray = 'gray',\n\tBlack = 'black',\n\tGreen = 'green',\n\tCyan = 'cyan',\n\tBlue = 'blue',\n\tIndigo = 'indigo',\n\tViolet = 'violet',\n\tRed = 'red',\n\tOrange = 'orange',\n\tYellow = 'yellow',\n}\n\n/** @internal */\nexport enum TLV1SizeStyle {\n\tSmall = 'small',\n\tMedium = 'medium',\n\tLarge = 'large',\n}\n\n/** @internal */\nexport enum TLV1DashStyle {\n\tDraw = 'draw',\n\tSolid = 'solid',\n\tDashed = 'dashed',\n\tDotted = 'dotted',\n}\n\n/** @internal */\nexport enum TLV1AlignStyle {\n\tStart = 'start',\n\tMiddle = 'middle',\n\tEnd = 'end',\n\tJustify = 'justify',\n}\n\n/** @internal */\nexport enum TLV1FontStyle {\n\tScript = 'script',\n\tSans = 'sans',\n\tSerif = 'serif',\n\tMono = 'mono',\n}\n\n/** @internal */\nexport interface TLV1ShapeStyles {\n\tcolor: TLV1ColorStyle\n\tsize: TLV1SizeStyle\n\tdash: TLV1DashStyle\n\tfont?: TLV1FontStyle\n\ttextAlign?: TLV1AlignStyle\n\tisFilled?: boolean\n\tscale?: number\n}\n\n/** @internal */\nexport interface TLV1BaseShape {\n\tid: string\n\tparentId: string\n\tchildIndex: number\n\tname: string\n\tpoint: number[]\n\tassetId?: string\n\trotation?: number\n\tchildren?: string[]\n\tisGhost?: boolean\n\tisHidden?: boolean\n\tisLocked?: boolean\n\tisGenerated?: boolean\n\tisAspectRatioLocked?: boolean\n\tstyle: TLV1ShapeStyles\n\ttype: TLV1ShapeType\n\tlabel?: string\n\thandles?: Record<string, TLV1Handle>\n}\n\n/** @internal */\nexport interface TLV1DrawShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Draw\n\tpoints: number[][]\n\tisComplete: boolean\n}\n\n/** @internal */\nexport interface TLV1RectangleShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Rectangle\n\tsize: number[]\n\tlabel?: string\n\tlabelPoint?: number[]\n}\n\n/** @internal */\nexport interface TLV1EllipseShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Ellipse\n\tradius: number[]\n\tlabel?: string\n\tlabelPoint?: number[]\n}\n\n/** @internal */\nexport interface TLV1TriangleShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Triangle\n\tsize: number[]\n\tlabel?: string\n\tlabelPoint?: number[]\n}\n\n/** @internal */\nexport enum TLV1Decoration {\n\tArrow = 'arrow',\n}\n\n// The shape created with the arrow tool\n/** @internal */\nexport interface TLV1ArrowShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Arrow\n\tbend: number\n\thandles: {\n\t\tstart: TLV1Handle\n\t\tbend: TLV1Handle\n\t\tend: TLV1Handle\n\t}\n\tdecorations?: {\n\t\tstart?: TLV1Decoration\n\t\tend?: TLV1Decoration\n\t\tmiddle?: TLV1Decoration\n\t}\n\tlabel?: string\n\tlabelPoint?: number[]\n}\n\n/** @internal */\nexport interface TLV1ArrowBinding extends TLV1BaseBinding {\n\thandleId: keyof TLV1ArrowShape['handles']\n\tdistance: number\n\tpoint: number[]\n}\n\n/** @internal */\nexport type TLV1Binding = TLV1ArrowBinding\n\n/** @internal */\nexport interface TLV1ImageShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Image\n\tsize: number[]\n\tassetId: string\n}\n\n/** @internal */\nexport interface TLV1VideoShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Video\n\tsize: number[]\n\tassetId: string\n\tisPlaying: boolean\n\tcurrentTime: number\n}\n\n// The shape created by the text tool\n/** @internal */\nexport interface TLV1TextShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Text\n\ttext: string\n}\n\n// The shape created by the sticky tool\n/** @internal */\nexport interface TLV1StickyShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Sticky\n\tsize: number[]\n\ttext: string\n}\n\n// The shape created when multiple shapes are grouped\n/** @internal */\nexport interface TLV1GroupShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Group\n\tsize: number[]\n\tchildren: string[]\n}\n\n/** @internal */\nexport type TLV1Shape =\n\t| TLV1RectangleShape\n\t| TLV1EllipseShape\n\t| TLV1TriangleShape\n\t| TLV1DrawShape\n\t| TLV1ArrowShape\n\t| TLV1TextShape\n\t| TLV1GroupShape\n\t| TLV1StickyShape\n\t| TLV1ImageShape\n\t| TLV1VideoShape\n\n/** @internal */\nexport interface TLV1Page {\n\tid: string\n\tname?: string\n\tchildIndex?: number\n\tshapes: Record<string, TLV1Shape>\n\tbindings: Record<string, TLV1Binding>\n}\n\n/** @internal */\nexport interface TLV1Bounds {\n\tminX: number\n\tminY: number\n\tmaxX: number\n\tmaxY: number\n\twidth: number\n\theight: number\n\trotation?: number\n}\n\n/** @internal */\nexport interface TLV1PageState {\n\tid: string\n\tselectedIds: string[]\n\tcamera: {\n\t\tpoint: number[]\n\t\tzoom: number\n\t}\n\tbrush?: TLV1Bounds | null\n\tpointedId?: string | null\n\thoveredId?: string | null\n\teditingId?: string | null\n\tbindingId?: string | null\n}\n\n/** @internal */\nexport enum TLV1AssetType {\n\tImage = 'image',\n\tVideo = 'video',\n}\n\n/** @internal */\nexport interface TLV1ImageAsset extends TLV1BaseAsset {\n\ttype: TLV1AssetType.Image\n\tfileName: string\n\tsrc: string\n\tsize: number[]\n}\n\n/** @internal */\nexport interface TLV1VideoAsset extends TLV1BaseAsset {\n\ttype: TLV1AssetType.Video\n\tfileName: string\n\tsrc: string\n\tsize: number[]\n}\n\n/** @internal */\nexport interface TLV1BaseAsset {\n\tid: string\n\ttype: string\n}\n\n/** @internal */\nexport type TLV1Asset = TLV1ImageAsset | TLV1VideoAsset\n\n/** @internal */\nexport interface TLV1Document {\n\tid: string\n\tname: string\n\tversion: number\n\tpages: Record<string, TLV1Page>\n\tpageStates: Record<string, TLV1PageState>\n\tassets: Record<string, TLV1Asset>\n}\n\n/* ------------------ Translations ------------------ */\n\nconst v1ColorsToV2Colors: Record<TLV1ColorStyle, TLDefaultColorStyle> = {\n\t[TLV1ColorStyle.White]: 'black',\n\t[TLV1ColorStyle.Black]: 'black',\n\t[TLV1ColorStyle.LightGray]: 'grey',\n\t[TLV1ColorStyle.Gray]: 'grey',\n\t[TLV1ColorStyle.Green]: 'light-green',\n\t[TLV1ColorStyle.Cyan]: 'green',\n\t[TLV1ColorStyle.Blue]: 'light-blue',\n\t[TLV1ColorStyle.Indigo]: 'blue',\n\t[TLV1ColorStyle.Orange]: 'orange',\n\t[TLV1ColorStyle.Yellow]: 'yellow',\n\t[TLV1ColorStyle.Red]: 'red',\n\t[TLV1ColorStyle.Violet]: 'light-violet',\n}\n\nconst v1FontsToV2Fonts: Record<TLV1FontStyle, TLDefaultFontStyle> = {\n\t[TLV1FontStyle.Mono]: 'mono',\n\t[TLV1FontStyle.Sans]: 'sans',\n\t[TLV1FontStyle.Script]: 'draw',\n\t[TLV1FontStyle.Serif]: 'serif',\n}\n\nconst v1AlignsToV2Aligns: Record<TLV1AlignStyle, TLDefaultHorizontalAlignStyle> = {\n\t[TLV1AlignStyle.Start]: 'start',\n\t[TLV1AlignStyle.Middle]: 'middle',\n\t[TLV1AlignStyle.End]: 'end',\n\t[TLV1AlignStyle.Justify]: 'start',\n}\n\nconst v1TextAlignsToV2TextAligns: Record<TLV1AlignStyle, TLDefaultTextAlignStyle> = {\n\t[TLV1AlignStyle.Start]: 'start',\n\t[TLV1AlignStyle.Middle]: 'middle',\n\t[TLV1AlignStyle.End]: 'end',\n\t[TLV1AlignStyle.Justify]: 'start',\n}\n\nconst v1TextSizesToV2TextSizes: Record<TLV1SizeStyle, TLDefaultSizeStyle> = {\n\t[TLV1SizeStyle.Small]: 's',\n\t[TLV1SizeStyle.Medium]: 'l',\n\t[TLV1SizeStyle.Large]: 'xl',\n}\n\nconst v1SizesToV2Sizes: Record<TLV1SizeStyle, TLDefaultSizeStyle> = {\n\t[TLV1SizeStyle.Small]: 'm',\n\t[TLV1SizeStyle.Medium]: 'l',\n\t[TLV1SizeStyle.Large]: 'xl',\n}\n\nconst v1DashesToV2Dashes: Record<TLV1DashStyle, TLDefaultDashStyle> = {\n\t[TLV1DashStyle.Solid]: 'solid',\n\t[TLV1DashStyle.Dashed]: 'dashed',\n\t[TLV1DashStyle.Dotted]: 'dotted',\n\t[TLV1DashStyle.Draw]: 'draw',\n}\n\nfunction getV2Color(color: TLV1ColorStyle | undefined): TLDefaultColorStyle {\n\treturn color ? (v1ColorsToV2Colors[color] ?? 'black') : 'black'\n}\n\nfunction getV2Font(font: TLV1FontStyle | undefined): TLDefaultFontStyle {\n\treturn font ? (v1FontsToV2Fonts[font] ?? 'draw') : 'draw'\n}\n\nfunction getV2Align(align: TLV1AlignStyle | undefined): TLDefaultHorizontalAlignStyle {\n\treturn align ? (v1AlignsToV2Aligns[align] ?? 'middle') : 'middle'\n}\n\nfunction getV2TextAlign(align: TLV1AlignStyle | undefined): TLDefaultTextAlignStyle {\n\treturn align ? (v1TextAlignsToV2TextAligns[align] ?? 'middle') : 'middle'\n}\n\nfunction getV2TextSize(size: TLV1SizeStyle | undefined): TLDefaultSizeStyle {\n\treturn size ? (v1TextSizesToV2TextSizes[size] ?? 'm') : 'm'\n}\n\nfunction getV2Size(size: TLV1SizeStyle | undefined): TLDefaultSizeStyle {\n\treturn size ? (v1SizesToV2Sizes[size] ?? 'l') : 'l'\n}\n\nfunction getV2Dash(dash: TLV1DashStyle | undefined): TLDefaultDashStyle {\n\treturn dash ? (v1DashesToV2Dashes[dash] ?? 'draw') : 'draw'\n}\n\nfunction getV2Point(point: number[]): VecModel {\n\treturn {\n\t\tx: coerceNumber(point[0]),\n\t\ty: coerceNumber(point[1]),\n\t\tz: point[2] == null ? 0.5 : coerceNumber(point[2]),\n\t}\n}\n\nfunction getV2Arrowhead(decoration: TLV1Decoration | undefined): TLArrowShapeArrowheadStyle {\n\treturn decoration === TLV1Decoration.Arrow ? 'arrow' : 'none'\n}\n\nfunction getV2Fill(isFilled: boolean | undefined, color: TLV1ColorStyle) {\n\treturn isFilled\n\t\t? color === TLV1ColorStyle.Black || color === TLV1ColorStyle.White\n\t\t\t? 'semi'\n\t\t\t: 'solid'\n\t\t: 'none'\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import {\n\tAssetRecordType,\n\tEditor,\n\tPageRecordType,\n\tTLArrowShape,\n\tTLArrowShapeArrowheadStyle,\n\tTLAsset,\n\tTLAssetId,\n\tTLDefaultColorStyle,\n\tTLDefaultDashStyle,\n\tTLDefaultFontStyle,\n\tTLDefaultHorizontalAlignStyle,\n\tTLDefaultSizeStyle,\n\tTLDefaultTextAlignStyle,\n\tTLGeoShape,\n\tTLPageId,\n\tTLShapeId,\n\tVec,\n\tVecModel,\n\tb64Vecs,\n\tclamp,\n\tcreateShapeId,\n\tfetch,\n\tstructuredClone,\n\ttoRichText,\n} from '@tldraw/editor'\nimport { getArrowBindings } from '../../shapes/arrow/shared'\n\nconst TLDRAW_V1_VERSION = 15.5\n\n/** @internal */\nexport function buildFromV1Document(editor: Editor, _document: unknown) {\n\tlet document = _document as TLV1Document\n\teditor.run(() => {\n\t\tdocument = migrate(document, TLDRAW_V1_VERSION)\n\t\t// Cancel any interactions / states\n\t\teditor.cancel().cancel().cancel().cancel()\n\n\t\tconst firstPageId = editor.getPages()[0].id\n\n\t\t// Set the current page to the first page\n\t\teditor.setCurrentPage(firstPageId)\n\n\t\t// Delete all pages except first page\n\t\tfor (const page of editor.getPages().slice(1)) {\n\t\t\teditor.deletePage(page.id)\n\t\t}\n\n\t\t// Delete all of the shapes on the current page\n\t\teditor.selectAll()\n\t\teditor.deleteShapes(editor.getSelectedShapeIds())\n\n\t\t// Create assets\n\t\tconst v1AssetIdsToV2AssetIds = new Map<string, TLAssetId>()\n\n\t\tObject.values(document.assets ?? {}).forEach((v1Asset) => {\n\t\t\tswitch (v1Asset.type) {\n\t\t\t\tcase TLV1AssetType.Image: {\n\t\t\t\t\tconst assetId: TLAssetId = AssetRecordType.createId()\n\t\t\t\t\tv1AssetIdsToV2AssetIds.set(v1Asset.id, assetId)\n\t\t\t\t\tconst placeholderAsset: TLAsset = {\n\t\t\t\t\t\tid: assetId,\n\t\t\t\t\t\ttypeName: 'asset',\n\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tw: coerceDimension(v1Asset.size[0]),\n\t\t\t\t\t\t\th: coerceDimension(v1Asset.size[1]),\n\t\t\t\t\t\t\tname: v1Asset.fileName ?? 'Untitled',\n\t\t\t\t\t\t\tisAnimated: false,\n\t\t\t\t\t\t\tmimeType: null,\n\t\t\t\t\t\t\tsrc: v1Asset.src,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmeta: {},\n\t\t\t\t\t}\n\t\t\t\t\teditor.createAssets([placeholderAsset])\n\t\t\t\t\ttryMigrateAsset(editor, placeholderAsset)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase TLV1AssetType.Video:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst assetId: TLAssetId = AssetRecordType.createId()\n\t\t\t\t\t\tv1AssetIdsToV2AssetIds.set(v1Asset.id, assetId)\n\t\t\t\t\t\teditor.createAssets([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: assetId,\n\t\t\t\t\t\t\t\ttypeName: 'asset',\n\t\t\t\t\t\t\t\ttype: 'video',\n\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Asset.size[0]),\n\t\t\t\t\t\t\t\t\th: coerceDimension(v1Asset.size[1]),\n\t\t\t\t\t\t\t\t\tname: v1Asset.fileName ?? 'Untitled',\n\t\t\t\t\t\t\t\t\tisAnimated: true,\n\t\t\t\t\t\t\t\t\tmimeType: null,\n\t\t\t\t\t\t\t\t\tsrc: v1Asset.src,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tmeta: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t})\n\n\t\t// Create pages\n\n\t\tconst v1PageIdsToV2PageIds = new Map<string, TLPageId>()\n\n\t\tObject.values(document.pages ?? {})\n\t\t\t.sort((a, b) => ((a.childIndex ?? 1) < (b.childIndex ?? 1) ? -1 : 1))\n\t\t\t.forEach((v1Page, i) => {\n\t\t\t\tif (i === 0) {\n\t\t\t\t\tv1PageIdsToV2PageIds.set(v1Page.id, editor.getCurrentPageId())\n\t\t\t\t} else {\n\t\t\t\t\tconst pageId = PageRecordType.createId()\n\t\t\t\t\tv1PageIdsToV2PageIds.set(v1Page.id, pageId)\n\t\t\t\t\teditor.createPage({ name: v1Page.name ?? 'Page', id: pageId })\n\t\t\t\t}\n\t\t\t})\n\n\t\tObject.values(document.pages ?? {})\n\t\t\t.sort((a, b) => ((a.childIndex ?? 1) < (b.childIndex ?? 1) ? -1 : 1))\n\t\t\t.forEach((v1Page) => {\n\t\t\t\t// Set the current page id to the current page\n\t\t\t\teditor.setCurrentPage(v1PageIdsToV2PageIds.get(v1Page.id)!)\n\n\t\t\t\tconst v1ShapeIdsToV2ShapeIds = new Map<string, TLShapeId>()\n\t\t\t\tconst v1GroupShapeIdsToV1ChildIds = new Map<string, string[]>()\n\n\t\t\t\tconst v1Shapes = Object.values(v1Page.shapes ?? {})\n\t\t\t\t\t.sort((a, b) => (a.childIndex < b.childIndex ? -1 : 1))\n\t\t\t\t\t.slice(0, editor.options.maxShapesPerPage)\n\n\t\t\t\t// Groups only\n\t\t\t\tv1Shapes.forEach((v1Shape) => {\n\t\t\t\t\tif (v1Shape.type !== TLV1ShapeType.Group) return\n\n\t\t\t\t\tconst shapeId = createShapeId()\n\t\t\t\t\tv1ShapeIdsToV2ShapeIds.set(v1Shape.id, shapeId)\n\t\t\t\t\tv1GroupShapeIdsToV1ChildIds.set(v1Shape.id, [])\n\t\t\t\t})\n\n\t\t\t\tfunction decideNotToCreateShape(v1Shape: TLV1Shape) {\n\t\t\t\t\tv1ShapeIdsToV2ShapeIds.delete(v1Shape.id)\n\t\t\t\t\tconst v1GroupParent = v1GroupShapeIdsToV1ChildIds.has(v1Shape.parentId)\n\t\t\t\t\tif (v1GroupParent) {\n\t\t\t\t\t\tconst ids = v1GroupShapeIdsToV1ChildIds\n\t\t\t\t\t\t\t.get(v1Shape.parentId)!\n\t\t\t\t\t\t\t.filter((id) => id !== v1Shape.id)\n\t\t\t\t\t\tv1GroupShapeIdsToV1ChildIds.set(v1Shape.parentId, ids)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Non-groups only\n\t\t\t\tv1Shapes.forEach((v1Shape) => {\n\t\t\t\t\t// Skip groups for now, we'll create groups via the app's API\n\t\t\t\t\tif (v1Shape.type === TLV1ShapeType.Group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tconst shapeId = createShapeId()\n\t\t\t\t\tv1ShapeIdsToV2ShapeIds.set(v1Shape.id, shapeId)\n\n\t\t\t\t\tif (v1Shape.parentId !== v1Page.id) {\n\t\t\t\t\t\t// If the parent is a group, then add the shape to the group's children\n\t\t\t\t\t\tif (v1GroupShapeIdsToV1ChildIds.has(v1Shape.parentId)) {\n\t\t\t\t\t\t\tv1GroupShapeIdsToV1ChildIds.get(v1Shape.parentId)!.push(v1Shape.id)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.warn('parent does not exist', v1Shape)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// First, try to find the shape's parent among the existing groups\n\t\t\t\t\tconst parentId = v1PageIdsToV2PageIds.get(v1Page.id)!\n\n\t\t\t\t\tconst inCommon = {\n\t\t\t\t\t\tid: shapeId,\n\t\t\t\t\t\tparentId,\n\t\t\t\t\t\tx: coerceNumber(v1Shape.point[0]),\n\t\t\t\t\t\ty: coerceNumber(v1Shape.point[1]),\n\t\t\t\t\t\trotation: 0,\n\t\t\t\t\t\tisLocked: !!v1Shape.isLocked,\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (v1Shape.type) {\n\t\t\t\t\t\tcase TLV1ShapeType.Sticky: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'note',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.text ?? ''),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\talign: getV2Align(v1Shape.style.textAlign),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Rectangle: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tgeo: 'rectangle',\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.size[0]),\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.size[1]),\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t\tfill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tlabelColor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\talign: 'middle',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tconst pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id)!\n\n\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tif (pageBoundsBeforeLabel.width === pageBoundsBeforeLabel.height) {\n\t\t\t\t\t\t\t\tconst shape = editor.getShape<TLGeoShape>(inCommon.id)!\n\t\t\t\t\t\t\t\tconst { growY } = shape.props\n\t\t\t\t\t\t\t\tconst w = coerceDimension(shape.props.w)\n\t\t\t\t\t\t\t\tconst h = coerceDimension(shape.props.h)\n\t\t\t\t\t\t\t\tconst newW = w + growY / 2\n\t\t\t\t\t\t\t\tconst newH = h + growY / 2\n\n\t\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\t\tx: coerceNumber(shape.x) - (newW - w) / 2,\n\t\t\t\t\t\t\t\t\t\ty: coerceNumber(shape.y) - (newH - h) / 2,\n\t\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\t\tw: newW,\n\t\t\t\t\t\t\t\t\t\t\th: newH,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Triangle: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tgeo: 'triangle',\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.size[0]),\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.size[1]),\n\t\t\t\t\t\t\t\t\t\tfill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tlabelColor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\talign: 'middle',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tconst pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id)!\n\n\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tif (pageBoundsBeforeLabel.width === pageBoundsBeforeLabel.height) {\n\t\t\t\t\t\t\t\tconst shape = editor.getShape<TLGeoShape>(inCommon.id)!\n\t\t\t\t\t\t\t\tconst { growY } = shape.props\n\t\t\t\t\t\t\t\tconst w = coerceDimension(shape.props.w)\n\t\t\t\t\t\t\t\tconst h = coerceDimension(shape.props.h)\n\t\t\t\t\t\t\t\tconst newW = w + growY / 2\n\t\t\t\t\t\t\t\tconst newH = h + growY / 2\n\n\t\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\t\tx: coerceNumber(shape.x) - (newW - w) / 2,\n\t\t\t\t\t\t\t\t\t\ty: coerceNumber(shape.y) - (newH - h) / 2,\n\t\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\t\tw: newW,\n\t\t\t\t\t\t\t\t\t\t\th: newH,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Ellipse: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tgeo: 'ellipse',\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.radius[0]) * 2,\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.radius[1]) * 2,\n\t\t\t\t\t\t\t\t\t\tfill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tlabelColor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\talign: 'middle',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tconst pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id)!\n\n\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tif (pageBoundsBeforeLabel.width === pageBoundsBeforeLabel.height) {\n\t\t\t\t\t\t\t\tconst shape = editor.getShape<TLGeoShape>(inCommon.id)!\n\t\t\t\t\t\t\t\tconst { growY } = shape.props\n\t\t\t\t\t\t\t\tconst w = coerceDimension(shape.props.w)\n\t\t\t\t\t\t\t\tconst h = coerceDimension(shape.props.h)\n\t\t\t\t\t\t\t\tconst newW = w + growY / 2\n\t\t\t\t\t\t\t\tconst newH = h + growY / 2\n\n\t\t\t\t\t\t\t\teditor.updateShapes([\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: inCommon.id,\n\t\t\t\t\t\t\t\t\t\ttype: 'geo',\n\t\t\t\t\t\t\t\t\t\tx: coerceNumber(shape.x) - (newW - w) / 2,\n\t\t\t\t\t\t\t\t\t\ty: coerceNumber(shape.y) - (newH - h) / 2,\n\t\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\t\tw: newW,\n\t\t\t\t\t\t\t\t\t\t\th: newH,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Draw: {\n\t\t\t\t\t\t\tif (v1Shape.points.length === 0) {\n\t\t\t\t\t\t\t\tdecideNotToCreateShape(v1Shape)\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst points = v1Shape.points.map(getV2Point)\n\t\t\t\t\t\t\tconst base64Points = b64Vecs.encodePoints(points)\n\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'draw',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tfill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\tisPen: false,\n\t\t\t\t\t\t\t\t\t\tisComplete: v1Shape.isComplete,\n\t\t\t\t\t\t\t\t\t\tsegments: [{ type: 'free', points: base64Points }],\n\t\t\t\t\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\t\t\t\t\tscaleX: 1,\n\t\t\t\t\t\t\t\t\t\tscaleY: 1,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Arrow: {\n\t\t\t\t\t\t\tconst v1Bend = coerceNumber(v1Shape.bend)\n\t\t\t\t\t\t\tconst v1Start = getV2Point(v1Shape.handles.start.point)\n\t\t\t\t\t\t\tconst v1End = getV2Point(v1Shape.handles.end.point)\n\t\t\t\t\t\t\tconst dist = Vec.Dist(v1Start, v1End)\n\t\t\t\t\t\t\tconst v2Bend = (dist * -v1Bend) / 2\n\n\t\t\t\t\t\t\t// Could also be a line... but we'll use it as an arrow anyway\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'arrow',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.label ?? ''),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tlabelColor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2Size(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\tdash: getV2Dash(v1Shape.style.dash),\n\t\t\t\t\t\t\t\t\t\tarrowheadStart: getV2Arrowhead(v1Shape.decorations?.start),\n\t\t\t\t\t\t\t\t\t\tarrowheadEnd: getV2Arrowhead(v1Shape.decorations?.end),\n\t\t\t\t\t\t\t\t\t\tstart: {\n\t\t\t\t\t\t\t\t\t\t\tx: coerceNumber(v1Shape.handles.start.point[0]),\n\t\t\t\t\t\t\t\t\t\t\ty: coerceNumber(v1Shape.handles.start.point[1]),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tend: {\n\t\t\t\t\t\t\t\t\t\t\tx: coerceNumber(v1Shape.handles.end.point[0]),\n\t\t\t\t\t\t\t\t\t\t\ty: coerceNumber(v1Shape.handles.end.point[1]),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tbend: v2Bend,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Text: {\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\trichText: toRichText(v1Shape.text ?? ' '),\n\t\t\t\t\t\t\t\t\t\tcolor: getV2Color(v1Shape.style.color),\n\t\t\t\t\t\t\t\t\t\tsize: getV2TextSize(v1Shape.style.size),\n\t\t\t\t\t\t\t\t\t\tfont: getV2Font(v1Shape.style.font),\n\t\t\t\t\t\t\t\t\t\ttextAlign: getV2TextAlign(v1Shape.style.textAlign),\n\t\t\t\t\t\t\t\t\t\tscale: v1Shape.style.scale ?? 1,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Image: {\n\t\t\t\t\t\t\tconst assetId = v1AssetIdsToV2AssetIds.get(v1Shape.assetId)\n\n\t\t\t\t\t\t\tif (!assetId) {\n\t\t\t\t\t\t\t\tconsole.warn('Could not find asset id', v1Shape.assetId)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.size[0]),\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.size[1]),\n\t\t\t\t\t\t\t\t\t\tassetId,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase TLV1ShapeType.Video: {\n\t\t\t\t\t\t\tconst assetId = v1AssetIdsToV2AssetIds.get(v1Shape.assetId)\n\n\t\t\t\t\t\t\tif (!assetId) {\n\t\t\t\t\t\t\t\tconsole.warn('Could not find asset id', v1Shape.assetId)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\teditor.createShapes([\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...inCommon,\n\t\t\t\t\t\t\t\t\ttype: 'video',\n\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\tw: coerceDimension(v1Shape.size[0]),\n\t\t\t\t\t\t\t\t\t\th: coerceDimension(v1Shape.size[1]),\n\t\t\t\t\t\t\t\t\t\tassetId,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst rotation = coerceNumber(v1Shape.rotation)\n\n\t\t\t\t\tif (rotation !== 0) {\n\t\t\t\t\t\teditor.select(shapeId)\n\t\t\t\t\t\teditor.rotateShapesBy([shapeId], rotation)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t// Create groups\n\t\t\t\tv1GroupShapeIdsToV1ChildIds.forEach((v1ChildIds, v1GroupId) => {\n\t\t\t\t\tconst v2ChildShapeIds = v1ChildIds.map((id) => v1ShapeIdsToV2ShapeIds.get(id)!)\n\t\t\t\t\tconst v2GroupId = v1ShapeIdsToV2ShapeIds.get(v1GroupId)!\n\t\t\t\t\teditor.groupShapes(v2ChildShapeIds, { groupId: v2GroupId })\n\n\t\t\t\t\tconst v1Group = v1Page.shapes[v1GroupId]\n\t\t\t\t\tconst rotation = coerceNumber(v1Group.rotation)\n\n\t\t\t\t\tif (rotation !== 0) {\n\t\t\t\t\t\teditor.select(v2GroupId)\n\t\t\t\t\t\teditor.rotateShapesBy([v2GroupId], rotation)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t// Bind arrows to shapes\n\n\t\t\t\tv1Shapes.forEach((v1Shape) => {\n\t\t\t\t\tif (v1Shape.type !== TLV1ShapeType.Arrow) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tconst v2ShapeId = v1ShapeIdsToV2ShapeIds.get(v1Shape.id)!\n\t\t\t\t\tconst util = editor.getShapeUtil<TLArrowShape>('arrow')\n\n\t\t\t\t\t// dumb but necessary\n\t\t\t\t\teditor.inputs.setCtrlKey(false)\n\n\t\t\t\t\tfor (const handleId of ['start', 'end'] as const) {\n\t\t\t\t\t\tconst bindingId = v1Shape.handles[handleId].bindingId\n\t\t\t\t\t\tif (bindingId) {\n\t\t\t\t\t\t\tconst binding = v1Page.bindings[bindingId]\n\t\t\t\t\t\t\tif (!binding) {\n\t\t\t\t\t\t\t\t// arrow has a reference to a binding that no longer exists\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst targetId = v1ShapeIdsToV2ShapeIds.get(binding.toId)!\n\n\t\t\t\t\t\t\tconst targetShape = editor.getShape(targetId)!\n\n\t\t\t\t\t\t\t// (unexpected) We didn't create the target shape\n\t\t\t\t\t\t\tif (!targetShape) continue\n\n\t\t\t\t\t\t\tif (targetId) {\n\t\t\t\t\t\t\t\tconst bounds = editor.getShapePageBounds(targetId)!\n\n\t\t\t\t\t\t\t\tconst v2ShapeFresh = editor.getShape<TLArrowShape>(v2ShapeId)!\n\n\t\t\t\t\t\t\t\tconst nx = clamp((coerceNumber(binding.point[0]) + 0.5) / 2, 0.2, 0.8)\n\t\t\t\t\t\t\t\tconst ny = clamp((coerceNumber(binding.point[1]) + 0.5) / 2, 0.2, 0.8)\n\n\t\t\t\t\t\t\t\tconst point = editor.getPointInShapeSpace(v2ShapeFresh, {\n\t\t\t\t\t\t\t\t\tx: bounds.minX + bounds.width * nx,\n\t\t\t\t\t\t\t\t\ty: bounds.minY + bounds.height * ny,\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tconst handles = editor.getShapeHandles(v2ShapeFresh)!\n\t\t\t\t\t\t\t\tconst change = util.onHandleDrag!(v2ShapeFresh, {\n\t\t\t\t\t\t\t\t\thandle: {\n\t\t\t\t\t\t\t\t\t\t...handles.find((h) => h.id === handleId)!,\n\t\t\t\t\t\t\t\t\t\tx: point.x,\n\t\t\t\t\t\t\t\t\t\ty: point.y,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tisPrecise: point.x !== 0.5 || point.y !== 0.5,\n\t\t\t\t\t\t\t\t\tisCreatingShape: true,\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tif (change) {\n\t\t\t\t\t\t\t\t\teditor.updateShape(change)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst freshBinding = getArrowBindings(\n\t\t\t\t\t\t\t\t\teditor,\n\t\t\t\t\t\t\t\t\teditor.getShape<TLArrowShape>(v2ShapeId)!\n\t\t\t\t\t\t\t\t)[handleId]\n\t\t\t\t\t\t\t\tif (freshBinding) {\n\t\t\t\t\t\t\t\t\tconst updatedFreshBinding = structuredClone(freshBinding)\n\t\t\t\t\t\t\t\t\tif (binding.distance === 0) {\n\t\t\t\t\t\t\t\t\t\tupdatedFreshBinding.props.isExact = true\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (updatedFreshBinding.toId !== targetId) {\n\t\t\t\t\t\t\t\t\t\tupdatedFreshBinding.toId = targetId\n\t\t\t\t\t\t\t\t\t\tupdatedFreshBinding.props.normalizedAnchor = { x: nx, y: ny }\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\teditor.updateBinding(updatedFreshBinding)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\n\t\t// Set the current page to the first page again\n\t\teditor.setCurrentPage(firstPageId)\n\n\t\teditor.clearHistory()\n\t\teditor.selectNone()\n\n\t\tconst bounds = editor.getCurrentPageBounds()\n\t\tif (bounds) {\n\t\t\teditor.zoomToBounds(bounds, { targetZoom: 1 })\n\t\t}\n\t})\n}\n\nfunction coerceNumber(n: unknown): number {\n\tif (typeof n !== 'number') return 0\n\tif (Number.isNaN(n)) return 0\n\tif (!Number.isFinite(n)) return 0\n\treturn n\n}\n\nfunction coerceDimension(d: unknown): number {\n\tconst n = coerceNumber(d)\n\tif (n <= 0) return 1\n\treturn n\n}\n\n/**\n * We want to move assets over to our new S3 bucket & extract any relevant metadata. That process is\n * async though, where the rest of our migration is synchronous.\n *\n * We'll write placeholder assets to the app using the old asset URLs, then kick off a process async\n * to try and download the real assets, extract the metadata, and upload them to our new bucket.\n * It's not a big deal if this fails though.\n */\nasync function tryMigrateAsset(editor: Editor, placeholderAsset: TLAsset) {\n\ttry {\n\t\tif (placeholderAsset.type === 'bookmark' || !placeholderAsset.props.src) return\n\n\t\tconst response = await fetch(placeholderAsset.props.src)\n\t\tif (!response.ok) return\n\n\t\tconst file = new File([await response.blob()], placeholderAsset.props.name, {\n\t\t\ttype: response.headers.get('content-type') ?? placeholderAsset.props.mimeType ?? undefined,\n\t\t})\n\n\t\tconst newAsset = await editor.getAssetForExternalContent({ type: 'file', file })\n\t\tif (!newAsset) throw new Error('Could not get asset for external content')\n\t\tif (newAsset.type === 'bookmark') return\n\n\t\teditor.updateAssets([\n\t\t\t{\n\t\t\t\tid: placeholderAsset.id,\n\t\t\t\ttype: placeholderAsset.type,\n\t\t\t\tprops: {\n\t\t\t\t\t...newAsset.props,\n\t\t\t\t\tname: placeholderAsset.props.name,\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t} catch {\n\t\t// not a big deal, we'll just keep the placeholder asset\n\t}\n}\n\nfunction migrate(document: TLV1Document, newVersion: number): TLV1Document {\n\tconst { version = 0 } = document\n\n\tif (!document.assets) {\n\t\tdocument.assets = {}\n\t}\n\n\t// Remove unused assets when loading a document\n\tconst assetIdsInUse = new Set<string>()\n\n\tObject.values(document.pages).forEach((page) =>\n\t\tObject.values(page.shapes).forEach((shape) => {\n\t\t\tconst { parentId, children, assetId } = shape\n\n\t\t\tif (assetId) {\n\t\t\t\tassetIdsInUse.add(assetId)\n\t\t\t}\n\n\t\t\t// Fix missing parent bug\n\t\t\tif (parentId !== page.id && !page.shapes[parentId]) {\n\t\t\t\tconsole.warn('Encountered a shape with a missing parent!')\n\t\t\t\tshape.parentId = page.id\n\t\t\t}\n\n\t\t\tif (shape.type === TLV1ShapeType.Group && children) {\n\t\t\t\tchildren.forEach((childId) => {\n\t\t\t\t\tif (!page.shapes[childId]) {\n\t\t\t\t\t\tconsole.warn('Encountered a parent with a missing child!', shape.id, childId)\n\t\t\t\t\t\tchildren?.splice(children.indexOf(childId), 1)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t// TODO: Remove the shape if it has no children\n\t\t\t}\n\t\t})\n\t)\n\n\tObject.keys(document.assets).forEach((assetId) => {\n\t\tif (!assetIdsInUse.has(assetId)) {\n\t\t\tdelete document.assets[assetId]\n\t\t}\n\t})\n\n\tif (version !== newVersion) {\n\t\tif (version < 14) {\n\t\t\tObject.values(document.pages).forEach((page) => {\n\t\t\t\tObject.values(page.shapes)\n\t\t\t\t\t.filter((shape) => shape.type === TLV1ShapeType.Text)\n\t\t\t\t\t.forEach((shape) => {\n\t\t\t\t\t\tif ((shape as TLV1TextShape).style.font === undefined) {\n\t\t\t\t\t\t\t;(shape as TLV1TextShape).style.font = TLV1FontStyle.Script\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\t// Lowercase styles, move binding meta to binding\n\t\tif (version <= 13) {\n\t\t\tObject.values(document.pages).forEach((page) => {\n\t\t\t\tObject.values(page.bindings).forEach((binding) => {\n\t\t\t\t\tObject.assign(binding, (binding as any).meta)\n\t\t\t\t})\n\n\t\t\t\tObject.values(page.shapes).forEach((shape) => {\n\t\t\t\t\tObject.entries(shape.style).forEach(([id, style]) => {\n\t\t\t\t\t\tif (typeof style === 'string') {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tshape.style[id] = style.toLowerCase()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tif (shape.type === TLV1ShapeType.Arrow) {\n\t\t\t\t\t\tif (shape.decorations) {\n\t\t\t\t\t\t\tObject.entries(shape.decorations).forEach(([id, decoration]) => {\n\t\t\t\t\t\t\t\tif ((decoration as unknown) === 'Arrow') {\n\t\t\t\t\t\t\t\t\tshape.decorations = {\n\t\t\t\t\t\t\t\t\t\t...shape.decorations,\n\t\t\t\t\t\t\t\t\t\t[id]: TLV1Decoration.Arrow,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\t// Add document name and file system handle\n\t\tif (version <= 13.1 && document.name == null) {\n\t\t\tdocument.name = 'New Document'\n\t\t}\n\n\t\tif (version < 15 && document.assets == null) {\n\t\t\tdocument.assets = {}\n\t\t}\n\n\t\tObject.values(document.pages).forEach((page) => {\n\t\t\tObject.values(page.shapes).forEach((shape) => {\n\t\t\t\tif (version < 15.2) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(shape.type === TLV1ShapeType.Image || shape.type === TLV1ShapeType.Video) &&\n\t\t\t\t\t\tshape.style.isFilled == null\n\t\t\t\t\t) {\n\t\t\t\t\t\tshape.style.isFilled = true\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (version < 15.3) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tshape.type === TLV1ShapeType.Rectangle ||\n\t\t\t\t\t\tshape.type === TLV1ShapeType.Triangle ||\n\t\t\t\t\t\tshape.type === TLV1ShapeType.Ellipse ||\n\t\t\t\t\t\tshape.type === TLV1ShapeType.Arrow\n\t\t\t\t\t) {\n\t\t\t\t\t\tif ('text' in shape && typeof shape.text === 'string') {\n\t\t\t\t\t\t\tshape.label = shape.text\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!shape.label) {\n\t\t\t\t\t\t\tshape.label = ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!shape.labelPoint) {\n\t\t\t\t\t\t\tshape.labelPoint = [0.5, 0.5]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t// Cleanup\n\tObject.values(document.pageStates).forEach((pageState) => {\n\t\tpageState.selectedIds = pageState.selectedIds.filter((id) => {\n\t\t\treturn document.pages[pageState.id].shapes[id] !== undefined\n\t\t})\n\t\tpageState.bindingId = undefined\n\t\tpageState.editingId = undefined\n\t\tpageState.hoveredId = undefined\n\t\tpageState.pointedId = undefined\n\t})\n\n\tdocument.version = newVersion\n\n\treturn document\n}\n\n/* -------------------- TLV1 Types -------------------- */\n\n/** @internal */\nexport interface TLV1Handle {\n\tid: string\n\tindex: number\n\tpoint: number[]\n\tcanBind?: boolean\n\tbindingId?: string\n}\n\n/** @internal */\nexport interface TLV1BaseBinding {\n\tid: string\n\ttoId: string\n\tfromId: string\n}\n\n/** @internal */\nexport enum TLV1ShapeType {\n\tSticky = 'sticky',\n\tEllipse = 'ellipse',\n\tRectangle = 'rectangle',\n\tTriangle = 'triangle',\n\tDraw = 'draw',\n\tArrow = 'arrow',\n\tText = 'text',\n\tGroup = 'group',\n\tImage = 'image',\n\tVideo = 'video',\n}\n\n/** @internal */\nexport enum TLV1ColorStyle {\n\tWhite = 'white',\n\tLightGray = 'lightGray',\n\tGray = 'gray',\n\tBlack = 'black',\n\tGreen = 'green',\n\tCyan = 'cyan',\n\tBlue = 'blue',\n\tIndigo = 'indigo',\n\tViolet = 'violet',\n\tRed = 'red',\n\tOrange = 'orange',\n\tYellow = 'yellow',\n}\n\n/** @internal */\nexport enum TLV1SizeStyle {\n\tSmall = 'small',\n\tMedium = 'medium',\n\tLarge = 'large',\n}\n\n/** @internal */\nexport enum TLV1DashStyle {\n\tDraw = 'draw',\n\tSolid = 'solid',\n\tDashed = 'dashed',\n\tDotted = 'dotted',\n}\n\n/** @internal */\nexport enum TLV1AlignStyle {\n\tStart = 'start',\n\tMiddle = 'middle',\n\tEnd = 'end',\n\tJustify = 'justify',\n}\n\n/** @internal */\nexport enum TLV1FontStyle {\n\tScript = 'script',\n\tSans = 'sans',\n\tSerif = 'serif',\n\tMono = 'mono',\n}\n\n/** @internal */\nexport interface TLV1ShapeStyles {\n\tcolor: TLV1ColorStyle\n\tsize: TLV1SizeStyle\n\tdash: TLV1DashStyle\n\tfont?: TLV1FontStyle\n\ttextAlign?: TLV1AlignStyle\n\tisFilled?: boolean\n\tscale?: number\n}\n\n/** @internal */\nexport interface TLV1BaseShape {\n\tid: string\n\tparentId: string\n\tchildIndex: number\n\tname: string\n\tpoint: number[]\n\tassetId?: string\n\trotation?: number\n\tchildren?: string[]\n\tisGhost?: boolean\n\tisHidden?: boolean\n\tisLocked?: boolean\n\tisGenerated?: boolean\n\tisAspectRatioLocked?: boolean\n\tstyle: TLV1ShapeStyles\n\ttype: TLV1ShapeType\n\tlabel?: string\n\thandles?: Record<string, TLV1Handle>\n}\n\n/** @internal */\nexport interface TLV1DrawShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Draw\n\tpoints: number[][]\n\tisComplete: boolean\n}\n\n/** @internal */\nexport interface TLV1RectangleShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Rectangle\n\tsize: number[]\n\tlabel?: string\n\tlabelPoint?: number[]\n}\n\n/** @internal */\nexport interface TLV1EllipseShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Ellipse\n\tradius: number[]\n\tlabel?: string\n\tlabelPoint?: number[]\n}\n\n/** @internal */\nexport interface TLV1TriangleShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Triangle\n\tsize: number[]\n\tlabel?: string\n\tlabelPoint?: number[]\n}\n\n/** @internal */\nexport enum TLV1Decoration {\n\tArrow = 'arrow',\n}\n\n// The shape created with the arrow tool\n/** @internal */\nexport interface TLV1ArrowShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Arrow\n\tbend: number\n\thandles: {\n\t\tstart: TLV1Handle\n\t\tbend: TLV1Handle\n\t\tend: TLV1Handle\n\t}\n\tdecorations?: {\n\t\tstart?: TLV1Decoration\n\t\tend?: TLV1Decoration\n\t\tmiddle?: TLV1Decoration\n\t}\n\tlabel?: string\n\tlabelPoint?: number[]\n}\n\n/** @internal */\nexport interface TLV1ArrowBinding extends TLV1BaseBinding {\n\thandleId: keyof TLV1ArrowShape['handles']\n\tdistance: number\n\tpoint: number[]\n}\n\n/** @internal */\nexport type TLV1Binding = TLV1ArrowBinding\n\n/** @internal */\nexport interface TLV1ImageShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Image\n\tsize: number[]\n\tassetId: string\n}\n\n/** @internal */\nexport interface TLV1VideoShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Video\n\tsize: number[]\n\tassetId: string\n\tisPlaying: boolean\n\tcurrentTime: number\n}\n\n// The shape created by the text tool\n/** @internal */\nexport interface TLV1TextShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Text\n\ttext: string\n}\n\n// The shape created by the sticky tool\n/** @internal */\nexport interface TLV1StickyShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Sticky\n\tsize: number[]\n\ttext: string\n}\n\n// The shape created when multiple shapes are grouped\n/** @internal */\nexport interface TLV1GroupShape extends TLV1BaseShape {\n\ttype: TLV1ShapeType.Group\n\tsize: number[]\n\tchildren: string[]\n}\n\n/** @internal */\nexport type TLV1Shape =\n\t| TLV1RectangleShape\n\t| TLV1EllipseShape\n\t| TLV1TriangleShape\n\t| TLV1DrawShape\n\t| TLV1ArrowShape\n\t| TLV1TextShape\n\t| TLV1GroupShape\n\t| TLV1StickyShape\n\t| TLV1ImageShape\n\t| TLV1VideoShape\n\n/** @internal */\nexport interface TLV1Page {\n\tid: string\n\tname?: string\n\tchildIndex?: number\n\tshapes: Record<string, TLV1Shape>\n\tbindings: Record<string, TLV1Binding>\n}\n\n/** @internal */\nexport interface TLV1Bounds {\n\tminX: number\n\tminY: number\n\tmaxX: number\n\tmaxY: number\n\twidth: number\n\theight: number\n\trotation?: number\n}\n\n/** @internal */\nexport interface TLV1PageState {\n\tid: string\n\tselectedIds: string[]\n\tcamera: {\n\t\tpoint: number[]\n\t\tzoom: number\n\t}\n\tbrush?: TLV1Bounds | null\n\tpointedId?: string | null\n\thoveredId?: string | null\n\teditingId?: string | null\n\tbindingId?: string | null\n}\n\n/** @internal */\nexport enum TLV1AssetType {\n\tImage = 'image',\n\tVideo = 'video',\n}\n\n/** @internal */\nexport interface TLV1ImageAsset extends TLV1BaseAsset {\n\ttype: TLV1AssetType.Image\n\tfileName: string\n\tsrc: string\n\tsize: number[]\n}\n\n/** @internal */\nexport interface TLV1VideoAsset extends TLV1BaseAsset {\n\ttype: TLV1AssetType.Video\n\tfileName: string\n\tsrc: string\n\tsize: number[]\n}\n\n/** @internal */\nexport interface TLV1BaseAsset {\n\tid: string\n\ttype: string\n}\n\n/** @internal */\nexport type TLV1Asset = TLV1ImageAsset | TLV1VideoAsset\n\n/** @internal */\nexport interface TLV1Document {\n\tid: string\n\tname: string\n\tversion: number\n\tpages: Record<string, TLV1Page>\n\tpageStates: Record<string, TLV1PageState>\n\tassets: Record<string, TLV1Asset>\n}\n\n/* ------------------ Translations ------------------ */\n\nconst v1ColorsToV2Colors: Record<TLV1ColorStyle, TLDefaultColorStyle> = {\n\t[TLV1ColorStyle.White]: 'black',\n\t[TLV1ColorStyle.Black]: 'black',\n\t[TLV1ColorStyle.LightGray]: 'grey',\n\t[TLV1ColorStyle.Gray]: 'grey',\n\t[TLV1ColorStyle.Green]: 'light-green',\n\t[TLV1ColorStyle.Cyan]: 'green',\n\t[TLV1ColorStyle.Blue]: 'light-blue',\n\t[TLV1ColorStyle.Indigo]: 'blue',\n\t[TLV1ColorStyle.Orange]: 'orange',\n\t[TLV1ColorStyle.Yellow]: 'yellow',\n\t[TLV1ColorStyle.Red]: 'red',\n\t[TLV1ColorStyle.Violet]: 'light-violet',\n}\n\nconst v1FontsToV2Fonts: Record<TLV1FontStyle, TLDefaultFontStyle> = {\n\t[TLV1FontStyle.Mono]: 'mono',\n\t[TLV1FontStyle.Sans]: 'sans',\n\t[TLV1FontStyle.Script]: 'draw',\n\t[TLV1FontStyle.Serif]: 'serif',\n}\n\nconst v1AlignsToV2Aligns: Record<TLV1AlignStyle, TLDefaultHorizontalAlignStyle> = {\n\t[TLV1AlignStyle.Start]: 'start',\n\t[TLV1AlignStyle.Middle]: 'middle',\n\t[TLV1AlignStyle.End]: 'end',\n\t[TLV1AlignStyle.Justify]: 'start',\n}\n\nconst v1TextAlignsToV2TextAligns: Record<TLV1AlignStyle, TLDefaultTextAlignStyle> = {\n\t[TLV1AlignStyle.Start]: 'start',\n\t[TLV1AlignStyle.Middle]: 'middle',\n\t[TLV1AlignStyle.End]: 'end',\n\t[TLV1AlignStyle.Justify]: 'start',\n}\n\nconst v1TextSizesToV2TextSizes: Record<TLV1SizeStyle, TLDefaultSizeStyle> = {\n\t[TLV1SizeStyle.Small]: 's',\n\t[TLV1SizeStyle.Medium]: 'l',\n\t[TLV1SizeStyle.Large]: 'xl',\n}\n\nconst v1SizesToV2Sizes: Record<TLV1SizeStyle, TLDefaultSizeStyle> = {\n\t[TLV1SizeStyle.Small]: 'm',\n\t[TLV1SizeStyle.Medium]: 'l',\n\t[TLV1SizeStyle.Large]: 'xl',\n}\n\nconst v1DashesToV2Dashes: Record<TLV1DashStyle, TLDefaultDashStyle> = {\n\t[TLV1DashStyle.Solid]: 'solid',\n\t[TLV1DashStyle.Dashed]: 'dashed',\n\t[TLV1DashStyle.Dotted]: 'dotted',\n\t[TLV1DashStyle.Draw]: 'draw',\n}\n\nfunction getV2Color(color: TLV1ColorStyle | undefined): TLDefaultColorStyle {\n\treturn color ? (v1ColorsToV2Colors[color] ?? 'black') : 'black'\n}\n\nfunction getV2Font(font: TLV1FontStyle | undefined): TLDefaultFontStyle {\n\treturn font ? (v1FontsToV2Fonts[font] ?? 'draw') : 'draw'\n}\n\nfunction getV2Align(align: TLV1AlignStyle | undefined): TLDefaultHorizontalAlignStyle {\n\treturn align ? (v1AlignsToV2Aligns[align] ?? 'middle') : 'middle'\n}\n\nfunction getV2TextAlign(align: TLV1AlignStyle | undefined): TLDefaultTextAlignStyle {\n\treturn align ? (v1TextAlignsToV2TextAligns[align] ?? 'middle') : 'middle'\n}\n\nfunction getV2TextSize(size: TLV1SizeStyle | undefined): TLDefaultSizeStyle {\n\treturn size ? (v1TextSizesToV2TextSizes[size] ?? 'm') : 'm'\n}\n\nfunction getV2Size(size: TLV1SizeStyle | undefined): TLDefaultSizeStyle {\n\treturn size ? (v1SizesToV2Sizes[size] ?? 'l') : 'l'\n}\n\nfunction getV2Dash(dash: TLV1DashStyle | undefined): TLDefaultDashStyle {\n\treturn dash ? (v1DashesToV2Dashes[dash] ?? 'draw') : 'draw'\n}\n\nfunction getV2Point(point: number[]): VecModel {\n\treturn {\n\t\tx: coerceNumber(point[0]),\n\t\ty: coerceNumber(point[1]),\n\t\tz: point[2] == null ? 0.5 : coerceNumber(point[2]),\n\t}\n}\n\nfunction getV2Arrowhead(decoration: TLV1Decoration | undefined): TLArrowShapeArrowheadStyle {\n\treturn decoration === TLV1Decoration.Arrow ? 'arrow' : 'none'\n}\n\nfunction getV2Fill(isFilled: boolean | undefined, color: TLV1ColorStyle) {\n\treturn isFilled\n\t\t? color === TLV1ColorStyle.Black || color === TLV1ColorStyle.White\n\t\t\t? 'semi'\n\t\t\t: 'solid'\n\t\t: 'none'\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["bounds", "TLV1ShapeType", "TLV1ColorStyle", "TLV1SizeStyle", "TLV1DashStyle", "TLV1AlignStyle", "TLV1FontStyle", "TLV1Decoration", "TLV1AssetType"]
|
|
7
7
|
}
|