entangle-ui 0.9.0 → 0.11.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/CHANGELOG.md +766 -0
- package/README.md +8 -6
- package/dist/esm/assets/src/components/controls/FileTree/FileTree.css.ts.vanilla-YmktPvnr.css +48 -0
- package/dist/esm/assets/src/components/controls/Select/{Select.css.ts.vanilla-oZnFUorL.css → Select.css.ts.vanilla-Cpu2BvWL.css} +3 -0
- package/dist/esm/assets/src/components/controls/TreeView/{TreeNode.css.ts.vanilla-B_f8pUb8.css → TreeNode.css.ts.vanilla-DXPJRWZZ.css} +31 -24
- package/dist/esm/assets/src/components/editor/AssetBrowser/AssetBrowser.css.ts.vanilla-B2S4cEiY.css +262 -0
- package/dist/esm/assets/src/components/editor/Minimap/Minimap.css.ts.vanilla--rNdWQwy.css +133 -0
- package/dist/esm/assets/src/components/editor/NodeGraph/NodeGraph.css.ts.vanilla-ClF4YZvl.css +401 -0
- package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyPanel.css.ts.vanilla-RYv_XgOu.css → PropertyPanel.css.ts.vanilla-Dpr_k5I3.css} +4 -1
- package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyRow.css.ts.vanilla-C3YZnnHb.css → PropertyRow.css.ts.vanilla-pq1Uhd2a.css} +15 -8
- package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertySection.css.ts.vanilla-DK12opZc.css → PropertySection.css.ts.vanilla-6MWWAqyd.css} +50 -32
- package/dist/esm/assets/src/components/editor/Timeline/Timeline.css.ts.vanilla-DDX6Zalo.css +203 -0
- package/dist/esm/assets/src/components/feedback/LogView/LogView.css.ts.vanilla-nB5ENOpw.css +312 -0
- package/dist/esm/assets/src/components/navigation/Menu/Menu.css.ts.vanilla-B5iVe5S2.css +88 -0
- package/dist/esm/assets/src/components/navigation/PathBar/PathBar.css.ts.vanilla-BIEzQQOf.css +10 -0
- package/dist/esm/assets/src/components/primitives/viewport/Viewport.css.ts.vanilla-CkFBJ7Vo.css +65 -0
- package/dist/esm/assets/src/components/shell/FloatingPanel/{FloatingPanel.css.ts.vanilla-1rIAXEFp.css → FloatingPanel.css.ts.vanilla-CRaeYJ2b.css} +20 -13
- package/dist/esm/assets/src/theme/{darkTheme.css.ts.vanilla-ab1WD4dr.css → darkTheme.css.ts.vanilla-BHZ3ecRn.css} +3 -3
- package/dist/esm/assets/src/theme/{lightTheme.css.ts.vanilla-OaRI_wIc.css → lightTheme.css.ts.vanilla-Ct6f9Iym.css} +3 -3
- package/dist/esm/components/Icons/AddIcon.js.map +1 -1
- package/dist/esm/components/Icons/AiChatIcon.js.map +1 -1
- package/dist/esm/components/Icons/AiSparklesIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArchiveIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowDownIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowLeftIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowRightIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowUpIcon.js.map +1 -1
- package/dist/esm/components/Icons/BookmarkIcon.js.map +1 -1
- package/dist/esm/components/Icons/BugIcon.js.map +1 -1
- package/dist/esm/components/Icons/BuildingIcon.js.map +1 -1
- package/dist/esm/components/Icons/CalendarIcon.js.map +1 -1
- package/dist/esm/components/Icons/CameraIcon.js +31 -0
- package/dist/esm/components/Icons/CameraIcon.js.map +1 -0
- package/dist/esm/components/Icons/CheckIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronDownIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronLeftIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronRightIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronUpIcon.js.map +1 -1
- package/dist/esm/components/Icons/CircleIcon.js.map +1 -1
- package/dist/esm/components/Icons/ClockIcon.js.map +1 -1
- package/dist/esm/components/Icons/CloseIcon.js.map +1 -1
- package/dist/esm/components/Icons/CloudUploadIcon.js.map +1 -1
- package/dist/esm/components/Icons/CodeIcon.js.map +1 -1
- package/dist/esm/components/Icons/CopyIcon.js.map +1 -1
- package/dist/esm/components/Icons/CubeIcon.js +31 -0
- package/dist/esm/components/Icons/CubeIcon.js.map +1 -0
- package/dist/esm/components/Icons/CutIcon.js.map +1 -1
- package/dist/esm/components/Icons/DotsHorizontalIcon.js.map +1 -1
- package/dist/esm/components/Icons/DotsVerticalIcon.js.map +1 -1
- package/dist/esm/components/Icons/DownloadIcon.js.map +1 -1
- package/dist/esm/components/Icons/EditIcon.js.map +1 -1
- package/dist/esm/components/Icons/ErrorIcon.js.map +1 -1
- package/dist/esm/components/Icons/ExternalLinkIcon.js.map +1 -1
- package/dist/esm/components/Icons/EyeDropperIcon.js.map +1 -1
- package/dist/esm/components/Icons/EyeIcon.js.map +1 -1
- package/dist/esm/components/Icons/FileTextIcon.js.map +1 -1
- package/dist/esm/components/Icons/FilterIcon.js.map +1 -1
- package/dist/esm/components/Icons/FirstIcon.js.map +1 -1
- package/dist/esm/components/Icons/FolderCogIcon.js.map +1 -1
- package/dist/esm/components/Icons/FolderIcon.js.map +1 -1
- package/dist/esm/components/Icons/FolderOpenIcon.js +2 -2
- package/dist/esm/components/Icons/FolderOpenIcon.js.map +1 -1
- package/dist/esm/components/Icons/FullscreenIcon.js.map +1 -1
- package/dist/esm/components/Icons/GitBranchIcon.js.map +1 -1
- package/dist/esm/components/Icons/GridIcon.js.map +1 -1
- package/dist/esm/components/Icons/HeartIcon.js.map +1 -1
- package/dist/esm/components/Icons/HelpIcon.js.map +1 -1
- package/dist/esm/components/Icons/HomeIcon.js.map +1 -1
- package/dist/esm/components/Icons/ImageIcon.js +31 -0
- package/dist/esm/components/Icons/ImageIcon.js.map +1 -0
- package/dist/esm/components/Icons/InfoIcon.js.map +1 -1
- package/dist/esm/components/Icons/LastIcon.js.map +1 -1
- package/dist/esm/components/Icons/LinkIcon.js.map +1 -1
- package/dist/esm/components/Icons/ListIcon.js.map +1 -1
- package/dist/esm/components/Icons/LockIcon.js.map +1 -1
- package/dist/esm/components/Icons/MaximizeIcon.js.map +1 -1
- package/dist/esm/components/Icons/MenuIcon.js.map +1 -1
- package/dist/esm/components/Icons/MinimizeIcon.js.map +1 -1
- package/dist/esm/components/Icons/MinusIcon.js.map +1 -1
- package/dist/esm/components/Icons/OrbitIcon.js +31 -0
- package/dist/esm/components/Icons/OrbitIcon.js.map +1 -0
- package/dist/esm/components/Icons/PasteIcon.js.map +1 -1
- package/dist/esm/components/Icons/PauseIcon.js +2 -2
- package/dist/esm/components/Icons/PauseIcon.js.map +1 -1
- package/dist/esm/components/Icons/PinIcon.js.map +1 -1
- package/dist/esm/components/Icons/PlayIcon.js.map +1 -1
- package/dist/esm/components/Icons/RedoIcon.js.map +1 -1
- package/dist/esm/components/Icons/RefreshIcon.js.map +1 -1
- package/dist/esm/components/Icons/RobotIcon.js.map +1 -1
- package/dist/esm/components/Icons/RotateIcon.js +32 -0
- package/dist/esm/components/Icons/RotateIcon.js.map +1 -0
- package/dist/esm/components/Icons/SaveIcon.js.map +1 -1
- package/dist/esm/components/Icons/SearchIcon.js.map +1 -1
- package/dist/esm/components/Icons/SendIcon.js.map +1 -1
- package/dist/esm/components/Icons/SettingsIcon.js.map +1 -1
- package/dist/esm/components/Icons/SortIcon.js.map +1 -1
- package/dist/esm/components/Icons/SpinIcon.js +32 -0
- package/dist/esm/components/Icons/SpinIcon.js.map +1 -0
- package/dist/esm/components/Icons/StarIcon.js.map +1 -1
- package/dist/esm/components/Icons/StopIcon.js.map +1 -1
- package/dist/esm/components/Icons/SuccessIcon.js.map +1 -1
- package/dist/esm/components/Icons/TagIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentAlignedIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentAutoIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentFreeIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentLinearIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentMirroredIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentStepIcon.js.map +1 -1
- package/dist/esm/components/Icons/TerminalIcon.js.map +1 -1
- package/dist/esm/components/Icons/TrashIcon.js.map +1 -1
- package/dist/esm/components/Icons/UndoIcon.js.map +1 -1
- package/dist/esm/components/Icons/UnlinkIcon.js.map +1 -1
- package/dist/esm/components/Icons/UnlockIcon.js.map +1 -1
- package/dist/esm/components/Icons/UploadIcon.js.map +1 -1
- package/dist/esm/components/Icons/UserIcon.js.map +1 -1
- package/dist/esm/components/Icons/UsersIcon.js.map +1 -1
- package/dist/esm/components/Icons/WarningIcon.js.map +1 -1
- package/dist/esm/components/Icons/ZoomFitIcon.js +32 -0
- package/dist/esm/components/Icons/ZoomFitIcon.js.map +1 -0
- package/dist/esm/components/Icons/ZoomInIcon.js.map +1 -1
- package/dist/esm/components/Icons/ZoomOutIcon.js.map +1 -1
- package/dist/esm/components/controls/CartesianPicker/CartesianPicker.js +3 -3
- package/dist/esm/components/controls/CartesianPicker/CartesianPicker.js.map +1 -1
- package/dist/esm/components/controls/CartesianPicker/useCartesianInteraction.js +7 -5
- package/dist/esm/components/controls/CartesianPicker/useCartesianInteraction.js.map +1 -1
- package/dist/esm/components/controls/CartesianPicker/useCartesianRenderer.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/AlphaSlider.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorArea.js +2 -2
- package/dist/esm/components/controls/ColorPicker/ColorArea.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorInputs.js +16 -2
- package/dist/esm/components/controls/ColorPicker/ColorInputs.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorPalette.js +3 -1
- package/dist/esm/components/controls/ColorPicker/ColorPalette.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorPicker.js +6 -6
- package/dist/esm/components/controls/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorPresets.js +3 -1
- package/dist/esm/components/controls/ColorPicker/ColorPresets.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorSwatch.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/EyeDropper.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/HueSlider.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/colorUtils.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/palettes/material.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/palettes/professional.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/useColor.js.map +1 -1
- package/dist/esm/components/controls/Combobox/Combobox.js +46 -23
- package/dist/esm/components/controls/Combobox/Combobox.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/CurveCanvas.js +11 -4
- package/dist/esm/components/controls/CurveEditor/CurveCanvas.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/CurveEditor.js +4 -4
- package/dist/esm/components/controls/CurveEditor/CurveEditor.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/CurveToolbar.js +7 -5
- package/dist/esm/components/controls/CurveEditor/CurveToolbar.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/curvePresets.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/curveUtils.js +13 -15
- package/dist/esm/components/controls/CurveEditor/curveUtils.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js +72 -50
- package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js +11 -3
- package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js.map +1 -1
- package/dist/esm/components/controls/FileTree/FileTree.css.js +9 -0
- package/dist/esm/components/controls/FileTree/FileTree.css.js.map +1 -0
- package/dist/esm/components/controls/FileTree/FileTree.js +252 -0
- package/dist/esm/components/controls/FileTree/FileTree.js.map +1 -0
- package/dist/esm/components/controls/FileTree/fileTreeIcons.js +129 -0
- package/dist/esm/components/controls/FileTree/fileTreeIcons.js.map +1 -0
- package/dist/esm/components/controls/FileTree/fileTreeLabels.js +8 -0
- package/dist/esm/components/controls/FileTree/fileTreeLabels.js.map +1 -0
- package/dist/esm/components/controls/FileTree/useFileTreeDrop.js +115 -0
- package/dist/esm/components/controls/FileTree/useFileTreeDrop.js.map +1 -0
- package/dist/esm/components/controls/FileUploader/FileUploader.js +3 -6
- package/dist/esm/components/controls/FileUploader/FileUploader.js.map +1 -1
- package/dist/esm/components/controls/MultiSelect/MultiSelect.js +46 -15
- package/dist/esm/components/controls/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/esm/components/controls/NumberInput/NumberInput.js +11 -4
- package/dist/esm/components/controls/NumberInput/NumberInput.js.map +1 -1
- package/dist/esm/components/controls/NumberInput/useNumberInput.js +6 -2
- package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -1
- package/dist/esm/components/controls/Select/Select.css.js +1 -1
- package/dist/esm/components/controls/Select/Select.js +44 -16
- package/dist/esm/components/controls/Select/Select.js.map +1 -1
- package/dist/esm/components/controls/Slider/Slider.js +6 -8
- package/dist/esm/components/controls/Slider/Slider.js.map +1 -1
- package/dist/esm/components/controls/TagInput/TagInput.js +4 -2
- package/dist/esm/components/controls/TagInput/TagInput.js.map +1 -1
- package/dist/esm/components/controls/TreeView/TreeNode.css.js +9 -8
- package/dist/esm/components/controls/TreeView/TreeNode.css.js.map +1 -1
- package/dist/esm/components/controls/TreeView/TreeNode.js +42 -7
- package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -1
- package/dist/esm/components/controls/TreeView/TreeView.js +18 -6
- package/dist/esm/components/controls/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/controls/TreeView/useTreeState.js +2 -6
- package/dist/esm/components/controls/TreeView/useTreeState.js.map +1 -1
- package/dist/esm/components/controls/VectorInput/VectorInput.js +13 -4
- package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
- package/dist/esm/components/data/DataTable/DataTable.js +25 -8
- package/dist/esm/components/data/DataTable/DataTable.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowser.css.js +46 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowser.css.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowser.js +254 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowser.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserAnnouncementLive.js +17 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserAnnouncementLive.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserBreadcrumbs.js +25 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserBreadcrumbs.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js +140 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContext.js +81 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContext.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContextMenu.js +123 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContextMenu.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js +136 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js +137 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js +226 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js +189 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserRenameField.js +63 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserRenameField.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSidebar.js +19 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSidebar.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStatusBar.js +24 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStatusBar.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStore.js +176 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStore.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js +120 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js +134 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFilter.js +90 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFilter.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFormat.js +32 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFormat.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserGeometry.js +70 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserGeometry.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserKeyboard.js +62 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserKeyboard.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserLabels.js +52 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserLabels.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/slots.js +18 -0
- package/dist/esm/components/editor/AssetBrowser/slots.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserAnnouncement.js +19 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserAnnouncement.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js +70 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js +108 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js +192 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetGridKeyboardNav.js +91 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetGridKeyboardNav.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js +91 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js +128 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js +72 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js +141 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js +113 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js +174 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js.map +1 -0
- package/dist/esm/components/editor/ChatPanel/ChatActionBar.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatAttachment.js +8 -2
- package/dist/esm/components/editor/ChatPanel/ChatAttachment.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatBubble.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js +20 -4
- package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatContextChip.js +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatContextChip.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatEmptyState.js +3 -1
- package/dist/esm/components/editor/ChatPanel/ChatEmptyState.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatIcons.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatInput.js +10 -3
- package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatInputToolbar.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMessage.js +10 -3
- package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMessageList.js +5 -3
- package/dist/esm/components/editor/ChatPanel/ChatMessageList.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatPanel.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatToolCall.js +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatToolCall.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatTypingIndicator.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/useChatInput.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/useChatMessages.js +7 -4
- package/dist/esm/components/editor/ChatPanel/useChatMessages.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/useChatScroll.js +6 -1
- package/dist/esm/components/editor/ChatPanel/useChatScroll.js.map +1 -1
- package/dist/esm/components/editor/Minimap/Minimap.css.js +18 -0
- package/dist/esm/components/editor/Minimap/Minimap.css.js.map +1 -0
- package/dist/esm/components/editor/Minimap/Minimap.js +257 -0
- package/dist/esm/components/editor/Minimap/Minimap.js.map +1 -0
- package/dist/esm/components/editor/Minimap/Minimap.types.js +11 -0
- package/dist/esm/components/editor/Minimap/Minimap.types.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapContext.js +48 -0
- package/dist/esm/components/editor/Minimap/MinimapContext.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapCorner.js +16 -0
- package/dist/esm/components/editor/Minimap/MinimapCorner.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapFooter.js +16 -0
- package/dist/esm/components/editor/Minimap/MinimapFooter.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapStore.js +166 -0
- package/dist/esm/components/editor/Minimap/MinimapStore.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapTitle.js +16 -0
- package/dist/esm/components/editor/Minimap/MinimapTitle.js.map +1 -0
- package/dist/esm/components/editor/Minimap/ViewportMinimap.js +69 -0
- package/dist/esm/components/editor/Minimap/ViewportMinimap.js.map +1 -0
- package/dist/esm/components/editor/Minimap/computeBoundsFromItems.js +65 -0
- package/dist/esm/components/editor/Minimap/computeBoundsFromItems.js.map +1 -0
- package/dist/esm/components/editor/Minimap/index.js +15 -0
- package/dist/esm/components/editor/Minimap/index.js.map +1 -0
- package/dist/esm/components/editor/Minimap/minimapCoords.js +105 -0
- package/dist/esm/components/editor/Minimap/minimapCoords.js.map +1 -0
- package/dist/esm/components/editor/Minimap/minimapDrawing.js +93 -0
- package/dist/esm/components/editor/Minimap/minimapDrawing.js.map +1 -0
- package/dist/esm/components/editor/Minimap/minimapHitTest.js +59 -0
- package/dist/esm/components/editor/Minimap/minimapHitTest.js.map +1 -0
- package/dist/esm/components/editor/Minimap/useMinimapGestures.js +299 -0
- package/dist/esm/components/editor/Minimap/useMinimapGestures.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.css.js +36 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.css.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.js +627 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.types.js +10 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.types.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphContext.js +54 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphContext.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphEdgeLabels.js +137 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphEdgeLabels.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphGroup.js +211 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphGroup.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphMinimap.js +122 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphMinimap.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js +170 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeContext.js +21 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeContext.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeParts.js +56 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeParts.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js +59 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSectionContext.js +17 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSectionContext.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPin.js +35 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPin.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js +191 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPortVisual.js +46 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPortVisual.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphSlots.js +50 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphSlots.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphSpawnPalette.js +70 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphSpawnPalette.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphStore.js +543 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphStore.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphToolbar.js +100 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphToolbar.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/createTypeMatchValidator.js +37 -0
- package/dist/esm/components/editor/NodeGraph/createTypeMatchValidator.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphActions.js +53 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphActions.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphDrawing.js +461 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphDrawing.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphIds.js +31 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphIds.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphMath.js +350 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphMath.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/sortSlots.js +69 -0
- package/dist/esm/components/editor/NodeGraph/sortSlots.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useDragGesture.js +63 -0
- package/dist/esm/components/editor/NodeGraph/useDragGesture.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraph.js +207 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraph.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js +334 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js +137 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js +392 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js +164 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js +234 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useStoreSlice.js +49 -0
- package/dist/esm/components/editor/NodeGraph/useStoreSlice.js.map +1 -0
- package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js +4 -3
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js +12 -7
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js +7 -6
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +21 -5
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js +11 -10
- package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js +32 -11
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js.map +1 -1
- package/dist/esm/components/editor/Timeline/Timeline.css.js +23 -0
- package/dist/esm/components/editor/Timeline/Timeline.css.js.map +1 -0
- package/dist/esm/components/editor/Timeline/Timeline.js +450 -0
- package/dist/esm/components/editor/Timeline/Timeline.js.map +1 -0
- package/dist/esm/components/editor/Timeline/Timeline.types.js +10 -0
- package/dist/esm/components/editor/Timeline/Timeline.types.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineContext.js +69 -0
- package/dist/esm/components/editor/Timeline/TimelineContext.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineFooter.js +16 -0
- package/dist/esm/components/editor/Timeline/TimelineFooter.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineMinimap.js +280 -0
- package/dist/esm/components/editor/Timeline/TimelineMinimap.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineStore.js +289 -0
- package/dist/esm/components/editor/Timeline/TimelineStore.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineToolbar.js +15 -0
- package/dist/esm/components/editor/Timeline/TimelineToolbar.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js +142 -0
- package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineTrackScale.js +18 -0
- package/dist/esm/components/editor/Timeline/TimelineTrackScale.js.map +1 -0
- package/dist/esm/components/editor/Timeline/index.js +18 -0
- package/dist/esm/components/editor/Timeline/index.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineCoords.js +118 -0
- package/dist/esm/components/editor/Timeline/timelineCoords.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineDrawing.js +390 -0
- package/dist/esm/components/editor/Timeline/timelineDrawing.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineEdits.js +323 -0
- package/dist/esm/components/editor/Timeline/timelineEdits.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineHitTest.js +153 -0
- package/dist/esm/components/editor/Timeline/timelineHitTest.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineLayout.js +39 -0
- package/dist/esm/components/editor/Timeline/timelineLayout.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineSelection.js +0 -0
- package/dist/esm/components/editor/Timeline/timelineSelection.js.map +1 -0
- package/dist/esm/components/editor/Timeline/useTimelineDraw.js +156 -0
- package/dist/esm/components/editor/Timeline/useTimelineDraw.js.map +1 -0
- package/dist/esm/components/editor/Timeline/useTimelineGestures.js +587 -0
- package/dist/esm/components/editor/Timeline/useTimelineGestures.js.map +1 -0
- package/dist/esm/components/editor/Timeline/useTimelinePlayback.js +85 -0
- package/dist/esm/components/editor/Timeline/useTimelinePlayback.js.map +1 -0
- package/dist/esm/components/editor/TransformControl/TransformControl.js +4 -4
- package/dist/esm/components/editor/TransformControl/TransformControl.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/ViewportGizmo.js +8 -4
- package/dist/esm/components/editor/ViewportGizmo/ViewportGizmo.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/gizmoMath.js +6 -2
- package/dist/esm/components/editor/ViewportGizmo/gizmoMath.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/useGizmoInteraction.js +8 -6
- package/dist/esm/components/editor/ViewportGizmo/useGizmoInteraction.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/useGizmoRenderer.js +1 -2
- package/dist/esm/components/editor/ViewportGizmo/useGizmoRenderer.js.map +1 -1
- package/dist/esm/components/feedback/Alert/Alert.js +8 -8
- package/dist/esm/components/feedback/Alert/Alert.js.map +1 -1
- package/dist/esm/components/feedback/Alert/AlertActions.js.map +1 -1
- package/dist/esm/components/feedback/Alert/AlertDescription.js.map +1 -1
- package/dist/esm/components/feedback/Alert/AlertTitle.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/CommandPalette.js +32 -22
- package/dist/esm/components/feedback/CommandPalette/CommandPalette.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/useRecentItems.js +3 -1
- package/dist/esm/components/feedback/CommandPalette/useRecentItems.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/Dialog.js +6 -3
- package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogBody.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogClose.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogFooter.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogHeader.js +1 -1
- package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/useDialogAnimation.js +10 -2
- package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -1
- package/dist/esm/components/feedback/Drawer/Drawer.js +4 -1
- package/dist/esm/components/feedback/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js +4 -0
- package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js.map +1 -1
- package/dist/esm/components/feedback/EmptyState/EmptyState.js +1 -1
- package/dist/esm/components/feedback/EmptyState/EmptyState.js.map +1 -1
- package/dist/esm/components/feedback/LogView/LogView.css.js +35 -0
- package/dist/esm/components/feedback/LogView/LogView.css.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogView.js +297 -0
- package/dist/esm/components/feedback/LogView/LogView.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogViewBody.js +205 -0
- package/dist/esm/components/feedback/LogView/LogViewBody.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogViewContext.js +31 -0
- package/dist/esm/components/feedback/LogView/LogViewContext.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogViewParts.js +73 -0
- package/dist/esm/components/feedback/LogView/LogViewParts.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogViewStore.js +240 -0
- package/dist/esm/components/feedback/LogView/LogViewStore.js.map +1 -0
- package/dist/esm/components/feedback/LogView/logViewLabels.js +25 -0
- package/dist/esm/components/feedback/LogView/logViewLabels.js.map +1 -0
- package/dist/esm/components/feedback/LogView/logViewLevels.js +74 -0
- package/dist/esm/components/feedback/LogView/logViewLevels.js.map +1 -0
- package/dist/esm/components/feedback/LogView/logViewUtils.js +128 -0
- package/dist/esm/components/feedback/LogView/logViewUtils.js.map +1 -0
- package/dist/esm/components/feedback/LogView/useFollowTail.js +95 -0
- package/dist/esm/components/feedback/LogView/useFollowTail.js.map +1 -0
- package/dist/esm/components/feedback/LogView/useLogSelection.js +113 -0
- package/dist/esm/components/feedback/LogView/useLogSelection.js.map +1 -0
- package/dist/esm/components/feedback/ProgressBar/CircularProgress.js +1 -1
- package/dist/esm/components/feedback/ProgressBar/CircularProgress.js.map +1 -1
- package/dist/esm/components/feedback/ProgressBar/ProgressBar.js +1 -1
- package/dist/esm/components/feedback/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/esm/components/feedback/Skeleton/Skeleton.js +1 -1
- package/dist/esm/components/feedback/Skeleton/Skeleton.js.map +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js.map +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js.map +1 -1
- package/dist/esm/components/feedback/Spinner/Spinner.js +1 -1
- package/dist/esm/components/feedback/Spinner/Spinner.js.map +1 -1
- package/dist/esm/components/feedback/Stat/Stat.js.map +1 -1
- package/dist/esm/components/feedback/Toast/ToastContainer.js +1 -1
- package/dist/esm/components/feedback/Toast/ToastContainer.js.map +1 -1
- package/dist/esm/components/feedback/Toast/ToastItem.js +7 -3
- package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -1
- package/dist/esm/components/feedback/Toast/ToastProvider.js.map +1 -1
- package/dist/esm/components/feedback/Toast/useToast.js.map +1 -1
- package/dist/esm/components/form/FormHelperText.js.map +1 -1
- package/dist/esm/components/form/FormLabel.js.map +1 -1
- package/dist/esm/components/form/InputWrapper.js.map +1 -1
- package/dist/esm/components/layout/Accordion/Accordion.js +1 -1
- package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionContent.js +1 -1
- package/dist/esm/components/layout/Accordion/AccordionContent.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionItem.js +1 -1
- package/dist/esm/components/layout/Accordion/AccordionItem.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionTrigger.js +7 -2
- package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -1
- package/dist/esm/components/layout/Card/Card.js +2 -2
- package/dist/esm/components/layout/Card/Card.js.map +1 -1
- package/dist/esm/components/layout/Divider/Divider.js.map +1 -1
- package/dist/esm/components/layout/Flex/Flex.js +1 -1
- package/dist/esm/components/layout/Flex/Flex.js.map +1 -1
- package/dist/esm/components/layout/Grid/Grid.js +1 -1
- package/dist/esm/components/layout/Grid/Grid.js.map +1 -1
- package/dist/esm/components/layout/ListItem/ListItem.js +1 -1
- package/dist/esm/components/layout/ListItem/ListItem.js.map +1 -1
- package/dist/esm/components/layout/PageHeader/PageHeader.js.map +1 -1
- package/dist/esm/components/layout/PanelSurface/PanelSurface.js +3 -3
- package/dist/esm/components/layout/PanelSurface/PanelSurface.js.map +1 -1
- package/dist/esm/components/layout/ScrollArea/ScrollArea.js +91 -23
- package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/esm/components/layout/Spacer/Spacer.js.map +1 -1
- package/dist/esm/components/layout/SplitPane/SplitPane.js +29 -16
- package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -1
- package/dist/esm/components/layout/SplitPane/SplitPanePanel.js.map +1 -1
- package/dist/esm/components/layout/Stack/Stack.js +1 -1
- package/dist/esm/components/layout/Stack/Stack.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js +4 -0
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js +6 -2
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbSeparator.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +13 -2
- package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/esm/components/navigation/ContextMenu/ContextMenu.js +45 -39
- package/dist/esm/components/navigation/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/esm/components/navigation/Menu/Menu.css.js +9 -12
- package/dist/esm/components/navigation/Menu/Menu.css.js.map +1 -1
- package/dist/esm/components/navigation/Menu/Menu.js +97 -63
- package/dist/esm/components/navigation/Menu/Menu.js.map +1 -1
- package/dist/esm/components/navigation/Menu/MenuGapContext.js +19 -0
- package/dist/esm/components/navigation/Menu/MenuGapContext.js.map +1 -0
- package/dist/esm/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/navigation/Pagination/usePagination.js.map +1 -1
- package/dist/esm/components/navigation/PathBar/PathBar.css.js +6 -0
- package/dist/esm/components/navigation/PathBar/PathBar.css.js.map +1 -0
- package/dist/esm/components/navigation/PathBar/PathBar.js +184 -0
- package/dist/esm/components/navigation/PathBar/PathBar.js.map +1 -0
- package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js +151 -0
- package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js.map +1 -0
- package/dist/esm/components/navigation/PathBar/pathUtils.js +118 -0
- package/dist/esm/components/navigation/PathBar/pathUtils.js.map +1 -0
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js +16 -6
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js +1 -1
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/Tab.js +10 -3
- package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/TabList.js +5 -2
- package/dist/esm/components/navigation/Tabs/TabList.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/primitives/Avatar/Avatar.js +11 -4
- package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/primitives/Avatar/AvatarGroup.js +2 -2
- package/dist/esm/components/primitives/Avatar/AvatarGroup.js.map +1 -1
- package/dist/esm/components/primitives/Badge/Badge.js +10 -3
- package/dist/esm/components/primitives/Badge/Badge.js.map +1 -1
- package/dist/esm/components/primitives/Button/Button.js.map +1 -1
- package/dist/esm/components/primitives/Checkbox/Checkbox.js +6 -4
- package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js +2 -2
- package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/esm/components/primitives/Code/Code.js.map +1 -1
- package/dist/esm/components/primitives/Collapsible/Collapsible.js +2 -2
- package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -1
- package/dist/esm/components/primitives/HoverCard/HoverCard.js +5 -3
- package/dist/esm/components/primitives/HoverCard/HoverCard.js.map +1 -1
- package/dist/esm/components/primitives/Icon/Icon.js +1 -1
- package/dist/esm/components/primitives/Icon/Icon.js.map +1 -1
- package/dist/esm/components/primitives/IconButton/IconButton.js.map +1 -1
- package/dist/esm/components/primitives/Input/Input.js +1 -1
- package/dist/esm/components/primitives/Input/Input.js.map +1 -1
- package/dist/esm/components/primitives/Kbd/Kbd.js +1 -1
- package/dist/esm/components/primitives/Kbd/Kbd.js.map +1 -1
- package/dist/esm/components/primitives/Link/Link.js.map +1 -1
- package/dist/esm/components/primitives/Paper/Paper.js.map +1 -1
- package/dist/esm/components/primitives/Popover/Popover.js +1 -1
- package/dist/esm/components/primitives/Popover/Popover.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverClose.js +1 -1
- package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverContent.js +6 -4
- package/dist/esm/components/primitives/Popover/PopoverContent.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverTrigger.js.map +1 -1
- package/dist/esm/components/primitives/Radio/Radio.js +3 -3
- package/dist/esm/components/primitives/Radio/Radio.js.map +1 -1
- package/dist/esm/components/primitives/Radio/RadioGroup.js +2 -2
- package/dist/esm/components/primitives/Radio/RadioGroup.js.map +1 -1
- package/dist/esm/components/primitives/Switch/Switch.js +1 -1
- package/dist/esm/components/primitives/Switch/Switch.js.map +1 -1
- package/dist/esm/components/primitives/Text/Text.js.map +1 -1
- package/dist/esm/components/primitives/TextArea/TextArea.js +3 -4
- package/dist/esm/components/primitives/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/primitives/Tooltip/Arrow.js +1 -1
- package/dist/esm/components/primitives/Tooltip/Arrow.js.map +1 -1
- package/dist/esm/components/primitives/Tooltip/Tooltip.js +9 -7
- package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/primitives/Tooltip/utils.js +1 -1
- package/dist/esm/components/primitives/Tooltip/utils.js.map +1 -1
- package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/esm/components/primitives/canvas/CanvasContainer.js +1 -1
- package/dist/esm/components/primitives/canvas/CanvasContainer.js.map +1 -1
- package/dist/esm/components/primitives/canvas/canvasCoords.js.map +1 -1
- package/dist/esm/components/primitives/canvas/canvasDrawing.js +1 -1
- package/dist/esm/components/primitives/canvas/canvasDrawing.js.map +1 -1
- package/dist/esm/components/primitives/canvas/canvasTheme.js.map +1 -1
- package/dist/esm/components/primitives/canvas/useCanvasRenderer.js +8 -2
- package/dist/esm/components/primitives/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/esm/components/primitives/viewport/Viewport.css.js +12 -0
- package/dist/esm/components/primitives/viewport/Viewport.css.js.map +1 -0
- package/dist/esm/components/primitives/viewport/Viewport.js +189 -0
- package/dist/esm/components/primitives/viewport/Viewport.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportContext.js +47 -0
- package/dist/esm/components/primitives/viewport/ViewportContext.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportLayer.js +113 -0
- package/dist/esm/components/primitives/viewport/ViewportLayer.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportOverlay.js +47 -0
- package/dist/esm/components/primitives/viewport/ViewportOverlay.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportStore.js +210 -0
- package/dist/esm/components/primitives/viewport/ViewportStore.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportWorld.js +38 -0
- package/dist/esm/components/primitives/viewport/ViewportWorld.js.map +1 -0
- package/dist/esm/components/primitives/viewport/useViewportGestures.js +333 -0
- package/dist/esm/components/primitives/viewport/useViewportGestures.js.map +1 -0
- package/dist/esm/components/primitives/viewport/viewportCoords.js +37 -0
- package/dist/esm/components/primitives/viewport/viewportCoords.js.map +1 -0
- package/dist/esm/components/primitives/viewport/viewportMath.js +77 -0
- package/dist/esm/components/primitives/viewport/viewportMath.js.map +1 -0
- package/dist/esm/components/shell/AppShell/AppShell.js +1 -1
- package/dist/esm/components/shell/AppShell/AppShell.js.map +1 -1
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.css.js +11 -10
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.css.js.map +1 -1
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js +60 -24
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -1
- package/dist/esm/components/shell/MenuBar/MenuBar.js +23 -16
- package/dist/esm/components/shell/MenuBar/MenuBar.js.map +1 -1
- package/dist/esm/components/shell/StatusBar/StatusBar.js.map +1 -1
- package/dist/esm/components/shell/Toolbar/Toolbar.js +4 -3
- package/dist/esm/components/shell/Toolbar/Toolbar.js.map +1 -1
- package/dist/esm/context/KeyboardContext.js.map +1 -1
- package/dist/esm/hooks/useBreakpoint/useBreakpoint.js +1 -1
- package/dist/esm/hooks/useBreakpoint/useBreakpoint.js.map +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.js +9 -9
- package/dist/esm/hooks/useClickOutside/useClickOutside.js.map +1 -1
- package/dist/esm/hooks/useClipboard/useClipboard.js +4 -0
- package/dist/esm/hooks/useClipboard/useClipboard.js.map +1 -1
- package/dist/esm/hooks/useControlledState/useControlledState.js.map +1 -1
- package/dist/esm/hooks/useDebounced/useDebouncedCallback.js +11 -6
- package/dist/esm/hooks/useDebounced/useDebouncedCallback.js.map +1 -1
- package/dist/esm/hooks/useDebounced/useDebouncedValue.js +16 -4
- package/dist/esm/hooks/useDebounced/useDebouncedValue.js.map +1 -1
- package/dist/esm/hooks/useDisclosure/useDisclosure.js.map +1 -1
- package/dist/esm/hooks/useEventCallback/useEventCallback.js +49 -0
- package/dist/esm/hooks/useEventCallback/useEventCallback.js.map +1 -0
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/esm/hooks/useHotkey/useHotkey.js +7 -12
- package/dist/esm/hooks/useHotkey/useHotkey.js.map +1 -1
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js +2 -0
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
- package/dist/esm/hooks/useIsMounted/useIsMounted.js +43 -0
- package/dist/esm/hooks/useIsMounted/useIsMounted.js.map +1 -0
- package/dist/esm/hooks/useKeyboard/useKeyboard.js.map +1 -1
- package/dist/esm/hooks/useKeyboard/utils.js.map +1 -1
- package/dist/esm/hooks/useLatest/useLatest.js +31 -0
- package/dist/esm/hooks/useLatest/useLatest.js.map +1 -0
- package/dist/esm/hooks/useListboxNav/useListboxNav.js +29 -13
- package/dist/esm/hooks/useListboxNav/useListboxNav.js.map +1 -1
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.js +7 -1
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.js.map +1 -1
- package/dist/esm/hooks/useMergedRef/useMergedRef.js +6 -1
- package/dist/esm/hooks/useMergedRef/useMergedRef.js.map +1 -1
- package/dist/esm/hooks/useNavigationHistory/useNavigationHistory.js +146 -0
- package/dist/esm/hooks/useNavigationHistory/useNavigationHistory.js.map +1 -0
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.js +6 -8
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.js.map +1 -1
- package/dist/esm/hooks/useTheme/useTheme.js +6 -3
- package/dist/esm/hooks/useTheme/useTheme.js.map +1 -1
- package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js +9 -4
- package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js.map +1 -1
- package/dist/esm/index.js +63 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js +37 -0
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -0
- package/dist/esm/styles.js +3 -0
- package/dist/esm/styles.js.map +1 -0
- package/dist/esm/theme/ThemeProvider.js +6 -4
- package/dist/esm/theme/ThemeProvider.js.map +1 -1
- package/dist/esm/theme/VanillaThemeProvider.js.map +1 -1
- package/dist/esm/theme/breakpoints.js.map +1 -1
- package/dist/esm/theme/contract.css.js +1 -1
- package/dist/esm/theme/createCustomTheme.js +2 -2
- package/dist/esm/theme/createCustomTheme.js.map +1 -1
- package/dist/esm/theme/createLightTheme.js.map +1 -1
- package/dist/esm/theme/darkTheme.css.js +2 -2
- package/dist/esm/theme/darkThemeValues.js +1 -1
- package/dist/esm/theme/darkThemeValues.js.map +1 -1
- package/dist/esm/theme/lightTheme.css.js +1 -1
- package/dist/esm/theme/lightThemeValues.js +1 -1
- package/dist/esm/theme/lightThemeValues.js.map +1 -1
- package/dist/esm/theme/themeContractData.js +4 -4
- package/dist/esm/theme/themeContractData.js.map +1 -1
- package/dist/esm/utils/cx.js.map +1 -1
- package/dist/esm/utils/devWarn.js +1 -1
- package/dist/esm/utils/devWarn.js.map +1 -1
- package/dist/esm/utils/mathExpression.js +1 -1
- package/dist/esm/utils/mathExpression.js.map +1 -1
- package/dist/esm/utils/mathUtils.js.map +1 -1
- package/dist/esm/utils/objects.js.map +1 -1
- package/dist/esm/utils/platform.js.map +1 -1
- package/dist/tokens/tokens.dark.css +1 -1
- package/dist/tokens/tokens.json +1 -1
- package/dist/tokens/tokens.light.css +1 -1
- package/dist/types/components/Icons/AddIcon.d.ts +1 -1
- package/dist/types/components/Icons/AiChatIcon.d.ts +1 -1
- package/dist/types/components/Icons/AiSparklesIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArchiveIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArrowDownIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArrowLeftIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArrowRightIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArrowUpIcon.d.ts +1 -1
- package/dist/types/components/Icons/BookmarkIcon.d.ts +1 -1
- package/dist/types/components/Icons/BugIcon.d.ts +1 -1
- package/dist/types/components/Icons/BuildingIcon.d.ts +1 -1
- package/dist/types/components/Icons/CalendarIcon.d.ts +1 -1
- package/dist/types/components/Icons/CameraIcon.d.ts +34 -0
- package/dist/types/components/Icons/CheckIcon.d.ts +1 -1
- package/dist/types/components/Icons/ChevronDownIcon.d.ts +1 -1
- package/dist/types/components/Icons/ChevronLeftIcon.d.ts +1 -1
- package/dist/types/components/Icons/ChevronRightIcon.d.ts +1 -1
- package/dist/types/components/Icons/ChevronUpIcon.d.ts +1 -1
- package/dist/types/components/Icons/CircleIcon.d.ts +1 -1
- package/dist/types/components/Icons/ClockIcon.d.ts +1 -1
- package/dist/types/components/Icons/CloseIcon.d.ts +1 -1
- package/dist/types/components/Icons/CloudUploadIcon.d.ts +1 -1
- package/dist/types/components/Icons/CodeIcon.d.ts +1 -1
- package/dist/types/components/Icons/CopyIcon.d.ts +1 -1
- package/dist/types/components/Icons/CubeIcon.d.ts +34 -0
- package/dist/types/components/Icons/CutIcon.d.ts +1 -1
- package/dist/types/components/Icons/DotsHorizontalIcon.d.ts +1 -1
- package/dist/types/components/Icons/DotsVerticalIcon.d.ts +1 -1
- package/dist/types/components/Icons/DownloadIcon.d.ts +1 -1
- package/dist/types/components/Icons/EditIcon.d.ts +1 -1
- package/dist/types/components/Icons/ErrorIcon.d.ts +1 -1
- package/dist/types/components/Icons/ExternalLinkIcon.d.ts +1 -1
- package/dist/types/components/Icons/EyeDropperIcon.d.ts +1 -1
- package/dist/types/components/Icons/EyeIcon.d.ts +1 -1
- package/dist/types/components/Icons/FileTextIcon.d.ts +1 -1
- package/dist/types/components/Icons/FilterIcon.d.ts +1 -1
- package/dist/types/components/Icons/FirstIcon.d.ts +1 -1
- package/dist/types/components/Icons/FolderCogIcon.d.ts +1 -1
- package/dist/types/components/Icons/FolderIcon.d.ts +1 -1
- package/dist/types/components/Icons/FolderOpenIcon.d.ts +1 -1
- package/dist/types/components/Icons/FullscreenIcon.d.ts +1 -1
- package/dist/types/components/Icons/GitBranchIcon.d.ts +1 -1
- package/dist/types/components/Icons/GridIcon.d.ts +1 -1
- package/dist/types/components/Icons/HeartIcon.d.ts +1 -1
- package/dist/types/components/Icons/HelpIcon.d.ts +1 -1
- package/dist/types/components/Icons/HomeIcon.d.ts +1 -1
- package/dist/types/components/Icons/ImageIcon.d.ts +34 -0
- package/dist/types/components/Icons/InfoIcon.d.ts +1 -1
- package/dist/types/components/Icons/LastIcon.d.ts +1 -1
- package/dist/types/components/Icons/LinkIcon.d.ts +1 -1
- package/dist/types/components/Icons/ListIcon.d.ts +1 -1
- package/dist/types/components/Icons/LockIcon.d.ts +1 -1
- package/dist/types/components/Icons/MaximizeIcon.d.ts +1 -1
- package/dist/types/components/Icons/MenuIcon.d.ts +1 -1
- package/dist/types/components/Icons/MinimizeIcon.d.ts +1 -1
- package/dist/types/components/Icons/MinusIcon.d.ts +1 -1
- package/dist/types/components/Icons/OrbitIcon.d.ts +34 -0
- package/dist/types/components/Icons/PasteIcon.d.ts +1 -1
- package/dist/types/components/Icons/PauseIcon.d.ts +1 -1
- package/dist/types/components/Icons/PinIcon.d.ts +1 -1
- package/dist/types/components/Icons/PlayIcon.d.ts +1 -1
- package/dist/types/components/Icons/RedoIcon.d.ts +1 -1
- package/dist/types/components/Icons/RefreshIcon.d.ts +1 -1
- package/dist/types/components/Icons/RobotIcon.d.ts +1 -1
- package/dist/types/components/Icons/RotateIcon.d.ts +35 -0
- package/dist/types/components/Icons/SaveIcon.d.ts +1 -1
- package/dist/types/components/Icons/SearchIcon.d.ts +1 -1
- package/dist/types/components/Icons/SendIcon.d.ts +1 -1
- package/dist/types/components/Icons/SettingsIcon.d.ts +1 -1
- package/dist/types/components/Icons/SortIcon.d.ts +1 -1
- package/dist/types/components/Icons/SpinIcon.d.ts +35 -0
- package/dist/types/components/Icons/StarIcon.d.ts +1 -1
- package/dist/types/components/Icons/StopIcon.d.ts +1 -1
- package/dist/types/components/Icons/SuccessIcon.d.ts +1 -1
- package/dist/types/components/Icons/TagIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentAlignedIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentAutoIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentFreeIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentLinearIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentMirroredIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentStepIcon.d.ts +1 -1
- package/dist/types/components/Icons/TerminalIcon.d.ts +1 -1
- package/dist/types/components/Icons/TrashIcon.d.ts +1 -1
- package/dist/types/components/Icons/UndoIcon.d.ts +1 -1
- package/dist/types/components/Icons/UnlinkIcon.d.ts +1 -1
- package/dist/types/components/Icons/UnlockIcon.d.ts +1 -1
- package/dist/types/components/Icons/UploadIcon.d.ts +1 -1
- package/dist/types/components/Icons/UserIcon.d.ts +1 -1
- package/dist/types/components/Icons/UsersIcon.d.ts +1 -1
- package/dist/types/components/Icons/WarningIcon.d.ts +1 -1
- package/dist/types/components/Icons/ZoomFitIcon.d.ts +35 -0
- package/dist/types/components/Icons/ZoomInIcon.d.ts +1 -1
- package/dist/types/components/Icons/ZoomOutIcon.d.ts +1 -1
- package/dist/types/components/controls/CartesianPicker/CartesianPicker.types.d.ts +3 -3
- package/dist/types/components/controls/ColorPicker/ColorPicker.types.d.ts +2 -2
- package/dist/types/components/controls/ColorPicker/EyeDropper.d.ts +1 -1
- package/dist/types/components/controls/Combobox/Combobox.types.d.ts +1 -1
- package/dist/types/components/controls/CurveEditor/CurveEditor.types.d.ts +8 -58
- package/dist/types/components/controls/CurveEditor/curveUtils.d.ts +2 -1
- package/dist/types/components/controls/FileTree/FileTree.d.ts +34 -0
- package/dist/types/components/controls/FileTree/FileTree.types.d.ts +133 -0
- package/dist/types/components/controls/FileTree/fileTreeIcons.d.ts +29 -0
- package/dist/types/components/controls/FileTree/fileTreeLabels.d.ts +19 -0
- package/dist/types/components/controls/FileUploader/FileUploader.types.d.ts +2 -2
- package/dist/types/components/controls/MultiSelect/MultiSelect.types.d.ts +1 -1
- package/dist/types/components/controls/NumberInput/NumberInput.d.ts +2 -2
- package/dist/types/components/controls/Select/Select.d.ts +1 -1
- package/dist/types/components/controls/Select/Select.types.d.ts +45 -11
- package/dist/types/components/controls/Slider/Slider.d.ts +1 -1
- package/dist/types/components/controls/TagInput/TagInput.types.d.ts +2 -2
- package/dist/types/components/controls/TreeView/TreeView.d.ts +1 -1
- package/dist/types/components/controls/TreeView/TreeView.types.d.ts +24 -2
- package/dist/types/components/controls/VectorInput/VectorInput.types.d.ts +1 -1
- package/dist/types/components/data/DataTable/DataTable.types.d.ts +2 -2
- package/dist/types/components/editor/AssetBrowser/AssetBrowser.d.ts +13 -0
- package/dist/types/components/editor/AssetBrowser/AssetBrowser.types.d.ts +241 -0
- package/dist/types/components/editor/AssetBrowser/assetBrowserLabels.d.ts +70 -0
- package/dist/types/components/editor/ChatPanel/ChatMarkdownRenderer.types.d.ts +1 -1
- package/dist/types/components/editor/ChatPanel/ChatPanel.types.d.ts +2 -2
- package/dist/types/components/editor/Minimap/Minimap.d.ts +26 -0
- package/dist/types/components/editor/Minimap/Minimap.types.d.ts +249 -0
- package/dist/types/components/editor/Minimap/MinimapContext.d.ts +27 -0
- package/dist/types/components/editor/Minimap/MinimapCorner.d.ts +8 -0
- package/dist/types/components/editor/Minimap/MinimapFooter.d.ts +8 -0
- package/dist/types/components/editor/Minimap/MinimapStore.d.ts +17 -0
- package/dist/types/components/editor/Minimap/MinimapTitle.d.ts +8 -0
- package/dist/types/components/editor/Minimap/ViewportMinimap.d.ts +52 -0
- package/dist/types/components/editor/Minimap/computeBoundsFromItems.d.ts +13 -0
- package/dist/types/components/editor/Minimap/index.d.ts +13 -0
- package/dist/types/components/editor/NodeGraph/NodeGraph.d.ts +63 -0
- package/dist/types/components/editor/NodeGraph/NodeGraph.types.d.ts +568 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphContext.d.ts +30 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphNodeParts.d.ts +86 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphNodeSection.d.ts +47 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphPin.d.ts +57 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphPort.d.ts +30 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphPortVisual.d.ts +46 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphSlots.d.ts +16 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphStore.d.ts +256 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphToolbar.d.ts +54 -0
- package/dist/types/components/editor/NodeGraph/createTypeMatchValidator.d.ts +43 -0
- package/dist/types/components/editor/NodeGraph/nodeGraphActions.d.ts +39 -0
- package/dist/types/components/editor/NodeGraph/nodeGraphIds.d.ts +16 -0
- package/dist/types/components/editor/NodeGraph/useNodeGraph.d.ts +103 -0
- package/dist/types/components/editor/PropertyInspector/PropertyInspector.types.d.ts +51 -5
- package/dist/types/components/editor/Timeline/Timeline.d.ts +18 -0
- package/dist/types/components/editor/Timeline/Timeline.types.d.ts +348 -0
- package/dist/types/components/editor/Timeline/TimelineContext.d.ts +51 -0
- package/dist/types/components/editor/Timeline/TimelineFooter.d.ts +8 -0
- package/dist/types/components/editor/Timeline/TimelineMinimap.d.ts +21 -0
- package/dist/types/components/editor/Timeline/TimelineStore.d.ts +41 -0
- package/dist/types/components/editor/Timeline/TimelineToolbar.d.ts +8 -0
- package/dist/types/components/editor/Timeline/TimelineTrackScale.d.ts +8 -0
- package/dist/types/components/editor/Timeline/index.d.ts +15 -0
- package/dist/types/components/editor/Timeline/timelineCoords.d.ts +7 -0
- package/dist/types/components/editor/Timeline/timelineEdits.d.ts +18 -0
- package/dist/types/components/editor/TransformControl/TransformControl.types.d.ts +2 -2
- package/dist/types/components/editor/ViewportGizmo/ViewportGizmo.types.d.ts +1 -1
- package/dist/types/components/feedback/Alert/Alert.d.ts +2 -2
- package/dist/types/components/feedback/Alert/Alert.types.d.ts +5 -5
- package/dist/types/components/feedback/CommandPalette/CommandPalette.types.d.ts +1 -3
- package/dist/types/components/feedback/Dialog/Dialog.types.d.ts +2 -2
- package/dist/types/components/feedback/Drawer/Drawer.types.d.ts +1 -1
- package/dist/types/components/feedback/EmptyState/EmptyState.types.d.ts +2 -2
- package/dist/types/components/feedback/LogView/LogView.d.ts +58 -0
- package/dist/types/components/feedback/LogView/LogView.types.d.ts +333 -0
- package/dist/types/components/feedback/LogView/LogViewBody.d.ts +15 -0
- package/dist/types/components/feedback/LogView/LogViewContext.d.ts +9 -0
- package/dist/types/components/feedback/LogView/LogViewParts.d.ts +35 -0
- package/dist/types/components/feedback/LogView/LogViewStore.d.ts +4 -0
- package/dist/types/components/feedback/LogView/logViewLabels.d.ts +9 -0
- package/dist/types/components/feedback/LogView/logViewUtils.d.ts +41 -0
- package/dist/types/components/feedback/ProgressBar/ProgressBar.types.d.ts +3 -3
- package/dist/types/components/feedback/Skeleton/Skeleton.types.d.ts +4 -4
- package/dist/types/components/feedback/Stat/Stat.types.d.ts +2 -2
- package/dist/types/components/feedback/Toast/Toast.types.d.ts +1 -1
- package/dist/types/components/form/FormHelperText.d.ts +2 -2
- package/dist/types/components/form/FormLabel.d.ts +1 -1
- package/dist/types/components/form/InputWrapper.d.ts +2 -2
- package/dist/types/components/layout/Accordion/Accordion.types.d.ts +2 -2
- package/dist/types/components/layout/Card/Card.types.d.ts +6 -6
- package/dist/types/components/layout/Divider/Divider.types.d.ts +2 -2
- package/dist/types/components/layout/Flex/Flex.d.ts +1 -1
- package/dist/types/components/layout/Grid/Grid.d.ts +1 -1
- package/dist/types/components/layout/ListItem/ListItem.types.d.ts +2 -2
- package/dist/types/components/layout/PageHeader/PageHeader.types.d.ts +1 -1
- package/dist/types/components/layout/PanelSurface/PanelSurface.types.d.ts +6 -6
- package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +2 -2
- package/dist/types/components/layout/Stack/Stack.d.ts +1 -1
- package/dist/types/components/navigation/Breadcrumbs/BreadcrumbItem.d.ts +1 -0
- package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts +7 -0
- package/dist/types/components/navigation/ContextMenu/ContextMenu.d.ts +18 -3
- package/dist/types/components/navigation/ContextMenu/ContextMenu.types.d.ts +55 -63
- package/dist/types/components/navigation/Menu/Menu.d.ts +38 -35
- package/dist/types/components/navigation/Menu/Menu.types.d.ts +190 -71
- package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +1 -1
- package/dist/types/components/navigation/PathBar/PathBar.d.ts +31 -0
- package/dist/types/components/navigation/PathBar/PathBar.types.d.ts +79 -0
- package/dist/types/components/navigation/SegmentedControl/SegmentedControl.types.d.ts +3 -3
- package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +2 -2
- package/dist/types/components/primitives/Avatar/Avatar.types.d.ts +2 -2
- package/dist/types/components/primitives/Badge/Badge.types.d.ts +1 -1
- package/dist/types/components/primitives/Button/Button.d.ts +2 -2
- package/dist/types/components/primitives/Checkbox/Checkbox.types.d.ts +2 -2
- package/dist/types/components/primitives/Code/Code.types.d.ts +1 -1
- package/dist/types/components/primitives/Collapsible/Collapsible.types.d.ts +2 -2
- package/dist/types/components/primitives/HoverCard/HoverCard.types.d.ts +3 -3
- package/dist/types/components/primitives/Icon/Icon.d.ts +2 -2
- package/dist/types/components/primitives/IconButton/IconButton.d.ts +1 -1
- package/dist/types/components/primitives/Input/Input.d.ts +1 -1
- package/dist/types/components/primitives/Kbd/Kbd.types.d.ts +1 -1
- package/dist/types/components/primitives/Link/Link.types.d.ts +1 -1
- package/dist/types/components/primitives/Popover/Popover.types.d.ts +2 -2
- package/dist/types/components/primitives/Radio/Radio.types.d.ts +3 -3
- package/dist/types/components/primitives/Switch/Switch.d.ts +1 -1
- package/dist/types/components/primitives/TextArea/TextArea.types.d.ts +1 -1
- package/dist/types/components/primitives/Tooltip/Tooltip.d.ts +1 -1
- package/dist/types/components/primitives/VisuallyHidden/VisuallyHidden.types.d.ts +1 -1
- package/dist/types/components/primitives/canvas/canvas.types.d.ts +16 -1
- package/dist/types/components/primitives/viewport/Viewport.d.ts +38 -0
- package/dist/types/components/primitives/viewport/Viewport.types.d.ts +257 -0
- package/dist/types/components/primitives/viewport/ViewportContext.d.ts +23 -0
- package/dist/types/components/primitives/viewport/ViewportLayer.d.ts +26 -0
- package/dist/types/components/primitives/viewport/ViewportOverlay.d.ts +27 -0
- package/dist/types/components/primitives/viewport/ViewportWorld.d.ts +25 -0
- package/dist/types/components/primitives/viewport/viewportCoords.d.ts +25 -0
- package/dist/types/components/primitives/viewport/viewportMath.d.ts +35 -0
- package/dist/types/components/shell/AppShell/AppShell.types.d.ts +2 -2
- package/dist/types/components/shell/FloatingPanel/FloatingPanel.types.d.ts +2 -2
- package/dist/types/components/shell/MenuBar/MenuBar.types.d.ts +5 -5
- package/dist/types/components/shell/StatusBar/StatusBar.types.d.ts +3 -3
- package/dist/types/components/shell/Toolbar/Toolbar.types.d.ts +5 -5
- package/dist/types/hooks/useDebounced/useDebouncedValue.d.ts +13 -4
- package/dist/types/hooks/useEventCallback/useEventCallback.d.ts +32 -0
- package/dist/types/hooks/useIsMounted/useIsMounted.d.ts +28 -0
- package/dist/types/hooks/useKeyboard/types.d.ts +1 -1
- package/dist/types/hooks/useLatest/useLatest.d.ts +23 -0
- package/dist/types/hooks/useResizeObserver/useResizeObserver.d.ts +3 -3
- package/dist/types/index.d.ts +71 -6
- package/dist/types/theme/ThemeProvider.d.ts +5 -3
- package/dist/types/theme/contract.css.d.ts +1 -1
- package/dist/types/theme/createCustomTheme.d.ts +1 -1
- package/dist/types/theme/darkThemeValues.d.ts +1 -1
- package/dist/types/theme/lightThemeValues.d.ts +1 -1
- package/dist/types/theme/themeContractData.d.ts +4 -4
- package/dist/types/theme-values.d.ts +1 -1
- package/dist/types/types/keyframe.d.ts +64 -0
- package/package.json +34 -18
- package/dist/esm/_virtual/_commonjsHelpers.js +0 -6
- package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/esm/_virtual/cjs.js +0 -4
- package/dist/esm/_virtual/cjs.js.map +0 -1
- package/dist/esm/_virtual/cssesc.js +0 -8
- package/dist/esm/_virtual/cssesc.js.map +0 -1
- package/dist/esm/_virtual/picocolors.js +0 -8
- package/dist/esm/_virtual/picocolors.js.map +0 -1
- package/dist/esm/_virtual/picocolors2.js +0 -4
- package/dist/esm/_virtual/picocolors2.js.map +0 -1
- package/dist/esm/assets/src/components/navigation/Menu/Menu.css.ts.vanilla-DD0c5D10.css +0 -67
- package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js +0 -53
- package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js.map +0 -1
- package/dist/esm/components/navigation/Menu/Menu.helpers.js +0 -53
- package/dist/esm/components/navigation/Menu/Menu.helpers.js.map +0 -1
- package/dist/esm/components/navigation/Menu/useMenu.js +0 -88
- package/dist/esm/components/navigation/Menu/useMenu.js.map +0 -1
- package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js +0 -56
- package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js +0 -46
- package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js +0 -13
- package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js +0 -962
- package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js +0 -309
- package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js +0 -18
- package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js +0 -23
- package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js +0 -1543
- package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js +0 -38
- package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js.map +0 -1
- package/dist/esm/node_modules/css-what/lib/es/parse.js +0 -424
- package/dist/esm/node_modules/css-what/lib/es/parse.js.map +0 -1
- package/dist/esm/node_modules/css-what/lib/es/types.js +0 -29
- package/dist/esm/node_modules/css-what/lib/es/types.js.map +0 -1
- package/dist/esm/node_modules/cssesc/cssesc.js +0 -120
- package/dist/esm/node_modules/cssesc/cssesc.js.map +0 -1
- package/dist/esm/node_modules/dedent/dist/dedent.js +0 -100
- package/dist/esm/node_modules/dedent/dist/dedent.js.map +0 -1
- package/dist/esm/node_modules/deep-object-diff/mjs/diff.js +0 -40
- package/dist/esm/node_modules/deep-object-diff/mjs/diff.js.map +0 -1
- package/dist/esm/node_modules/deep-object-diff/mjs/utils.js +0 -9
- package/dist/esm/node_modules/deep-object-diff/mjs/utils.js.map +0 -1
- package/dist/esm/node_modules/deepmerge/dist/cjs.js +0 -143
- package/dist/esm/node_modules/deepmerge/dist/cjs.js.map +0 -1
- package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js +0 -1386
- package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js.map +0 -1
- package/dist/esm/node_modules/modern-ahocorasick/dist/index.js +0 -102
- package/dist/esm/node_modules/modern-ahocorasick/dist/index.js.map +0 -1
- package/dist/esm/node_modules/picocolors/picocolors.js +0 -87
- package/dist/esm/node_modules/picocolors/picocolors.js.map +0 -1
- package/dist/types/components/navigation/ContextMenu/useContextMenuTarget.d.ts +0 -5
- package/dist/types/components/navigation/Menu/useMenu.d.ts +0 -16
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import '../../controls/CurveEditor/CurveEditor.js';
|
|
2
|
+
import { evaluateCurve } from '../../controls/CurveEditor/curveUtils.js';
|
|
3
|
+
import '../../controls/CurveEditor/curvePresets.js';
|
|
4
|
+
import { frameToX, xToFrame, valueToY, valueInset } from './timelineCoords.js';
|
|
5
|
+
|
|
6
|
+
const KEYFRAME_RADIUS = 4;
|
|
7
|
+
const MIN_LABEL_PX = 72;
|
|
8
|
+
/** Smallest "nice" step (1/2/5 × 10ⁿ, ≥ 1) at least as large as `value`. */
|
|
9
|
+
function niceFrameStep(value) {
|
|
10
|
+
if (value <= 1)
|
|
11
|
+
return 1;
|
|
12
|
+
const exp = Math.floor(Math.log10(value));
|
|
13
|
+
const base = Math.pow(10, exp);
|
|
14
|
+
// `f` is in [1, 10] by construction; pick the next multiple in {1,2,5,10}.
|
|
15
|
+
const f = value / base;
|
|
16
|
+
const m = f <= 1 ? 1 : f <= 2 ? 2 : f <= 5 ? 5 : 10;
|
|
17
|
+
return m * base;
|
|
18
|
+
}
|
|
19
|
+
function diamondPath(ctx, cx, cy, r) {
|
|
20
|
+
ctx.beginPath();
|
|
21
|
+
ctx.moveTo(cx, cy - r);
|
|
22
|
+
ctx.lineTo(cx + r, cy);
|
|
23
|
+
ctx.lineTo(cx, cy + r);
|
|
24
|
+
ctx.lineTo(cx - r, cy);
|
|
25
|
+
ctx.closePath();
|
|
26
|
+
}
|
|
27
|
+
/** Graph-mode lane: the track's value curve + keyframe points (+ tangents when selected). */
|
|
28
|
+
function drawGraphLane(input, track, top, rowH, accent, range) {
|
|
29
|
+
const { ctx, size, view, startFrame, endFrame, colors, isSelected } = input;
|
|
30
|
+
const isHovered = input.isHovered ?? (() => false);
|
|
31
|
+
// ── Track scale (axis line + min/max [+ midpoint] labels, optional gridlines)
|
|
32
|
+
// Skipped on short lanes (e.g. a collapsed graph-mode track) so the labels
|
|
33
|
+
// never overlap into an unreadable blob.
|
|
34
|
+
if (input.trackScale && rowH >= input.trackScale.minLaneHeight) {
|
|
35
|
+
const { position, format, showMidpoint, gridlines } = input.trackScale;
|
|
36
|
+
const scaleColor = input.trackScale.color ?? colors.rulerText;
|
|
37
|
+
const isStart = position === 'start';
|
|
38
|
+
const inset = valueInset(rowH);
|
|
39
|
+
const axisX = isStart ? 6 : size.width - 6;
|
|
40
|
+
const lineX = Math.round(axisX) + 0.5;
|
|
41
|
+
const yTop = top + inset;
|
|
42
|
+
const yBot = top + rowH - inset;
|
|
43
|
+
const yMid = (yTop + yBot) / 2;
|
|
44
|
+
const midValue = (range[0] + range[1]) / 2;
|
|
45
|
+
const ticks = [
|
|
46
|
+
{ y: yTop, value: range[1], baseline: 'top' },
|
|
47
|
+
{ y: yBot, value: range[0], baseline: 'bottom' },
|
|
48
|
+
];
|
|
49
|
+
if (showMidpoint) {
|
|
50
|
+
ticks.push({ y: yMid, value: midValue, baseline: 'middle' });
|
|
51
|
+
}
|
|
52
|
+
ctx.save();
|
|
53
|
+
ctx.strokeStyle = scaleColor;
|
|
54
|
+
ctx.fillStyle = scaleColor;
|
|
55
|
+
ctx.font = input.font;
|
|
56
|
+
ctx.lineWidth = 1;
|
|
57
|
+
// Gridlines first so the axis + curve draw on top.
|
|
58
|
+
if (gridlines) {
|
|
59
|
+
ctx.save();
|
|
60
|
+
ctx.globalAlpha = 0.18;
|
|
61
|
+
ctx.setLineDash([2, 3]);
|
|
62
|
+
ctx.beginPath();
|
|
63
|
+
for (const tick of ticks) {
|
|
64
|
+
const y = Math.round(tick.y) + 0.5;
|
|
65
|
+
ctx.moveTo(0, y);
|
|
66
|
+
ctx.lineTo(size.width, y);
|
|
67
|
+
}
|
|
68
|
+
ctx.stroke();
|
|
69
|
+
ctx.setLineDash([]);
|
|
70
|
+
ctx.restore();
|
|
71
|
+
}
|
|
72
|
+
// Axis line.
|
|
73
|
+
ctx.globalAlpha = 0.7;
|
|
74
|
+
ctx.beginPath();
|
|
75
|
+
ctx.moveTo(lineX, yTop);
|
|
76
|
+
ctx.lineTo(lineX, yBot);
|
|
77
|
+
ctx.stroke();
|
|
78
|
+
// Ticks + labels.
|
|
79
|
+
const tickLen = 3;
|
|
80
|
+
const tickInside = isStart ? lineX + tickLen : lineX - tickLen;
|
|
81
|
+
const labelX = isStart ? lineX + tickLen + 3 : lineX - tickLen - 3;
|
|
82
|
+
ctx.textAlign = isStart ? 'left' : 'right';
|
|
83
|
+
for (const tick of ticks) {
|
|
84
|
+
const y = Math.round(tick.y) + 0.5;
|
|
85
|
+
ctx.beginPath();
|
|
86
|
+
ctx.moveTo(lineX, y);
|
|
87
|
+
ctx.lineTo(tickInside, y);
|
|
88
|
+
ctx.stroke();
|
|
89
|
+
ctx.textBaseline = tick.baseline;
|
|
90
|
+
ctx.fillText(format(tick.value), labelX, tick.y);
|
|
91
|
+
}
|
|
92
|
+
ctx.restore();
|
|
93
|
+
}
|
|
94
|
+
const curve = {
|
|
95
|
+
keyframes: track.keyframes,
|
|
96
|
+
domainY: [range[0], range[1]],
|
|
97
|
+
...(track.infinity?.pre ? { preInfinity: track.infinity.pre } : {}),
|
|
98
|
+
...(track.infinity?.post ? { postInfinity: track.infinity.post } : {}),
|
|
99
|
+
};
|
|
100
|
+
const toX = (f) => frameToX(f, view, size.width);
|
|
101
|
+
if (track.keyframes.length > 0) {
|
|
102
|
+
ctx.strokeStyle = accent;
|
|
103
|
+
ctx.lineWidth = 1.5;
|
|
104
|
+
ctx.beginPath();
|
|
105
|
+
const samples = Math.max(2, Math.ceil(size.width / 3));
|
|
106
|
+
// Visual safety net: clamp every sampled curve value to the track's
|
|
107
|
+
// range so the line cannot escape the lane even if the data was loaded
|
|
108
|
+
// with control points outside the range (the canonical guarantee comes
|
|
109
|
+
// from clamping handles in `setKeyframeTangent`, but we still clip here
|
|
110
|
+
// so legacy / unconstrained data renders cleanly).
|
|
111
|
+
const lo = range[0];
|
|
112
|
+
const hi = range[1];
|
|
113
|
+
for (let s = 0; s <= samples; s += 1) {
|
|
114
|
+
const px = (s / samples) * size.width;
|
|
115
|
+
const raw = evaluateCurve(curve, xToFrame(px, view, size.width));
|
|
116
|
+
const value = raw < lo ? lo : raw > hi ? hi : raw;
|
|
117
|
+
const py = valueToY(value, range, top, rowH);
|
|
118
|
+
if (s === 0)
|
|
119
|
+
ctx.moveTo(px, py);
|
|
120
|
+
else
|
|
121
|
+
ctx.lineTo(px, py);
|
|
122
|
+
}
|
|
123
|
+
ctx.stroke();
|
|
124
|
+
}
|
|
125
|
+
// ── Tangent handles on the selected keyframe (CurveEditor-parity styling)
|
|
126
|
+
for (const kf of track.keyframes) {
|
|
127
|
+
if (kf.id === undefined || !isSelected(track.id, kf.id))
|
|
128
|
+
continue;
|
|
129
|
+
if (kf.tangentMode === 'linear' || kf.tangentMode === 'step')
|
|
130
|
+
continue;
|
|
131
|
+
const x = toX(kf.x);
|
|
132
|
+
if (x < -KEYFRAME_RADIUS * 4 || x > size.width + KEYFRAME_RADIUS * 4)
|
|
133
|
+
continue;
|
|
134
|
+
const y = valueToY(kf.y, range, top, rowH);
|
|
135
|
+
const isAuto = kf.tangentMode === 'auto';
|
|
136
|
+
const lineAlpha = isAuto ? 0.4 : 0.7;
|
|
137
|
+
const dotRadius = isAuto ? 3 : 4;
|
|
138
|
+
const drawHandle = (hx, hy) => {
|
|
139
|
+
ctx.save();
|
|
140
|
+
ctx.globalAlpha = lineAlpha;
|
|
141
|
+
ctx.strokeStyle = colors.rulerText;
|
|
142
|
+
ctx.lineWidth = 1;
|
|
143
|
+
ctx.setLineDash([3, 3]);
|
|
144
|
+
ctx.beginPath();
|
|
145
|
+
ctx.moveTo(x, y);
|
|
146
|
+
ctx.lineTo(hx, hy);
|
|
147
|
+
ctx.stroke();
|
|
148
|
+
ctx.setLineDash([]);
|
|
149
|
+
ctx.globalAlpha = 1;
|
|
150
|
+
ctx.fillStyle = colors.rulerText;
|
|
151
|
+
ctx.beginPath();
|
|
152
|
+
ctx.arc(hx, hy, dotRadius, 0, Math.PI * 2);
|
|
153
|
+
ctx.fill();
|
|
154
|
+
ctx.restore();
|
|
155
|
+
};
|
|
156
|
+
drawHandle(toX(kf.x + kf.handleIn.x), valueToY(kf.y + kf.handleIn.y, range, top, rowH));
|
|
157
|
+
drawHandle(toX(kf.x + kf.handleOut.x), valueToY(kf.y + kf.handleOut.y, range, top, rowH));
|
|
158
|
+
}
|
|
159
|
+
// ── Keyframe points (sized by selected / hovered state)
|
|
160
|
+
for (const kf of track.keyframes) {
|
|
161
|
+
const x = toX(kf.x);
|
|
162
|
+
if (x < -KEYFRAME_RADIUS * 2 || x > size.width + KEYFRAME_RADIUS * 2)
|
|
163
|
+
continue;
|
|
164
|
+
const y = valueToY(kf.y, range, top, rowH);
|
|
165
|
+
const selected = kf.id !== undefined && isSelected(track.id, kf.id);
|
|
166
|
+
const hovered = kf.id !== undefined && isHovered(track.id, kf.id);
|
|
167
|
+
const radius = hovered
|
|
168
|
+
? KEYFRAME_RADIUS + 2
|
|
169
|
+
: selected
|
|
170
|
+
? KEYFRAME_RADIUS + 1
|
|
171
|
+
: KEYFRAME_RADIUS - 0.5;
|
|
172
|
+
ctx.beginPath();
|
|
173
|
+
ctx.arc(x, y, radius, 0, Math.PI * 2);
|
|
174
|
+
ctx.fillStyle = selected ? colors.keyframeSelected : accent;
|
|
175
|
+
ctx.fill();
|
|
176
|
+
ctx.lineWidth = selected ? 1.5 : 1;
|
|
177
|
+
ctx.strokeStyle = colors.keyframeStroke;
|
|
178
|
+
ctx.stroke();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Render a full dope-sheet frame: background → gridlines → ruler → track rows
|
|
183
|
+
* → keyframes → caller `renderOverlay` → playhead. The caller is responsible
|
|
184
|
+
* for DPR scaling on `ctx` before invoking.
|
|
185
|
+
*/
|
|
186
|
+
function drawTimeline(input) {
|
|
187
|
+
const { ctx, size, view, startFrame, endFrame, fps, frame, rows, scrollTop, rulerHeight, showPlayhead, loopStripHeight = 0, loopHandles = 'edges', colors, font, formatTime, isSelected, renderOverlay, marquee, loopRegion, loopHover, } = input;
|
|
188
|
+
const toX = (f) => frameToX(f, view, size.width);
|
|
189
|
+
ctx.clearRect(0, 0, size.width, size.height);
|
|
190
|
+
ctx.fillStyle = colors.background;
|
|
191
|
+
ctx.fillRect(0, 0, size.width, size.height);
|
|
192
|
+
// ── Gridlines + ruler ticks ──
|
|
193
|
+
const span = Math.max(1e-6, view.endFrame - view.startFrame);
|
|
194
|
+
const framesPerPixel = span / Math.max(1, size.width);
|
|
195
|
+
const step = niceFrameStep(framesPerPixel * MIN_LABEL_PX);
|
|
196
|
+
const firstTick = Math.ceil(view.startFrame / step) * step;
|
|
197
|
+
const chromeHeight = rulerHeight + loopStripHeight;
|
|
198
|
+
ctx.lineWidth = 1;
|
|
199
|
+
ctx.strokeStyle = colors.gridLine;
|
|
200
|
+
ctx.beginPath();
|
|
201
|
+
for (let f = firstTick; f <= view.endFrame; f += step) {
|
|
202
|
+
const x = Math.round(toX(f)) + 0.5;
|
|
203
|
+
ctx.moveTo(x, chromeHeight);
|
|
204
|
+
ctx.lineTo(x, size.height);
|
|
205
|
+
}
|
|
206
|
+
ctx.stroke();
|
|
207
|
+
if (rulerHeight > 0) {
|
|
208
|
+
ctx.fillStyle = colors.rulerText;
|
|
209
|
+
ctx.font = font;
|
|
210
|
+
ctx.textBaseline = 'middle';
|
|
211
|
+
ctx.textAlign = 'left';
|
|
212
|
+
for (let f = firstTick; f <= view.endFrame; f += step) {
|
|
213
|
+
const x = Math.round(toX(f));
|
|
214
|
+
ctx.fillStyle = colors.gridLine;
|
|
215
|
+
ctx.fillRect(x, rulerHeight - 5, 1, 5);
|
|
216
|
+
ctx.fillStyle = colors.rulerText;
|
|
217
|
+
ctx.fillText(formatTime(f, fps), x + 3, rulerHeight / 2);
|
|
218
|
+
}
|
|
219
|
+
ctx.fillStyle = colors.rowSeparator;
|
|
220
|
+
ctx.fillRect(0, rulerHeight - 1, size.width, 1);
|
|
221
|
+
}
|
|
222
|
+
// ── Loop strip background (when enabled) ──
|
|
223
|
+
if (loopStripHeight > 0) {
|
|
224
|
+
ctx.save();
|
|
225
|
+
ctx.fillStyle = colors.gridLine;
|
|
226
|
+
ctx.globalAlpha = 0.35;
|
|
227
|
+
ctx.fillRect(0, rulerHeight, size.width, loopStripHeight);
|
|
228
|
+
ctx.globalAlpha = 1;
|
|
229
|
+
ctx.fillStyle = colors.rowSeparator;
|
|
230
|
+
ctx.fillRect(0, chromeHeight - 1, size.width, 1);
|
|
231
|
+
ctx.restore();
|
|
232
|
+
}
|
|
233
|
+
// ── Loop region ──
|
|
234
|
+
if (loopRegion) {
|
|
235
|
+
const lx = toX(loopRegion.startFrame);
|
|
236
|
+
const rx = toX(loopRegion.endFrame);
|
|
237
|
+
ctx.save();
|
|
238
|
+
ctx.fillStyle = colors.keyframeSelected;
|
|
239
|
+
// Body fill (brighter when the body is hovered, hinting it's draggable).
|
|
240
|
+
ctx.globalAlpha = loopHover === 'body' ? 0.12 : 0.06;
|
|
241
|
+
ctx.fillRect(lx, chromeHeight, rx - lx, Math.max(0, size.height - chromeHeight));
|
|
242
|
+
if (rulerHeight > 0) {
|
|
243
|
+
ctx.globalAlpha = loopHover === 'body' ? 0.3 : 0.22;
|
|
244
|
+
ctx.fillRect(lx, 0, rx - lx, rulerHeight);
|
|
245
|
+
}
|
|
246
|
+
if (loopStripHeight > 0) {
|
|
247
|
+
ctx.globalAlpha = loopHover === 'body' ? 0.45 : 0.32;
|
|
248
|
+
ctx.fillRect(lx, rulerHeight, rx - lx, loopStripHeight);
|
|
249
|
+
}
|
|
250
|
+
// Edges — `edges` style draws full-height bars; `brackets` style draws
|
|
251
|
+
// `[ ]` markers in the chrome with serifs at top and bottom, no
|
|
252
|
+
// full-height bars.
|
|
253
|
+
ctx.globalAlpha = 1;
|
|
254
|
+
const startW = loopHover === 'start' ? 4 : 2;
|
|
255
|
+
const endW = loopHover === 'end' ? 4 : 2;
|
|
256
|
+
if (loopHover === 'start' || loopHover === 'end') {
|
|
257
|
+
ctx.shadowColor = colors.keyframeSelected;
|
|
258
|
+
ctx.shadowBlur = 6;
|
|
259
|
+
}
|
|
260
|
+
if (loopHandles === 'brackets') {
|
|
261
|
+
const serif = 8;
|
|
262
|
+
const serifH = 2;
|
|
263
|
+
// start `[`
|
|
264
|
+
ctx.fillRect(lx, 0, startW, chromeHeight);
|
|
265
|
+
ctx.fillRect(lx, 0, serif, serifH);
|
|
266
|
+
ctx.fillRect(lx, chromeHeight - serifH, serif, serifH);
|
|
267
|
+
// end `]`
|
|
268
|
+
ctx.fillRect(rx - endW, 0, endW, chromeHeight);
|
|
269
|
+
ctx.fillRect(rx - serif, 0, serif, serifH);
|
|
270
|
+
ctx.fillRect(rx - serif, chromeHeight - serifH, serif, serifH);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
ctx.fillRect(lx, 0, startW, size.height);
|
|
274
|
+
ctx.fillRect(rx - endW, 0, endW, size.height);
|
|
275
|
+
}
|
|
276
|
+
ctx.restore();
|
|
277
|
+
}
|
|
278
|
+
// ── Track rows + keyframes (clipped to the area below the chrome) ──
|
|
279
|
+
ctx.save();
|
|
280
|
+
ctx.beginPath();
|
|
281
|
+
ctx.rect(0, chromeHeight, size.width, Math.max(0, size.height - chromeHeight));
|
|
282
|
+
ctx.clip();
|
|
283
|
+
for (const row of rows) {
|
|
284
|
+
const top = chromeHeight + row.top - scrollTop;
|
|
285
|
+
// Virtualize: skip rows scrolled out of the track area.
|
|
286
|
+
if (top + row.height < chromeHeight || top > size.height)
|
|
287
|
+
continue;
|
|
288
|
+
if (row.kind === 'group') {
|
|
289
|
+
ctx.fillStyle = colors.groupHeader;
|
|
290
|
+
ctx.fillRect(0, top, size.width, row.height);
|
|
291
|
+
ctx.fillStyle = colors.rowSeparator;
|
|
292
|
+
ctx.fillRect(0, top + row.height - 1, size.width, 1);
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
const track = row.track;
|
|
296
|
+
const rowH = row.height;
|
|
297
|
+
ctx.fillStyle = colors.rowSeparator;
|
|
298
|
+
ctx.fillRect(0, top + rowH - 1, size.width, 1);
|
|
299
|
+
const accent = track.color ?? colors.keyframe;
|
|
300
|
+
if (row.graph) {
|
|
301
|
+
drawGraphLane(input, track, top, rowH, accent, row.range);
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
const centerY = top + rowH / 2;
|
|
305
|
+
const hoveredAt = input.isHovered ?? (() => false);
|
|
306
|
+
for (const kf of track.keyframes) {
|
|
307
|
+
const x = toX(kf.x);
|
|
308
|
+
if (x < -KEYFRAME_RADIUS * 2 || x > size.width + KEYFRAME_RADIUS * 2)
|
|
309
|
+
continue;
|
|
310
|
+
const selected = kf.id !== undefined && isSelected(track.id, kf.id);
|
|
311
|
+
const hovered = kf.id !== undefined && hoveredAt(track.id, kf.id);
|
|
312
|
+
const radius = hovered
|
|
313
|
+
? KEYFRAME_RADIUS + 2
|
|
314
|
+
: selected
|
|
315
|
+
? KEYFRAME_RADIUS + 1
|
|
316
|
+
: KEYFRAME_RADIUS;
|
|
317
|
+
diamondPath(ctx, x, centerY, radius);
|
|
318
|
+
ctx.fillStyle = selected ? colors.keyframeSelected : accent;
|
|
319
|
+
ctx.fill();
|
|
320
|
+
ctx.lineWidth = selected ? 1.5 : 1;
|
|
321
|
+
ctx.strokeStyle = colors.keyframeStroke;
|
|
322
|
+
ctx.stroke();
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (renderOverlay) {
|
|
326
|
+
const info = {
|
|
327
|
+
size,
|
|
328
|
+
view,
|
|
329
|
+
startFrame,
|
|
330
|
+
endFrame,
|
|
331
|
+
fps,
|
|
332
|
+
frame,
|
|
333
|
+
frameToX: toX,
|
|
334
|
+
xToFrame: (x) => xToFrame(x, view, size.width),
|
|
335
|
+
};
|
|
336
|
+
ctx.save();
|
|
337
|
+
renderOverlay(ctx, info);
|
|
338
|
+
ctx.restore();
|
|
339
|
+
}
|
|
340
|
+
ctx.restore();
|
|
341
|
+
// ── Playhead ──
|
|
342
|
+
if (showPlayhead) {
|
|
343
|
+
const x = Math.round(toX(frame)) + 0.5;
|
|
344
|
+
const hovered = input.playheadHovered === true;
|
|
345
|
+
ctx.save();
|
|
346
|
+
if (hovered) {
|
|
347
|
+
ctx.shadowColor = colors.playhead;
|
|
348
|
+
ctx.shadowBlur = 6;
|
|
349
|
+
}
|
|
350
|
+
ctx.strokeStyle = colors.playhead;
|
|
351
|
+
ctx.lineWidth = hovered ? 1.5 : 1;
|
|
352
|
+
ctx.beginPath();
|
|
353
|
+
ctx.moveTo(x, 0);
|
|
354
|
+
ctx.lineTo(x, size.height);
|
|
355
|
+
ctx.stroke();
|
|
356
|
+
ctx.restore();
|
|
357
|
+
// Top handle (downward triangle in the ruler band) — bigger on hover so
|
|
358
|
+
// the user can clearly see the grabbable head.
|
|
359
|
+
const baseHead = Math.max(4, Math.min(7, rulerHeight - 2)) || 6;
|
|
360
|
+
const head = hovered ? baseHead + 2 : baseHead;
|
|
361
|
+
ctx.save();
|
|
362
|
+
if (hovered) {
|
|
363
|
+
ctx.shadowColor = colors.playhead;
|
|
364
|
+
ctx.shadowBlur = 6;
|
|
365
|
+
}
|
|
366
|
+
ctx.fillStyle = colors.playhead;
|
|
367
|
+
ctx.beginPath();
|
|
368
|
+
ctx.moveTo(x - head, 0);
|
|
369
|
+
ctx.lineTo(x + head, 0);
|
|
370
|
+
ctx.lineTo(x, head);
|
|
371
|
+
ctx.closePath();
|
|
372
|
+
ctx.fill();
|
|
373
|
+
ctx.restore();
|
|
374
|
+
}
|
|
375
|
+
// ── Marquee (box-select) ──
|
|
376
|
+
if (marquee && (marquee.width > 0 || marquee.height > 0)) {
|
|
377
|
+
ctx.save();
|
|
378
|
+
ctx.globalAlpha = 0.12;
|
|
379
|
+
ctx.fillStyle = colors.keyframeSelected;
|
|
380
|
+
ctx.fillRect(marquee.x, marquee.y, marquee.width, marquee.height);
|
|
381
|
+
ctx.globalAlpha = 1;
|
|
382
|
+
ctx.strokeStyle = colors.keyframeSelected;
|
|
383
|
+
ctx.lineWidth = 1;
|
|
384
|
+
ctx.strokeRect(marquee.x + 0.5, marquee.y + 0.5, Math.max(0, marquee.width - 1), Math.max(0, marquee.height - 1));
|
|
385
|
+
ctx.restore();
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
export { drawTimeline };
|
|
390
|
+
//# sourceMappingURL=timelineDrawing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timelineDrawing.js","sources":["src/components/editor/Timeline/timelineDrawing.ts"],"sourcesContent":["import { evaluateCurve } from '@/components/controls/CurveEditor';\n\nimport { frameToX, valueInset, valueToY, xToFrame } from './timelineCoords';\n\nimport type {\n TimelineDrawInfo,\n TimelineTrack,\n TimelineView,\n} from './Timeline.types';\nimport type { TimelineRow } from './timelineLayout';\nimport type { ViewportSize } from '@/components/primitives/viewport';\nimport type { CurveData } from '@/types/keyframe';\n\nexport interface TimelineDrawColors {\n background: string;\n gridLine: string;\n rulerText: string;\n rowSeparator: string;\n keyframe: string;\n keyframeSelected: string;\n keyframeStroke: string;\n playhead: string;\n groupHeader: string;\n}\n\nexport interface TimelineDrawInput {\n ctx: CanvasRenderingContext2D;\n /** Track-area size in CSS pixels (caller has already DPR-scaled the ctx). */\n size: ViewportSize;\n view: TimelineView;\n startFrame: number;\n endFrame: number;\n fps: number;\n frame: number;\n /** Pre-computed rows (group headers + track lanes), in draw order. */\n rows: ReadonlyArray<TimelineRow>;\n scrollTop: number;\n /** Height of the top ruler band in CSS px (0 when hidden). */\n rulerHeight: number;\n /** Height of the dedicated loop strip directly below the ruler (0 = off). */\n loopStripHeight?: number;\n /** Visual style for the loop region edges. @default 'edges' */\n loopHandles?: 'edges' | 'brackets';\n showPlayhead: boolean;\n colors: TimelineDrawColors;\n /** Canvas font string for ruler labels, e.g. `10px Inter, sans-serif`. */\n font: string;\n formatTime: (frame: number, fps: number) => string;\n isSelected: (trackId: string, keyframeId: string) => boolean;\n /** Whether a given keyframe is hovered (pointer-over, no active drag). */\n isHovered?: (trackId: string, keyframeId: string) => boolean;\n /** Whether the playhead is currently pointer-hovered (renders a glow). */\n playheadHovered?: boolean;\n /**\n * When provided, draws an axis line + tick labels at the start (or end) of\n * each graph / expanded lane. Used by the `<Timeline.TrackScale />` slot.\n */\n trackScale?: {\n position: 'start' | 'end';\n format: (value: number) => string;\n showMidpoint: boolean;\n gridlines: boolean;\n color?: string;\n /** Lanes shorter than this (CSS px) skip the scale to avoid label overlap. */\n minLaneHeight: number;\n };\n renderOverlay?: (\n ctx: CanvasRenderingContext2D,\n info: TimelineDrawInfo\n ) => void;\n /** Active marquee rectangle (box-select) in track-area px, or null. */\n marquee?: { x: number; y: number; width: number; height: number } | null;\n /** Resolved loop region highlighted on the ruler + track area, or null. */\n loopRegion?: { startFrame: number; endFrame: number } | null;\n /** Which loop part is hovered (brightens that edge / body), or null. */\n loopHover?: 'start' | 'end' | 'body' | null;\n}\n\nconst KEYFRAME_RADIUS = 4;\nconst MIN_LABEL_PX = 72;\n\n/** Smallest \"nice\" step (1/2/5 × 10ⁿ, ≥ 1) at least as large as `value`. */\nfunction niceFrameStep(value: number): number {\n if (value <= 1) return 1;\n const exp = Math.floor(Math.log10(value));\n const base = Math.pow(10, exp);\n // `f` is in [1, 10] by construction; pick the next multiple in {1,2,5,10}.\n const f = value / base;\n const m = f <= 1 ? 1 : f <= 2 ? 2 : f <= 5 ? 5 : 10;\n return m * base;\n}\n\nfunction diamondPath(\n ctx: CanvasRenderingContext2D,\n cx: number,\n cy: number,\n r: number\n): void {\n ctx.beginPath();\n ctx.moveTo(cx, cy - r);\n ctx.lineTo(cx + r, cy);\n ctx.lineTo(cx, cy + r);\n ctx.lineTo(cx - r, cy);\n ctx.closePath();\n}\n\n/** Graph-mode lane: the track's value curve + keyframe points (+ tangents when selected). */\nfunction drawGraphLane(\n input: TimelineDrawInput,\n track: TimelineTrack,\n top: number,\n rowH: number,\n accent: string,\n range: readonly [number, number]\n): void {\n const { ctx, size, view, startFrame, endFrame, colors, isSelected } = input;\n const isHovered = input.isHovered ?? ((): boolean => false);\n\n // ── Track scale (axis line + min/max [+ midpoint] labels, optional gridlines)\n // Skipped on short lanes (e.g. a collapsed graph-mode track) so the labels\n // never overlap into an unreadable blob.\n if (input.trackScale && rowH >= input.trackScale.minLaneHeight) {\n const { position, format, showMidpoint, gridlines } = input.trackScale;\n const scaleColor = input.trackScale.color ?? colors.rulerText;\n const isStart = position === 'start';\n const inset = valueInset(rowH);\n const axisX = isStart ? 6 : size.width - 6;\n const lineX = Math.round(axisX) + 0.5;\n const yTop = top + inset;\n const yBot = top + rowH - inset;\n const yMid = (yTop + yBot) / 2;\n const midValue = (range[0] + range[1]) / 2;\n const ticks: Array<{\n y: number;\n value: number;\n baseline: CanvasTextBaseline;\n }> = [\n { y: yTop, value: range[1], baseline: 'top' },\n { y: yBot, value: range[0], baseline: 'bottom' },\n ];\n if (showMidpoint) {\n ticks.push({ y: yMid, value: midValue, baseline: 'middle' });\n }\n\n ctx.save();\n ctx.strokeStyle = scaleColor;\n ctx.fillStyle = scaleColor;\n ctx.font = input.font;\n ctx.lineWidth = 1;\n\n // Gridlines first so the axis + curve draw on top.\n if (gridlines) {\n ctx.save();\n ctx.globalAlpha = 0.18;\n ctx.setLineDash([2, 3]);\n ctx.beginPath();\n for (const tick of ticks) {\n const y = Math.round(tick.y) + 0.5;\n ctx.moveTo(0, y);\n ctx.lineTo(size.width, y);\n }\n ctx.stroke();\n ctx.setLineDash([]);\n ctx.restore();\n }\n\n // Axis line.\n ctx.globalAlpha = 0.7;\n ctx.beginPath();\n ctx.moveTo(lineX, yTop);\n ctx.lineTo(lineX, yBot);\n ctx.stroke();\n\n // Ticks + labels.\n const tickLen = 3;\n const tickInside = isStart ? lineX + tickLen : lineX - tickLen;\n const labelX = isStart ? lineX + tickLen + 3 : lineX - tickLen - 3;\n ctx.textAlign = isStart ? 'left' : 'right';\n for (const tick of ticks) {\n const y = Math.round(tick.y) + 0.5;\n ctx.beginPath();\n ctx.moveTo(lineX, y);\n ctx.lineTo(tickInside, y);\n ctx.stroke();\n ctx.textBaseline = tick.baseline;\n ctx.fillText(format(tick.value), labelX, tick.y);\n }\n ctx.restore();\n }\n const curve: CurveData = {\n keyframes: track.keyframes,\n domainX: [startFrame, endFrame],\n domainY: [range[0], range[1]],\n ...(track.infinity?.pre ? { preInfinity: track.infinity.pre } : {}),\n ...(track.infinity?.post ? { postInfinity: track.infinity.post } : {}),\n };\n const toX = (f: number): number => frameToX(f, view, size.width);\n\n if (track.keyframes.length > 0) {\n ctx.strokeStyle = accent;\n ctx.lineWidth = 1.5;\n ctx.beginPath();\n const samples = Math.max(2, Math.ceil(size.width / 3));\n // Visual safety net: clamp every sampled curve value to the track's\n // range so the line cannot escape the lane even if the data was loaded\n // with control points outside the range (the canonical guarantee comes\n // from clamping handles in `setKeyframeTangent`, but we still clip here\n // so legacy / unconstrained data renders cleanly).\n const lo = range[0];\n const hi = range[1];\n for (let s = 0; s <= samples; s += 1) {\n const px = (s / samples) * size.width;\n const raw = evaluateCurve(curve, xToFrame(px, view, size.width));\n const value = raw < lo ? lo : raw > hi ? hi : raw;\n const py = valueToY(value, range, top, rowH);\n if (s === 0) ctx.moveTo(px, py);\n else ctx.lineTo(px, py);\n }\n ctx.stroke();\n }\n\n // ── Tangent handles on the selected keyframe (CurveEditor-parity styling)\n for (const kf of track.keyframes) {\n if (kf.id === undefined || !isSelected(track.id, kf.id)) continue;\n if (kf.tangentMode === 'linear' || kf.tangentMode === 'step') continue;\n const x = toX(kf.x);\n if (x < -KEYFRAME_RADIUS * 4 || x > size.width + KEYFRAME_RADIUS * 4)\n continue;\n const y = valueToY(kf.y, range, top, rowH);\n const isAuto = kf.tangentMode === 'auto';\n const lineAlpha = isAuto ? 0.4 : 0.7;\n const dotRadius = isAuto ? 3 : 4;\n\n const drawHandle = (hx: number, hy: number): void => {\n ctx.save();\n ctx.globalAlpha = lineAlpha;\n ctx.strokeStyle = colors.rulerText;\n ctx.lineWidth = 1;\n ctx.setLineDash([3, 3]);\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(hx, hy);\n ctx.stroke();\n ctx.setLineDash([]);\n ctx.globalAlpha = 1;\n ctx.fillStyle = colors.rulerText;\n ctx.beginPath();\n ctx.arc(hx, hy, dotRadius, 0, Math.PI * 2);\n ctx.fill();\n ctx.restore();\n };\n\n drawHandle(\n toX(kf.x + kf.handleIn.x),\n valueToY(kf.y + kf.handleIn.y, range, top, rowH)\n );\n drawHandle(\n toX(kf.x + kf.handleOut.x),\n valueToY(kf.y + kf.handleOut.y, range, top, rowH)\n );\n }\n\n // ── Keyframe points (sized by selected / hovered state)\n for (const kf of track.keyframes) {\n const x = toX(kf.x);\n if (x < -KEYFRAME_RADIUS * 2 || x > size.width + KEYFRAME_RADIUS * 2)\n continue;\n const y = valueToY(kf.y, range, top, rowH);\n const selected = kf.id !== undefined && isSelected(track.id, kf.id);\n const hovered = kf.id !== undefined && isHovered(track.id, kf.id);\n const radius = hovered\n ? KEYFRAME_RADIUS + 2\n : selected\n ? KEYFRAME_RADIUS + 1\n : KEYFRAME_RADIUS - 0.5;\n\n ctx.beginPath();\n ctx.arc(x, y, radius, 0, Math.PI * 2);\n ctx.fillStyle = selected ? colors.keyframeSelected : accent;\n ctx.fill();\n ctx.lineWidth = selected ? 1.5 : 1;\n ctx.strokeStyle = colors.keyframeStroke;\n ctx.stroke();\n }\n}\n\n/**\n * Render a full dope-sheet frame: background → gridlines → ruler → track rows\n * → keyframes → caller `renderOverlay` → playhead. The caller is responsible\n * for DPR scaling on `ctx` before invoking.\n */\nexport function drawTimeline(input: TimelineDrawInput): void {\n const {\n ctx,\n size,\n view,\n startFrame,\n endFrame,\n fps,\n frame,\n rows,\n scrollTop,\n rulerHeight,\n showPlayhead,\n loopStripHeight = 0,\n loopHandles = 'edges',\n colors,\n font,\n formatTime,\n isSelected,\n renderOverlay,\n marquee,\n loopRegion,\n loopHover,\n } = input;\n\n const toX = (f: number): number => frameToX(f, view, size.width);\n\n ctx.clearRect(0, 0, size.width, size.height);\n ctx.fillStyle = colors.background;\n ctx.fillRect(0, 0, size.width, size.height);\n\n // ── Gridlines + ruler ticks ──\n const span = Math.max(1e-6, view.endFrame - view.startFrame);\n const framesPerPixel = span / Math.max(1, size.width);\n const step = niceFrameStep(framesPerPixel * MIN_LABEL_PX);\n const firstTick = Math.ceil(view.startFrame / step) * step;\n\n const chromeHeight = rulerHeight + loopStripHeight;\n\n ctx.lineWidth = 1;\n ctx.strokeStyle = colors.gridLine;\n ctx.beginPath();\n for (let f = firstTick; f <= view.endFrame; f += step) {\n const x = Math.round(toX(f)) + 0.5;\n ctx.moveTo(x, chromeHeight);\n ctx.lineTo(x, size.height);\n }\n ctx.stroke();\n\n if (rulerHeight > 0) {\n ctx.fillStyle = colors.rulerText;\n ctx.font = font;\n ctx.textBaseline = 'middle';\n ctx.textAlign = 'left';\n for (let f = firstTick; f <= view.endFrame; f += step) {\n const x = Math.round(toX(f));\n ctx.fillStyle = colors.gridLine;\n ctx.fillRect(x, rulerHeight - 5, 1, 5);\n ctx.fillStyle = colors.rulerText;\n ctx.fillText(formatTime(f, fps), x + 3, rulerHeight / 2);\n }\n ctx.fillStyle = colors.rowSeparator;\n ctx.fillRect(0, rulerHeight - 1, size.width, 1);\n }\n\n // ── Loop strip background (when enabled) ──\n if (loopStripHeight > 0) {\n ctx.save();\n ctx.fillStyle = colors.gridLine;\n ctx.globalAlpha = 0.35;\n ctx.fillRect(0, rulerHeight, size.width, loopStripHeight);\n ctx.globalAlpha = 1;\n ctx.fillStyle = colors.rowSeparator;\n ctx.fillRect(0, chromeHeight - 1, size.width, 1);\n ctx.restore();\n }\n\n // ── Loop region ──\n if (loopRegion) {\n const lx = toX(loopRegion.startFrame);\n const rx = toX(loopRegion.endFrame);\n ctx.save();\n ctx.fillStyle = colors.keyframeSelected;\n // Body fill (brighter when the body is hovered, hinting it's draggable).\n ctx.globalAlpha = loopHover === 'body' ? 0.12 : 0.06;\n ctx.fillRect(\n lx,\n chromeHeight,\n rx - lx,\n Math.max(0, size.height - chromeHeight)\n );\n if (rulerHeight > 0) {\n ctx.globalAlpha = loopHover === 'body' ? 0.3 : 0.22;\n ctx.fillRect(lx, 0, rx - lx, rulerHeight);\n }\n if (loopStripHeight > 0) {\n ctx.globalAlpha = loopHover === 'body' ? 0.45 : 0.32;\n ctx.fillRect(lx, rulerHeight, rx - lx, loopStripHeight);\n }\n // Edges — `edges` style draws full-height bars; `brackets` style draws\n // `[ ]` markers in the chrome with serifs at top and bottom, no\n // full-height bars.\n ctx.globalAlpha = 1;\n const startW = loopHover === 'start' ? 4 : 2;\n const endW = loopHover === 'end' ? 4 : 2;\n if (loopHover === 'start' || loopHover === 'end') {\n ctx.shadowColor = colors.keyframeSelected;\n ctx.shadowBlur = 6;\n }\n if (loopHandles === 'brackets') {\n const serif = 8;\n const serifH = 2;\n // start `[`\n ctx.fillRect(lx, 0, startW, chromeHeight);\n ctx.fillRect(lx, 0, serif, serifH);\n ctx.fillRect(lx, chromeHeight - serifH, serif, serifH);\n // end `]`\n ctx.fillRect(rx - endW, 0, endW, chromeHeight);\n ctx.fillRect(rx - serif, 0, serif, serifH);\n ctx.fillRect(rx - serif, chromeHeight - serifH, serif, serifH);\n } else {\n ctx.fillRect(lx, 0, startW, size.height);\n ctx.fillRect(rx - endW, 0, endW, size.height);\n }\n ctx.restore();\n }\n\n // ── Track rows + keyframes (clipped to the area below the chrome) ──\n ctx.save();\n ctx.beginPath();\n ctx.rect(\n 0,\n chromeHeight,\n size.width,\n Math.max(0, size.height - chromeHeight)\n );\n ctx.clip();\n\n for (const row of rows) {\n const top = chromeHeight + row.top - scrollTop;\n // Virtualize: skip rows scrolled out of the track area.\n if (top + row.height < chromeHeight || top > size.height) continue;\n\n if (row.kind === 'group') {\n ctx.fillStyle = colors.groupHeader;\n ctx.fillRect(0, top, size.width, row.height);\n ctx.fillStyle = colors.rowSeparator;\n ctx.fillRect(0, top + row.height - 1, size.width, 1);\n continue;\n }\n\n const track = row.track;\n const rowH = row.height;\n ctx.fillStyle = colors.rowSeparator;\n ctx.fillRect(0, top + rowH - 1, size.width, 1);\n\n const accent = track.color ?? colors.keyframe;\n if (row.graph) {\n drawGraphLane(input, track, top, rowH, accent, row.range);\n continue;\n }\n\n const centerY = top + rowH / 2;\n const hoveredAt = input.isHovered ?? ((): boolean => false);\n for (const kf of track.keyframes) {\n const x = toX(kf.x);\n if (x < -KEYFRAME_RADIUS * 2 || x > size.width + KEYFRAME_RADIUS * 2)\n continue;\n const selected = kf.id !== undefined && isSelected(track.id, kf.id);\n const hovered = kf.id !== undefined && hoveredAt(track.id, kf.id);\n const radius = hovered\n ? KEYFRAME_RADIUS + 2\n : selected\n ? KEYFRAME_RADIUS + 1\n : KEYFRAME_RADIUS;\n diamondPath(ctx, x, centerY, radius);\n ctx.fillStyle = selected ? colors.keyframeSelected : accent;\n ctx.fill();\n ctx.lineWidth = selected ? 1.5 : 1;\n ctx.strokeStyle = colors.keyframeStroke;\n ctx.stroke();\n }\n }\n\n if (renderOverlay) {\n const info: TimelineDrawInfo = {\n size,\n view,\n startFrame,\n endFrame,\n fps,\n frame,\n frameToX: toX,\n xToFrame: (x: number): number => xToFrame(x, view, size.width),\n };\n ctx.save();\n renderOverlay(ctx, info);\n ctx.restore();\n }\n\n ctx.restore();\n\n // ── Playhead ──\n if (showPlayhead) {\n const x = Math.round(toX(frame)) + 0.5;\n const hovered = input.playheadHovered === true;\n ctx.save();\n if (hovered) {\n ctx.shadowColor = colors.playhead;\n ctx.shadowBlur = 6;\n }\n ctx.strokeStyle = colors.playhead;\n ctx.lineWidth = hovered ? 1.5 : 1;\n ctx.beginPath();\n ctx.moveTo(x, 0);\n ctx.lineTo(x, size.height);\n ctx.stroke();\n ctx.restore();\n\n // Top handle (downward triangle in the ruler band) — bigger on hover so\n // the user can clearly see the grabbable head.\n const baseHead = Math.max(4, Math.min(7, rulerHeight - 2)) || 6;\n const head = hovered ? baseHead + 2 : baseHead;\n ctx.save();\n if (hovered) {\n ctx.shadowColor = colors.playhead;\n ctx.shadowBlur = 6;\n }\n ctx.fillStyle = colors.playhead;\n ctx.beginPath();\n ctx.moveTo(x - head, 0);\n ctx.lineTo(x + head, 0);\n ctx.lineTo(x, head);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n }\n\n // ── Marquee (box-select) ──\n if (marquee && (marquee.width > 0 || marquee.height > 0)) {\n ctx.save();\n ctx.globalAlpha = 0.12;\n ctx.fillStyle = colors.keyframeSelected;\n ctx.fillRect(marquee.x, marquee.y, marquee.width, marquee.height);\n ctx.globalAlpha = 1;\n ctx.strokeStyle = colors.keyframeSelected;\n ctx.lineWidth = 1;\n ctx.strokeRect(\n marquee.x + 0.5,\n marquee.y + 0.5,\n Math.max(0, marquee.width - 1),\n Math.max(0, marquee.height - 1)\n );\n ctx.restore();\n }\n}\n"],"names":[],"mappings":"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"}
|