tldraw 5.2.0-next.e2b8d10bf10e → 5.2.0
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/DOCS.md +20294 -0
- package/README.md +13 -1
- package/RELEASE_NOTES.md +2908 -0
- package/dist-cjs/index.d.ts +110 -23
- package/dist-cjs/index.js +3 -3
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/TldrawImage.js +0 -1
- package/dist-cjs/lib/TldrawImage.js.map +2 -2
- package/dist-cjs/lib/bindings/arrow/ArrowBindingUtil.js +2 -1
- package/dist-cjs/lib/bindings/arrow/ArrowBindingUtil.js.map +2 -2
- package/dist-cjs/lib/defaultEmbedDefinitions.js +3 -2
- package/dist-cjs/lib/defaultEmbedDefinitions.js.map +2 -2
- package/dist-cjs/lib/defaultOverlayUtils.js +11 -11
- package/dist-cjs/lib/defaultOverlayUtils.js.map +2 -2
- package/dist-cjs/lib/overlays/SelectionForegroundOverlayUtil.js +76 -64
- package/dist-cjs/lib/overlays/SelectionForegroundOverlayUtil.js.map +2 -2
- package/dist-cjs/lib/overlays/ShapeHandleOverlayUtil.js +1 -1
- package/dist-cjs/lib/overlays/ShapeHandleOverlayUtil.js.map +2 -2
- package/dist-cjs/lib/overlays/ShapeIndicatorOverlayUtil.js +107 -0
- package/dist-cjs/lib/overlays/ShapeIndicatorOverlayUtil.js.map +7 -0
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +3 -0
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +12 -3
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/bookmark/bookmarks.js +54 -6
- package/dist-cjs/lib/shapes/bookmark/bookmarks.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +2 -1
- package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/getPath.js +1 -1
- package/dist-cjs/lib/shapes/draw/getPath.js.map +2 -2
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +45 -47
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +2 -2
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +2 -1
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/frame/FrameShapeTool.js +23 -18
- package/dist-cjs/lib/shapes/frame/FrameShapeTool.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +1 -1
- package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js +3 -0
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +11 -7
- package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +3 -11
- package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js +5 -1
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +31 -41
- package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/note/noteHelpers.js +1 -1
- package/dist-cjs/lib/shapes/note/noteHelpers.js.map +2 -2
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js +28 -6
- package/dist-cjs/lib/shapes/note/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +3 -2
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js +3 -3
- package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/defaultStyleDefs.js +17 -3
- package/dist-cjs/lib/shapes/shared/defaultStyleDefs.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/freehand/core.js +424 -0
- package/dist-cjs/lib/shapes/shared/freehand/core.js.map +7 -0
- package/dist-cjs/lib/shapes/shared/freehand/fmt.js +106 -0
- package/dist-cjs/lib/shapes/shared/freehand/fmt.js.map +7 -0
- package/dist-cjs/lib/shapes/shared/freehand/getStroke.js +6 -6
- package/dist-cjs/lib/shapes/shared/freehand/getStroke.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/freehand/getStrokeOutlinePoints.js +320 -86
- package/dist-cjs/lib/shapes/shared/freehand/getStrokeOutlinePoints.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/freehand/getStrokePoints.js +20 -96
- package/dist-cjs/lib/shapes/shared/freehand/getStrokePoints.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/freehand/svg.js +55 -19
- package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/freehand/svgInk.js +189 -97
- package/dist-cjs/lib/shapes/shared/freehand/svgInk.js.map +3 -3
- package/dist-cjs/lib/shapes/shared/freehand/types.js.map +1 -1
- package/dist-cjs/lib/shapes/shared/interpolate-props.js +6 -2
- package/dist-cjs/lib/shapes/shared/interpolate-props.js.map +2 -2
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +3 -0
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/HandTool.js +16 -6
- package/dist-cjs/lib/tools/HandTool/HandTool.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js +10 -1
- package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js.map +2 -2
- package/dist-cjs/lib/tools/HandTool/childStates/OneFingerZooming.js +84 -0
- package/dist-cjs/lib/tools/HandTool/childStates/OneFingerZooming.js.map +7 -0
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +12 -0
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +4 -0
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +107 -46
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js +4 -3
- package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
- package/dist-cjs/lib/ui/components/A11y.js +2 -0
- package/dist-cjs/lib/ui/components/A11y.js.map +2 -2
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js +14 -1
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenuContent.js +0 -6
- package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenuContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +2 -2
- package/dist-cjs/lib/ui/components/Dialogs.js +17 -37
- package/dist-cjs/lib/ui/components/Dialogs.js.map +2 -2
- package/dist-cjs/lib/ui/components/HelperButtons/BackToContent.js +19 -4
- package/dist-cjs/lib/ui/components/HelperButtons/BackToContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +12 -2
- package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +47 -70
- package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
- package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +25 -46
- package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/DefaultPeopleMenuAvatar.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/DefaultPeopleMenuContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/DefaultPeopleMenuFacePile.js.map +2 -2
- package/dist-cjs/lib/ui/components/SharePanel/DefaultPeopleMenuItem.js +1 -1
- package/dist-cjs/lib/ui/components/SharePanel/DefaultPeopleMenuItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js +1 -0
- package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +2 -2
- package/dist-cjs/lib/ui/components/menu-items.js +7 -0
- package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiDropdownMenu.js +2 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiDropdownMenu.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiIcon.js +14 -3
- package/dist-cjs/lib/ui/components/primitives/TldrawUiIcon.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js +2 -0
- package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +2 -0
- package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js +0 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuSubmenu.js +1 -2
- package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuSubmenu.js.map +2 -2
- package/dist-cjs/lib/ui/context/actions.js +70 -1
- package/dist-cjs/lib/ui/context/actions.js.map +2 -2
- package/dist-cjs/lib/ui/context/asset-urls.js +5 -8
- package/dist-cjs/lib/ui/context/asset-urls.js.map +2 -2
- package/dist-cjs/lib/ui/context/events.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +13 -0
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useTools.js +1 -1
- package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +2 -0
- package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.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/embeds/embeds.js +4 -4
- package/dist-cjs/lib/utils/embeds/embeds.js.map +2 -2
- package/dist-cjs/lib/utils/test-helpers.js +2 -2
- package/dist-cjs/lib/utils/test-helpers.js.map +2 -2
- package/dist-cjs/lib/utils/text/richText.js +3 -1
- package/dist-cjs/lib/utils/text/richText.js.map +2 -2
- package/dist-esm/index.d.mts +110 -23
- package/dist-esm/index.mjs +5 -3
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/TldrawImage.mjs +0 -1
- package/dist-esm/lib/TldrawImage.mjs.map +2 -2
- package/dist-esm/lib/bindings/arrow/ArrowBindingUtil.mjs +2 -1
- package/dist-esm/lib/bindings/arrow/ArrowBindingUtil.mjs.map +2 -2
- package/dist-esm/lib/defaultEmbedDefinitions.mjs +3 -2
- package/dist-esm/lib/defaultEmbedDefinitions.mjs.map +2 -2
- package/dist-esm/lib/defaultOverlayUtils.mjs +11 -11
- package/dist-esm/lib/defaultOverlayUtils.mjs.map +2 -2
- package/dist-esm/lib/overlays/SelectionForegroundOverlayUtil.mjs +77 -65
- package/dist-esm/lib/overlays/SelectionForegroundOverlayUtil.mjs.map +2 -2
- package/dist-esm/lib/overlays/ShapeHandleOverlayUtil.mjs +1 -1
- package/dist-esm/lib/overlays/ShapeHandleOverlayUtil.mjs.map +2 -2
- package/dist-esm/lib/overlays/ShapeIndicatorOverlayUtil.mjs +87 -0
- package/dist-esm/lib/overlays/ShapeIndicatorOverlayUtil.mjs.map +7 -0
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +9 -1
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +15 -3
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/bookmark/bookmarks.mjs +54 -6
- package/dist-esm/lib/shapes/bookmark/bookmarks.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +3 -1
- package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/getPath.mjs +1 -1
- package/dist-esm/lib/shapes/draw/getPath.mjs.map +2 -2
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +46 -47
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +2 -2
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +2 -1
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/frame/FrameShapeTool.mjs +23 -18
- package/dist-esm/lib/shapes/frame/FrameShapeTool.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +2 -1
- package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs +4 -0
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +12 -7
- package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +3 -11
- package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs +6 -1
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +32 -42
- package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/noteHelpers.mjs +1 -1
- package/dist-esm/lib/shapes/note/noteHelpers.mjs.map +2 -2
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs +29 -6
- package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +3 -2
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +4 -3
- package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/defaultStyleDefs.mjs +17 -3
- package/dist-esm/lib/shapes/shared/defaultStyleDefs.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/freehand/core.mjs +404 -0
- package/dist-esm/lib/shapes/shared/freehand/core.mjs.map +7 -0
- package/dist-esm/lib/shapes/shared/freehand/fmt.mjs +86 -0
- package/dist-esm/lib/shapes/shared/freehand/fmt.mjs.map +7 -0
- package/dist-esm/lib/shapes/shared/freehand/getStroke.mjs +7 -7
- package/dist-esm/lib/shapes/shared/freehand/getStroke.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/freehand/getStrokeOutlinePoints.mjs +332 -86
- package/dist-esm/lib/shapes/shared/freehand/getStrokeOutlinePoints.mjs.map +3 -3
- package/dist-esm/lib/shapes/shared/freehand/getStrokePoints.mjs +31 -96
- package/dist-esm/lib/shapes/shared/freehand/getStrokePoints.mjs.map +3 -3
- package/dist-esm/lib/shapes/shared/freehand/svg.mjs +55 -19
- package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/freehand/svgInk.mjs +214 -99
- package/dist-esm/lib/shapes/shared/freehand/svgInk.mjs.map +3 -3
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs +6 -2
- package/dist-esm/lib/shapes/shared/interpolate-props.mjs.map +2 -2
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +4 -0
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/HandTool.mjs +16 -6
- package/dist-esm/lib/tools/HandTool/HandTool.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs +10 -1
- package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs.map +2 -2
- package/dist-esm/lib/tools/HandTool/childStates/OneFingerZooming.mjs +64 -0
- package/dist-esm/lib/tools/HandTool/childStates/OneFingerZooming.mjs.map +7 -0
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +12 -0
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +4 -0
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +108 -46
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs +4 -3
- package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
- package/dist-esm/lib/ui/components/A11y.mjs +2 -0
- package/dist-esm/lib/ui/components/A11y.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs +21 -2
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenuContent.mjs +0 -6
- package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenuContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Dialogs.mjs +19 -39
- package/dist-esm/lib/ui/components/Dialogs.mjs.map +2 -2
- package/dist-esm/lib/ui/components/HelperButtons/BackToContent.mjs +20 -5
- package/dist-esm/lib/ui/components/HelperButtons/BackToContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +12 -2
- package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +47 -70
- package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +25 -46
- package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/DefaultPeopleMenuAvatar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/DefaultPeopleMenuContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/DefaultPeopleMenuFacePile.mjs.map +2 -2
- package/dist-esm/lib/ui/components/SharePanel/DefaultPeopleMenuItem.mjs +1 -1
- package/dist-esm/lib/ui/components/SharePanel/DefaultPeopleMenuItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +1 -0
- package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +2 -2
- package/dist-esm/lib/ui/components/menu-items.mjs +7 -0
- package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiDropdownMenu.mjs +2 -1
- package/dist-esm/lib/ui/components/primitives/TldrawUiDropdownMenu.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiIcon.mjs +14 -3
- package/dist-esm/lib/ui/components/primitives/TldrawUiIcon.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs +2 -0
- package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +2 -0
- package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs +0 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuSubmenu.mjs +1 -2
- package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuSubmenu.mjs.map +2 -2
- package/dist-esm/lib/ui/context/actions.mjs +71 -1
- package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
- package/dist-esm/lib/ui/context/asset-urls.mjs +5 -8
- package/dist-esm/lib/ui/context/asset-urls.mjs.map +2 -2
- package/dist-esm/lib/ui/context/events.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +13 -0
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useTools.mjs +1 -1
- package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +2 -0
- package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.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/embeds/embeds.mjs +4 -4
- package/dist-esm/lib/utils/embeds/embeds.mjs.map +2 -2
- package/dist-esm/lib/utils/test-helpers.mjs +2 -2
- package/dist-esm/lib/utils/test-helpers.mjs.map +2 -2
- package/dist-esm/lib/utils/text/richText.mjs +3 -1
- package/dist-esm/lib/utils/text/richText.mjs.map +2 -2
- package/package.json +11 -6
- package/src/index.ts +6 -1
- package/src/lib/TldrawImage.tsx +2 -2
- package/src/lib/bindings/arrow/ArrowBindingUtil.ts +5 -1
- package/src/lib/defaultEmbedDefinitions.ts +28 -6
- package/src/lib/defaultOverlayUtils.ts +11 -11
- package/src/lib/overlays/SelectionForegroundOverlayUtil.ts +91 -72
- package/src/lib/overlays/ShapeHandleOverlayUtil.ts +3 -1
- package/src/lib/overlays/ShapeIndicatorOverlayUtil.ts +133 -0
- package/src/lib/shapes/arrow/toolStates/Pointing.tsx +11 -1
- package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +16 -3
- package/src/lib/shapes/bookmark/bookmarks.ts +105 -15
- package/src/lib/shapes/draw/DrawShapeUtil.tsx +7 -5
- package/src/lib/shapes/draw/getPath.ts +1 -1
- package/src/lib/shapes/draw/toolStates/Drawing.ts +55 -48
- package/src/lib/shapes/embed/EmbedShapeUtil.tsx +14 -4
- package/src/lib/shapes/frame/FrameShapeTool.ts +35 -24
- package/src/lib/shapes/geo/GeoShapeUtil.test.tsx +46 -0
- package/src/lib/shapes/geo/GeoShapeUtil.tsx +2 -1
- package/src/lib/shapes/geo/toolStates/Pointing.ts +5 -0
- package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +14 -11
- package/src/lib/shapes/image/ImageShapeUtil.tsx +7 -11
- package/src/lib/shapes/line/LineShapeTool.test.ts +41 -0
- package/src/lib/shapes/line/toolStates/Pointing.ts +12 -2
- package/src/lib/shapes/note/NoteShapeUtil.tsx +36 -51
- package/src/lib/shapes/note/noteCloning.test.ts +5 -5
- package/src/lib/shapes/note/noteHelpers.ts +1 -1
- package/src/lib/shapes/note/toolStates/Pointing.ts +40 -7
- package/src/lib/shapes/shared/PlainTextLabel.tsx +3 -3
- package/src/lib/shapes/shared/RichTextLabel.tsx +4 -3
- package/src/lib/shapes/shared/defaultStyleDefs.tsx +25 -3
- package/src/lib/shapes/shared/freehand/core.ts +547 -0
- package/src/lib/shapes/shared/freehand/fmt.ts +106 -0
- package/src/lib/shapes/shared/freehand/getStroke.ts +7 -7
- package/src/lib/shapes/shared/freehand/getStrokeOutlinePoints.ts +451 -139
- package/src/lib/shapes/shared/freehand/getStrokePoints.ts +33 -153
- package/src/lib/shapes/shared/freehand/svg.ts +72 -23
- package/src/lib/shapes/shared/freehand/svgInk.ts +281 -136
- package/src/lib/shapes/shared/freehand/types.ts +0 -1
- package/src/lib/shapes/shared/interpolate-props.ts +6 -2
- package/src/lib/shapes/text/toolStates/Pointing.ts +5 -0
- package/src/lib/tools/HandTool/HandTool.ts +19 -6
- package/src/lib/tools/HandTool/childStates/Dragging.ts +17 -1
- package/src/lib/tools/HandTool/childStates/OneFingerZooming.ts +79 -0
- package/src/lib/tools/SelectTool/childStates/Idle.ts +16 -2
- package/src/lib/tools/SelectTool/childStates/PointingShape.ts +8 -0
- package/src/lib/tools/SelectTool/childStates/Resizing.ts +137 -49
- package/src/lib/ui/TldrawUi.tsx +3 -3
- package/src/lib/ui/components/A11y.tsx +2 -0
- package/src/lib/ui/components/ContextMenu/DefaultContextMenu.tsx +32 -2
- package/src/lib/ui/components/ContextMenu/DefaultContextMenuContent.tsx +5 -6
- package/src/lib/ui/components/DefaultFollowingIndicator.tsx +2 -2
- package/src/lib/ui/components/Dialogs.tsx +20 -23
- package/src/lib/ui/components/HelperButtons/BackToContent.tsx +32 -4
- package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +10 -0
- package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +60 -74
- package/src/lib/ui/components/Minimap/MinimapManager.ts +35 -57
- package/src/lib/ui/components/SharePanel/DefaultPeopleMenuAvatar.tsx +2 -2
- package/src/lib/ui/components/SharePanel/DefaultPeopleMenuContent.tsx +2 -1
- package/src/lib/ui/components/SharePanel/DefaultPeopleMenuFacePile.tsx +2 -1
- package/src/lib/ui/components/SharePanel/DefaultPeopleMenuItem.tsx +3 -3
- package/src/lib/ui/components/StylePanel/StylePanelButtonPicker.tsx +5 -0
- package/src/lib/ui/components/menu-items.tsx +9 -0
- package/src/lib/ui/components/primitives/TldrawUiDropdownMenu.tsx +3 -1
- package/src/lib/ui/components/primitives/TldrawUiIcon.tsx +15 -3
- package/src/lib/ui/components/primitives/TldrawUiInput.tsx +4 -0
- package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +7 -0
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.tsx +0 -2
- package/src/lib/ui/components/primitives/menus/TldrawUiMenuSubmenu.tsx +0 -1
- package/src/lib/ui/context/actions.tsx +88 -1
- package/src/lib/ui/context/asset-urls.tsx +9 -8
- package/src/lib/ui/context/events.tsx +2 -0
- package/src/lib/ui/hooks/useKeyboardShortcuts.ts +45 -7
- package/src/lib/ui/hooks/useTools.tsx +7 -1
- package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +2 -0
- package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +2 -0
- package/src/lib/ui/version.ts +3 -3
- package/src/lib/ui.css +20 -9
- package/src/lib/utils/embeds/embeds.test.ts +14 -12
- package/src/lib/utils/embeds/embeds.ts +10 -4
- package/src/lib/utils/test-helpers.ts +3 -3
- package/src/lib/utils/text/richText.test.ts +36 -0
- package/src/lib/utils/text/richText.ts +9 -1
- package/src/test/HandTool.test.ts +93 -0
- package/src/test/ImageShapeUtil.test.ts +88 -0
- package/src/test/SelectTool.test.ts +102 -1
- package/src/test/__snapshots__/drawing.test.ts.snap +2 -1
- package/src/test/attribution.test.ts +40 -29
- package/src/test/bookmark-shapes.test.ts +256 -28
- package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +2 -2
- package/src/test/commands/clipboardCallbacks.test.ts +3 -1
- package/src/test/commands/getSvgString.test.ts +30 -0
- package/src/test/commands/penmode.test.ts +97 -1
- package/src/test/commands/setCamera.test.ts +12 -0
- package/src/test/dragFromToolbar.test.ts +67 -0
- package/src/test/drawing.test.ts +48 -7
- package/src/test/frames.test.ts +72 -0
- package/src/test/freehand/corpus/presets.ts +71 -0
- package/src/test/freehand/corpus/real.ts +370 -0
- package/src/test/freehand/corpus/strokes.ts +50 -0
- package/src/test/freehand/svg.test.ts +20 -0
- package/src/test/freehand/wellformed.test.ts +30 -0
- package/src/test/long-press-create.test.ts +102 -0
- package/src/test/overlays/CollaboratorBrushOverlayUtil.test.ts +4 -4
- package/src/test/overlays/CollaboratorCursorOverlayUtil.test.ts +18 -18
- package/src/test/overlays/CollaboratorHintOverlayUtil.test.ts +7 -7
- package/src/test/overlays/CollaboratorScribbleOverlayUtil.test.ts +3 -3
- package/src/test/overlays/OverlayManager.test.ts +1 -1
- package/src/test/overlays/SelectionForegroundOverlayUtil.test.ts +58 -0
- package/src/test/overlays/ShapeHandleOverlayUtil.test.ts +2 -2
- package/src/test/overlays/ShapeIndicatorOverlayUtil.test.ts +36 -0
- package/src/test/resizing.test.ts +250 -0
- package/src/test/right-click-context-menu.test.ts +90 -0
- package/src/test/rightClickPanning.test.ts +11 -0
- package/src/test/selection-omnibus.test.ts +15 -2
- package/src/test/spatialIndex.test.ts +132 -0
- package/src/test/translating.test.ts +0 -6
- package/src/test/ui/ContextMenu.test.tsx +146 -3
- package/src/test/ui/Dialogs.test.tsx +256 -0
- package/src/test/ui/copyHoveredStyles.test.tsx +154 -0
- package/src/test/ui/keyboardShortcuts.test.tsx +266 -0
- package/tldraw.css +35 -12
- package/dist-cjs/lib/shapes/shared/freehand/setStrokePointRadii.js +0 -100
- package/dist-cjs/lib/shapes/shared/freehand/setStrokePointRadii.js.map +0 -7
- package/dist-esm/lib/shapes/shared/freehand/setStrokePointRadii.mjs +0 -80
- package/dist-esm/lib/shapes/shared/freehand/setStrokePointRadii.mjs.map +0 -7
- package/src/lib/shapes/shared/freehand/setStrokePointRadii.ts +0 -127
package/src/test/drawing.test.ts
CHANGED
|
@@ -78,7 +78,7 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
78
78
|
const segment = shape.props.segments[0]
|
|
79
79
|
expect(segment.type).toBe('straight')
|
|
80
80
|
|
|
81
|
-
const points = base64ToPoints(segment.path)
|
|
81
|
+
const points = base64ToPoints(segment.path, segment.dim)
|
|
82
82
|
expect(points.length).toBe(2)
|
|
83
83
|
})
|
|
84
84
|
|
|
@@ -177,7 +177,7 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
177
177
|
|
|
178
178
|
const shape = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
179
179
|
const segment = shape.props.segments[0]
|
|
180
|
-
const points = base64ToPoints(segment.path)
|
|
180
|
+
const points = base64ToPoints(segment.path, segment.dim)
|
|
181
181
|
expect(points[1].x).toBeCloseTo(snappedX)
|
|
182
182
|
expect(points[1].y).toBeCloseTo(snappedY)
|
|
183
183
|
})
|
|
@@ -201,7 +201,7 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
201
201
|
|
|
202
202
|
const shape = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
203
203
|
const segment = shape.props.segments[0]
|
|
204
|
-
const points = base64ToPoints(segment.path)
|
|
204
|
+
const points = base64ToPoints(segment.path, segment.dim)
|
|
205
205
|
expect(points[1].x).toBeCloseTo(x)
|
|
206
206
|
expect(points[1].y).toBeCloseTo(y)
|
|
207
207
|
})
|
|
@@ -221,14 +221,14 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
221
221
|
|
|
222
222
|
const shape1 = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
223
223
|
const segment1 = last(shape1.props.segments)!
|
|
224
|
-
const points1 = base64ToPoints(segment1.path)
|
|
224
|
+
const points1 = base64ToPoints(segment1.path, segment1.dim)
|
|
225
225
|
const point1 = last(points1)!
|
|
226
226
|
expect(point1.x).toBe(1)
|
|
227
227
|
|
|
228
228
|
editor.keyDown('Meta')
|
|
229
229
|
const shape2 = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
230
230
|
const segment2 = last(shape2.props.segments)!
|
|
231
|
-
const points2 = base64ToPoints(segment2.path)
|
|
231
|
+
const points2 = base64ToPoints(segment2.path, segment2.dim)
|
|
232
232
|
const point2 = last(points2)!
|
|
233
233
|
expect(point2.x).toBe(0)
|
|
234
234
|
})
|
|
@@ -248,14 +248,14 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
248
248
|
|
|
249
249
|
const shape1 = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
250
250
|
const segment1 = last(shape1.props.segments)!
|
|
251
|
-
const points1 = base64ToPoints(segment1.path)
|
|
251
|
+
const points1 = base64ToPoints(segment1.path, segment1.dim)
|
|
252
252
|
const point1 = last(points1)!
|
|
253
253
|
expect(point1.x).toBe(1)
|
|
254
254
|
|
|
255
255
|
editor.keyDown('Meta')
|
|
256
256
|
const shape2 = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
257
257
|
const segment2 = last(shape2.props.segments)!
|
|
258
|
-
const points2 = base64ToPoints(segment2.path)
|
|
258
|
+
const points2 = base64ToPoints(segment2.path, segment2.dim)
|
|
259
259
|
const point2 = last(points2)!
|
|
260
260
|
expect(point2.x).toBe(0)
|
|
261
261
|
})
|
|
@@ -276,6 +276,47 @@ for (const toolType of ['draw', 'highlight'] as const) {
|
|
|
276
276
|
const shape = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
277
277
|
expect(shape.props.segments.length).toBe(1)
|
|
278
278
|
})
|
|
279
|
+
|
|
280
|
+
describe('chooses the segment encoding from the input device', () => {
|
|
281
|
+
const getFirstSegment = () => {
|
|
282
|
+
const shape = editor.getCurrentPageShapes()[0] as DrawableShape
|
|
283
|
+
return shape.props.segments[0]
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
it('drops pressure (2D) for a non-pressure device like a mouse', () => {
|
|
287
|
+
editor.setCurrentTool(toolType).pointerDown(0, 0).pointerMove(10, 10).pointerMove(20, 5)
|
|
288
|
+
|
|
289
|
+
const segment = getFirstSegment()
|
|
290
|
+
expect(segment.dim).toBe(2)
|
|
291
|
+
|
|
292
|
+
const zs = base64ToPoints(segment.path, segment.dim).map((p) => p.z!)
|
|
293
|
+
expect(zs.every((z) => Math.abs(z - 0.5) < 0.01)).toBe(true)
|
|
294
|
+
})
|
|
295
|
+
|
|
296
|
+
it('keeps full 3D and preserves varying pressure for a pen', () => {
|
|
297
|
+
editor
|
|
298
|
+
.setCurrentTool(toolType)
|
|
299
|
+
.pointerDown(0, 0, { isPen: true, point: { x: 0, y: 0, z: 0.3 } })
|
|
300
|
+
.pointerMove(10, 10, { isPen: true, point: { x: 10, y: 10, z: 0.6 } })
|
|
301
|
+
.pointerMove(20, 5, { isPen: true, point: { x: 20, y: 5, z: 0.9 } })
|
|
302
|
+
|
|
303
|
+
const segment = getFirstSegment()
|
|
304
|
+
expect(segment.dim).toBeUndefined()
|
|
305
|
+
|
|
306
|
+
const zs = base64ToPoints(segment.path, segment.dim).map((p) => p.z!)
|
|
307
|
+
expect(zs.some((z) => Math.abs(z - 0.5) > 0.01)).toBe(true)
|
|
308
|
+
expect(new Set(zs.map((z) => z.toFixed(2))).size).toBeGreaterThan(1)
|
|
309
|
+
})
|
|
310
|
+
|
|
311
|
+
it('keeps 3D for a stylus that reports as a mouse (pressure that is not the fabricated 0.5)', () => {
|
|
312
|
+
editor
|
|
313
|
+
.setCurrentTool(toolType)
|
|
314
|
+
.pointerDown(0, 0, { point: { x: 0, y: 0, z: 0.7 } })
|
|
315
|
+
.pointerMove(10, 10, { point: { x: 10, y: 10, z: 0.7 } })
|
|
316
|
+
|
|
317
|
+
expect(getFirstSegment().dim).toBeUndefined()
|
|
318
|
+
})
|
|
319
|
+
})
|
|
279
320
|
})
|
|
280
321
|
}
|
|
281
322
|
|
package/src/test/frames.test.ts
CHANGED
|
@@ -156,6 +156,78 @@ describe('creating frames', () => {
|
|
|
156
156
|
expect(parent).toBe('page:page')
|
|
157
157
|
})
|
|
158
158
|
|
|
159
|
+
it('hints the shapes that would be enclosed while drag-creating a frame', () => {
|
|
160
|
+
const boxA = createRect({ pos: [10, 10], size: [20, 20] })
|
|
161
|
+
const boxB = createRect({ pos: [60, 60], size: [20, 20] })
|
|
162
|
+
|
|
163
|
+
editor.setCurrentTool('frame')
|
|
164
|
+
editor.pointerDown(0, 0)
|
|
165
|
+
|
|
166
|
+
// The drag rectangle encloses box A only
|
|
167
|
+
editor.pointerMove(40, 40)
|
|
168
|
+
expect(editor.getHintingShapeIds()).toEqual([boxA])
|
|
169
|
+
|
|
170
|
+
// Grown to enclose both boxes
|
|
171
|
+
editor.pointerMove(100, 100)
|
|
172
|
+
expect(editor.getHintingShapeIds()).toEqual([boxA, boxB])
|
|
173
|
+
|
|
174
|
+
// Shrunk back to enclose box A only
|
|
175
|
+
editor.pointerMove(40, 40)
|
|
176
|
+
expect(editor.getHintingShapeIds()).toEqual([boxA])
|
|
177
|
+
|
|
178
|
+
// On pointer up, the hints clear and the hinted shape becomes a child of the frame
|
|
179
|
+
editor.pointerUp(40, 40)
|
|
180
|
+
expect(editor.getHintingShapeIds()).toHaveLength(0)
|
|
181
|
+
const frameId = editor.getOnlySelectedShape()!.id
|
|
182
|
+
expect(editor.getShape(boxA)?.parentId).toBe(frameId)
|
|
183
|
+
expect(editor.getShape(boxB)?.parentId).toBe(editor.getCurrentPageId())
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
it('does not hint shapes that are only partially enclosed', () => {
|
|
187
|
+
createRect({ pos: [10, 10], size: [20, 20] })
|
|
188
|
+
|
|
189
|
+
editor.setCurrentTool('frame')
|
|
190
|
+
editor.pointerDown(0, 0)
|
|
191
|
+
editor.pointerMove(20, 20)
|
|
192
|
+
expect(editor.getHintingShapeIds()).toHaveLength(0)
|
|
193
|
+
})
|
|
194
|
+
|
|
195
|
+
it('does not hint locked shapes', () => {
|
|
196
|
+
const rectId = createRect({ pos: [10, 10], size: [20, 20] })
|
|
197
|
+
editor.updateShape({ id: rectId, type: 'geo', isLocked: true })
|
|
198
|
+
|
|
199
|
+
editor.setCurrentTool('frame')
|
|
200
|
+
editor.pointerDown(0, 0)
|
|
201
|
+
editor.pointerMove(100, 100)
|
|
202
|
+
expect(editor.getHintingShapeIds()).toHaveLength(0)
|
|
203
|
+
})
|
|
204
|
+
|
|
205
|
+
it('clears the hints when the drag is cancelled', () => {
|
|
206
|
+
createRect({ pos: [10, 10], size: [20, 20] })
|
|
207
|
+
|
|
208
|
+
editor.setCurrentTool('frame')
|
|
209
|
+
editor.pointerDown(0, 0)
|
|
210
|
+
editor.pointerMove(100, 100)
|
|
211
|
+
expect(editor.getHintingShapeIds()).toHaveLength(1)
|
|
212
|
+
|
|
213
|
+
editor.cancel()
|
|
214
|
+
expect(editor.getHintingShapeIds()).toHaveLength(0)
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
it('clears the hints between successive frame creations when tool locked', () => {
|
|
218
|
+
editor.updateInstanceState({ isToolLocked: true })
|
|
219
|
+
createRect({ pos: [10, 10], size: [20, 20] })
|
|
220
|
+
|
|
221
|
+
editor.setCurrentTool('frame')
|
|
222
|
+
editor.pointerDown(0, 0)
|
|
223
|
+
editor.pointerMove(100, 100)
|
|
224
|
+
expect(editor.getHintingShapeIds()).toHaveLength(1)
|
|
225
|
+
editor.pointerUp(100, 100)
|
|
226
|
+
|
|
227
|
+
expect(editor.getCurrentToolId()).toBe('frame')
|
|
228
|
+
expect(editor.getHintingShapeIds()).toHaveLength(0)
|
|
229
|
+
})
|
|
230
|
+
|
|
159
231
|
it('can snap', () => {
|
|
160
232
|
editor.createShapes([
|
|
161
233
|
{ type: 'geo', id: ids.boxA, x: 0, y: 0, props: { w: 50, h: 50, fill: 'solid' } },
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { StrokeOptions } from '../../../lib/shapes/shared/freehand/types'
|
|
2
|
+
|
|
3
|
+
// These presets mirror the StrokeOptions that tldraw actually passes to the
|
|
4
|
+
// freehand algorithm. See packages/tldraw/src/lib/shapes/draw/getPath.ts.
|
|
5
|
+
|
|
6
|
+
const PEN_EASING = (t: number) => t * 0.65 + Math.sin((t * Math.PI) / 2) * 0.35
|
|
7
|
+
|
|
8
|
+
// Mirrors `EASINGS.linear` and `EASINGS.easeOutSine` from `@tldraw/editor`.
|
|
9
|
+
const linear = (t: number) => t
|
|
10
|
+
const easeOutSine = (t: number) => Math.sin((t * Math.PI) / 2)
|
|
11
|
+
|
|
12
|
+
/** Mirrors `modulate` from `@tldraw/utils`. */
|
|
13
|
+
function modulate(value: number, rangeA: number[], rangeB: number[], clamp = false): number {
|
|
14
|
+
const [fromLow, fromHigh] = rangeA
|
|
15
|
+
const [v0, v1] = rangeB
|
|
16
|
+
const result = v0 + ((value - fromLow) / (fromHigh - fromLow)) * (v1 - v0)
|
|
17
|
+
|
|
18
|
+
return clamp
|
|
19
|
+
? v0 < v1
|
|
20
|
+
? Math.max(Math.min(result, v1), v0)
|
|
21
|
+
: Math.max(Math.min(result, v0), v1)
|
|
22
|
+
: result
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** The 'draw' dash style with a mouse or finger (pressure is simulated). */
|
|
26
|
+
export function simulatePressureSettings(strokeWidth: number): StrokeOptions {
|
|
27
|
+
return {
|
|
28
|
+
size: strokeWidth,
|
|
29
|
+
thinning: 0.5,
|
|
30
|
+
streamline: modulate(strokeWidth, [9, 16], [0.64, 0.74], true),
|
|
31
|
+
smoothing: 0.62,
|
|
32
|
+
easing: easeOutSine,
|
|
33
|
+
simulatePressure: true,
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** The 'draw' dash style with a stylus (real pressure). */
|
|
38
|
+
export function realPressureSettings(strokeWidth: number): StrokeOptions {
|
|
39
|
+
return {
|
|
40
|
+
size: 1 + strokeWidth * 1.2,
|
|
41
|
+
thinning: 0.62,
|
|
42
|
+
streamline: 0.62,
|
|
43
|
+
smoothing: 0.62,
|
|
44
|
+
simulatePressure: false,
|
|
45
|
+
easing: PEN_EASING,
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** The solid / dashed / dotted dash styles (constant width). */
|
|
50
|
+
export function solidSettings(strokeWidth: number): StrokeOptions {
|
|
51
|
+
return {
|
|
52
|
+
size: strokeWidth,
|
|
53
|
+
thinning: 0,
|
|
54
|
+
streamline: modulate(strokeWidth, [9, 16], [0.64, 0.74], true),
|
|
55
|
+
smoothing: 0.62,
|
|
56
|
+
simulatePressure: false,
|
|
57
|
+
easing: linear,
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** The highlighter shape. */
|
|
62
|
+
export function highlightSettings(strokeWidth: number): StrokeOptions {
|
|
63
|
+
return {
|
|
64
|
+
size: 1 + strokeWidth,
|
|
65
|
+
thinning: 0,
|
|
66
|
+
streamline: 0.5,
|
|
67
|
+
smoothing: 0.5,
|
|
68
|
+
simulatePressure: false,
|
|
69
|
+
easing: easeOutSine,
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
// Real hand-drawn strokes recorded in tldraw, decoded from a snapshot's
|
|
2
|
+
// delta-encoded base64 segment points (tlschema's b64Vecs format).
|
|
3
|
+
/* eslint-disable no-loss-of-precision -- the literals round-trip exactly; the rule false-positives on long decimals */
|
|
4
|
+
import { VecModel } from '@tldraw/editor'
|
|
5
|
+
|
|
6
|
+
function pts(flat: number[]): VecModel[] {
|
|
7
|
+
const points: VecModel[] = []
|
|
8
|
+
for (let i = 0; i < flat.length; i += 3) {
|
|
9
|
+
points.push({ x: flat[i], y: flat[i + 1], z: flat[i + 2] })
|
|
10
|
+
}
|
|
11
|
+
return points
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** Real hand-drawn strokes recorded in tldraw. */
|
|
15
|
+
export const REAL_STROKES: { id: string; points: VecModel[] }[] = [
|
|
16
|
+
{
|
|
17
|
+
id: '9zLcrhbpuU_geM3cfVPlS',
|
|
18
|
+
points: pts([
|
|
19
|
+
0, 0, 0.5, 0, -0.1199951171875, 0.5, 0, -0.5599365234375, 0.5, 0, -2.5989990234375, 0.5,
|
|
20
|
+
3.3203125, -18.9114990234375, 0.5, 26.2421875, -72.3489990234375, 0.5, 69.0546875,
|
|
21
|
+
-146.9114990234375, 0.5, 104.9609375, -199.3177490234375, 0.5, 125.2421875,
|
|
22
|
+
-224.7552490234375, 0.5, 140.9921875, -241.4427490234375, 0.5, 150.7734375,
|
|
23
|
+
-249.5989990234375, 0.5, 148.3125, -234.8099365234375, 0.5, 134.890625, -199.5286865234375,
|
|
24
|
+
0.5, 116.9375, -160.2474365234375, 0.5, 102.9453125, -129.0130615234375, 0.5, 95.00390625,
|
|
25
|
+
-109.4036865234375, 0.5, 94.99390411376953, -103.0052490234375, 0.5, 117.46265411376953,
|
|
26
|
+
-129.8489990234375, 0.5, 159.52515411376953, -186.5989990234375, 0.5, 191.22827911376953,
|
|
27
|
+
-229.8802490234375, 0.5, 209.85327911376953, -253.5989990234375, 0.5, 223.40015411376953,
|
|
28
|
+
-268.5599365234375, 0.5, 220.98023223876953, -253.0911865234375, 0.5, 204.10523223876953,
|
|
29
|
+
-212.9974365234375, 0.5, 188.76148223876953, -181.0443115234375, 0.5, 179.68335723876953,
|
|
30
|
+
-160.9818115234375, 0.5, 174.50366973876953, -148.0911865234375, 0.5, 174.24365997314453,
|
|
31
|
+
-146.4613037109375, 0.5, 183.30615997314453, -159.6800537109375, 0.5, 196.14990997314453,
|
|
32
|
+
-177.0238037109375, 0.5, 205.55615997314453, -189.2816162109375, 0.5, 212.50537872314453,
|
|
33
|
+
-197.8597412109375, 0.5, 215.18506622314453, -199.4700927734375, 0.5, 214.76514434814453,
|
|
34
|
+
-194.1888427734375, 0.5, 213.01514434814453, -186.1888427734375, 0.5, 211.20557403564453,
|
|
35
|
+
-180.1302490234375, 0.5, 210.54541778564453, -176.9407958984375, 0.5, 210.54541778564453,
|
|
36
|
+
-175.8704833984375, 0.5, 210.70545196533203, -175.6304931640625, 0.5, 211.15540313720703,
|
|
37
|
+
-175.6304931640625, 0.5, 211.71546173095703, -175.6304931640625, 0.5, 212.16541290283203,
|
|
38
|
+
-175.1805419921875, 0.5, 212.55530548095703, -173.0906982421875, 0.5, 213.21546173095703,
|
|
39
|
+
-169.6610107421875, 0.5, 214.43518829345703, -166.3114013671875, 0.5, 216.53479766845703,
|
|
40
|
+
-164.0106201171875, 0.5, 219.62464141845703, -163.2406005859375, 0.5, 223.76526641845703,
|
|
41
|
+
-165.1204833984375, 0.5, 227.76526641845703, -169.4095458984375, 0.5, 230.93518829345703,
|
|
42
|
+
-173.8001708984375, 0.5, 233.01526641845703, -176.7806396484375, 0.5, 233.87512969970703,
|
|
43
|
+
-178.2005615234375, 0.5, 234.60511016845703, -178.7005615234375, 0.5, 242.52698516845703,
|
|
44
|
+
-178.72056579589844, 0.5, 287.93323516845703, -186.36119079589844, 0.5, 450.80823516845703,
|
|
45
|
+
-226.42369079589844, 0.5, 739.808235168457, -291.36119079589844, 0.5, 1027.558235168457,
|
|
46
|
+
-332.39244079589844, 0.5, 1264.683235168457, -342.20494079589844, 0.5, 1409.558235168457,
|
|
47
|
+
-343.02476501464844, 0.5, 1451.464485168457, -341.42515563964844, 0.5,
|
|
48
|
+
]),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: 'hvteNyCylNUNXmiUYIQ4B',
|
|
52
|
+
points: pts([
|
|
53
|
+
0, 0, 0.5, 0, 0.7001953125, 0.5, 0, 1.2099609375, 0.5, 0, -1.4091796875, 0.5, 0,
|
|
54
|
+
-15.6201171875, 0.5, 0, -46.9169921875, 0.5, 0, -92.4482421875, 0.5, 0, -142.3544921875, 0.5,
|
|
55
|
+
-0.1500244140625, -178.5732421875, 0.5, -3.5699462890625, -199.7138671875, 0.5,
|
|
56
|
+
-11.5582275390625, -210.6826171875, 0.5, -22.9801025390625, -211.8623046875, 0.5,
|
|
57
|
+
-33.3785400390625, -196.5419921875, 0.5, -37.0894775390625, -161.0732421875, 0.5,
|
|
58
|
+
-26.9957275390625, -116.1044921875, 0.5, 39.0042724609375, -64.9794921875, 0.5,
|
|
59
|
+
133.7542724609375, -41.1044921875, 0.5, 196.0980224609375, -58.1982421875, 0.5,
|
|
60
|
+
239.7855224609375, -92.7919921875, 0.5, 263.1292724609375, -121.2138671875, 0.5,
|
|
61
|
+
269.3988037109375, -136.1904296875, 0.5, 272.8382568359375, -146.5732421875, 0.5,
|
|
62
|
+
270.0277099609375, -138.5654296875, 0.5, 262.4691162109375, -105.0966796875, 0.5,
|
|
63
|
+
247.8988037109375, -48.0341796875, 0.5, 214.7738037109375, 28.9658203125, 0.5,
|
|
64
|
+
172.5238037109375, 88.1533203125, 0.5, 126.3050537109375, 117.2470703125, 0.5,
|
|
65
|
+
68.9300537109375, 132.6064453125, 0.5, 16.5238037109375, 128.8857421875, 0.5,
|
|
66
|
+
-17.1949462890625, 107.6513671875, 0.5, -30.9918212890625, 79.3857421875, 0.5,
|
|
67
|
+
-24.9605712890625, 52.5419921875, 0.5, 10.0706787109375, 27.9794921875, 0.5, 66.4456787109375,
|
|
68
|
+
9.4482421875, 0.5, 127.5394287109375, -7.8642578125, 0.5, 180.5706787109375, -28.1611328125,
|
|
69
|
+
0.5, 214.5394287109375, -47.7861328125, 0.5, 233.4456787109375, -71.2548828125, 0.5,
|
|
70
|
+
237.8753662109375, -96.1611328125, 0.5, 226.6331787109375, -114.4423828125, 0.5,
|
|
71
|
+
200.3050537109375, -122.7158203125, 0.5, 165.9925537109375, -110.3095703125, 0.5,
|
|
72
|
+
142.2581787109375, -84.5751953125, 0.5, 129.7113037109375, -56.9814453125, 0.5,
|
|
73
|
+
123.0394287109375, -32.8564453125, 0.5, 128.4378662109375, -20.6142578125, 0.5,
|
|
74
|
+
147.9534912109375, -21.6943359375, 0.5, 173.1878662109375, -38.1318359375, 0.5,
|
|
75
|
+
189.5003662109375, -58.4755859375, 0.5, 195.7698974609375, -71.8740234375, 0.5,
|
|
76
|
+
198.0296630859375, -80.2021484375, 0.5, 198.4796142578125, -83.2412109375, 0.5,
|
|
77
|
+
197.5894775390625, -81.4208984375, 0.5, 196.6392822265625, -75.3896484375, 0.5,
|
|
78
|
+
196.4393310546875, -65.0693359375, 0.5, 200.6112060546875, -53.1630859375, 0.5,
|
|
79
|
+
211.6424560546875, -42.2802734375, 0.5, 226.9158935546875, -35.1904296875, 0.5,
|
|
80
|
+
241.0174560546875, -32.8798828125, 0.5, 249.3455810546875, -35.3896484375, 0.5,
|
|
81
|
+
252.2850341796875, -40.5380859375, 0.5, 252.5750732421875, -45.2294921875, 0.5,
|
|
82
|
+
251.6351318359375, -48.1494140625, 0.5, 249.5960693359375, -47.29931640625, 0.5,
|
|
83
|
+
247.9564208984375, -40.28759765625, 0.5, 247.4163818359375, -31.63134765625, 0.5,
|
|
84
|
+
247.8763427734375, -25.70947265625, 0.5, 249.5462646484375, -22.24853515625, 0.5,
|
|
85
|
+
252.1068115234375, -21.388671875, 0.5, 254.3665771484375, -23.408203125, 0.5,
|
|
86
|
+
256.0267333984375, -27.728515625, 0.5, 257.1868896484375, -31.658203125, 0.5,
|
|
87
|
+
257.8968505859375, -33.888671875, 0.5, 258.6370849609375, -34.728515625, 0.5,
|
|
88
|
+
262.7073974609375, -34.95849609375, 0.5, 275.6448974609375, -35.28857421875, 0.5,
|
|
89
|
+
300.0511474609375, -37.57763671875, 0.5, 328.6605224609375, -41.67919921875, 0.5,
|
|
90
|
+
356.6448974609375, -45.35888671875, 0.5, 376.8167724609375, -47.77880859375, 0.5,
|
|
91
|
+
]),
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: 'v7tr-W6M0CbFG7feklXsT',
|
|
95
|
+
points: pts([
|
|
96
|
+
0, 0, 0.5, 0, -0.7001953125, 0.5, 0, -0.93017578125, 0.5, 0.72998046875, 10.28076171875, 0.5,
|
|
97
|
+
4.65966796875, 45.84326171875, 0.5, 10.37060546875, 105.62451171875, 0.5, 12.89013671875,
|
|
98
|
+
182.18701171875, 0.5, 12.89013671875, 249.93701171875, 0.5, 12.89013671875, 292.49951171875,
|
|
99
|
+
0.5, 12.89013671875, 318.84326171875, 0.5, 12.89013671875, 334.28076171875, 0.5,
|
|
100
|
+
12.89013671875, 338.90185546875, 0.5, 14.15966796875, 330.17529296875, 0.5, 19.92919921875,
|
|
101
|
+
293.92529296875, 0.5, 24.41748046875, 240.01904296875, 0.5, 23.06787109375, 187.64404296875,
|
|
102
|
+
0.5, 10.39599609375, 142.86279296875, 0.5, -17.69775390625, 115.26904296875, 0.5,
|
|
103
|
+
-55.10400390625, 102.80810546875, 0.5, -96.16650390625, 101.42822265625, 0.5,
|
|
104
|
+
-133.88525390625, 113.46728515625, 0.5, -157.54150390625, 132.90478515625, 0.5,
|
|
105
|
+
-166.72900390625, 154.13916015625, 0.5, -163.87939453125, 175.82666015625, 0.5,
|
|
106
|
+
-136.50439453125, 189.29541015625, 0.5, -72.37939453125, 192.26611328125, 0.5, 26.62060546875,
|
|
107
|
+
176.93798828125, 0.5, 143.12060546875, 142.25048828125, 0.5, 221.99560546875, 113.65673828125,
|
|
108
|
+
0.5, 253.80810546875, 100.09423828125, 0.5, 275.41748046875, 90.80517578125, 0.5,
|
|
109
|
+
286.19091796875, 85.94580078125, 0.5, 288.03076171875, 84.81591796875, 0.5, 287.03076171875,
|
|
110
|
+
84.81591796875, 0.5, 284.08154296875, 84.86590576171875, 0.5, 278.21044921875,
|
|
111
|
+
85.49578857421875, 0.5, 270.35888671875, 86.24578857421875, 0.5, 259.31982421875,
|
|
112
|
+
85.75579833984375, 0.5, 242.19482421875, 78.97454833984375, 0.5, 222.52294921875,
|
|
113
|
+
61.16204833984375, 0.5, 208.02294921875, 38.84954833984375, 0.5, 199.72607421875,
|
|
114
|
+
19.19329833984375, 0.5, 195.12451171875, 4.95111083984375, 0.5, 193.26416015625,
|
|
115
|
+
-2.76763916015625, 0.5, 192.734375, -4.83795166015625, 0.5, 192.66436767578125,
|
|
116
|
+
8.93548583984375, 0.5, 192.62435913085938, 44.99798583984375, 0.5, 192.62435913085938,
|
|
117
|
+
99.18548583984375, 0.5, 192.62435913085938, 162.43548583984375, 0.5, 195.20443725585938,
|
|
118
|
+
221.12298583984375, 0.5, 199.78256225585938, 262.84173583984375, 0.5, 203.37240600585938,
|
|
119
|
+
287.10736083984375, 0.5, 205.97201538085938, 301.60736083984375, 0.5, 207.61166381835938,
|
|
120
|
+
308.39642333984375, 0.5, 208.49154663085938, 310.15618896484375, 0.5, 208.74154663085938,
|
|
121
|
+
310.1861877441406, 0.5, 208.62155151367188, 309.3863830566406, 0.5,
|
|
122
|
+
]),
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: 'YsH0MKBW6muD3blTzXSf9',
|
|
126
|
+
points: pts([
|
|
127
|
+
0, 0, 0.5, -0.2900390625, 0, 0.5, 0.35009765625, 0, 0.5, 3.42041015625, -0.199951171875, 0.5,
|
|
128
|
+
7.81103515625, -2.510498046875, 0.5, 11.30126953125, -7.612060546875, 0.5, 12.68115234375,
|
|
129
|
+
-13.541748046875, 0.5, 12.8111572265625, -18.280029296875, 0.5, 12.8111572265625,
|
|
130
|
+
-21.490966796875, 0.5, 11.6109619140625, -23.551513671875, 0.5, 8.6304931640625,
|
|
131
|
+
-24.421630859375, 0.5, 4.3492431640625, -21.882568359375, 0.5, -1.2991943359375,
|
|
132
|
+
-12.093505859375, 0.5, -7.4476318359375, 4.718994140625, 0.5, -10.9671630859375,
|
|
133
|
+
24.265869140625, 0.5, -11.4769287109375, 41.234619140625, 0.5, -8.6566162109375,
|
|
134
|
+
51.695556640625, 0.5, 0.9136962890625, 55.176025390625, 0.5, 14.6324462890625,
|
|
135
|
+
50.847900390625, 0.5, 26.3902587890625, 39.144775390625, 0.5, 34.3785400390625,
|
|
136
|
+
24.676025390625, 0.5, 39.2183837890625, 9.324462890625, 0.5, 41.1187744140625,
|
|
137
|
+
-2.253662109375, 0.5, 41.158782958984375, -8.843505859375, 0.5, 40.478607177734375,
|
|
138
|
+
-12.833740234375, 0.5, 39.498626708984375, -14.003662109375, 0.5, 38.948822021484375,
|
|
139
|
+
-12.143310546875, 0.5, 38.878814697265625, -3.065185546875, 0.5, 38.878814697265625,
|
|
140
|
+
13.106689453125, 0.5, 40.109283447265625, 27.677001953125, 0.5, 44.597564697265625,
|
|
141
|
+
39.348876953125, 0.5, 51.038970947265625, 46.079345703125, 0.5, 57.437408447265625,
|
|
142
|
+
45.039306640625, 0.5, 63.527252197265625, 37.211181640625, 0.5, 68.02725219726562,
|
|
143
|
+
23.148681640625, 0.5, 69.66690063476562, 11.031494140625, 0.5, 69.68690490722656,
|
|
144
|
+
3.320556640625, 0.5, 69.65690612792969, -1.577880859375, 0.5, 69.33683776855469,
|
|
145
|
+
-3.747802734375, 0.5, 69.13688659667969, -3.94775390625, 0.5, 72.73649597167969,
|
|
146
|
+
0.55224609375, 0.5, 83.39274597167969, 14.15380859375, 0.5, 101.79899597167969,
|
|
147
|
+
41.88818359375, 0.5, 126.28337097167969, 90.88818359375, 0.5, 142.1271209716797,
|
|
148
|
+
152.04443359375, 0.5, 142.5570526123047, 213.16943359375, 0.5, 119.60392761230469,
|
|
149
|
+
269.48193359375, 0.5, 76.10392761230469, 309.95068359375, 0.5, 39.97892761230469,
|
|
150
|
+
329.18505859375, 0.5, 14.603927612304688, 334.35693359375, 0.5, -0.6851348876953125,
|
|
151
|
+
315.88818359375, 0.5, 28.221115112304688, 242.95068359375, 0.5, 121.15861511230469,
|
|
152
|
+
105.95068359375, 0.5, 226.0336151123047, -40.79931640625, 0.5, 289.5648651123047,
|
|
153
|
+
-143.98681640625, 0.5, 321.2523651123047, -244.42431640625, 0.5, 319.0121307373047,
|
|
154
|
+
-327.98681640625, 0.5, 277.1683807373047, -354.61181640625, 0.5, 213.2308807373047,
|
|
155
|
+
-347.56103515625, 0.5, 150.1996307373047, -320.65478515625, 0.5, 114.66838073730469,
|
|
156
|
+
-297.60791015625, 0.5, 95.41838073730469, -283.21728515625, 0.5, 83.16838073730469,
|
|
157
|
+
-273.19384765625, 0.5, 94.48869323730469, -279.06494140625, 0.5, 123.51994323730469,
|
|
158
|
+
-300.23681640625, 0.5, 145.4730682373047, -318.92431640625, 0.5, 158.1527557373047,
|
|
159
|
+
-331.76806640625, 0.5, 157.9528045654297, -337.56884765625, 0.5, 133.2653045654297,
|
|
160
|
+
-328.07666015625, 0.5, 104.67155456542969, -314.98291015625, 0.5, 87.65592956542969,
|
|
161
|
+
-307.01416015625, 0.5, 77.19499206542969, -301.92431640625, 0.5, 77.14500427246094,
|
|
162
|
+
-301.87432861328125, 0.5, 85.08641052246094, -307.01495361328125, 0.5, 92.68797302246094,
|
|
163
|
+
-313.06573486328125, 0.5, 97.24656677246094, -319.62432861328125, 0.5, 91.95750427246094,
|
|
164
|
+
-324.86260986328125, 0.5, 75.30125427246094, -326.66241455078125, 0.5, 57.30125427246094,
|
|
165
|
+
-327.54229736328125, 0.5, 43.37937927246094, -328.31231689453125, 0.5, 34.30906677246094,
|
|
166
|
+
-329.92266845703125, 0.5, 30.918441772460938, -334.48126220703125, 0.5, 32.07859802246094,
|
|
167
|
+
-341.39141845703125, 0.5, 35.54930114746094, -347.16094970703125, 0.5, 38.46922302246094,
|
|
168
|
+
-350.74102783203125, 0.5, 39.18943786621094, -352.75079345703125, 0.5, 35.87889099121094,
|
|
169
|
+
-353.31085205078125, 0.5, 28.289047241210938, -353.31085205078125, 0.5, 19.562484741210938,
|
|
170
|
+
-353.36083984375, 0.5, 13.050765991210938, -353.36083984375, 0.5, 9.871078491210938,
|
|
171
|
+
-353.36083984375, 0.5, 8.791000366210938, -353.36083984375, 0.5, 8.341049194335938,
|
|
172
|
+
-353.36083984375, 0.5, 5.6105804443359375, -353.640869140625, 0.5, -10.045669555664062,
|
|
173
|
+
-355.320556640625, 0.5,
|
|
174
|
+
]),
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
id: 'z7I7jk0Ky6w7ob1oD3WC9',
|
|
178
|
+
points: pts([
|
|
179
|
+
0, 0, 0.5, -0.18994140625, 0, 0.5, -4.01025390625, 0, 0.5, -13.30712890625, 0, 0.5,
|
|
180
|
+
-33.46337890625, 0, 0.5,
|
|
181
|
+
]),
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
id: '3WYN5Fjm1Bp7ykdK4P8Sa',
|
|
185
|
+
points: pts([
|
|
186
|
+
0, 0, 0.5, -0.47998046875, 0.1600341796875, 0.5, -0.75, 0.320068359375, 0.5, 0.8701171875,
|
|
187
|
+
0.320068359375, 0.5, 10.5576171875, -3.410400390625, 0.5, 34.6669921875, -22.816650390625,
|
|
188
|
+
0.5, 67.3857421875, -66.847900390625, 0.5, 97.8701171875, -134.847900390625, 0.5,
|
|
189
|
+
117.9951171875, -224.222900390625, 0.5, 124.6435546875, -308.222900390625, 0.5,
|
|
190
|
+
124.7435302734375, -366.972900390625, 0.5, 122.9837646484375, -402.254150390625, 0.5,
|
|
191
|
+
115.5931396484375, -426.051025390625, 0.5, 102.3665771484375, -441.691650390625, 0.5,
|
|
192
|
+
83.8040771484375, -439.601806640625, 0.5, 55.1009521484375, -410.664306640625, 0.5,
|
|
193
|
+
24.6165771484375, -345.289306640625, 0.5, 7.9603271484375, -247.664306640625, 0.5,
|
|
194
|
+
11.1107177734375, -134.726806640625, 0.5, 46.5169677734375, -33.726806640625, 0.5,
|
|
195
|
+
100.9232177734375, 29.804443359375, 0.5, 150.5482177734375, 57.773193359375, 0.5,
|
|
196
|
+
188.4232177734375, 67.296630859375, 0.5, 208.2982177734375, 67.3966064453125, 0.5,
|
|
197
|
+
217.1966552734375, 64.6173095703125, 0.5, 220.5872802734375, 58.5587158203125, 0.5,
|
|
198
|
+
207.7200927734375, 45.5665283203125, 0.5, 168.5950927734375, 24.5196533203125, 0.5,
|
|
199
|
+
118.9388427734375, 7.3946533203125, 0.5, 75.9700927734375, 0.5352783203125, 0.5,
|
|
200
|
+
40.4700927734375, -0.3646240234375, 0.5, 12.2513427734375, 12.4635009765625, 0.5,
|
|
201
|
+
-0.8189697265625, 41.7916259765625, 0.5, 5.6927490234375, 80.4478759765625, 0.5,
|
|
202
|
+
27.2552490234375, 118.3541259765625, 0.5, 53.3489990234375, 141.0416259765625, 0.5,
|
|
203
|
+
81.9271240234375, 149.2525634765625, 0.5, 107.0208740234375, 147.2525634765625, 0.5,
|
|
204
|
+
118.4583740234375, 136.9322509765625, 0.5, 121.7279052734375, 124.1822509765625, 0.5,
|
|
205
|
+
116.9271240234375, 113.5494384765625, 0.5, 100.3802490234375, 109.0377197265625, 0.5,
|
|
206
|
+
78.4427490234375, 113.8189697265625, 0.5, 55.6614990234375, 131.3814697265625, 0.5,
|
|
207
|
+
38.3802490234375, 157.7564697265625, 0.5, 33.0794677734375, 181.3970947265625, 0.5,
|
|
208
|
+
34.2493896484375, 200.5845947265625, 0.5, 46.1322021484375, 216.0845947265625, 0.5,
|
|
209
|
+
68.2415771484375, 220.7564697265625, 0.5, 93.4759521484375, 205.7955322265625, 0.5,
|
|
210
|
+
111.9134521484375, 182.0142822265625, 0.5, 119.1243896484375, 161.1392822265625, 0.5,
|
|
211
|
+
121.2044677734375, 144.9830322265625, 0.5, 119.3743896484375, 137.7213134765625, 0.5,
|
|
212
|
+
114.9447021484375, 135.1822509765625, 0.5, 109.0931396484375, 134.1226806640625, 0.5,
|
|
213
|
+
103.4642333984375, 137.1031494140625, 0.5, 99.6536865234375, 144.7047119140625, 0.5,
|
|
214
|
+
97.8636474609375, 153.1031494140625, 0.5, 97.4136962890625, 160.7320556640625, 0.5,
|
|
215
|
+
98.2037353515625, 166.8726806640625, 0.5, 102.3521728515625, 171.6734619140625, 0.5,
|
|
216
|
+
110.1724853515625, 176.8453369140625, 0.5, 118.2349853515625, 181.6461181640625, 0.5,
|
|
217
|
+
126.9459228515625, 184.8765869140625, 0.5, 136.7740478515625, 185.5865478515625, 0.5,
|
|
218
|
+
149.6646728515625, 165.4615478515625, 0.5, 173.5084228515625, 83.0865478515625, 0.5,
|
|
219
|
+
208.1334228515625, -67.9134521484375, 0.5, 267.1334228515625, -269.4134521484375, 0.5,
|
|
220
|
+
331.3209228515625, -419.7884521484375, 0.5, 368.8209228515625, -475.2259521484375, 0.5,
|
|
221
|
+
407.3521728515625, -527.6009521484375, 0.5, 431.4459228515625, -540.0384521484375, 0.5,
|
|
222
|
+
405.8521728515625, -459.8509521484375, 0.5, 352.7271728515625, -331.3509521484375, 0.5,
|
|
223
|
+
303.3209228515625, -201.1009521484375, 0.5, 272.2271728515625, -105.5384521484375, 0.5,
|
|
224
|
+
259.1881103515625, -56.9447021484375, 0.5, 253.5787353515625, -29.6478271484375, 0.5,
|
|
225
|
+
251.2388916015625, -14.6165771484375, 0.5, 264.5670166015625, -38.4915771484375, 0.5,
|
|
226
|
+
294.2701416015625, -95.5540771484375, 0.5, 316.7232666015625, -137.8040771484375, 0.5,
|
|
227
|
+
329.2623291015625, -160.1478271484375, 0.5, 338.8717041015625, -175.0853271484375, 0.5,
|
|
228
|
+
339.2615966796875, -171.6654052734375, 0.5, 323.6444091796875, -138.4466552734375, 0.5,
|
|
229
|
+
288.9256591796875, -68.7591552734375, 0.5, 257.9725341796875, -8.5091552734375, 0.5,
|
|
230
|
+
242.6209716796875, 20.5220947265625, 0.5, 232.4412841796875, 43.3033447265625, 0.5,
|
|
231
|
+
234.3016357421875, 46.7135009765625, 0.5, 248.0516357421875, 31.7838134765625, 0.5,
|
|
232
|
+
265.6297607421875, 15.6588134765625, 0.5, 282.4110107421875, 2.0885009765625, 0.5,
|
|
233
|
+
293.6688232421875, -4.6419677734375, 0.5, 298.3797607421875, -3.5716552734375, 0.5,
|
|
234
|
+
292.7313232421875, 10.9205322265625, 0.5, 279.3094482421875, 32.4674072265625, 0.5,
|
|
235
|
+
266.8328857421875, 49.4674072265625, 0.5, 259.0828857421875, 59.7955322265625, 0.5,
|
|
236
|
+
255.1531982421875, 64.6158447265625, 0.5, 254.3133544921875, 65.4556884765625, 0.5,
|
|
237
|
+
255.5731201171875, 64.0660400390625, 0.5, 257.7137451171875, 62.0963134765625, 0.5,
|
|
238
|
+
259.0340576171875, 60.9664306640625, 0.5, 259.6439208984375, 60.6263427734375, 0.5,
|
|
239
|
+
259.9239501953125, 60.496337890625, 0.5, 260.4439697265625, 59.776123046875, 0.5,
|
|
240
|
+
267.7447509765625, 54.514404296875, 0.5, 295.1197509765625, 39.811279296875, 0.5,
|
|
241
|
+
337.0572509765625, 23.467529296875, 0.5, 376.7447509765625, 15.545654296875, 0.5,
|
|
242
|
+
410.3697509765625, 17.914794921875, 0.5, 427.9947509765625, 41.586669921875, 0.5,
|
|
243
|
+
420.4244384765625, 93.617919921875, 0.5, 385.4556884765625, 159.805419921875, 0.5,
|
|
244
|
+
339.5806884765625, 215.992919921875, 0.5, 302.3306884765625, 252.992919921875, 0.5,
|
|
245
|
+
276.3775634765625, 274.680419921875, 0.5, 258.9400634765625, 285.524169921875, 0.5,
|
|
246
|
+
248.9791259765625, 288.623779296875, 0.5, 263.1588134765625, 265.842529296875, 0.5,
|
|
247
|
+
330.0338134765625, 211.561279296875, 0.5, 458.7838134765625, 156.498779296875, 0.5,
|
|
248
|
+
620.0338134765625, 135.264404296875, 0.5, 743.9713134765625, 166.670654296875, 0.5,
|
|
249
|
+
808.1588134765625, 229.108154296875, 0.5, 843.4088134765625, 299.733154296875, 0.5,
|
|
250
|
+
855.7213134765625, 356.608154296875, 0.5, 853.0103759765625, 390.826904296875, 0.5,
|
|
251
|
+
]),
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
id: 'vH252i2tkkEUoW3tL2aRm',
|
|
255
|
+
points: pts([
|
|
256
|
+
0, 0, 0.5, 0.2900390625, -0.1400146484375, 0.5, 0.570068359375, -0.180023193359375, 0.5,
|
|
257
|
+
0.570068359375, 0.249908447265625, 0.5, 0.570068359375, 1.509674072265625, 0.5,
|
|
258
|
+
0.570068359375, 3.890533447265625, 0.5, 0.570068359375, 5.700103759765625, 0.5,
|
|
259
|
+
0.199951171875, 6.519927978515625, 0.5, -2.399658203125, 6.349884033203125, 0.5,
|
|
260
|
+
-10.259033203125, -1.040740966796875, 0.5, -30.727783203125, -22.056365966796875, 0.5,
|
|
261
|
+
-73.196533203125, -52.259490966796875, 0.5, -132.165283203125, -73.91574096679688, 0.5,
|
|
262
|
+
-186.571533203125, -78.96652221679688, 0.5, -231.759033203125, -71.61495971679688, 0.5,
|
|
263
|
+
-267.852783203125, -56.185272216796875, 0.5, -292.743408203125, -35.857147216796875, 0.5,
|
|
264
|
+
-309.227783203125, -9.904022216796875, 0.5, -314.759033203125, 15.299102783203125, 0.5,
|
|
265
|
+
-310.278564453125, 40.549102783203125, 0.5, -292.622314453125, 61.814727783203125, 0.5,
|
|
266
|
+
-259.903564453125, 71.28347778320312, 0.5, -219.434814453125, 72.85379028320312, 0.5,
|
|
267
|
+
-185.903564453125, 65.46316528320312, 0.5, -161.700439453125, 49.431915283203125, 0.5,
|
|
268
|
+
-143.262939453125, 26.025665283203125, 0.5, -139.923095703125, -3.177459716796875, 0.5,
|
|
269
|
+
-157.985595703125, -30.599334716796875, 0.5, -194.860595703125, -53.833709716796875, 0.5,
|
|
270
|
+
-244.235595703125, -69.98995971679688, 0.5, -302.048095703125, -72.40011596679688, 0.5,
|
|
271
|
+
-358.360595703125, -56.946990966796875, 0.5, -412.860595703125, -16.196990966796875, 0.5,
|
|
272
|
+
-454.516845703125, 34.178009033203125, 0.5, -474.438720703125, 79.02175903320312, 0.5,
|
|
273
|
+
-482.290283203125, 113.36550903320312, 0.5, -482.1202392578125, 134.74050903320312, 0.5,
|
|
274
|
+
-478.5401611328125, 146.56863403320312, 0.5, -472.1690673828125, 150.36941528320312, 0.5,
|
|
275
|
+
-465.1300048828125, 149.73953247070312, 0.5, -459.3018798828125, 142.18093872070312, 0.5,
|
|
276
|
+
-456.2725830078125, 125.18093872070312, 0.5, -458.8624267578125, 101.91531372070312, 0.5,
|
|
277
|
+
-469.5811767578125, 81.29031372070312, 0.5, -486.6749267578125, 67.43875122070312, 0.5,
|
|
278
|
+
-507.4405517578125, 61.669219970703125, 0.5, -527.1436767578125, 71.64578247070312, 0.5,
|
|
279
|
+
-539.2921142578125, 94.20828247070312, 0.5, -544.2218017578125, 122.30203247070312, 0.5,
|
|
280
|
+
-542.4913330078125, 153.61453247070312, 0.5, -525.1632080078125, 177.02078247070312, 0.5,
|
|
281
|
+
-481.6632080078125, 188.05203247070312, 0.5, -434.0069580078125, 184.89187622070312, 0.5,
|
|
282
|
+
-397.8194580078125, 159.95437622070312, 0.5, -371.4288330078125, 110.39187622070312, 0.5,
|
|
283
|
+
-363.3350830078125, 47.079376220703125, 0.5, -379.9913330078125, -20.858123779296875, 0.5,
|
|
284
|
+
-421.3663330078125, -89.92062377929688, 0.5, -469.5225830078125, -147.82687377929688, 0.5,
|
|
285
|
+
-498.5850830078125, -177.49874877929688, 0.5, -512.5147705078125, -189.46749877929688, 0.5,
|
|
286
|
+
-524.3428955078125, -196.62765502929688, 0.5, -523.4527587890625, -168.33078002929688, 0.5,
|
|
287
|
+
-498.7183837890625, -91.95578002929688, 0.5, -466.0308837890625, -13.893280029296875, 0.5,
|
|
288
|
+
-448.0152587890625, 26.887969970703125, 0.5, -436.1246337890625, 49.700469970703125, 0.5,
|
|
289
|
+
-425.2340087890625, 66.84109497070312, 0.5, -419.9722900390625, 67.30105590820312, 0.5,
|
|
290
|
+
-418.4420166015625, 48.769805908203125, 0.5, -419.8023681640625, 14.988555908203125, 0.5,
|
|
291
|
+
-425.3726806640625, -17.042694091796875, 0.5, -432.0718994140625, -36.995819091796875, 0.5,
|
|
292
|
+
-436.6812744140625, -47.355194091796875, 0.5, -438.8121337890625, -47.635223388671875, 0.5,
|
|
293
|
+
-437.2720947265625, -34.111785888671875, 0.5, -429.9127197265625, -13.189910888671875, 0.5,
|
|
294
|
+
-419.3736572265625, 3.919464111328125, 0.5, -408.8658447265625, 14.817901611328125, 0.5,
|
|
295
|
+
-400.0064697265625, 19.767120361328125, 0.5, -394.6275634765625, 18.007354736328125, 0.5,
|
|
296
|
+
-390.5963134765625, 9.663604736328125, 0.5, -387.7662353515625, -2.609832763671875, 0.5,
|
|
297
|
+
-386.9864501953125, -12.039520263671875, 0.5, -386.9864501953125, -17.480926513671875, 0.5,
|
|
298
|
+
-386.9864501953125, -20.840301513671875, 0.5, -386.9864501953125, -21.970184326171875, 0.5,
|
|
299
|
+
-386.9864501953125, -22.320281982421875, 0.5, -386.7164306640625, -22.700164794921875, 0.5,
|
|
300
|
+
-385.3160400390625, -24.669891357421875, 0.5, -383.1265869140625, -29.271453857421875, 0.5,
|
|
301
|
+
-381.0758056640625, -34.662078857421875, 0.5, -379.4957275390625, -39.283172607421875, 0.5,
|
|
302
|
+
-378.6456298828125, -42.433563232421875, 0.5, -378.3756103515625, -43.993133544921875, 0.5,
|
|
303
|
+
-378.265625, -44.542938232421875, 0.5, -378.03564453125, -44.57293701171875, 0.5,
|
|
304
|
+
-377.645751953125, -44.612945556640625, 0.5, -377.2158203125, -44.612945556640625, 0.5,
|
|
305
|
+
]),
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
id: '8XL4rYftYdjhjIEhCJ8x_',
|
|
309
|
+
points: pts([
|
|
310
|
+
0, 0, 0.5, 0.409912109375, -2.0390625, 0.5, 0.829833984375, -4.068359375, 0.5,
|
|
311
|
+
0.7198486328125, -4.068359375, 0.5, 3.3800048828125, -1.337890625, 0.5, 18.4815673828125,
|
|
312
|
+
16.708984375, 0.5, 45.6065673828125, 55.146484375, 0.5, 75.2315673828125, 106.396484375, 0.5,
|
|
313
|
+
99.2471923828125, 160.521484375, 0.5, 110.1300048828125, 202.302734375, 0.5,
|
|
314
|
+
109.9400634765625, 233.115234375, 0.5, 99.3228759765625, 254.115234375, 0.5, 75.4791259765625,
|
|
315
|
+
262.544921875, 0.5, 41.7603759765625, 265.07421875, 0.5, 5.0728759765625, 256.41796875, 0.5,
|
|
316
|
+
-26.0052490234375, 235.02734375, 0.5, -42.3802490234375, 210.16796875, 0.5, -48.0521240234375,
|
|
317
|
+
179.10546875, 0.5, -42.9739990234375, 150.91796875, 0.5, -15.4583740234375, 139.52734375, 0.5,
|
|
318
|
+
35.6666259765625, 153.98828125, 0.5, 89.6353759765625, 185.69140625, 0.5, 131.8853759765625,
|
|
319
|
+
208.80078125, 0.5, 171.4166259765625, 217.05859375, 0.5, 200.7135009765625, 184.90234375, 0.5,
|
|
320
|
+
210.2838134765625, 77.02734375, 0.5, 211.3433837890625, -69.47265625, 0.5, 205.8824462890625,
|
|
321
|
+
-204.22265625, 0.5, 188.7730712890625, -300.41015625, 0.5, 162.5855712890625, -353.44140625,
|
|
322
|
+
0.5, 126.3668212890625, -379.37890625, 0.5, 81.9605712890625, -369.45703125, 0.5,
|
|
323
|
+
41.0855712890625, -331.51953125, 0.5, 12.0386962890625, -279.86328125, 0.5, -1.9534912109375,
|
|
324
|
+
-223.51953125, 0.5, 1.1656494140625, -179.80078125, 0.5, 18.1656494140625, -157.67578125, 0.5,
|
|
325
|
+
44.0093994140625, -152.14453125, 0.5, 76.8843994140625, -165.34765625, 0.5, 110.0718994140625,
|
|
326
|
+
-200.97265625, 0.5, 132.7125244140625, -253.56640625, 0.5, 143.1500244140625, -312.34765625,
|
|
327
|
+
0.5, 141.0504150390625, -360.62890625, 0.5, 129.7769775390625, -389.23828125, 0.5,
|
|
328
|
+
112.5738525390625, -403.81640625, 0.5, 93.4488525390625, -408.28515625, 0.5, 77.4957275390625,
|
|
329
|
+
-400.74609375, 0.5, 63.9957275390625, -387.03515625, 0.5, 54.9722900390625, -367.33203125,
|
|
330
|
+
0.5, 53.2818603515625, -342.42578125, 0.5, 64.4224853515625, -315.44140625, 0.5,
|
|
331
|
+
83.2193603515625, -294.39453125, 0.5, 102.7349853515625, -285.54296875, 0.5,
|
|
332
|
+
118.6334228515625, -287.0732421875, 0.5, 125.0943603515625, -302.9326171875, 0.5,
|
|
333
|
+
118.7037353515625, -339.5888671875, 0.5, 88.8287353515625, -389.3701171875, 0.5,
|
|
334
|
+
31.7662353515625, -445.4013671875, 0.5, -51.6712646484375, -507.8701171875, 0.5,
|
|
335
|
+
-127.6712646484375, -545.4638671875, 0.5, -177.9525146484375, -545.5738525390625, 0.5,
|
|
336
|
+
-226.7025146484375, -521.6363525390625, 0.5, -266.1712646484375, -491.7769775390625, 0.5,
|
|
337
|
+
-287.2337646484375, -472.7769775390625, 0.5, -298.1634521484375, -461.8004150390625, 0.5,
|
|
338
|
+
-302.6751708984375, -456.8707275390625, 0.5, -303.9251708984375, -455.2203369140625, 0.5,
|
|
339
|
+
-304.4251708984375, -454.5401611328125, 0.5, -304.6951904296875, -454.380126953125, 0.5,
|
|
340
|
+
-304.9151611328125, -454.39012908935547, 0.5, -304.5352783203125, -454.3501205444336, 0.5,
|
|
341
|
+
-289.0665283203125, -458.8813705444336, 0.5, -220.0040283203125, -487.9751205444336, 0.5,
|
|
342
|
+
-82.7540283203125, -554.6626205444336, 0.5, 31.5584716796875, -610.4126205444336, 0.5,
|
|
343
|
+
90.9334716796875, -634.3188705444336, 0.5, 133.2772216796875, -649.4516830444336, 0.5,
|
|
344
|
+
155.4647216796875, -656.4204330444336, 0.5, 165.1834716796875, -658.7212142944336, 0.5,
|
|
345
|
+
165.8133544921875, -658.2312240600586, 0.5, 153.2117919921875, -651.6804428100586, 0.5,
|
|
346
|
+
113.2742919921875, -631.3835678100586, 0.5, 44.4617919921875, -595.2585678100586, 0.5,
|
|
347
|
+
-23.1632080078125, -557.5398178100586, 0.5, -62.6944580078125, -532.8523178100586, 0.5,
|
|
348
|
+
-85.3507080078125, -515.6960678100586, 0.5, -100.0694580078125, -500.3757553100586, 0.5,
|
|
349
|
+
-96.0499267578125, -492.3523178100586, 0.5, -57.2374267578125, -494.9929428100586, 0.5,
|
|
350
|
+
-1.7999267578125, -509.2663803100586, 0.5, 49.0125732421875, -534.2195053100586, 0.5,
|
|
351
|
+
79.4188232421875, -552.8757553100586, 0.5, 90.2781982421875, -562.0320053100586, 0.5,
|
|
352
|
+
98.4578857421875, -568.5827865600586, 0.5, 98.0679931640625, -565.5534896850586, 0.5,
|
|
353
|
+
90.8687744140625, -552.0613021850586, 0.5, 82.9976806640625, -537.4675521850586, 0.5,
|
|
354
|
+
77.5562744140625, -526.7409896850586, 0.5, 74.1968994140625, -518.4441146850586, 0.5,
|
|
355
|
+
78.0172119140625, -516.4343490600586, 0.5, 100.1265869140625, -531.0124740600586, 0.5,
|
|
356
|
+
138.0328369140625, -567.9499740600586, 0.5, 164.7047119140625, -600.1062240600586, 0.5,
|
|
357
|
+
176.1265869140625, -615.7468490600586, 0.5, 184.4390869140625, -626.1530990600586, 0.5,
|
|
358
|
+
183.9190673828125, -622.5124740600586, 0.5, 174.2471923828125, -604.5749740600586, 0.5,
|
|
359
|
+
162.5675048828125, -584.3405990600586, 0.5, 153.7081298828125, -568.9499740600586, 0.5,
|
|
360
|
+
149.0792236328125, -560.1296615600586, 0.5, 147.6788330078125, -556.1902084350586, 0.5,
|
|
361
|
+
150.4893798828125, -554.8503646850586, 0.5, 165.0909423828125, -554.8103561401367, 0.5,
|
|
362
|
+
197.1534423828125, -560.1306686401367, 0.5, 253.2784423828125, -577.9119186401367, 0.5,
|
|
363
|
+
325.9659423828125, -608.1462936401367, 0.5, 388.0596923828125, -641.0212936401367, 0.5,
|
|
364
|
+
433.9034423828125, -667.0681686401367, 0.5, 470.7471923828125, -682.1462936401367, 0.5,
|
|
365
|
+
494.8096923828125, -684.9861373901367, 0.5, 504.6221923828125, -679.1462936401367, 0.5,
|
|
366
|
+
508.6534423828125, -670.2791061401367, 0.5, 511.4034423828125, -662.9783248901367, 0.5,
|
|
367
|
+
512.4434814453125, -658.9392623901367, 0.5, 512.8834228515625, -657.3289108276367, 0.5,
|
|
368
|
+
]),
|
|
369
|
+
},
|
|
370
|
+
]
|