entangle-ui 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +766 -0
- package/README.md +8 -6
- package/dist/esm/assets/src/components/controls/FileTree/FileTree.css.ts.vanilla-YmktPvnr.css +48 -0
- package/dist/esm/assets/src/components/controls/Select/{Select.css.ts.vanilla-oZnFUorL.css → Select.css.ts.vanilla-Cpu2BvWL.css} +3 -0
- package/dist/esm/assets/src/components/controls/TreeView/{TreeNode.css.ts.vanilla-B_f8pUb8.css → TreeNode.css.ts.vanilla-DXPJRWZZ.css} +31 -24
- package/dist/esm/assets/src/components/editor/AssetBrowser/AssetBrowser.css.ts.vanilla-B2S4cEiY.css +262 -0
- package/dist/esm/assets/src/components/editor/Minimap/Minimap.css.ts.vanilla--rNdWQwy.css +133 -0
- package/dist/esm/assets/src/components/editor/NodeGraph/NodeGraph.css.ts.vanilla-ClF4YZvl.css +401 -0
- package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyPanel.css.ts.vanilla-RYv_XgOu.css → PropertyPanel.css.ts.vanilla-Dpr_k5I3.css} +4 -1
- package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyRow.css.ts.vanilla-C3YZnnHb.css → PropertyRow.css.ts.vanilla-pq1Uhd2a.css} +15 -8
- package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertySection.css.ts.vanilla-DK12opZc.css → PropertySection.css.ts.vanilla-6MWWAqyd.css} +50 -32
- package/dist/esm/assets/src/components/editor/Timeline/Timeline.css.ts.vanilla-DDX6Zalo.css +203 -0
- package/dist/esm/assets/src/components/feedback/LogView/LogView.css.ts.vanilla-nB5ENOpw.css +312 -0
- package/dist/esm/assets/src/components/navigation/Menu/Menu.css.ts.vanilla-B5iVe5S2.css +88 -0
- package/dist/esm/assets/src/components/navigation/PathBar/PathBar.css.ts.vanilla-BIEzQQOf.css +10 -0
- package/dist/esm/assets/src/components/primitives/viewport/Viewport.css.ts.vanilla-CkFBJ7Vo.css +65 -0
- package/dist/esm/assets/src/components/shell/FloatingPanel/{FloatingPanel.css.ts.vanilla-1rIAXEFp.css → FloatingPanel.css.ts.vanilla-CRaeYJ2b.css} +20 -13
- package/dist/esm/assets/src/theme/{darkTheme.css.ts.vanilla-ab1WD4dr.css → darkTheme.css.ts.vanilla-BHZ3ecRn.css} +3 -3
- package/dist/esm/assets/src/theme/{lightTheme.css.ts.vanilla-OaRI_wIc.css → lightTheme.css.ts.vanilla-Ct6f9Iym.css} +3 -3
- package/dist/esm/components/Icons/AddIcon.js.map +1 -1
- package/dist/esm/components/Icons/AiChatIcon.js.map +1 -1
- package/dist/esm/components/Icons/AiSparklesIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArchiveIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowDownIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowLeftIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowRightIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowUpIcon.js.map +1 -1
- package/dist/esm/components/Icons/BookmarkIcon.js.map +1 -1
- package/dist/esm/components/Icons/BugIcon.js.map +1 -1
- package/dist/esm/components/Icons/BuildingIcon.js.map +1 -1
- package/dist/esm/components/Icons/CalendarIcon.js.map +1 -1
- package/dist/esm/components/Icons/CameraIcon.js +31 -0
- package/dist/esm/components/Icons/CameraIcon.js.map +1 -0
- package/dist/esm/components/Icons/CheckIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronDownIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronLeftIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronRightIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronUpIcon.js.map +1 -1
- package/dist/esm/components/Icons/CircleIcon.js.map +1 -1
- package/dist/esm/components/Icons/ClockIcon.js.map +1 -1
- package/dist/esm/components/Icons/CloseIcon.js.map +1 -1
- package/dist/esm/components/Icons/CloudUploadIcon.js.map +1 -1
- package/dist/esm/components/Icons/CodeIcon.js.map +1 -1
- package/dist/esm/components/Icons/CopyIcon.js.map +1 -1
- package/dist/esm/components/Icons/CubeIcon.js +31 -0
- package/dist/esm/components/Icons/CubeIcon.js.map +1 -0
- package/dist/esm/components/Icons/CutIcon.js.map +1 -1
- package/dist/esm/components/Icons/DotsHorizontalIcon.js.map +1 -1
- package/dist/esm/components/Icons/DotsVerticalIcon.js.map +1 -1
- package/dist/esm/components/Icons/DownloadIcon.js.map +1 -1
- package/dist/esm/components/Icons/EditIcon.js.map +1 -1
- package/dist/esm/components/Icons/ErrorIcon.js.map +1 -1
- package/dist/esm/components/Icons/ExternalLinkIcon.js.map +1 -1
- package/dist/esm/components/Icons/EyeDropperIcon.js.map +1 -1
- package/dist/esm/components/Icons/EyeIcon.js.map +1 -1
- package/dist/esm/components/Icons/FileTextIcon.js.map +1 -1
- package/dist/esm/components/Icons/FilterIcon.js.map +1 -1
- package/dist/esm/components/Icons/FirstIcon.js.map +1 -1
- package/dist/esm/components/Icons/FolderCogIcon.js.map +1 -1
- package/dist/esm/components/Icons/FolderIcon.js.map +1 -1
- package/dist/esm/components/Icons/FolderOpenIcon.js +2 -2
- package/dist/esm/components/Icons/FolderOpenIcon.js.map +1 -1
- package/dist/esm/components/Icons/FullscreenIcon.js.map +1 -1
- package/dist/esm/components/Icons/GitBranchIcon.js.map +1 -1
- package/dist/esm/components/Icons/GridIcon.js.map +1 -1
- package/dist/esm/components/Icons/HeartIcon.js.map +1 -1
- package/dist/esm/components/Icons/HelpIcon.js.map +1 -1
- package/dist/esm/components/Icons/HomeIcon.js.map +1 -1
- package/dist/esm/components/Icons/ImageIcon.js +31 -0
- package/dist/esm/components/Icons/ImageIcon.js.map +1 -0
- package/dist/esm/components/Icons/InfoIcon.js.map +1 -1
- package/dist/esm/components/Icons/LastIcon.js.map +1 -1
- package/dist/esm/components/Icons/LinkIcon.js.map +1 -1
- package/dist/esm/components/Icons/ListIcon.js.map +1 -1
- package/dist/esm/components/Icons/LockIcon.js.map +1 -1
- package/dist/esm/components/Icons/MaximizeIcon.js.map +1 -1
- package/dist/esm/components/Icons/MenuIcon.js.map +1 -1
- package/dist/esm/components/Icons/MinimizeIcon.js.map +1 -1
- package/dist/esm/components/Icons/MinusIcon.js.map +1 -1
- package/dist/esm/components/Icons/OrbitIcon.js +31 -0
- package/dist/esm/components/Icons/OrbitIcon.js.map +1 -0
- package/dist/esm/components/Icons/PasteIcon.js.map +1 -1
- package/dist/esm/components/Icons/PauseIcon.js +2 -2
- package/dist/esm/components/Icons/PauseIcon.js.map +1 -1
- package/dist/esm/components/Icons/PinIcon.js.map +1 -1
- package/dist/esm/components/Icons/PlayIcon.js.map +1 -1
- package/dist/esm/components/Icons/RedoIcon.js.map +1 -1
- package/dist/esm/components/Icons/RefreshIcon.js.map +1 -1
- package/dist/esm/components/Icons/RobotIcon.js.map +1 -1
- package/dist/esm/components/Icons/RotateIcon.js +32 -0
- package/dist/esm/components/Icons/RotateIcon.js.map +1 -0
- package/dist/esm/components/Icons/SaveIcon.js.map +1 -1
- package/dist/esm/components/Icons/SearchIcon.js.map +1 -1
- package/dist/esm/components/Icons/SendIcon.js.map +1 -1
- package/dist/esm/components/Icons/SettingsIcon.js.map +1 -1
- package/dist/esm/components/Icons/SortIcon.js.map +1 -1
- package/dist/esm/components/Icons/SpinIcon.js +32 -0
- package/dist/esm/components/Icons/SpinIcon.js.map +1 -0
- package/dist/esm/components/Icons/StarIcon.js.map +1 -1
- package/dist/esm/components/Icons/StopIcon.js.map +1 -1
- package/dist/esm/components/Icons/SuccessIcon.js.map +1 -1
- package/dist/esm/components/Icons/TagIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentAlignedIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentAutoIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentFreeIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentLinearIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentMirroredIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentStepIcon.js.map +1 -1
- package/dist/esm/components/Icons/TerminalIcon.js.map +1 -1
- package/dist/esm/components/Icons/TrashIcon.js.map +1 -1
- package/dist/esm/components/Icons/UndoIcon.js.map +1 -1
- package/dist/esm/components/Icons/UnlinkIcon.js.map +1 -1
- package/dist/esm/components/Icons/UnlockIcon.js.map +1 -1
- package/dist/esm/components/Icons/UploadIcon.js.map +1 -1
- package/dist/esm/components/Icons/UserIcon.js.map +1 -1
- package/dist/esm/components/Icons/UsersIcon.js.map +1 -1
- package/dist/esm/components/Icons/WarningIcon.js.map +1 -1
- package/dist/esm/components/Icons/ZoomFitIcon.js +32 -0
- package/dist/esm/components/Icons/ZoomFitIcon.js.map +1 -0
- package/dist/esm/components/Icons/ZoomInIcon.js.map +1 -1
- package/dist/esm/components/Icons/ZoomOutIcon.js.map +1 -1
- package/dist/esm/components/controls/CartesianPicker/CartesianPicker.js +3 -3
- package/dist/esm/components/controls/CartesianPicker/CartesianPicker.js.map +1 -1
- package/dist/esm/components/controls/CartesianPicker/useCartesianInteraction.js +7 -5
- package/dist/esm/components/controls/CartesianPicker/useCartesianInteraction.js.map +1 -1
- package/dist/esm/components/controls/CartesianPicker/useCartesianRenderer.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/AlphaSlider.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorArea.js +2 -2
- package/dist/esm/components/controls/ColorPicker/ColorArea.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorInputs.js +16 -2
- package/dist/esm/components/controls/ColorPicker/ColorInputs.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorPalette.js +3 -1
- package/dist/esm/components/controls/ColorPicker/ColorPalette.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorPicker.js +6 -6
- package/dist/esm/components/controls/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorPresets.js +3 -1
- package/dist/esm/components/controls/ColorPicker/ColorPresets.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorSwatch.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/EyeDropper.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/HueSlider.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/colorUtils.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/palettes/material.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/palettes/professional.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/useColor.js.map +1 -1
- package/dist/esm/components/controls/Combobox/Combobox.js +46 -23
- package/dist/esm/components/controls/Combobox/Combobox.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/CurveCanvas.js +11 -4
- package/dist/esm/components/controls/CurveEditor/CurveCanvas.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/CurveEditor.js +4 -4
- package/dist/esm/components/controls/CurveEditor/CurveEditor.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/CurveToolbar.js +7 -5
- package/dist/esm/components/controls/CurveEditor/CurveToolbar.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/curvePresets.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/curveUtils.js +13 -15
- package/dist/esm/components/controls/CurveEditor/curveUtils.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js +72 -50
- package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js +11 -3
- package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js.map +1 -1
- package/dist/esm/components/controls/FileTree/FileTree.css.js +9 -0
- package/dist/esm/components/controls/FileTree/FileTree.css.js.map +1 -0
- package/dist/esm/components/controls/FileTree/FileTree.js +252 -0
- package/dist/esm/components/controls/FileTree/FileTree.js.map +1 -0
- package/dist/esm/components/controls/FileTree/fileTreeIcons.js +129 -0
- package/dist/esm/components/controls/FileTree/fileTreeIcons.js.map +1 -0
- package/dist/esm/components/controls/FileTree/fileTreeLabels.js +8 -0
- package/dist/esm/components/controls/FileTree/fileTreeLabels.js.map +1 -0
- package/dist/esm/components/controls/FileTree/useFileTreeDrop.js +115 -0
- package/dist/esm/components/controls/FileTree/useFileTreeDrop.js.map +1 -0
- package/dist/esm/components/controls/FileUploader/FileUploader.js +3 -6
- package/dist/esm/components/controls/FileUploader/FileUploader.js.map +1 -1
- package/dist/esm/components/controls/MultiSelect/MultiSelect.js +46 -15
- package/dist/esm/components/controls/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/esm/components/controls/NumberInput/NumberInput.js +11 -4
- package/dist/esm/components/controls/NumberInput/NumberInput.js.map +1 -1
- package/dist/esm/components/controls/NumberInput/useNumberInput.js +6 -2
- package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -1
- package/dist/esm/components/controls/Select/Select.css.js +1 -1
- package/dist/esm/components/controls/Select/Select.js +44 -16
- package/dist/esm/components/controls/Select/Select.js.map +1 -1
- package/dist/esm/components/controls/Slider/Slider.js +6 -8
- package/dist/esm/components/controls/Slider/Slider.js.map +1 -1
- package/dist/esm/components/controls/TagInput/TagInput.js +4 -2
- package/dist/esm/components/controls/TagInput/TagInput.js.map +1 -1
- package/dist/esm/components/controls/TreeView/TreeNode.css.js +9 -8
- package/dist/esm/components/controls/TreeView/TreeNode.css.js.map +1 -1
- package/dist/esm/components/controls/TreeView/TreeNode.js +42 -7
- package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -1
- package/dist/esm/components/controls/TreeView/TreeView.js +18 -6
- package/dist/esm/components/controls/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/controls/TreeView/useTreeState.js +2 -6
- package/dist/esm/components/controls/TreeView/useTreeState.js.map +1 -1
- package/dist/esm/components/controls/VectorInput/VectorInput.js +13 -4
- package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
- package/dist/esm/components/data/DataTable/DataTable.js +25 -8
- package/dist/esm/components/data/DataTable/DataTable.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowser.css.js +46 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowser.css.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowser.js +254 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowser.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserAnnouncementLive.js +17 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserAnnouncementLive.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserBreadcrumbs.js +25 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserBreadcrumbs.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js +140 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContext.js +81 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContext.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContextMenu.js +123 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContextMenu.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js +136 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js +137 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js +226 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js +189 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserRenameField.js +63 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserRenameField.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSidebar.js +19 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSidebar.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStatusBar.js +24 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStatusBar.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStore.js +176 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStore.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js +120 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js +134 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFilter.js +90 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFilter.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFormat.js +32 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFormat.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserGeometry.js +70 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserGeometry.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserKeyboard.js +62 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserKeyboard.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserLabels.js +52 -0
- package/dist/esm/components/editor/AssetBrowser/assetBrowserLabels.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/slots.js +18 -0
- package/dist/esm/components/editor/AssetBrowser/slots.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserAnnouncement.js +19 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserAnnouncement.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js +70 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js +108 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js +192 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetGridKeyboardNav.js +91 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetGridKeyboardNav.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js +91 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js +128 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js +72 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js +141 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js +113 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js.map +1 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js +174 -0
- package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js.map +1 -0
- package/dist/esm/components/editor/ChatPanel/ChatActionBar.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatAttachment.js +8 -2
- package/dist/esm/components/editor/ChatPanel/ChatAttachment.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatBubble.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js +20 -4
- package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatContextChip.js +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatContextChip.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatEmptyState.js +3 -1
- package/dist/esm/components/editor/ChatPanel/ChatEmptyState.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatIcons.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatInput.js +10 -3
- package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatInputToolbar.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMessage.js +10 -3
- package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMessageList.js +5 -3
- package/dist/esm/components/editor/ChatPanel/ChatMessageList.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatPanel.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatToolCall.js +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatToolCall.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatTypingIndicator.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/useChatInput.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/useChatMessages.js +7 -4
- package/dist/esm/components/editor/ChatPanel/useChatMessages.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/useChatScroll.js +6 -1
- package/dist/esm/components/editor/ChatPanel/useChatScroll.js.map +1 -1
- package/dist/esm/components/editor/Minimap/Minimap.css.js +18 -0
- package/dist/esm/components/editor/Minimap/Minimap.css.js.map +1 -0
- package/dist/esm/components/editor/Minimap/Minimap.js +257 -0
- package/dist/esm/components/editor/Minimap/Minimap.js.map +1 -0
- package/dist/esm/components/editor/Minimap/Minimap.types.js +11 -0
- package/dist/esm/components/editor/Minimap/Minimap.types.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapContext.js +48 -0
- package/dist/esm/components/editor/Minimap/MinimapContext.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapCorner.js +16 -0
- package/dist/esm/components/editor/Minimap/MinimapCorner.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapFooter.js +16 -0
- package/dist/esm/components/editor/Minimap/MinimapFooter.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapStore.js +166 -0
- package/dist/esm/components/editor/Minimap/MinimapStore.js.map +1 -0
- package/dist/esm/components/editor/Minimap/MinimapTitle.js +16 -0
- package/dist/esm/components/editor/Minimap/MinimapTitle.js.map +1 -0
- package/dist/esm/components/editor/Minimap/ViewportMinimap.js +69 -0
- package/dist/esm/components/editor/Minimap/ViewportMinimap.js.map +1 -0
- package/dist/esm/components/editor/Minimap/computeBoundsFromItems.js +65 -0
- package/dist/esm/components/editor/Minimap/computeBoundsFromItems.js.map +1 -0
- package/dist/esm/components/editor/Minimap/index.js +15 -0
- package/dist/esm/components/editor/Minimap/index.js.map +1 -0
- package/dist/esm/components/editor/Minimap/minimapCoords.js +105 -0
- package/dist/esm/components/editor/Minimap/minimapCoords.js.map +1 -0
- package/dist/esm/components/editor/Minimap/minimapDrawing.js +93 -0
- package/dist/esm/components/editor/Minimap/minimapDrawing.js.map +1 -0
- package/dist/esm/components/editor/Minimap/minimapHitTest.js +59 -0
- package/dist/esm/components/editor/Minimap/minimapHitTest.js.map +1 -0
- package/dist/esm/components/editor/Minimap/useMinimapGestures.js +299 -0
- package/dist/esm/components/editor/Minimap/useMinimapGestures.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.css.js +36 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.css.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.js +627 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.types.js +10 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraph.types.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphContext.js +54 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphContext.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphEdgeLabels.js +137 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphEdgeLabels.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphGroup.js +211 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphGroup.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphMinimap.js +122 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphMinimap.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js +170 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeContext.js +21 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeContext.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeParts.js +56 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeParts.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js +59 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSectionContext.js +17 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSectionContext.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPin.js +35 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPin.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js +191 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPortVisual.js +46 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphPortVisual.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphSlots.js +50 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphSlots.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphSpawnPalette.js +70 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphSpawnPalette.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphStore.js +543 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphStore.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphToolbar.js +100 -0
- package/dist/esm/components/editor/NodeGraph/NodeGraphToolbar.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/createTypeMatchValidator.js +37 -0
- package/dist/esm/components/editor/NodeGraph/createTypeMatchValidator.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphActions.js +53 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphActions.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphDrawing.js +461 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphDrawing.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphIds.js +31 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphIds.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphMath.js +350 -0
- package/dist/esm/components/editor/NodeGraph/nodeGraphMath.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/sortSlots.js +69 -0
- package/dist/esm/components/editor/NodeGraph/sortSlots.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useDragGesture.js +63 -0
- package/dist/esm/components/editor/NodeGraph/useDragGesture.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraph.js +207 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraph.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js +334 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js +137 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js +392 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js +164 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js +234 -0
- package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js.map +1 -0
- package/dist/esm/components/editor/NodeGraph/useStoreSlice.js +49 -0
- package/dist/esm/components/editor/NodeGraph/useStoreSlice.js.map +1 -0
- package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js +4 -3
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js +12 -7
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js +7 -6
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +21 -5
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js +11 -10
- package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js +32 -11
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js.map +1 -1
- package/dist/esm/components/editor/Timeline/Timeline.css.js +23 -0
- package/dist/esm/components/editor/Timeline/Timeline.css.js.map +1 -0
- package/dist/esm/components/editor/Timeline/Timeline.js +450 -0
- package/dist/esm/components/editor/Timeline/Timeline.js.map +1 -0
- package/dist/esm/components/editor/Timeline/Timeline.types.js +10 -0
- package/dist/esm/components/editor/Timeline/Timeline.types.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineContext.js +69 -0
- package/dist/esm/components/editor/Timeline/TimelineContext.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineFooter.js +16 -0
- package/dist/esm/components/editor/Timeline/TimelineFooter.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineMinimap.js +280 -0
- package/dist/esm/components/editor/Timeline/TimelineMinimap.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineStore.js +289 -0
- package/dist/esm/components/editor/Timeline/TimelineStore.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineToolbar.js +15 -0
- package/dist/esm/components/editor/Timeline/TimelineToolbar.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js +142 -0
- package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js.map +1 -0
- package/dist/esm/components/editor/Timeline/TimelineTrackScale.js +18 -0
- package/dist/esm/components/editor/Timeline/TimelineTrackScale.js.map +1 -0
- package/dist/esm/components/editor/Timeline/index.js +18 -0
- package/dist/esm/components/editor/Timeline/index.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineCoords.js +118 -0
- package/dist/esm/components/editor/Timeline/timelineCoords.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineDrawing.js +390 -0
- package/dist/esm/components/editor/Timeline/timelineDrawing.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineEdits.js +323 -0
- package/dist/esm/components/editor/Timeline/timelineEdits.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineHitTest.js +153 -0
- package/dist/esm/components/editor/Timeline/timelineHitTest.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineLayout.js +39 -0
- package/dist/esm/components/editor/Timeline/timelineLayout.js.map +1 -0
- package/dist/esm/components/editor/Timeline/timelineSelection.js +0 -0
- package/dist/esm/components/editor/Timeline/timelineSelection.js.map +1 -0
- package/dist/esm/components/editor/Timeline/useTimelineDraw.js +156 -0
- package/dist/esm/components/editor/Timeline/useTimelineDraw.js.map +1 -0
- package/dist/esm/components/editor/Timeline/useTimelineGestures.js +587 -0
- package/dist/esm/components/editor/Timeline/useTimelineGestures.js.map +1 -0
- package/dist/esm/components/editor/Timeline/useTimelinePlayback.js +85 -0
- package/dist/esm/components/editor/Timeline/useTimelinePlayback.js.map +1 -0
- package/dist/esm/components/editor/TransformControl/TransformControl.js +4 -4
- package/dist/esm/components/editor/TransformControl/TransformControl.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/ViewportGizmo.js +8 -4
- package/dist/esm/components/editor/ViewportGizmo/ViewportGizmo.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/gizmoMath.js +6 -2
- package/dist/esm/components/editor/ViewportGizmo/gizmoMath.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/useGizmoInteraction.js +8 -6
- package/dist/esm/components/editor/ViewportGizmo/useGizmoInteraction.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/useGizmoRenderer.js +1 -2
- package/dist/esm/components/editor/ViewportGizmo/useGizmoRenderer.js.map +1 -1
- package/dist/esm/components/feedback/Alert/Alert.js +8 -8
- package/dist/esm/components/feedback/Alert/Alert.js.map +1 -1
- package/dist/esm/components/feedback/Alert/AlertActions.js.map +1 -1
- package/dist/esm/components/feedback/Alert/AlertDescription.js.map +1 -1
- package/dist/esm/components/feedback/Alert/AlertTitle.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/CommandPalette.js +32 -22
- package/dist/esm/components/feedback/CommandPalette/CommandPalette.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/useRecentItems.js +3 -1
- package/dist/esm/components/feedback/CommandPalette/useRecentItems.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/Dialog.js +6 -3
- package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogBody.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogClose.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogFooter.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogHeader.js +1 -1
- package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/useDialogAnimation.js +10 -2
- package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -1
- package/dist/esm/components/feedback/Drawer/Drawer.js +4 -1
- package/dist/esm/components/feedback/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js +4 -0
- package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js.map +1 -1
- package/dist/esm/components/feedback/EmptyState/EmptyState.js +1 -1
- package/dist/esm/components/feedback/EmptyState/EmptyState.js.map +1 -1
- package/dist/esm/components/feedback/LogView/LogView.css.js +35 -0
- package/dist/esm/components/feedback/LogView/LogView.css.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogView.js +297 -0
- package/dist/esm/components/feedback/LogView/LogView.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogViewBody.js +205 -0
- package/dist/esm/components/feedback/LogView/LogViewBody.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogViewContext.js +31 -0
- package/dist/esm/components/feedback/LogView/LogViewContext.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogViewParts.js +73 -0
- package/dist/esm/components/feedback/LogView/LogViewParts.js.map +1 -0
- package/dist/esm/components/feedback/LogView/LogViewStore.js +240 -0
- package/dist/esm/components/feedback/LogView/LogViewStore.js.map +1 -0
- package/dist/esm/components/feedback/LogView/logViewLabels.js +25 -0
- package/dist/esm/components/feedback/LogView/logViewLabels.js.map +1 -0
- package/dist/esm/components/feedback/LogView/logViewLevels.js +74 -0
- package/dist/esm/components/feedback/LogView/logViewLevels.js.map +1 -0
- package/dist/esm/components/feedback/LogView/logViewUtils.js +128 -0
- package/dist/esm/components/feedback/LogView/logViewUtils.js.map +1 -0
- package/dist/esm/components/feedback/LogView/useFollowTail.js +95 -0
- package/dist/esm/components/feedback/LogView/useFollowTail.js.map +1 -0
- package/dist/esm/components/feedback/LogView/useLogSelection.js +113 -0
- package/dist/esm/components/feedback/LogView/useLogSelection.js.map +1 -0
- package/dist/esm/components/feedback/ProgressBar/CircularProgress.js +1 -1
- package/dist/esm/components/feedback/ProgressBar/CircularProgress.js.map +1 -1
- package/dist/esm/components/feedback/ProgressBar/ProgressBar.js +1 -1
- package/dist/esm/components/feedback/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/esm/components/feedback/Skeleton/Skeleton.js +1 -1
- package/dist/esm/components/feedback/Skeleton/Skeleton.js.map +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js.map +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js.map +1 -1
- package/dist/esm/components/feedback/Spinner/Spinner.js +1 -1
- package/dist/esm/components/feedback/Spinner/Spinner.js.map +1 -1
- package/dist/esm/components/feedback/Stat/Stat.js.map +1 -1
- package/dist/esm/components/feedback/Toast/ToastContainer.js +1 -1
- package/dist/esm/components/feedback/Toast/ToastContainer.js.map +1 -1
- package/dist/esm/components/feedback/Toast/ToastItem.js +7 -3
- package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -1
- package/dist/esm/components/feedback/Toast/ToastProvider.js.map +1 -1
- package/dist/esm/components/feedback/Toast/useToast.js.map +1 -1
- package/dist/esm/components/form/FormHelperText.js.map +1 -1
- package/dist/esm/components/form/FormLabel.js.map +1 -1
- package/dist/esm/components/form/InputWrapper.js.map +1 -1
- package/dist/esm/components/layout/Accordion/Accordion.js +1 -1
- package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionContent.js +1 -1
- package/dist/esm/components/layout/Accordion/AccordionContent.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionItem.js +1 -1
- package/dist/esm/components/layout/Accordion/AccordionItem.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionTrigger.js +7 -2
- package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -1
- package/dist/esm/components/layout/Card/Card.js +2 -2
- package/dist/esm/components/layout/Card/Card.js.map +1 -1
- package/dist/esm/components/layout/Divider/Divider.js.map +1 -1
- package/dist/esm/components/layout/Flex/Flex.js +1 -1
- package/dist/esm/components/layout/Flex/Flex.js.map +1 -1
- package/dist/esm/components/layout/Grid/Grid.js +1 -1
- package/dist/esm/components/layout/Grid/Grid.js.map +1 -1
- package/dist/esm/components/layout/ListItem/ListItem.js +1 -1
- package/dist/esm/components/layout/ListItem/ListItem.js.map +1 -1
- package/dist/esm/components/layout/PageHeader/PageHeader.js.map +1 -1
- package/dist/esm/components/layout/PanelSurface/PanelSurface.js +3 -3
- package/dist/esm/components/layout/PanelSurface/PanelSurface.js.map +1 -1
- package/dist/esm/components/layout/ScrollArea/ScrollArea.js +91 -23
- package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/esm/components/layout/Spacer/Spacer.js.map +1 -1
- package/dist/esm/components/layout/SplitPane/SplitPane.js +29 -16
- package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -1
- package/dist/esm/components/layout/SplitPane/SplitPanePanel.js.map +1 -1
- package/dist/esm/components/layout/Stack/Stack.js +1 -1
- package/dist/esm/components/layout/Stack/Stack.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js +4 -0
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js +6 -2
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbSeparator.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +13 -2
- package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/esm/components/navigation/ContextMenu/ContextMenu.js +45 -39
- package/dist/esm/components/navigation/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/esm/components/navigation/Menu/Menu.css.js +9 -12
- package/dist/esm/components/navigation/Menu/Menu.css.js.map +1 -1
- package/dist/esm/components/navigation/Menu/Menu.js +97 -63
- package/dist/esm/components/navigation/Menu/Menu.js.map +1 -1
- package/dist/esm/components/navigation/Menu/MenuGapContext.js +19 -0
- package/dist/esm/components/navigation/Menu/MenuGapContext.js.map +1 -0
- package/dist/esm/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/navigation/Pagination/usePagination.js.map +1 -1
- package/dist/esm/components/navigation/PathBar/PathBar.css.js +6 -0
- package/dist/esm/components/navigation/PathBar/PathBar.css.js.map +1 -0
- package/dist/esm/components/navigation/PathBar/PathBar.js +184 -0
- package/dist/esm/components/navigation/PathBar/PathBar.js.map +1 -0
- package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js +151 -0
- package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js.map +1 -0
- package/dist/esm/components/navigation/PathBar/pathUtils.js +118 -0
- package/dist/esm/components/navigation/PathBar/pathUtils.js.map +1 -0
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js +16 -6
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js +1 -1
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/Tab.js +10 -3
- package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/TabList.js +5 -2
- package/dist/esm/components/navigation/Tabs/TabList.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/primitives/Avatar/Avatar.js +11 -4
- package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/primitives/Avatar/AvatarGroup.js +2 -2
- package/dist/esm/components/primitives/Avatar/AvatarGroup.js.map +1 -1
- package/dist/esm/components/primitives/Badge/Badge.js +10 -3
- package/dist/esm/components/primitives/Badge/Badge.js.map +1 -1
- package/dist/esm/components/primitives/Button/Button.js.map +1 -1
- package/dist/esm/components/primitives/Checkbox/Checkbox.js +6 -4
- package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js +2 -2
- package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/esm/components/primitives/Code/Code.js.map +1 -1
- package/dist/esm/components/primitives/Collapsible/Collapsible.js +2 -2
- package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -1
- package/dist/esm/components/primitives/HoverCard/HoverCard.js +5 -3
- package/dist/esm/components/primitives/HoverCard/HoverCard.js.map +1 -1
- package/dist/esm/components/primitives/Icon/Icon.js +1 -1
- package/dist/esm/components/primitives/Icon/Icon.js.map +1 -1
- package/dist/esm/components/primitives/IconButton/IconButton.js.map +1 -1
- package/dist/esm/components/primitives/Input/Input.js +1 -1
- package/dist/esm/components/primitives/Input/Input.js.map +1 -1
- package/dist/esm/components/primitives/Kbd/Kbd.js +1 -1
- package/dist/esm/components/primitives/Kbd/Kbd.js.map +1 -1
- package/dist/esm/components/primitives/Link/Link.js.map +1 -1
- package/dist/esm/components/primitives/Paper/Paper.js.map +1 -1
- package/dist/esm/components/primitives/Popover/Popover.js +1 -1
- package/dist/esm/components/primitives/Popover/Popover.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverClose.js +1 -1
- package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverContent.js +6 -4
- package/dist/esm/components/primitives/Popover/PopoverContent.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverTrigger.js.map +1 -1
- package/dist/esm/components/primitives/Radio/Radio.js +3 -3
- package/dist/esm/components/primitives/Radio/Radio.js.map +1 -1
- package/dist/esm/components/primitives/Radio/RadioGroup.js +2 -2
- package/dist/esm/components/primitives/Radio/RadioGroup.js.map +1 -1
- package/dist/esm/components/primitives/Switch/Switch.js +1 -1
- package/dist/esm/components/primitives/Switch/Switch.js.map +1 -1
- package/dist/esm/components/primitives/Text/Text.js.map +1 -1
- package/dist/esm/components/primitives/TextArea/TextArea.js +3 -4
- package/dist/esm/components/primitives/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/primitives/Tooltip/Arrow.js +1 -1
- package/dist/esm/components/primitives/Tooltip/Arrow.js.map +1 -1
- package/dist/esm/components/primitives/Tooltip/Tooltip.js +9 -7
- package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/primitives/Tooltip/utils.js +1 -1
- package/dist/esm/components/primitives/Tooltip/utils.js.map +1 -1
- package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/esm/components/primitives/canvas/CanvasContainer.js +1 -1
- package/dist/esm/components/primitives/canvas/CanvasContainer.js.map +1 -1
- package/dist/esm/components/primitives/canvas/canvasCoords.js.map +1 -1
- package/dist/esm/components/primitives/canvas/canvasDrawing.js +1 -1
- package/dist/esm/components/primitives/canvas/canvasDrawing.js.map +1 -1
- package/dist/esm/components/primitives/canvas/canvasTheme.js.map +1 -1
- package/dist/esm/components/primitives/canvas/useCanvasRenderer.js +8 -2
- package/dist/esm/components/primitives/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/esm/components/primitives/viewport/Viewport.css.js +12 -0
- package/dist/esm/components/primitives/viewport/Viewport.css.js.map +1 -0
- package/dist/esm/components/primitives/viewport/Viewport.js +189 -0
- package/dist/esm/components/primitives/viewport/Viewport.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportContext.js +47 -0
- package/dist/esm/components/primitives/viewport/ViewportContext.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportLayer.js +113 -0
- package/dist/esm/components/primitives/viewport/ViewportLayer.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportOverlay.js +47 -0
- package/dist/esm/components/primitives/viewport/ViewportOverlay.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportStore.js +210 -0
- package/dist/esm/components/primitives/viewport/ViewportStore.js.map +1 -0
- package/dist/esm/components/primitives/viewport/ViewportWorld.js +38 -0
- package/dist/esm/components/primitives/viewport/ViewportWorld.js.map +1 -0
- package/dist/esm/components/primitives/viewport/useViewportGestures.js +333 -0
- package/dist/esm/components/primitives/viewport/useViewportGestures.js.map +1 -0
- package/dist/esm/components/primitives/viewport/viewportCoords.js +37 -0
- package/dist/esm/components/primitives/viewport/viewportCoords.js.map +1 -0
- package/dist/esm/components/primitives/viewport/viewportMath.js +77 -0
- package/dist/esm/components/primitives/viewport/viewportMath.js.map +1 -0
- package/dist/esm/components/shell/AppShell/AppShell.js +1 -1
- package/dist/esm/components/shell/AppShell/AppShell.js.map +1 -1
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.css.js +11 -10
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.css.js.map +1 -1
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js +60 -24
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -1
- package/dist/esm/components/shell/MenuBar/MenuBar.js +23 -16
- package/dist/esm/components/shell/MenuBar/MenuBar.js.map +1 -1
- package/dist/esm/components/shell/StatusBar/StatusBar.js.map +1 -1
- package/dist/esm/components/shell/Toolbar/Toolbar.js +4 -3
- package/dist/esm/components/shell/Toolbar/Toolbar.js.map +1 -1
- package/dist/esm/context/KeyboardContext.js.map +1 -1
- package/dist/esm/hooks/useBreakpoint/useBreakpoint.js +1 -1
- package/dist/esm/hooks/useBreakpoint/useBreakpoint.js.map +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.js +9 -9
- package/dist/esm/hooks/useClickOutside/useClickOutside.js.map +1 -1
- package/dist/esm/hooks/useClipboard/useClipboard.js +4 -0
- package/dist/esm/hooks/useClipboard/useClipboard.js.map +1 -1
- package/dist/esm/hooks/useControlledState/useControlledState.js.map +1 -1
- package/dist/esm/hooks/useDebounced/useDebouncedCallback.js +11 -6
- package/dist/esm/hooks/useDebounced/useDebouncedCallback.js.map +1 -1
- package/dist/esm/hooks/useDebounced/useDebouncedValue.js +16 -4
- package/dist/esm/hooks/useDebounced/useDebouncedValue.js.map +1 -1
- package/dist/esm/hooks/useDisclosure/useDisclosure.js.map +1 -1
- package/dist/esm/hooks/useEventCallback/useEventCallback.js +49 -0
- package/dist/esm/hooks/useEventCallback/useEventCallback.js.map +1 -0
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/esm/hooks/useHotkey/useHotkey.js +7 -12
- package/dist/esm/hooks/useHotkey/useHotkey.js.map +1 -1
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js +2 -0
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
- package/dist/esm/hooks/useIsMounted/useIsMounted.js +43 -0
- package/dist/esm/hooks/useIsMounted/useIsMounted.js.map +1 -0
- package/dist/esm/hooks/useKeyboard/useKeyboard.js.map +1 -1
- package/dist/esm/hooks/useKeyboard/utils.js.map +1 -1
- package/dist/esm/hooks/useLatest/useLatest.js +31 -0
- package/dist/esm/hooks/useLatest/useLatest.js.map +1 -0
- package/dist/esm/hooks/useListboxNav/useListboxNav.js +29 -13
- package/dist/esm/hooks/useListboxNav/useListboxNav.js.map +1 -1
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.js +7 -1
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.js.map +1 -1
- package/dist/esm/hooks/useMergedRef/useMergedRef.js +6 -1
- package/dist/esm/hooks/useMergedRef/useMergedRef.js.map +1 -1
- package/dist/esm/hooks/useNavigationHistory/useNavigationHistory.js +146 -0
- package/dist/esm/hooks/useNavigationHistory/useNavigationHistory.js.map +1 -0
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.js +6 -8
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.js.map +1 -1
- package/dist/esm/hooks/useTheme/useTheme.js +6 -3
- package/dist/esm/hooks/useTheme/useTheme.js.map +1 -1
- package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js +9 -4
- package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js.map +1 -1
- package/dist/esm/index.js +63 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js +37 -0
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -0
- package/dist/esm/styles.js +3 -0
- package/dist/esm/styles.js.map +1 -0
- package/dist/esm/theme/ThemeProvider.js +6 -4
- package/dist/esm/theme/ThemeProvider.js.map +1 -1
- package/dist/esm/theme/VanillaThemeProvider.js.map +1 -1
- package/dist/esm/theme/breakpoints.js.map +1 -1
- package/dist/esm/theme/contract.css.js +1 -1
- package/dist/esm/theme/createCustomTheme.js +2 -2
- package/dist/esm/theme/createCustomTheme.js.map +1 -1
- package/dist/esm/theme/createLightTheme.js.map +1 -1
- package/dist/esm/theme/darkTheme.css.js +2 -2
- package/dist/esm/theme/darkThemeValues.js +1 -1
- package/dist/esm/theme/darkThemeValues.js.map +1 -1
- package/dist/esm/theme/lightTheme.css.js +1 -1
- package/dist/esm/theme/lightThemeValues.js +1 -1
- package/dist/esm/theme/lightThemeValues.js.map +1 -1
- package/dist/esm/theme/themeContractData.js +4 -4
- package/dist/esm/theme/themeContractData.js.map +1 -1
- package/dist/esm/utils/cx.js.map +1 -1
- package/dist/esm/utils/devWarn.js +1 -1
- package/dist/esm/utils/devWarn.js.map +1 -1
- package/dist/esm/utils/mathExpression.js +1 -1
- package/dist/esm/utils/mathExpression.js.map +1 -1
- package/dist/esm/utils/mathUtils.js.map +1 -1
- package/dist/esm/utils/objects.js.map +1 -1
- package/dist/esm/utils/platform.js.map +1 -1
- package/dist/tokens/tokens.dark.css +1 -1
- package/dist/tokens/tokens.json +1 -1
- package/dist/tokens/tokens.light.css +1 -1
- package/dist/types/components/Icons/AddIcon.d.ts +1 -1
- package/dist/types/components/Icons/AiChatIcon.d.ts +1 -1
- package/dist/types/components/Icons/AiSparklesIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArchiveIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArrowDownIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArrowLeftIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArrowRightIcon.d.ts +1 -1
- package/dist/types/components/Icons/ArrowUpIcon.d.ts +1 -1
- package/dist/types/components/Icons/BookmarkIcon.d.ts +1 -1
- package/dist/types/components/Icons/BugIcon.d.ts +1 -1
- package/dist/types/components/Icons/BuildingIcon.d.ts +1 -1
- package/dist/types/components/Icons/CalendarIcon.d.ts +1 -1
- package/dist/types/components/Icons/CameraIcon.d.ts +34 -0
- package/dist/types/components/Icons/CheckIcon.d.ts +1 -1
- package/dist/types/components/Icons/ChevronDownIcon.d.ts +1 -1
- package/dist/types/components/Icons/ChevronLeftIcon.d.ts +1 -1
- package/dist/types/components/Icons/ChevronRightIcon.d.ts +1 -1
- package/dist/types/components/Icons/ChevronUpIcon.d.ts +1 -1
- package/dist/types/components/Icons/CircleIcon.d.ts +1 -1
- package/dist/types/components/Icons/ClockIcon.d.ts +1 -1
- package/dist/types/components/Icons/CloseIcon.d.ts +1 -1
- package/dist/types/components/Icons/CloudUploadIcon.d.ts +1 -1
- package/dist/types/components/Icons/CodeIcon.d.ts +1 -1
- package/dist/types/components/Icons/CopyIcon.d.ts +1 -1
- package/dist/types/components/Icons/CubeIcon.d.ts +34 -0
- package/dist/types/components/Icons/CutIcon.d.ts +1 -1
- package/dist/types/components/Icons/DotsHorizontalIcon.d.ts +1 -1
- package/dist/types/components/Icons/DotsVerticalIcon.d.ts +1 -1
- package/dist/types/components/Icons/DownloadIcon.d.ts +1 -1
- package/dist/types/components/Icons/EditIcon.d.ts +1 -1
- package/dist/types/components/Icons/ErrorIcon.d.ts +1 -1
- package/dist/types/components/Icons/ExternalLinkIcon.d.ts +1 -1
- package/dist/types/components/Icons/EyeDropperIcon.d.ts +1 -1
- package/dist/types/components/Icons/EyeIcon.d.ts +1 -1
- package/dist/types/components/Icons/FileTextIcon.d.ts +1 -1
- package/dist/types/components/Icons/FilterIcon.d.ts +1 -1
- package/dist/types/components/Icons/FirstIcon.d.ts +1 -1
- package/dist/types/components/Icons/FolderCogIcon.d.ts +1 -1
- package/dist/types/components/Icons/FolderIcon.d.ts +1 -1
- package/dist/types/components/Icons/FolderOpenIcon.d.ts +1 -1
- package/dist/types/components/Icons/FullscreenIcon.d.ts +1 -1
- package/dist/types/components/Icons/GitBranchIcon.d.ts +1 -1
- package/dist/types/components/Icons/GridIcon.d.ts +1 -1
- package/dist/types/components/Icons/HeartIcon.d.ts +1 -1
- package/dist/types/components/Icons/HelpIcon.d.ts +1 -1
- package/dist/types/components/Icons/HomeIcon.d.ts +1 -1
- package/dist/types/components/Icons/ImageIcon.d.ts +34 -0
- package/dist/types/components/Icons/InfoIcon.d.ts +1 -1
- package/dist/types/components/Icons/LastIcon.d.ts +1 -1
- package/dist/types/components/Icons/LinkIcon.d.ts +1 -1
- package/dist/types/components/Icons/ListIcon.d.ts +1 -1
- package/dist/types/components/Icons/LockIcon.d.ts +1 -1
- package/dist/types/components/Icons/MaximizeIcon.d.ts +1 -1
- package/dist/types/components/Icons/MenuIcon.d.ts +1 -1
- package/dist/types/components/Icons/MinimizeIcon.d.ts +1 -1
- package/dist/types/components/Icons/MinusIcon.d.ts +1 -1
- package/dist/types/components/Icons/OrbitIcon.d.ts +34 -0
- package/dist/types/components/Icons/PasteIcon.d.ts +1 -1
- package/dist/types/components/Icons/PauseIcon.d.ts +1 -1
- package/dist/types/components/Icons/PinIcon.d.ts +1 -1
- package/dist/types/components/Icons/PlayIcon.d.ts +1 -1
- package/dist/types/components/Icons/RedoIcon.d.ts +1 -1
- package/dist/types/components/Icons/RefreshIcon.d.ts +1 -1
- package/dist/types/components/Icons/RobotIcon.d.ts +1 -1
- package/dist/types/components/Icons/RotateIcon.d.ts +35 -0
- package/dist/types/components/Icons/SaveIcon.d.ts +1 -1
- package/dist/types/components/Icons/SearchIcon.d.ts +1 -1
- package/dist/types/components/Icons/SendIcon.d.ts +1 -1
- package/dist/types/components/Icons/SettingsIcon.d.ts +1 -1
- package/dist/types/components/Icons/SortIcon.d.ts +1 -1
- package/dist/types/components/Icons/SpinIcon.d.ts +35 -0
- package/dist/types/components/Icons/StarIcon.d.ts +1 -1
- package/dist/types/components/Icons/StopIcon.d.ts +1 -1
- package/dist/types/components/Icons/SuccessIcon.d.ts +1 -1
- package/dist/types/components/Icons/TagIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentAlignedIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentAutoIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentFreeIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentLinearIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentMirroredIcon.d.ts +1 -1
- package/dist/types/components/Icons/TangentStepIcon.d.ts +1 -1
- package/dist/types/components/Icons/TerminalIcon.d.ts +1 -1
- package/dist/types/components/Icons/TrashIcon.d.ts +1 -1
- package/dist/types/components/Icons/UndoIcon.d.ts +1 -1
- package/dist/types/components/Icons/UnlinkIcon.d.ts +1 -1
- package/dist/types/components/Icons/UnlockIcon.d.ts +1 -1
- package/dist/types/components/Icons/UploadIcon.d.ts +1 -1
- package/dist/types/components/Icons/UserIcon.d.ts +1 -1
- package/dist/types/components/Icons/UsersIcon.d.ts +1 -1
- package/dist/types/components/Icons/WarningIcon.d.ts +1 -1
- package/dist/types/components/Icons/ZoomFitIcon.d.ts +35 -0
- package/dist/types/components/Icons/ZoomInIcon.d.ts +1 -1
- package/dist/types/components/Icons/ZoomOutIcon.d.ts +1 -1
- package/dist/types/components/controls/CartesianPicker/CartesianPicker.types.d.ts +3 -3
- package/dist/types/components/controls/ColorPicker/ColorPicker.types.d.ts +2 -2
- package/dist/types/components/controls/ColorPicker/EyeDropper.d.ts +1 -1
- package/dist/types/components/controls/Combobox/Combobox.types.d.ts +1 -1
- package/dist/types/components/controls/CurveEditor/CurveEditor.types.d.ts +8 -58
- package/dist/types/components/controls/CurveEditor/curveUtils.d.ts +2 -1
- package/dist/types/components/controls/FileTree/FileTree.d.ts +34 -0
- package/dist/types/components/controls/FileTree/FileTree.types.d.ts +133 -0
- package/dist/types/components/controls/FileTree/fileTreeIcons.d.ts +29 -0
- package/dist/types/components/controls/FileTree/fileTreeLabels.d.ts +19 -0
- package/dist/types/components/controls/FileUploader/FileUploader.types.d.ts +2 -2
- package/dist/types/components/controls/MultiSelect/MultiSelect.types.d.ts +1 -1
- package/dist/types/components/controls/NumberInput/NumberInput.d.ts +2 -2
- package/dist/types/components/controls/Select/Select.d.ts +1 -1
- package/dist/types/components/controls/Select/Select.types.d.ts +45 -11
- package/dist/types/components/controls/Slider/Slider.d.ts +1 -1
- package/dist/types/components/controls/TagInput/TagInput.types.d.ts +2 -2
- package/dist/types/components/controls/TreeView/TreeView.d.ts +1 -1
- package/dist/types/components/controls/TreeView/TreeView.types.d.ts +24 -2
- package/dist/types/components/controls/VectorInput/VectorInput.types.d.ts +1 -1
- package/dist/types/components/data/DataTable/DataTable.types.d.ts +2 -2
- package/dist/types/components/editor/AssetBrowser/AssetBrowser.d.ts +13 -0
- package/dist/types/components/editor/AssetBrowser/AssetBrowser.types.d.ts +241 -0
- package/dist/types/components/editor/AssetBrowser/assetBrowserLabels.d.ts +70 -0
- package/dist/types/components/editor/ChatPanel/ChatMarkdownRenderer.types.d.ts +1 -1
- package/dist/types/components/editor/ChatPanel/ChatPanel.types.d.ts +2 -2
- package/dist/types/components/editor/Minimap/Minimap.d.ts +26 -0
- package/dist/types/components/editor/Minimap/Minimap.types.d.ts +249 -0
- package/dist/types/components/editor/Minimap/MinimapContext.d.ts +27 -0
- package/dist/types/components/editor/Minimap/MinimapCorner.d.ts +8 -0
- package/dist/types/components/editor/Minimap/MinimapFooter.d.ts +8 -0
- package/dist/types/components/editor/Minimap/MinimapStore.d.ts +17 -0
- package/dist/types/components/editor/Minimap/MinimapTitle.d.ts +8 -0
- package/dist/types/components/editor/Minimap/ViewportMinimap.d.ts +52 -0
- package/dist/types/components/editor/Minimap/computeBoundsFromItems.d.ts +13 -0
- package/dist/types/components/editor/Minimap/index.d.ts +13 -0
- package/dist/types/components/editor/NodeGraph/NodeGraph.d.ts +63 -0
- package/dist/types/components/editor/NodeGraph/NodeGraph.types.d.ts +568 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphContext.d.ts +30 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphNodeParts.d.ts +86 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphNodeSection.d.ts +47 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphPin.d.ts +57 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphPort.d.ts +30 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphPortVisual.d.ts +46 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphSlots.d.ts +16 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphStore.d.ts +256 -0
- package/dist/types/components/editor/NodeGraph/NodeGraphToolbar.d.ts +54 -0
- package/dist/types/components/editor/NodeGraph/createTypeMatchValidator.d.ts +43 -0
- package/dist/types/components/editor/NodeGraph/nodeGraphActions.d.ts +39 -0
- package/dist/types/components/editor/NodeGraph/nodeGraphIds.d.ts +16 -0
- package/dist/types/components/editor/NodeGraph/useNodeGraph.d.ts +103 -0
- package/dist/types/components/editor/PropertyInspector/PropertyInspector.types.d.ts +51 -5
- package/dist/types/components/editor/Timeline/Timeline.d.ts +18 -0
- package/dist/types/components/editor/Timeline/Timeline.types.d.ts +348 -0
- package/dist/types/components/editor/Timeline/TimelineContext.d.ts +51 -0
- package/dist/types/components/editor/Timeline/TimelineFooter.d.ts +8 -0
- package/dist/types/components/editor/Timeline/TimelineMinimap.d.ts +21 -0
- package/dist/types/components/editor/Timeline/TimelineStore.d.ts +41 -0
- package/dist/types/components/editor/Timeline/TimelineToolbar.d.ts +8 -0
- package/dist/types/components/editor/Timeline/TimelineTrackScale.d.ts +8 -0
- package/dist/types/components/editor/Timeline/index.d.ts +15 -0
- package/dist/types/components/editor/Timeline/timelineCoords.d.ts +7 -0
- package/dist/types/components/editor/Timeline/timelineEdits.d.ts +18 -0
- package/dist/types/components/editor/TransformControl/TransformControl.types.d.ts +2 -2
- package/dist/types/components/editor/ViewportGizmo/ViewportGizmo.types.d.ts +1 -1
- package/dist/types/components/feedback/Alert/Alert.d.ts +2 -2
- package/dist/types/components/feedback/Alert/Alert.types.d.ts +5 -5
- package/dist/types/components/feedback/CommandPalette/CommandPalette.types.d.ts +1 -3
- package/dist/types/components/feedback/Dialog/Dialog.types.d.ts +2 -2
- package/dist/types/components/feedback/Drawer/Drawer.types.d.ts +1 -1
- package/dist/types/components/feedback/EmptyState/EmptyState.types.d.ts +2 -2
- package/dist/types/components/feedback/LogView/LogView.d.ts +58 -0
- package/dist/types/components/feedback/LogView/LogView.types.d.ts +333 -0
- package/dist/types/components/feedback/LogView/LogViewBody.d.ts +15 -0
- package/dist/types/components/feedback/LogView/LogViewContext.d.ts +9 -0
- package/dist/types/components/feedback/LogView/LogViewParts.d.ts +35 -0
- package/dist/types/components/feedback/LogView/LogViewStore.d.ts +4 -0
- package/dist/types/components/feedback/LogView/logViewLabels.d.ts +9 -0
- package/dist/types/components/feedback/LogView/logViewUtils.d.ts +41 -0
- package/dist/types/components/feedback/ProgressBar/ProgressBar.types.d.ts +3 -3
- package/dist/types/components/feedback/Skeleton/Skeleton.types.d.ts +4 -4
- package/dist/types/components/feedback/Stat/Stat.types.d.ts +2 -2
- package/dist/types/components/feedback/Toast/Toast.types.d.ts +1 -1
- package/dist/types/components/form/FormHelperText.d.ts +2 -2
- package/dist/types/components/form/FormLabel.d.ts +1 -1
- package/dist/types/components/form/InputWrapper.d.ts +2 -2
- package/dist/types/components/layout/Accordion/Accordion.types.d.ts +2 -2
- package/dist/types/components/layout/Card/Card.types.d.ts +6 -6
- package/dist/types/components/layout/Divider/Divider.types.d.ts +2 -2
- package/dist/types/components/layout/Flex/Flex.d.ts +1 -1
- package/dist/types/components/layout/Grid/Grid.d.ts +1 -1
- package/dist/types/components/layout/ListItem/ListItem.types.d.ts +2 -2
- package/dist/types/components/layout/PageHeader/PageHeader.types.d.ts +1 -1
- package/dist/types/components/layout/PanelSurface/PanelSurface.types.d.ts +6 -6
- package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +2 -2
- package/dist/types/components/layout/Stack/Stack.d.ts +1 -1
- package/dist/types/components/navigation/Breadcrumbs/BreadcrumbItem.d.ts +1 -0
- package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts +7 -0
- package/dist/types/components/navigation/ContextMenu/ContextMenu.d.ts +18 -3
- package/dist/types/components/navigation/ContextMenu/ContextMenu.types.d.ts +55 -63
- package/dist/types/components/navigation/Menu/Menu.d.ts +38 -35
- package/dist/types/components/navigation/Menu/Menu.types.d.ts +190 -71
- package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +1 -1
- package/dist/types/components/navigation/PathBar/PathBar.d.ts +31 -0
- package/dist/types/components/navigation/PathBar/PathBar.types.d.ts +79 -0
- package/dist/types/components/navigation/SegmentedControl/SegmentedControl.types.d.ts +3 -3
- package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +2 -2
- package/dist/types/components/primitives/Avatar/Avatar.types.d.ts +2 -2
- package/dist/types/components/primitives/Badge/Badge.types.d.ts +1 -1
- package/dist/types/components/primitives/Button/Button.d.ts +2 -2
- package/dist/types/components/primitives/Checkbox/Checkbox.types.d.ts +2 -2
- package/dist/types/components/primitives/Code/Code.types.d.ts +1 -1
- package/dist/types/components/primitives/Collapsible/Collapsible.types.d.ts +2 -2
- package/dist/types/components/primitives/HoverCard/HoverCard.types.d.ts +3 -3
- package/dist/types/components/primitives/Icon/Icon.d.ts +2 -2
- package/dist/types/components/primitives/IconButton/IconButton.d.ts +1 -1
- package/dist/types/components/primitives/Input/Input.d.ts +1 -1
- package/dist/types/components/primitives/Kbd/Kbd.types.d.ts +1 -1
- package/dist/types/components/primitives/Link/Link.types.d.ts +1 -1
- package/dist/types/components/primitives/Popover/Popover.types.d.ts +2 -2
- package/dist/types/components/primitives/Radio/Radio.types.d.ts +3 -3
- package/dist/types/components/primitives/Switch/Switch.d.ts +1 -1
- package/dist/types/components/primitives/TextArea/TextArea.types.d.ts +1 -1
- package/dist/types/components/primitives/Tooltip/Tooltip.d.ts +1 -1
- package/dist/types/components/primitives/VisuallyHidden/VisuallyHidden.types.d.ts +1 -1
- package/dist/types/components/primitives/canvas/canvas.types.d.ts +16 -1
- package/dist/types/components/primitives/viewport/Viewport.d.ts +38 -0
- package/dist/types/components/primitives/viewport/Viewport.types.d.ts +257 -0
- package/dist/types/components/primitives/viewport/ViewportContext.d.ts +23 -0
- package/dist/types/components/primitives/viewport/ViewportLayer.d.ts +26 -0
- package/dist/types/components/primitives/viewport/ViewportOverlay.d.ts +27 -0
- package/dist/types/components/primitives/viewport/ViewportWorld.d.ts +25 -0
- package/dist/types/components/primitives/viewport/viewportCoords.d.ts +25 -0
- package/dist/types/components/primitives/viewport/viewportMath.d.ts +35 -0
- package/dist/types/components/shell/AppShell/AppShell.types.d.ts +2 -2
- package/dist/types/components/shell/FloatingPanel/FloatingPanel.types.d.ts +2 -2
- package/dist/types/components/shell/MenuBar/MenuBar.types.d.ts +5 -5
- package/dist/types/components/shell/StatusBar/StatusBar.types.d.ts +3 -3
- package/dist/types/components/shell/Toolbar/Toolbar.types.d.ts +5 -5
- package/dist/types/hooks/useDebounced/useDebouncedValue.d.ts +13 -4
- package/dist/types/hooks/useEventCallback/useEventCallback.d.ts +32 -0
- package/dist/types/hooks/useIsMounted/useIsMounted.d.ts +28 -0
- package/dist/types/hooks/useKeyboard/types.d.ts +1 -1
- package/dist/types/hooks/useLatest/useLatest.d.ts +23 -0
- package/dist/types/hooks/useResizeObserver/useResizeObserver.d.ts +3 -3
- package/dist/types/index.d.ts +71 -6
- package/dist/types/theme/ThemeProvider.d.ts +5 -3
- package/dist/types/theme/contract.css.d.ts +1 -1
- package/dist/types/theme/createCustomTheme.d.ts +1 -1
- package/dist/types/theme/darkThemeValues.d.ts +1 -1
- package/dist/types/theme/lightThemeValues.d.ts +1 -1
- package/dist/types/theme/themeContractData.d.ts +4 -4
- package/dist/types/theme-values.d.ts +1 -1
- package/dist/types/types/keyframe.d.ts +64 -0
- package/package.json +34 -18
- package/dist/esm/_virtual/_commonjsHelpers.js +0 -6
- package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/esm/_virtual/cjs.js +0 -4
- package/dist/esm/_virtual/cjs.js.map +0 -1
- package/dist/esm/_virtual/cssesc.js +0 -8
- package/dist/esm/_virtual/cssesc.js.map +0 -1
- package/dist/esm/_virtual/picocolors.js +0 -8
- package/dist/esm/_virtual/picocolors.js.map +0 -1
- package/dist/esm/_virtual/picocolors2.js +0 -4
- package/dist/esm/_virtual/picocolors2.js.map +0 -1
- package/dist/esm/assets/src/components/navigation/Menu/Menu.css.ts.vanilla-DD0c5D10.css +0 -67
- package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js +0 -53
- package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js.map +0 -1
- package/dist/esm/components/navigation/Menu/Menu.helpers.js +0 -53
- package/dist/esm/components/navigation/Menu/Menu.helpers.js.map +0 -1
- package/dist/esm/components/navigation/Menu/useMenu.js +0 -88
- package/dist/esm/components/navigation/Menu/useMenu.js.map +0 -1
- package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js +0 -56
- package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js +0 -46
- package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js +0 -13
- package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js +0 -962
- package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js +0 -309
- package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js +0 -18
- package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js +0 -23
- package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js +0 -1543
- package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js +0 -38
- package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js.map +0 -1
- package/dist/esm/node_modules/css-what/lib/es/parse.js +0 -424
- package/dist/esm/node_modules/css-what/lib/es/parse.js.map +0 -1
- package/dist/esm/node_modules/css-what/lib/es/types.js +0 -29
- package/dist/esm/node_modules/css-what/lib/es/types.js.map +0 -1
- package/dist/esm/node_modules/cssesc/cssesc.js +0 -120
- package/dist/esm/node_modules/cssesc/cssesc.js.map +0 -1
- package/dist/esm/node_modules/dedent/dist/dedent.js +0 -100
- package/dist/esm/node_modules/dedent/dist/dedent.js.map +0 -1
- package/dist/esm/node_modules/deep-object-diff/mjs/diff.js +0 -40
- package/dist/esm/node_modules/deep-object-diff/mjs/diff.js.map +0 -1
- package/dist/esm/node_modules/deep-object-diff/mjs/utils.js +0 -9
- package/dist/esm/node_modules/deep-object-diff/mjs/utils.js.map +0 -1
- package/dist/esm/node_modules/deepmerge/dist/cjs.js +0 -143
- package/dist/esm/node_modules/deepmerge/dist/cjs.js.map +0 -1
- package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js +0 -1386
- package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js.map +0 -1
- package/dist/esm/node_modules/modern-ahocorasick/dist/index.js +0 -102
- package/dist/esm/node_modules/modern-ahocorasick/dist/index.js.map +0 -1
- package/dist/esm/node_modules/picocolors/picocolors.js +0 -87
- package/dist/esm/node_modules/picocolors/picocolors.js.map +0 -1
- package/dist/types/components/navigation/ContextMenu/useContextMenuTarget.d.ts +0 -5
- package/dist/types/components/navigation/Menu/useMenu.d.ts +0 -16
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import React, { useRef, useCallback, useMemo, useSyncExternalStore, useLayoutEffect } from 'react';
|
|
4
|
+
import { useViewportStore } from '../../primitives/viewport/ViewportContext.js';
|
|
5
|
+
import '../../../utils/devWarn.js';
|
|
6
|
+
import { useResizeObserver } from '../../../hooks/useResizeObserver/useResizeObserver.js';
|
|
7
|
+
import '../../../hooks/useBreakpoint/useBreakpoint.js';
|
|
8
|
+
import './../../../assets/src/theme/lightTheme.css.ts.vanilla-Ct6f9Iym.css';
|
|
9
|
+
import '@vanilla-extract/css';
|
|
10
|
+
import './../../../assets/src/theme/darkTheme.css.ts.vanilla-BHZ3ecRn.css';
|
|
11
|
+
import './../../../assets/src/theme/globalScrollbars.css.ts.vanilla-BAJwnUEJ.css';
|
|
12
|
+
import '../../../hooks/useNavigationHistory/useNavigationHistory.js';
|
|
13
|
+
import { cx } from '../../../utils/cx.js';
|
|
14
|
+
import { portSlotRecipe } from './NodeGraph.css.js';
|
|
15
|
+
import { useNodeGraphStore } from './NodeGraphContext.js';
|
|
16
|
+
import { useNodeGraphNodeContext } from './NodeGraphNodeContext.js';
|
|
17
|
+
import { useNodeGraphNodeSection } from './NodeGraphNodeSectionContext.js';
|
|
18
|
+
import { NodeGraphPortVisual } from './NodeGraphPortVisual.js';
|
|
19
|
+
import { useStoreSlice } from './useStoreSlice.js';
|
|
20
|
+
|
|
21
|
+
const EMPTY_VISUAL = {
|
|
22
|
+
isSource: false,
|
|
23
|
+
isCandidate: false,
|
|
24
|
+
isInvalid: false,
|
|
25
|
+
isHovered: false,
|
|
26
|
+
};
|
|
27
|
+
function visualEqual(a, b) {
|
|
28
|
+
return (a.isSource === b.isSource &&
|
|
29
|
+
a.isCandidate === b.isCandidate &&
|
|
30
|
+
a.isInvalid === b.isInvalid &&
|
|
31
|
+
a.isHovered === b.isHovered);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* `<NodeGraph.Port>` — compound slot that declares a connection endpoint
|
|
35
|
+
* for the current node. Render it anywhere inside `renderNode`; the
|
|
36
|
+
* library measures its DOM position, registers it as the anchor for any
|
|
37
|
+
* edge that references this port id, and wires pointer events so the
|
|
38
|
+
* user can drag from it to start a connection.
|
|
39
|
+
*
|
|
40
|
+
* The slot renders a single `<span>` with `display: inline-flex` — drop
|
|
41
|
+
* it inline next to a label and it will sit beside the text. The wrapper
|
|
42
|
+
* carries the default UE-style circle / exec-triangle visual; pass
|
|
43
|
+
* `children` to replace the chrome entirely (state for theming is
|
|
44
|
+
* exposed via `data-port-*` attributes).
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```tsx
|
|
48
|
+
* <NodeGraph.Port id="in" side="left" dataType="exec" />
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* Wrapped in `React.memo` — ports re-mount on every consumer `renderNode`
|
|
52
|
+
* call by default, so memoization only helps consumers who memoize their
|
|
53
|
+
* own node body. When they do, ports skip re-renders on unrelated store
|
|
54
|
+
* updates entirely.
|
|
55
|
+
*/
|
|
56
|
+
function NodeGraphPortImpl({ id, side, dataType, shape = 'circle', color, filled, children, label, className, style, }) {
|
|
57
|
+
const { nodeId, onPortPointerDown } = useNodeGraphNodeContext();
|
|
58
|
+
const { collapsed } = useNodeGraphNodeSection();
|
|
59
|
+
const store = useNodeGraphStore();
|
|
60
|
+
const viewportStore = useViewportStore();
|
|
61
|
+
const elementRef = useRef(null);
|
|
62
|
+
// ── Connected state (slice subscription — only flips re-render) ──
|
|
63
|
+
// The store recomputes the connected-ports index when edges change, so
|
|
64
|
+
// each port re-renders only when its own connected-ness actually flips.
|
|
65
|
+
const connected = useStoreSlice(store.subscribeConnectedPorts, store.getConnectedPorts, () => store.isPortConnected(nodeId, id));
|
|
66
|
+
// ── Per-port visual state (slice subscription — no re-render storm) ──
|
|
67
|
+
const visual = useStoreSlice(store.subscribeInteraction, store.getInteraction, interaction => {
|
|
68
|
+
if (interaction.kind !== 'connect')
|
|
69
|
+
return EMPTY_VISUAL;
|
|
70
|
+
const isSource = interaction.source.node === nodeId && interaction.source.port === id;
|
|
71
|
+
const isCandidate = interaction.candidate !== null &&
|
|
72
|
+
interaction.candidate.node === nodeId &&
|
|
73
|
+
interaction.candidate.port === id;
|
|
74
|
+
if (!isSource && !isCandidate)
|
|
75
|
+
return EMPTY_VISUAL;
|
|
76
|
+
return {
|
|
77
|
+
isSource,
|
|
78
|
+
isCandidate,
|
|
79
|
+
isInvalid: isCandidate && interaction.invalid,
|
|
80
|
+
isHovered: false,
|
|
81
|
+
};
|
|
82
|
+
}, visualEqual);
|
|
83
|
+
const hoverState = useStoreSlice(store.subscribeHover, store.getHover, hover => ({
|
|
84
|
+
...EMPTY_VISUAL,
|
|
85
|
+
isHovered: hover.hoveredPort !== null &&
|
|
86
|
+
hover.hoveredPort.node === nodeId &&
|
|
87
|
+
hover.hoveredPort.port === id,
|
|
88
|
+
}), visualEqual);
|
|
89
|
+
const isHovered = hoverState.isHovered;
|
|
90
|
+
const isSource = visual.isSource;
|
|
91
|
+
const isCandidate = visual.isCandidate;
|
|
92
|
+
const isInvalid = visual.isInvalid;
|
|
93
|
+
// ── DOM measurement → store ──
|
|
94
|
+
//
|
|
95
|
+
// Run synchronously before paint so first frame's edges anchor at the
|
|
96
|
+
// correct point. `useResizeObserver` picks up later size changes on the
|
|
97
|
+
// port itself, and the per-node layout-version subscription below picks
|
|
98
|
+
// up layout shifts inside the node body that move the port without
|
|
99
|
+
// resizing it (e.g. a sibling row expands).
|
|
100
|
+
//
|
|
101
|
+
// `closest('[data-node-id]:not([data-port-id])')` skips the slot itself
|
|
102
|
+
// — the slot wrapper carries `data-node-id` too (so connection-drop
|
|
103
|
+
// hit-tests can walk up from any descendant), so a plain `[data-node-id]`
|
|
104
|
+
// would match the port and report position (~6, ~6) for every port.
|
|
105
|
+
const measure = useCallback(() => {
|
|
106
|
+
// Inside a collapsed section the port is hidden; drop its registered
|
|
107
|
+
// position so its edges hide too (re-registers on expand). The component
|
|
108
|
+
// stays mounted, so no remount churn.
|
|
109
|
+
if (collapsed) {
|
|
110
|
+
store.removePortPosition(nodeId, id);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const el = elementRef.current;
|
|
114
|
+
if (!el)
|
|
115
|
+
return;
|
|
116
|
+
const wrapper = el.closest('[data-node-id]:not([data-port-id])');
|
|
117
|
+
if (!wrapper)
|
|
118
|
+
return;
|
|
119
|
+
const portRect = el.getBoundingClientRect();
|
|
120
|
+
const nodeRect = wrapper.getBoundingClientRect();
|
|
121
|
+
// Convert from screen pixels to node-local world units. `ViewportWorld`
|
|
122
|
+
// applies `transform: scale(zoom)` to all node wrappers, so the rects
|
|
123
|
+
// we just read are scaled by `zoom`. Dividing brings us back to the
|
|
124
|
+
// un-scaled layout pixels, which are 1:1 with world units inside a node.
|
|
125
|
+
const zoom = viewportStore.getTransform().zoom || 1;
|
|
126
|
+
const x = (portRect.left + portRect.width / 2 - nodeRect.left) / zoom;
|
|
127
|
+
const y = (portRect.top + portRect.height / 2 - nodeRect.top) / zoom;
|
|
128
|
+
store.setPortPosition(nodeId, id, { x, y, side, dataType });
|
|
129
|
+
}, [store, viewportStore, nodeId, id, side, dataType, collapsed]);
|
|
130
|
+
// Re-measure triggers (the per-port `ResizeObserver` only fires when
|
|
131
|
+
// the port's own size changes, which misses layout shifts inside the
|
|
132
|
+
// node body that move the port without resizing it — e.g. a sibling
|
|
133
|
+
// row expanding). Subscribing to the per-node measured size makes this
|
|
134
|
+
// component re-render on every wrapper resize, and the layout effect
|
|
135
|
+
// below re-runs the measurement.
|
|
136
|
+
const getMeasuredForNode = useMemo(() => () => store.getMeasuredSize(nodeId), [store, nodeId]);
|
|
137
|
+
const measuredSize = useSyncExternalStore(store.subscribeMeasuredSizes, getMeasuredForNode);
|
|
138
|
+
useLayoutEffect(() => {
|
|
139
|
+
measure();
|
|
140
|
+
}, [measure, measuredSize]);
|
|
141
|
+
useResizeObserver(elementRef, () => {
|
|
142
|
+
measure();
|
|
143
|
+
});
|
|
144
|
+
// Unregister on unmount / id change.
|
|
145
|
+
useLayoutEffect(() => {
|
|
146
|
+
return () => {
|
|
147
|
+
store.removePortPosition(nodeId, id);
|
|
148
|
+
};
|
|
149
|
+
}, [store, nodeId, id]);
|
|
150
|
+
// ── Hover wiring ──
|
|
151
|
+
//
|
|
152
|
+
// Update the store's `hoveredPort` slice on enter/leave so node bodies,
|
|
153
|
+
// edges, and other ports can react. Library guards against duplicate
|
|
154
|
+
// notifications when the value doesn't actually change.
|
|
155
|
+
const onPointerEnter = useCallback(() => {
|
|
156
|
+
const current = store.getHover();
|
|
157
|
+
if (current.hoveredPort?.node === nodeId && current.hoveredPort.port === id)
|
|
158
|
+
return;
|
|
159
|
+
store.setHover({ ...current, hoveredPort: { node: nodeId, port: id } });
|
|
160
|
+
}, [store, nodeId, id]);
|
|
161
|
+
const onPointerLeave = useCallback(() => {
|
|
162
|
+
const current = store.getHover();
|
|
163
|
+
if (current.hoveredPort?.node !== nodeId || current.hoveredPort.port !== id)
|
|
164
|
+
return;
|
|
165
|
+
store.setHover({ ...current, hoveredPort: null });
|
|
166
|
+
}, [store, nodeId, id]);
|
|
167
|
+
const handlePointerDown = useCallback((event) => {
|
|
168
|
+
onPortPointerDown(event, id);
|
|
169
|
+
}, [onPortPointerDown, id]);
|
|
170
|
+
const hasCustomVisual = children !== undefined && children !== null;
|
|
171
|
+
const isFilled = filled ?? connected;
|
|
172
|
+
// Route the consumer's `color` into the slot via a CSS custom property so
|
|
173
|
+
// the built-in visual (which paints with `currentColor`) picks it up,
|
|
174
|
+
// while the source / candidate / invalid recipe variants can still
|
|
175
|
+
// override `color` to keep connection-drag feedback visible.
|
|
176
|
+
const portStyle = color !== undefined
|
|
177
|
+
? { ['--etui-ng-port-color']: color, ...style }
|
|
178
|
+
: style;
|
|
179
|
+
return (jsx("span", { ref: elementRef, role: "button", tabIndex: -1, "aria-label": label ?? `${side} port ${id}`, "data-node-id": nodeId, "data-port-id": id, "data-port-side": side, "data-port-data-type": dataType, "data-port-source": isSource || undefined, "data-port-candidate": isCandidate || undefined, "data-port-invalid": isInvalid || undefined, "data-port-hovered": isHovered || undefined, "data-port-connected": connected || undefined, className: cx(portSlotRecipe({
|
|
180
|
+
side,
|
|
181
|
+
custom: hasCustomVisual,
|
|
182
|
+
source: isSource,
|
|
183
|
+
candidate: isCandidate,
|
|
184
|
+
invalid: isInvalid,
|
|
185
|
+
}), className), style: portStyle, onPointerDown: handlePointerDown, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, children: hasCustomVisual ? (children) : (jsx(NodeGraphPortVisual, { shape: shape, filled: isFilled })) }));
|
|
186
|
+
}
|
|
187
|
+
const NodeGraphPort = React.memo(NodeGraphPortImpl);
|
|
188
|
+
NodeGraphPort.displayName = 'NodeGraphPort';
|
|
189
|
+
|
|
190
|
+
export { NodeGraphPort };
|
|
191
|
+
//# sourceMappingURL=NodeGraphPort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeGraphPort.js","sources":["src/components/editor/NodeGraph/NodeGraphPort.tsx"],"sourcesContent":["'use client';\n\nimport React, {\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from 'react';\n\nimport { useViewportStore } from '@/components/primitives/viewport/ViewportContext';\nimport { useResizeObserver } from '@/hooks';\nimport { cx } from '@/utils/cx';\n\nimport { portSlotRecipe } from './NodeGraph.css';\nimport { useNodeGraphStore } from './NodeGraphContext';\nimport { useNodeGraphNodeContext } from './NodeGraphNodeContext';\nimport { useNodeGraphNodeSection } from './NodeGraphNodeSectionContext';\nimport { NodeGraphPortVisual } from './NodeGraphPortVisual';\nimport { useStoreSlice } from './useStoreSlice';\n\nimport type { NodeGraphPortSlotProps } from './NodeGraph.types';\n\ninterface PortVisualState {\n isSource: boolean;\n isCandidate: boolean;\n isInvalid: boolean;\n isHovered: boolean;\n}\n\nconst EMPTY_VISUAL: PortVisualState = {\n isSource: false,\n isCandidate: false,\n isInvalid: false,\n isHovered: false,\n};\n\nfunction visualEqual(a: PortVisualState, b: PortVisualState): boolean {\n return (\n a.isSource === b.isSource &&\n a.isCandidate === b.isCandidate &&\n a.isInvalid === b.isInvalid &&\n a.isHovered === b.isHovered\n );\n}\n\n/**\n * `<NodeGraph.Port>` — compound slot that declares a connection endpoint\n * for the current node. Render it anywhere inside `renderNode`; the\n * library measures its DOM position, registers it as the anchor for any\n * edge that references this port id, and wires pointer events so the\n * user can drag from it to start a connection.\n *\n * The slot renders a single `<span>` with `display: inline-flex` — drop\n * it inline next to a label and it will sit beside the text. The wrapper\n * carries the default UE-style circle / exec-triangle visual; pass\n * `children` to replace the chrome entirely (state for theming is\n * exposed via `data-port-*` attributes).\n *\n * @example\n * ```tsx\n * <NodeGraph.Port id=\"in\" side=\"left\" dataType=\"exec\" />\n * ```\n *\n * Wrapped in `React.memo` — ports re-mount on every consumer `renderNode`\n * call by default, so memoization only helps consumers who memoize their\n * own node body. When they do, ports skip re-renders on unrelated store\n * updates entirely.\n */\nfunction NodeGraphPortImpl({\n id,\n side,\n dataType,\n shape = 'circle',\n color,\n filled,\n children,\n label,\n className,\n style,\n}: NodeGraphPortSlotProps): React.ReactElement {\n const { nodeId, onPortPointerDown } = useNodeGraphNodeContext();\n const { collapsed } = useNodeGraphNodeSection();\n const store = useNodeGraphStore();\n const viewportStore = useViewportStore();\n const elementRef = useRef<HTMLSpanElement>(null);\n\n // ── Connected state (slice subscription — only flips re-render) ──\n // The store recomputes the connected-ports index when edges change, so\n // each port re-renders only when its own connected-ness actually flips.\n const connected = useStoreSlice(\n store.subscribeConnectedPorts,\n store.getConnectedPorts,\n () => store.isPortConnected(nodeId, id)\n );\n\n // ── Per-port visual state (slice subscription — no re-render storm) ──\n const visual = useStoreSlice(\n store.subscribeInteraction,\n store.getInteraction,\n interaction => {\n if (interaction.kind !== 'connect') return EMPTY_VISUAL;\n const isSource =\n interaction.source.node === nodeId && interaction.source.port === id;\n const isCandidate =\n interaction.candidate !== null &&\n interaction.candidate.node === nodeId &&\n interaction.candidate.port === id;\n if (!isSource && !isCandidate) return EMPTY_VISUAL;\n return {\n isSource,\n isCandidate,\n isInvalid: isCandidate && interaction.invalid,\n isHovered: false,\n };\n },\n visualEqual\n );\n\n const hoverState = useStoreSlice(\n store.subscribeHover,\n store.getHover,\n hover => ({\n ...EMPTY_VISUAL,\n isHovered:\n hover.hoveredPort !== null &&\n hover.hoveredPort.node === nodeId &&\n hover.hoveredPort.port === id,\n }),\n visualEqual\n );\n\n const isHovered = hoverState.isHovered;\n const isSource = visual.isSource;\n const isCandidate = visual.isCandidate;\n const isInvalid = visual.isInvalid;\n\n // ── DOM measurement → store ──\n //\n // Run synchronously before paint so first frame's edges anchor at the\n // correct point. `useResizeObserver` picks up later size changes on the\n // port itself, and the per-node layout-version subscription below picks\n // up layout shifts inside the node body that move the port without\n // resizing it (e.g. a sibling row expands).\n //\n // `closest('[data-node-id]:not([data-port-id])')` skips the slot itself\n // — the slot wrapper carries `data-node-id` too (so connection-drop\n // hit-tests can walk up from any descendant), so a plain `[data-node-id]`\n // would match the port and report position (~6, ~6) for every port.\n const measure = useCallback((): void => {\n // Inside a collapsed section the port is hidden; drop its registered\n // position so its edges hide too (re-registers on expand). The component\n // stays mounted, so no remount churn.\n if (collapsed) {\n store.removePortPosition(nodeId, id);\n return;\n }\n const el = elementRef.current;\n if (!el) return;\n const wrapper = el.closest('[data-node-id]:not([data-port-id])');\n if (!wrapper) return;\n const portRect = el.getBoundingClientRect();\n const nodeRect = wrapper.getBoundingClientRect();\n // Convert from screen pixels to node-local world units. `ViewportWorld`\n // applies `transform: scale(zoom)` to all node wrappers, so the rects\n // we just read are scaled by `zoom`. Dividing brings us back to the\n // un-scaled layout pixels, which are 1:1 with world units inside a node.\n const zoom = viewportStore.getTransform().zoom || 1;\n const x = (portRect.left + portRect.width / 2 - nodeRect.left) / zoom;\n const y = (portRect.top + portRect.height / 2 - nodeRect.top) / zoom;\n store.setPortPosition(nodeId, id, { x, y, side, dataType });\n }, [store, viewportStore, nodeId, id, side, dataType, collapsed]);\n\n // Re-measure triggers (the per-port `ResizeObserver` only fires when\n // the port's own size changes, which misses layout shifts inside the\n // node body that move the port without resizing it — e.g. a sibling\n // row expanding). Subscribing to the per-node measured size makes this\n // component re-render on every wrapper resize, and the layout effect\n // below re-runs the measurement.\n const getMeasuredForNode = useMemo(\n () => () => store.getMeasuredSize(nodeId),\n [store, nodeId]\n );\n const measuredSize = useSyncExternalStore(\n store.subscribeMeasuredSizes,\n getMeasuredForNode\n );\n\n useLayoutEffect(() => {\n measure();\n }, [measure, measuredSize]);\n\n useResizeObserver(elementRef, () => {\n measure();\n });\n\n // Unregister on unmount / id change.\n useLayoutEffect(() => {\n return () => {\n store.removePortPosition(nodeId, id);\n };\n }, [store, nodeId, id]);\n\n // ── Hover wiring ──\n //\n // Update the store's `hoveredPort` slice on enter/leave so node bodies,\n // edges, and other ports can react. Library guards against duplicate\n // notifications when the value doesn't actually change.\n const onPointerEnter = useCallback((): void => {\n const current = store.getHover();\n if (current.hoveredPort?.node === nodeId && current.hoveredPort.port === id)\n return;\n store.setHover({ ...current, hoveredPort: { node: nodeId, port: id } });\n }, [store, nodeId, id]);\n\n const onPointerLeave = useCallback((): void => {\n const current = store.getHover();\n if (current.hoveredPort?.node !== nodeId || current.hoveredPort.port !== id)\n return;\n store.setHover({ ...current, hoveredPort: null });\n }, [store, nodeId, id]);\n\n const handlePointerDown = useCallback(\n (event: React.PointerEvent<HTMLSpanElement>): void => {\n onPortPointerDown(event, id);\n },\n [onPortPointerDown, id]\n );\n\n const hasCustomVisual = children !== undefined && children !== null;\n const isFilled = filled ?? connected;\n\n // Route the consumer's `color` into the slot via a CSS custom property so\n // the built-in visual (which paints with `currentColor`) picks it up,\n // while the source / candidate / invalid recipe variants can still\n // override `color` to keep connection-drag feedback visible.\n const portStyle: React.CSSProperties | undefined =\n color !== undefined\n ? { ['--etui-ng-port-color' as string]: color, ...style }\n : style;\n\n return (\n <span\n ref={elementRef}\n role=\"button\"\n tabIndex={-1}\n aria-label={label ?? `${side} port ${id}`}\n data-node-id={nodeId}\n data-port-id={id}\n data-port-side={side}\n data-port-data-type={dataType}\n data-port-source={isSource || undefined}\n data-port-candidate={isCandidate || undefined}\n data-port-invalid={isInvalid || undefined}\n data-port-hovered={isHovered || undefined}\n data-port-connected={connected || undefined}\n className={cx(\n portSlotRecipe({\n side,\n custom: hasCustomVisual,\n source: isSource,\n candidate: isCandidate,\n invalid: isInvalid,\n }),\n className\n )}\n style={portStyle}\n onPointerDown={handlePointerDown}\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n >\n {hasCustomVisual ? (\n children\n ) : (\n <NodeGraphPortVisual shape={shape} filled={isFilled} />\n )}\n </span>\n );\n}\n\nexport const NodeGraphPort = React.memo(NodeGraphPortImpl);\nNodeGraphPort.displayName = 'NodeGraphPort';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA8BA;AACE;AACA;AACA;AACA;;AAGF;AACE;AAEE;AACA;AACA;AAEJ;AAEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACH;;AAaE;AACA;AACA;AACA;;;;;;AAYA;AAII;AAAoC;AACpC;AAEA;AAEE;AACA;AACF;AAA+B;;;;AAI7B;AACA;;;AAMN;AAII;AACA;AAEE;AACA;;AAKN;AACA;AACA;AACA;;;;;;;;;;;;;AAcA;;;;;AAKI;;;AAGF;AACA;;;AAEA;;AACA;AACA;;;;;;AAMA;AACA;AACA;AACF;;;;;;;;;;AAkBE;AACF;AAEA;AACE;AACF;;;AAIE;AACE;AACF;;;;;;;AAQF;AACE;AACA;;;;AAKF;AACE;AACA;;AAEA;;AAGF;AAEI;AACF;;AAKF;;;;;AAMA;;;;;AAuBQ;AACA;AACA;AACA;;AAgBV;AAEO;AACP;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// All shapes are authored in a 16×16 user space and scaled to `size`, so a
|
|
5
|
+
// single stroke width reads consistently across shapes.
|
|
6
|
+
const VIEW = 16;
|
|
7
|
+
const STROKE = 2;
|
|
8
|
+
function shapeElement(shape, stroke, fill) {
|
|
9
|
+
const common = {
|
|
10
|
+
stroke,
|
|
11
|
+
fill,
|
|
12
|
+
strokeWidth: STROKE,
|
|
13
|
+
strokeLinejoin: 'round',
|
|
14
|
+
};
|
|
15
|
+
switch (shape) {
|
|
16
|
+
case 'square':
|
|
17
|
+
return jsx("rect", { x: 3, y: 3, width: 10, height: 10, rx: 1.5, ...common });
|
|
18
|
+
case 'diamond':
|
|
19
|
+
return jsx("polygon", { points: "8,2 14,8 8,14 2,8", ...common });
|
|
20
|
+
case 'triangle':
|
|
21
|
+
// Right-pointing exec/flow arrow (UE Blueprint convention).
|
|
22
|
+
return jsx("polygon", { points: "3,2.5 13.5,8 3,13.5", ...common });
|
|
23
|
+
case 'circle':
|
|
24
|
+
default:
|
|
25
|
+
return jsx("circle", { cx: 8, cy: 8, r: 5, ...common });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Presentational handle shape for a node-graph port. Rendered by
|
|
30
|
+
* `<NodeGraph.Port>` when no `children` are supplied, and exported so
|
|
31
|
+
* consumers can reuse the exact handle look inside fully custom port
|
|
32
|
+
* visuals (e.g. a coloured ring beside a typed label).
|
|
33
|
+
*
|
|
34
|
+
* The shape paints with `currentColor` unless `color` is set, which lets
|
|
35
|
+
* the port slot drive the colour from its `color` prop and override it on
|
|
36
|
+
* the connection-drag states without this component knowing about them.
|
|
37
|
+
*/
|
|
38
|
+
function NodeGraphPortVisual({ shape = 'circle', color, filled = false, size = 14, className, style, }) {
|
|
39
|
+
const stroke = color ?? 'currentColor';
|
|
40
|
+
const fill = filled ? (color ?? 'currentColor') : 'none';
|
|
41
|
+
return (jsx("svg", { width: size, height: size, viewBox: `0 0 ${VIEW} ${VIEW}`, className: className, style: { display: 'block', overflow: 'visible', ...style }, "aria-hidden": "true", focusable: "false", children: shapeElement(shape, stroke, fill) }));
|
|
42
|
+
}
|
|
43
|
+
NodeGraphPortVisual.displayName = 'NodeGraphPortVisual';
|
|
44
|
+
|
|
45
|
+
export { NodeGraphPortVisual };
|
|
46
|
+
//# sourceMappingURL=NodeGraphPortVisual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeGraphPortVisual.js","sources":["src/components/editor/NodeGraph/NodeGraphPortVisual.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type { NodeGraphPortShape } from './NodeGraph.types';\n\nexport interface NodeGraphPortVisualProps {\n /**\n * Handle shape. @default 'circle'\n */\n shape?: NodeGraphPortShape;\n /**\n * Stroke / fill colour. Defaults to `currentColor` so the parent\n * `<NodeGraph.Port>` can route its colour prop and interaction-state\n * colours (source / candidate / invalid) into the shape via the CSS\n * `color` cascade. Pass an explicit colour when using the visual\n * standalone (outside a port slot).\n */\n color?: string;\n /**\n * Filled (`true`) paints the interior; hollow (`false`) draws an outline\n * only — the standard \"wired vs unwired pin\" convention.\n * @default false\n */\n filled?: boolean;\n /**\n * Box size in CSS pixels. @default 14\n */\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\n// All shapes are authored in a 16×16 user space and scaled to `size`, so a\n// single stroke width reads consistently across shapes.\nconst VIEW = 16;\nconst STROKE = 2;\n\nfunction shapeElement(\n shape: NodeGraphPortShape,\n stroke: string,\n fill: string\n): React.ReactElement {\n const common = {\n stroke,\n fill,\n strokeWidth: STROKE,\n strokeLinejoin: 'round' as const,\n };\n switch (shape) {\n case 'square':\n return <rect x={3} y={3} width={10} height={10} rx={1.5} {...common} />;\n case 'diamond':\n return <polygon points=\"8,2 14,8 8,14 2,8\" {...common} />;\n case 'triangle':\n // Right-pointing exec/flow arrow (UE Blueprint convention).\n return <polygon points=\"3,2.5 13.5,8 3,13.5\" {...common} />;\n case 'circle':\n default:\n return <circle cx={8} cy={8} r={5} {...common} />;\n }\n}\n\n/**\n * Presentational handle shape for a node-graph port. Rendered by\n * `<NodeGraph.Port>` when no `children` are supplied, and exported so\n * consumers can reuse the exact handle look inside fully custom port\n * visuals (e.g. a coloured ring beside a typed label).\n *\n * The shape paints with `currentColor` unless `color` is set, which lets\n * the port slot drive the colour from its `color` prop and override it on\n * the connection-drag states without this component knowing about them.\n */\nexport function NodeGraphPortVisual({\n shape = 'circle',\n color,\n filled = false,\n size = 14,\n className,\n style,\n}: NodeGraphPortVisualProps): React.ReactElement {\n const stroke = color ?? 'currentColor';\n const fill = filled ? (color ?? 'currentColor') : 'none';\n return (\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${VIEW} ${VIEW}`}\n className={className}\n style={{ display: 'block', overflow: 'visible', ...style }}\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n {shapeElement(shape, stroke, fill)}\n </svg>\n );\n}\n\nNodeGraphPortVisual.displayName = 'NodeGraphPortVisual';\n"],"names":[],"mappings":";;;AAiCA;AACA;AACA;AACA;AAEA;AAKE;;;AAGE;AACA;;;AAGA;;AAEA;AACE;AACF;;AAEE;AACF;AACA;AACE;;AAEN;AAEA;;;;;;;;;AASG;AACG;AAQJ;AACA;;AAcF;AAEA;;"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { NODE_GRAPH_SLOT } from './NodeGraph.types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Marker behind `<NodeGraph.Minimap>` — returns `null` and carries a Symbol
|
|
5
|
+
* the parent uses to identify it inside `children`. The actual minimap is
|
|
6
|
+
* mounted by `NodeGraph` itself as `<NodeGraphMinimapInner>`.
|
|
7
|
+
*
|
|
8
|
+
* Pure marker, no hooks — kept out of any `'use client'` boundary so RSC
|
|
9
|
+
* frameworks can keep the type-level slot identity on the server.
|
|
10
|
+
*/
|
|
11
|
+
const NodeGraphMinimapImpl = () => null;
|
|
12
|
+
const NodeGraphMinimap = Object.assign(NodeGraphMinimapImpl, {
|
|
13
|
+
displayName: 'NodeGraph.Minimap',
|
|
14
|
+
[NODE_GRAPH_SLOT]: 'minimap',
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Marker behind `<NodeGraph.Background>` — see {@link NodeGraphMinimap} for
|
|
18
|
+
* the rationale. The parent picks this up and mounts the background canvas
|
|
19
|
+
* layer in the correct position in the layer stack.
|
|
20
|
+
*/
|
|
21
|
+
const NodeGraphBackgroundImpl = () => null;
|
|
22
|
+
const NodeGraphBackground = Object.assign(NodeGraphBackgroundImpl, {
|
|
23
|
+
displayName: 'NodeGraph.Background',
|
|
24
|
+
[NODE_GRAPH_SLOT]: 'background',
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Marker behind `<NodeGraph.Toolbar>` — picked up from `<NodeGraph>` children
|
|
28
|
+
* and mounted into the viewport overlay layer at the requested
|
|
29
|
+
* placement. Children render via `<NodeGraphToolbarInner>` which keeps
|
|
30
|
+
* the toolbar positioned over the graph.
|
|
31
|
+
*/
|
|
32
|
+
const NodeGraphToolbarImpl = () => null;
|
|
33
|
+
const NodeGraphToolbar = Object.assign(NodeGraphToolbarImpl, {
|
|
34
|
+
displayName: 'NodeGraph.Toolbar',
|
|
35
|
+
[NODE_GRAPH_SLOT]: 'toolbar',
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Marker behind `<NodeGraph.SpawnPalette>` — picked up by the parent
|
|
39
|
+
* and mounted as a portal-rendered fuzzy-search palette. Auto-opens on
|
|
40
|
+
* right-click of empty / group targets via the store's spawn-request
|
|
41
|
+
* channel.
|
|
42
|
+
*/
|
|
43
|
+
const NodeGraphSpawnPaletteImpl = () => null;
|
|
44
|
+
const NodeGraphSpawnPalette = Object.assign(NodeGraphSpawnPaletteImpl, {
|
|
45
|
+
displayName: 'NodeGraph.SpawnPalette',
|
|
46
|
+
[NODE_GRAPH_SLOT]: 'spawn-palette',
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export { NodeGraphBackground, NodeGraphMinimap, NodeGraphSpawnPalette, NodeGraphToolbar };
|
|
50
|
+
//# sourceMappingURL=NodeGraphSlots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeGraphSlots.js","sources":["src/components/editor/NodeGraph/NodeGraphSlots.ts"],"sourcesContent":["import { NODE_GRAPH_SLOT } from './NodeGraph.types';\n\nimport type {\n NodeGraphBackgroundSlotProps,\n NodeGraphMinimapSlotProps,\n NodeGraphSlotMarker,\n NodeGraphSpawnPaletteSlotProps,\n NodeGraphToolbarSlotProps,\n} from './NodeGraph.types';\n\n/**\n * Marker behind `<NodeGraph.Minimap>` — returns `null` and carries a Symbol\n * the parent uses to identify it inside `children`. The actual minimap is\n * mounted by `NodeGraph` itself as `<NodeGraphMinimapInner>`.\n *\n * Pure marker, no hooks — kept out of any `'use client'` boundary so RSC\n * frameworks can keep the type-level slot identity on the server.\n */\nconst NodeGraphMinimapImpl: (props: NodeGraphMinimapSlotProps) => null = () =>\n null;\n\nexport const NodeGraphMinimap = Object.assign(NodeGraphMinimapImpl, {\n displayName: 'NodeGraph.Minimap',\n [NODE_GRAPH_SLOT]: 'minimap' as const,\n}) as unknown as ((props: NodeGraphMinimapSlotProps) => null) &\n NodeGraphSlotMarker & { displayName: string };\n\n/**\n * Marker behind `<NodeGraph.Background>` — see {@link NodeGraphMinimap} for\n * the rationale. The parent picks this up and mounts the background canvas\n * layer in the correct position in the layer stack.\n */\nconst NodeGraphBackgroundImpl: (\n props: NodeGraphBackgroundSlotProps\n) => null = () => null;\n\nexport const NodeGraphBackground = Object.assign(NodeGraphBackgroundImpl, {\n displayName: 'NodeGraph.Background',\n [NODE_GRAPH_SLOT]: 'background' as const,\n}) as unknown as ((props: NodeGraphBackgroundSlotProps) => null) &\n NodeGraphSlotMarker & { displayName: string };\n\n/**\n * Marker behind `<NodeGraph.Toolbar>` — picked up from `<NodeGraph>` children\n * and mounted into the viewport overlay layer at the requested\n * placement. Children render via `<NodeGraphToolbarInner>` which keeps\n * the toolbar positioned over the graph.\n */\nconst NodeGraphToolbarImpl: (props: NodeGraphToolbarSlotProps) => null = () =>\n null;\n\nexport const NodeGraphToolbar = Object.assign(NodeGraphToolbarImpl, {\n displayName: 'NodeGraph.Toolbar',\n [NODE_GRAPH_SLOT]: 'toolbar' as const,\n}) as unknown as ((props: NodeGraphToolbarSlotProps) => null) &\n NodeGraphSlotMarker & { displayName: string };\n\n/**\n * Marker behind `<NodeGraph.SpawnPalette>` — picked up by the parent\n * and mounted as a portal-rendered fuzzy-search palette. Auto-opens on\n * right-click of empty / group targets via the store's spawn-request\n * channel.\n */\nconst NodeGraphSpawnPaletteImpl: (\n props: NodeGraphSpawnPaletteSlotProps\n) => null = () => null;\n\nexport const NodeGraphSpawnPalette = Object.assign(NodeGraphSpawnPaletteImpl, {\n displayName: 'NodeGraph.SpawnPalette',\n [NODE_GRAPH_SLOT]: 'spawn-palette' as const,\n}) as unknown as ((props: NodeGraphSpawnPaletteSlotProps) => null) &\n NodeGraphSlotMarker & { displayName: string };\n"],"names":[],"mappings":";;AAUA;;;;;;;AAOG;AACH,MAAM,oBAAoB,GAA+C,MACvE,IAAI;MAEO,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAClE,IAAA,WAAW,EAAE,mBAAmB;IAChC,CAAC,eAAe,GAAG,SAAkB;AACtC,CAAA;AAGD;;;;AAIG;AACH,MAAM,uBAAuB,GAEjB,MAAM,IAAI;MAET,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE;AACxE,IAAA,WAAW,EAAE,sBAAsB;IACnC,CAAC,eAAe,GAAG,YAAqB;AACzC,CAAA;AAGD;;;;;AAKG;AACH,MAAM,oBAAoB,GAA+C,MACvE,IAAI;MAEO,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAClE,IAAA,WAAW,EAAE,mBAAmB;IAChC,CAAC,eAAe,GAAG,SAAkB;AACtC,CAAA;AAGD;;;;;AAKG;AACH,MAAM,yBAAyB,GAEnB,MAAM,IAAI;MAET,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE;AAC5E,IAAA,WAAW,EAAE,wBAAwB;IACrC,CAAC,eAAe,GAAG,eAAwB;AAC5C,CAAA;;;;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useState, useEffect, useMemo, useCallback } from 'react';
|
|
4
|
+
import { CommandPalette } from '../../feedback/CommandPalette/CommandPalette.js';
|
|
5
|
+
import { useNodeGraphStore } from './NodeGraphContext.js';
|
|
6
|
+
import { generateNodeId } from './nodeGraphIds.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Live renderer for `<NodeGraph.SpawnPalette>`. Mounted by the parent
|
|
10
|
+
* when the slot is present in `<NodeGraph>` children. Subscribes to the
|
|
11
|
+
* store's spawn-request channel — the main `NodeGraph` component fires
|
|
12
|
+
* the request when the user right-clicks empty space or a group, so
|
|
13
|
+
* the consumer doesn't need to wire context-menu state through React.
|
|
14
|
+
*
|
|
15
|
+
* Selection on a template:
|
|
16
|
+
* 1. Calls `template.build(worldPoint)` to get the node body
|
|
17
|
+
* 2. Assigns a unique id
|
|
18
|
+
* 3. Hands the full node to `onSpawn(node, ctx)` — typically appends
|
|
19
|
+
* to the consumer's `nodes` state
|
|
20
|
+
* 4. Closes the palette
|
|
21
|
+
*/
|
|
22
|
+
function NodeGraphSpawnPaletteInner({ templates, onSpawn, placeholder = 'Search nodes…', recentKey, width = 400, maxHeight = 360, }) {
|
|
23
|
+
const store = useNodeGraphStore();
|
|
24
|
+
const [open, setOpen] = useState(false);
|
|
25
|
+
const [spawnAt, setSpawnAt] = useState(null);
|
|
26
|
+
// Listen for "user wants to spawn a node here" pings from the main
|
|
27
|
+
// NodeGraph component (fired from its handleContextMenu for empty /
|
|
28
|
+
// group targets). Multiple subscribers is fine — the store fans out.
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
return store.subscribeSpawnRequest(info => {
|
|
31
|
+
setSpawnAt(info);
|
|
32
|
+
setOpen(true);
|
|
33
|
+
});
|
|
34
|
+
}, [store]);
|
|
35
|
+
const items = useMemo(() => {
|
|
36
|
+
return templates.map(t => ({
|
|
37
|
+
id: t.id,
|
|
38
|
+
label: t.title,
|
|
39
|
+
...(t.subtitle !== undefined ? { description: t.subtitle } : {}),
|
|
40
|
+
...(t.group !== undefined ? { group: t.group } : {}),
|
|
41
|
+
...(t.keywords !== undefined ? { keywords: [...t.keywords] } : {}),
|
|
42
|
+
...(t.icon !== undefined ? { icon: t.icon } : {}),
|
|
43
|
+
}));
|
|
44
|
+
}, [templates]);
|
|
45
|
+
const handleClose = useCallback(() => {
|
|
46
|
+
setOpen(false);
|
|
47
|
+
setSpawnAt(null);
|
|
48
|
+
}, []);
|
|
49
|
+
const handleSelect = useCallback((item) => {
|
|
50
|
+
const template = templates.find(t => t.id === item.id);
|
|
51
|
+
if (!template || !spawnAt)
|
|
52
|
+
return;
|
|
53
|
+
const worldPoint = spawnAt.worldPoint;
|
|
54
|
+
const draft = template.build(worldPoint);
|
|
55
|
+
const node = {
|
|
56
|
+
...draft,
|
|
57
|
+
id: generateNodeId(template.id),
|
|
58
|
+
};
|
|
59
|
+
const ctx = {
|
|
60
|
+
worldPoint,
|
|
61
|
+
screenPoint: spawnAt.screenPoint,
|
|
62
|
+
};
|
|
63
|
+
onSpawn(node, ctx);
|
|
64
|
+
handleClose();
|
|
65
|
+
}, [templates, spawnAt, onSpawn, handleClose]);
|
|
66
|
+
return (jsx(CommandPalette, { open: open, onClose: handleClose, items: items, onSelect: handleSelect, placeholder: placeholder, ...(recentKey !== undefined ? { recentKey } : {}), width: width, maxHeight: maxHeight }));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { NodeGraphSpawnPaletteInner };
|
|
70
|
+
//# sourceMappingURL=NodeGraphSpawnPalette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeGraphSpawnPalette.js","sources":["src/components/editor/NodeGraph/NodeGraphSpawnPalette.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { CommandPalette } from '@/components/feedback/CommandPalette/CommandPalette';\n\nimport { useNodeGraphStore } from './NodeGraphContext';\nimport { generateNodeId } from './nodeGraphIds';\n\nimport type {\n NodeGraphNode,\n NodeGraphSpawnContext,\n NodeGraphSpawnPaletteSlotProps,\n} from './NodeGraph.types';\nimport type { CommandItem } from '@/components/feedback/CommandPalette/CommandPalette.types';\nimport type { Point2D } from '@/components/primitives/canvas/canvas.types';\n\n/**\n * Live renderer for `<NodeGraph.SpawnPalette>`. Mounted by the parent\n * when the slot is present in `<NodeGraph>` children. Subscribes to the\n * store's spawn-request channel — the main `NodeGraph` component fires\n * the request when the user right-clicks empty space or a group, so\n * the consumer doesn't need to wire context-menu state through React.\n *\n * Selection on a template:\n * 1. Calls `template.build(worldPoint)` to get the node body\n * 2. Assigns a unique id\n * 3. Hands the full node to `onSpawn(node, ctx)` — typically appends\n * to the consumer's `nodes` state\n * 4. Closes the palette\n */\nexport function NodeGraphSpawnPaletteInner({\n templates,\n onSpawn,\n placeholder = 'Search nodes…',\n recentKey,\n width = 400,\n maxHeight = 360,\n}: NodeGraphSpawnPaletteSlotProps): React.ReactElement {\n const store = useNodeGraphStore();\n const [open, setOpen] = useState(false);\n const [spawnAt, setSpawnAt] = useState<{\n worldPoint: Point2D;\n screenPoint: Point2D;\n } | null>(null);\n\n // Listen for \"user wants to spawn a node here\" pings from the main\n // NodeGraph component (fired from its handleContextMenu for empty /\n // group targets). Multiple subscribers is fine — the store fans out.\n useEffect(() => {\n return store.subscribeSpawnRequest(info => {\n setSpawnAt(info);\n setOpen(true);\n });\n }, [store]);\n\n const items = useMemo<CommandItem[]>(() => {\n return templates.map(t => ({\n id: t.id,\n label: t.title,\n ...(t.subtitle !== undefined ? { description: t.subtitle } : {}),\n ...(t.group !== undefined ? { group: t.group } : {}),\n ...(t.keywords !== undefined ? { keywords: [...t.keywords] } : {}),\n ...(t.icon !== undefined ? { icon: t.icon } : {}),\n }));\n }, [templates]);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setSpawnAt(null);\n }, []);\n\n const handleSelect = useCallback(\n (item: CommandItem): void => {\n const template = templates.find(t => t.id === item.id);\n if (!template || !spawnAt) return;\n const worldPoint = spawnAt.worldPoint;\n const draft = template.build(worldPoint);\n const node: NodeGraphNode = {\n ...draft,\n id: generateNodeId(template.id),\n };\n const ctx: NodeGraphSpawnContext = {\n worldPoint,\n screenPoint: spawnAt.screenPoint,\n };\n onSpawn(node, ctx);\n handleClose();\n },\n [templates, spawnAt, onSpawn, handleClose]\n );\n\n return (\n <CommandPalette\n open={open}\n onClose={handleClose}\n items={items}\n onSelect={handleSelect}\n placeholder={placeholder}\n {...(recentKey !== undefined ? { recentKey } : {})}\n width={width}\n maxHeight={maxHeight}\n />\n );\n}\n"],"names":[],"mappings":";;;;;;;AAiBA;;;;;;;;;;;;;AAaG;AACG;AAQJ;;;;;;;AAWE;;;AAGA;AACF;AAEA;;;;;;;;AAQG;AACH;AAEA;;;;AAKA;AAEI;AACA;;AACA;;AAEA;AACE;AACA;;AAEF;;;;AAIA;AACA;;;AAiBN;;"}
|