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.
Files changed (1053) hide show
  1. package/CHANGELOG.md +766 -0
  2. package/README.md +8 -6
  3. package/dist/esm/assets/src/components/controls/FileTree/FileTree.css.ts.vanilla-YmktPvnr.css +48 -0
  4. package/dist/esm/assets/src/components/controls/Select/{Select.css.ts.vanilla-oZnFUorL.css → Select.css.ts.vanilla-Cpu2BvWL.css} +3 -0
  5. package/dist/esm/assets/src/components/controls/TreeView/{TreeNode.css.ts.vanilla-B_f8pUb8.css → TreeNode.css.ts.vanilla-DXPJRWZZ.css} +31 -24
  6. package/dist/esm/assets/src/components/editor/AssetBrowser/AssetBrowser.css.ts.vanilla-B2S4cEiY.css +262 -0
  7. package/dist/esm/assets/src/components/editor/Minimap/Minimap.css.ts.vanilla--rNdWQwy.css +133 -0
  8. package/dist/esm/assets/src/components/editor/NodeGraph/NodeGraph.css.ts.vanilla-ClF4YZvl.css +401 -0
  9. package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyPanel.css.ts.vanilla-RYv_XgOu.css → PropertyPanel.css.ts.vanilla-Dpr_k5I3.css} +4 -1
  10. package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyRow.css.ts.vanilla-C3YZnnHb.css → PropertyRow.css.ts.vanilla-pq1Uhd2a.css} +15 -8
  11. package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertySection.css.ts.vanilla-DK12opZc.css → PropertySection.css.ts.vanilla-6MWWAqyd.css} +50 -32
  12. package/dist/esm/assets/src/components/editor/Timeline/Timeline.css.ts.vanilla-DDX6Zalo.css +203 -0
  13. package/dist/esm/assets/src/components/feedback/LogView/LogView.css.ts.vanilla-nB5ENOpw.css +312 -0
  14. package/dist/esm/assets/src/components/navigation/Menu/Menu.css.ts.vanilla-B5iVe5S2.css +88 -0
  15. package/dist/esm/assets/src/components/navigation/PathBar/PathBar.css.ts.vanilla-BIEzQQOf.css +10 -0
  16. package/dist/esm/assets/src/components/primitives/viewport/Viewport.css.ts.vanilla-CkFBJ7Vo.css +65 -0
  17. package/dist/esm/assets/src/components/shell/FloatingPanel/{FloatingPanel.css.ts.vanilla-1rIAXEFp.css → FloatingPanel.css.ts.vanilla-CRaeYJ2b.css} +20 -13
  18. package/dist/esm/assets/src/theme/{darkTheme.css.ts.vanilla-ab1WD4dr.css → darkTheme.css.ts.vanilla-BHZ3ecRn.css} +3 -3
  19. package/dist/esm/assets/src/theme/{lightTheme.css.ts.vanilla-OaRI_wIc.css → lightTheme.css.ts.vanilla-Ct6f9Iym.css} +3 -3
  20. package/dist/esm/components/Icons/AddIcon.js.map +1 -1
  21. package/dist/esm/components/Icons/AiChatIcon.js.map +1 -1
  22. package/dist/esm/components/Icons/AiSparklesIcon.js.map +1 -1
  23. package/dist/esm/components/Icons/ArchiveIcon.js.map +1 -1
  24. package/dist/esm/components/Icons/ArrowDownIcon.js.map +1 -1
  25. package/dist/esm/components/Icons/ArrowLeftIcon.js.map +1 -1
  26. package/dist/esm/components/Icons/ArrowRightIcon.js.map +1 -1
  27. package/dist/esm/components/Icons/ArrowUpIcon.js.map +1 -1
  28. package/dist/esm/components/Icons/BookmarkIcon.js.map +1 -1
  29. package/dist/esm/components/Icons/BugIcon.js.map +1 -1
  30. package/dist/esm/components/Icons/BuildingIcon.js.map +1 -1
  31. package/dist/esm/components/Icons/CalendarIcon.js.map +1 -1
  32. package/dist/esm/components/Icons/CameraIcon.js +31 -0
  33. package/dist/esm/components/Icons/CameraIcon.js.map +1 -0
  34. package/dist/esm/components/Icons/CheckIcon.js.map +1 -1
  35. package/dist/esm/components/Icons/ChevronDownIcon.js.map +1 -1
  36. package/dist/esm/components/Icons/ChevronLeftIcon.js.map +1 -1
  37. package/dist/esm/components/Icons/ChevronRightIcon.js.map +1 -1
  38. package/dist/esm/components/Icons/ChevronUpIcon.js.map +1 -1
  39. package/dist/esm/components/Icons/CircleIcon.js.map +1 -1
  40. package/dist/esm/components/Icons/ClockIcon.js.map +1 -1
  41. package/dist/esm/components/Icons/CloseIcon.js.map +1 -1
  42. package/dist/esm/components/Icons/CloudUploadIcon.js.map +1 -1
  43. package/dist/esm/components/Icons/CodeIcon.js.map +1 -1
  44. package/dist/esm/components/Icons/CopyIcon.js.map +1 -1
  45. package/dist/esm/components/Icons/CubeIcon.js +31 -0
  46. package/dist/esm/components/Icons/CubeIcon.js.map +1 -0
  47. package/dist/esm/components/Icons/CutIcon.js.map +1 -1
  48. package/dist/esm/components/Icons/DotsHorizontalIcon.js.map +1 -1
  49. package/dist/esm/components/Icons/DotsVerticalIcon.js.map +1 -1
  50. package/dist/esm/components/Icons/DownloadIcon.js.map +1 -1
  51. package/dist/esm/components/Icons/EditIcon.js.map +1 -1
  52. package/dist/esm/components/Icons/ErrorIcon.js.map +1 -1
  53. package/dist/esm/components/Icons/ExternalLinkIcon.js.map +1 -1
  54. package/dist/esm/components/Icons/EyeDropperIcon.js.map +1 -1
  55. package/dist/esm/components/Icons/EyeIcon.js.map +1 -1
  56. package/dist/esm/components/Icons/FileTextIcon.js.map +1 -1
  57. package/dist/esm/components/Icons/FilterIcon.js.map +1 -1
  58. package/dist/esm/components/Icons/FirstIcon.js.map +1 -1
  59. package/dist/esm/components/Icons/FolderCogIcon.js.map +1 -1
  60. package/dist/esm/components/Icons/FolderIcon.js.map +1 -1
  61. package/dist/esm/components/Icons/FolderOpenIcon.js +2 -2
  62. package/dist/esm/components/Icons/FolderOpenIcon.js.map +1 -1
  63. package/dist/esm/components/Icons/FullscreenIcon.js.map +1 -1
  64. package/dist/esm/components/Icons/GitBranchIcon.js.map +1 -1
  65. package/dist/esm/components/Icons/GridIcon.js.map +1 -1
  66. package/dist/esm/components/Icons/HeartIcon.js.map +1 -1
  67. package/dist/esm/components/Icons/HelpIcon.js.map +1 -1
  68. package/dist/esm/components/Icons/HomeIcon.js.map +1 -1
  69. package/dist/esm/components/Icons/ImageIcon.js +31 -0
  70. package/dist/esm/components/Icons/ImageIcon.js.map +1 -0
  71. package/dist/esm/components/Icons/InfoIcon.js.map +1 -1
  72. package/dist/esm/components/Icons/LastIcon.js.map +1 -1
  73. package/dist/esm/components/Icons/LinkIcon.js.map +1 -1
  74. package/dist/esm/components/Icons/ListIcon.js.map +1 -1
  75. package/dist/esm/components/Icons/LockIcon.js.map +1 -1
  76. package/dist/esm/components/Icons/MaximizeIcon.js.map +1 -1
  77. package/dist/esm/components/Icons/MenuIcon.js.map +1 -1
  78. package/dist/esm/components/Icons/MinimizeIcon.js.map +1 -1
  79. package/dist/esm/components/Icons/MinusIcon.js.map +1 -1
  80. package/dist/esm/components/Icons/OrbitIcon.js +31 -0
  81. package/dist/esm/components/Icons/OrbitIcon.js.map +1 -0
  82. package/dist/esm/components/Icons/PasteIcon.js.map +1 -1
  83. package/dist/esm/components/Icons/PauseIcon.js +2 -2
  84. package/dist/esm/components/Icons/PauseIcon.js.map +1 -1
  85. package/dist/esm/components/Icons/PinIcon.js.map +1 -1
  86. package/dist/esm/components/Icons/PlayIcon.js.map +1 -1
  87. package/dist/esm/components/Icons/RedoIcon.js.map +1 -1
  88. package/dist/esm/components/Icons/RefreshIcon.js.map +1 -1
  89. package/dist/esm/components/Icons/RobotIcon.js.map +1 -1
  90. package/dist/esm/components/Icons/RotateIcon.js +32 -0
  91. package/dist/esm/components/Icons/RotateIcon.js.map +1 -0
  92. package/dist/esm/components/Icons/SaveIcon.js.map +1 -1
  93. package/dist/esm/components/Icons/SearchIcon.js.map +1 -1
  94. package/dist/esm/components/Icons/SendIcon.js.map +1 -1
  95. package/dist/esm/components/Icons/SettingsIcon.js.map +1 -1
  96. package/dist/esm/components/Icons/SortIcon.js.map +1 -1
  97. package/dist/esm/components/Icons/SpinIcon.js +32 -0
  98. package/dist/esm/components/Icons/SpinIcon.js.map +1 -0
  99. package/dist/esm/components/Icons/StarIcon.js.map +1 -1
  100. package/dist/esm/components/Icons/StopIcon.js.map +1 -1
  101. package/dist/esm/components/Icons/SuccessIcon.js.map +1 -1
  102. package/dist/esm/components/Icons/TagIcon.js.map +1 -1
  103. package/dist/esm/components/Icons/TangentAlignedIcon.js.map +1 -1
  104. package/dist/esm/components/Icons/TangentAutoIcon.js.map +1 -1
  105. package/dist/esm/components/Icons/TangentFreeIcon.js.map +1 -1
  106. package/dist/esm/components/Icons/TangentLinearIcon.js.map +1 -1
  107. package/dist/esm/components/Icons/TangentMirroredIcon.js.map +1 -1
  108. package/dist/esm/components/Icons/TangentStepIcon.js.map +1 -1
  109. package/dist/esm/components/Icons/TerminalIcon.js.map +1 -1
  110. package/dist/esm/components/Icons/TrashIcon.js.map +1 -1
  111. package/dist/esm/components/Icons/UndoIcon.js.map +1 -1
  112. package/dist/esm/components/Icons/UnlinkIcon.js.map +1 -1
  113. package/dist/esm/components/Icons/UnlockIcon.js.map +1 -1
  114. package/dist/esm/components/Icons/UploadIcon.js.map +1 -1
  115. package/dist/esm/components/Icons/UserIcon.js.map +1 -1
  116. package/dist/esm/components/Icons/UsersIcon.js.map +1 -1
  117. package/dist/esm/components/Icons/WarningIcon.js.map +1 -1
  118. package/dist/esm/components/Icons/ZoomFitIcon.js +32 -0
  119. package/dist/esm/components/Icons/ZoomFitIcon.js.map +1 -0
  120. package/dist/esm/components/Icons/ZoomInIcon.js.map +1 -1
  121. package/dist/esm/components/Icons/ZoomOutIcon.js.map +1 -1
  122. package/dist/esm/components/controls/CartesianPicker/CartesianPicker.js +3 -3
  123. package/dist/esm/components/controls/CartesianPicker/CartesianPicker.js.map +1 -1
  124. package/dist/esm/components/controls/CartesianPicker/useCartesianInteraction.js +7 -5
  125. package/dist/esm/components/controls/CartesianPicker/useCartesianInteraction.js.map +1 -1
  126. package/dist/esm/components/controls/CartesianPicker/useCartesianRenderer.js.map +1 -1
  127. package/dist/esm/components/controls/ColorPicker/AlphaSlider.js.map +1 -1
  128. package/dist/esm/components/controls/ColorPicker/ColorArea.js +2 -2
  129. package/dist/esm/components/controls/ColorPicker/ColorArea.js.map +1 -1
  130. package/dist/esm/components/controls/ColorPicker/ColorInputs.js +16 -2
  131. package/dist/esm/components/controls/ColorPicker/ColorInputs.js.map +1 -1
  132. package/dist/esm/components/controls/ColorPicker/ColorPalette.js +3 -1
  133. package/dist/esm/components/controls/ColorPicker/ColorPalette.js.map +1 -1
  134. package/dist/esm/components/controls/ColorPicker/ColorPicker.js +6 -6
  135. package/dist/esm/components/controls/ColorPicker/ColorPicker.js.map +1 -1
  136. package/dist/esm/components/controls/ColorPicker/ColorPresets.js +3 -1
  137. package/dist/esm/components/controls/ColorPicker/ColorPresets.js.map +1 -1
  138. package/dist/esm/components/controls/ColorPicker/ColorSwatch.js.map +1 -1
  139. package/dist/esm/components/controls/ColorPicker/EyeDropper.js.map +1 -1
  140. package/dist/esm/components/controls/ColorPicker/HueSlider.js.map +1 -1
  141. package/dist/esm/components/controls/ColorPicker/colorUtils.js.map +1 -1
  142. package/dist/esm/components/controls/ColorPicker/palettes/material.js.map +1 -1
  143. package/dist/esm/components/controls/ColorPicker/palettes/professional.js.map +1 -1
  144. package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js.map +1 -1
  145. package/dist/esm/components/controls/ColorPicker/useColor.js.map +1 -1
  146. package/dist/esm/components/controls/Combobox/Combobox.js +46 -23
  147. package/dist/esm/components/controls/Combobox/Combobox.js.map +1 -1
  148. package/dist/esm/components/controls/CurveEditor/CurveCanvas.js +11 -4
  149. package/dist/esm/components/controls/CurveEditor/CurveCanvas.js.map +1 -1
  150. package/dist/esm/components/controls/CurveEditor/CurveEditor.js +4 -4
  151. package/dist/esm/components/controls/CurveEditor/CurveEditor.js.map +1 -1
  152. package/dist/esm/components/controls/CurveEditor/CurveToolbar.js +7 -5
  153. package/dist/esm/components/controls/CurveEditor/CurveToolbar.js.map +1 -1
  154. package/dist/esm/components/controls/CurveEditor/curvePresets.js.map +1 -1
  155. package/dist/esm/components/controls/CurveEditor/curveUtils.js +13 -15
  156. package/dist/esm/components/controls/CurveEditor/curveUtils.js.map +1 -1
  157. package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js +72 -50
  158. package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js.map +1 -1
  159. package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js +11 -3
  160. package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js.map +1 -1
  161. package/dist/esm/components/controls/FileTree/FileTree.css.js +9 -0
  162. package/dist/esm/components/controls/FileTree/FileTree.css.js.map +1 -0
  163. package/dist/esm/components/controls/FileTree/FileTree.js +252 -0
  164. package/dist/esm/components/controls/FileTree/FileTree.js.map +1 -0
  165. package/dist/esm/components/controls/FileTree/fileTreeIcons.js +129 -0
  166. package/dist/esm/components/controls/FileTree/fileTreeIcons.js.map +1 -0
  167. package/dist/esm/components/controls/FileTree/fileTreeLabels.js +8 -0
  168. package/dist/esm/components/controls/FileTree/fileTreeLabels.js.map +1 -0
  169. package/dist/esm/components/controls/FileTree/useFileTreeDrop.js +115 -0
  170. package/dist/esm/components/controls/FileTree/useFileTreeDrop.js.map +1 -0
  171. package/dist/esm/components/controls/FileUploader/FileUploader.js +3 -6
  172. package/dist/esm/components/controls/FileUploader/FileUploader.js.map +1 -1
  173. package/dist/esm/components/controls/MultiSelect/MultiSelect.js +46 -15
  174. package/dist/esm/components/controls/MultiSelect/MultiSelect.js.map +1 -1
  175. package/dist/esm/components/controls/NumberInput/NumberInput.js +11 -4
  176. package/dist/esm/components/controls/NumberInput/NumberInput.js.map +1 -1
  177. package/dist/esm/components/controls/NumberInput/useNumberInput.js +6 -2
  178. package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -1
  179. package/dist/esm/components/controls/Select/Select.css.js +1 -1
  180. package/dist/esm/components/controls/Select/Select.js +44 -16
  181. package/dist/esm/components/controls/Select/Select.js.map +1 -1
  182. package/dist/esm/components/controls/Slider/Slider.js +6 -8
  183. package/dist/esm/components/controls/Slider/Slider.js.map +1 -1
  184. package/dist/esm/components/controls/TagInput/TagInput.js +4 -2
  185. package/dist/esm/components/controls/TagInput/TagInput.js.map +1 -1
  186. package/dist/esm/components/controls/TreeView/TreeNode.css.js +9 -8
  187. package/dist/esm/components/controls/TreeView/TreeNode.css.js.map +1 -1
  188. package/dist/esm/components/controls/TreeView/TreeNode.js +42 -7
  189. package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -1
  190. package/dist/esm/components/controls/TreeView/TreeView.js +18 -6
  191. package/dist/esm/components/controls/TreeView/TreeView.js.map +1 -1
  192. package/dist/esm/components/controls/TreeView/useTreeState.js +2 -6
  193. package/dist/esm/components/controls/TreeView/useTreeState.js.map +1 -1
  194. package/dist/esm/components/controls/VectorInput/VectorInput.js +13 -4
  195. package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
  196. package/dist/esm/components/data/DataTable/DataTable.js +25 -8
  197. package/dist/esm/components/data/DataTable/DataTable.js.map +1 -1
  198. package/dist/esm/components/editor/AssetBrowser/AssetBrowser.css.js +46 -0
  199. package/dist/esm/components/editor/AssetBrowser/AssetBrowser.css.js.map +1 -0
  200. package/dist/esm/components/editor/AssetBrowser/AssetBrowser.js +254 -0
  201. package/dist/esm/components/editor/AssetBrowser/AssetBrowser.js.map +1 -0
  202. package/dist/esm/components/editor/AssetBrowser/AssetBrowserAnnouncementLive.js +17 -0
  203. package/dist/esm/components/editor/AssetBrowser/AssetBrowserAnnouncementLive.js.map +1 -0
  204. package/dist/esm/components/editor/AssetBrowser/AssetBrowserBreadcrumbs.js +25 -0
  205. package/dist/esm/components/editor/AssetBrowser/AssetBrowserBreadcrumbs.js.map +1 -0
  206. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js +140 -0
  207. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js.map +1 -0
  208. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContext.js +81 -0
  209. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContext.js.map +1 -0
  210. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContextMenu.js +123 -0
  211. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContextMenu.js.map +1 -0
  212. package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js +136 -0
  213. package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js.map +1 -0
  214. package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js +137 -0
  215. package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js.map +1 -0
  216. package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js +226 -0
  217. package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js.map +1 -0
  218. package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js +189 -0
  219. package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js.map +1 -0
  220. package/dist/esm/components/editor/AssetBrowser/AssetBrowserRenameField.js +63 -0
  221. package/dist/esm/components/editor/AssetBrowser/AssetBrowserRenameField.js.map +1 -0
  222. package/dist/esm/components/editor/AssetBrowser/AssetBrowserSidebar.js +19 -0
  223. package/dist/esm/components/editor/AssetBrowser/AssetBrowserSidebar.js.map +1 -0
  224. package/dist/esm/components/editor/AssetBrowser/AssetBrowserStatusBar.js +24 -0
  225. package/dist/esm/components/editor/AssetBrowser/AssetBrowserStatusBar.js.map +1 -0
  226. package/dist/esm/components/editor/AssetBrowser/AssetBrowserStore.js +176 -0
  227. package/dist/esm/components/editor/AssetBrowser/AssetBrowserStore.js.map +1 -0
  228. package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js +120 -0
  229. package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js.map +1 -0
  230. package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js +134 -0
  231. package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js.map +1 -0
  232. package/dist/esm/components/editor/AssetBrowser/assetBrowserFilter.js +90 -0
  233. package/dist/esm/components/editor/AssetBrowser/assetBrowserFilter.js.map +1 -0
  234. package/dist/esm/components/editor/AssetBrowser/assetBrowserFormat.js +32 -0
  235. package/dist/esm/components/editor/AssetBrowser/assetBrowserFormat.js.map +1 -0
  236. package/dist/esm/components/editor/AssetBrowser/assetBrowserGeometry.js +70 -0
  237. package/dist/esm/components/editor/AssetBrowser/assetBrowserGeometry.js.map +1 -0
  238. package/dist/esm/components/editor/AssetBrowser/assetBrowserKeyboard.js +62 -0
  239. package/dist/esm/components/editor/AssetBrowser/assetBrowserKeyboard.js.map +1 -0
  240. package/dist/esm/components/editor/AssetBrowser/assetBrowserLabels.js +52 -0
  241. package/dist/esm/components/editor/AssetBrowser/assetBrowserLabels.js.map +1 -0
  242. package/dist/esm/components/editor/AssetBrowser/slots.js +18 -0
  243. package/dist/esm/components/editor/AssetBrowser/slots.js.map +1 -0
  244. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserAnnouncement.js +19 -0
  245. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserAnnouncement.js.map +1 -0
  246. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js +70 -0
  247. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js.map +1 -0
  248. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js +108 -0
  249. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js.map +1 -0
  250. package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js +192 -0
  251. package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js.map +1 -0
  252. package/dist/esm/components/editor/AssetBrowser/useAssetGridKeyboardNav.js +91 -0
  253. package/dist/esm/components/editor/AssetBrowser/useAssetGridKeyboardNav.js.map +1 -0
  254. package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js +91 -0
  255. package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js.map +1 -0
  256. package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js +128 -0
  257. package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js.map +1 -0
  258. package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js +72 -0
  259. package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js.map +1 -0
  260. package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js +141 -0
  261. package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js.map +1 -0
  262. package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js +113 -0
  263. package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js.map +1 -0
  264. package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js +174 -0
  265. package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js.map +1 -0
  266. package/dist/esm/components/editor/ChatPanel/ChatActionBar.js.map +1 -1
  267. package/dist/esm/components/editor/ChatPanel/ChatAttachment.js +8 -2
  268. package/dist/esm/components/editor/ChatPanel/ChatAttachment.js.map +1 -1
  269. package/dist/esm/components/editor/ChatPanel/ChatBubble.js.map +1 -1
  270. package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js +20 -4
  271. package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js.map +1 -1
  272. package/dist/esm/components/editor/ChatPanel/ChatContextChip.js +1 -1
  273. package/dist/esm/components/editor/ChatPanel/ChatContextChip.js.map +1 -1
  274. package/dist/esm/components/editor/ChatPanel/ChatEmptyState.js +3 -1
  275. package/dist/esm/components/editor/ChatPanel/ChatEmptyState.js.map +1 -1
  276. package/dist/esm/components/editor/ChatPanel/ChatIcons.js.map +1 -1
  277. package/dist/esm/components/editor/ChatPanel/ChatInput.js +10 -3
  278. package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
  279. package/dist/esm/components/editor/ChatPanel/ChatInputToolbar.js.map +1 -1
  280. package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js +1 -1
  281. package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js.map +1 -1
  282. package/dist/esm/components/editor/ChatPanel/ChatMessage.js +10 -3
  283. package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
  284. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js +5 -3
  285. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js.map +1 -1
  286. package/dist/esm/components/editor/ChatPanel/ChatPanel.js.map +1 -1
  287. package/dist/esm/components/editor/ChatPanel/ChatToolCall.js +1 -1
  288. package/dist/esm/components/editor/ChatPanel/ChatToolCall.js.map +1 -1
  289. package/dist/esm/components/editor/ChatPanel/ChatTypingIndicator.js.map +1 -1
  290. package/dist/esm/components/editor/ChatPanel/useChatInput.js.map +1 -1
  291. package/dist/esm/components/editor/ChatPanel/useChatMessages.js +7 -4
  292. package/dist/esm/components/editor/ChatPanel/useChatMessages.js.map +1 -1
  293. package/dist/esm/components/editor/ChatPanel/useChatScroll.js +6 -1
  294. package/dist/esm/components/editor/ChatPanel/useChatScroll.js.map +1 -1
  295. package/dist/esm/components/editor/Minimap/Minimap.css.js +18 -0
  296. package/dist/esm/components/editor/Minimap/Minimap.css.js.map +1 -0
  297. package/dist/esm/components/editor/Minimap/Minimap.js +257 -0
  298. package/dist/esm/components/editor/Minimap/Minimap.js.map +1 -0
  299. package/dist/esm/components/editor/Minimap/Minimap.types.js +11 -0
  300. package/dist/esm/components/editor/Minimap/Minimap.types.js.map +1 -0
  301. package/dist/esm/components/editor/Minimap/MinimapContext.js +48 -0
  302. package/dist/esm/components/editor/Minimap/MinimapContext.js.map +1 -0
  303. package/dist/esm/components/editor/Minimap/MinimapCorner.js +16 -0
  304. package/dist/esm/components/editor/Minimap/MinimapCorner.js.map +1 -0
  305. package/dist/esm/components/editor/Minimap/MinimapFooter.js +16 -0
  306. package/dist/esm/components/editor/Minimap/MinimapFooter.js.map +1 -0
  307. package/dist/esm/components/editor/Minimap/MinimapStore.js +166 -0
  308. package/dist/esm/components/editor/Minimap/MinimapStore.js.map +1 -0
  309. package/dist/esm/components/editor/Minimap/MinimapTitle.js +16 -0
  310. package/dist/esm/components/editor/Minimap/MinimapTitle.js.map +1 -0
  311. package/dist/esm/components/editor/Minimap/ViewportMinimap.js +69 -0
  312. package/dist/esm/components/editor/Minimap/ViewportMinimap.js.map +1 -0
  313. package/dist/esm/components/editor/Minimap/computeBoundsFromItems.js +65 -0
  314. package/dist/esm/components/editor/Minimap/computeBoundsFromItems.js.map +1 -0
  315. package/dist/esm/components/editor/Minimap/index.js +15 -0
  316. package/dist/esm/components/editor/Minimap/index.js.map +1 -0
  317. package/dist/esm/components/editor/Minimap/minimapCoords.js +105 -0
  318. package/dist/esm/components/editor/Minimap/minimapCoords.js.map +1 -0
  319. package/dist/esm/components/editor/Minimap/minimapDrawing.js +93 -0
  320. package/dist/esm/components/editor/Minimap/minimapDrawing.js.map +1 -0
  321. package/dist/esm/components/editor/Minimap/minimapHitTest.js +59 -0
  322. package/dist/esm/components/editor/Minimap/minimapHitTest.js.map +1 -0
  323. package/dist/esm/components/editor/Minimap/useMinimapGestures.js +299 -0
  324. package/dist/esm/components/editor/Minimap/useMinimapGestures.js.map +1 -0
  325. package/dist/esm/components/editor/NodeGraph/NodeGraph.css.js +36 -0
  326. package/dist/esm/components/editor/NodeGraph/NodeGraph.css.js.map +1 -0
  327. package/dist/esm/components/editor/NodeGraph/NodeGraph.js +627 -0
  328. package/dist/esm/components/editor/NodeGraph/NodeGraph.js.map +1 -0
  329. package/dist/esm/components/editor/NodeGraph/NodeGraph.types.js +10 -0
  330. package/dist/esm/components/editor/NodeGraph/NodeGraph.types.js.map +1 -0
  331. package/dist/esm/components/editor/NodeGraph/NodeGraphContext.js +54 -0
  332. package/dist/esm/components/editor/NodeGraph/NodeGraphContext.js.map +1 -0
  333. package/dist/esm/components/editor/NodeGraph/NodeGraphEdgeLabels.js +137 -0
  334. package/dist/esm/components/editor/NodeGraph/NodeGraphEdgeLabels.js.map +1 -0
  335. package/dist/esm/components/editor/NodeGraph/NodeGraphGroup.js +211 -0
  336. package/dist/esm/components/editor/NodeGraph/NodeGraphGroup.js.map +1 -0
  337. package/dist/esm/components/editor/NodeGraph/NodeGraphMinimap.js +122 -0
  338. package/dist/esm/components/editor/NodeGraph/NodeGraphMinimap.js.map +1 -0
  339. package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js +170 -0
  340. package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js.map +1 -0
  341. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeContext.js +21 -0
  342. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeContext.js.map +1 -0
  343. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeParts.js +56 -0
  344. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeParts.js.map +1 -0
  345. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js +59 -0
  346. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js.map +1 -0
  347. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSectionContext.js +17 -0
  348. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSectionContext.js.map +1 -0
  349. package/dist/esm/components/editor/NodeGraph/NodeGraphPin.js +35 -0
  350. package/dist/esm/components/editor/NodeGraph/NodeGraphPin.js.map +1 -0
  351. package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js +191 -0
  352. package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js.map +1 -0
  353. package/dist/esm/components/editor/NodeGraph/NodeGraphPortVisual.js +46 -0
  354. package/dist/esm/components/editor/NodeGraph/NodeGraphPortVisual.js.map +1 -0
  355. package/dist/esm/components/editor/NodeGraph/NodeGraphSlots.js +50 -0
  356. package/dist/esm/components/editor/NodeGraph/NodeGraphSlots.js.map +1 -0
  357. package/dist/esm/components/editor/NodeGraph/NodeGraphSpawnPalette.js +70 -0
  358. package/dist/esm/components/editor/NodeGraph/NodeGraphSpawnPalette.js.map +1 -0
  359. package/dist/esm/components/editor/NodeGraph/NodeGraphStore.js +543 -0
  360. package/dist/esm/components/editor/NodeGraph/NodeGraphStore.js.map +1 -0
  361. package/dist/esm/components/editor/NodeGraph/NodeGraphToolbar.js +100 -0
  362. package/dist/esm/components/editor/NodeGraph/NodeGraphToolbar.js.map +1 -0
  363. package/dist/esm/components/editor/NodeGraph/createTypeMatchValidator.js +37 -0
  364. package/dist/esm/components/editor/NodeGraph/createTypeMatchValidator.js.map +1 -0
  365. package/dist/esm/components/editor/NodeGraph/nodeGraphActions.js +53 -0
  366. package/dist/esm/components/editor/NodeGraph/nodeGraphActions.js.map +1 -0
  367. package/dist/esm/components/editor/NodeGraph/nodeGraphDrawing.js +461 -0
  368. package/dist/esm/components/editor/NodeGraph/nodeGraphDrawing.js.map +1 -0
  369. package/dist/esm/components/editor/NodeGraph/nodeGraphIds.js +31 -0
  370. package/dist/esm/components/editor/NodeGraph/nodeGraphIds.js.map +1 -0
  371. package/dist/esm/components/editor/NodeGraph/nodeGraphMath.js +350 -0
  372. package/dist/esm/components/editor/NodeGraph/nodeGraphMath.js.map +1 -0
  373. package/dist/esm/components/editor/NodeGraph/sortSlots.js +69 -0
  374. package/dist/esm/components/editor/NodeGraph/sortSlots.js.map +1 -0
  375. package/dist/esm/components/editor/NodeGraph/useDragGesture.js +63 -0
  376. package/dist/esm/components/editor/NodeGraph/useDragGesture.js.map +1 -0
  377. package/dist/esm/components/editor/NodeGraph/useNodeGraph.js +207 -0
  378. package/dist/esm/components/editor/NodeGraph/useNodeGraph.js.map +1 -0
  379. package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js +334 -0
  380. package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js.map +1 -0
  381. package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js +137 -0
  382. package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js.map +1 -0
  383. package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js +392 -0
  384. package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js.map +1 -0
  385. package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js +164 -0
  386. package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js.map +1 -0
  387. package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js +234 -0
  388. package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js.map +1 -0
  389. package/dist/esm/components/editor/NodeGraph/useStoreSlice.js +49 -0
  390. package/dist/esm/components/editor/NodeGraph/useStoreSlice.js.map +1 -0
  391. package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js +1 -1
  392. package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js.map +1 -1
  393. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js +4 -3
  394. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js.map +1 -1
  395. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js +12 -7
  396. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js.map +1 -1
  397. package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js +7 -6
  398. package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js.map +1 -1
  399. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +21 -5
  400. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -1
  401. package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js +11 -10
  402. package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js.map +1 -1
  403. package/dist/esm/components/editor/PropertyInspector/PropertySection.js +32 -11
  404. package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -1
  405. package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js.map +1 -1
  406. package/dist/esm/components/editor/Timeline/Timeline.css.js +23 -0
  407. package/dist/esm/components/editor/Timeline/Timeline.css.js.map +1 -0
  408. package/dist/esm/components/editor/Timeline/Timeline.js +450 -0
  409. package/dist/esm/components/editor/Timeline/Timeline.js.map +1 -0
  410. package/dist/esm/components/editor/Timeline/Timeline.types.js +10 -0
  411. package/dist/esm/components/editor/Timeline/Timeline.types.js.map +1 -0
  412. package/dist/esm/components/editor/Timeline/TimelineContext.js +69 -0
  413. package/dist/esm/components/editor/Timeline/TimelineContext.js.map +1 -0
  414. package/dist/esm/components/editor/Timeline/TimelineFooter.js +16 -0
  415. package/dist/esm/components/editor/Timeline/TimelineFooter.js.map +1 -0
  416. package/dist/esm/components/editor/Timeline/TimelineMinimap.js +280 -0
  417. package/dist/esm/components/editor/Timeline/TimelineMinimap.js.map +1 -0
  418. package/dist/esm/components/editor/Timeline/TimelineStore.js +289 -0
  419. package/dist/esm/components/editor/Timeline/TimelineStore.js.map +1 -0
  420. package/dist/esm/components/editor/Timeline/TimelineToolbar.js +15 -0
  421. package/dist/esm/components/editor/Timeline/TimelineToolbar.js.map +1 -0
  422. package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js +142 -0
  423. package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js.map +1 -0
  424. package/dist/esm/components/editor/Timeline/TimelineTrackScale.js +18 -0
  425. package/dist/esm/components/editor/Timeline/TimelineTrackScale.js.map +1 -0
  426. package/dist/esm/components/editor/Timeline/index.js +18 -0
  427. package/dist/esm/components/editor/Timeline/index.js.map +1 -0
  428. package/dist/esm/components/editor/Timeline/timelineCoords.js +118 -0
  429. package/dist/esm/components/editor/Timeline/timelineCoords.js.map +1 -0
  430. package/dist/esm/components/editor/Timeline/timelineDrawing.js +390 -0
  431. package/dist/esm/components/editor/Timeline/timelineDrawing.js.map +1 -0
  432. package/dist/esm/components/editor/Timeline/timelineEdits.js +323 -0
  433. package/dist/esm/components/editor/Timeline/timelineEdits.js.map +1 -0
  434. package/dist/esm/components/editor/Timeline/timelineHitTest.js +153 -0
  435. package/dist/esm/components/editor/Timeline/timelineHitTest.js.map +1 -0
  436. package/dist/esm/components/editor/Timeline/timelineLayout.js +39 -0
  437. package/dist/esm/components/editor/Timeline/timelineLayout.js.map +1 -0
  438. package/dist/esm/components/editor/Timeline/timelineSelection.js +0 -0
  439. package/dist/esm/components/editor/Timeline/timelineSelection.js.map +1 -0
  440. package/dist/esm/components/editor/Timeline/useTimelineDraw.js +156 -0
  441. package/dist/esm/components/editor/Timeline/useTimelineDraw.js.map +1 -0
  442. package/dist/esm/components/editor/Timeline/useTimelineGestures.js +587 -0
  443. package/dist/esm/components/editor/Timeline/useTimelineGestures.js.map +1 -0
  444. package/dist/esm/components/editor/Timeline/useTimelinePlayback.js +85 -0
  445. package/dist/esm/components/editor/Timeline/useTimelinePlayback.js.map +1 -0
  446. package/dist/esm/components/editor/TransformControl/TransformControl.js +4 -4
  447. package/dist/esm/components/editor/TransformControl/TransformControl.js.map +1 -1
  448. package/dist/esm/components/editor/ViewportGizmo/ViewportGizmo.js +8 -4
  449. package/dist/esm/components/editor/ViewportGizmo/ViewportGizmo.js.map +1 -1
  450. package/dist/esm/components/editor/ViewportGizmo/gizmoMath.js +6 -2
  451. package/dist/esm/components/editor/ViewportGizmo/gizmoMath.js.map +1 -1
  452. package/dist/esm/components/editor/ViewportGizmo/useGizmoInteraction.js +8 -6
  453. package/dist/esm/components/editor/ViewportGizmo/useGizmoInteraction.js.map +1 -1
  454. package/dist/esm/components/editor/ViewportGizmo/useGizmoRenderer.js +1 -2
  455. package/dist/esm/components/editor/ViewportGizmo/useGizmoRenderer.js.map +1 -1
  456. package/dist/esm/components/feedback/Alert/Alert.js +8 -8
  457. package/dist/esm/components/feedback/Alert/Alert.js.map +1 -1
  458. package/dist/esm/components/feedback/Alert/AlertActions.js.map +1 -1
  459. package/dist/esm/components/feedback/Alert/AlertDescription.js.map +1 -1
  460. package/dist/esm/components/feedback/Alert/AlertTitle.js.map +1 -1
  461. package/dist/esm/components/feedback/CommandPalette/CommandPalette.js +32 -22
  462. package/dist/esm/components/feedback/CommandPalette/CommandPalette.js.map +1 -1
  463. package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js.map +1 -1
  464. package/dist/esm/components/feedback/CommandPalette/useRecentItems.js +3 -1
  465. package/dist/esm/components/feedback/CommandPalette/useRecentItems.js.map +1 -1
  466. package/dist/esm/components/feedback/Dialog/Dialog.js +6 -3
  467. package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -1
  468. package/dist/esm/components/feedback/Dialog/DialogBody.js.map +1 -1
  469. package/dist/esm/components/feedback/Dialog/DialogClose.js.map +1 -1
  470. package/dist/esm/components/feedback/Dialog/DialogFooter.js.map +1 -1
  471. package/dist/esm/components/feedback/Dialog/DialogHeader.js +1 -1
  472. package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -1
  473. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js +10 -2
  474. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -1
  475. package/dist/esm/components/feedback/Drawer/Drawer.js +4 -1
  476. package/dist/esm/components/feedback/Drawer/Drawer.js.map +1 -1
  477. package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js +4 -0
  478. package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js.map +1 -1
  479. package/dist/esm/components/feedback/EmptyState/EmptyState.js +1 -1
  480. package/dist/esm/components/feedback/EmptyState/EmptyState.js.map +1 -1
  481. package/dist/esm/components/feedback/LogView/LogView.css.js +35 -0
  482. package/dist/esm/components/feedback/LogView/LogView.css.js.map +1 -0
  483. package/dist/esm/components/feedback/LogView/LogView.js +297 -0
  484. package/dist/esm/components/feedback/LogView/LogView.js.map +1 -0
  485. package/dist/esm/components/feedback/LogView/LogViewBody.js +205 -0
  486. package/dist/esm/components/feedback/LogView/LogViewBody.js.map +1 -0
  487. package/dist/esm/components/feedback/LogView/LogViewContext.js +31 -0
  488. package/dist/esm/components/feedback/LogView/LogViewContext.js.map +1 -0
  489. package/dist/esm/components/feedback/LogView/LogViewParts.js +73 -0
  490. package/dist/esm/components/feedback/LogView/LogViewParts.js.map +1 -0
  491. package/dist/esm/components/feedback/LogView/LogViewStore.js +240 -0
  492. package/dist/esm/components/feedback/LogView/LogViewStore.js.map +1 -0
  493. package/dist/esm/components/feedback/LogView/logViewLabels.js +25 -0
  494. package/dist/esm/components/feedback/LogView/logViewLabels.js.map +1 -0
  495. package/dist/esm/components/feedback/LogView/logViewLevels.js +74 -0
  496. package/dist/esm/components/feedback/LogView/logViewLevels.js.map +1 -0
  497. package/dist/esm/components/feedback/LogView/logViewUtils.js +128 -0
  498. package/dist/esm/components/feedback/LogView/logViewUtils.js.map +1 -0
  499. package/dist/esm/components/feedback/LogView/useFollowTail.js +95 -0
  500. package/dist/esm/components/feedback/LogView/useFollowTail.js.map +1 -0
  501. package/dist/esm/components/feedback/LogView/useLogSelection.js +113 -0
  502. package/dist/esm/components/feedback/LogView/useLogSelection.js.map +1 -0
  503. package/dist/esm/components/feedback/ProgressBar/CircularProgress.js +1 -1
  504. package/dist/esm/components/feedback/ProgressBar/CircularProgress.js.map +1 -1
  505. package/dist/esm/components/feedback/ProgressBar/ProgressBar.js +1 -1
  506. package/dist/esm/components/feedback/ProgressBar/ProgressBar.js.map +1 -1
  507. package/dist/esm/components/feedback/Skeleton/Skeleton.js +1 -1
  508. package/dist/esm/components/feedback/Skeleton/Skeleton.js.map +1 -1
  509. package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js +1 -1
  510. package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js.map +1 -1
  511. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js +1 -1
  512. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js.map +1 -1
  513. package/dist/esm/components/feedback/Spinner/Spinner.js +1 -1
  514. package/dist/esm/components/feedback/Spinner/Spinner.js.map +1 -1
  515. package/dist/esm/components/feedback/Stat/Stat.js.map +1 -1
  516. package/dist/esm/components/feedback/Toast/ToastContainer.js +1 -1
  517. package/dist/esm/components/feedback/Toast/ToastContainer.js.map +1 -1
  518. package/dist/esm/components/feedback/Toast/ToastItem.js +7 -3
  519. package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -1
  520. package/dist/esm/components/feedback/Toast/ToastProvider.js.map +1 -1
  521. package/dist/esm/components/feedback/Toast/useToast.js.map +1 -1
  522. package/dist/esm/components/form/FormHelperText.js.map +1 -1
  523. package/dist/esm/components/form/FormLabel.js.map +1 -1
  524. package/dist/esm/components/form/InputWrapper.js.map +1 -1
  525. package/dist/esm/components/layout/Accordion/Accordion.js +1 -1
  526. package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -1
  527. package/dist/esm/components/layout/Accordion/AccordionContent.js +1 -1
  528. package/dist/esm/components/layout/Accordion/AccordionContent.js.map +1 -1
  529. package/dist/esm/components/layout/Accordion/AccordionItem.js +1 -1
  530. package/dist/esm/components/layout/Accordion/AccordionItem.js.map +1 -1
  531. package/dist/esm/components/layout/Accordion/AccordionTrigger.js +7 -2
  532. package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -1
  533. package/dist/esm/components/layout/Card/Card.js +2 -2
  534. package/dist/esm/components/layout/Card/Card.js.map +1 -1
  535. package/dist/esm/components/layout/Divider/Divider.js.map +1 -1
  536. package/dist/esm/components/layout/Flex/Flex.js +1 -1
  537. package/dist/esm/components/layout/Flex/Flex.js.map +1 -1
  538. package/dist/esm/components/layout/Grid/Grid.js +1 -1
  539. package/dist/esm/components/layout/Grid/Grid.js.map +1 -1
  540. package/dist/esm/components/layout/ListItem/ListItem.js +1 -1
  541. package/dist/esm/components/layout/ListItem/ListItem.js.map +1 -1
  542. package/dist/esm/components/layout/PageHeader/PageHeader.js.map +1 -1
  543. package/dist/esm/components/layout/PanelSurface/PanelSurface.js +3 -3
  544. package/dist/esm/components/layout/PanelSurface/PanelSurface.js.map +1 -1
  545. package/dist/esm/components/layout/ScrollArea/ScrollArea.js +91 -23
  546. package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -1
  547. package/dist/esm/components/layout/Spacer/Spacer.js.map +1 -1
  548. package/dist/esm/components/layout/SplitPane/SplitPane.js +29 -16
  549. package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -1
  550. package/dist/esm/components/layout/SplitPane/SplitPanePanel.js.map +1 -1
  551. package/dist/esm/components/layout/Stack/Stack.js +1 -1
  552. package/dist/esm/components/layout/Stack/Stack.js.map +1 -1
  553. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js +4 -0
  554. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -1
  555. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js +6 -2
  556. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -1
  557. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbSeparator.js.map +1 -1
  558. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +13 -2
  559. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -1
  560. package/dist/esm/components/navigation/ContextMenu/ContextMenu.js +45 -39
  561. package/dist/esm/components/navigation/ContextMenu/ContextMenu.js.map +1 -1
  562. package/dist/esm/components/navigation/Menu/Menu.css.js +9 -12
  563. package/dist/esm/components/navigation/Menu/Menu.css.js.map +1 -1
  564. package/dist/esm/components/navigation/Menu/Menu.js +97 -63
  565. package/dist/esm/components/navigation/Menu/Menu.js.map +1 -1
  566. package/dist/esm/components/navigation/Menu/MenuGapContext.js +19 -0
  567. package/dist/esm/components/navigation/Menu/MenuGapContext.js.map +1 -0
  568. package/dist/esm/components/navigation/Pagination/Pagination.js.map +1 -1
  569. package/dist/esm/components/navigation/Pagination/usePagination.js.map +1 -1
  570. package/dist/esm/components/navigation/PathBar/PathBar.css.js +6 -0
  571. package/dist/esm/components/navigation/PathBar/PathBar.css.js.map +1 -0
  572. package/dist/esm/components/navigation/PathBar/PathBar.js +184 -0
  573. package/dist/esm/components/navigation/PathBar/PathBar.js.map +1 -0
  574. package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js +151 -0
  575. package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js.map +1 -0
  576. package/dist/esm/components/navigation/PathBar/pathUtils.js +118 -0
  577. package/dist/esm/components/navigation/PathBar/pathUtils.js.map +1 -0
  578. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js +16 -6
  579. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -1
  580. package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js +1 -1
  581. package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js.map +1 -1
  582. package/dist/esm/components/navigation/Tabs/Tab.js +10 -3
  583. package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -1
  584. package/dist/esm/components/navigation/Tabs/TabList.js +5 -2
  585. package/dist/esm/components/navigation/Tabs/TabList.js.map +1 -1
  586. package/dist/esm/components/navigation/Tabs/TabPanel.js +1 -1
  587. package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -1
  588. package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -1
  589. package/dist/esm/components/primitives/Avatar/Avatar.js +11 -4
  590. package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -1
  591. package/dist/esm/components/primitives/Avatar/AvatarGroup.js +2 -2
  592. package/dist/esm/components/primitives/Avatar/AvatarGroup.js.map +1 -1
  593. package/dist/esm/components/primitives/Badge/Badge.js +10 -3
  594. package/dist/esm/components/primitives/Badge/Badge.js.map +1 -1
  595. package/dist/esm/components/primitives/Button/Button.js.map +1 -1
  596. package/dist/esm/components/primitives/Checkbox/Checkbox.js +6 -4
  597. package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
  598. package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js +2 -2
  599. package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js.map +1 -1
  600. package/dist/esm/components/primitives/Code/Code.js.map +1 -1
  601. package/dist/esm/components/primitives/Collapsible/Collapsible.js +2 -2
  602. package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -1
  603. package/dist/esm/components/primitives/HoverCard/HoverCard.js +5 -3
  604. package/dist/esm/components/primitives/HoverCard/HoverCard.js.map +1 -1
  605. package/dist/esm/components/primitives/Icon/Icon.js +1 -1
  606. package/dist/esm/components/primitives/Icon/Icon.js.map +1 -1
  607. package/dist/esm/components/primitives/IconButton/IconButton.js.map +1 -1
  608. package/dist/esm/components/primitives/Input/Input.js +1 -1
  609. package/dist/esm/components/primitives/Input/Input.js.map +1 -1
  610. package/dist/esm/components/primitives/Kbd/Kbd.js +1 -1
  611. package/dist/esm/components/primitives/Kbd/Kbd.js.map +1 -1
  612. package/dist/esm/components/primitives/Link/Link.js.map +1 -1
  613. package/dist/esm/components/primitives/Paper/Paper.js.map +1 -1
  614. package/dist/esm/components/primitives/Popover/Popover.js +1 -1
  615. package/dist/esm/components/primitives/Popover/Popover.js.map +1 -1
  616. package/dist/esm/components/primitives/Popover/PopoverClose.js +1 -1
  617. package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -1
  618. package/dist/esm/components/primitives/Popover/PopoverContent.js +6 -4
  619. package/dist/esm/components/primitives/Popover/PopoverContent.js.map +1 -1
  620. package/dist/esm/components/primitives/Popover/PopoverTrigger.js.map +1 -1
  621. package/dist/esm/components/primitives/Radio/Radio.js +3 -3
  622. package/dist/esm/components/primitives/Radio/Radio.js.map +1 -1
  623. package/dist/esm/components/primitives/Radio/RadioGroup.js +2 -2
  624. package/dist/esm/components/primitives/Radio/RadioGroup.js.map +1 -1
  625. package/dist/esm/components/primitives/Switch/Switch.js +1 -1
  626. package/dist/esm/components/primitives/Switch/Switch.js.map +1 -1
  627. package/dist/esm/components/primitives/Text/Text.js.map +1 -1
  628. package/dist/esm/components/primitives/TextArea/TextArea.js +3 -4
  629. package/dist/esm/components/primitives/TextArea/TextArea.js.map +1 -1
  630. package/dist/esm/components/primitives/Tooltip/Arrow.js +1 -1
  631. package/dist/esm/components/primitives/Tooltip/Arrow.js.map +1 -1
  632. package/dist/esm/components/primitives/Tooltip/Tooltip.js +9 -7
  633. package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -1
  634. package/dist/esm/components/primitives/Tooltip/utils.js +1 -1
  635. package/dist/esm/components/primitives/Tooltip/utils.js.map +1 -1
  636. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.js.map +1 -1
  637. package/dist/esm/components/primitives/canvas/CanvasContainer.js +1 -1
  638. package/dist/esm/components/primitives/canvas/CanvasContainer.js.map +1 -1
  639. package/dist/esm/components/primitives/canvas/canvasCoords.js.map +1 -1
  640. package/dist/esm/components/primitives/canvas/canvasDrawing.js +1 -1
  641. package/dist/esm/components/primitives/canvas/canvasDrawing.js.map +1 -1
  642. package/dist/esm/components/primitives/canvas/canvasTheme.js.map +1 -1
  643. package/dist/esm/components/primitives/canvas/useCanvasRenderer.js +8 -2
  644. package/dist/esm/components/primitives/canvas/useCanvasRenderer.js.map +1 -1
  645. package/dist/esm/components/primitives/viewport/Viewport.css.js +12 -0
  646. package/dist/esm/components/primitives/viewport/Viewport.css.js.map +1 -0
  647. package/dist/esm/components/primitives/viewport/Viewport.js +189 -0
  648. package/dist/esm/components/primitives/viewport/Viewport.js.map +1 -0
  649. package/dist/esm/components/primitives/viewport/ViewportContext.js +47 -0
  650. package/dist/esm/components/primitives/viewport/ViewportContext.js.map +1 -0
  651. package/dist/esm/components/primitives/viewport/ViewportLayer.js +113 -0
  652. package/dist/esm/components/primitives/viewport/ViewportLayer.js.map +1 -0
  653. package/dist/esm/components/primitives/viewport/ViewportOverlay.js +47 -0
  654. package/dist/esm/components/primitives/viewport/ViewportOverlay.js.map +1 -0
  655. package/dist/esm/components/primitives/viewport/ViewportStore.js +210 -0
  656. package/dist/esm/components/primitives/viewport/ViewportStore.js.map +1 -0
  657. package/dist/esm/components/primitives/viewport/ViewportWorld.js +38 -0
  658. package/dist/esm/components/primitives/viewport/ViewportWorld.js.map +1 -0
  659. package/dist/esm/components/primitives/viewport/useViewportGestures.js +333 -0
  660. package/dist/esm/components/primitives/viewport/useViewportGestures.js.map +1 -0
  661. package/dist/esm/components/primitives/viewport/viewportCoords.js +37 -0
  662. package/dist/esm/components/primitives/viewport/viewportCoords.js.map +1 -0
  663. package/dist/esm/components/primitives/viewport/viewportMath.js +77 -0
  664. package/dist/esm/components/primitives/viewport/viewportMath.js.map +1 -0
  665. package/dist/esm/components/shell/AppShell/AppShell.js +1 -1
  666. package/dist/esm/components/shell/AppShell/AppShell.js.map +1 -1
  667. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.css.js +11 -10
  668. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.css.js.map +1 -1
  669. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js +60 -24
  670. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -1
  671. package/dist/esm/components/shell/MenuBar/MenuBar.js +23 -16
  672. package/dist/esm/components/shell/MenuBar/MenuBar.js.map +1 -1
  673. package/dist/esm/components/shell/StatusBar/StatusBar.js.map +1 -1
  674. package/dist/esm/components/shell/Toolbar/Toolbar.js +4 -3
  675. package/dist/esm/components/shell/Toolbar/Toolbar.js.map +1 -1
  676. package/dist/esm/context/KeyboardContext.js.map +1 -1
  677. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js +1 -1
  678. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js.map +1 -1
  679. package/dist/esm/hooks/useClickOutside/useClickOutside.js +9 -9
  680. package/dist/esm/hooks/useClickOutside/useClickOutside.js.map +1 -1
  681. package/dist/esm/hooks/useClipboard/useClipboard.js +4 -0
  682. package/dist/esm/hooks/useClipboard/useClipboard.js.map +1 -1
  683. package/dist/esm/hooks/useControlledState/useControlledState.js.map +1 -1
  684. package/dist/esm/hooks/useDebounced/useDebouncedCallback.js +11 -6
  685. package/dist/esm/hooks/useDebounced/useDebouncedCallback.js.map +1 -1
  686. package/dist/esm/hooks/useDebounced/useDebouncedValue.js +16 -4
  687. package/dist/esm/hooks/useDebounced/useDebouncedValue.js.map +1 -1
  688. package/dist/esm/hooks/useDisclosure/useDisclosure.js.map +1 -1
  689. package/dist/esm/hooks/useEventCallback/useEventCallback.js +49 -0
  690. package/dist/esm/hooks/useEventCallback/useEventCallback.js.map +1 -0
  691. package/dist/esm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
  692. package/dist/esm/hooks/useHotkey/useHotkey.js +7 -12
  693. package/dist/esm/hooks/useHotkey/useHotkey.js.map +1 -1
  694. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js +2 -0
  695. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
  696. package/dist/esm/hooks/useIsMounted/useIsMounted.js +43 -0
  697. package/dist/esm/hooks/useIsMounted/useIsMounted.js.map +1 -0
  698. package/dist/esm/hooks/useKeyboard/useKeyboard.js.map +1 -1
  699. package/dist/esm/hooks/useKeyboard/utils.js.map +1 -1
  700. package/dist/esm/hooks/useLatest/useLatest.js +31 -0
  701. package/dist/esm/hooks/useLatest/useLatest.js.map +1 -0
  702. package/dist/esm/hooks/useListboxNav/useListboxNav.js +29 -13
  703. package/dist/esm/hooks/useListboxNav/useListboxNav.js.map +1 -1
  704. package/dist/esm/hooks/useMediaQuery/useMediaQuery.js +7 -1
  705. package/dist/esm/hooks/useMediaQuery/useMediaQuery.js.map +1 -1
  706. package/dist/esm/hooks/useMergedRef/useMergedRef.js +6 -1
  707. package/dist/esm/hooks/useMergedRef/useMergedRef.js.map +1 -1
  708. package/dist/esm/hooks/useNavigationHistory/useNavigationHistory.js +146 -0
  709. package/dist/esm/hooks/useNavigationHistory/useNavigationHistory.js.map +1 -0
  710. package/dist/esm/hooks/useResizeObserver/useResizeObserver.js +6 -8
  711. package/dist/esm/hooks/useResizeObserver/useResizeObserver.js.map +1 -1
  712. package/dist/esm/hooks/useTheme/useTheme.js +6 -3
  713. package/dist/esm/hooks/useTheme/useTheme.js.map +1 -1
  714. package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js +9 -4
  715. package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js.map +1 -1
  716. package/dist/esm/index.js +63 -4
  717. package/dist/esm/index.js.map +1 -1
  718. package/dist/esm/node_modules/tslib/tslib.es6.js +37 -0
  719. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -0
  720. package/dist/esm/styles.js +3 -0
  721. package/dist/esm/styles.js.map +1 -0
  722. package/dist/esm/theme/ThemeProvider.js +6 -4
  723. package/dist/esm/theme/ThemeProvider.js.map +1 -1
  724. package/dist/esm/theme/VanillaThemeProvider.js.map +1 -1
  725. package/dist/esm/theme/breakpoints.js.map +1 -1
  726. package/dist/esm/theme/contract.css.js +1 -1
  727. package/dist/esm/theme/createCustomTheme.js +2 -2
  728. package/dist/esm/theme/createCustomTheme.js.map +1 -1
  729. package/dist/esm/theme/createLightTheme.js.map +1 -1
  730. package/dist/esm/theme/darkTheme.css.js +2 -2
  731. package/dist/esm/theme/darkThemeValues.js +1 -1
  732. package/dist/esm/theme/darkThemeValues.js.map +1 -1
  733. package/dist/esm/theme/lightTheme.css.js +1 -1
  734. package/dist/esm/theme/lightThemeValues.js +1 -1
  735. package/dist/esm/theme/lightThemeValues.js.map +1 -1
  736. package/dist/esm/theme/themeContractData.js +4 -4
  737. package/dist/esm/theme/themeContractData.js.map +1 -1
  738. package/dist/esm/utils/cx.js.map +1 -1
  739. package/dist/esm/utils/devWarn.js +1 -1
  740. package/dist/esm/utils/devWarn.js.map +1 -1
  741. package/dist/esm/utils/mathExpression.js +1 -1
  742. package/dist/esm/utils/mathExpression.js.map +1 -1
  743. package/dist/esm/utils/mathUtils.js.map +1 -1
  744. package/dist/esm/utils/objects.js.map +1 -1
  745. package/dist/esm/utils/platform.js.map +1 -1
  746. package/dist/tokens/tokens.dark.css +1 -1
  747. package/dist/tokens/tokens.json +1 -1
  748. package/dist/tokens/tokens.light.css +1 -1
  749. package/dist/types/components/Icons/AddIcon.d.ts +1 -1
  750. package/dist/types/components/Icons/AiChatIcon.d.ts +1 -1
  751. package/dist/types/components/Icons/AiSparklesIcon.d.ts +1 -1
  752. package/dist/types/components/Icons/ArchiveIcon.d.ts +1 -1
  753. package/dist/types/components/Icons/ArrowDownIcon.d.ts +1 -1
  754. package/dist/types/components/Icons/ArrowLeftIcon.d.ts +1 -1
  755. package/dist/types/components/Icons/ArrowRightIcon.d.ts +1 -1
  756. package/dist/types/components/Icons/ArrowUpIcon.d.ts +1 -1
  757. package/dist/types/components/Icons/BookmarkIcon.d.ts +1 -1
  758. package/dist/types/components/Icons/BugIcon.d.ts +1 -1
  759. package/dist/types/components/Icons/BuildingIcon.d.ts +1 -1
  760. package/dist/types/components/Icons/CalendarIcon.d.ts +1 -1
  761. package/dist/types/components/Icons/CameraIcon.d.ts +34 -0
  762. package/dist/types/components/Icons/CheckIcon.d.ts +1 -1
  763. package/dist/types/components/Icons/ChevronDownIcon.d.ts +1 -1
  764. package/dist/types/components/Icons/ChevronLeftIcon.d.ts +1 -1
  765. package/dist/types/components/Icons/ChevronRightIcon.d.ts +1 -1
  766. package/dist/types/components/Icons/ChevronUpIcon.d.ts +1 -1
  767. package/dist/types/components/Icons/CircleIcon.d.ts +1 -1
  768. package/dist/types/components/Icons/ClockIcon.d.ts +1 -1
  769. package/dist/types/components/Icons/CloseIcon.d.ts +1 -1
  770. package/dist/types/components/Icons/CloudUploadIcon.d.ts +1 -1
  771. package/dist/types/components/Icons/CodeIcon.d.ts +1 -1
  772. package/dist/types/components/Icons/CopyIcon.d.ts +1 -1
  773. package/dist/types/components/Icons/CubeIcon.d.ts +34 -0
  774. package/dist/types/components/Icons/CutIcon.d.ts +1 -1
  775. package/dist/types/components/Icons/DotsHorizontalIcon.d.ts +1 -1
  776. package/dist/types/components/Icons/DotsVerticalIcon.d.ts +1 -1
  777. package/dist/types/components/Icons/DownloadIcon.d.ts +1 -1
  778. package/dist/types/components/Icons/EditIcon.d.ts +1 -1
  779. package/dist/types/components/Icons/ErrorIcon.d.ts +1 -1
  780. package/dist/types/components/Icons/ExternalLinkIcon.d.ts +1 -1
  781. package/dist/types/components/Icons/EyeDropperIcon.d.ts +1 -1
  782. package/dist/types/components/Icons/EyeIcon.d.ts +1 -1
  783. package/dist/types/components/Icons/FileTextIcon.d.ts +1 -1
  784. package/dist/types/components/Icons/FilterIcon.d.ts +1 -1
  785. package/dist/types/components/Icons/FirstIcon.d.ts +1 -1
  786. package/dist/types/components/Icons/FolderCogIcon.d.ts +1 -1
  787. package/dist/types/components/Icons/FolderIcon.d.ts +1 -1
  788. package/dist/types/components/Icons/FolderOpenIcon.d.ts +1 -1
  789. package/dist/types/components/Icons/FullscreenIcon.d.ts +1 -1
  790. package/dist/types/components/Icons/GitBranchIcon.d.ts +1 -1
  791. package/dist/types/components/Icons/GridIcon.d.ts +1 -1
  792. package/dist/types/components/Icons/HeartIcon.d.ts +1 -1
  793. package/dist/types/components/Icons/HelpIcon.d.ts +1 -1
  794. package/dist/types/components/Icons/HomeIcon.d.ts +1 -1
  795. package/dist/types/components/Icons/ImageIcon.d.ts +34 -0
  796. package/dist/types/components/Icons/InfoIcon.d.ts +1 -1
  797. package/dist/types/components/Icons/LastIcon.d.ts +1 -1
  798. package/dist/types/components/Icons/LinkIcon.d.ts +1 -1
  799. package/dist/types/components/Icons/ListIcon.d.ts +1 -1
  800. package/dist/types/components/Icons/LockIcon.d.ts +1 -1
  801. package/dist/types/components/Icons/MaximizeIcon.d.ts +1 -1
  802. package/dist/types/components/Icons/MenuIcon.d.ts +1 -1
  803. package/dist/types/components/Icons/MinimizeIcon.d.ts +1 -1
  804. package/dist/types/components/Icons/MinusIcon.d.ts +1 -1
  805. package/dist/types/components/Icons/OrbitIcon.d.ts +34 -0
  806. package/dist/types/components/Icons/PasteIcon.d.ts +1 -1
  807. package/dist/types/components/Icons/PauseIcon.d.ts +1 -1
  808. package/dist/types/components/Icons/PinIcon.d.ts +1 -1
  809. package/dist/types/components/Icons/PlayIcon.d.ts +1 -1
  810. package/dist/types/components/Icons/RedoIcon.d.ts +1 -1
  811. package/dist/types/components/Icons/RefreshIcon.d.ts +1 -1
  812. package/dist/types/components/Icons/RobotIcon.d.ts +1 -1
  813. package/dist/types/components/Icons/RotateIcon.d.ts +35 -0
  814. package/dist/types/components/Icons/SaveIcon.d.ts +1 -1
  815. package/dist/types/components/Icons/SearchIcon.d.ts +1 -1
  816. package/dist/types/components/Icons/SendIcon.d.ts +1 -1
  817. package/dist/types/components/Icons/SettingsIcon.d.ts +1 -1
  818. package/dist/types/components/Icons/SortIcon.d.ts +1 -1
  819. package/dist/types/components/Icons/SpinIcon.d.ts +35 -0
  820. package/dist/types/components/Icons/StarIcon.d.ts +1 -1
  821. package/dist/types/components/Icons/StopIcon.d.ts +1 -1
  822. package/dist/types/components/Icons/SuccessIcon.d.ts +1 -1
  823. package/dist/types/components/Icons/TagIcon.d.ts +1 -1
  824. package/dist/types/components/Icons/TangentAlignedIcon.d.ts +1 -1
  825. package/dist/types/components/Icons/TangentAutoIcon.d.ts +1 -1
  826. package/dist/types/components/Icons/TangentFreeIcon.d.ts +1 -1
  827. package/dist/types/components/Icons/TangentLinearIcon.d.ts +1 -1
  828. package/dist/types/components/Icons/TangentMirroredIcon.d.ts +1 -1
  829. package/dist/types/components/Icons/TangentStepIcon.d.ts +1 -1
  830. package/dist/types/components/Icons/TerminalIcon.d.ts +1 -1
  831. package/dist/types/components/Icons/TrashIcon.d.ts +1 -1
  832. package/dist/types/components/Icons/UndoIcon.d.ts +1 -1
  833. package/dist/types/components/Icons/UnlinkIcon.d.ts +1 -1
  834. package/dist/types/components/Icons/UnlockIcon.d.ts +1 -1
  835. package/dist/types/components/Icons/UploadIcon.d.ts +1 -1
  836. package/dist/types/components/Icons/UserIcon.d.ts +1 -1
  837. package/dist/types/components/Icons/UsersIcon.d.ts +1 -1
  838. package/dist/types/components/Icons/WarningIcon.d.ts +1 -1
  839. package/dist/types/components/Icons/ZoomFitIcon.d.ts +35 -0
  840. package/dist/types/components/Icons/ZoomInIcon.d.ts +1 -1
  841. package/dist/types/components/Icons/ZoomOutIcon.d.ts +1 -1
  842. package/dist/types/components/controls/CartesianPicker/CartesianPicker.types.d.ts +3 -3
  843. package/dist/types/components/controls/ColorPicker/ColorPicker.types.d.ts +2 -2
  844. package/dist/types/components/controls/ColorPicker/EyeDropper.d.ts +1 -1
  845. package/dist/types/components/controls/Combobox/Combobox.types.d.ts +1 -1
  846. package/dist/types/components/controls/CurveEditor/CurveEditor.types.d.ts +8 -58
  847. package/dist/types/components/controls/CurveEditor/curveUtils.d.ts +2 -1
  848. package/dist/types/components/controls/FileTree/FileTree.d.ts +34 -0
  849. package/dist/types/components/controls/FileTree/FileTree.types.d.ts +133 -0
  850. package/dist/types/components/controls/FileTree/fileTreeIcons.d.ts +29 -0
  851. package/dist/types/components/controls/FileTree/fileTreeLabels.d.ts +19 -0
  852. package/dist/types/components/controls/FileUploader/FileUploader.types.d.ts +2 -2
  853. package/dist/types/components/controls/MultiSelect/MultiSelect.types.d.ts +1 -1
  854. package/dist/types/components/controls/NumberInput/NumberInput.d.ts +2 -2
  855. package/dist/types/components/controls/Select/Select.d.ts +1 -1
  856. package/dist/types/components/controls/Select/Select.types.d.ts +45 -11
  857. package/dist/types/components/controls/Slider/Slider.d.ts +1 -1
  858. package/dist/types/components/controls/TagInput/TagInput.types.d.ts +2 -2
  859. package/dist/types/components/controls/TreeView/TreeView.d.ts +1 -1
  860. package/dist/types/components/controls/TreeView/TreeView.types.d.ts +24 -2
  861. package/dist/types/components/controls/VectorInput/VectorInput.types.d.ts +1 -1
  862. package/dist/types/components/data/DataTable/DataTable.types.d.ts +2 -2
  863. package/dist/types/components/editor/AssetBrowser/AssetBrowser.d.ts +13 -0
  864. package/dist/types/components/editor/AssetBrowser/AssetBrowser.types.d.ts +241 -0
  865. package/dist/types/components/editor/AssetBrowser/assetBrowserLabels.d.ts +70 -0
  866. package/dist/types/components/editor/ChatPanel/ChatMarkdownRenderer.types.d.ts +1 -1
  867. package/dist/types/components/editor/ChatPanel/ChatPanel.types.d.ts +2 -2
  868. package/dist/types/components/editor/Minimap/Minimap.d.ts +26 -0
  869. package/dist/types/components/editor/Minimap/Minimap.types.d.ts +249 -0
  870. package/dist/types/components/editor/Minimap/MinimapContext.d.ts +27 -0
  871. package/dist/types/components/editor/Minimap/MinimapCorner.d.ts +8 -0
  872. package/dist/types/components/editor/Minimap/MinimapFooter.d.ts +8 -0
  873. package/dist/types/components/editor/Minimap/MinimapStore.d.ts +17 -0
  874. package/dist/types/components/editor/Minimap/MinimapTitle.d.ts +8 -0
  875. package/dist/types/components/editor/Minimap/ViewportMinimap.d.ts +52 -0
  876. package/dist/types/components/editor/Minimap/computeBoundsFromItems.d.ts +13 -0
  877. package/dist/types/components/editor/Minimap/index.d.ts +13 -0
  878. package/dist/types/components/editor/NodeGraph/NodeGraph.d.ts +63 -0
  879. package/dist/types/components/editor/NodeGraph/NodeGraph.types.d.ts +568 -0
  880. package/dist/types/components/editor/NodeGraph/NodeGraphContext.d.ts +30 -0
  881. package/dist/types/components/editor/NodeGraph/NodeGraphNodeParts.d.ts +86 -0
  882. package/dist/types/components/editor/NodeGraph/NodeGraphNodeSection.d.ts +47 -0
  883. package/dist/types/components/editor/NodeGraph/NodeGraphPin.d.ts +57 -0
  884. package/dist/types/components/editor/NodeGraph/NodeGraphPort.d.ts +30 -0
  885. package/dist/types/components/editor/NodeGraph/NodeGraphPortVisual.d.ts +46 -0
  886. package/dist/types/components/editor/NodeGraph/NodeGraphSlots.d.ts +16 -0
  887. package/dist/types/components/editor/NodeGraph/NodeGraphStore.d.ts +256 -0
  888. package/dist/types/components/editor/NodeGraph/NodeGraphToolbar.d.ts +54 -0
  889. package/dist/types/components/editor/NodeGraph/createTypeMatchValidator.d.ts +43 -0
  890. package/dist/types/components/editor/NodeGraph/nodeGraphActions.d.ts +39 -0
  891. package/dist/types/components/editor/NodeGraph/nodeGraphIds.d.ts +16 -0
  892. package/dist/types/components/editor/NodeGraph/useNodeGraph.d.ts +103 -0
  893. package/dist/types/components/editor/PropertyInspector/PropertyInspector.types.d.ts +51 -5
  894. package/dist/types/components/editor/Timeline/Timeline.d.ts +18 -0
  895. package/dist/types/components/editor/Timeline/Timeline.types.d.ts +348 -0
  896. package/dist/types/components/editor/Timeline/TimelineContext.d.ts +51 -0
  897. package/dist/types/components/editor/Timeline/TimelineFooter.d.ts +8 -0
  898. package/dist/types/components/editor/Timeline/TimelineMinimap.d.ts +21 -0
  899. package/dist/types/components/editor/Timeline/TimelineStore.d.ts +41 -0
  900. package/dist/types/components/editor/Timeline/TimelineToolbar.d.ts +8 -0
  901. package/dist/types/components/editor/Timeline/TimelineTrackScale.d.ts +8 -0
  902. package/dist/types/components/editor/Timeline/index.d.ts +15 -0
  903. package/dist/types/components/editor/Timeline/timelineCoords.d.ts +7 -0
  904. package/dist/types/components/editor/Timeline/timelineEdits.d.ts +18 -0
  905. package/dist/types/components/editor/TransformControl/TransformControl.types.d.ts +2 -2
  906. package/dist/types/components/editor/ViewportGizmo/ViewportGizmo.types.d.ts +1 -1
  907. package/dist/types/components/feedback/Alert/Alert.d.ts +2 -2
  908. package/dist/types/components/feedback/Alert/Alert.types.d.ts +5 -5
  909. package/dist/types/components/feedback/CommandPalette/CommandPalette.types.d.ts +1 -3
  910. package/dist/types/components/feedback/Dialog/Dialog.types.d.ts +2 -2
  911. package/dist/types/components/feedback/Drawer/Drawer.types.d.ts +1 -1
  912. package/dist/types/components/feedback/EmptyState/EmptyState.types.d.ts +2 -2
  913. package/dist/types/components/feedback/LogView/LogView.d.ts +58 -0
  914. package/dist/types/components/feedback/LogView/LogView.types.d.ts +333 -0
  915. package/dist/types/components/feedback/LogView/LogViewBody.d.ts +15 -0
  916. package/dist/types/components/feedback/LogView/LogViewContext.d.ts +9 -0
  917. package/dist/types/components/feedback/LogView/LogViewParts.d.ts +35 -0
  918. package/dist/types/components/feedback/LogView/LogViewStore.d.ts +4 -0
  919. package/dist/types/components/feedback/LogView/logViewLabels.d.ts +9 -0
  920. package/dist/types/components/feedback/LogView/logViewUtils.d.ts +41 -0
  921. package/dist/types/components/feedback/ProgressBar/ProgressBar.types.d.ts +3 -3
  922. package/dist/types/components/feedback/Skeleton/Skeleton.types.d.ts +4 -4
  923. package/dist/types/components/feedback/Stat/Stat.types.d.ts +2 -2
  924. package/dist/types/components/feedback/Toast/Toast.types.d.ts +1 -1
  925. package/dist/types/components/form/FormHelperText.d.ts +2 -2
  926. package/dist/types/components/form/FormLabel.d.ts +1 -1
  927. package/dist/types/components/form/InputWrapper.d.ts +2 -2
  928. package/dist/types/components/layout/Accordion/Accordion.types.d.ts +2 -2
  929. package/dist/types/components/layout/Card/Card.types.d.ts +6 -6
  930. package/dist/types/components/layout/Divider/Divider.types.d.ts +2 -2
  931. package/dist/types/components/layout/Flex/Flex.d.ts +1 -1
  932. package/dist/types/components/layout/Grid/Grid.d.ts +1 -1
  933. package/dist/types/components/layout/ListItem/ListItem.types.d.ts +2 -2
  934. package/dist/types/components/layout/PageHeader/PageHeader.types.d.ts +1 -1
  935. package/dist/types/components/layout/PanelSurface/PanelSurface.types.d.ts +6 -6
  936. package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +2 -2
  937. package/dist/types/components/layout/Stack/Stack.d.ts +1 -1
  938. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbItem.d.ts +1 -0
  939. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts +7 -0
  940. package/dist/types/components/navigation/ContextMenu/ContextMenu.d.ts +18 -3
  941. package/dist/types/components/navigation/ContextMenu/ContextMenu.types.d.ts +55 -63
  942. package/dist/types/components/navigation/Menu/Menu.d.ts +38 -35
  943. package/dist/types/components/navigation/Menu/Menu.types.d.ts +190 -71
  944. package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +1 -1
  945. package/dist/types/components/navigation/PathBar/PathBar.d.ts +31 -0
  946. package/dist/types/components/navigation/PathBar/PathBar.types.d.ts +79 -0
  947. package/dist/types/components/navigation/SegmentedControl/SegmentedControl.types.d.ts +3 -3
  948. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +2 -2
  949. package/dist/types/components/primitives/Avatar/Avatar.types.d.ts +2 -2
  950. package/dist/types/components/primitives/Badge/Badge.types.d.ts +1 -1
  951. package/dist/types/components/primitives/Button/Button.d.ts +2 -2
  952. package/dist/types/components/primitives/Checkbox/Checkbox.types.d.ts +2 -2
  953. package/dist/types/components/primitives/Code/Code.types.d.ts +1 -1
  954. package/dist/types/components/primitives/Collapsible/Collapsible.types.d.ts +2 -2
  955. package/dist/types/components/primitives/HoverCard/HoverCard.types.d.ts +3 -3
  956. package/dist/types/components/primitives/Icon/Icon.d.ts +2 -2
  957. package/dist/types/components/primitives/IconButton/IconButton.d.ts +1 -1
  958. package/dist/types/components/primitives/Input/Input.d.ts +1 -1
  959. package/dist/types/components/primitives/Kbd/Kbd.types.d.ts +1 -1
  960. package/dist/types/components/primitives/Link/Link.types.d.ts +1 -1
  961. package/dist/types/components/primitives/Popover/Popover.types.d.ts +2 -2
  962. package/dist/types/components/primitives/Radio/Radio.types.d.ts +3 -3
  963. package/dist/types/components/primitives/Switch/Switch.d.ts +1 -1
  964. package/dist/types/components/primitives/TextArea/TextArea.types.d.ts +1 -1
  965. package/dist/types/components/primitives/Tooltip/Tooltip.d.ts +1 -1
  966. package/dist/types/components/primitives/VisuallyHidden/VisuallyHidden.types.d.ts +1 -1
  967. package/dist/types/components/primitives/canvas/canvas.types.d.ts +16 -1
  968. package/dist/types/components/primitives/viewport/Viewport.d.ts +38 -0
  969. package/dist/types/components/primitives/viewport/Viewport.types.d.ts +257 -0
  970. package/dist/types/components/primitives/viewport/ViewportContext.d.ts +23 -0
  971. package/dist/types/components/primitives/viewport/ViewportLayer.d.ts +26 -0
  972. package/dist/types/components/primitives/viewport/ViewportOverlay.d.ts +27 -0
  973. package/dist/types/components/primitives/viewport/ViewportWorld.d.ts +25 -0
  974. package/dist/types/components/primitives/viewport/viewportCoords.d.ts +25 -0
  975. package/dist/types/components/primitives/viewport/viewportMath.d.ts +35 -0
  976. package/dist/types/components/shell/AppShell/AppShell.types.d.ts +2 -2
  977. package/dist/types/components/shell/FloatingPanel/FloatingPanel.types.d.ts +2 -2
  978. package/dist/types/components/shell/MenuBar/MenuBar.types.d.ts +5 -5
  979. package/dist/types/components/shell/StatusBar/StatusBar.types.d.ts +3 -3
  980. package/dist/types/components/shell/Toolbar/Toolbar.types.d.ts +5 -5
  981. package/dist/types/hooks/useDebounced/useDebouncedValue.d.ts +13 -4
  982. package/dist/types/hooks/useEventCallback/useEventCallback.d.ts +32 -0
  983. package/dist/types/hooks/useIsMounted/useIsMounted.d.ts +28 -0
  984. package/dist/types/hooks/useKeyboard/types.d.ts +1 -1
  985. package/dist/types/hooks/useLatest/useLatest.d.ts +23 -0
  986. package/dist/types/hooks/useResizeObserver/useResizeObserver.d.ts +3 -3
  987. package/dist/types/index.d.ts +71 -6
  988. package/dist/types/theme/ThemeProvider.d.ts +5 -3
  989. package/dist/types/theme/contract.css.d.ts +1 -1
  990. package/dist/types/theme/createCustomTheme.d.ts +1 -1
  991. package/dist/types/theme/darkThemeValues.d.ts +1 -1
  992. package/dist/types/theme/lightThemeValues.d.ts +1 -1
  993. package/dist/types/theme/themeContractData.d.ts +4 -4
  994. package/dist/types/theme-values.d.ts +1 -1
  995. package/dist/types/types/keyframe.d.ts +64 -0
  996. package/package.json +34 -18
  997. package/dist/esm/_virtual/_commonjsHelpers.js +0 -6
  998. package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
  999. package/dist/esm/_virtual/cjs.js +0 -4
  1000. package/dist/esm/_virtual/cjs.js.map +0 -1
  1001. package/dist/esm/_virtual/cssesc.js +0 -8
  1002. package/dist/esm/_virtual/cssesc.js.map +0 -1
  1003. package/dist/esm/_virtual/picocolors.js +0 -8
  1004. package/dist/esm/_virtual/picocolors.js.map +0 -1
  1005. package/dist/esm/_virtual/picocolors2.js +0 -4
  1006. package/dist/esm/_virtual/picocolors2.js.map +0 -1
  1007. package/dist/esm/assets/src/components/navigation/Menu/Menu.css.ts.vanilla-DD0c5D10.css +0 -67
  1008. package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js +0 -53
  1009. package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js.map +0 -1
  1010. package/dist/esm/components/navigation/Menu/Menu.helpers.js +0 -53
  1011. package/dist/esm/components/navigation/Menu/Menu.helpers.js.map +0 -1
  1012. package/dist/esm/components/navigation/Menu/useMenu.js +0 -88
  1013. package/dist/esm/components/navigation/Menu/useMenu.js.map +0 -1
  1014. package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js +0 -56
  1015. package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +0 -1
  1016. package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js +0 -46
  1017. package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js.map +0 -1
  1018. package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js +0 -13
  1019. package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js.map +0 -1
  1020. package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js +0 -962
  1021. package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js.map +0 -1
  1022. package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js +0 -309
  1023. package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js.map +0 -1
  1024. package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js +0 -18
  1025. package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js.map +0 -1
  1026. package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js +0 -23
  1027. package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js.map +0 -1
  1028. package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js +0 -1543
  1029. package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js.map +0 -1
  1030. package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js +0 -38
  1031. package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js.map +0 -1
  1032. package/dist/esm/node_modules/css-what/lib/es/parse.js +0 -424
  1033. package/dist/esm/node_modules/css-what/lib/es/parse.js.map +0 -1
  1034. package/dist/esm/node_modules/css-what/lib/es/types.js +0 -29
  1035. package/dist/esm/node_modules/css-what/lib/es/types.js.map +0 -1
  1036. package/dist/esm/node_modules/cssesc/cssesc.js +0 -120
  1037. package/dist/esm/node_modules/cssesc/cssesc.js.map +0 -1
  1038. package/dist/esm/node_modules/dedent/dist/dedent.js +0 -100
  1039. package/dist/esm/node_modules/dedent/dist/dedent.js.map +0 -1
  1040. package/dist/esm/node_modules/deep-object-diff/mjs/diff.js +0 -40
  1041. package/dist/esm/node_modules/deep-object-diff/mjs/diff.js.map +0 -1
  1042. package/dist/esm/node_modules/deep-object-diff/mjs/utils.js +0 -9
  1043. package/dist/esm/node_modules/deep-object-diff/mjs/utils.js.map +0 -1
  1044. package/dist/esm/node_modules/deepmerge/dist/cjs.js +0 -143
  1045. package/dist/esm/node_modules/deepmerge/dist/cjs.js.map +0 -1
  1046. package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js +0 -1386
  1047. package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js.map +0 -1
  1048. package/dist/esm/node_modules/modern-ahocorasick/dist/index.js +0 -102
  1049. package/dist/esm/node_modules/modern-ahocorasick/dist/index.js.map +0 -1
  1050. package/dist/esm/node_modules/picocolors/picocolors.js +0 -87
  1051. package/dist/esm/node_modules/picocolors/picocolors.js.map +0 -1
  1052. package/dist/types/components/navigation/ContextMenu/useContextMenuTarget.d.ts +0 -5
  1053. package/dist/types/components/navigation/Menu/useMenu.d.ts +0 -16
