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
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
|
3
4
|
import React, { useRef, useState, useMemo, useCallback, useEffect } from 'react';
|
|
4
|
-
import {
|
|
5
|
+
import { useLatest } from '../../../hooks/useLatest/useLatest.js';
|
|
5
6
|
import { useResizeObserver } from '../../../hooks/useResizeObserver/useResizeObserver.js';
|
|
6
|
-
import {
|
|
7
|
+
import { cx } from '../../../utils/cx.js';
|
|
7
8
|
import { dividerSizeVar, dividerRecipe, containerRecipe } from './SplitPane.css.js';
|
|
8
9
|
|
|
9
10
|
// ---------------------------------------------------------------------------
|
|
@@ -201,24 +202,20 @@ const SplitPane = ({ direction = 'horizontal', panels: panelConfigs = [], sizes:
|
|
|
201
202
|
// Which sizes array to use
|
|
202
203
|
const isControlled = controlledSizes !== undefined;
|
|
203
204
|
const sizes = isControlled ? controlledSizes : internalSizes;
|
|
204
|
-
// Stable reference to panelConfigs for use in effects/callbacks
|
|
205
|
+
// Stable reference to panelConfigs for use in effects/callbacks. The
|
|
206
|
+
// serialized key is the deliberate deep-equality dependency, so panelConfigs
|
|
207
|
+
// itself is intentionally absent from the array.
|
|
205
208
|
const panelConfigsKey = JSON.stringify(panelConfigs);
|
|
209
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
206
210
|
const stablePanelConfigs = useMemo(() => panelConfigs, [panelConfigsKey]);
|
|
207
|
-
// Keep a ref so the ResizeObserver callback always reads latest values
|
|
208
|
-
const latestRef =
|
|
211
|
+
// Keep a ref so the ResizeObserver callback always reads latest values.
|
|
212
|
+
const latestRef = useLatest({
|
|
209
213
|
panelCount,
|
|
210
214
|
dividerSize,
|
|
211
215
|
direction,
|
|
212
216
|
isControlled,
|
|
213
217
|
panelConfigs: stablePanelConfigs,
|
|
214
218
|
});
|
|
215
|
-
latestRef.current = {
|
|
216
|
-
panelCount,
|
|
217
|
-
dividerSize,
|
|
218
|
-
direction,
|
|
219
|
-
isControlled,
|
|
220
|
-
panelConfigs: stablePanelConfigs,
|
|
221
|
-
};
|
|
222
219
|
// -----------------------------------------------------------------------
|
|
223
220
|
// Initial size calculation + ResizeObserver
|
|
224
221
|
// -----------------------------------------------------------------------
|
|
@@ -246,7 +243,8 @@ const SplitPane = ({ direction = 'horizontal', panels: panelConfigs = [], sizes:
|
|
|
246
243
|
return reconcileSizesToAvailableSpace(computeInitialSizes(count, cfgs, availableSpace), cfgs, availableSpace, collapsed);
|
|
247
244
|
});
|
|
248
245
|
}
|
|
249
|
-
|
|
246
|
+
// latestRef is a stable useLatest ref; listed to satisfy the rule.
|
|
247
|
+
}, [latestRef]);
|
|
250
248
|
const getAvailableSpace = useCallback(() => {
|
|
251
249
|
const container = containerRef.current;
|
|
252
250
|
if (!container || panelCount < 2)
|
|
@@ -393,7 +391,7 @@ const SplitPane = ({ direction = 'horizontal', panels: panelConfigs = [], sizes:
|
|
|
393
391
|
const handlePointerUp = useCallback((_dividerIndex, e) => {
|
|
394
392
|
e.target.releasePointerCapture(e.pointerId);
|
|
395
393
|
setDraggingIndex(null);
|
|
396
|
-
if (isControlled
|
|
394
|
+
if (isControlled) {
|
|
397
395
|
onResizeEnd?.(controlledSizes);
|
|
398
396
|
}
|
|
399
397
|
else {
|
|
@@ -533,12 +531,27 @@ const SplitPane = ({ direction = 'horizontal', panels: panelConfigs = [], sizes:
|
|
|
533
531
|
if (i < panelCount - 1) {
|
|
534
532
|
const leftSize = sizes[i] ?? 0;
|
|
535
533
|
const leftCfg = panelConfigs[i];
|
|
536
|
-
elements.push(
|
|
534
|
+
elements.push(
|
|
535
|
+
// Focusable window-splitter: a separator with aria-valuenow that the
|
|
536
|
+
// user can move with the keyboard is an interactive separator per the
|
|
537
|
+
// WAI-ARIA window splitter pattern, which jsx-a11y does not model.
|
|
538
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
|
|
539
|
+
jsx("div", { role: "separator",
|
|
540
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
|
|
541
|
+
tabIndex: 0, "aria-orientation": direction === 'horizontal' ? 'vertical' : 'horizontal', "aria-valuenow": Math.round(leftSize), "aria-valuemin": leftCfg?.minSize ?? 0, "aria-valuemax": leftCfg?.maxSize ?? undefined, "aria-label": "Panel divider", "data-testid": testId ? `${testId}-divider-${i}` : undefined, className: dividerRecipe({
|
|
537
542
|
direction,
|
|
538
543
|
isDragging: draggingIndex === i || undefined,
|
|
539
544
|
}), style: assignInlineVars({
|
|
540
545
|
[dividerSizeVar]: `${dividerSize}px`,
|
|
541
|
-
}), onPointerDown: e =>
|
|
546
|
+
}), onPointerDown: e => {
|
|
547
|
+
handlePointerDown(i, e);
|
|
548
|
+
}, onPointerMove: e => {
|
|
549
|
+
handlePointerMove(i, e);
|
|
550
|
+
}, onPointerUp: e => {
|
|
551
|
+
handlePointerUp(i, e);
|
|
552
|
+
}, onKeyDown: e => {
|
|
553
|
+
handleKeyDown(i, e);
|
|
554
|
+
} }, `divider-${i}`));
|
|
542
555
|
}
|
|
543
556
|
});
|
|
544
557
|
return (jsx("div", { ref: setContainerRef, className: cx(containerRecipe({ direction }), className), "data-testid": testId, style: style, ...htmlProps, children: elements }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SplitPane.js","sources":["../../../../../../src/components/layout/SplitPane/SplitPane.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAmBA;AACA;AACA;AAEA;;;AAGG;AACH;;AAIiC;;AACM;;AAErC;AACE;AACA;AAAwB;;AAE1B;AACF;AAEA;;AAEG;AACH;AAKE;AAGI;AACA;AAAU;;AAEZ;;;AAKF;AACE;AACE;;;AAEA;;;AAIJ;AACA;AAGA;AACF;AAEA;;AAEG;AACH;;AAMI;AACA;AAAU;;AAEV;;AAEA;;AACA;AACF;AACF;AAEA;;;AAGG;AACH;AAKE;;AAEA;AACE;AACA;AACD;AACD;;AAIA;AACE;AACE;AAA+B;AAC/B;AACF;AAEA;;AAEE;;;;;AAIE;;AACA;;;;AAIF;;;;AAEG;;AAEL;AACE;AAA+B;AAC/B;AACF;AAEA;;AAEE;;;;;AAIE;;AACA;;;;AAIF;;;;AAIJ;AACF;AAEA;;;;AAIG;AACH;;;;;;;;;AAiBE;AACE;;AAEA;AACA;AACA;;AAGA;AACE;;;;AAGA;;;;AAKF;;;;AAGA;;;;AAKJ;AAEA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;AAcG;;AAgBD;;;;;AAMA;AACA;;;AAIA;;AAGA;;;;AAKA;;;;;;;AAQE;AACD;;;;;;AAMC;;;;;AAOF;AACE;;AAQA;;;AAGA;AAEA;;AAGE;;AAEE;;AAEE;AACA;AACE;;AAOF;AACA;;;AAUF;AAMF;;;AAIJ;AACE;AACA;AAAkC;AAElC;;AAGI;;AACmB;;;;;AAMvB;AACF;;;;;;;AAOC;AAED;;;;;;;;AAYI;AACA;AACF;;;;AAQE;AACA;AAEA;;AAEA;;;AAKA;AACA;AAEA;AACA;AACA;AACA;AAEA;;AAGA;AACA;;AAGA;AACA;;;;AAMA;;AAEE;;AAEE;AACE;;;;;AAIF;;;AAIJ;;AAEE;;AAEE;AACE;;;;;AAIF;;;;;;;;;;;;;;AAaF;AACA;;AAGA;;AAEE;;AACK;;AAEL;;;;;;AAOF;;;AAEA;;;AAGA;;;AAEA;;AAEF;AAEA;AACA;AACA;AACA;;;;;;;AAcA;AACF;;;;;;;;AASC;;;;AAQC;AACE;;;AAEA;;;;;;;AAYF;;;;AAMA;AACE;;AACK;AACL;;AACK;;AAEL;AACA;;AAEE;;AAEA;;;AAKA;;AAEE;AACA;AACA;;AAIA;;;;AAGA;AACA;AACA;;;AAGC;AACD;;;;;AAMF;AACA;;;;;;;;;AAUJ;AAEA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACE;;;AAGF;AACE;;;AAGF;AACE;;;AAGF;AACE;;;AAIF;AACA;AACA;;;;;;;AAaA;AACF;;;;;;;;;AAUC;;;;AAOH;AAEI;AACA;;;AAEO;AACJ;;AAEL;;;;;;;;AAaA;;;AAGE;;;;AAKF;;AAWA;;AAEE;AAEA;;AAeM;AACD;AAEC;;;AASV;AAEA;AAWF;AAEA;;"}
|
|
1
|
+
{"version":3,"file":"SplitPane.js","sources":["src/components/layout/SplitPane/SplitPane.tsx"],"sourcesContent":["'use client';\n\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useLatest } from '@/hooks/useLatest';\nimport { useResizeObserver } from '@/hooks/useResizeObserver';\nimport { cx } from '@/utils/cx';\n\nimport {\n containerRecipe,\n dividerRecipe,\n dividerSizeVar,\n} from './SplitPane.css';\n\nimport type { PanelConfig, SplitPaneProps } from './SplitPane.types';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Parse a PanelConfig defaultSize into a pixel value given the available space.\n * Returns `undefined` when no explicit default is given.\n */\nfunction parseDefaultSize(\n defaultSize: PanelConfig['defaultSize'],\n availableSpace: number\n): number | undefined {\n if (defaultSize === undefined) return undefined;\n if (typeof defaultSize === 'number') return defaultSize;\n // Handle percentage strings like \"30%\"\n if (defaultSize.endsWith('%')) {\n const pct = parseFloat(defaultSize);\n if (!Number.isNaN(pct)) return (pct / 100) * availableSpace;\n }\n return undefined;\n}\n\n/**\n * Calculate initial sizes from panel configs and available space.\n */\nfunction computeInitialSizes(\n panelCount: number,\n panels: PanelConfig[],\n availableSpace: number\n): number[] {\n const sizes: (number | undefined)[] = Array.from(\n { length: panelCount },\n (_, i) => {\n const cfg = panels[i];\n if (!cfg) return undefined;\n return parseDefaultSize(cfg.defaultSize, availableSpace);\n }\n );\n\n let allocated = 0;\n let unspecifiedCount = 0;\n for (let i = 0; i < panelCount; i++) {\n if (sizes[i] !== undefined) {\n allocated += sizes[i] as number;\n } else {\n unspecifiedCount++;\n }\n }\n\n const remaining = Math.max(0, availableSpace - allocated);\n const perUnspecified =\n unspecifiedCount > 0 ? remaining / unspecifiedCount : 0;\n\n return sizes.map(s => s ?? perUnspecified);\n}\n\n/**\n * Clamp sizes to min/max constraints in the panel configs.\n */\nfunction clampSizes(\n sizes: number[],\n panels: PanelConfig[],\n collapsed?: Set<number>\n): number[] {\n return sizes.map((size, i) => {\n const cfg = panels[i];\n if (!cfg) return size;\n let clamped = size;\n if (cfg.minSize !== undefined && !collapsed?.has(i))\n clamped = Math.max(clamped, cfg.minSize);\n if (cfg.maxSize !== undefined) clamped = Math.min(clamped, cfg.maxSize);\n return clamped;\n });\n}\n\n/**\n * Snap panel sizes to whole pixels while preserving total width/height.\n * This avoids sub-pixel rounding gaps (often visible as a 1-2px seam).\n */\nfunction snapSizesToWholePixels(\n sizes: number[],\n panels: PanelConfig[],\n availableSpace: number\n): number[] {\n const targetTotal = Math.max(0, Math.round(availableSpace));\n const floored = sizes.map(size => Math.max(0, Math.floor(size)));\n const fractions = sizes.map((size, i) => ({\n index: i,\n fraction: Math.max(0, size - (floored[i] ?? 0)),\n }));\n const snapped = [...floored];\n\n let delta = targetTotal - snapped.reduce((sum, size) => sum + size, 0);\n\n if (delta > 0) {\n const growOrder = [...fractions].sort((a, b) => {\n if (b.fraction !== a.fraction) return b.fraction - a.fraction;\n return b.index - a.index;\n });\n\n while (delta > 0) {\n let changed = false;\n for (const { index } of growOrder) {\n if (delta <= 0) break;\n const max = panels[index]?.maxSize ?? Infinity;\n const current = snapped[index] ?? 0;\n if (current + 1 > max) continue;\n snapped[index] = current + 1;\n delta -= 1;\n changed = true;\n }\n if (!changed) break;\n }\n } else if (delta < 0) {\n delta = -delta;\n const shrinkOrder = [...fractions].sort((a, b) => {\n if (a.fraction !== b.fraction) return a.fraction - b.fraction;\n return b.index - a.index;\n });\n\n while (delta > 0) {\n let changed = false;\n for (const { index } of shrinkOrder) {\n if (delta <= 0) break;\n const min = panels[index]?.minSize ?? 0;\n const current = snapped[index] ?? 0;\n if (current - 1 < min) continue;\n snapped[index] = current - 1;\n delta -= 1;\n changed = true;\n }\n if (!changed) break;\n }\n }\n\n return snapped;\n}\n\n/**\n * Ensures panel sizes fill the available space exactly.\n * Handles small floating-point drift and rounding leftovers by distributing\n * the remaining pixels across panels that can still grow/shrink.\n */\nfunction reconcileSizesToAvailableSpace(\n sizes: number[],\n panels: PanelConfig[],\n availableSpace: number,\n collapsed?: Set<number>\n): number[] {\n const adjusted = clampSizes(sizes, panels, collapsed);\n let remaining =\n availableSpace - adjusted.reduce((sum, size) => sum + size, 0);\n\n // Ignore tiny floating-point noise.\n if (Math.abs(remaining) < 0.01) {\n return snapSizesToWholePixels(adjusted, panels, availableSpace);\n }\n\n // Try to consume remainder from right to left so right-most panel\n // naturally absorbs visual rounding leftovers.\n for (let i = adjusted.length - 1; i >= 0; i--) {\n if (Math.abs(remaining) < 0.01) break;\n\n const cfg = panels[i];\n const min = cfg?.minSize ?? 0;\n const max = cfg?.maxSize ?? Infinity;\n const current = adjusted[i] ?? 0;\n\n if (remaining > 0) {\n const room = max - current;\n if (room <= 0) continue;\n const delta = Math.min(room, remaining);\n adjusted[i] = current + delta;\n remaining -= delta;\n continue;\n }\n\n const room = current - min;\n if (room <= 0) continue;\n const delta = Math.min(room, -remaining);\n adjusted[i] = current - delta;\n remaining += delta;\n }\n\n return snapSizesToWholePixels(adjusted, panels, availableSpace);\n}\n\nconst KEYBOARD_STEP = 10;\nconst KEYBOARD_LARGE_STEP = 50;\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * A resizable split-pane layout component.\n *\n * Divides space between two or more child panels with draggable dividers.\n * Supports horizontal and vertical directions, controlled and uncontrolled\n * modes, collapsible panels, and keyboard-accessible dividers.\n *\n * @example\n * ```tsx\n * <SplitPane direction=\"horizontal\">\n * <SplitPanePanel>Left</SplitPanePanel>\n * <SplitPanePanel>Right</SplitPanePanel>\n * </SplitPane>\n * ```\n */\nexport const SplitPane: React.FC<SplitPaneProps> = ({\n direction = 'horizontal',\n panels: panelConfigs = [],\n sizes: controlledSizes,\n dividerSize = 4,\n children,\n onResize,\n onResizeEnd,\n onCollapseChange,\n className,\n testId,\n style,\n ref,\n ...htmlProps\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [internalSizes, setInternalSizes] = useState<number[]>([]);\n const [draggingIndex, setDraggingIndex] = useState<number | null>(null);\n const collapsedRef = useRef<Set<number>>(new Set());\n\n // Refs for drag tracking\n const dragStartPos = useRef(0);\n const dragStartSizes = useRef<number[]>([]);\n\n // Extract panel children\n const panelChildren = React.Children.toArray(children);\n const panelCount = panelChildren.length;\n\n // Which sizes array to use\n const isControlled = controlledSizes !== undefined;\n const sizes = isControlled ? controlledSizes : internalSizes;\n\n // Stable reference to panelConfigs for use in effects/callbacks. The\n // serialized key is the deliberate deep-equality dependency, so panelConfigs\n // itself is intentionally absent from the array.\n const panelConfigsKey = JSON.stringify(panelConfigs);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const stablePanelConfigs = useMemo(() => panelConfigs, [panelConfigsKey]);\n\n // Keep a ref so the ResizeObserver callback always reads latest values.\n const latestRef = useLatest({\n panelCount,\n dividerSize,\n direction,\n isControlled,\n panelConfigs: stablePanelConfigs,\n });\n\n // -----------------------------------------------------------------------\n // Initial size calculation + ResizeObserver\n // -----------------------------------------------------------------------\n\n const recalculate = useCallback(() => {\n const container = containerRef.current;\n const {\n panelCount: count,\n dividerSize: dSize,\n direction: dir,\n isControlled: ctrl,\n panelConfigs: cfgs,\n } = latestRef.current;\n if (!container || count < 2) return;\n\n const totalDividerSpace = (count - 1) * dSize;\n const containerDim =\n dir === 'horizontal' ? container.clientWidth : container.clientHeight;\n const availableSpace = Math.max(0, containerDim - totalDividerSpace);\n\n if (!ctrl) {\n const collapsed = collapsedRef.current;\n setInternalSizes(prev => {\n if (prev.length === count && prev.length > 0) {\n // Proportionally redistribute on container resize\n const prevTotal = prev.reduce((a, b) => a + b, 0);\n if (prevTotal <= 0) {\n return reconcileSizesToAvailableSpace(\n computeInitialSizes(count, cfgs, availableSpace),\n cfgs,\n availableSpace,\n collapsed\n );\n }\n const ratio = availableSpace / prevTotal;\n const newSizes = prev.map((s, i) =>\n collapsed.has(i) ? 0 : s * ratio\n );\n return reconcileSizesToAvailableSpace(\n newSizes,\n cfgs,\n availableSpace,\n collapsed\n );\n }\n return reconcileSizesToAvailableSpace(\n computeInitialSizes(count, cfgs, availableSpace),\n cfgs,\n availableSpace,\n collapsed\n );\n });\n }\n // latestRef is a stable useLatest ref; listed to satisfy the rule.\n }, [latestRef]);\n\n const getAvailableSpace = useCallback((): number | null => {\n const container = containerRef.current;\n if (!container || panelCount < 2) return null;\n\n const containerDim =\n direction === 'horizontal'\n ? container.clientWidth\n : container.clientHeight;\n if (containerDim <= 0) return null;\n const totalDividerSpace = (panelCount - 1) * dividerSize;\n return Math.max(0, containerDim - totalDividerSpace);\n }, [direction, dividerSize, panelCount]);\n\n useEffect(() => {\n recalculate();\n }, [\n recalculate,\n panelCount,\n dividerSize,\n direction,\n isControlled,\n stablePanelConfigs,\n ]);\n\n useResizeObserver(containerRef, recalculate);\n\n // -----------------------------------------------------------------------\n // Pointer resize handlers\n // -----------------------------------------------------------------------\n\n const handlePointerDown = useCallback(\n (dividerIndex: number, e: React.PointerEvent<HTMLDivElement>) => {\n e.preventDefault();\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n\n setDraggingIndex(dividerIndex);\n dragStartPos.current = direction === 'horizontal' ? e.clientX : e.clientY;\n dragStartSizes.current = [...sizes];\n },\n [direction, sizes]\n );\n\n const handlePointerMove = useCallback(\n (dividerIndex: number, e: React.PointerEvent<HTMLDivElement>) => {\n if (draggingIndex !== dividerIndex) return;\n\n const currentPos = direction === 'horizontal' ? e.clientX : e.clientY;\n const delta = currentPos - dragStartPos.current;\n\n const startSizes = dragStartSizes.current;\n const leftIndex = dividerIndex;\n const rightIndex = dividerIndex + 1;\n\n const startLeft = startSizes[leftIndex] ?? 0;\n const startRight = startSizes[rightIndex] ?? 0;\n\n const leftCfg = panelConfigs[leftIndex];\n const rightCfg = panelConfigs[rightIndex];\n\n const leftMin = leftCfg?.minSize ?? 0;\n const leftMax = leftCfg?.maxSize ?? Infinity;\n const rightMin = rightCfg?.minSize ?? 0;\n const rightMax = rightCfg?.maxSize ?? Infinity;\n\n const totalSize = startLeft + startRight;\n\n // Raw sizes (unclamped) — used for collapse threshold detection\n const rawLeft = startLeft + delta;\n const rawRight = startRight - delta;\n\n // Clamp to [0, totalSize] to prevent overflow\n let newLeft = Math.max(0, Math.min(totalSize, rawLeft));\n let newRight = totalSize - newLeft;\n\n // Collapse / expand handling\n let leftCollapsed = false;\n let rightCollapsed = false;\n\n if (leftCfg?.collapsible) {\n const threshold = leftCfg.collapseThreshold ?? leftMin / 2;\n if (rawLeft < threshold) {\n leftCollapsed = true;\n if (startLeft > 0) {\n onCollapseChange?.(leftIndex, true);\n }\n } else if (startLeft === 0 && rawLeft >= leftMin) {\n // Expanding from collapsed state\n onCollapseChange?.(leftIndex, false);\n }\n }\n\n if (rightCfg?.collapsible) {\n const threshold = rightCfg.collapseThreshold ?? rightMin / 2;\n if (rawRight < threshold) {\n rightCollapsed = true;\n if (startRight > 0) {\n onCollapseChange?.(rightIndex, true);\n }\n } else if (startRight === 0 && rawRight >= rightMin) {\n // Expanding from collapsed state\n onCollapseChange?.(rightIndex, false);\n }\n }\n\n // Apply collapse or min/max with coupled clamping\n if (leftCollapsed) {\n newLeft = 0;\n newRight = totalSize;\n } else if (rightCollapsed) {\n newRight = 0;\n newLeft = totalSize;\n } else {\n // Clamp left, then recompute right\n newLeft = Math.max(leftMin, Math.min(leftMax, newLeft));\n newRight = totalSize - newLeft;\n\n // If right violates its constraints, clamp it and recompute left\n if (newRight < rightMin) {\n newRight = rightMin;\n newLeft = totalSize - newRight;\n } else if (newRight > rightMax) {\n newRight = rightMax;\n newLeft = totalSize - newRight;\n }\n }\n\n // Update collapsed tracking\n const collapsed = new Set(collapsedRef.current);\n if (leftCollapsed) {\n collapsed.add(leftIndex);\n } else {\n collapsed.delete(leftIndex);\n }\n if (rightCollapsed) {\n collapsed.add(rightIndex);\n } else {\n collapsed.delete(rightIndex);\n }\n collapsedRef.current = collapsed;\n\n const newSizes = [...startSizes];\n newSizes[leftIndex] = newLeft;\n newSizes[rightIndex] = newRight;\n const availableSpace = getAvailableSpace();\n const nextSizes =\n availableSpace !== null && availableSpace > 0\n ? reconcileSizesToAvailableSpace(\n newSizes,\n panelConfigs,\n availableSpace,\n collapsed\n )\n : newSizes;\n\n if (!isControlled) {\n setInternalSizes(nextSizes);\n }\n onResize?.(nextSizes);\n },\n [\n draggingIndex,\n direction,\n getAvailableSpace,\n panelConfigs,\n isControlled,\n onResize,\n onCollapseChange,\n ]\n );\n\n const handlePointerUp = useCallback(\n (_dividerIndex: number, e: React.PointerEvent<HTMLDivElement>) => {\n (e.target as HTMLElement).releasePointerCapture(e.pointerId);\n setDraggingIndex(null);\n\n if (isControlled) {\n onResizeEnd?.(controlledSizes);\n } else {\n onResizeEnd?.(internalSizes);\n }\n },\n [isControlled, controlledSizes, internalSizes, onResizeEnd]\n );\n\n // -----------------------------------------------------------------------\n // Keyboard handler on dividers\n // -----------------------------------------------------------------------\n\n const handleKeyDown = useCallback(\n (dividerIndex: number, e: React.KeyboardEvent<HTMLDivElement>) => {\n const isHorizontal = direction === 'horizontal';\n let delta = 0;\n\n const positiveKey = isHorizontal ? 'ArrowRight' : 'ArrowDown';\n const negativeKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp';\n\n if (e.key === positiveKey) {\n delta = e.shiftKey ? KEYBOARD_LARGE_STEP : KEYBOARD_STEP;\n } else if (e.key === negativeKey) {\n delta = -(e.shiftKey ? KEYBOARD_LARGE_STEP : KEYBOARD_STEP);\n } else if (e.key === 'Enter') {\n // Toggle collapse on the left panel if collapsible\n const leftCfg = panelConfigs[dividerIndex];\n if (leftCfg?.collapsible) {\n e.preventDefault();\n const currentSizes = [...sizes];\n const leftIndex = dividerIndex;\n const rightIndex = dividerIndex + 1;\n\n const curLeft = currentSizes[leftIndex] ?? 0;\n const curRight = currentSizes[rightIndex] ?? 0;\n\n if (curLeft === 0) {\n // Expand: restore to minSize\n const restoreSize = leftCfg.minSize ?? 100;\n currentSizes[leftIndex] = restoreSize;\n currentSizes[rightIndex] = curRight - restoreSize;\n collapsedRef.current = new Set(\n [...collapsedRef.current].filter(i => i !== leftIndex)\n );\n onCollapseChange?.(leftIndex, false);\n } else {\n // Collapse\n currentSizes[rightIndex] = curRight + curLeft;\n currentSizes[leftIndex] = 0;\n collapsedRef.current = new Set([\n ...collapsedRef.current,\n leftIndex,\n ]);\n onCollapseChange?.(leftIndex, true);\n }\n\n if (!isControlled) {\n setInternalSizes(currentSizes);\n }\n onResize?.(currentSizes);\n onResizeEnd?.(currentSizes);\n }\n return;\n } else {\n return;\n }\n\n e.preventDefault();\n\n const leftIndex = dividerIndex;\n const rightIndex = dividerIndex + 1;\n\n const newSizes = [...sizes];\n let left = (newSizes[leftIndex] ?? 0) + delta;\n let right = (newSizes[rightIndex] ?? 0) - delta;\n\n // Clamp\n const leftCfg = panelConfigs[leftIndex];\n const rightCfg = panelConfigs[rightIndex];\n const leftMin = leftCfg?.minSize ?? 0;\n const leftMax = leftCfg?.maxSize ?? Infinity;\n const rightMin = rightCfg?.minSize ?? 0;\n const rightMax = rightCfg?.maxSize ?? Infinity;\n\n if (left < leftMin) {\n right += left - leftMin;\n left = leftMin;\n }\n if (left > leftMax) {\n right += left - leftMax;\n left = leftMax;\n }\n if (right < rightMin) {\n left += right - rightMin;\n right = rightMin;\n }\n if (right > rightMax) {\n left += right - rightMax;\n right = rightMax;\n }\n\n newSizes[leftIndex] = left;\n newSizes[rightIndex] = right;\n const availableSpace = getAvailableSpace();\n const nextSizes =\n availableSpace !== null && availableSpace > 0\n ? reconcileSizesToAvailableSpace(\n newSizes,\n panelConfigs,\n availableSpace\n )\n : newSizes;\n\n if (!isControlled) {\n setInternalSizes(nextSizes);\n }\n onResize?.(nextSizes);\n },\n [\n direction,\n sizes,\n getAvailableSpace,\n panelConfigs,\n isControlled,\n onResize,\n onResizeEnd,\n onCollapseChange,\n ]\n );\n\n // -----------------------------------------------------------------------\n // Merge refs\n // -----------------------------------------------------------------------\n\n const setContainerRef = useCallback(\n (node: HTMLDivElement | null) => {\n containerRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref && typeof ref === 'object') {\n ref.current = node;\n }\n },\n [ref]\n );\n\n // -----------------------------------------------------------------------\n // Render\n // -----------------------------------------------------------------------\n\n const elements: React.ReactNode[] = [];\n\n panelChildren.forEach((child, i) => {\n // Panel wrapper with controlled sizing\n const panelSize = sizes[i] ?? 0;\n const panelStyle: React.CSSProperties = {\n flex: `0 0 ${panelSize}px`,\n overflow: panelSize === 0 ? 'hidden' : undefined,\n [direction === 'horizontal' ? 'width' : 'height']: `${panelSize}px`,\n minWidth: direction === 'horizontal' ? 0 : undefined,\n minHeight: direction === 'vertical' ? 0 : undefined,\n };\n\n elements.push(\n <div\n key={`panel-${i}`}\n style={panelStyle}\n data-splitpane-panel-wrapper=\"\"\n >\n {child}\n </div>\n );\n\n // Add divider between panels\n if (i < panelCount - 1) {\n const leftSize = sizes[i] ?? 0;\n const leftCfg = panelConfigs[i];\n\n elements.push(\n // Focusable window-splitter: a separator with aria-valuenow that the\n // user can move with the keyboard is an interactive separator per the\n // WAI-ARIA window splitter pattern, which jsx-a11y does not model.\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <div\n key={`divider-${i}`}\n role=\"separator\"\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n aria-orientation={\n direction === 'horizontal' ? 'vertical' : 'horizontal'\n }\n aria-valuenow={Math.round(leftSize)}\n aria-valuemin={leftCfg?.minSize ?? 0}\n aria-valuemax={leftCfg?.maxSize ?? undefined}\n aria-label=\"Panel divider\"\n data-testid={testId ? `${testId}-divider-${i}` : undefined}\n className={dividerRecipe({\n direction,\n isDragging: draggingIndex === i || undefined,\n })}\n style={assignInlineVars({\n [dividerSizeVar]: `${dividerSize}px`,\n })}\n onPointerDown={e => {\n handlePointerDown(i, e);\n }}\n onPointerMove={e => {\n handlePointerMove(i, e);\n }}\n onPointerUp={e => {\n handlePointerUp(i, e);\n }}\n onKeyDown={e => {\n handleKeyDown(i, e);\n }}\n />\n );\n }\n });\n\n return (\n <div\n ref={setContainerRef}\n className={cx(containerRecipe({ direction }), className)}\n data-testid={testId}\n style={style}\n {...htmlProps}\n >\n {elements}\n </div>\n );\n};\n\nSplitPane.displayName = 'SplitPane';\n"],"names":[],"mappings":";;;;;;;;;AAuBA;AACA;AACA;AAEA;;;AAGG;AACH;;AAIiC;;AACM;;AAErC;AACE;AACA;AAAwB;;AAE1B;AACF;AAEA;;AAEG;AACH;AAKE;AAGI;AACA;AAAU;;AAEZ;;;AAKF;AACE;AACE;;;AAEA;;;AAIJ;AACA;AAGA;AACF;AAEA;;AAEG;AACH;;AAMI;AACA;AAAU;;AAEV;;AAEA;;AACA;AACF;AACF;AAEA;;;AAGG;AACH;AAKE;;AAEA;AACE;AACA;AACD;AACD;;AAIA;AACE;AACE;AAA+B;AAC/B;AACF;AAEA;;AAEE;;;;;AAIE;;AACA;;;;AAIF;;;;AAEG;;AAEL;AACE;AAA+B;AAC/B;AACF;AAEA;;AAEE;;;;;AAIE;;AACA;;;;AAIF;;;;AAIJ;AACF;AAEA;;;;AAIG;AACH;;;;;;;;;AAiBE;AACE;;AAEA;AACA;AACA;;AAGA;AACE;;;;AAGA;;;;AAKF;;;;AAGA;;;;AAKJ;AAEA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;AAcG;;AAgBD;;;;;AAMA;AACA;;;AAIA;;AAGA;;;;;;;AAQA;;;;;;;AAQE;AACD;;;;AAMD;AACE;;AAQA;;;AAGA;AAEA;;AAGE;;AAEE;;AAEE;AACA;AACE;;AAOF;AACA;;;AAUF;AAMF;;;AAGJ;AAEA;AACE;AACA;AAAkC;AAElC;;AAGI;;AACmB;;;;;AAMvB;AACF;;;;;;;AAOC;AAED;;;;;;;;AAYI;AACA;AACF;;;;AAQE;AACA;AAEA;;AAEA;;;AAKA;AACA;AAEA;AACA;AACA;AACA;AAEA;;AAGA;AACA;;AAGA;AACA;;;;AAMA;;AAEE;;AAEE;AACE;;;;;AAIF;;;AAIJ;;AAEE;;AAEE;AACE;;;;;AAIF;;;;;;;;;;;;;;AAaF;AACA;;AAGA;;AAEE;;AACK;;AAEL;;;;;;AAOF;;;AAEA;;;AAGA;;;AAEA;;AAEF;AAEA;AACA;AACA;AACA;;;;;;;AAcA;AACF;;;;;;;;AASC;;;;;AASG;;;AAEA;;;;;;;AAYF;;;;AAMA;AACE;;AACK;AACL;;AACK;;AAEL;AACA;;AAEE;;AAEA;;;AAKA;;AAEE;AACA;AACA;;AAIA;;;;AAGA;AACA;AACA;;;AAGC;AACD;;;;;AAMF;AACA;;;;;;;;;AAUJ;AAEA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACE;;;AAGF;AACE;;;AAGF;AACE;;;AAGF;AACE;;;AAIF;AACA;AACA;;;;;;;AAaA;AACF;;;;;;;;;AAUC;;;;AAOH;AAEI;AACA;;;AAEO;AACL;;AAEJ;;;;;;;;AAaA;;;AAGE;;;;AAKF;;AAWA;;AAEE;AAEA;;;;;;;;;AAoBM;AACD;AAEC;AACD;AAEC;AACF;AAEE;AACF;AAEE;AACF;AAEE;AACF;;AAIR;AAEA;AAWF;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SplitPanePanel.js","sources":["
|
|
1
|
+
{"version":3,"file":"SplitPanePanel.js","sources":["src/components/layout/SplitPane/SplitPanePanel.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { cx } from '@/utils/cx';\n\nimport { panelStyle } from './SplitPane.css';\n\nimport type { SplitPanePanelProps } from './SplitPane.types';\n\n/**\n * A panel within a SplitPane layout.\n *\n * Simple wrapper that renders its children with `overflow: auto`.\n * The parent SplitPane manages its sizing.\n *\n * @example\n * ```tsx\n * <SplitPane>\n * <SplitPanePanel>Left content</SplitPanePanel>\n * <SplitPanePanel>Right content</SplitPanePanel>\n * </SplitPane>\n * ```\n */\nexport const SplitPanePanel: React.FC<SplitPanePanelProps> = ({\n children,\n className,\n testId,\n style,\n ref,\n ...htmlProps\n}) => {\n return (\n <div\n ref={ref}\n className={cx(panelStyle, className)}\n data-testid={testId}\n data-splitpane-panel=\"\"\n style={style}\n {...htmlProps}\n >\n {children}\n </div>\n );\n};\n\nSplitPanePanel.displayName = 'SplitPanePanel';\n"],"names":[],"mappings":";;;;;AAUA;;;;;;;;;;;;;AAaG;;AASD;AAYF;AAEA;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { cx } from '../../../utils/cx.js';
|
|
4
3
|
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
|
4
|
+
import { cx } from '../../../utils/cx.js';
|
|
5
5
|
import { gapVar, stackRecipe } from './Stack.css.js';
|
|
6
6
|
|
|
7
7
|
/** Base spacing unit in px */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.js","sources":["
|
|
1
|
+
{"version":3,"file":"Stack.js","sources":["src/components/layout/Stack/Stack.tsx"],"sourcesContent":["'use client';\n\n// src/components/layout/Stack/Stack.tsx\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport React from 'react';\n\nimport { cx } from '@/utils/cx';\n\nimport { stackRecipe, gapVar } from './Stack.css';\n\nimport type { BaseComponent } from '@/types/common';\nimport type { Prettify } from '@/types/utilities';\n\n/**\n * Stack direction options\n */\nexport type StackDirection = 'row' | 'column';\n\n/**\n * Stack wrap options\n */\nexport type StackWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\n\n/**\n * Justify content options for main axis alignment\n */\nexport type StackJustify =\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'space-between'\n | 'space-around'\n | 'space-evenly';\n\n/**\n * Align items options for cross axis alignment\n */\nexport type StackAlign =\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'stretch'\n | 'baseline';\n\n/**\n * Spacing multiplier (0-8) based on theme spacing unit\n */\nexport type StackSpacing = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n\nexport interface StackBaseProps extends Omit<BaseComponent, 'children'> {\n /**\n * Stack content - any React elements\n */\n children: React.ReactNode;\n\n /**\n * Stack direction - controls main axis orientation\n * - `row`: Left to right (horizontal)\n * - `column`: Top to bottom (vertical)\n * @default \"column\"\n */\n direction?: StackDirection | undefined;\n\n /**\n * Responsive stack direction\n * Allows different directions at different breakpoints\n * @example direction=\"column\" md=\"row\" // Vertical on mobile, horizontal on desktop\n */\n sm?: StackDirection | undefined;\n md?: StackDirection | undefined;\n lg?: StackDirection | undefined;\n xl?: StackDirection | undefined;\n\n /**\n * Stack wrap behavior\n * - `nowrap`: Items stay on one line (default)\n * - `wrap`: Items wrap to new lines as needed\n * - `wrap-reverse`: Items wrap in reverse order\n * @default \"nowrap\"\n */\n wrap?: StackWrap | undefined;\n\n /**\n * Whether stack should expand to fill available space\n * - For row direction: takes 100% width\n * - For column direction: takes 100% height\n * @default false\n */\n expand?: boolean;\n\n /**\n * Spacing between stack items (multiplier of base spacing unit)\n * - `0`: No spacing (0px)\n * - `1`: 1x base unit (4px)\n * - `2`: 2x base unit (8px)\n * - `3`: 3x base unit (12px)\n * - `4`: 4x base unit (16px)\n * @default 0\n */\n spacing?: StackSpacing | undefined;\n\n /**\n * Custom gap override (CSS value)\n * Overrides spacing prop if provided\n * @example \"16px\", \"1rem\", \"2rem 1rem\"\n */\n customGap?: string | number | undefined;\n\n /**\n * Justify content - distributes space along main axis\n * - `flex-start`: Items packed to start (default)\n * - `flex-end`: Items packed to end\n * - `center`: Items centered\n * - `space-between`: Even space between items\n * - `space-around`: Even space around items\n * - `space-evenly`: Equal space between and around items\n * @default \"flex-start\"\n */\n justify?: StackJustify | undefined;\n\n /**\n * Align items - aligns items along cross axis\n * - `flex-start`: Items align to start of cross axis (default)\n * - `flex-end`: Items align to end of cross axis\n * - `center`: Items centered on cross axis\n * - `stretch`: Items stretch to fill container\n * - `baseline`: Items align to text baseline\n * @default \"flex-start\"\n */\n align?: StackAlign | undefined;\n}\n\n/**\n * Props for the Stack component with prettified type for better IntelliSense\n */\nexport type StackProps = Prettify<StackBaseProps>;\n\n/** Base spacing unit in px */\nconst SPACING_UNIT = 4;\n\n/**\n * Calculate gap value based on spacing multiplier\n */\nconst getGapValue = (\n spacing: StackSpacing,\n customGap?: string | number\n): string => {\n if (customGap !== undefined) {\n return typeof customGap === 'number' ? `${customGap}px` : customGap;\n }\n return `${spacing * SPACING_UNIT}px`;\n};\n\n/**\n * A flexible stacking component for arranging elements vertically or horizontally.\n *\n * Built on flexbox with consistent spacing and alignment options. Perfect for\n * simple layouts where you need to stack elements with controlled spacing.\n * Use Grid or Flex components for more complex layout requirements.\n *\n * @example\n * ```tsx\n * // Basic vertical stack\n * <Stack spacing={2}>\n * <Card>Item 1</Card>\n * <Card>Item 2</Card>\n * <Card>Item 3</Card>\n * </Stack>\n *\n * // Horizontal stack with full width\n * <Stack direction=\"row\" expand spacing={3} justify=\"space-between\">\n * <Button>Cancel</Button>\n * <Button variant=\"filled\">Save</Button>\n * </Stack>\n *\n * // Responsive stack\n * <Stack\n * direction=\"column\"\n * md=\"row\"\n * spacing={2}\n * align=\"center\"\n * >\n * <Logo />\n * <Navigation />\n * <UserMenu />\n * </Stack>\n *\n * // Centered content\n * <Stack\n * direction=\"column\"\n * expand\n * justify=\"center\"\n * align=\"center\"\n * spacing={4}\n * >\n * <Icon />\n * <Title>Welcome</Title>\n * <Button>Get Started</Button>\n * </Stack>\n *\n * // Wrapping horizontal stack\n * <Stack\n * direction=\"row\"\n * wrap=\"wrap\"\n * spacing={2}\n * justify=\"center\"\n * >\n * <Tag>React</Tag>\n * <Tag>TypeScript</Tag>\n * <Tag>CSS</Tag>\n * </Stack>\n * ```\n */\nexport const Stack: React.FC<StackProps> = ({\n children,\n direction = 'column',\n sm,\n md,\n lg,\n xl,\n wrap = 'nowrap',\n expand = false,\n spacing = 0,\n customGap,\n justify = 'flex-start',\n align = 'flex-start',\n className,\n testId,\n style,\n ref,\n ...htmlProps\n}) => {\n const mergedStyle: React.CSSProperties = {\n ...assignInlineVars({\n [gapVar]: getGapValue(spacing, customGap),\n }),\n ...style,\n };\n\n // Build data attributes for responsive direction overrides\n const dataAttrs: Record<string, string> = {};\n if (sm) dataAttrs['data-sm-dir'] = sm;\n if (md) dataAttrs['data-md-dir'] = md;\n if (lg) dataAttrs['data-lg-dir'] = lg;\n if (xl) dataAttrs['data-xl-dir'] = xl;\n if (expand) dataAttrs['data-expand'] = 'true';\n\n return (\n <div\n ref={ref}\n className={cx(\n stackRecipe({\n direction,\n wrap,\n justify,\n align,\n expandRow: expand && direction === 'row' ? true : undefined,\n expandColumn: expand && direction === 'column' ? true : undefined,\n }),\n className\n )}\n data-testid={testId}\n style={mergedStyle}\n {...dataAttrs}\n {...htmlProps}\n >\n {children}\n </div>\n );\n};\n\nStack.displayName = 'Stack';\n"],"names":[],"mappings":";;;;;;AAyIA;AACA;AAEA;;AAEG;AACH;AAIE;AACE;;AAEF;AACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DG;AACI;AAmBL;AACE;;;AAGA;;;;AAKF;AAAQ;AACR;AAAQ;AACR;AAAQ;AACR;AAAQ;AACR;AAAY;;;;;;AAWJ;AACA;AACD;AAWT;AAEA;;"}
|
|
@@ -28,6 +28,10 @@ import '../../primitives/TextArea/TextArea.js';
|
|
|
28
28
|
import { Tooltip } from '../../primitives/Tooltip/Tooltip.js';
|
|
29
29
|
import '../../primitives/VisuallyHidden/VisuallyHidden.js';
|
|
30
30
|
import '../../primitives/canvas/CanvasContainer.js';
|
|
31
|
+
import '../../primitives/viewport/Viewport.js';
|
|
32
|
+
import '../../primitives/viewport/ViewportLayer.js';
|
|
33
|
+
import '../../primitives/viewport/ViewportWorld.js';
|
|
34
|
+
import '../../primitives/viewport/ViewportOverlay.js';
|
|
31
35
|
import { cx } from '../../../utils/cx.js';
|
|
32
36
|
import { breadcrumbEllipsisButtonStyle, breadcrumbEllipsisTextStyle, breadcrumbEllipsisStyle } from './Breadcrumbs.css.js';
|
|
33
37
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbEllipsis.js","sources":["
|
|
1
|
+
{"version":3,"file":"BreadcrumbEllipsis.js","sources":["src/components/navigation/Breadcrumbs/BreadcrumbEllipsis.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { Tooltip } from '@/components/primitives';\nimport { cx } from '@/utils/cx';\n\nimport {\n breadcrumbEllipsisButtonStyle,\n breadcrumbEllipsisStyle,\n breadcrumbEllipsisTextStyle,\n} from './Breadcrumbs.css';\n\nimport type { BreadcrumbEllipsisProps } from './Breadcrumbs.types';\n\n/**\n * Ellipsis placeholder for collapsed breadcrumb segments.\n *\n * @example\n * ```tsx\n * <BreadcrumbEllipsis onClick={expand} tooltip=\"src / components\" />\n * ```\n */\nexport const BreadcrumbEllipsis =\n /*#__PURE__*/ React.memo<BreadcrumbEllipsisProps>(\n ({ onClick, tooltip, className, style, testId, ref, ...rest }) => {\n const ellipsis = onClick ? (\n <button\n type=\"button\"\n className={breadcrumbEllipsisButtonStyle}\n onClick={onClick}\n aria-label=\"Show all breadcrumbs\"\n >\n …\n </button>\n ) : (\n <span className={breadcrumbEllipsisTextStyle}>…</span>\n );\n\n return (\n <li\n ref={ref as React.Ref<HTMLLIElement>}\n className={cx(breadcrumbEllipsisStyle, className)}\n style={style}\n data-testid={testId}\n {...rest}\n >\n {tooltip ? (\n <Tooltip title={tooltip} delay={300}>\n {ellipsis}\n </Tooltip>\n ) : (\n ellipsis\n )}\n </li>\n );\n }\n );\n\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA;;;;;;;AAOG;;AAED;AAEI;;AA8BF;AAGJ;;"}
|
|
@@ -28,6 +28,10 @@ import '../../primitives/TextArea/TextArea.js';
|
|
|
28
28
|
import { Tooltip } from '../../primitives/Tooltip/Tooltip.js';
|
|
29
29
|
import '../../primitives/VisuallyHidden/VisuallyHidden.js';
|
|
30
30
|
import '../../primitives/canvas/CanvasContainer.js';
|
|
31
|
+
import '../../primitives/viewport/Viewport.js';
|
|
32
|
+
import '../../primitives/viewport/ViewportLayer.js';
|
|
33
|
+
import '../../primitives/viewport/ViewportWorld.js';
|
|
34
|
+
import '../../primitives/viewport/ViewportOverlay.js';
|
|
31
35
|
import { cx } from '../../../utils/cx.js';
|
|
32
36
|
import { breadcrumbIconStyle, breadcrumbLabelStyle, breadcrumbContentRecipe, breadcrumbItemStyle } from './Breadcrumbs.css.js';
|
|
33
37
|
|
|
@@ -55,7 +59,7 @@ function getTruncatedLabel(children, maxLength) {
|
|
|
55
59
|
* <BreadcrumbItem isCurrent>Button</BreadcrumbItem>
|
|
56
60
|
* ```
|
|
57
61
|
*/
|
|
58
|
-
const BreadcrumbItem = /*#__PURE__*/ React.memo(({ href, onClick, isCurrent = false, icon, maxLength, children, className, style, testId, ref, ...rest }) => {
|
|
62
|
+
const BreadcrumbItem = /*#__PURE__*/ React.memo(({ href, onClick, isCurrent = false, icon, maxLength, endContent, children, className, style, testId, ref, ...rest }) => {
|
|
59
63
|
const { label, fullLabel } = getTruncatedLabel(children, maxLength);
|
|
60
64
|
const isInteractive = (href !== undefined || onClick !== undefined) && !isCurrent;
|
|
61
65
|
const state = isCurrent ? 'current' : isInteractive ? 'link' : 'disabled';
|
|
@@ -82,7 +86,7 @@ const BreadcrumbItem = /*#__PURE__*/ React.memo(({ href, onClick, isCurrent = fa
|
|
|
82
86
|
else {
|
|
83
87
|
inner = (jsx("span", { className: breadcrumbContentRecipe({ state }), children: content }));
|
|
84
88
|
}
|
|
85
|
-
return (
|
|
89
|
+
return (jsxs("li", { ref: ref, className: cx(breadcrumbItemStyle, className), style: style, "data-testid": testId, ...rest, children: [fullLabel ? (jsx(Tooltip, { title: fullLabel, delay: 300, children: inner })) : (inner), endContent] }));
|
|
86
90
|
});
|
|
87
91
|
BreadcrumbItem.displayName = 'BreadcrumbItem';
|
|
88
92
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbItem.js","sources":["
|
|
1
|
+
{"version":3,"file":"BreadcrumbItem.js","sources":["src/components/navigation/Breadcrumbs/BreadcrumbItem.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback } from 'react';\n\nimport { Tooltip } from '@/components/primitives';\nimport { cx } from '@/utils/cx';\n\nimport {\n breadcrumbContentRecipe,\n breadcrumbIconStyle,\n breadcrumbItemStyle,\n breadcrumbLabelStyle,\n} from './Breadcrumbs.css';\n\nimport type { BreadcrumbItemProps } from './Breadcrumbs.types';\n\nfunction getTruncatedLabel(children: React.ReactNode, maxLength?: number) {\n if (\n typeof children !== 'string' ||\n !maxLength ||\n children.length <= maxLength\n ) {\n return { label: children, fullLabel: undefined };\n }\n\n const endIndex = Math.max(0, maxLength - 1);\n return {\n label: `${children.slice(0, endIndex)}…`,\n fullLabel: children,\n };\n}\n\n/**\n * Individual segment in a breadcrumb trail.\n *\n * Renders as a link, clickable span for client routing, current-page text, or\n * disabled text depending on the props provided.\n *\n * @example\n * ```tsx\n * <BreadcrumbItem href=\"/components\">Components</BreadcrumbItem>\n * <BreadcrumbItem isCurrent>Button</BreadcrumbItem>\n * ```\n */\nexport const BreadcrumbItem = /*#__PURE__*/ React.memo<BreadcrumbItemProps>(\n ({\n href,\n onClick,\n isCurrent = false,\n icon,\n maxLength,\n endContent,\n children,\n className,\n style,\n testId,\n ref,\n ...rest\n }) => {\n const { label, fullLabel } = getTruncatedLabel(children, maxLength);\n const isInteractive =\n (href !== undefined || onClick !== undefined) && !isCurrent;\n const state = isCurrent ? 'current' : isInteractive ? 'link' : 'disabled';\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (!onClick || isCurrent) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.currentTarget.click();\n }\n },\n [isCurrent, onClick]\n );\n\n const content = (\n <>\n {icon && <span className={breadcrumbIconStyle}>{icon}</span>}\n <span className={breadcrumbLabelStyle}>{label}</span>\n </>\n );\n\n let inner: React.ReactElement;\n\n if (isCurrent) {\n inner = (\n <span\n className={breadcrumbContentRecipe({ state })}\n aria-current=\"page\"\n >\n {content}\n </span>\n );\n } else if (href) {\n inner = (\n <a className={breadcrumbContentRecipe({ state })} href={href}>\n {content}\n </a>\n );\n } else if (onClick) {\n inner = (\n <span\n className={breadcrumbContentRecipe({ state })}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n >\n {content}\n </span>\n );\n } else {\n inner = (\n <span className={breadcrumbContentRecipe({ state })}>{content}</span>\n );\n }\n\n return (\n <li\n ref={ref as React.Ref<HTMLLIElement>}\n className={cx(breadcrumbItemStyle, className)}\n style={style}\n data-testid={testId}\n {...rest}\n >\n {fullLabel ? (\n <Tooltip title={fullLabel} delay={300}>\n {inner}\n </Tooltip>\n ) : (\n inner\n )}\n {endContent}\n </li>\n );\n }\n);\n\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA;;AAGI;AACA;;;AAKF;;;AAGE;;AAEJ;AAEA;;;;;;;;;;;AAWG;AACI;AAeH;AACA;AAEA;AAEA;AAEI;;;AAIA;;AAEE;;AAEJ;;AAWF;;AAGE;;;AASA;;;AAMA;;;AAYA;;;AAuBJ;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbSeparator.js","sources":["
|
|
1
|
+
{"version":3,"file":"BreadcrumbSeparator.js","sources":["src/components/navigation/Breadcrumbs/BreadcrumbSeparator.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { cx } from '@/utils/cx';\n\nimport { breadcrumbSeparatorStyle } from './Breadcrumbs.css';\n\nimport type { BreadcrumbSeparatorProps } from './Breadcrumbs.types';\n\n/**\n * Decorative separator rendered between breadcrumb items.\n *\n * @example\n * ```tsx\n * <BreadcrumbSeparator>/</BreadcrumbSeparator>\n * ```\n */\nexport const BreadcrumbSeparator =\n /*#__PURE__*/ React.memo<BreadcrumbSeparatorProps>(\n ({ children, className, style, testId, ref, ...rest }) => {\n return (\n <li\n ref={ref as React.Ref<HTMLLIElement>}\n className={cx(breadcrumbSeparatorStyle, className)}\n style={style}\n data-testid={testId}\n aria-hidden=\"true\"\n {...rest}\n >\n {children}\n </li>\n );\n }\n );\n\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\n"],"names":[],"mappings":";;;;;;AAUA;;;;;;;AAOG;;AAED;AAEI;AAYF;AAGJ;;"}
|
|
@@ -32,6 +32,7 @@ import '../../Icons/GridIcon.js';
|
|
|
32
32
|
import '../../Icons/HeartIcon.js';
|
|
33
33
|
import '../../Icons/HelpIcon.js';
|
|
34
34
|
import '../../Icons/HomeIcon.js';
|
|
35
|
+
import '../../Icons/ImageIcon.js';
|
|
35
36
|
import '../../Icons/InfoIcon.js';
|
|
36
37
|
import '../../Icons/LastIcon.js';
|
|
37
38
|
import '../../Icons/LinkIcon.js';
|
|
@@ -87,11 +88,17 @@ import '../../Icons/GitBranchIcon.js';
|
|
|
87
88
|
import '../../Icons/BugIcon.js';
|
|
88
89
|
import '../../Icons/MinusIcon.js';
|
|
89
90
|
import '../../Icons/PinIcon.js';
|
|
91
|
+
import '../../Icons/OrbitIcon.js';
|
|
92
|
+
import '../../Icons/RotateIcon.js';
|
|
93
|
+
import '../../Icons/SpinIcon.js';
|
|
94
|
+
import '../../Icons/CameraIcon.js';
|
|
95
|
+
import '../../Icons/CubeIcon.js';
|
|
96
|
+
import '../../Icons/ZoomFitIcon.js';
|
|
90
97
|
import { cx } from '../../../utils/cx.js';
|
|
91
98
|
import { BreadcrumbEllipsis } from './BreadcrumbEllipsis.js';
|
|
92
99
|
import { BreadcrumbItem } from './BreadcrumbItem.js';
|
|
93
|
-
import { BreadcrumbSeparator } from './BreadcrumbSeparator.js';
|
|
94
100
|
import { breadcrumbsListRecipe, breadcrumbsRootRecipe } from './Breadcrumbs.css.js';
|
|
101
|
+
import { BreadcrumbSeparator } from './BreadcrumbSeparator.js';
|
|
95
102
|
|
|
96
103
|
function isComponentElement(child, component) {
|
|
97
104
|
return React.isValidElement(child) && child.type === component;
|
|
@@ -154,7 +161,11 @@ const Breadcrumbs = /*#__PURE__*/ React.memo(({ separator = jsx(ArrowRightIcon,
|
|
|
154
161
|
.join(' / ');
|
|
155
162
|
const collapsedTrail = [
|
|
156
163
|
...visibleBefore,
|
|
157
|
-
jsx(BreadcrumbEllipsis, { onClick: expandable
|
|
164
|
+
jsx(BreadcrumbEllipsis, { onClick: expandable
|
|
165
|
+
? () => {
|
|
166
|
+
setExpanded(true);
|
|
167
|
+
}
|
|
168
|
+
: undefined, tooltip: collapsedLabels || undefined }, "breadcrumb-ellipsis"),
|
|
158
169
|
...visibleAfter,
|
|
159
170
|
];
|
|
160
171
|
return withSeparators(collapsedTrail, separator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumbs.js","sources":["
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.js","sources":["src/components/navigation/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["'use client';\n\nimport React, { useMemo, useState } from 'react';\n\nimport { ArrowRightIcon } from '@/components/Icons';\nimport { cx } from '@/utils/cx';\n\nimport { BreadcrumbEllipsis } from './BreadcrumbEllipsis';\nimport { BreadcrumbItem } from './BreadcrumbItem';\nimport {\n breadcrumbsListRecipe,\n breadcrumbsRootRecipe,\n} from './Breadcrumbs.css';\nimport { BreadcrumbSeparator } from './BreadcrumbSeparator';\n\nimport type { BreadcrumbsProps } from './Breadcrumbs.types';\n\nfunction isComponentElement(\n child: React.ReactNode,\n component: React.ComponentType<unknown>\n) {\n return React.isValidElement(child) && child.type === component;\n}\n\nfunction getItemLabel(child: React.ReactNode) {\n if (\n React.isValidElement<{ children?: React.ReactNode }>(child) &&\n typeof child.props.children === 'string'\n ) {\n return child.props.children;\n }\n\n return undefined;\n}\n\nfunction withSeparators(\n items: React.ReactNode[],\n separator: React.ReactNode\n): React.ReactNode[] {\n return items.flatMap((item, index) =>\n index === 0\n ? [item]\n : [\n <BreadcrumbSeparator key={`separator-${index}`}>\n {separator}\n </BreadcrumbSeparator>,\n item,\n ]\n );\n}\n\n/**\n * Breadcrumb navigation for hierarchical paths.\n *\n * Use Breadcrumbs for file paths, nested categories, editor hierarchy depth,\n * or parent-route navigation. Mark the current page explicitly with\n * `isCurrent`.\n *\n * @example\n * ```tsx\n * <Breadcrumbs>\n * <BreadcrumbItem href=\"/\">Home</BreadcrumbItem>\n * <BreadcrumbItem href=\"/components\">Components</BreadcrumbItem>\n * <BreadcrumbItem isCurrent>Button</BreadcrumbItem>\n * </Breadcrumbs>\n * ```\n */\nexport const Breadcrumbs = /*#__PURE__*/ React.memo<BreadcrumbsProps>(\n ({\n separator = <ArrowRightIcon size=\"sm\" decorative />,\n maxItems = 0,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 2,\n expandable = true,\n size = 'sm',\n children,\n className,\n style,\n testId,\n ref,\n ...rest\n }) => {\n const [expanded, setExpanded] = useState(false);\n\n const renderedChildren = useMemo(() => {\n const childArray = React.Children.toArray(children);\n const hasExplicitSeparators = childArray.some(child =>\n isComponentElement(\n child,\n BreadcrumbSeparator as React.ComponentType<unknown>\n )\n );\n\n if (expanded || !maxItems || maxItems <= 0) {\n return hasExplicitSeparators\n ? childArray\n : withSeparators(childArray, separator);\n }\n\n const breadcrumbItems = childArray.filter(child =>\n isComponentElement(\n child,\n BreadcrumbItem as React.ComponentType<unknown>\n )\n );\n\n if (breadcrumbItems.length <= maxItems) {\n return hasExplicitSeparators\n ? childArray\n : withSeparators(childArray, separator);\n }\n\n const safeBefore = Math.max(0, itemsBeforeCollapse);\n const safeAfter = Math.max(0, itemsAfterCollapse);\n const visibleBefore = breadcrumbItems.slice(0, safeBefore);\n const visibleAfter =\n safeAfter > 0 ? breadcrumbItems.slice(-safeAfter) : [];\n const collapsedItems = breadcrumbItems.slice(\n safeBefore,\n breadcrumbItems.length - safeAfter\n );\n\n const collapsedLabels = collapsedItems\n .map(getItemLabel)\n .filter((label): label is string => Boolean(label))\n .join(' / ');\n\n const collapsedTrail = [\n ...visibleBefore,\n <BreadcrumbEllipsis\n key=\"breadcrumb-ellipsis\"\n onClick={\n expandable\n ? () => {\n setExpanded(true);\n }\n : undefined\n }\n tooltip={collapsedLabels || undefined}\n />,\n ...visibleAfter,\n ];\n\n return withSeparators(collapsedTrail, separator);\n }, [\n children,\n expandable,\n expanded,\n itemsAfterCollapse,\n itemsBeforeCollapse,\n maxItems,\n separator,\n ]);\n\n return (\n <nav\n ref={ref}\n className={cx(breadcrumbsRootRecipe({ size }), className)}\n style={style}\n data-testid={testId}\n aria-label=\"Breadcrumb\"\n {...rest}\n >\n <ol className={breadcrumbsListRecipe({ size })}>{renderedChildren}</ol>\n </nav>\n );\n }\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA;AAIE;AACF;AAEA;AACE;;AAIE;;AAGF;AACF;AAEA;AAIE;;AAGI;AACI;;AAID;AAET;AAEA;;;;;;;;;;;;;;;AAeG;AACI;;AAiBH;;AAEE;;AAQE;AACE;AACA;;AAGJ;AAOA;AACE;AACE;AACA;;;;;AAMJ;AAEA;;;;;AAUA;AACE;AACA;;;;;AAWA;;AAGF;AACF;;;;;;;;AAQC;;AAcH;AAGF;;"}
|
|
@@ -1,46 +1,52 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import React, { useMemo } from 'react';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
3
|
import { ContextMenu as ContextMenu$1 } from '@base-ui/react/context-menu';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { menuContentStyle } from '../Menu/Menu.css.js';
|
|
6
|
+
import { MenuGapContext, DEFAULT_MENU_GAP } from '../Menu/MenuGapContext.js';
|
|
8
7
|
import { cx } from '../../../utils/cx.js';
|
|
9
|
-
import { Menu } from '../Menu/Menu.js';
|
|
10
|
-
import { useMenu, createItemClickHandler } from '../Menu/useMenu.js';
|
|
11
|
-
import { renderItemWithSubmenu } from '../Menu/Menu.helpers.js';
|
|
12
|
-
import { separatorStyle, menuContentStyle } from '../Menu/Menu.css.js';
|
|
13
|
-
import { useContextMenuTarget } from './useContextMenuTarget.js';
|
|
14
8
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Right-click context menu, built on `@base-ui/react` ContextMenu primitives.
|
|
11
|
+
*
|
|
12
|
+
* Compose the trigger area and content as children. Reuse the shared `Menu.*`
|
|
13
|
+
* primitives for items, or pass a fully custom panel into
|
|
14
|
+
* `ContextMenu.Content`. Define separate menus per area by giving each area its
|
|
15
|
+
* own `ContextMenu`.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <ContextMenu>
|
|
20
|
+
* <ContextMenu.Trigger>
|
|
21
|
+
* <div className="viewport">Right-click me</div>
|
|
22
|
+
* </ContextMenu.Trigger>
|
|
23
|
+
* <ContextMenu.Content>
|
|
24
|
+
* <Menu.Item icon={<CutIcon />} shortcut="⌘X">Cut</Menu.Item>
|
|
25
|
+
* <Menu.Item icon={<CopyIcon />} shortcut="⌘C">Copy</Menu.Item>
|
|
26
|
+
* </ContextMenu.Content>
|
|
27
|
+
* </ContextMenu>
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
const ContextMenuRoot = ({ children, open, defaultOpen, onOpenChange, disabled, gap = DEFAULT_MENU_GAP, ref, }) => {
|
|
31
|
+
const actionsRef = React.useRef(null);
|
|
32
|
+
React.useImperativeHandle(ref, () => ({ close: () => actionsRef.current?.close() }), []);
|
|
33
|
+
return (jsx(MenuGapContext.Provider, { value: gap, children: jsx(ContextMenu$1.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, disabled: disabled, actionsRef: actionsRef, children: children }) }));
|
|
34
|
+
};
|
|
35
|
+
ContextMenuRoot.displayName = 'ContextMenu';
|
|
36
|
+
const ContextMenuTrigger = ({ children, render, className, style, testId, ref, ...rest }) => (jsx(ContextMenu$1.Trigger, { ref: ref, render: render, className: className,
|
|
37
|
+
// With `render`, the user's element is the trigger, so no wrapper is
|
|
38
|
+
// needed; otherwise wrap so the trigger is transparent to layout.
|
|
39
|
+
style: render ? style : { display: 'contents', ...style }, "data-testid": testId, ...rest, children: render ? undefined : children }));
|
|
40
|
+
ContextMenuTrigger.displayName = 'ContextMenu.Trigger';
|
|
41
|
+
const ContextMenuContent = ({ children, className, testId, ref, ...rest }) => (jsx(ContextMenu$1.Portal, { children: jsx(ContextMenu$1.Positioner, { children: jsx(ContextMenu$1.Popup, { ref: ref, className: cx(menuContentStyle, className), "data-testid": testId, ...rest, children: children }) }) }));
|
|
42
|
+
ContextMenuContent.displayName = 'ContextMenu.Content';
|
|
43
|
+
/**
|
|
44
|
+
* Compound ContextMenu API. Items reuse the shared `Menu.*` primitives.
|
|
45
|
+
*/
|
|
46
|
+
const ContextMenu = /*#__PURE__*/ Object.assign(ContextMenuRoot, {
|
|
47
|
+
Trigger: ContextMenuTrigger,
|
|
48
|
+
Content: ContextMenuContent,
|
|
49
|
+
});
|
|
44
50
|
|
|
45
51
|
export { ContextMenu };
|
|
46
52
|
//# sourceMappingURL=ContextMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenu.js","sources":["
|
|
1
|
+
{"version":3,"file":"ContextMenu.js","sources":["src/components/navigation/ContextMenu/ContextMenu.tsx"],"sourcesContent":["'use client';\n\nimport { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu';\nimport React from 'react';\n\nimport { menuContentStyle } from '@/components/navigation/Menu/Menu.css';\nimport {\n MenuGapContext,\n DEFAULT_MENU_GAP,\n} from '@/components/navigation/Menu/MenuGapContext';\nimport { cx } from '@/utils/cx';\n\nimport type {\n ContextMenuProps,\n ContextMenuTriggerProps,\n ContextMenuContentProps,\n} from './ContextMenu.types';\nimport type { MenuRootActions } from '@base-ui/react/menu';\n\n/**\n * Right-click context menu, built on `@base-ui/react` ContextMenu primitives.\n *\n * Compose the trigger area and content as children. Reuse the shared `Menu.*`\n * primitives for items, or pass a fully custom panel into\n * `ContextMenu.Content`. Define separate menus per area by giving each area its\n * own `ContextMenu`.\n *\n * @example\n * ```tsx\n * <ContextMenu>\n * <ContextMenu.Trigger>\n * <div className=\"viewport\">Right-click me</div>\n * </ContextMenu.Trigger>\n * <ContextMenu.Content>\n * <Menu.Item icon={<CutIcon />} shortcut=\"⌘X\">Cut</Menu.Item>\n * <Menu.Item icon={<CopyIcon />} shortcut=\"⌘C\">Copy</Menu.Item>\n * </ContextMenu.Content>\n * </ContextMenu>\n * ```\n */\nconst ContextMenuRoot = ({\n children,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n gap = DEFAULT_MENU_GAP,\n ref,\n}: ContextMenuProps): React.ReactElement => {\n const actionsRef = React.useRef<MenuRootActions | null>(null);\n React.useImperativeHandle(\n ref,\n () => ({ close: () => actionsRef.current?.close() }),\n []\n );\n return (\n <MenuGapContext.Provider value={gap}>\n <BaseContextMenu.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n disabled={disabled}\n actionsRef={actionsRef}\n >\n {children}\n </BaseContextMenu.Root>\n </MenuGapContext.Provider>\n );\n};\nContextMenuRoot.displayName = 'ContextMenu';\n\nconst ContextMenuTrigger = ({\n children,\n render,\n className,\n style,\n testId,\n ref,\n ...rest\n}: ContextMenuTriggerProps): React.ReactElement => (\n <BaseContextMenu.Trigger\n ref={ref}\n render={render}\n className={className}\n // With `render`, the user's element is the trigger, so no wrapper is\n // needed; otherwise wrap so the trigger is transparent to layout.\n style={render ? style : { display: 'contents', ...style }}\n data-testid={testId}\n {...rest}\n >\n {render ? undefined : children}\n </BaseContextMenu.Trigger>\n);\nContextMenuTrigger.displayName = 'ContextMenu.Trigger';\n\nconst ContextMenuContent = ({\n children,\n className,\n testId,\n ref,\n ...rest\n}: ContextMenuContentProps): React.ReactElement => (\n <BaseContextMenu.Portal>\n <BaseContextMenu.Positioner>\n <BaseContextMenu.Popup\n ref={ref}\n className={cx(menuContentStyle, className)}\n data-testid={testId}\n {...rest}\n >\n {children}\n </BaseContextMenu.Popup>\n </BaseContextMenu.Positioner>\n </BaseContextMenu.Portal>\n);\nContextMenuContent.displayName = 'ContextMenu.Content';\n\n/**\n * Compound ContextMenu API. Items reuse the shared `Menu.*` primitives.\n */\nexport const ContextMenu = /*#__PURE__*/ Object.assign(ContextMenuRoot, {\n Trigger: ContextMenuTrigger,\n Content: ContextMenuContent,\n});\n"],"names":[],"mappings":";;;;;;;;AAmBA;;;;;;;;;;;;;;;;;;;;AAoBG;AACH;;;AAeE;AAaF;AACA;AAEA;;;AAeI;AAOJ;AAEA;AAoBA;AAEA;;AAEG;AACI;AACL;AACA;AACD;;"}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import './../../../assets/src/components/navigation/Menu/Menu.css.ts.vanilla-
|
|
1
|
+
import './../../../assets/src/components/navigation/Menu/Menu.css.ts.vanilla-B5iVe5S2.css';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var iconVisibleStyle = 'Menu_iconVisibleStyle__1pkkb715';
|
|
3
|
+
var groupLabelStyle = 'Menu_groupLabelStyle__1pkkb716';
|
|
4
|
+
var itemEndSlotStyle = 'Menu_itemEndSlotStyle__1pkkb714';
|
|
5
|
+
var itemLabelStyle = 'Menu_itemLabelStyle__1pkkb713';
|
|
6
|
+
var itemStartSlotStyle = 'Menu_itemStartSlotStyle__1pkkb712';
|
|
8
7
|
var menuContentStyle = 'Menu_menuContentStyle__1pkkb710';
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var radioItemStyle = 'Menu_interactiveItemBase__1pkkb711';
|
|
13
|
-
var separatorStyle = 'Menu_separatorStyle__1pkkb718';
|
|
8
|
+
var menuItemStyle = 'Menu_menuItemStyle__1pkkb711';
|
|
9
|
+
var separatorStyle = 'Menu_separatorStyle__1pkkb717';
|
|
10
|
+
var shortcutStyle = 'Menu_shortcutStyle__1pkkb715';
|
|
14
11
|
|
|
15
|
-
export {
|
|
12
|
+
export { groupLabelStyle, itemEndSlotStyle, itemLabelStyle, itemStartSlotStyle, menuContentStyle, menuItemStyle, separatorStyle, shortcutStyle };
|
|
16
13
|
//# sourceMappingURL=Menu.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Menu.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|