@@ -0,0 +1,543 @@
1
+ const EMPTY_DATA = {
2
+ nodes: [],
3
+ edges: [],
4
+ groups: [],
5
+ defaultNodeSize: { width: 180, height: 80 },
6
+ };
7
+ const EMPTY_SELECTION = {
8
+ nodes: [],
9
+ edges: [],
10
+ groups: [],
11
+ };
12
+ const EMPTY_HOVER = {
13
+ hoveredNodeId: null,
14
+ hoveredEdgeId: null,
15
+ hoveredPort: null,
16
+ };
17
+ const IDLE = { kind: 'idle' };
18
+ /**
19
+ * Hot-path runtime state for `<NodeGraph>` — graph data, selection,
20
+ * interaction, hover. Each slice carries its own subscribe/get pair so
21
+ * subscribers re-render only on relevant changes (e.g. the edge canvas
22
+ * subscribes to data + interaction, individual node bodies subscribe only
23
+ * to selection + drag delta for their own id).
24
+ *
25
+ * Mirrors `ViewportStore` / `MinimapStore` in structure.
26
+ */
27
+ class NodeGraphStore {
28
+ constructor() {
29
+ this.data = EMPTY_DATA;
30
+ this.selection = EMPTY_SELECTION;
31
+ this.interaction = IDLE;
32
+ this.hover = EMPTY_HOVER;
33
+ // `Map<id, NodeGraphNode>` mirror of `data.nodes` — rebuilt in `setData`.
34
+ // Enables O(1) `getNodeById` lookups for hot paths (edge drawing,
35
+ // pointer-driven drag handlers) that previously did O(n) `nodes.find`
36
+ // per call.
37
+ this.nodeIndex = new Map();
38
+ // Set of `"${node}\0${port}"` keys for every port referenced by an edge
39
+ // endpoint — recomputed in `setData` only when the edges reference
40
+ // changes. Lets `<NodeGraph.Port>` slots auto-derive their "connected"
41
+ // visual state without the consumer threading a parallel index down
42
+ // through `renderNode`.
43
+ this.connectedPorts = new Set();
44
+ // Map<nodeId, Map<portId, NodeGraphPortPosition>>.
45
+ // Mutated in place by `<NodeGraph.Port>` slots on mount/resize. Listeners
46
+ // are notified whenever any port's position, side, or dataType changes.
47
+ this.portPositions = new Map();
48
+ // Map<nodeId, NodeGraphMeasuredSize>. Populated by NodeGraphNodeView's
49
+ // ResizeObserver — used by getNodeBox when node.width/height are absent.
50
+ this.measuredSizes = new Map();
51
+ this.dataListeners = new Set();
52
+ this.connectedPortsListeners = new Set();
53
+ this.selectionListeners = new Set();
54
+ this.interactionListeners = new Set();
55
+ // Per-node interaction subscriptions. Each `<NodeGraphNodeView>` registers
56
+ // for its own id and is woken only when the interaction state changes in
57
+ // a way that could affect that node's drag delta — i.e. the node was, or
58
+ // now is, part of the active drag set. This cuts the notify fan-out from
59
+ // O(all-nodes) to O(dragged-nodes) per pointermove flush, which is the
60
+ // dominant cost when dragging a single node out of a large graph.
61
+ this.nodeInteractionListeners = new Map();
62
+ this.hoverListeners = new Set();
63
+ this.portPositionListeners = new Set();
64
+ this.measuredSizeListeners = new Set();
65
+ // Monotonic counters used as `useSyncExternalStore` snapshots for the
66
+ // notify-only port-positions / measured-sizes channels. A stable null
67
+ // snapshot would let React skip the update via `Object.is(prev, next)`,
68
+ // even when the subscription fired.
69
+ this.portPositionsVersion = 0;
70
+ this.measuredSizesVersion = 0;
71
+ this.spawnRequestListeners = new Set();
72
+ // ── Public read API ──
73
+ this.getData = () => this.data;
74
+ this.getSelection = () => this.selection;
75
+ this.getInteraction = () => this.interaction;
76
+ this.getHover = () => this.hover;
77
+ /**
78
+ * The set of `"${node}\0${port}"` keys that are referenced by at least
79
+ * one edge endpoint. Reference is stable until the membership actually
80
+ * changes, so it can back a `useSyncExternalStore` snapshot directly.
81
+ */
82
+ this.getConnectedPorts = () => this.connectedPorts;
83
+ /** True when the given port is referenced by at least one edge endpoint. */
84
+ this.isPortConnected = (nodeId, portId) => {
85
+ return this.connectedPorts.has(portKey(nodeId, portId));
86
+ };
87
+ /**
88
+ * O(1) node lookup by id, backed by an internal Map rebuilt on each
89
+ * `setData`. Use this from hot paths instead of `data.nodes.find(...)`.
90
+ */
91
+ this.getNodeById = (id) => {
92
+ return this.nodeIndex.get(id);
93
+ };
94
+ /**
95
+ * Read the registered position of a single port. Returns `null` when the
96
+ * port hasn't yet been measured (e.g. on first paint before
97
+ * `useLayoutEffect` has run, or after the slot unmounted).
98
+ */
99
+ this.getPortPosition = (nodeId, portId) => {
100
+ return this.portPositions.get(nodeId)?.get(portId) ?? null;
101
+ };
102
+ /** Read the measured DOM size of a node wrapper. */
103
+ this.getMeasuredSize = (nodeId) => {
104
+ return this.measuredSizes.get(nodeId) ?? null;
105
+ };
106
+ /**
107
+ * Monotonic snapshot of the port-positions channel — pass to
108
+ * `useSyncExternalStore` alongside `subscribePortPositions` so React
109
+ * actually re-renders consumers on every real change. Incremented
110
+ * whenever a port position is added, updated, removed, or GC'd by
111
+ * `setData`. Skipped on no-op writes.
112
+ */
113
+ this.getPortPositionsVersion = () => this.portPositionsVersion;
114
+ /**
115
+ * Monotonic snapshot of the measured-sizes channel — same role as
116
+ * `getPortPositionsVersion`, for `subscribeMeasuredSizes`.
117
+ */
118
+ this.getMeasuredSizesVersion = () => this.measuredSizesVersion;
119
+ // ── Subscriptions ──
120
+ this.subscribeData = (cb) => {
121
+ this.dataListeners.add(cb);
122
+ return () => {
123
+ this.dataListeners.delete(cb);
124
+ };
125
+ };
126
+ /**
127
+ * Subscribe to the connected-ports channel — fires only when the set of
128
+ * edge-referenced ports actually changes membership (not on every node
129
+ * move). Backs the auto-`connected` state on `<NodeGraph.Port>`.
130
+ */
131
+ this.subscribeConnectedPorts = (cb) => {
132
+ this.connectedPortsListeners.add(cb);
133
+ return () => {
134
+ this.connectedPortsListeners.delete(cb);
135
+ };
136
+ };
137
+ this.subscribeSelection = (cb) => {
138
+ this.selectionListeners.add(cb);
139
+ return () => {
140
+ this.selectionListeners.delete(cb);
141
+ };
142
+ };
143
+ this.subscribeInteraction = (cb) => {
144
+ this.interactionListeners.add(cb);
145
+ return () => {
146
+ this.interactionListeners.delete(cb);
147
+ };
148
+ };
149
+ /**
150
+ * Subscribe to interaction changes that affect a specific node id. The
151
+ * callback fires only when the node enters or leaves the active drag set
152
+ * (drag-nodes `nodeIds`, drag-groups `containedNodeIds`) — every other
153
+ * tick where the drag set is unchanged for this id is filtered out at the
154
+ * store layer instead of waking the subscriber for a no-op compare.
155
+ *
156
+ * Use this from per-node React subscribers; the global
157
+ * {@link subscribeInteraction} channel stays in place for canvas layers
158
+ * and other consumers that care about every interaction change.
159
+ */
160
+ this.subscribeNodeInteraction = (nodeId, cb) => {
161
+ let set = this.nodeInteractionListeners.get(nodeId);
162
+ if (!set) {
163
+ set = new Set();
164
+ this.nodeInteractionListeners.set(nodeId, set);
165
+ }
166
+ set.add(cb);
167
+ return () => {
168
+ const current = this.nodeInteractionListeners.get(nodeId);
169
+ if (!current)
170
+ return;
171
+ current.delete(cb);
172
+ if (current.size === 0) {
173
+ this.nodeInteractionListeners.delete(nodeId);
174
+ }
175
+ };
176
+ };
177
+ this.subscribeHover = (cb) => {
178
+ this.hoverListeners.add(cb);
179
+ return () => {
180
+ this.hoverListeners.delete(cb);
181
+ };
182
+ };
183
+ this.subscribePortPositions = (cb) => {
184
+ this.portPositionListeners.add(cb);
185
+ return () => {
186
+ this.portPositionListeners.delete(cb);
187
+ };
188
+ };
189
+ this.subscribeMeasuredSizes = (cb) => {
190
+ this.measuredSizeListeners.add(cb);
191
+ return () => {
192
+ this.measuredSizeListeners.delete(cb);
193
+ };
194
+ };
195
+ // ── Spawn-palette request channel ──
196
+ //
197
+ // Notification-only channel used by `<NodeGraph.SpawnPalette>` to
198
+ // listen for "user wants to spawn a node here" events without forcing
199
+ // the consumer to wire context-menu state through their own React
200
+ // tree. The main `NodeGraph` component pumps this channel from its
201
+ // `handleContextMenu` when the right-click target is `empty` or
202
+ // `group` (i.e. a place where it makes sense to drop a new node).
203
+ this.subscribeSpawnRequest = (cb) => {
204
+ this.spawnRequestListeners.add(cb);
205
+ return () => {
206
+ this.spawnRequestListeners.delete(cb);
207
+ };
208
+ };
209
+ }
210
+ requestSpawn(info) {
211
+ this.spawnRequestListeners.forEach(cb => {
212
+ cb(info);
213
+ });
214
+ }
215
+ // ── Mutators ──
216
+ setData(next) {
217
+ if (next.nodes === this.data.nodes &&
218
+ next.edges === this.data.edges &&
219
+ next.groups === this.data.groups &&
220
+ next.defaultNodeSize.width === this.data.defaultNodeSize.width &&
221
+ next.defaultNodeSize.height === this.data.defaultNodeSize.height) {
222
+ return;
223
+ }
224
+ const edgesChanged = next.edges !== this.data.edges;
225
+ const prevNodeIds = new Set(this.data.nodes.map(n => n.id));
226
+ // Rebuild the id → node lookup in the same pass that collects the
227
+ // next-frame id set, so GC and the index stay in sync without a
228
+ // second iteration.
229
+ this.nodeIndex.clear();
230
+ const nextNodeIds = new Set();
231
+ for (const n of next.nodes) {
232
+ nextNodeIds.add(n.id);
233
+ this.nodeIndex.set(n.id, n);
234
+ }
235
+ // Garbage-collect port positions + measured sizes for nodes that have
236
+ // been removed from the data. Slot unmount effects normally clear their
237
+ // own entries, but if the node disappears in a single render tick (drop
238
+ // from controlled state) the unmount and the data swap can race.
239
+ let didMutatePortPositions = false;
240
+ let didMutateMeasuredSizes = false;
241
+ for (const id of prevNodeIds) {
242
+ if (nextNodeIds.has(id))
243
+ continue;
244
+ if (this.portPositions.delete(id))
245
+ didMutatePortPositions = true;
246
+ if (this.measuredSizes.delete(id))
247
+ didMutateMeasuredSizes = true;
248
+ }
249
+ this.data = next;
250
+ this.dataListeners.forEach(cb => {
251
+ cb();
252
+ });
253
+ // Recompute the connected-ports index when edges changed, and notify
254
+ // its dedicated channel only if the membership actually differs — an
255
+ // edges array that was replaced but carries the same endpoints (e.g.
256
+ // a label edit) leaves port "connected" state untouched.
257
+ if (edgesChanged) {
258
+ const nextConnected = computeConnectedPorts(next.edges);
259
+ if (!connectedSetsEqual(nextConnected, this.connectedPorts)) {
260
+ this.connectedPorts = nextConnected;
261
+ this.connectedPortsListeners.forEach(cb => {
262
+ cb();
263
+ });
264
+ }
265
+ }
266
+ if (didMutatePortPositions) {
267
+ this.portPositionsVersion++;
268
+ this.portPositionListeners.forEach(cb => {
269
+ cb();
270
+ });
271
+ }
272
+ if (didMutateMeasuredSizes) {
273
+ this.measuredSizesVersion++;
274
+ this.measuredSizeListeners.forEach(cb => {
275
+ cb();
276
+ });
277
+ }
278
+ }
279
+ setSelection(next) {
280
+ if (selectionEqual(next, this.selection))
281
+ return;
282
+ this.selection = next;
283
+ this.selectionListeners.forEach(cb => {
284
+ cb();
285
+ });
286
+ }
287
+ setInteraction(next) {
288
+ if (interactionEqual(next, this.interaction))
289
+ return;
290
+ const prev = this.interaction;
291
+ this.interaction = next;
292
+ // Global listeners: canvas layers, the main NodeGraph component (for
293
+ // layer invalidation), and any consumer hook that wants every change.
294
+ this.interactionListeners.forEach(cb => {
295
+ cb();
296
+ });
297
+ // Per-node listeners: notify ids that are in the next or the prev drag
298
+ // set. A node that *leaves* the drag set needs to clear its local
299
+ // delta, so previously-affected ids must fire too even when they're no
300
+ // longer in `next`.
301
+ const prevIds = getDragAffectedNodeIds(prev);
302
+ const nextIds = getDragAffectedNodeIds(next);
303
+ if (prevIds.size === 0 && nextIds.size === 0)
304
+ return;
305
+ for (const id of nextIds) {
306
+ this.nodeInteractionListeners.get(id)?.forEach(cb => {
307
+ cb();
308
+ });
309
+ }
310
+ for (const id of prevIds) {
311
+ // Dedupe — already notified above when the node is in both sets.
312
+ if (nextIds.has(id))
313
+ continue;
314
+ this.nodeInteractionListeners.get(id)?.forEach(cb => {
315
+ cb();
316
+ });
317
+ }
318
+ }
319
+ setHover(next) {
320
+ if (hoverEqual(next, this.hover))
321
+ return;
322
+ this.hover = next;
323
+ this.hoverListeners.forEach(cb => {
324
+ cb();
325
+ });
326
+ }
327
+ /**
328
+ * Register a port's measured position. Called by `<NodeGraph.Port>` from
329
+ * a `useLayoutEffect` + `ResizeObserver`. No-ops when the incoming
330
+ * position is identical to the cached one — protects edge layer from
331
+ * redraw storms when nodes resize without porting any pin movement.
332
+ */
333
+ setPortPosition(nodeId, portId, next) {
334
+ let perNode = this.portPositions.get(nodeId);
335
+ if (!perNode) {
336
+ perNode = new Map();
337
+ this.portPositions.set(nodeId, perNode);
338
+ }
339
+ const prev = perNode.get(portId);
340
+ if (prev?.x === next.x &&
341
+ prev.y === next.y &&
342
+ prev.side === next.side &&
343
+ prev.dataType === next.dataType) {
344
+ return;
345
+ }
346
+ perNode.set(portId, next);
347
+ this.portPositionsVersion++;
348
+ this.portPositionListeners.forEach(cb => {
349
+ cb();
350
+ });
351
+ }
352
+ /** Remove a port registration. Called by `<NodeGraph.Port>` cleanup. */
353
+ removePortPosition(nodeId, portId) {
354
+ const perNode = this.portPositions.get(nodeId);
355
+ if (!perNode)
356
+ return;
357
+ if (!perNode.delete(portId))
358
+ return;
359
+ if (perNode.size === 0)
360
+ this.portPositions.delete(nodeId);
361
+ this.portPositionsVersion++;
362
+ this.portPositionListeners.forEach(cb => {
363
+ cb();
364
+ });
365
+ }
366
+ /**
367
+ * Register / refresh the measured DOM size of a node wrapper. No-ops on
368
+ * identical width+height.
369
+ */
370
+ setMeasuredSize(nodeId, next) {
371
+ const prev = this.measuredSizes.get(nodeId);
372
+ if (prev?.width === next.width && prev.height === next.height) {
373
+ return;
374
+ }
375
+ this.measuredSizes.set(nodeId, next);
376
+ this.measuredSizesVersion++;
377
+ this.measuredSizeListeners.forEach(cb => {
378
+ cb();
379
+ });
380
+ }
381
+ /** Clear the measured size of a node (called on unmount). */
382
+ clearMeasuredSize(nodeId) {
383
+ if (!this.measuredSizes.delete(nodeId))
384
+ return;
385
+ this.measuredSizesVersion++;
386
+ this.measuredSizeListeners.forEach(cb => {
387
+ cb();
388
+ });
389
+ }
390
+ // ── Convenience selection helpers ──
391
+ /** True when a node id is currently selected. */
392
+ isNodeSelected(id) {
393
+ return this.selection.nodes.includes(id);
394
+ }
395
+ /** True when an edge id is currently selected. */
396
+ isEdgeSelected(id) {
397
+ return this.selection.edges.includes(id);
398
+ }
399
+ /** True when a group id is currently selected. */
400
+ isGroupSelected(id) {
401
+ return this.selection.groups.includes(id);
402
+ }
403
+ }
404
+ // ─── Connected-ports index ───
405
+ /**
406
+ * Key for the connected-ports set. Uses a NUL separator so node / port ids
407
+ * containing dots or dashes can't collide (`"a.b" + "c"` vs `"a" + "b.c"`).
408
+ */
409
+ function portKey(node, port) {
410
+ return `${node}\u0000${port}`;
411
+ }
412
+ /** Build the set of `"${node}\0${port}"` keys referenced by any edge. */
413
+ function computeConnectedPorts(edges) {
414
+ const set = new Set();
415
+ for (const edge of edges) {
416
+ set.add(portKey(edge.source.node, edge.source.port));
417
+ set.add(portKey(edge.target.node, edge.target.port));
418
+ }
419
+ return set;
420
+ }
421
+ function connectedSetsEqual(a, b) {
422
+ if (a === b)
423
+ return true;
424
+ if (a.size !== b.size)
425
+ return false;
426
+ for (const key of a) {
427
+ if (!b.has(key))
428
+ return false;
429
+ }
430
+ return true;
431
+ }
432
+ // ─── Equality helpers (shallow, identity-aware) ───
433
+ function arrEqual(a, b) {
434
+ if (a === b)
435
+ return true;
436
+ if (a.length !== b.length)
437
+ return false;
438
+ for (let i = 0; i < a.length; i++) {
439
+ if (a[i] !== b[i])
440
+ return false;
441
+ }
442
+ return true;
443
+ }
444
+ function setEqual(a, b) {
445
+ if (a === b)
446
+ return true;
447
+ if (a.size !== b.size)
448
+ return false;
449
+ for (const item of a) {
450
+ if (!b.has(item))
451
+ return false;
452
+ }
453
+ return true;
454
+ }
455
+ const EMPTY_NODE_ID_SET = new Set();
456
+ /**
457
+ * Node ids whose drag delta could be affected by the given interaction
458
+ * state — used by `setInteraction` to fan out per-node notifications.
459
+ * Idle / connect / marquee / resize-group don't move nodes, so they
460
+ * return the empty set (no per-node subscriber needs waking).
461
+ */
462
+ function getDragAffectedNodeIds(state) {
463
+ if (state.kind === 'drag-nodes')
464
+ return state.nodeIds;
465
+ if (state.kind === 'drag-groups')
466
+ return state.containedNodeIds;
467
+ return EMPTY_NODE_ID_SET;
468
+ }
469
+ function selectionEqual(a, b) {
470
+ return (arrEqual(a.nodes, b.nodes) &&
471
+ arrEqual(a.edges, b.edges) &&
472
+ arrEqual(a.groups, b.groups));
473
+ }
474
+ function pointEqual(a, b) {
475
+ return a.x === b.x && a.y === b.y;
476
+ }
477
+ function portRefEqual(a, b) {
478
+ if (a === b)
479
+ return true;
480
+ if (!a || !b)
481
+ return false;
482
+ return a.node === b.node && a.port === b.port;
483
+ }
484
+ function interactionEqual(a, b) {
485
+ if (a === b)
486
+ return true;
487
+ if (a.kind !== b.kind)
488
+ return false;
489
+ switch (a.kind) {
490
+ case 'idle':
491
+ return true;
492
+ case 'drag-nodes': {
493
+ const bx = b;
494
+ return (setEqual(a.nodeIds, bx.nodeIds) &&
495
+ pointEqual(a.startWorld, bx.startWorld) &&
496
+ pointEqual(a.delta, bx.delta));
497
+ }
498
+ case 'drag-groups': {
499
+ const bx = b;
500
+ return (setEqual(a.groupIds, bx.groupIds) &&
501
+ setEqual(a.containedNodeIds, bx.containedNodeIds) &&
502
+ pointEqual(a.startWorld, bx.startWorld) &&
503
+ pointEqual(a.delta, bx.delta) &&
504
+ a.blocked === bx.blocked);
505
+ }
506
+ case 'resize-group': {
507
+ const bx = b;
508
+ return (a.groupId === bx.groupId &&
509
+ a.handle === bx.handle &&
510
+ a.startBounds.x === bx.startBounds.x &&
511
+ a.startBounds.y === bx.startBounds.y &&
512
+ a.startBounds.width === bx.startBounds.width &&
513
+ a.startBounds.height === bx.startBounds.height &&
514
+ pointEqual(a.delta, bx.delta) &&
515
+ a.blocked === bx.blocked);
516
+ }
517
+ case 'connect': {
518
+ const bx = b;
519
+ return (portRefEqual(a.source, bx.source) &&
520
+ pointEqual(a.currentWorld, bx.currentWorld) &&
521
+ portRefEqual(a.candidate, bx.candidate) &&
522
+ a.invalid === bx.invalid &&
523
+ a.reconnectEdgeId === bx.reconnectEdgeId &&
524
+ a.reconnectEnd === bx.reconnectEnd);
525
+ }
526
+ case 'marquee': {
527
+ const bx = b;
528
+ return (pointEqual(a.startWorld, bx.startWorld) &&
529
+ pointEqual(a.currentWorld, bx.currentWorld) &&
530
+ a.additive === bx.additive);
531
+ }
532
+ default:
533
+ return false;
534
+ }
535
+ }
536
+ function hoverEqual(a, b) {
537
+ return (a.hoveredNodeId === b.hoveredNodeId &&
538
+ a.hoveredEdgeId === b.hoveredEdgeId &&
539
+ portRefEqual(a.hoveredPort, b.hoveredPort));
540
+ }
541
+
542
+ export { NodeGraphStore };
543
+ //# sourceMappingURL=NodeGraphStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeGraphStore.js","sources":["src/components/editor/NodeGraph/NodeGraphStore.ts"],"sourcesContent":["import type {\n NodeGraphEdge,\n NodeGraphNode,\n NodeGraphGroup,\n NodeGraphPortRef,\n NodeGraphPortSide,\n NodeGraphSelection,\n} from './NodeGraph.types';\nimport type { Point2D } from '@/components/primitives/canvas/canvas.types';\nimport type { WorldRect } from '@/components/primitives/viewport';\n\n/** Snapshot of the data slice — the canonical graph contents. */\nexport interface NodeGraphDataState {\n nodes: ReadonlyArray<NodeGraphNode>;\n edges: ReadonlyArray<NodeGraphEdge>;\n groups: ReadonlyArray<NodeGraphGroup>;\n defaultNodeSize: { width: number; height: number };\n}\n\n/**\n * A port's measured position registered by a `<NodeGraph.Port>` slot.\n * Coordinates are in **node-local pixels** (relative to the node wrapper's\n * top-left). Because the wrapper is positioned in world space but rendered\n * in CSS pixels at zoom = 1 (zoom is applied by the parent `<ViewportWorld>`\n * transform), these pixels are equivalent to node-local world units.\n */\nexport interface NodeGraphPortPosition {\n x: number;\n y: number;\n side: NodeGraphPortSide;\n dataType?: string;\n}\n\n/** Measured DOM size of a node wrapper, in node-local world units. */\nexport interface NodeGraphMeasuredSize {\n width: number;\n height: number;\n}\n\n/**\n * Snapshot of the interaction slice — the active gesture (if any) and its\n * scratch data. Designed so the edge/preview drawing layer can read everything\n * it needs in one slice subscription.\n */\n/** Eight points along a rectangle that can be grabbed to resize a group. */\nexport type NodeGraphGroupResizeHandle =\n | 'nw'\n | 'n'\n | 'ne'\n | 'e'\n | 'se'\n | 's'\n | 'sw'\n | 'w';\n\nexport type NodeGraphInteractionState =\n | { kind: 'idle' }\n | {\n kind: 'drag-nodes';\n /**\n * Ids of nodes being dragged together. Set (not Array) so per-node\n * subscribers can do O(1) membership checks in the hot per-frame\n * selector path — a Cartesian `Array.includes` was a measurable cost\n * at high node counts when the user dragged the whole selection.\n */\n nodeIds: ReadonlySet<string>;\n /** Pointer-down world position (start of the drag). */\n startWorld: Point2D;\n /** Cumulative drag delta in world units (snapped if grid active). */\n delta: Point2D;\n }\n | {\n kind: 'drag-groups';\n /** Ids of groups being dragged together. See {@link nodeIds} for why Set. */\n groupIds: ReadonlySet<string>;\n /**\n * Ids of nodes that were fully contained inside one of the dragged\n * groups at gesture start. They ride along with the group(s) and\n * receive the same drag delta — see `rectContains` in `nodeGraphMath`.\n */\n containedNodeIds: ReadonlySet<string>;\n /** Pointer-down world position. */\n startWorld: Point2D;\n /** Cumulative drag delta (snapped if grid active). */\n delta: Point2D;\n /**\n * True when the projected positions of the dragged groups would\n * overlap any other (non-dragged) group. The HTML overlay paints a\n * rejection state and the pointerup handler refuses to commit when\n * this is set.\n */\n blocked: boolean;\n }\n | {\n kind: 'resize-group';\n groupId: string;\n handle: NodeGraphGroupResizeHandle;\n /** Original bounds at the start of the resize. */\n startBounds: { x: number; y: number; width: number; height: number };\n /** Cumulative pointer delta in world units (snapped). */\n delta: Point2D;\n /** Set when the resized bounds would overlap another group. */\n blocked: boolean;\n }\n | {\n kind: 'connect';\n /**\n * Fixed endpoint the preview draws from. For a new connection this is\n * the port the drag started on; for a reconnect it's the *other* end\n * of the edge being edited (the one staying put).\n */\n source: NodeGraphPortRef;\n /** Current pointer position in world coordinates. */\n currentWorld: Point2D;\n /** Hovered candidate target port, or null when none. */\n candidate: NodeGraphPortRef | null;\n /** Whether the candidate is currently rejected by `isValidConnection`. */\n invalid: boolean;\n /**\n * Set while re-dragging an existing edge's endpoint. The edge is hidden\n * from the edge layer for the duration so only the preview shows, and\n * the drop either moves the endpoint, deletes the edge (detach), or —\n * on a click with no drag — selects it.\n */\n reconnectEdgeId?: string;\n /** Which end of `reconnectEdgeId` is being dragged. */\n reconnectEnd?: 'source' | 'target';\n }\n | {\n kind: 'marquee';\n /** Marquee start in world coordinates. */\n startWorld: Point2D;\n /** Current pointer position in world coordinates. */\n currentWorld: Point2D;\n /** Whether the additive modifier was held at gesture start. */\n additive: boolean;\n };\n\n/** Snapshot of the hover slice. */\nexport interface NodeGraphHoverState {\n hoveredNodeId: string | null;\n hoveredEdgeId: string | null;\n hoveredPort: NodeGraphPortRef | null;\n}\n\nconst EMPTY_DATA: NodeGraphDataState = {\n nodes: [],\n edges: [],\n groups: [],\n defaultNodeSize: { width: 180, height: 80 },\n};\n\nconst EMPTY_SELECTION: NodeGraphSelection = {\n nodes: [],\n edges: [],\n groups: [],\n};\n\nconst EMPTY_HOVER: NodeGraphHoverState = {\n hoveredNodeId: null,\n hoveredEdgeId: null,\n hoveredPort: null,\n};\n\nconst IDLE: NodeGraphInteractionState = { kind: 'idle' };\n\n/**\n * Hot-path runtime state for `<NodeGraph>` — graph data, selection,\n * interaction, hover. Each slice carries its own subscribe/get pair so\n * subscribers re-render only on relevant changes (e.g. the edge canvas\n * subscribes to data + interaction, individual node bodies subscribe only\n * to selection + drag delta for their own id).\n *\n * Mirrors `ViewportStore` / `MinimapStore` in structure.\n */\nexport class NodeGraphStore {\n private data: NodeGraphDataState = EMPTY_DATA;\n private selection: NodeGraphSelection = EMPTY_SELECTION;\n private interaction: NodeGraphInteractionState = IDLE;\n private hover: NodeGraphHoverState = EMPTY_HOVER;\n // `Map<id, NodeGraphNode>` mirror of `data.nodes` — rebuilt in `setData`.\n // Enables O(1) `getNodeById` lookups for hot paths (edge drawing,\n // pointer-driven drag handlers) that previously did O(n) `nodes.find`\n // per call.\n private nodeIndex = new Map<string, NodeGraphNode>();\n // Set of `\"${node}\\0${port}\"` keys for every port referenced by an edge\n // endpoint — recomputed in `setData` only when the edges reference\n // changes. Lets `<NodeGraph.Port>` slots auto-derive their \"connected\"\n // visual state without the consumer threading a parallel index down\n // through `renderNode`.\n private connectedPorts: ReadonlySet<string> = new Set<string>();\n\n // Map<nodeId, Map<portId, NodeGraphPortPosition>>.\n // Mutated in place by `<NodeGraph.Port>` slots on mount/resize. Listeners\n // are notified whenever any port's position, side, or dataType changes.\n private portPositions = new Map<string, Map<string, NodeGraphPortPosition>>();\n // Map<nodeId, NodeGraphMeasuredSize>. Populated by NodeGraphNodeView's\n // ResizeObserver — used by getNodeBox when node.width/height are absent.\n private measuredSizes = new Map<string, NodeGraphMeasuredSize>();\n\n private dataListeners = new Set<() => void>();\n private connectedPortsListeners = new Set<() => void>();\n private selectionListeners = new Set<() => void>();\n private interactionListeners = new Set<() => void>();\n // Per-node interaction subscriptions. Each `<NodeGraphNodeView>` registers\n // for its own id and is woken only when the interaction state changes in\n // a way that could affect that node's drag delta — i.e. the node was, or\n // now is, part of the active drag set. This cuts the notify fan-out from\n // O(all-nodes) to O(dragged-nodes) per pointermove flush, which is the\n // dominant cost when dragging a single node out of a large graph.\n private nodeInteractionListeners = new Map<string, Set<() => void>>();\n private hoverListeners = new Set<() => void>();\n private portPositionListeners = new Set<() => void>();\n private measuredSizeListeners = new Set<() => void>();\n\n // Monotonic counters used as `useSyncExternalStore` snapshots for the\n // notify-only port-positions / measured-sizes channels. A stable null\n // snapshot would let React skip the update via `Object.is(prev, next)`,\n // even when the subscription fired.\n private portPositionsVersion = 0;\n private measuredSizesVersion = 0;\n private spawnRequestListeners = new Set<\n (info: { worldPoint: Point2D; screenPoint: Point2D }) => void\n >();\n\n // ── Public read API ──\n\n getData = (): NodeGraphDataState => this.data;\n getSelection = (): NodeGraphSelection => this.selection;\n getInteraction = (): NodeGraphInteractionState => this.interaction;\n getHover = (): NodeGraphHoverState => this.hover;\n\n /**\n * The set of `\"${node}\\0${port}\"` keys that are referenced by at least\n * one edge endpoint. Reference is stable until the membership actually\n * changes, so it can back a `useSyncExternalStore` snapshot directly.\n */\n getConnectedPorts = (): ReadonlySet<string> => this.connectedPorts;\n\n /** True when the given port is referenced by at least one edge endpoint. */\n isPortConnected = (nodeId: string, portId: string): boolean => {\n return this.connectedPorts.has(portKey(nodeId, portId));\n };\n\n /**\n * O(1) node lookup by id, backed by an internal Map rebuilt on each\n * `setData`. Use this from hot paths instead of `data.nodes.find(...)`.\n */\n getNodeById = (id: string): NodeGraphNode | undefined => {\n return this.nodeIndex.get(id);\n };\n\n /**\n * Read the registered position of a single port. Returns `null` when the\n * port hasn't yet been measured (e.g. on first paint before\n * `useLayoutEffect` has run, or after the slot unmounted).\n */\n getPortPosition = (\n nodeId: string,\n portId: string\n ): NodeGraphPortPosition | null => {\n return this.portPositions.get(nodeId)?.get(portId) ?? null;\n };\n\n /** Read the measured DOM size of a node wrapper. */\n getMeasuredSize = (nodeId: string): NodeGraphMeasuredSize | null => {\n return this.measuredSizes.get(nodeId) ?? null;\n };\n\n /**\n * Monotonic snapshot of the port-positions channel — pass to\n * `useSyncExternalStore` alongside `subscribePortPositions` so React\n * actually re-renders consumers on every real change. Incremented\n * whenever a port position is added, updated, removed, or GC'd by\n * `setData`. Skipped on no-op writes.\n */\n getPortPositionsVersion = (): number => this.portPositionsVersion;\n\n /**\n * Monotonic snapshot of the measured-sizes channel — same role as\n * `getPortPositionsVersion`, for `subscribeMeasuredSizes`.\n */\n getMeasuredSizesVersion = (): number => this.measuredSizesVersion;\n\n // ── Subscriptions ──\n\n subscribeData = (cb: () => void): (() => void) => {\n this.dataListeners.add(cb);\n return () => {\n this.dataListeners.delete(cb);\n };\n };\n\n /**\n * Subscribe to the connected-ports channel — fires only when the set of\n * edge-referenced ports actually changes membership (not on every node\n * move). Backs the auto-`connected` state on `<NodeGraph.Port>`.\n */\n subscribeConnectedPorts = (cb: () => void): (() => void) => {\n this.connectedPortsListeners.add(cb);\n return () => {\n this.connectedPortsListeners.delete(cb);\n };\n };\n\n subscribeSelection = (cb: () => void): (() => void) => {\n this.selectionListeners.add(cb);\n return () => {\n this.selectionListeners.delete(cb);\n };\n };\n\n subscribeInteraction = (cb: () => void): (() => void) => {\n this.interactionListeners.add(cb);\n return () => {\n this.interactionListeners.delete(cb);\n };\n };\n\n /**\n * Subscribe to interaction changes that affect a specific node id. The\n * callback fires only when the node enters or leaves the active drag set\n * (drag-nodes `nodeIds`, drag-groups `containedNodeIds`) — every other\n * tick where the drag set is unchanged for this id is filtered out at the\n * store layer instead of waking the subscriber for a no-op compare.\n *\n * Use this from per-node React subscribers; the global\n * {@link subscribeInteraction} channel stays in place for canvas layers\n * and other consumers that care about every interaction change.\n */\n subscribeNodeInteraction = (nodeId: string, cb: () => void): (() => void) => {\n let set = this.nodeInteractionListeners.get(nodeId);\n if (!set) {\n set = new Set();\n this.nodeInteractionListeners.set(nodeId, set);\n }\n set.add(cb);\n return () => {\n const current = this.nodeInteractionListeners.get(nodeId);\n if (!current) return;\n current.delete(cb);\n if (current.size === 0) {\n this.nodeInteractionListeners.delete(nodeId);\n }\n };\n };\n\n subscribeHover = (cb: () => void): (() => void) => {\n this.hoverListeners.add(cb);\n return () => {\n this.hoverListeners.delete(cb);\n };\n };\n\n subscribePortPositions = (cb: () => void): (() => void) => {\n this.portPositionListeners.add(cb);\n return () => {\n this.portPositionListeners.delete(cb);\n };\n };\n\n subscribeMeasuredSizes = (cb: () => void): (() => void) => {\n this.measuredSizeListeners.add(cb);\n return () => {\n this.measuredSizeListeners.delete(cb);\n };\n };\n\n // ── Spawn-palette request channel ──\n //\n // Notification-only channel used by `<NodeGraph.SpawnPalette>` to\n // listen for \"user wants to spawn a node here\" events without forcing\n // the consumer to wire context-menu state through their own React\n // tree. The main `NodeGraph` component pumps this channel from its\n // `handleContextMenu` when the right-click target is `empty` or\n // `group` (i.e. a place where it makes sense to drop a new node).\n subscribeSpawnRequest = (\n cb: (info: { worldPoint: Point2D; screenPoint: Point2D }) => void\n ): (() => void) => {\n this.spawnRequestListeners.add(cb);\n return () => {\n this.spawnRequestListeners.delete(cb);\n };\n };\n\n requestSpawn(info: { worldPoint: Point2D; screenPoint: Point2D }): void {\n this.spawnRequestListeners.forEach(cb => {\n cb(info);\n });\n }\n\n // ── Mutators ──\n\n setData(next: NodeGraphDataState): void {\n if (\n next.nodes === this.data.nodes &&\n next.edges === this.data.edges &&\n next.groups === this.data.groups &&\n next.defaultNodeSize.width === this.data.defaultNodeSize.width &&\n next.defaultNodeSize.height === this.data.defaultNodeSize.height\n ) {\n return;\n }\n const edgesChanged = next.edges !== this.data.edges;\n const prevNodeIds = new Set(this.data.nodes.map(n => n.id));\n // Rebuild the id → node lookup in the same pass that collects the\n // next-frame id set, so GC and the index stay in sync without a\n // second iteration.\n this.nodeIndex.clear();\n const nextNodeIds = new Set<string>();\n for (const n of next.nodes) {\n nextNodeIds.add(n.id);\n this.nodeIndex.set(n.id, n);\n }\n // Garbage-collect port positions + measured sizes for nodes that have\n // been removed from the data. Slot unmount effects normally clear their\n // own entries, but if the node disappears in a single render tick (drop\n // from controlled state) the unmount and the data swap can race.\n let didMutatePortPositions = false;\n let didMutateMeasuredSizes = false;\n for (const id of prevNodeIds) {\n if (nextNodeIds.has(id)) continue;\n if (this.portPositions.delete(id)) didMutatePortPositions = true;\n if (this.measuredSizes.delete(id)) didMutateMeasuredSizes = true;\n }\n this.data = next;\n this.dataListeners.forEach(cb => {\n cb();\n });\n // Recompute the connected-ports index when edges changed, and notify\n // its dedicated channel only if the membership actually differs — an\n // edges array that was replaced but carries the same endpoints (e.g.\n // a label edit) leaves port \"connected\" state untouched.\n if (edgesChanged) {\n const nextConnected = computeConnectedPorts(next.edges);\n if (!connectedSetsEqual(nextConnected, this.connectedPorts)) {\n this.connectedPorts = nextConnected;\n this.connectedPortsListeners.forEach(cb => {\n cb();\n });\n }\n }\n if (didMutatePortPositions) {\n this.portPositionsVersion++;\n this.portPositionListeners.forEach(cb => {\n cb();\n });\n }\n if (didMutateMeasuredSizes) {\n this.measuredSizesVersion++;\n this.measuredSizeListeners.forEach(cb => {\n cb();\n });\n }\n }\n\n setSelection(next: NodeGraphSelection): void {\n if (selectionEqual(next, this.selection)) return;\n this.selection = next;\n this.selectionListeners.forEach(cb => {\n cb();\n });\n }\n\n setInteraction(next: NodeGraphInteractionState): void {\n if (interactionEqual(next, this.interaction)) return;\n const prev = this.interaction;\n this.interaction = next;\n\n // Global listeners: canvas layers, the main NodeGraph component (for\n // layer invalidation), and any consumer hook that wants every change.\n this.interactionListeners.forEach(cb => {\n cb();\n });\n\n // Per-node listeners: notify ids that are in the next or the prev drag\n // set. A node that *leaves* the drag set needs to clear its local\n // delta, so previously-affected ids must fire too even when they're no\n // longer in `next`.\n const prevIds = getDragAffectedNodeIds(prev);\n const nextIds = getDragAffectedNodeIds(next);\n if (prevIds.size === 0 && nextIds.size === 0) return;\n\n for (const id of nextIds) {\n this.nodeInteractionListeners.get(id)?.forEach(cb => {\n cb();\n });\n }\n for (const id of prevIds) {\n // Dedupe — already notified above when the node is in both sets.\n if (nextIds.has(id)) continue;\n this.nodeInteractionListeners.get(id)?.forEach(cb => {\n cb();\n });\n }\n }\n\n setHover(next: NodeGraphHoverState): void {\n if (hoverEqual(next, this.hover)) return;\n this.hover = next;\n this.hoverListeners.forEach(cb => {\n cb();\n });\n }\n\n /**\n * Register a port's measured position. Called by `<NodeGraph.Port>` from\n * a `useLayoutEffect` + `ResizeObserver`. No-ops when the incoming\n * position is identical to the cached one — protects edge layer from\n * redraw storms when nodes resize without porting any pin movement.\n */\n setPortPosition(\n nodeId: string,\n portId: string,\n next: NodeGraphPortPosition\n ): void {\n let perNode = this.portPositions.get(nodeId);\n if (!perNode) {\n perNode = new Map();\n this.portPositions.set(nodeId, perNode);\n }\n const prev = perNode.get(portId);\n if (\n prev?.x === next.x &&\n prev.y === next.y &&\n prev.side === next.side &&\n prev.dataType === next.dataType\n ) {\n return;\n }\n perNode.set(portId, next);\n this.portPositionsVersion++;\n this.portPositionListeners.forEach(cb => {\n cb();\n });\n }\n\n /** Remove a port registration. Called by `<NodeGraph.Port>` cleanup. */\n removePortPosition(nodeId: string, portId: string): void {\n const perNode = this.portPositions.get(nodeId);\n if (!perNode) return;\n if (!perNode.delete(portId)) return;\n if (perNode.size === 0) this.portPositions.delete(nodeId);\n this.portPositionsVersion++;\n this.portPositionListeners.forEach(cb => {\n cb();\n });\n }\n\n /**\n * Register / refresh the measured DOM size of a node wrapper. No-ops on\n * identical width+height.\n */\n setMeasuredSize(nodeId: string, next: NodeGraphMeasuredSize): void {\n const prev = this.measuredSizes.get(nodeId);\n if (prev?.width === next.width && prev.height === next.height) {\n return;\n }\n this.measuredSizes.set(nodeId, next);\n this.measuredSizesVersion++;\n this.measuredSizeListeners.forEach(cb => {\n cb();\n });\n }\n\n /** Clear the measured size of a node (called on unmount). */\n clearMeasuredSize(nodeId: string): void {\n if (!this.measuredSizes.delete(nodeId)) return;\n this.measuredSizesVersion++;\n this.measuredSizeListeners.forEach(cb => {\n cb();\n });\n }\n\n // ── Convenience selection helpers ──\n\n /** True when a node id is currently selected. */\n isNodeSelected(id: string): boolean {\n return this.selection.nodes.includes(id);\n }\n\n /** True when an edge id is currently selected. */\n isEdgeSelected(id: string): boolean {\n return this.selection.edges.includes(id);\n }\n\n /** True when a group id is currently selected. */\n isGroupSelected(id: string): boolean {\n return this.selection.groups.includes(id);\n }\n}\n\n// ─── Connected-ports index ───\n\n/**\n * Key for the connected-ports set. Uses a NUL separator so node / port ids\n * containing dots or dashes can't collide (`\"a.b\" + \"c\"` vs `\"a\" + \"b.c\"`).\n */\nfunction portKey(node: string, port: string): string {\n return `${node}\\u0000${port}`;\n}\n\n/** Build the set of `\"${node}\\0${port}\"` keys referenced by any edge. */\nfunction computeConnectedPorts(\n edges: ReadonlyArray<NodeGraphEdge>\n): Set<string> {\n const set = new Set<string>();\n for (const edge of edges) {\n set.add(portKey(edge.source.node, edge.source.port));\n set.add(portKey(edge.target.node, edge.target.port));\n }\n return set;\n}\n\nfunction connectedSetsEqual(\n a: ReadonlySet<string>,\n b: ReadonlySet<string>\n): boolean {\n if (a === b) return true;\n if (a.size !== b.size) return false;\n for (const key of a) {\n if (!b.has(key)) return false;\n }\n return true;\n}\n\n// ─── Equality helpers (shallow, identity-aware) ───\n\nfunction arrEqual<T>(a: ReadonlyArray<T>, b: ReadonlyArray<T>): boolean {\n if (a === b) return true;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\nfunction setEqual<T>(a: ReadonlySet<T>, b: ReadonlySet<T>): boolean {\n if (a === b) return true;\n if (a.size !== b.size) return false;\n for (const item of a) {\n if (!b.has(item)) return false;\n }\n return true;\n}\n\nconst EMPTY_NODE_ID_SET: ReadonlySet<string> = new Set<string>();\n\n/**\n * Node ids whose drag delta could be affected by the given interaction\n * state — used by `setInteraction` to fan out per-node notifications.\n * Idle / connect / marquee / resize-group don't move nodes, so they\n * return the empty set (no per-node subscriber needs waking).\n */\nfunction getDragAffectedNodeIds(\n state: NodeGraphInteractionState\n): ReadonlySet<string> {\n if (state.kind === 'drag-nodes') return state.nodeIds;\n if (state.kind === 'drag-groups') return state.containedNodeIds;\n return EMPTY_NODE_ID_SET;\n}\n\nfunction selectionEqual(a: NodeGraphSelection, b: NodeGraphSelection): boolean {\n return (\n arrEqual(a.nodes, b.nodes) &&\n arrEqual(a.edges, b.edges) &&\n arrEqual(a.groups, b.groups)\n );\n}\n\nfunction pointEqual(a: Point2D, b: Point2D): boolean {\n return a.x === b.x && a.y === b.y;\n}\n\nfunction portRefEqual(\n a: NodeGraphPortRef | null,\n b: NodeGraphPortRef | null\n): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n return a.node === b.node && a.port === b.port;\n}\n\nfunction interactionEqual(\n a: NodeGraphInteractionState,\n b: NodeGraphInteractionState\n): boolean {\n if (a === b) return true;\n if (a.kind !== b.kind) return false;\n switch (a.kind) {\n case 'idle':\n return true;\n case 'drag-nodes': {\n const bx = b as Extract<\n NodeGraphInteractionState,\n { kind: 'drag-nodes' }\n >;\n return (\n setEqual(a.nodeIds, bx.nodeIds) &&\n pointEqual(a.startWorld, bx.startWorld) &&\n pointEqual(a.delta, bx.delta)\n );\n }\n case 'drag-groups': {\n const bx = b as Extract<\n NodeGraphInteractionState,\n { kind: 'drag-groups' }\n >;\n return (\n setEqual(a.groupIds, bx.groupIds) &&\n setEqual(a.containedNodeIds, bx.containedNodeIds) &&\n pointEqual(a.startWorld, bx.startWorld) &&\n pointEqual(a.delta, bx.delta) &&\n a.blocked === bx.blocked\n );\n }\n case 'resize-group': {\n const bx = b as Extract<\n NodeGraphInteractionState,\n { kind: 'resize-group' }\n >;\n return (\n a.groupId === bx.groupId &&\n a.handle === bx.handle &&\n a.startBounds.x === bx.startBounds.x &&\n a.startBounds.y === bx.startBounds.y &&\n a.startBounds.width === bx.startBounds.width &&\n a.startBounds.height === bx.startBounds.height &&\n pointEqual(a.delta, bx.delta) &&\n a.blocked === bx.blocked\n );\n }\n case 'connect': {\n const bx = b as Extract<NodeGraphInteractionState, { kind: 'connect' }>;\n return (\n portRefEqual(a.source, bx.source) &&\n pointEqual(a.currentWorld, bx.currentWorld) &&\n portRefEqual(a.candidate, bx.candidate) &&\n a.invalid === bx.invalid &&\n a.reconnectEdgeId === bx.reconnectEdgeId &&\n a.reconnectEnd === bx.reconnectEnd\n );\n }\n case 'marquee': {\n const bx = b as Extract<NodeGraphInteractionState, { kind: 'marquee' }>;\n return (\n pointEqual(a.startWorld, bx.startWorld) &&\n pointEqual(a.currentWorld, bx.currentWorld) &&\n a.additive === bx.additive\n );\n }\n default:\n return false;\n }\n}\n\nfunction hoverEqual(a: NodeGraphHoverState, b: NodeGraphHoverState): boolean {\n return (\n a.hoveredNodeId === b.hoveredNodeId &&\n a.hoveredEdgeId === b.hoveredEdgeId &&\n portRefEqual(a.hoveredPort, b.hoveredPort)\n );\n}\n\n/**\n * Compute the rectangle of a marquee interaction in world coordinates,\n * normalized so width/height are non-negative.\n */\nexport function marqueeWorldRect(\n state: Extract<NodeGraphInteractionState, { kind: 'marquee' }>\n): WorldRect {\n const x = Math.min(state.startWorld.x, state.currentWorld.x);\n const y = Math.min(state.startWorld.y, state.currentWorld.y);\n return {\n x,\n y,\n width: Math.abs(state.currentWorld.x - state.startWorld.x),\n height: Math.abs(state.currentWorld.y - state.startWorld.y),\n };\n}\n"],"names":[],"mappings":"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"}