entangle-ui 0.10.0 → 0.12.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 (589) hide show
  1. package/CHANGELOG.md +145 -0
  2. package/README.md +7 -5
  3. package/dist/esm/assets/src/components/controls/Select/{Select.css.ts.vanilla-oZnFUorL.css → Select.css.ts.vanilla-Cpu2BvWL.css} +3 -0
  4. package/dist/esm/assets/src/components/controls/Slider/{Slider.css.ts.vanilla-Cqm3fQ0S.css → Slider.css.ts.vanilla-CLf_RC0A.css} +50 -47
  5. package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyPanel.css.ts.vanilla-RYv_XgOu.css → PropertyPanel.css.ts.vanilla-Dpr_k5I3.css} +4 -1
  6. package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyRow.css.ts.vanilla-C3YZnnHb.css → PropertyRow.css.ts.vanilla-pq1Uhd2a.css} +15 -8
  7. package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertySection.css.ts.vanilla-DK12opZc.css → PropertySection.css.ts.vanilla-6MWWAqyd.css} +50 -32
  8. package/dist/esm/assets/src/components/navigation/Menu/{Menu.css.ts.vanilla-B5iVe5S2.css → Menu.css.ts.vanilla-Bhh1L5yl.css} +14 -11
  9. package/dist/esm/assets/src/components/primitives/Tooltip/{Tooltip.css.ts.vanilla-CrEFoLBX.css → Tooltip.css.ts.vanilla-BqaiGrFQ.css} +12 -9
  10. package/dist/esm/assets/src/components/shell/AppShell/{AppShell.css.ts.vanilla-BYmtU0O_.css → AppShell.css.ts.vanilla-BLK2-DRL.css} +1 -0
  11. package/dist/esm/assets/src/components/shell/MenuBar/{MenuBar.css.ts.vanilla-TgPcl4yA.css → MenuBar.css.ts.vanilla-Dt3w4f-q.css} +18 -6
  12. package/dist/esm/components/Icons/AddIcon.js.map +1 -1
  13. package/dist/esm/components/Icons/AiChatIcon.js.map +1 -1
  14. package/dist/esm/components/Icons/AiSparklesIcon.js.map +1 -1
  15. package/dist/esm/components/Icons/ArchiveIcon.js.map +1 -1
  16. package/dist/esm/components/Icons/ArrowDownIcon.js.map +1 -1
  17. package/dist/esm/components/Icons/ArrowLeftIcon.js.map +1 -1
  18. package/dist/esm/components/Icons/ArrowRightIcon.js.map +1 -1
  19. package/dist/esm/components/Icons/ArrowUpIcon.js.map +1 -1
  20. package/dist/esm/components/Icons/BookmarkIcon.js.map +1 -1
  21. package/dist/esm/components/Icons/BugIcon.js.map +1 -1
  22. package/dist/esm/components/Icons/BuildingIcon.js.map +1 -1
  23. package/dist/esm/components/Icons/CalendarIcon.js.map +1 -1
  24. package/dist/esm/components/Icons/CameraIcon.js +31 -0
  25. package/dist/esm/components/Icons/CameraIcon.js.map +1 -0
  26. package/dist/esm/components/Icons/CheckIcon.js.map +1 -1
  27. package/dist/esm/components/Icons/ChevronDownIcon.js.map +1 -1
  28. package/dist/esm/components/Icons/ChevronLeftIcon.js.map +1 -1
  29. package/dist/esm/components/Icons/ChevronRightIcon.js.map +1 -1
  30. package/dist/esm/components/Icons/ChevronUpIcon.js.map +1 -1
  31. package/dist/esm/components/Icons/CircleIcon.js.map +1 -1
  32. package/dist/esm/components/Icons/ClockIcon.js.map +1 -1
  33. package/dist/esm/components/Icons/CloseIcon.js.map +1 -1
  34. package/dist/esm/components/Icons/CloudUploadIcon.js.map +1 -1
  35. package/dist/esm/components/Icons/CodeIcon.js.map +1 -1
  36. package/dist/esm/components/Icons/CopyIcon.js.map +1 -1
  37. package/dist/esm/components/Icons/CubeIcon.js +31 -0
  38. package/dist/esm/components/Icons/CubeIcon.js.map +1 -0
  39. package/dist/esm/components/Icons/CutIcon.js.map +1 -1
  40. package/dist/esm/components/Icons/DotsHorizontalIcon.js.map +1 -1
  41. package/dist/esm/components/Icons/DotsVerticalIcon.js.map +1 -1
  42. package/dist/esm/components/Icons/DownloadIcon.js.map +1 -1
  43. package/dist/esm/components/Icons/EditIcon.js.map +1 -1
  44. package/dist/esm/components/Icons/ErrorIcon.js.map +1 -1
  45. package/dist/esm/components/Icons/ExternalLinkIcon.js.map +1 -1
  46. package/dist/esm/components/Icons/EyeDropperIcon.js.map +1 -1
  47. package/dist/esm/components/Icons/EyeIcon.js.map +1 -1
  48. package/dist/esm/components/Icons/FileTextIcon.js.map +1 -1
  49. package/dist/esm/components/Icons/FilterIcon.js.map +1 -1
  50. package/dist/esm/components/Icons/FirstIcon.js.map +1 -1
  51. package/dist/esm/components/Icons/FolderCogIcon.js.map +1 -1
  52. package/dist/esm/components/Icons/FolderIcon.js.map +1 -1
  53. package/dist/esm/components/Icons/FolderOpenIcon.js.map +1 -1
  54. package/dist/esm/components/Icons/FullscreenIcon.js.map +1 -1
  55. package/dist/esm/components/Icons/GitBranchIcon.js.map +1 -1
  56. package/dist/esm/components/Icons/GridIcon.js.map +1 -1
  57. package/dist/esm/components/Icons/HeartIcon.js.map +1 -1
  58. package/dist/esm/components/Icons/HelpIcon.js.map +1 -1
  59. package/dist/esm/components/Icons/HomeIcon.js.map +1 -1
  60. package/dist/esm/components/Icons/ImageIcon.js.map +1 -1
  61. package/dist/esm/components/Icons/InfoIcon.js.map +1 -1
  62. package/dist/esm/components/Icons/LastIcon.js.map +1 -1
  63. package/dist/esm/components/Icons/LinkIcon.js.map +1 -1
  64. package/dist/esm/components/Icons/ListIcon.js.map +1 -1
  65. package/dist/esm/components/Icons/LockIcon.js.map +1 -1
  66. package/dist/esm/components/Icons/MaximizeIcon.js.map +1 -1
  67. package/dist/esm/components/Icons/MenuIcon.js.map +1 -1
  68. package/dist/esm/components/Icons/MinimizeIcon.js.map +1 -1
  69. package/dist/esm/components/Icons/MinusIcon.js.map +1 -1
  70. package/dist/esm/components/Icons/OrbitIcon.js +31 -0
  71. package/dist/esm/components/Icons/OrbitIcon.js.map +1 -0
  72. package/dist/esm/components/Icons/PasteIcon.js.map +1 -1
  73. package/dist/esm/components/Icons/PauseIcon.js.map +1 -1
  74. package/dist/esm/components/Icons/PinIcon.js.map +1 -1
  75. package/dist/esm/components/Icons/PlayIcon.js.map +1 -1
  76. package/dist/esm/components/Icons/RedoIcon.js.map +1 -1
  77. package/dist/esm/components/Icons/RefreshIcon.js.map +1 -1
  78. package/dist/esm/components/Icons/RobotIcon.js.map +1 -1
  79. package/dist/esm/components/Icons/RotateIcon.js +32 -0
  80. package/dist/esm/components/Icons/RotateIcon.js.map +1 -0
  81. package/dist/esm/components/Icons/SaveIcon.js.map +1 -1
  82. package/dist/esm/components/Icons/SearchIcon.js.map +1 -1
  83. package/dist/esm/components/Icons/SendIcon.js.map +1 -1
  84. package/dist/esm/components/Icons/SettingsIcon.js.map +1 -1
  85. package/dist/esm/components/Icons/SortIcon.js.map +1 -1
  86. package/dist/esm/components/Icons/SpinIcon.js +32 -0
  87. package/dist/esm/components/Icons/SpinIcon.js.map +1 -0
  88. package/dist/esm/components/Icons/StarIcon.js.map +1 -1
  89. package/dist/esm/components/Icons/StopIcon.js.map +1 -1
  90. package/dist/esm/components/Icons/SuccessIcon.js.map +1 -1
  91. package/dist/esm/components/Icons/TagIcon.js.map +1 -1
  92. package/dist/esm/components/Icons/TangentAlignedIcon.js.map +1 -1
  93. package/dist/esm/components/Icons/TangentAutoIcon.js.map +1 -1
  94. package/dist/esm/components/Icons/TangentFreeIcon.js.map +1 -1
  95. package/dist/esm/components/Icons/TangentLinearIcon.js.map +1 -1
  96. package/dist/esm/components/Icons/TangentMirroredIcon.js.map +1 -1
  97. package/dist/esm/components/Icons/TangentStepIcon.js.map +1 -1
  98. package/dist/esm/components/Icons/TerminalIcon.js.map +1 -1
  99. package/dist/esm/components/Icons/TrashIcon.js.map +1 -1
  100. package/dist/esm/components/Icons/UndoIcon.js.map +1 -1
  101. package/dist/esm/components/Icons/UnlinkIcon.js.map +1 -1
  102. package/dist/esm/components/Icons/UnlockIcon.js.map +1 -1
  103. package/dist/esm/components/Icons/UploadIcon.js.map +1 -1
  104. package/dist/esm/components/Icons/UserIcon.js.map +1 -1
  105. package/dist/esm/components/Icons/UsersIcon.js.map +1 -1
  106. package/dist/esm/components/Icons/WarningIcon.js.map +1 -1
  107. package/dist/esm/components/Icons/ZoomFitIcon.js +32 -0
  108. package/dist/esm/components/Icons/ZoomFitIcon.js.map +1 -0
  109. package/dist/esm/components/Icons/ZoomInIcon.js.map +1 -1
  110. package/dist/esm/components/Icons/ZoomOutIcon.js.map +1 -1
  111. package/dist/esm/components/controls/CartesianPicker/CartesianPicker.js.map +1 -1
  112. package/dist/esm/components/controls/CartesianPicker/useCartesianInteraction.js.map +1 -1
  113. package/dist/esm/components/controls/CartesianPicker/useCartesianRenderer.js.map +1 -1
  114. package/dist/esm/components/controls/ColorPicker/AlphaSlider.js.map +1 -1
  115. package/dist/esm/components/controls/ColorPicker/ColorArea.js.map +1 -1
  116. package/dist/esm/components/controls/ColorPicker/ColorInputs.js.map +1 -1
  117. package/dist/esm/components/controls/ColorPicker/ColorPalette.js.map +1 -1
  118. package/dist/esm/components/controls/ColorPicker/ColorPicker.js.map +1 -1
  119. package/dist/esm/components/controls/ColorPicker/ColorPresets.js.map +1 -1
  120. package/dist/esm/components/controls/ColorPicker/ColorSwatch.js.map +1 -1
  121. package/dist/esm/components/controls/ColorPicker/EyeDropper.js.map +1 -1
  122. package/dist/esm/components/controls/ColorPicker/HueSlider.js.map +1 -1
  123. package/dist/esm/components/controls/ColorPicker/colorUtils.js.map +1 -1
  124. package/dist/esm/components/controls/ColorPicker/palettes/material.js.map +1 -1
  125. package/dist/esm/components/controls/ColorPicker/palettes/professional.js.map +1 -1
  126. package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js.map +1 -1
  127. package/dist/esm/components/controls/ColorPicker/useColor.js.map +1 -1
  128. package/dist/esm/components/controls/Combobox/Combobox.js.map +1 -1
  129. package/dist/esm/components/controls/CurveEditor/CurveCanvas.js.map +1 -1
  130. package/dist/esm/components/controls/CurveEditor/CurveEditor.js.map +1 -1
  131. package/dist/esm/components/controls/CurveEditor/CurveToolbar.js.map +1 -1
  132. package/dist/esm/components/controls/CurveEditor/curvePresets.js.map +1 -1
  133. package/dist/esm/components/controls/CurveEditor/curveUtils.js.map +1 -1
  134. package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js.map +1 -1
  135. package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js.map +1 -1
  136. package/dist/esm/components/controls/FileTree/FileTree.js +7 -1
  137. package/dist/esm/components/controls/FileTree/FileTree.js.map +1 -1
  138. package/dist/esm/components/controls/FileTree/fileTreeIcons.js.map +1 -1
  139. package/dist/esm/components/controls/FileTree/fileTreeLabels.js.map +1 -1
  140. package/dist/esm/components/controls/FileTree/useFileTreeDrop.js +1 -1
  141. package/dist/esm/components/controls/FileTree/useFileTreeDrop.js.map +1 -1
  142. package/dist/esm/components/controls/FileUploader/FileUploader.js.map +1 -1
  143. package/dist/esm/components/controls/MultiSelect/MultiSelect.js.map +1 -1
  144. package/dist/esm/components/controls/NumberInput/NumberInput.js.map +1 -1
  145. package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -1
  146. package/dist/esm/components/controls/Select/Select.css.js +1 -1
  147. package/dist/esm/components/controls/Select/Select.js +15 -7
  148. package/dist/esm/components/controls/Select/Select.js.map +1 -1
  149. package/dist/esm/components/controls/Slider/Slider.css.js +10 -11
  150. package/dist/esm/components/controls/Slider/Slider.css.js.map +1 -1
  151. package/dist/esm/components/controls/Slider/Slider.js +40 -7
  152. package/dist/esm/components/controls/Slider/Slider.js.map +1 -1
  153. package/dist/esm/components/controls/TagInput/TagInput.js.map +1 -1
  154. package/dist/esm/components/controls/TreeView/TreeNode.js +6 -0
  155. package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -1
  156. package/dist/esm/components/controls/TreeView/TreeView.js.map +1 -1
  157. package/dist/esm/components/controls/TreeView/useTreeState.js.map +1 -1
  158. package/dist/esm/components/controls/VectorInput/VectorInput.js +6 -0
  159. package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
  160. package/dist/esm/components/data/DataTable/DataTable.js.map +1 -1
  161. package/dist/esm/components/editor/AssetBrowser/AssetBrowser.js.map +1 -1
  162. package/dist/esm/components/editor/AssetBrowser/AssetBrowserAnnouncementLive.js.map +1 -1
  163. package/dist/esm/components/editor/AssetBrowser/AssetBrowserBreadcrumbs.js.map +1 -1
  164. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js +6 -0
  165. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js.map +1 -1
  166. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContext.js.map +1 -1
  167. package/dist/esm/components/editor/AssetBrowser/AssetBrowserContextMenu.js.map +1 -1
  168. package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js +6 -0
  169. package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js.map +1 -1
  170. package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js +1 -1
  171. package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js.map +1 -1
  172. package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js +6 -0
  173. package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js.map +1 -1
  174. package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js +6 -0
  175. package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js.map +1 -1
  176. package/dist/esm/components/editor/AssetBrowser/AssetBrowserRenameField.js.map +1 -1
  177. package/dist/esm/components/editor/AssetBrowser/AssetBrowserSidebar.js.map +1 -1
  178. package/dist/esm/components/editor/AssetBrowser/AssetBrowserStatusBar.js.map +1 -1
  179. package/dist/esm/components/editor/AssetBrowser/AssetBrowserStore.js.map +1 -1
  180. package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js +6 -0
  181. package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js.map +1 -1
  182. package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js +6 -0
  183. package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js.map +1 -1
  184. package/dist/esm/components/editor/AssetBrowser/assetBrowserFilter.js.map +1 -1
  185. package/dist/esm/components/editor/AssetBrowser/assetBrowserFormat.js.map +1 -1
  186. package/dist/esm/components/editor/AssetBrowser/assetBrowserGeometry.js.map +1 -1
  187. package/dist/esm/components/editor/AssetBrowser/assetBrowserKeyboard.js.map +1 -1
  188. package/dist/esm/components/editor/AssetBrowser/assetBrowserLabels.js.map +1 -1
  189. package/dist/esm/components/editor/AssetBrowser/slots.js.map +1 -1
  190. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserAnnouncement.js.map +1 -1
  191. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js +1 -1
  192. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js.map +1 -1
  193. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js +1 -1
  194. package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js.map +1 -1
  195. package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js +1 -1
  196. package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js.map +1 -1
  197. package/dist/esm/components/editor/AssetBrowser/useAssetGridKeyboardNav.js.map +1 -1
  198. package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js +1 -1
  199. package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js.map +1 -1
  200. package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js +1 -1
  201. package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js.map +1 -1
  202. package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js +1 -1
  203. package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js.map +1 -1
  204. package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js +1 -1
  205. package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js.map +1 -1
  206. package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js +1 -1
  207. package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js.map +1 -1
  208. package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js +1 -1
  209. package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js.map +1 -1
  210. package/dist/esm/components/editor/ChatPanel/ChatActionBar.js.map +1 -1
  211. package/dist/esm/components/editor/ChatPanel/ChatAttachment.js.map +1 -1
  212. package/dist/esm/components/editor/ChatPanel/ChatBubble.js.map +1 -1
  213. package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js +6 -0
  214. package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js.map +1 -1
  215. package/dist/esm/components/editor/ChatPanel/ChatContextChip.js.map +1 -1
  216. package/dist/esm/components/editor/ChatPanel/ChatEmptyState.js.map +1 -1
  217. package/dist/esm/components/editor/ChatPanel/ChatIcons.js.map +1 -1
  218. package/dist/esm/components/editor/ChatPanel/ChatInput.js +6 -0
  219. package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
  220. package/dist/esm/components/editor/ChatPanel/ChatInputToolbar.js.map +1 -1
  221. package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js.map +1 -1
  222. package/dist/esm/components/editor/ChatPanel/ChatMessage.js +6 -0
  223. package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
  224. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js.map +1 -1
  225. package/dist/esm/components/editor/ChatPanel/ChatPanel.js.map +1 -1
  226. package/dist/esm/components/editor/ChatPanel/ChatToolCall.js.map +1 -1
  227. package/dist/esm/components/editor/ChatPanel/ChatTypingIndicator.js.map +1 -1
  228. package/dist/esm/components/editor/ChatPanel/useChatInput.js.map +1 -1
  229. package/dist/esm/components/editor/ChatPanel/useChatMessages.js.map +1 -1
  230. package/dist/esm/components/editor/ChatPanel/useChatScroll.js.map +1 -1
  231. package/dist/esm/components/editor/Minimap/Minimap.js +1 -1
  232. package/dist/esm/components/editor/Minimap/Minimap.js.map +1 -1
  233. package/dist/esm/components/editor/Minimap/Minimap.types.js.map +1 -1
  234. package/dist/esm/components/editor/Minimap/MinimapContext.js.map +1 -1
  235. package/dist/esm/components/editor/Minimap/MinimapCorner.js.map +1 -1
  236. package/dist/esm/components/editor/Minimap/MinimapFooter.js.map +1 -1
  237. package/dist/esm/components/editor/Minimap/MinimapStore.js.map +1 -1
  238. package/dist/esm/components/editor/Minimap/MinimapTitle.js.map +1 -1
  239. package/dist/esm/components/editor/Minimap/ViewportMinimap.js +1 -1
  240. package/dist/esm/components/editor/Minimap/ViewportMinimap.js.map +1 -1
  241. package/dist/esm/components/editor/Minimap/computeBoundsFromItems.js.map +1 -1
  242. package/dist/esm/components/editor/Minimap/index.js.map +1 -1
  243. package/dist/esm/components/editor/Minimap/minimapCoords.js.map +1 -1
  244. package/dist/esm/components/editor/Minimap/minimapDrawing.js.map +1 -1
  245. package/dist/esm/components/editor/Minimap/minimapHitTest.js.map +1 -1
  246. package/dist/esm/components/editor/Minimap/useMinimapGestures.js +1 -1
  247. package/dist/esm/components/editor/Minimap/useMinimapGestures.js.map +1 -1
  248. package/dist/esm/components/editor/NodeGraph/NodeGraph.js +1 -1
  249. package/dist/esm/components/editor/NodeGraph/NodeGraph.js.map +1 -1
  250. package/dist/esm/components/editor/NodeGraph/NodeGraph.types.js.map +1 -1
  251. package/dist/esm/components/editor/NodeGraph/NodeGraphContext.js.map +1 -1
  252. package/dist/esm/components/editor/NodeGraph/NodeGraphEdgeLabels.js.map +1 -1
  253. package/dist/esm/components/editor/NodeGraph/NodeGraphGroup.js.map +1 -1
  254. package/dist/esm/components/editor/NodeGraph/NodeGraphMinimap.js.map +1 -1
  255. package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js +1 -1
  256. package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js.map +1 -1
  257. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeContext.js.map +1 -1
  258. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeParts.js.map +1 -1
  259. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js +1 -1
  260. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js.map +1 -1
  261. package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSectionContext.js.map +1 -1
  262. package/dist/esm/components/editor/NodeGraph/NodeGraphPin.js.map +1 -1
  263. package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js +1 -1
  264. package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js.map +1 -1
  265. package/dist/esm/components/editor/NodeGraph/NodeGraphPortVisual.js.map +1 -1
  266. package/dist/esm/components/editor/NodeGraph/NodeGraphSlots.js.map +1 -1
  267. package/dist/esm/components/editor/NodeGraph/NodeGraphSpawnPalette.js.map +1 -1
  268. package/dist/esm/components/editor/NodeGraph/NodeGraphStore.js.map +1 -1
  269. package/dist/esm/components/editor/NodeGraph/NodeGraphToolbar.js.map +1 -1
  270. package/dist/esm/components/editor/NodeGraph/createTypeMatchValidator.js.map +1 -1
  271. package/dist/esm/components/editor/NodeGraph/nodeGraphActions.js.map +1 -1
  272. package/dist/esm/components/editor/NodeGraph/nodeGraphDrawing.js.map +1 -1
  273. package/dist/esm/components/editor/NodeGraph/nodeGraphIds.js.map +1 -1
  274. package/dist/esm/components/editor/NodeGraph/nodeGraphMath.js.map +1 -1
  275. package/dist/esm/components/editor/NodeGraph/sortSlots.js.map +1 -1
  276. package/dist/esm/components/editor/NodeGraph/useDragGesture.js.map +1 -1
  277. package/dist/esm/components/editor/NodeGraph/useNodeGraph.js +1 -1
  278. package/dist/esm/components/editor/NodeGraph/useNodeGraph.js.map +1 -1
  279. package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js +1 -1
  280. package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js.map +1 -1
  281. package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js +1 -1
  282. package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js.map +1 -1
  283. package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js +1 -1
  284. package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js.map +1 -1
  285. package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js +1 -1
  286. package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js.map +1 -1
  287. package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js +1 -1
  288. package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js.map +1 -1
  289. package/dist/esm/components/editor/NodeGraph/useStoreSlice.js.map +1 -1
  290. package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js.map +1 -1
  291. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js +4 -3
  292. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js.map +1 -1
  293. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js +5 -4
  294. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js.map +1 -1
  295. package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js +7 -6
  296. package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js.map +1 -1
  297. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +18 -3
  298. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -1
  299. package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js +11 -10
  300. package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js.map +1 -1
  301. package/dist/esm/components/editor/PropertyInspector/PropertySection.js +29 -21
  302. package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -1
  303. package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js.map +1 -1
  304. package/dist/esm/components/editor/Timeline/Timeline.js +1 -1
  305. package/dist/esm/components/editor/Timeline/Timeline.js.map +1 -1
  306. package/dist/esm/components/editor/Timeline/Timeline.types.js.map +1 -1
  307. package/dist/esm/components/editor/Timeline/TimelineContext.js.map +1 -1
  308. package/dist/esm/components/editor/Timeline/TimelineFooter.js.map +1 -1
  309. package/dist/esm/components/editor/Timeline/TimelineMinimap.js +1 -1
  310. package/dist/esm/components/editor/Timeline/TimelineMinimap.js.map +1 -1
  311. package/dist/esm/components/editor/Timeline/TimelineStore.js.map +1 -1
  312. package/dist/esm/components/editor/Timeline/TimelineToolbar.js.map +1 -1
  313. package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js +1 -1
  314. package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js.map +1 -1
  315. package/dist/esm/components/editor/Timeline/TimelineTrackScale.js.map +1 -1
  316. package/dist/esm/components/editor/Timeline/index.js.map +1 -1
  317. package/dist/esm/components/editor/Timeline/timelineCoords.js.map +1 -1
  318. package/dist/esm/components/editor/Timeline/timelineDrawing.js.map +1 -1
  319. package/dist/esm/components/editor/Timeline/timelineEdits.js.map +1 -1
  320. package/dist/esm/components/editor/Timeline/timelineHitTest.js.map +1 -1
  321. package/dist/esm/components/editor/Timeline/timelineLayout.js.map +1 -1
  322. package/dist/esm/components/editor/Timeline/timelineSelection.js.map +1 -1
  323. package/dist/esm/components/editor/Timeline/useTimelineDraw.js +1 -1
  324. package/dist/esm/components/editor/Timeline/useTimelineDraw.js.map +1 -1
  325. package/dist/esm/components/editor/Timeline/useTimelineGestures.js +1 -1
  326. package/dist/esm/components/editor/Timeline/useTimelineGestures.js.map +1 -1
  327. package/dist/esm/components/editor/Timeline/useTimelinePlayback.js.map +1 -1
  328. package/dist/esm/components/editor/TransformControl/TransformControl.js.map +1 -1
  329. package/dist/esm/components/editor/ViewportGizmo/ViewportGizmo.js.map +1 -1
  330. package/dist/esm/components/editor/ViewportGizmo/gizmoMath.js.map +1 -1
  331. package/dist/esm/components/editor/ViewportGizmo/useGizmoInteraction.js.map +1 -1
  332. package/dist/esm/components/editor/ViewportGizmo/useGizmoRenderer.js.map +1 -1
  333. package/dist/esm/components/feedback/Alert/Alert.js.map +1 -1
  334. package/dist/esm/components/feedback/Alert/AlertActions.js.map +1 -1
  335. package/dist/esm/components/feedback/Alert/AlertDescription.js.map +1 -1
  336. package/dist/esm/components/feedback/Alert/AlertTitle.js.map +1 -1
  337. package/dist/esm/components/feedback/CommandPalette/CommandPalette.js.map +1 -1
  338. package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js.map +1 -1
  339. package/dist/esm/components/feedback/CommandPalette/useRecentItems.js.map +1 -1
  340. package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -1
  341. package/dist/esm/components/feedback/Dialog/DialogBody.js.map +1 -1
  342. package/dist/esm/components/feedback/Dialog/DialogClose.js.map +1 -1
  343. package/dist/esm/components/feedback/Dialog/DialogFooter.js.map +1 -1
  344. package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -1
  345. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -1
  346. package/dist/esm/components/feedback/Drawer/Drawer.js.map +1 -1
  347. package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js.map +1 -1
  348. package/dist/esm/components/feedback/EmptyState/EmptyState.js.map +1 -1
  349. package/dist/esm/components/feedback/LogView/LogView.js.map +1 -1
  350. package/dist/esm/components/feedback/LogView/LogViewBody.js.map +1 -1
  351. package/dist/esm/components/feedback/LogView/LogViewContext.js.map +1 -1
  352. package/dist/esm/components/feedback/LogView/LogViewParts.js.map +1 -1
  353. package/dist/esm/components/feedback/LogView/LogViewStore.js.map +1 -1
  354. package/dist/esm/components/feedback/LogView/logViewLabels.js.map +1 -1
  355. package/dist/esm/components/feedback/LogView/logViewLevels.js.map +1 -1
  356. package/dist/esm/components/feedback/LogView/logViewUtils.js.map +1 -1
  357. package/dist/esm/components/feedback/LogView/useFollowTail.js.map +1 -1
  358. package/dist/esm/components/feedback/LogView/useLogSelection.js.map +1 -1
  359. package/dist/esm/components/feedback/ProgressBar/CircularProgress.js.map +1 -1
  360. package/dist/esm/components/feedback/ProgressBar/ProgressBar.js.map +1 -1
  361. package/dist/esm/components/feedback/Skeleton/Skeleton.js.map +1 -1
  362. package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js.map +1 -1
  363. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js.map +1 -1
  364. package/dist/esm/components/feedback/Spinner/Spinner.js +12 -3
  365. package/dist/esm/components/feedback/Spinner/Spinner.js.map +1 -1
  366. package/dist/esm/components/feedback/Stat/Stat.js.map +1 -1
  367. package/dist/esm/components/feedback/Toast/ToastContainer.js.map +1 -1
  368. package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -1
  369. package/dist/esm/components/feedback/Toast/ToastProvider.js.map +1 -1
  370. package/dist/esm/components/feedback/Toast/useToast.js.map +1 -1
  371. package/dist/esm/components/form/FormHelperText.js.map +1 -1
  372. package/dist/esm/components/form/FormLabel.js.map +1 -1
  373. package/dist/esm/components/form/InputWrapper.js.map +1 -1
  374. package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -1
  375. package/dist/esm/components/layout/Accordion/AccordionContent.js.map +1 -1
  376. package/dist/esm/components/layout/Accordion/AccordionItem.js.map +1 -1
  377. package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -1
  378. package/dist/esm/components/layout/Card/Card.js.map +1 -1
  379. package/dist/esm/components/layout/Divider/Divider.js.map +1 -1
  380. package/dist/esm/components/layout/Flex/Flex.js.map +1 -1
  381. package/dist/esm/components/layout/Grid/Grid.js.map +1 -1
  382. package/dist/esm/components/layout/ListItem/ListItem.js.map +1 -1
  383. package/dist/esm/components/layout/PageHeader/PageHeader.js.map +1 -1
  384. package/dist/esm/components/layout/PanelSurface/PanelSurface.js.map +1 -1
  385. package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -1
  386. package/dist/esm/components/layout/Spacer/Spacer.js.map +1 -1
  387. package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -1
  388. package/dist/esm/components/layout/SplitPane/SplitPanePanel.js.map +1 -1
  389. package/dist/esm/components/layout/Stack/Stack.js.map +1 -1
  390. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -1
  391. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -1
  392. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbSeparator.js.map +1 -1
  393. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +6 -0
  394. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -1
  395. package/dist/esm/components/navigation/ContextMenu/ContextMenu.js +2 -2
  396. package/dist/esm/components/navigation/ContextMenu/ContextMenu.js.map +1 -1
  397. package/dist/esm/components/navigation/Menu/Menu.css.js +11 -10
  398. package/dist/esm/components/navigation/Menu/Menu.css.js.map +1 -1
  399. package/dist/esm/components/navigation/Menu/Menu.js +2 -2
  400. package/dist/esm/components/navigation/Menu/Menu.js.map +1 -1
  401. package/dist/esm/components/navigation/Menu/MenuGapContext.js.map +1 -1
  402. package/dist/esm/components/navigation/Pagination/Pagination.js.map +1 -1
  403. package/dist/esm/components/navigation/Pagination/usePagination.js.map +1 -1
  404. package/dist/esm/components/navigation/PathBar/PathBar.js +7 -1
  405. package/dist/esm/components/navigation/PathBar/PathBar.js.map +1 -1
  406. package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js +6 -0
  407. package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js.map +1 -1
  408. package/dist/esm/components/navigation/PathBar/pathUtils.js.map +1 -1
  409. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -1
  410. package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js.map +1 -1
  411. package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -1
  412. package/dist/esm/components/navigation/Tabs/TabList.js.map +1 -1
  413. package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -1
  414. package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -1
  415. package/dist/esm/components/primitives/Avatar/Avatar.js +6 -0
  416. package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -1
  417. package/dist/esm/components/primitives/Avatar/AvatarGroup.js.map +1 -1
  418. package/dist/esm/components/primitives/Badge/Badge.js +6 -0
  419. package/dist/esm/components/primitives/Badge/Badge.js.map +1 -1
  420. package/dist/esm/components/primitives/Button/Button.js.map +1 -1
  421. package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
  422. package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js.map +1 -1
  423. package/dist/esm/components/primitives/Code/Code.js.map +1 -1
  424. package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -1
  425. package/dist/esm/components/primitives/HoverCard/HoverCard.js.map +1 -1
  426. package/dist/esm/components/primitives/Icon/Icon.js.map +1 -1
  427. package/dist/esm/components/primitives/IconButton/IconButton.js +4 -2
  428. package/dist/esm/components/primitives/IconButton/IconButton.js.map +1 -1
  429. package/dist/esm/components/primitives/Input/Input.js.map +1 -1
  430. package/dist/esm/components/primitives/Kbd/Kbd.js.map +1 -1
  431. package/dist/esm/components/primitives/Link/Link.js.map +1 -1
  432. package/dist/esm/components/primitives/Paper/Paper.js.map +1 -1
  433. package/dist/esm/components/primitives/Popover/Popover.js.map +1 -1
  434. package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -1
  435. package/dist/esm/components/primitives/Popover/PopoverContent.js.map +1 -1
  436. package/dist/esm/components/primitives/Popover/PopoverTrigger.js.map +1 -1
  437. package/dist/esm/components/primitives/Radio/Radio.js.map +1 -1
  438. package/dist/esm/components/primitives/Radio/RadioGroup.js.map +1 -1
  439. package/dist/esm/components/primitives/Switch/Switch.js.map +1 -1
  440. package/dist/esm/components/primitives/Text/Text.js.map +1 -1
  441. package/dist/esm/components/primitives/TextArea/TextArea.js.map +1 -1
  442. package/dist/esm/components/primitives/Tooltip/Arrow.js.map +1 -1
  443. package/dist/esm/components/primitives/Tooltip/Tooltip.css.js +6 -5
  444. package/dist/esm/components/primitives/Tooltip/Tooltip.css.js.map +1 -1
  445. package/dist/esm/components/primitives/Tooltip/Tooltip.js +12 -2
  446. package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -1
  447. package/dist/esm/components/primitives/Tooltip/utils.js.map +1 -1
  448. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.js.map +1 -1
  449. package/dist/esm/components/primitives/canvas/CanvasContainer.js.map +1 -1
  450. package/dist/esm/components/primitives/canvas/canvasCoords.js.map +1 -1
  451. package/dist/esm/components/primitives/canvas/canvasDrawing.js.map +1 -1
  452. package/dist/esm/components/primitives/canvas/canvasTheme.js.map +1 -1
  453. package/dist/esm/components/primitives/canvas/useCanvasRenderer.js.map +1 -1
  454. package/dist/esm/components/primitives/viewport/Viewport.js +6 -3
  455. package/dist/esm/components/primitives/viewport/Viewport.js.map +1 -1
  456. package/dist/esm/components/primitives/viewport/ViewportContext.js.map +1 -1
  457. package/dist/esm/components/primitives/viewport/ViewportLayer.js +1 -1
  458. package/dist/esm/components/primitives/viewport/ViewportLayer.js.map +1 -1
  459. package/dist/esm/components/primitives/viewport/ViewportOverlay.js.map +1 -1
  460. package/dist/esm/components/primitives/viewport/ViewportStore.js.map +1 -1
  461. package/dist/esm/components/primitives/viewport/ViewportWorld.js.map +1 -1
  462. package/dist/esm/components/primitives/viewport/useViewportGestures.js +1 -1
  463. package/dist/esm/components/primitives/viewport/useViewportGestures.js.map +1 -1
  464. package/dist/esm/components/primitives/viewport/viewportCoords.js.map +1 -1
  465. package/dist/esm/components/primitives/viewport/viewportMath.js.map +1 -1
  466. package/dist/esm/components/shell/AppShell/AppShell.css.js +1 -1
  467. package/dist/esm/components/shell/AppShell/AppShell.js.map +1 -1
  468. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -1
  469. package/dist/esm/components/shell/MenuBar/MenuBar.css.js +7 -6
  470. package/dist/esm/components/shell/MenuBar/MenuBar.css.js.map +1 -1
  471. package/dist/esm/components/shell/MenuBar/MenuBar.js +52 -3
  472. package/dist/esm/components/shell/MenuBar/MenuBar.js.map +1 -1
  473. package/dist/esm/components/shell/StatusBar/StatusBar.js.map +1 -1
  474. package/dist/esm/components/shell/Toolbar/Toolbar.js.map +1 -1
  475. package/dist/esm/context/KeyboardContext.js.map +1 -1
  476. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js.map +1 -1
  477. package/dist/esm/hooks/useClickOutside/useClickOutside.js.map +1 -1
  478. package/dist/esm/hooks/useClipboard/useClipboard.js.map +1 -1
  479. package/dist/esm/hooks/useControlledState/useControlledState.js.map +1 -1
  480. package/dist/esm/hooks/useDebounced/useDebouncedCallback.js.map +1 -1
  481. package/dist/esm/hooks/useDebounced/useDebouncedValue.js.map +1 -1
  482. package/dist/esm/hooks/useDisclosure/useDisclosure.js.map +1 -1
  483. package/dist/esm/hooks/useEventCallback/useEventCallback.js.map +1 -1
  484. package/dist/esm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
  485. package/dist/esm/hooks/useHotkey/useHotkey.js.map +1 -1
  486. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
  487. package/dist/esm/hooks/useIsMounted/useIsMounted.js.map +1 -1
  488. package/dist/esm/hooks/useKeyboard/useKeyboard.js.map +1 -1
  489. package/dist/esm/hooks/useKeyboard/utils.js.map +1 -1
  490. package/dist/esm/hooks/useLatest/useLatest.js.map +1 -1
  491. package/dist/esm/hooks/useListboxNav/useListboxNav.js.map +1 -1
  492. package/dist/esm/hooks/useMediaQuery/useMediaQuery.js.map +1 -1
  493. package/dist/esm/hooks/useMergedRef/useMergedRef.js.map +1 -1
  494. package/dist/esm/hooks/useNavigationHistory/useNavigationHistory.js.map +1 -1
  495. package/dist/esm/hooks/useResizeObserver/useResizeObserver.js.map +1 -1
  496. package/dist/esm/hooks/useTheme/useTheme.js +1 -1
  497. package/dist/esm/hooks/useTheme/useTheme.js.map +1 -1
  498. package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js.map +1 -1
  499. package/dist/esm/index.js +6 -0
  500. package/dist/esm/index.js.map +1 -1
  501. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
  502. package/dist/esm/styles.css.js +3 -0
  503. package/dist/esm/styles.css.js.map +1 -0
  504. package/dist/esm/theme/ThemeProvider.js +5 -3
  505. package/dist/esm/theme/ThemeProvider.js.map +1 -1
  506. package/dist/esm/theme/VanillaThemeProvider.js.map +1 -1
  507. package/dist/esm/theme/breakpoints.js.map +1 -1
  508. package/dist/esm/theme/createCustomTheme.js +1 -1
  509. package/dist/esm/theme/createCustomTheme.js.map +1 -1
  510. package/dist/esm/theme/createLightTheme.js.map +1 -1
  511. package/dist/esm/theme/darkThemeValues.js.map +1 -1
  512. package/dist/esm/theme/lightThemeValues.js.map +1 -1
  513. package/dist/esm/theme/themeContractData.js.map +1 -1
  514. package/dist/esm/utils/cx.js.map +1 -1
  515. package/dist/esm/utils/devWarn.js.map +1 -1
  516. package/dist/esm/utils/mathExpression.js.map +1 -1
  517. package/dist/esm/utils/mathUtils.js.map +1 -1
  518. package/dist/esm/utils/objects.js.map +1 -1
  519. package/dist/esm/utils/platform.js.map +1 -1
  520. package/dist/tokens/tokens.dark.css +1 -1
  521. package/dist/tokens/tokens.json +1 -1
  522. package/dist/tokens/tokens.light.css +1 -1
  523. package/dist/types/components/Icons/CameraIcon.d.ts +34 -0
  524. package/dist/types/components/Icons/CubeIcon.d.ts +34 -0
  525. package/dist/types/components/Icons/OrbitIcon.d.ts +34 -0
  526. package/dist/types/components/Icons/RotateIcon.d.ts +35 -0
  527. package/dist/types/components/Icons/SpinIcon.d.ts +35 -0
  528. package/dist/types/components/Icons/ZoomFitIcon.d.ts +35 -0
  529. package/dist/types/components/controls/Select/Select.d.ts +1 -1
  530. package/dist/types/components/controls/Select/Select.types.d.ts +43 -9
  531. package/dist/types/components/controls/Slider/Slider.d.ts +7 -0
  532. package/dist/types/components/editor/PropertyInspector/PropertyInspector.types.d.ts +49 -3
  533. package/dist/types/components/feedback/Spinner/Spinner.d.ts +6 -1
  534. package/dist/types/components/feedback/Spinner/Spinner.types.d.ts +8 -0
  535. package/dist/types/components/primitives/Button/Button.d.ts +1 -1
  536. package/dist/types/components/primitives/IconButton/IconButton.d.ts +3 -2
  537. package/dist/types/components/primitives/viewport/Viewport.d.ts +5 -2
  538. package/dist/types/components/shell/MenuBar/MenuBar.d.ts +862 -0
  539. package/dist/types/index.d.ts +6 -0
  540. package/dist/types/theme/ThemeProvider.d.ts +5 -3
  541. package/package.json +6 -2
  542. package/dist/esm/_virtual/_commonjsHelpers.js +0 -6
  543. package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
  544. package/dist/esm/_virtual/cjs.js +0 -4
  545. package/dist/esm/_virtual/cjs.js.map +0 -1
  546. package/dist/esm/_virtual/cssesc.js +0 -8
  547. package/dist/esm/_virtual/cssesc.js.map +0 -1
  548. package/dist/esm/_virtual/picocolors.js +0 -8
  549. package/dist/esm/_virtual/picocolors.js.map +0 -1
  550. package/dist/esm/_virtual/picocolors2.js +0 -4
  551. package/dist/esm/_virtual/picocolors2.js.map +0 -1
  552. package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js +0 -56
  553. package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +0 -1
  554. package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js +0 -46
  555. package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js.map +0 -1
  556. package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js +0 -13
  557. package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js.map +0 -1
  558. package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js +0 -962
  559. package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js.map +0 -1
  560. package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js +0 -309
  561. package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js.map +0 -1
  562. package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js +0 -18
  563. package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js.map +0 -1
  564. package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js +0 -23
  565. package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js.map +0 -1
  566. package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js +0 -1543
  567. package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js.map +0 -1
  568. package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js +0 -38
  569. package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js.map +0 -1
  570. package/dist/esm/node_modules/css-what/lib/es/parse.js +0 -424
  571. package/dist/esm/node_modules/css-what/lib/es/parse.js.map +0 -1
  572. package/dist/esm/node_modules/css-what/lib/es/types.js +0 -29
  573. package/dist/esm/node_modules/css-what/lib/es/types.js.map +0 -1
  574. package/dist/esm/node_modules/cssesc/cssesc.js +0 -120
  575. package/dist/esm/node_modules/cssesc/cssesc.js.map +0 -1
  576. package/dist/esm/node_modules/dedent/dist/dedent.js +0 -100
  577. package/dist/esm/node_modules/dedent/dist/dedent.js.map +0 -1
  578. package/dist/esm/node_modules/deep-object-diff/mjs/diff.js +0 -40
  579. package/dist/esm/node_modules/deep-object-diff/mjs/diff.js.map +0 -1
  580. package/dist/esm/node_modules/deep-object-diff/mjs/utils.js +0 -9
  581. package/dist/esm/node_modules/deep-object-diff/mjs/utils.js.map +0 -1
  582. package/dist/esm/node_modules/deepmerge/dist/cjs.js +0 -143
  583. package/dist/esm/node_modules/deepmerge/dist/cjs.js.map +0 -1
  584. package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js +0 -1386
  585. package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js.map +0 -1
  586. package/dist/esm/node_modules/modern-ahocorasick/dist/index.js +0 -102
  587. package/dist/esm/node_modules/modern-ahocorasick/dist/index.js.map +0 -1
  588. package/dist/esm/node_modules/picocolors/picocolors.js +0 -87
  589. package/dist/esm/node_modules/picocolors/picocolors.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TimelineStore.js","sources":["../../../../../../src/components/editor/Timeline/TimelineStore.ts"],"sourcesContent":[null],"names":["frameToXFn","xToFrameFn"],"mappings":"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"}
1
+ {"version":3,"file":"TimelineStore.js","sources":["src/components/editor/Timeline/TimelineStore.ts"],"sourcesContent":["import {\n frameToX as frameToXFn,\n xToFrame as xToFrameFn,\n} from './timelineCoords';\nimport { selectionKey } from './timelineSelection';\n\nimport type {\n TimelineContextValue,\n TimelineHandle,\n TimelineKeyframeRef,\n TimelineMode,\n TimelineSelection,\n TimelineView,\n} from './Timeline.types';\nimport type { ViewportSize } from '@/components/primitives/viewport';\n\nconst ZERO_SIZE: ViewportSize = { width: 0, height: 0 };\nconst DEFAULT_VIEW: TimelineView = { startFrame: 0, endFrame: 1 };\n\n/** Snapshot of the geometry slice — everything needed to position content. */\nexport interface TimelineGeometryState {\n /** Visible frame window. */\n view: TimelineView;\n /** Track-area size in CSS px (excludes the header column). */\n size: ViewportSize;\n /** Uniform row height in CSS px. */\n trackHeight: number;\n /** Vertical scroll offset of the track stack. */\n scrollTop: number;\n /** Global frame range. */\n startFrame: number;\n endFrame: number;\n /** Frames per second. */\n fps: number;\n /** Editor mode. */\n mode: TimelineMode;\n}\n\n/** Snapshot of the playhead slice. */\nexport interface TimelinePlayheadState {\n frame: number;\n playing: boolean;\n}\n\n/** The active pointer gesture. */\nexport type TimelineDragKind = 'none' | 'scrub' | 'move' | 'marquee' | 'pan';\n\n/** Which part of the loop region the pointer is hovering (for highlight + cursor). */\nexport type TimelineLoopHover = 'start' | 'end' | 'body' | null;\n\n/** Snapshot of the drag slice — active gesture + optional marquee rectangle. */\nexport interface TimelineDragState {\n kind: TimelineDragKind;\n /** Marquee rectangle in track-area CSS px (box-select), or null. */\n marquee: { x: number; y: number; width: number; height: number } | null;\n}\n\n/**\n * Callbacks the component wires (via `configureHandle`) so the imperative\n * handle and gestures can request state changes. The component owns the\n * controlled/uncontrolled props and fires the public `on*` callbacks.\n */\nexport interface TimelineRequestHandlers {\n focus: () => void;\n getElement: () => HTMLDivElement | null;\n seek: (frame: number) => void;\n setPlaying: (playing: boolean) => void;\n setView: (view: TimelineView) => void;\n zoomToFit: (paddingFrames?: number) => void;\n zoomToSelection: () => void;\n}\n\n/**\n * Single source of truth for Timeline runtime state — geometry, playhead,\n * selection. Designed for `useSyncExternalStore`: each slice has its own\n * subscribe/get pair so subscribers re-render only when their slice changes.\n * Controlled props are mirrored into the store by the component before paint.\n */\nexport class TimelineStore {\n private geometry: TimelineGeometryState = {\n view: DEFAULT_VIEW,\n size: ZERO_SIZE,\n trackHeight: 28,\n scrollTop: 0,\n startFrame: 0,\n endFrame: 1,\n fps: 30,\n mode: 'dope-sheet',\n };\n private playhead: TimelinePlayheadState = { frame: 0, playing: false };\n private selection: TimelineSelection = [];\n private selectionKeys = new Set<string>();\n private drag: TimelineDragState = { kind: 'none', marquee: null };\n private hover: TimelineKeyframeRef | null = null;\n private hoverPlayhead = false;\n private hoverLoop: TimelineLoopHover = null;\n private snapshot: TimelineContextValue = this.computeSnapshot();\n\n private allListeners = new Set<() => void>();\n private geometryListeners = new Set<() => void>();\n private playheadListeners = new Set<() => void>();\n private selectionListeners = new Set<() => void>();\n private dragListeners = new Set<() => void>();\n private hoverListeners = new Set<() => void>();\n private hoverPlayheadListeners = new Set<() => void>();\n private hoverLoopListeners = new Set<() => void>();\n\n // ── Public read API (arrow functions so they can be passed as callbacks) ──\n\n getSnapshot = (): TimelineContextValue => this.snapshot;\n getGeometry = (): TimelineGeometryState => this.geometry;\n getPlayhead = (): TimelinePlayheadState => this.playhead;\n getSelection = (): TimelineSelection => this.selection;\n getDrag = (): TimelineDragState => this.drag;\n getHover = (): TimelineKeyframeRef | null => this.hover;\n getHoverPlayhead = (): boolean => this.hoverPlayhead;\n getHoverLoop = (): TimelineLoopHover => this.hoverLoop;\n isSelected = (ref: TimelineKeyframeRef): boolean =>\n this.selectionKeys.has(selectionKey(ref));\n isHovered = (ref: TimelineKeyframeRef): boolean =>\n this.hover !== null &&\n this.hover.trackId === ref.trackId &&\n this.hover.keyframeId === ref.keyframeId;\n\n // ── Subscriptions ──\n\n subscribe = (cb: () => void): (() => void) => {\n this.allListeners.add(cb);\n return () => {\n this.allListeners.delete(cb);\n };\n };\n\n subscribeGeometry = (cb: () => void): (() => void) => {\n this.geometryListeners.add(cb);\n return () => {\n this.geometryListeners.delete(cb);\n };\n };\n\n subscribePlayhead = (cb: () => void): (() => void) => {\n this.playheadListeners.add(cb);\n return () => {\n this.playheadListeners.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 subscribeDrag = (cb: () => void): (() => void) => {\n this.dragListeners.add(cb);\n return () => {\n this.dragListeners.delete(cb);\n };\n };\n\n subscribeHover = (cb: () => void): (() => void) => {\n this.hoverListeners.add(cb);\n return () => {\n this.hoverListeners.delete(cb);\n };\n };\n\n subscribeHoverPlayhead = (cb: () => void): (() => void) => {\n this.hoverPlayheadListeners.add(cb);\n return () => {\n this.hoverPlayheadListeners.delete(cb);\n };\n };\n\n subscribeHoverLoop = (cb: () => void): (() => void) => {\n this.hoverLoopListeners.add(cb);\n return () => {\n this.hoverLoopListeners.delete(cb);\n };\n };\n\n // ── Mutators ──\n\n setGeometry(partial: Partial<TimelineGeometryState>): void {\n const next: TimelineGeometryState = {\n view: partial.view ?? this.geometry.view,\n size: partial.size ?? this.geometry.size,\n trackHeight: partial.trackHeight ?? this.geometry.trackHeight,\n scrollTop: partial.scrollTop ?? this.geometry.scrollTop,\n startFrame: partial.startFrame ?? this.geometry.startFrame,\n endFrame: partial.endFrame ?? this.geometry.endFrame,\n fps: partial.fps ?? this.geometry.fps,\n mode: partial.mode ?? this.geometry.mode,\n };\n if (geometryEqual(next, this.geometry)) return;\n this.geometry = next;\n this.snapshot = this.computeSnapshot();\n this.geometryListeners.forEach(cb => {\n cb();\n });\n this.allListeners.forEach(cb => {\n cb();\n });\n }\n\n setPlayhead(partial: Partial<TimelinePlayheadState>): void {\n const next: TimelinePlayheadState = {\n frame: partial.frame ?? this.playhead.frame,\n playing: partial.playing ?? this.playhead.playing,\n };\n if (\n next.frame === this.playhead.frame &&\n next.playing === this.playhead.playing\n ) {\n return;\n }\n this.playhead = next;\n this.snapshot = this.computeSnapshot();\n this.playheadListeners.forEach(cb => {\n cb();\n });\n this.allListeners.forEach(cb => {\n cb();\n });\n }\n\n setSelection(next: TimelineSelection): void {\n const nextKeys = new Set(next.map(selectionKey));\n if (setsEqual(nextKeys, this.selectionKeys)) return;\n this.selection = next;\n this.selectionKeys = nextKeys;\n this.snapshot = this.computeSnapshot();\n this.selectionListeners.forEach(cb => {\n cb();\n });\n this.allListeners.forEach(cb => {\n cb();\n });\n }\n\n setDrag(next: TimelineDragState): void {\n if (\n next.kind === this.drag.kind &&\n marqueeEqual(next.marquee, this.drag.marquee)\n ) {\n return;\n }\n this.drag = next;\n this.dragListeners.forEach(cb => {\n cb();\n });\n }\n\n setHover(next: TimelineKeyframeRef | null): void {\n if (\n (next === null && this.hover === null) ||\n (next !== null &&\n this.hover !== null &&\n next.trackId === this.hover.trackId &&\n next.keyframeId === this.hover.keyframeId)\n ) {\n return;\n }\n this.hover = next;\n this.hoverListeners.forEach(cb => {\n cb();\n });\n }\n\n setHoverPlayhead(next: boolean): void {\n if (next === this.hoverPlayhead) return;\n this.hoverPlayhead = next;\n this.hoverPlayheadListeners.forEach(cb => {\n cb();\n });\n }\n\n setHoverLoop(next: TimelineLoopHover): void {\n if (next === this.hoverLoop) return;\n this.hoverLoop = next;\n this.hoverLoopListeners.forEach(cb => {\n cb();\n });\n }\n\n // ── Imperative handle ──\n\n /**\n * Stable handle whose methods proxy to the current store state and to the\n * request handlers wired by the component. Stable for the store's lifetime.\n */\n readonly handle: TimelineHandle = {\n focus: (): void => {\n this.handlers?.focus();\n },\n getElement: (): HTMLDivElement | null =>\n this.handlers?.getElement() ?? null,\n seek: (frame: number): void => {\n this.handlers?.seek(frame);\n },\n play: (): void => {\n this.handlers?.setPlaying(true);\n },\n pause: (): void => {\n this.handlers?.setPlaying(false);\n },\n toggle: (): void => {\n this.handlers?.setPlaying(!this.playhead.playing);\n },\n getFrame: (): number => this.playhead.frame,\n zoomToFit: (paddingFrames?: number): void => {\n this.handlers?.zoomToFit(paddingFrames);\n },\n zoomToSelection: (): void => {\n this.handlers?.zoomToSelection();\n },\n getView: (): TimelineView => this.geometry.view,\n setView: (view: TimelineView): void => {\n this.handlers?.setView(view);\n },\n frameToX: (frame: number): number =>\n frameToXFn(frame, this.geometry.view, this.geometry.size.width),\n xToFrame: (x: number): number =>\n xToFrameFn(x, this.geometry.view, this.geometry.size.width),\n };\n\n /** Wired up by `Timeline.tsx` so the handle/gestures can request changes. */\n configureHandle(handlers: TimelineRequestHandlers): void {\n this.handlers = handlers;\n }\n\n private handlers: TimelineRequestHandlers | null = null;\n\n private computeSnapshot(): TimelineContextValue {\n const { view, size, startFrame, endFrame, fps, mode } = this.geometry;\n return {\n view,\n size,\n startFrame,\n endFrame,\n fps,\n mode,\n frame: this.playhead.frame,\n playing: this.playhead.playing,\n selection: this.selection,\n frameToX: (f: number): number => frameToXFn(f, view, size.width),\n xToFrame: (x: number): number => xToFrameFn(x, view, size.width),\n };\n }\n}\n\nfunction viewEqual(a: TimelineView, b: TimelineView): boolean {\n return a.startFrame === b.startFrame && a.endFrame === b.endFrame;\n}\n\nfunction sizeEqual(a: ViewportSize, b: ViewportSize): boolean {\n return a.width === b.width && a.height === b.height;\n}\n\nfunction geometryEqual(\n a: TimelineGeometryState,\n b: TimelineGeometryState\n): boolean {\n return (\n viewEqual(a.view, b.view) &&\n sizeEqual(a.size, b.size) &&\n a.trackHeight === b.trackHeight &&\n a.scrollTop === b.scrollTop &&\n a.startFrame === b.startFrame &&\n a.endFrame === b.endFrame &&\n a.fps === b.fps &&\n a.mode === b.mode\n );\n}\n\nfunction setsEqual(a: Set<string>, b: Set<string>): boolean {\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\nfunction marqueeEqual(\n a: TimelineDragState['marquee'],\n b: TimelineDragState['marquee']\n): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n return (\n a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height\n );\n}\n"],"names":["frameToXFn","xToFrameFn"],"mappings":";;;AAgBA,MAAM,SAAS,GAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AACvD,MAAM,YAAY,GAAiB,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;AAuDjE;;;;;AAKG;MACU,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,QAAQ,GAA0B;AACxC,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,IAAI,EAAE,YAAY;SACnB;QACO,IAAA,CAAA,QAAQ,GAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE;QAC9D,IAAA,CAAA,SAAS,GAAsB,EAAE;AACjC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAU;QACjC,IAAA,CAAA,IAAI,GAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;QACzD,IAAA,CAAA,KAAK,GAA+B,IAAI;QACxC,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,SAAS,GAAsB,IAAI;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAyB,IAAI,CAAC,eAAe,EAAE;AAEvD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAc;AACpC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAAc;AACzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAAc;AACzC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,GAAG,EAAc;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAc;AACrC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAc;AACtC,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,GAAG,EAAc;AAC9C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,GAAG,EAAc;;AAIlD,QAAA,IAAA,CAAA,WAAW,GAAG,MAA4B,IAAI,CAAC,QAAQ;AACvD,QAAA,IAAA,CAAA,WAAW,GAAG,MAA6B,IAAI,CAAC,QAAQ;AACxD,QAAA,IAAA,CAAA,WAAW,GAAG,MAA6B,IAAI,CAAC,QAAQ;AACxD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAyB,IAAI,CAAC,SAAS;AACtD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAyB,IAAI,CAAC,IAAI;AAC5C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAkC,IAAI,CAAC,KAAK;AACvD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAe,IAAI,CAAC,aAAa;AACpD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAyB,IAAI,CAAC,SAAS;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,GAAwB,KACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAA,CAAA,SAAS,GAAG,CAAC,GAAwB,KACnC,IAAI,CAAC,KAAK,KAAK,IAAI;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO;YAClC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU;;AAI1C,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,EAAc,KAAkB;AAC3C,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACzB,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9B,YAAA,CAAC;AACH,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,EAAc,KAAkB;AACnD,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9B,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;AACnC,YAAA,CAAC;AACH,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,EAAc,KAAkB;AACnD,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9B,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;AACnC,YAAA,CAAC;AACH,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,EAAc,KAAkB;AACpD,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AACpC,YAAA,CAAC;AACH,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,EAAc,KAAkB;AAC/C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/B,YAAA,CAAC;AACH,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,EAAc,KAAkB;AAChD,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3B,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;AAChC,YAAA,CAAC;AACH,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,sBAAsB,GAAG,CAAC,EAAc,KAAkB;AACxD,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;AACnC,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;AACxC,YAAA,CAAC;AACH,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,EAAc,KAAkB;AACpD,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AACpC,YAAA,CAAC;AACH,QAAA,CAAC;;AA4GD;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAmB;YAChC,KAAK,EAAE,MAAW;AAChB,gBAAA,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE;YACxB,CAAC;YACD,UAAU,EAAE,MACV,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI;AACrC,YAAA,IAAI,EAAE,CAAC,KAAa,KAAU;AAC5B,gBAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;YAC5B,CAAC;YACD,IAAI,EAAE,MAAW;AACf,gBAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC;YACjC,CAAC;YACD,KAAK,EAAE,MAAW;AAChB,gBAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;YAClC,CAAC;YACD,MAAM,EAAE,MAAW;AACjB,gBAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACnD,CAAC;YACD,QAAQ,EAAE,MAAc,IAAI,CAAC,QAAQ,CAAC,KAAK;AAC3C,YAAA,SAAS,EAAE,CAAC,aAAsB,KAAU;AAC1C,gBAAA,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC;YACzC,CAAC;YACD,eAAe,EAAE,MAAW;AAC1B,gBAAA,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE;YAClC,CAAC;YACD,OAAO,EAAE,MAAoB,IAAI,CAAC,QAAQ,CAAC,IAAI;AAC/C,YAAA,OAAO,EAAE,CAAC,IAAkB,KAAU;AACpC,gBAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;YAC9B,CAAC;YACD,QAAQ,EAAE,CAAC,KAAa,KACtBA,QAAU,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACjE,QAAQ,EAAE,CAAC,CAAS,KAClBC,QAAU,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;SAC9D;QAOO,IAAA,CAAA,QAAQ,GAAmC,IAAI;IAkBzD;;AAtKE,IAAA,WAAW,CAAC,OAAuC,EAAA;AACjD,QAAA,MAAM,IAAI,GAA0B;YAClC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW;YAC7D,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS;YACvD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;YAC1D,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;YACpD,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG;YACrC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;SACzC;AACD,QAAA,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;YAAE;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAG;AAClC,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAG;AAC7B,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAuC,EAAA;AACjD,QAAA,MAAM,IAAI,GAA0B;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;YAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;SAClD;QACD,IACE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK;YAClC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,EACtC;YACA;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAG;AAClC,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAG;AAC7B,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,IAAuB,EAAA;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChD,QAAA,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;YAAE;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,IAAG;AACnC,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAG;AAC7B,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,IAAuB,EAAA;QAC7B,IACE,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;AAC5B,YAAA,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAC7C;YACA;QACF;AACA,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAG;AAC9B,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,IAAgC,EAAA;QACvC,IACE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;aACpC,IAAI,KAAK,IAAI;gBACZ,IAAI,CAAC,KAAK,KAAK,IAAI;AACnB,gBAAA,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO;gBACnC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAC5C;YACA;QACF;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAG;AAC/B,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,gBAAgB,CAAC,IAAa,EAAA;AAC5B,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa;YAAE;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,IAAG;AACvC,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,IAAuB,EAAA;AAClC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS;YAAE;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,IAAG;AACnC,YAAA,EAAE,EAAE;AACN,QAAA,CAAC,CAAC;IACJ;;AA4CA,IAAA,eAAe,CAAC,QAAiC,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC1B;IAIQ,eAAe,GAAA;AACrB,QAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ;QACrE,OAAO;YACL,IAAI;YACJ,IAAI;YACJ,UAAU;YACV,QAAQ;YACR,GAAG;YACH,IAAI;AACJ,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;AAC1B,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,QAAQ,EAAE,CAAC,CAAS,KAAaD,QAAU,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AAChE,YAAA,QAAQ,EAAE,CAAC,CAAS,KAAaC,QAAU,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;SACjE;IACH;AACD;AAED,SAAS,SAAS,CAAC,CAAe,EAAE,CAAe,EAAA;AACjD,IAAA,OAAO,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;AACnE;AAEA,SAAS,SAAS,CAAC,CAAe,EAAE,CAAe,EAAA;AACjD,IAAA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AACrD;AAEA,SAAS,aAAa,CACpB,CAAwB,EACxB,CAAwB,EAAA;IAExB,QACE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACzB,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACzB,QAAA,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;AAC/B,QAAA,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;AAC3B,QAAA,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;AAC7B,QAAA,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;AACzB,QAAA,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;AACf,QAAA,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;AAErB;AAEA,SAAS,SAAS,CAAC,CAAc,EAAE,CAAc,EAAA;AAC/C,IAAA,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;AAAE,QAAA,OAAO,KAAK;AACnC,IAAA,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;AACnB,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,KAAK;IAC/B;AACA,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,YAAY,CACnB,CAA+B,EAC/B,CAA+B,EAAA;IAE/B,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AACxB,IAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK;AAC1B,IAAA,QACE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAE9E;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimelineToolbar.js","sources":["../../../../../../src/components/editor/Timeline/TimelineToolbar.tsx"],"sourcesContent":[null],"names":[],"mappings":";;AAIA;;;;AAIG;AACH,MAAM,mBAAmB,GAA0C,MAAM,IAAI;MAEhE,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAChE,IAAA,WAAW,EAAE,kBAAkB;IAC/B,CAAC,aAAa,GAAG,SAAkB;AACpC,CAAA;;;;"}
1
+ {"version":3,"file":"TimelineToolbar.js","sources":["src/components/editor/Timeline/TimelineToolbar.tsx"],"sourcesContent":["import { TIMELINE_SLOT } from './Timeline.types';\n\nimport type { TimelineToolbarProps } from './Timeline.types';\n\n/**\n * Toolbar strip rendered above the timeline body (transport, mode toggle,\n * zoom controls). Picked out of `<Timeline>` children by the `TIMELINE_SLOT`\n * symbol — its position in the child tree does not affect placement.\n */\nconst TimelineToolbarImpl: (props: TimelineToolbarProps) => null = () => null;\n\nexport const TimelineToolbar = Object.assign(TimelineToolbarImpl, {\n displayName: 'Timeline.Toolbar',\n [TIMELINE_SLOT]: 'toolbar' as const,\n});\n"],"names":[],"mappings":";;AAIA;;;;AAIG;AACH,MAAM,mBAAmB,GAA0C,MAAM,IAAI;MAEhE,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAChE,IAAA,WAAW,EAAE,kBAAkB;IAC/B,CAAC,aAAa,GAAG,SAAkB;AACpC,CAAA;;;;"}
@@ -5,7 +5,7 @@ import '../../../utils/devWarn.js';
5
5
  import { useMergedRef } from '../../../hooks/useMergedRef/useMergedRef.js';
6
6
  import '../../../hooks/useBreakpoint/useBreakpoint.js';
7
7
  import './../../../assets/src/theme/lightTheme.css.ts.vanilla-Ct6f9Iym.css';
8
- import '../../../node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js';
8
+ import '@vanilla-extract/css';
9
9
  import './../../../assets/src/theme/darkTheme.css.ts.vanilla-BHZ3ecRn.css';
10
10
  import './../../../assets/src/theme/globalScrollbars.css.ts.vanilla-BAJwnUEJ.css';
11
11
  import '../../../hooks/useNavigationHistory/useNavigationHistory.js';
@@ -1 +1 @@
1
- {"version":3,"file":"TimelineTrackHeaders.js","sources":["../../../../../../src/components/editor/Timeline/TimelineTrackHeaders.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;AA0BA;AA2BA;AACA;;AAMA;AAEA;;;;;;;;AAQG;AACG;AAeJ;;;AAIA;AACE;;AAC6B;AAC7B;AACF;;AAMA;AACE;;AAEA;AACF;;;;AAMA;;;AAII;AACA;AACE;AACA;AAA0C;;;;;AAS5C;;AACA;AACA;;AACA;AACA;;AAEF;AAIF;AAEI;;AAEF;AAIF;AAEI;;AAEE;;;AAGA;AACE;AACA;;AAEE;;;AAEA;AACA;AACE;AACA;;AAEJ;;;;AAIF;AACF;;;AAOF;AACE;;;AAqBM;AACA;AACA;AACD;AAGC;;AAEE;AASM;AACF;AAEE;;AAEE;;AAEJ;;AAqBN;;AAEA;AACA;;;AAOM;AACD;;AAQO;;;;;AASL;;AASG;;AAGE;AACF;AAqBZ;AAWV;;"}
1
+ {"version":3,"file":"TimelineTrackHeaders.js","sources":["src/components/editor/Timeline/TimelineTrackHeaders.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { useMergedRef } from '@/hooks';\n\nimport {\n timelineHeaderColumnStyle,\n timelineHeaderSpacerStyle,\n timelineHeaderRowsViewportStyle,\n timelineHeaderRowStyle,\n timelineHeaderGroupRowStyle,\n timelineHeaderToggleStyle,\n timelineHeaderSwatchStyle,\n timelineHeaderLabelStyle,\n timelineHeaderDropIndicatorStyle,\n} from './Timeline.css';\nimport { reorderTracksByDrop } from './timelineEdits';\n\nimport type {\n TimelineSelection,\n TimelineTrack,\n TimelineTrackHeaderInfo,\n} from './Timeline.types';\nimport type { TimelineRow, TimelineTrackRow } from './timelineLayout';\n\nconst GROUP_INDENT = 14;\n\ninterface TimelineTrackHeadersProps {\n rows: ReadonlyArray<TimelineRow>;\n contentHeight: number;\n tracks: ReadonlyArray<TimelineTrack>;\n rulerHeight: number;\n scrollTop: number;\n width: number;\n selection: TimelineSelection;\n editable: boolean;\n renderTrackHeader?:\n | ((track: TimelineTrack, info: TimelineTrackHeaderInfo) => React.ReactNode)\n | undefined;\n onReorderTracks?: ((tracks: TimelineTrack[]) => void) | undefined;\n onToggleGroupCollapsed: (groupId: string) => void;\n onToggleTrackExpanded: (trackId: string) => void;\n /** Forwarded ref to the column root, so the parent can attach extra DOM\n * handlers (e.g. a native non-passive wheel listener for row scrolling). */\n ref?: React.Ref<HTMLDivElement>;\n}\n\ninterface DragState {\n id: string;\n dropIndex: number;\n}\n\n/** A crisp disclosure triangle (right-pointing; rotates to point down). */\nfunction Caret(): React.ReactElement {\n return (\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" aria-hidden=\"true\">\n <path d=\"M2 1 L6 4 L2 7 Z\" fill=\"currentColor\" />\n </svg>\n );\n}\n\n/**\n * The left track-header column. Renders a spacer aligned with the ruler band,\n * then the layout rows: group headers (with a collapse caret) and one row per\n * visible track (built-in label + color swatch + expand-to-graph caret by\n * default, or `renderTrackHeader`). Rows are absolutely positioned from the\n * shared layout so they stay aligned with the canvas lanes (variable heights,\n * expanded graph lanes). With the built-in header, track rows can be dragged to\n * reorder (a drop indicator marks the target gap).\n */\nexport function TimelineTrackHeaders({\n rows,\n contentHeight,\n tracks,\n rulerHeight,\n scrollTop,\n width,\n selection,\n editable,\n renderTrackHeader,\n onReorderTracks,\n onToggleGroupCollapsed,\n onToggleTrackExpanded,\n ref,\n}: TimelineTrackHeadersProps): React.ReactElement {\n const columnRef = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRef<HTMLDivElement>(columnRef, ref);\n const [drag, setDrag] = useState<DragState | null>(null);\n\n const selectedTrackIds = useMemo(() => {\n const set = new Set<string>();\n for (const ref of selection) set.add(ref.trackId);\n return set;\n }, [selection]);\n\n const trackRows = useMemo(\n () => rows.filter((r): r is TimelineTrackRow => r.kind === 'track'),\n [rows]\n );\n const trackIndexById = useMemo(() => {\n const m = new Map<string, number>();\n trackRows.forEach((r, i) => m.set(r.track.id, i));\n return m;\n }, [trackRows]);\n\n // Reorder-drag is only wired for the built-in header, so custom headers keep\n // full control of their own pointer interactions.\n const reorderable = editable && !!onReorderTracks && !renderTrackHeader;\n\n const dropIndexAt = useCallback(\n (clientY: number): number => {\n const rect = columnRef.current?.getBoundingClientRect();\n const top = (rect?.top ?? 0) + rulerHeight;\n const contentY = clientY - top + scrollTop;\n for (let i = 0; i < trackRows.length; i += 1) {\n const r = trackRows[i];\n if (r && contentY < r.top + r.height / 2) return i;\n }\n return trackRows.length;\n },\n [rulerHeight, scrollTop, trackRows]\n );\n\n const handleRowPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>, trackId: string): void => {\n if (!reorderable || e.button !== 0) return;\n const column = columnRef.current;\n if (!column) return;\n column.setPointerCapture(e.pointerId);\n const index = trackRows.findIndex(r => r.track.id === trackId);\n setDrag({ id: trackId, dropIndex: index < 0 ? 0 : index });\n },\n [reorderable, trackRows]\n );\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent<HTMLDivElement>): void => {\n const y = e.clientY;\n setDrag(d => (d ? { ...d, dropIndex: dropIndexAt(y) } : d));\n },\n [dropIndexAt]\n );\n\n const endDrag = useCallback(\n (e: React.PointerEvent<HTMLDivElement>): void => {\n const column = columnRef.current;\n if (column?.hasPointerCapture(e.pointerId)) {\n column.releasePointerCapture(e.pointerId);\n }\n setDrag(current => {\n if (current && onReorderTracks) {\n const visible = tracks.filter(t => !t.hidden);\n let visibleIndex: number;\n if (current.dropIndex >= trackRows.length) {\n visibleIndex = visible.length;\n } else {\n const targetId = trackRows[current.dropIndex]?.track.id;\n visibleIndex = targetId\n ? visible.findIndex(t => t.id === targetId)\n : visible.length;\n }\n const next = reorderTracksByDrop(tracks, current.id, visibleIndex);\n if (next.some((t, i) => t.id !== tracks[i]?.id))\n onReorderTracks(next);\n }\n return null;\n });\n },\n [tracks, trackRows, onReorderTracks]\n );\n\n const dropTop =\n drag &&\n (drag.dropIndex < trackRows.length\n ? (trackRows[drag.dropIndex]?.top ?? contentHeight)\n : contentHeight);\n\n return (\n <div\n ref={mergedRef}\n className={timelineHeaderColumnStyle}\n style={{ width }}\n onPointerMove={handlePointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n >\n {rulerHeight > 0 && (\n <div\n className={timelineHeaderSpacerStyle}\n style={{ height: rulerHeight }}\n />\n )}\n <div className={timelineHeaderRowsViewportStyle}>\n <div\n style={{\n position: 'absolute',\n inset: 0,\n transform: `translateY(${-scrollTop}px)`,\n }}\n >\n {rows.map(row => {\n if (row.kind === 'group') {\n const collapsed = row.group.collapsed ?? false;\n return (\n <div\n key={`group:${row.group.id}`}\n role=\"button\"\n tabIndex={0}\n aria-expanded={!collapsed}\n className={timelineHeaderGroupRowStyle}\n style={{ top: row.top, height: row.height }}\n onClick={() => {\n onToggleGroupCollapsed(row.group.id);\n }}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onToggleGroupCollapsed(row.group.id);\n }\n }}\n >\n <span\n className={timelineHeaderToggleStyle}\n data-open={!collapsed || undefined}\n >\n <Caret />\n </span>\n {row.group.color && (\n <span\n className={timelineHeaderSwatchStyle}\n style={{ background: row.group.color }}\n />\n )}\n <span className={timelineHeaderLabelStyle}>\n {row.group.label ?? row.group.id}\n </span>\n </div>\n );\n }\n\n const track = row.track;\n const hasSelection = selectedTrackIds.has(track.id);\n const grouped = track.groupId !== undefined;\n return (\n <div\n key={track.id}\n className={timelineHeaderRowStyle}\n style={{\n top: row.top,\n height: row.height,\n ...(grouped ? { paddingInlineStart: GROUP_INDENT } : {}),\n }}\n data-draggable={reorderable || undefined}\n data-dragging={drag?.id === track.id || undefined}\n data-locked={track.locked ? true : undefined}\n data-selected={hasSelection || undefined}\n onPointerDown={\n reorderable\n ? e => {\n handleRowPointerDown(e, track.id);\n }\n : undefined\n }\n >\n {renderTrackHeader ? (\n renderTrackHeader(track, {\n index: trackIndexById.get(track.id) ?? 0,\n hasSelection,\n })\n ) : (\n <>\n <button\n type=\"button\"\n className={timelineHeaderToggleStyle}\n data-open={track.expanded ? true : undefined}\n onPointerDown={e => {\n e.stopPropagation();\n }}\n onClick={e => {\n e.stopPropagation();\n onToggleTrackExpanded(track.id);\n }}\n aria-label={\n track.expanded ? 'Collapse track' : 'Expand track'\n }\n aria-expanded={track.expanded ?? false}\n >\n <Caret />\n </button>\n <span\n className={timelineHeaderSwatchStyle}\n style={\n track.color ? { background: track.color } : undefined\n }\n />\n <span className={timelineHeaderLabelStyle}>\n {track.label ?? track.id}\n </span>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n {drag && dropTop !== null && (\n <div\n className={timelineHeaderDropIndicatorStyle}\n style={{ top: rulerHeight + dropTop - scrollTop }}\n />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AA0BA;AA2BA;AACA;;AAMA;AAEA;;;;;;;;AAQG;AACG;AAeJ;;;AAIA;AACE;;AAC6B;AAC7B;AACF;;AAMA;AACE;;AAEA;AACF;;;;AAMA;;;AAII;AACA;AACE;AACA;AAA0C;;;;;AAS5C;;AACA;AACA;;AACA;AACA;;AAEF;AAIF;AAEI;;AAEF;AAIF;AAEI;;AAEE;;;AAGA;AACE;AACA;;AAEE;;;AAEA;AACA;AACE;AACA;;AAEJ;;;;AAIF;AACF;;;AAOF;AACE;;;AAqBM;AACA;AACA;AACD;AAGC;;AAEE;AASM;AACF;AAEE;;AAEE;;AAEJ;;AAqBN;;AAEA;AACA;;;AAOM;AACD;;AAQO;;;;;AASL;;AASG;;AAGE;AACF;AAqBZ;AAWV;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimelineTrackScale.js","sources":["../../../../../../src/components/editor/Timeline/TimelineTrackScale.tsx"],"sourcesContent":[null],"names":[],"mappings":";;AAIA;;;;;;;AAOG;AACH,MAAM,sBAAsB,GAA6C,MACvE,IAAI;MAEO,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE;AACtE,IAAA,WAAW,EAAE,qBAAqB;IAClC,CAAC,aAAa,GAAG,aAAsB;AACxC,CAAA;;;;"}
1
+ {"version":3,"file":"TimelineTrackScale.js","sources":["src/components/editor/Timeline/TimelineTrackScale.tsx"],"sourcesContent":["import { TIMELINE_SLOT } from './Timeline.types';\n\nimport type { TimelineTrackScaleProps } from './Timeline.types';\n\n/**\n * Renders a tiny min / max value scale on every graph / expanded-track lane.\n * Picked out of `<Timeline>` children by the `TIMELINE_SLOT` symbol — its\n * position in the child tree does not affect placement (always drawn inside\n * the canvas, at the start or end of each lane).\n *\n * Pure marker — the actual drawing happens inside `drawTimeline`.\n */\nconst TimelineTrackScaleImpl: (props: TimelineTrackScaleProps) => null = () =>\n null;\n\nexport const TimelineTrackScale = Object.assign(TimelineTrackScaleImpl, {\n displayName: 'Timeline.TrackScale',\n [TIMELINE_SLOT]: 'track-scale' as const,\n});\n"],"names":[],"mappings":";;AAIA;;;;;;;AAOG;AACH,MAAM,sBAAsB,GAA6C,MACvE,IAAI;MAEO,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE;AACtE,IAAA,WAAW,EAAE,qBAAqB;IAClC,CAAC,aAAa,GAAG,aAAsB;AACxC,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../src/components/editor/Timeline/index.ts"],"sourcesContent":[null],"names":["TimelineBase"],"mappings":";;;;;;;;;AAaA,MAAM,iBAAiB,GAAGA,UAAgC;AAC1D,iBAAiB,CAAC,OAAO,GAAG,eAAe;AAC3C,iBAAiB,CAAC,MAAM,GAAG,cAAc;AACzC,iBAAiB,CAAC,OAAO,GAAG,eAAe;AAC3C,iBAAiB,CAAC,UAAU,GAAG,kBAAkB;AAE1C,MAAM,QAAQ,GAAG;;;;"}
1
+ {"version":3,"file":"index.js","sources":["src/components/editor/Timeline/index.ts"],"sourcesContent":["import { Timeline as TimelineBase } from './Timeline';\nimport { TimelineFooter } from './TimelineFooter';\nimport { TimelineMinimap } from './TimelineMinimap';\nimport { TimelineToolbar } from './TimelineToolbar';\nimport { TimelineTrackScale } from './TimelineTrackScale';\n\ntype TimelineCompound = typeof TimelineBase & {\n Toolbar: typeof TimelineToolbar;\n Footer: typeof TimelineFooter;\n Minimap: typeof TimelineMinimap;\n TrackScale: typeof TimelineTrackScale;\n};\n\nconst TimelineWithSlots = TimelineBase as TimelineCompound;\nTimelineWithSlots.Toolbar = TimelineToolbar;\nTimelineWithSlots.Footer = TimelineFooter;\nTimelineWithSlots.Minimap = TimelineMinimap;\nTimelineWithSlots.TrackScale = TimelineTrackScale;\n\nexport const Timeline = TimelineWithSlots;\nexport { TimelineToolbar, TimelineFooter, TimelineMinimap, TimelineTrackScale };\nexport {\n useTimelineContext,\n useTimelineGeometry,\n useTimelinePlayhead,\n useTimelineSelection,\n useTimelineSelectedTangentMode,\n} from './TimelineContext';\nexport type { TimelineSelectedTangentMode } from './TimelineContext';\nexport { selectedTangentMode, setSelectedTangentMode } from './timelineEdits';\nexport { framesToTimecode } from './timelineCoords';\nexport { TIMELINE_SLOT } from './Timeline.types';\n\nexport type {\n TimelineProps,\n TimelineTrack,\n TimelineKeyframeRef,\n TimelineSelection,\n TimelineView,\n TimelineMode,\n TimelineLoop,\n TimelineGroup,\n TimelineInfinity,\n TimelineHandle,\n TimelineDrawInfo,\n TimelineTrackHeaderInfo,\n TimelineContextValue,\n TimelineToolbarProps,\n TimelineFooterProps,\n TimelineMinimapProps,\n TimelineTrackScaleProps,\n TimelineSlotKind,\n TimelineSlotMarker,\n} from './Timeline.types';\nexport type {\n TimelineGeometryState,\n TimelinePlayheadState,\n TimelineDragState,\n TimelineDragKind,\n} from './TimelineStore';\n"],"names":["TimelineBase"],"mappings":";;;;;;;;;AAaA,MAAM,iBAAiB,GAAGA,UAAgC;AAC1D,iBAAiB,CAAC,OAAO,GAAG,eAAe;AAC3C,iBAAiB,CAAC,MAAM,GAAG,cAAc;AACzC,iBAAiB,CAAC,OAAO,GAAG,eAAe;AAC3C,iBAAiB,CAAC,UAAU,GAAG,kBAAkB;AAE1C,MAAM,QAAQ,GAAG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"timelineCoords.js","sources":["../../../../../../src/components/editor/Timeline/timelineCoords.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timelineCoords.js","sources":["src/components/editor/Timeline/timelineCoords.ts"],"sourcesContent":["import { clamp } from '@/utils/mathUtils';\n\nimport type { TimelineLoop, TimelineView } from './Timeline.types';\n\n// Re-exported so the Timeline modules keep importing their coord math from a\n// single place (`./timelineCoords`) while sharing the one `clamp` impl.\nexport { clamp };\n\n/** Resolve a loop prop to a concrete `{ startFrame, endFrame }` region, or null. */\nexport function resolveLoop(\n loop: TimelineLoop | undefined,\n startFrame: number,\n endFrame: number\n): { startFrame: number; endFrame: number } | null {\n if (loop === true) return { startFrame, endFrame };\n if (loop && typeof loop === 'object') return loop;\n return null;\n}\n\n/** Visible frame span of a view window. Guards against a zero/negative span. */\nfunction viewSpan(view: TimelineView): number {\n return Math.max(1e-6, view.endFrame - view.startFrame);\n}\n\n/** Map a frame to a CSS-pixel X within the track area `[0, width]`. */\nexport function frameToX(\n frame: number,\n view: TimelineView,\n width: number\n): number {\n return ((frame - view.startFrame) / viewSpan(view)) * width;\n}\n\n/** Inverse of `frameToX`: a CSS-pixel X to a frame. */\nexport function xToFrame(x: number, view: TimelineView, width: number): number {\n if (width <= 0) return view.startFrame;\n return view.startFrame + (x / width) * viewSpan(view);\n}\n\n/** Snap a frame to the nearest increment. `true` = 1 frame, `false` = no snap. */\nexport function snapFrame(frame: number, snap: boolean | number): number {\n if (snap === false) return frame;\n const step = snap === true ? 1 : Math.max(1e-6, snap);\n return Math.round(frame / step) * step;\n}\n\n/**\n * Format a frame number as `HH:MM:SS:FF` timecode at the given fps.\n * Negative frames clamp to zero; fps is rounded to whole frames-per-second.\n */\nexport function framesToTimecode(frame: number, fps: number): string {\n const safeFps = fps > 0 ? Math.round(fps) : 30;\n const total = Math.max(0, Math.floor(frame));\n const ff = total % safeFps;\n const totalSeconds = Math.floor(total / safeFps);\n const ss = totalSeconds % 60;\n const mm = Math.floor(totalSeconds / 60) % 60;\n const hh = Math.floor(totalSeconds / 3600);\n const pad = (n: number): string => n.toString().padStart(2, '0');\n return `${pad(hh)}:${pad(mm)}:${pad(ss)}:${pad(ff)}`;\n}\n\n// ─── Graph-mode value axis ───\n\n/** Vertical inset (CSS px) inside a graph row so curves don't touch the edges. */\nexport function valueInset(rowHeight: number): number {\n return Math.min(8, rowHeight * 0.2);\n}\n\n/** Map a value to a CSS-pixel Y inside a graph-mode row (higher value → higher up). */\nexport function valueToY(\n value: number,\n range: readonly [number, number],\n rowTop: number,\n rowHeight: number\n): number {\n const span = Math.max(1e-6, range[1] - range[0]);\n const inset = valueInset(rowHeight);\n const usable = Math.max(1e-6, rowHeight - inset * 2);\n const t = (value - range[0]) / span;\n return rowTop + inset + (1 - t) * usable;\n}\n\n/** Inverse of `valueToY`: a CSS-pixel Y inside a row to a value. */\nexport function yToValue(\n y: number,\n range: readonly [number, number],\n rowTop: number,\n rowHeight: number\n): number {\n const span = range[1] - range[0];\n const inset = valueInset(rowHeight);\n const usable = Math.max(1e-6, rowHeight - inset * 2);\n const t = 1 - (y - rowTop - inset) / usable;\n return range[0] + t * span;\n}\n\n/** Auto-fit a value range to a set of keyframes, with 10% padding. */\nexport function autoValueRange(\n keyframes: ReadonlyArray<{ y: number }>\n): [number, number] {\n if (keyframes.length === 0) return [0, 1];\n let lo = Infinity;\n let hi = -Infinity;\n for (const k of keyframes) {\n if (k.y < lo) lo = k.y;\n if (k.y > hi) hi = k.y;\n }\n if (lo === hi) return [lo - 1, hi + 1];\n const pad = (hi - lo) * 0.1;\n return [lo - pad, hi + pad];\n}\n\n/**\n * Compute the next view that should follow the playhead during playback,\n * or `null` when no change is needed.\n *\n * - `'smooth'` — the view's `startFrame` is `frame - span/2`, clamped to\n * `[startFrame, endFrame - span]`. Called every frame tick → continuous\n * tracking with the playhead pinned to the centre.\n * - `'paged'` — return a new view only when the playhead has left the\n * current view; the new view starts at the playhead, clamped to bounds.\n * - `'off'` — always returns `null`.\n */\nexport function nextFollowView(\n mode: 'smooth' | 'paged' | 'off',\n view: TimelineView,\n frame: number,\n startFrame: number,\n endFrame: number\n): TimelineView | null {\n if (mode === 'off') return null;\n const span = view.endFrame - view.startFrame;\n if (span <= 0) return null;\n const maxStart = endFrame - span;\n let nextStart: number;\n if (mode === 'paged') {\n if (frame >= view.startFrame && frame <= view.endFrame) return null;\n nextStart = clamp(frame, startFrame, maxStart);\n } else {\n nextStart = clamp(frame - span / 2, startFrame, maxStart);\n }\n if (nextStart === view.startFrame) return null;\n return { startFrame: nextStart, endFrame: nextStart + span };\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timelineDrawing.js","sources":["../../../../../../src/components/editor/Timeline/timelineDrawing.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timelineDrawing.js","sources":["src/components/editor/Timeline/timelineDrawing.ts"],"sourcesContent":["import { evaluateCurve } from '@/components/controls/CurveEditor';\n\nimport { frameToX, valueInset, valueToY, xToFrame } from './timelineCoords';\n\nimport type {\n TimelineDrawInfo,\n TimelineTrack,\n TimelineView,\n} from './Timeline.types';\nimport type { TimelineRow } from './timelineLayout';\nimport type { ViewportSize } from '@/components/primitives/viewport';\nimport type { CurveData } from '@/types/keyframe';\n\nexport interface TimelineDrawColors {\n background: string;\n gridLine: string;\n rulerText: string;\n rowSeparator: string;\n keyframe: string;\n keyframeSelected: string;\n keyframeStroke: string;\n playhead: string;\n groupHeader: string;\n}\n\nexport interface TimelineDrawInput {\n ctx: CanvasRenderingContext2D;\n /** Track-area size in CSS pixels (caller has already DPR-scaled the ctx). */\n size: ViewportSize;\n view: TimelineView;\n startFrame: number;\n endFrame: number;\n fps: number;\n frame: number;\n /** Pre-computed rows (group headers + track lanes), in draw order. */\n rows: ReadonlyArray<TimelineRow>;\n scrollTop: number;\n /** Height of the top ruler band in CSS px (0 when hidden). */\n rulerHeight: number;\n /** Height of the dedicated loop strip directly below the ruler (0 = off). */\n loopStripHeight?: number;\n /** Visual style for the loop region edges. @default 'edges' */\n loopHandles?: 'edges' | 'brackets';\n showPlayhead: boolean;\n colors: TimelineDrawColors;\n /** Canvas font string for ruler labels, e.g. `10px Inter, sans-serif`. */\n font: string;\n formatTime: (frame: number, fps: number) => string;\n isSelected: (trackId: string, keyframeId: string) => boolean;\n /** Whether a given keyframe is hovered (pointer-over, no active drag). */\n isHovered?: (trackId: string, keyframeId: string) => boolean;\n /** Whether the playhead is currently pointer-hovered (renders a glow). */\n playheadHovered?: boolean;\n /**\n * When provided, draws an axis line + tick labels at the start (or end) of\n * each graph / expanded lane. Used by the `<Timeline.TrackScale />` slot.\n */\n trackScale?: {\n position: 'start' | 'end';\n format: (value: number) => string;\n showMidpoint: boolean;\n gridlines: boolean;\n color?: string;\n /** Lanes shorter than this (CSS px) skip the scale to avoid label overlap. */\n minLaneHeight: number;\n };\n renderOverlay?: (\n ctx: CanvasRenderingContext2D,\n info: TimelineDrawInfo\n ) => void;\n /** Active marquee rectangle (box-select) in track-area px, or null. */\n marquee?: { x: number; y: number; width: number; height: number } | null;\n /** Resolved loop region highlighted on the ruler + track area, or null. */\n loopRegion?: { startFrame: number; endFrame: number } | null;\n /** Which loop part is hovered (brightens that edge / body), or null. */\n loopHover?: 'start' | 'end' | 'body' | null;\n}\n\nconst KEYFRAME_RADIUS = 4;\nconst MIN_LABEL_PX = 72;\n\n/** Smallest \"nice\" step (1/2/5 × 10ⁿ, ≥ 1) at least as large as `value`. */\nfunction niceFrameStep(value: number): number {\n if (value <= 1) return 1;\n const exp = Math.floor(Math.log10(value));\n const base = Math.pow(10, exp);\n // `f` is in [1, 10] by construction; pick the next multiple in {1,2,5,10}.\n const f = value / base;\n const m = f <= 1 ? 1 : f <= 2 ? 2 : f <= 5 ? 5 : 10;\n return m * base;\n}\n\nfunction diamondPath(\n ctx: CanvasRenderingContext2D,\n cx: number,\n cy: number,\n r: number\n): void {\n ctx.beginPath();\n ctx.moveTo(cx, cy - r);\n ctx.lineTo(cx + r, cy);\n ctx.lineTo(cx, cy + r);\n ctx.lineTo(cx - r, cy);\n ctx.closePath();\n}\n\n/** Graph-mode lane: the track's value curve + keyframe points (+ tangents when selected). */\nfunction drawGraphLane(\n input: TimelineDrawInput,\n track: TimelineTrack,\n top: number,\n rowH: number,\n accent: string,\n range: readonly [number, number]\n): void {\n const { ctx, size, view, startFrame, endFrame, colors, isSelected } = input;\n const isHovered = input.isHovered ?? ((): boolean => false);\n\n // ── Track scale (axis line + min/max [+ midpoint] labels, optional gridlines)\n // Skipped on short lanes (e.g. a collapsed graph-mode track) so the labels\n // never overlap into an unreadable blob.\n if (input.trackScale && rowH >= input.trackScale.minLaneHeight) {\n const { position, format, showMidpoint, gridlines } = input.trackScale;\n const scaleColor = input.trackScale.color ?? colors.rulerText;\n const isStart = position === 'start';\n const inset = valueInset(rowH);\n const axisX = isStart ? 6 : size.width - 6;\n const lineX = Math.round(axisX) + 0.5;\n const yTop = top + inset;\n const yBot = top + rowH - inset;\n const yMid = (yTop + yBot) / 2;\n const midValue = (range[0] + range[1]) / 2;\n const ticks: Array<{\n y: number;\n value: number;\n baseline: CanvasTextBaseline;\n }> = [\n { y: yTop, value: range[1], baseline: 'top' },\n { y: yBot, value: range[0], baseline: 'bottom' },\n ];\n if (showMidpoint) {\n ticks.push({ y: yMid, value: midValue, baseline: 'middle' });\n }\n\n ctx.save();\n ctx.strokeStyle = scaleColor;\n ctx.fillStyle = scaleColor;\n ctx.font = input.font;\n ctx.lineWidth = 1;\n\n // Gridlines first so the axis + curve draw on top.\n if (gridlines) {\n ctx.save();\n ctx.globalAlpha = 0.18;\n ctx.setLineDash([2, 3]);\n ctx.beginPath();\n for (const tick of ticks) {\n const y = Math.round(tick.y) + 0.5;\n ctx.moveTo(0, y);\n ctx.lineTo(size.width, y);\n }\n ctx.stroke();\n ctx.setLineDash([]);\n ctx.restore();\n }\n\n // Axis line.\n ctx.globalAlpha = 0.7;\n ctx.beginPath();\n ctx.moveTo(lineX, yTop);\n ctx.lineTo(lineX, yBot);\n ctx.stroke();\n\n // Ticks + labels.\n const tickLen = 3;\n const tickInside = isStart ? lineX + tickLen : lineX - tickLen;\n const labelX = isStart ? lineX + tickLen + 3 : lineX - tickLen - 3;\n ctx.textAlign = isStart ? 'left' : 'right';\n for (const tick of ticks) {\n const y = Math.round(tick.y) + 0.5;\n ctx.beginPath();\n ctx.moveTo(lineX, y);\n ctx.lineTo(tickInside, y);\n ctx.stroke();\n ctx.textBaseline = tick.baseline;\n ctx.fillText(format(tick.value), labelX, tick.y);\n }\n ctx.restore();\n }\n const curve: CurveData = {\n keyframes: track.keyframes,\n domainX: [startFrame, endFrame],\n domainY: [range[0], range[1]],\n ...(track.infinity?.pre ? { preInfinity: track.infinity.pre } : {}),\n ...(track.infinity?.post ? { postInfinity: track.infinity.post } : {}),\n };\n const toX = (f: number): number => frameToX(f, view, size.width);\n\n if (track.keyframes.length > 0) {\n ctx.strokeStyle = accent;\n ctx.lineWidth = 1.5;\n ctx.beginPath();\n const samples = Math.max(2, Math.ceil(size.width / 3));\n // Visual safety net: clamp every sampled curve value to the track's\n // range so the line cannot escape the lane even if the data was loaded\n // with control points outside the range (the canonical guarantee comes\n // from clamping handles in `setKeyframeTangent`, but we still clip here\n // so legacy / unconstrained data renders cleanly).\n const lo = range[0];\n const hi = range[1];\n for (let s = 0; s <= samples; s += 1) {\n const px = (s / samples) * size.width;\n const raw = evaluateCurve(curve, xToFrame(px, view, size.width));\n const value = raw < lo ? lo : raw > hi ? hi : raw;\n const py = valueToY(value, range, top, rowH);\n if (s === 0) ctx.moveTo(px, py);\n else ctx.lineTo(px, py);\n }\n ctx.stroke();\n }\n\n // ── Tangent handles on the selected keyframe (CurveEditor-parity styling)\n for (const kf of track.keyframes) {\n if (kf.id === undefined || !isSelected(track.id, kf.id)) continue;\n if (kf.tangentMode === 'linear' || kf.tangentMode === 'step') continue;\n const x = toX(kf.x);\n if (x < -KEYFRAME_RADIUS * 4 || x > size.width + KEYFRAME_RADIUS * 4)\n continue;\n const y = valueToY(kf.y, range, top, rowH);\n const isAuto = kf.tangentMode === 'auto';\n const lineAlpha = isAuto ? 0.4 : 0.7;\n const dotRadius = isAuto ? 3 : 4;\n\n const drawHandle = (hx: number, hy: number): void => {\n ctx.save();\n ctx.globalAlpha = lineAlpha;\n ctx.strokeStyle = colors.rulerText;\n ctx.lineWidth = 1;\n ctx.setLineDash([3, 3]);\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(hx, hy);\n ctx.stroke();\n ctx.setLineDash([]);\n ctx.globalAlpha = 1;\n ctx.fillStyle = colors.rulerText;\n ctx.beginPath();\n ctx.arc(hx, hy, dotRadius, 0, Math.PI * 2);\n ctx.fill();\n ctx.restore();\n };\n\n drawHandle(\n toX(kf.x + kf.handleIn.x),\n valueToY(kf.y + kf.handleIn.y, range, top, rowH)\n );\n drawHandle(\n toX(kf.x + kf.handleOut.x),\n valueToY(kf.y + kf.handleOut.y, range, top, rowH)\n );\n }\n\n // ── Keyframe points (sized by selected / hovered state)\n for (const kf of track.keyframes) {\n const x = toX(kf.x);\n if (x < -KEYFRAME_RADIUS * 2 || x > size.width + KEYFRAME_RADIUS * 2)\n continue;\n const y = valueToY(kf.y, range, top, rowH);\n const selected = kf.id !== undefined && isSelected(track.id, kf.id);\n const hovered = kf.id !== undefined && isHovered(track.id, kf.id);\n const radius = hovered\n ? KEYFRAME_RADIUS + 2\n : selected\n ? KEYFRAME_RADIUS + 1\n : KEYFRAME_RADIUS - 0.5;\n\n ctx.beginPath();\n ctx.arc(x, y, radius, 0, Math.PI * 2);\n ctx.fillStyle = selected ? colors.keyframeSelected : accent;\n ctx.fill();\n ctx.lineWidth = selected ? 1.5 : 1;\n ctx.strokeStyle = colors.keyframeStroke;\n ctx.stroke();\n }\n}\n\n/**\n * Render a full dope-sheet frame: background → gridlines → ruler → track rows\n * → keyframes → caller `renderOverlay` → playhead. The caller is responsible\n * for DPR scaling on `ctx` before invoking.\n */\nexport function drawTimeline(input: TimelineDrawInput): void {\n const {\n ctx,\n size,\n view,\n startFrame,\n endFrame,\n fps,\n frame,\n rows,\n scrollTop,\n rulerHeight,\n showPlayhead,\n loopStripHeight = 0,\n loopHandles = 'edges',\n colors,\n font,\n formatTime,\n isSelected,\n renderOverlay,\n marquee,\n loopRegion,\n loopHover,\n } = input;\n\n const toX = (f: number): number => frameToX(f, view, size.width);\n\n ctx.clearRect(0, 0, size.width, size.height);\n ctx.fillStyle = colors.background;\n ctx.fillRect(0, 0, size.width, size.height);\n\n // ── Gridlines + ruler ticks ──\n const span = Math.max(1e-6, view.endFrame - view.startFrame);\n const framesPerPixel = span / Math.max(1, size.width);\n const step = niceFrameStep(framesPerPixel * MIN_LABEL_PX);\n const firstTick = Math.ceil(view.startFrame / step) * step;\n\n const chromeHeight = rulerHeight + loopStripHeight;\n\n ctx.lineWidth = 1;\n ctx.strokeStyle = colors.gridLine;\n ctx.beginPath();\n for (let f = firstTick; f <= view.endFrame; f += step) {\n const x = Math.round(toX(f)) + 0.5;\n ctx.moveTo(x, chromeHeight);\n ctx.lineTo(x, size.height);\n }\n ctx.stroke();\n\n if (rulerHeight > 0) {\n ctx.fillStyle = colors.rulerText;\n ctx.font = font;\n ctx.textBaseline = 'middle';\n ctx.textAlign = 'left';\n for (let f = firstTick; f <= view.endFrame; f += step) {\n const x = Math.round(toX(f));\n ctx.fillStyle = colors.gridLine;\n ctx.fillRect(x, rulerHeight - 5, 1, 5);\n ctx.fillStyle = colors.rulerText;\n ctx.fillText(formatTime(f, fps), x + 3, rulerHeight / 2);\n }\n ctx.fillStyle = colors.rowSeparator;\n ctx.fillRect(0, rulerHeight - 1, size.width, 1);\n }\n\n // ── Loop strip background (when enabled) ──\n if (loopStripHeight > 0) {\n ctx.save();\n ctx.fillStyle = colors.gridLine;\n ctx.globalAlpha = 0.35;\n ctx.fillRect(0, rulerHeight, size.width, loopStripHeight);\n ctx.globalAlpha = 1;\n ctx.fillStyle = colors.rowSeparator;\n ctx.fillRect(0, chromeHeight - 1, size.width, 1);\n ctx.restore();\n }\n\n // ── Loop region ──\n if (loopRegion) {\n const lx = toX(loopRegion.startFrame);\n const rx = toX(loopRegion.endFrame);\n ctx.save();\n ctx.fillStyle = colors.keyframeSelected;\n // Body fill (brighter when the body is hovered, hinting it's draggable).\n ctx.globalAlpha = loopHover === 'body' ? 0.12 : 0.06;\n ctx.fillRect(\n lx,\n chromeHeight,\n rx - lx,\n Math.max(0, size.height - chromeHeight)\n );\n if (rulerHeight > 0) {\n ctx.globalAlpha = loopHover === 'body' ? 0.3 : 0.22;\n ctx.fillRect(lx, 0, rx - lx, rulerHeight);\n }\n if (loopStripHeight > 0) {\n ctx.globalAlpha = loopHover === 'body' ? 0.45 : 0.32;\n ctx.fillRect(lx, rulerHeight, rx - lx, loopStripHeight);\n }\n // Edges — `edges` style draws full-height bars; `brackets` style draws\n // `[ ]` markers in the chrome with serifs at top and bottom, no\n // full-height bars.\n ctx.globalAlpha = 1;\n const startW = loopHover === 'start' ? 4 : 2;\n const endW = loopHover === 'end' ? 4 : 2;\n if (loopHover === 'start' || loopHover === 'end') {\n ctx.shadowColor = colors.keyframeSelected;\n ctx.shadowBlur = 6;\n }\n if (loopHandles === 'brackets') {\n const serif = 8;\n const serifH = 2;\n // start `[`\n ctx.fillRect(lx, 0, startW, chromeHeight);\n ctx.fillRect(lx, 0, serif, serifH);\n ctx.fillRect(lx, chromeHeight - serifH, serif, serifH);\n // end `]`\n ctx.fillRect(rx - endW, 0, endW, chromeHeight);\n ctx.fillRect(rx - serif, 0, serif, serifH);\n ctx.fillRect(rx - serif, chromeHeight - serifH, serif, serifH);\n } else {\n ctx.fillRect(lx, 0, startW, size.height);\n ctx.fillRect(rx - endW, 0, endW, size.height);\n }\n ctx.restore();\n }\n\n // ── Track rows + keyframes (clipped to the area below the chrome) ──\n ctx.save();\n ctx.beginPath();\n ctx.rect(\n 0,\n chromeHeight,\n size.width,\n Math.max(0, size.height - chromeHeight)\n );\n ctx.clip();\n\n for (const row of rows) {\n const top = chromeHeight + row.top - scrollTop;\n // Virtualize: skip rows scrolled out of the track area.\n if (top + row.height < chromeHeight || top > size.height) continue;\n\n if (row.kind === 'group') {\n ctx.fillStyle = colors.groupHeader;\n ctx.fillRect(0, top, size.width, row.height);\n ctx.fillStyle = colors.rowSeparator;\n ctx.fillRect(0, top + row.height - 1, size.width, 1);\n continue;\n }\n\n const track = row.track;\n const rowH = row.height;\n ctx.fillStyle = colors.rowSeparator;\n ctx.fillRect(0, top + rowH - 1, size.width, 1);\n\n const accent = track.color ?? colors.keyframe;\n if (row.graph) {\n drawGraphLane(input, track, top, rowH, accent, row.range);\n continue;\n }\n\n const centerY = top + rowH / 2;\n const hoveredAt = input.isHovered ?? ((): boolean => false);\n for (const kf of track.keyframes) {\n const x = toX(kf.x);\n if (x < -KEYFRAME_RADIUS * 2 || x > size.width + KEYFRAME_RADIUS * 2)\n continue;\n const selected = kf.id !== undefined && isSelected(track.id, kf.id);\n const hovered = kf.id !== undefined && hoveredAt(track.id, kf.id);\n const radius = hovered\n ? KEYFRAME_RADIUS + 2\n : selected\n ? KEYFRAME_RADIUS + 1\n : KEYFRAME_RADIUS;\n diamondPath(ctx, x, centerY, radius);\n ctx.fillStyle = selected ? colors.keyframeSelected : accent;\n ctx.fill();\n ctx.lineWidth = selected ? 1.5 : 1;\n ctx.strokeStyle = colors.keyframeStroke;\n ctx.stroke();\n }\n }\n\n if (renderOverlay) {\n const info: TimelineDrawInfo = {\n size,\n view,\n startFrame,\n endFrame,\n fps,\n frame,\n frameToX: toX,\n xToFrame: (x: number): number => xToFrame(x, view, size.width),\n };\n ctx.save();\n renderOverlay(ctx, info);\n ctx.restore();\n }\n\n ctx.restore();\n\n // ── Playhead ──\n if (showPlayhead) {\n const x = Math.round(toX(frame)) + 0.5;\n const hovered = input.playheadHovered === true;\n ctx.save();\n if (hovered) {\n ctx.shadowColor = colors.playhead;\n ctx.shadowBlur = 6;\n }\n ctx.strokeStyle = colors.playhead;\n ctx.lineWidth = hovered ? 1.5 : 1;\n ctx.beginPath();\n ctx.moveTo(x, 0);\n ctx.lineTo(x, size.height);\n ctx.stroke();\n ctx.restore();\n\n // Top handle (downward triangle in the ruler band) — bigger on hover so\n // the user can clearly see the grabbable head.\n const baseHead = Math.max(4, Math.min(7, rulerHeight - 2)) || 6;\n const head = hovered ? baseHead + 2 : baseHead;\n ctx.save();\n if (hovered) {\n ctx.shadowColor = colors.playhead;\n ctx.shadowBlur = 6;\n }\n ctx.fillStyle = colors.playhead;\n ctx.beginPath();\n ctx.moveTo(x - head, 0);\n ctx.lineTo(x + head, 0);\n ctx.lineTo(x, head);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n }\n\n // ── Marquee (box-select) ──\n if (marquee && (marquee.width > 0 || marquee.height > 0)) {\n ctx.save();\n ctx.globalAlpha = 0.12;\n ctx.fillStyle = colors.keyframeSelected;\n ctx.fillRect(marquee.x, marquee.y, marquee.width, marquee.height);\n ctx.globalAlpha = 1;\n ctx.strokeStyle = colors.keyframeSelected;\n ctx.lineWidth = 1;\n ctx.strokeRect(\n marquee.x + 0.5,\n marquee.y + 0.5,\n Math.max(0, marquee.width - 1),\n Math.max(0, marquee.height - 1)\n );\n ctx.restore();\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timelineEdits.js","sources":["../../../../../../src/components/editor/Timeline/timelineEdits.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timelineEdits.js","sources":["src/components/editor/Timeline/timelineEdits.ts"],"sourcesContent":["import { evaluateCurve } from '@/components/controls/CurveEditor';\n\nimport {\n autoValueRange,\n clamp,\n snapFrame,\n valueInset,\n yToValue,\n} from './timelineCoords';\nimport { selectionKey, selectionKeySet } from './timelineSelection';\n\nimport type {\n TimelineKeyframeRef,\n TimelineSelection,\n TimelineTrack,\n} from './Timeline.types';\nimport type { TrackGeometry } from './timelineLayout';\nimport type { CurveKeyframe, TangentMode } from '@/types/keyframe';\n\nlet idCounter = 0;\n\n/** Generate a stable, unique keyframe id. */\nexport function generateKeyframeId(): string {\n idCounter += 1;\n return `kf_${Date.now().toString(36)}_${idCounter}`;\n}\n\n/** Build a keyframe at `(frame, value)` with flat tangents. */\nexport function makeKeyframe(frame: number, value = 0): CurveKeyframe {\n return {\n id: generateKeyframeId(),\n x: frame,\n y: value,\n handleIn: { x: 0, y: 0 },\n handleOut: { x: 0, y: 0 },\n tangentMode: 'auto',\n };\n}\n\n/**\n * Pick the value (y) for a new keyframe inserted at a pointer position.\n * In a graph / expanded row, the click's pixel-y is converted back to a value\n * on the track's value axis (clamped to `valueRange`), so the new keyframe\n * lands exactly under the cursor. In a dope-sheet row (no visible y axis) the\n * new keyframe sits **on the existing curve** at the clicked frame so it\n * doesn't disturb the shape; with no existing keyframes it falls back to the\n * midpoint of the range.\n */\nexport function valueAtPointer(args: {\n pointerY: number;\n frame: number;\n track: TimelineTrack;\n geometry: TrackGeometry | undefined;\n rulerHeight: number;\n scrollTop: number;\n}): number {\n const { pointerY, frame, track, geometry, rulerHeight, scrollTop } = args;\n const range = geometry?.range ?? autoValueRange(track.keyframes);\n if (geometry?.graph) {\n const screenTop = rulerHeight + geometry.top - scrollTop;\n return clamp(\n yToValue(pointerY, range, screenTop, geometry.height),\n range[0],\n range[1]\n );\n }\n if (track.keyframes.length > 0) {\n return evaluateCurve(\n {\n keyframes: track.keyframes,\n domainX: [0, 1],\n domainY: [range[0], range[1]],\n },\n frame\n );\n }\n return (range[0] + range[1]) / 2;\n}\n\n/**\n * Move the selected keyframes by `deltaFrames` from the supplied (original)\n * track positions, snapping + clamping each to `[min, max]`. Pass the tracks\n * captured at drag-start so repeated calls don't accumulate drift.\n */\nexport function moveSelectedKeyframes(\n tracks: ReadonlyArray<TimelineTrack>,\n selection: TimelineSelection,\n deltaFrames: number,\n snap: boolean | number,\n min: number,\n max: number\n): TimelineTrack[] {\n const keys = selectionKeySet(selection);\n return tracks.map(track => {\n if (track.locked) return track;\n let changed = false;\n const keyframes = track.keyframes.map(kf => {\n if (\n kf.id === undefined ||\n !keys.has(selectionKey({ trackId: track.id, keyframeId: kf.id }))\n )\n return kf;\n changed = true;\n return { ...kf, x: clamp(snapFrame(kf.x + deltaFrames, snap), min, max) };\n });\n // `changed` is mutated inside the map callback above; TS narrows it to the\n // `false` literal because it can't track that mutation across the closure.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!changed) return track;\n keyframes.sort((a, b) => a.x - b.x);\n return { ...track, keyframes };\n });\n}\n\n/**\n * Graph-mode move: shifts selected keyframes by `deltaFrames` (x, snapped +\n * clamped) and by a pixel delta on the value axis, converted per track using\n * its row height + value range. Pass drag-start tracks so the range mapping\n * stays stable across the drag.\n */\nexport function moveSelectedKeyframesGraph(\n tracks: ReadonlyArray<TimelineTrack>,\n selection: TimelineSelection,\n deltaFrames: number,\n deltaYPixels: number,\n trackHeight: number,\n expandedHeight: number,\n snap: boolean | number,\n min: number,\n max: number\n): TimelineTrack[] {\n const keys = selectionKeySet(selection);\n return tracks.map(track => {\n if (track.locked) return track;\n const keyMatches = track.keyframes.some(\n kf =>\n kf.id !== undefined &&\n keys.has(selectionKey({ trackId: track.id, keyframeId: kf.id }))\n );\n if (!keyMatches) return track;\n const rowH =\n track.height ?? (track.expanded ? expandedHeight : trackHeight);\n const range = track.valueRange ?? autoValueRange(track.keyframes);\n const inset = valueInset(rowH);\n const usable = Math.max(1e-6, rowH - inset * 2);\n const valueDelta = -(deltaYPixels / usable) * (range[1] - range[0]);\n const keyframes = track.keyframes.map(kf => {\n if (\n kf.id === undefined ||\n !keys.has(selectionKey({ trackId: track.id, keyframeId: kf.id }))\n )\n return kf;\n return {\n ...kf,\n x: clamp(snapFrame(kf.x + deltaFrames, snap), min, max),\n y: clamp(kf.y + valueDelta, range[0], range[1]),\n };\n });\n keyframes.sort((a, b) => a.x - b.x);\n return { ...track, keyframes };\n });\n}\n\n/** Remove the selected keyframes from their tracks. */\nexport function removeSelectedKeyframes(\n tracks: ReadonlyArray<TimelineTrack>,\n selection: TimelineSelection\n): TimelineTrack[] {\n const keys = selectionKeySet(selection);\n return tracks.map(track => {\n const keyframes = track.keyframes.filter(\n kf =>\n kf.id === undefined ||\n !keys.has(selectionKey({ trackId: track.id, keyframeId: kf.id }))\n );\n return keyframes.length === track.keyframes.length\n ? track\n : { ...track, keyframes };\n });\n}\n\n/** Insert a keyframe into a track, keeping the track's keyframes sorted by x. */\nexport function addKeyframe(\n tracks: ReadonlyArray<TimelineTrack>,\n trackId: string,\n keyframe: CurveKeyframe\n): TimelineTrack[] {\n return tracks.map(track => {\n if (track.id !== trackId) return track;\n const keyframes = [...track.keyframes, keyframe].sort((a, b) => a.x - b.x);\n return { ...track, keyframes };\n });\n}\n\n/**\n * Apply a dragged tangent handle offset (domain units) to one keyframe,\n * honoring its tangent mode. `auto` / `linear` / `step` are promoted to\n * `aligned` on first drag; `aligned` keeps the opposite handle collinear at\n * its current length; `mirrored` makes it the exact opposite; `free` moves\n * only the dragged handle.\n */\nfunction applyTangent(\n kf: CurveKeyframe,\n which: 'in' | 'out',\n offset: { x: number; y: number }\n): CurveKeyframe {\n const mode =\n kf.tangentMode === 'auto' ||\n kf.tangentMode === 'linear' ||\n kf.tangentMode === 'step'\n ? 'aligned'\n : kf.tangentMode;\n\n let handleIn = which === 'in' ? offset : kf.handleIn;\n let handleOut = which === 'out' ? offset : kf.handleOut;\n\n if (mode === 'aligned' || mode === 'mirrored') {\n const draggedLen = Math.hypot(offset.x, offset.y);\n const other = which === 'in' ? kf.handleOut : kf.handleIn;\n const otherLen =\n mode === 'mirrored' ? draggedLen : Math.hypot(other.x, other.y);\n if (draggedLen > 1e-6) {\n const opposite = {\n x: (-offset.x / draggedLen) * otherLen,\n y: (-offset.y / draggedLen) * otherLen,\n };\n if (which === 'in') handleOut = opposite;\n else handleIn = opposite;\n }\n }\n\n return { ...kf, handleIn, handleOut, tangentMode: mode };\n}\n\n/**\n * Set the tangent mode on every selected keyframe. The mode interpretation\n * (how handles are read during draw / drag) happens elsewhere — this writes\n * the `tangentMode` field and leaves handle values alone, so flipping back\n * preserves them.\n */\nexport function setSelectedTangentMode(\n tracks: ReadonlyArray<TimelineTrack>,\n selection: TimelineSelection,\n mode: TangentMode\n): TimelineTrack[] {\n const keys = selectionKeySet(selection);\n return tracks.map(track => {\n if (track.locked) return track;\n let changed = false;\n const keyframes = track.keyframes.map(kf => {\n if (\n kf.id === undefined ||\n !keys.has(selectionKey({ trackId: track.id, keyframeId: kf.id }))\n )\n return kf;\n if (kf.tangentMode === mode) return kf;\n changed = true;\n return { ...kf, tangentMode: mode };\n });\n // `changed` is mutated inside the map callback; TS can't track that across\n // the closure and narrows it to the `false` literal.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return changed ? { ...track, keyframes } : track;\n });\n}\n\n/**\n * The tangent mode that's currently in effect for the selection — or\n * `'mixed'` when selected keyframes disagree, or `null` when nothing\n * applicable is selected. Lets a UI render the right toggle state.\n */\nexport function selectedTangentMode(\n tracks: ReadonlyArray<TimelineTrack>,\n selection: TimelineSelection\n): TangentMode | 'mixed' | null {\n if (selection.length === 0) return null;\n const byId = new Map(tracks.map(t => [t.id, t]));\n let mode: TangentMode | null = null;\n for (const ref of selection) {\n const t = byId.get(ref.trackId);\n if (!t) continue;\n const kf = t.keyframes.find(k => k.id === ref.keyframeId);\n if (!kf) continue;\n if (mode === null) mode = kf.tangentMode;\n else if (mode !== kf.tangentMode) return 'mixed';\n }\n return mode;\n}\n\n/** Set one keyframe's in/out tangent handle to a new offset (domain units). */\nexport function setKeyframeTangent(\n tracks: ReadonlyArray<TimelineTrack>,\n ref: TimelineKeyframeRef,\n which: 'in' | 'out',\n offset: { x: number; y: number }\n): TimelineTrack[] {\n return tracks.map(track => {\n if (track.id !== ref.trackId || track.locked) return track;\n let changed = false;\n const keyframes = track.keyframes.map(kf => {\n if (kf.id !== ref.keyframeId) return kf;\n changed = true;\n return applyTangent(kf, which, offset);\n });\n // `changed` is mutated inside the map callback; TS can't track that across\n // the closure and narrows it to the `false` literal.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return changed ? { ...track, keyframes } : track;\n });\n}\n\n/** Clipboard payload — selected keyframes captured relative to the earliest. */\nexport interface TimelineClipboard {\n entries: ReadonlyArray<{\n trackId: string;\n dx: number;\n keyframe: CurveKeyframe;\n }>;\n}\n\n/** Capture the selected keyframes into a clipboard payload (relative offsets). */\nexport function copySelectedKeyframes(\n tracks: ReadonlyArray<TimelineTrack>,\n selection: TimelineSelection\n): TimelineClipboard {\n const keys = selectionKeySet(selection);\n const picked: { trackId: string; keyframe: CurveKeyframe }[] = [];\n for (const track of tracks) {\n for (const kf of track.keyframes) {\n if (\n kf.id !== undefined &&\n keys.has(selectionKey({ trackId: track.id, keyframeId: kf.id }))\n ) {\n picked.push({ trackId: track.id, keyframe: kf });\n }\n }\n }\n if (picked.length === 0) return { entries: [] };\n // Avoid `Math.min(...spread)` — stack overflows at large selections.\n let base = Infinity;\n for (const p of picked) if (p.keyframe.x < base) base = p.keyframe.x;\n return {\n entries: picked.map(p => ({\n trackId: p.trackId,\n dx: p.keyframe.x - base,\n keyframe: p.keyframe,\n })),\n };\n}\n\n/**\n * Paste a clipboard payload at `atFrame`, preserving relative offsets and\n * assigning fresh ids. Skips locked / missing tracks. Returns the new tracks\n * plus refs to the pasted keyframes (for selecting them).\n */\nexport function pasteKeyframes(\n tracks: ReadonlyArray<TimelineTrack>,\n clipboard: TimelineClipboard,\n atFrame: number\n): { tracks: TimelineTrack[]; refs: TimelineKeyframeRef[] } {\n const validTracks = new Set(tracks.filter(t => !t.locked).map(t => t.id));\n const additions = new Map<string, CurveKeyframe[]>();\n const refs: TimelineKeyframeRef[] = [];\n for (const entry of clipboard.entries) {\n if (!validTracks.has(entry.trackId)) continue;\n const keyframe: CurveKeyframe = {\n ...entry.keyframe,\n id: generateKeyframeId(),\n x: atFrame + entry.dx,\n };\n refs.push({ trackId: entry.trackId, keyframeId: keyframe.id as string });\n const list = additions.get(entry.trackId) ?? [];\n list.push(keyframe);\n additions.set(entry.trackId, list);\n }\n const next = tracks.map(track => {\n const adds = additions.get(track.id);\n if (!adds) return track;\n const keyframes = [...track.keyframes, ...adds].sort((a, b) => a.x - b.x);\n return { ...track, keyframes };\n });\n return { tracks: next, refs };\n}\n\n/** Move a track from one full-array index to another. */\nexport function moveTrack(\n tracks: ReadonlyArray<TimelineTrack>,\n fromIndex: number,\n toIndex: number\n): TimelineTrack[] {\n const next = tracks.slice();\n const [moved] = next.splice(fromIndex, 1);\n if (!moved) return next;\n next.splice(Math.max(0, Math.min(next.length, toIndex)), 0, moved);\n return next;\n}\n\n/**\n * Reorder from a header drag: move the dragged track to a gap among the\n * visible rows (`dropVisibleIndex` in `[0, visibleCount]`). Maps visible gaps\n * back to full-array indices and corrects for forward moves.\n */\nexport function reorderTracksByDrop(\n tracks: ReadonlyArray<TimelineTrack>,\n draggingId: string,\n dropVisibleIndex: number\n): TimelineTrack[] {\n const fromFull = tracks.findIndex(t => t.id === draggingId);\n if (fromFull < 0) return tracks.slice();\n const visible = tracks.filter(t => !t.hidden);\n let gapFull: number;\n if (dropVisibleIndex >= visible.length) {\n gapFull = tracks.length;\n } else {\n const target = visible[dropVisibleIndex];\n gapFull = target\n ? tracks.findIndex(t => t.id === target.id)\n : tracks.length;\n }\n const toIndex = fromFull < gapFull ? gapFull - 1 : gapFull;\n return moveTrack(tracks, fromFull, toIndex);\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timelineHitTest.js","sources":["../../../../../../src/components/editor/Timeline/timelineHitTest.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timelineHitTest.js","sources":["src/components/editor/Timeline/timelineHitTest.ts"],"sourcesContent":["import { frameToX, valueToY } from './timelineCoords';\n\nimport type { TimelineKeyframeRef, TimelineView } from './Timeline.types';\nimport type { TimelineRow } from './timelineLayout';\nimport type { Point2D } from '@/components/primitives/canvas/canvas.types';\nimport type { ViewportSize } from '@/components/primitives/viewport';\n\n/** Axis-aligned rectangle in content-space (CSS-pixel) coordinates. */\nexport interface TimelineScreenRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport type TimelineHit =\n | { kind: 'ruler' }\n | { kind: 'loop-strip' }\n | { kind: 'playhead' }\n | { kind: 'loop-start' }\n | { kind: 'loop-end' }\n | { kind: 'loop-body' }\n | { kind: 'group'; groupId: string }\n | { kind: 'keyframe'; trackId: string; keyframeId: string }\n | {\n kind: 'tangent';\n trackId: string;\n keyframeId: string;\n which: 'in' | 'out';\n }\n | { kind: 'empty'; trackId: string }\n | { kind: 'outside' };\n\nexport interface TimelineHitInput {\n /** Pointer position in track-area CSS px (relative to the body top-left). */\n point: Point2D;\n view: TimelineView;\n size: ViewportSize;\n /** Pre-computed rows (group headers + track lanes). */\n rows: ReadonlyArray<TimelineRow>;\n scrollTop: number;\n rulerHeight: number;\n /** Height of the dedicated loop strip directly below the ruler (0 = off). */\n loopStripHeight?: number;\n /**\n * Bracket-style edges get a wider pick zone (looks like `[ ]`); the default\n * is the thin vertical-bar style.\n */\n loopHandles?: 'edges' | 'brackets';\n frame: number;\n showPlayhead: boolean;\n /** Selection predicate — enables tangent-handle picking in graph mode. */\n isSelected?: (trackId: string, keyframeId: string) => boolean;\n /** Resolved loop region — enables loop-edge / body picking on the ruler. */\n loopRegion?: { startFrame: number; endFrame: number } | null;\n}\n\nconst KEYFRAME_PICK_X = 6;\nconst PLAYHEAD_PICK_X = 4;\nconst HANDLE_PICK_X = 6;\nconst LOOP_EDGE_PICK_X = 5;\nconst LOOP_BRACKET_PICK_X = 9;\n\n/**\n * Resolve what's under a pointer: ruler / loop handles, a group header, a\n * keyframe, a graph tangent handle, an empty track row, or outside. Works in\n * content space (scroll-adjusted), iterating the pre-computed rows.\n */\nexport function hitTestTimeline(input: TimelineHitInput): TimelineHit {\n const { point, view, size, rows, scrollTop, rulerHeight } = input;\n const toX = (f: number): number => frameToX(f, view, size.width);\n\n const playheadX = input.showPlayhead ? toX(input.frame) : null;\n // The playhead line is grabbable along its whole height. The head (ruler\n // band) gets a wider pick zone so the triangle is easy to grab.\n const nearPlayheadHead =\n playheadX !== null && Math.abs(point.x - playheadX) <= PLAYHEAD_PICK_X + 4;\n const nearPlayheadBody =\n playheadX !== null && Math.abs(point.x - playheadX) <= PLAYHEAD_PICK_X;\n\n const loopStripHeight = input.loopStripHeight ?? 0;\n const chromeHeight = rulerHeight + loopStripHeight;\n const edgePick =\n input.loopHandles === 'brackets' ? LOOP_BRACKET_PICK_X : LOOP_EDGE_PICK_X;\n\n // Chrome zone (ruler + optional loop strip): both bands share loop-edge /\n // loop-body picking; the ruler band falls back to `ruler` (scrub), the\n // strip band falls back to `loop-strip` (plain-drag loop create).\n if (point.y < chromeHeight) {\n const inRuler = point.y < rulerHeight;\n const loop = input.loopRegion;\n if (loop) {\n const lx = toX(loop.startFrame);\n const rx = toX(loop.endFrame);\n // Loop edges are deliberate small targets → they win over the playhead.\n if (Math.abs(point.x - lx) <= edgePick) return { kind: 'loop-start' };\n if (Math.abs(point.x - rx) <= edgePick) return { kind: 'loop-end' };\n // The playhead line beats the (wide) loop body so it stays grabbable\n // even when it sits inside the loop region.\n if (nearPlayheadHead) return { kind: 'playhead' };\n if (point.x > lx && point.x < rx) return { kind: 'loop-body' };\n } else if (nearPlayheadHead) {\n return { kind: 'playhead' };\n }\n return inRuler ? { kind: 'ruler' } : { kind: 'loop-strip' };\n }\n\n const contentY = point.y - chromeHeight + scrollTop;\n const nearPlayhead = nearPlayheadBody;\n\n for (const row of rows) {\n if (contentY < row.top || contentY >= row.top + row.height) continue;\n // The playhead line is grabbable over group-header rows too (it spans the\n // full height), but only on its thin pick band so the rest of the header\n // still toggles collapse.\n if (row.kind === 'group') {\n if (nearPlayhead) return { kind: 'playhead' };\n return { kind: 'group', groupId: row.group.id };\n }\n\n const track = row.track;\n const { top, height: rowH } = row;\n const range = row.graph ? row.range : null;\n const centerY = top + rowH / 2;\n\n if (range && input.isSelected) {\n const pickRadiusSq = HANDLE_PICK_X * HANDLE_PICK_X;\n for (const kf of track.keyframes) {\n if (kf.id === undefined || !input.isSelected(track.id, kf.id)) continue;\n if (kf.tangentMode === 'linear' || kf.tangentMode === 'step') continue;\n const inX = toX(kf.x + kf.handleIn.x);\n const inY = valueToY(kf.y + kf.handleIn.y, range, top, rowH);\n const inDx = point.x - inX;\n const inDy = contentY - inY;\n if (inDx * inDx + inDy * inDy <= pickRadiusSq) {\n return {\n kind: 'tangent',\n trackId: track.id,\n keyframeId: kf.id,\n which: 'in',\n };\n }\n const outX = toX(kf.x + kf.handleOut.x);\n const outY = valueToY(kf.y + kf.handleOut.y, range, top, rowH);\n const outDx = point.x - outX;\n const outDy = contentY - outY;\n if (outDx * outDx + outDy * outDy <= pickRadiusSq) {\n return {\n kind: 'tangent',\n trackId: track.id,\n keyframeId: kf.id,\n which: 'out',\n };\n }\n }\n }\n\n for (const kf of track.keyframes) {\n if (kf.id === undefined) continue;\n const x = toX(kf.x);\n if (Math.abs(point.x - x) > KEYFRAME_PICK_X) continue;\n const py = range ? valueToY(kf.y, range, top, rowH) : centerY;\n const yTol = range ? KEYFRAME_PICK_X : rowH / 2;\n if (Math.abs(contentY - py) <= yTol) {\n return { kind: 'keyframe', trackId: track.id, keyframeId: kf.id };\n }\n }\n\n if (nearPlayhead) return { kind: 'playhead' };\n return { kind: 'empty', trackId: track.id };\n }\n\n if (nearPlayhead) return { kind: 'playhead' };\n return { kind: 'outside' };\n}\n\n/**\n * All keyframes whose center falls inside a content-space marquee rectangle.\n * Used for box selection.\n */\nexport function keyframesInRect(\n rect: TimelineScreenRect,\n view: TimelineView,\n size: ViewportSize,\n rows: ReadonlyArray<TimelineRow>\n): TimelineKeyframeRef[] {\n const x0 = Math.min(rect.x, rect.x + rect.width);\n const x1 = Math.max(rect.x, rect.x + rect.width);\n const y0 = Math.min(rect.y, rect.y + rect.height);\n const y1 = Math.max(rect.y, rect.y + rect.height);\n const toX = (f: number): number => frameToX(f, view, size.width);\n const result: TimelineKeyframeRef[] = [];\n\n for (const row of rows) {\n if (row.kind !== 'track') continue;\n const { track, top, height } = row;\n const range = row.graph ? row.range : null;\n const centerY = top + height / 2;\n for (const kf of track.keyframes) {\n if (kf.id === undefined) continue;\n const x = toX(kf.x);\n if (x < x0 || x > x1) continue;\n const py = range ? valueToY(kf.y, range, top, height) : centerY;\n if (py >= y0 && py <= y1) {\n result.push({ trackId: track.id, keyframeId: kf.id });\n }\n }\n }\n\n return result;\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timelineLayout.js","sources":["../../../../../../src/components/editor/Timeline/timelineLayout.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAkDA;;;;;;AAMG;AACG,SAAU,WAAW,CACzB,MAAoC,EACpC,IAAsB,EAAA;IAEtB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU;IAC9B,MAAM,IAAI,GAAkB,EAAE;AAC9B,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB;IAClD,IAAI,GAAG,GAAG,CAAC;AAEX,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IAAI,KAAK,CAAC,MAAM;YAAE;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS;AACtE,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxE,YAAA,GAAG,IAAI,IAAI,CAAC,iBAAiB;QAC/B;QACA,IAAI,KAAK,EAAE,SAAS;YAAE;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ;QAClD,MAAM,MAAM,GACV,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AAC3E,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;QACjE,MAAM,IAAI,GAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9D,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC;QAC7B,GAAG,IAAI,MAAM;IACf;IAEA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE;AAChD;;;;"}
1
+ {"version":3,"file":"timelineLayout.js","sources":["src/components/editor/Timeline/timelineLayout.ts"],"sourcesContent":["import { autoValueRange } from './timelineCoords';\n\nimport type { TimelineGroup, TimelineTrack } from './Timeline.types';\n\n/** A rendered track lane. */\nexport interface TimelineTrackRow {\n kind: 'track';\n track: TimelineTrack;\n /** Top in content space (before scroll), CSS px. */\n top: number;\n height: number;\n /** Render as a graph (curve) lane. */\n graph: boolean;\n /** Cached value range — `track.valueRange` or auto-fit from keyframes. */\n range: readonly [number, number];\n}\n\n/** A group header row. */\nexport interface TimelineGroupRow {\n kind: 'group';\n group: TimelineGroup;\n top: number;\n height: number;\n}\n\nexport type TimelineRow = TimelineTrackRow | TimelineGroupRow;\n\nexport interface RowLayoutOptions {\n trackHeight: number;\n expandedHeight: number;\n groupHeaderHeight: number;\n /** Global graph mode (each track also graphs when `track.expanded`). */\n globalGraph: boolean;\n groups: ReadonlyArray<TimelineGroup>;\n}\n\nexport interface TrackGeometry {\n top: number;\n height: number;\n graph: boolean;\n range: readonly [number, number];\n}\n\nexport interface RowLayout {\n rows: TimelineRow[];\n /** Per-track content-space geometry, for keyframe positioning + hit-testing. */\n trackTops: Map<string, TrackGeometry>;\n contentHeight: number;\n}\n\n/**\n * Flatten tracks into the rendered row list: a group header before the first\n * visible member of each group (collapsing hides its members), then each\n * non-hidden track at its (variable) height — taller when graph-expanded.\n * With no groups and no expanded tracks the layout is the uniform grid\n * `index * trackHeight`.\n */\nexport function computeRows(\n tracks: ReadonlyArray<TimelineTrack>,\n opts: RowLayoutOptions\n): RowLayout {\n const groupById = new Map(opts.groups.map(g => [g.id, g]));\n const seen = new Set<string>();\n const rows: TimelineRow[] = [];\n const trackTops = new Map<string, TrackGeometry>();\n let top = 0;\n\n for (const track of tracks) {\n if (track.hidden) continue;\n const group = track.groupId ? groupById.get(track.groupId) : undefined;\n if (group && !seen.has(group.id)) {\n seen.add(group.id);\n rows.push({ kind: 'group', group, top, height: opts.groupHeaderHeight });\n top += opts.groupHeaderHeight;\n }\n if (group?.collapsed) continue;\n const graph = opts.globalGraph || !!track.expanded;\n const height =\n track.height ?? (track.expanded ? opts.expandedHeight : opts.trackHeight);\n const range = track.valueRange ?? autoValueRange(track.keyframes);\n const geom: TrackGeometry = { top, height, graph, range };\n rows.push({ kind: 'track', track, top, height, graph, range });\n trackTops.set(track.id, geom);\n top += height;\n }\n\n return { rows, trackTops, contentHeight: top };\n}\n"],"names":[],"mappings":";;AAkDA;;;;;;AAMG;AACG,SAAU,WAAW,CACzB,MAAoC,EACpC,IAAsB,EAAA;IAEtB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU;IAC9B,MAAM,IAAI,GAAkB,EAAE;AAC9B,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB;IAClD,IAAI,GAAG,GAAG,CAAC;AAEX,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IAAI,KAAK,CAAC,MAAM;YAAE;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS;AACtE,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxE,YAAA,GAAG,IAAI,IAAI,CAAC,iBAAiB;QAC/B;QACA,IAAI,KAAK,EAAE,SAAS;YAAE;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ;QAClD,MAAM,MAAM,GACV,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AAC3E,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;QACjE,MAAM,IAAI,GAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9D,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC;QAC7B,GAAG,IAAI,MAAM;IACf;IAEA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE;AAChD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"timelineSelection.js","sources":["../../../../../../src/components/editor/Timeline/timelineSelection.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,GAAG;AAErB;AACM,SAAU,YAAY,CAAC,GAAwB,EAAA;IACnD,OAAO,CAAA,EAAG,GAAG,CAAC,OAAO,CAAA,EAAG,SAAS,CAAA,EAAG,GAAG,CAAC,UAAU,CAAA,CAAE;AACtD;AAEA;AACM,SAAU,eAAe,CAAC,SAA4B,EAAA;AAC1D,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU;IAC7B,KAAK,MAAM,GAAG,IAAI,SAAS;QAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvD,IAAA,OAAO,GAAG;AACZ;AAEA;AACM,SAAU,OAAO,CACrB,CAAsB,EACtB,CAAsB,EAAA;AAEtB,IAAA,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;AACjE;;;;"}
1
+ {"version":3,"file":"timelineSelection.js","sources":["src/components/editor/Timeline/timelineSelection.ts"],"sourcesContent":["import type { TimelineKeyframeRef, TimelineSelection } from './Timeline.types';\n\nconst SEPARATOR = '\u0000';\n\n/** Stable string key for a keyframe ref — safe for Set lookups. */\nexport function selectionKey(ref: TimelineKeyframeRef): string {\n return `${ref.trackId}${SEPARATOR}${ref.keyframeId}`;\n}\n\n/** Build a Set of selection keys for O(1) membership tests. */\nexport function selectionKeySet(selection: TimelineSelection): Set<string> {\n const set = new Set<string>();\n for (const ref of selection) set.add(selectionKey(ref));\n return set;\n}\n\n/** Structural equality of two keyframe refs. */\nexport function sameRef(\n a: TimelineKeyframeRef,\n b: TimelineKeyframeRef\n): boolean {\n return a.trackId === b.trackId && a.keyframeId === b.keyframeId;\n}\n"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,GAAG;AAErB;AACM,SAAU,YAAY,CAAC,GAAwB,EAAA;IACnD,OAAO,CAAA,EAAG,GAAG,CAAC,OAAO,CAAA,EAAG,SAAS,CAAA,EAAG,GAAG,CAAC,UAAU,CAAA,CAAE;AACtD;AAEA;AACM,SAAU,eAAe,CAAC,SAA4B,EAAA;AAC1D,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU;IAC7B,KAAK,MAAM,GAAG,IAAI,SAAS;QAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvD,IAAA,OAAO,GAAG;AACZ;AAEA;AACM,SAAU,OAAO,CACrB,CAAsB,EACtB,CAAsB,EAAA;AAEtB,IAAA,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;AACjE;;;;"}
@@ -6,7 +6,7 @@ import { useLatest } from '../../../hooks/useLatest/useLatest.js';
6
6
  import '../../../hooks/useBreakpoint/useBreakpoint.js';
7
7
  import { vars } from '../../../theme/contract.css.js';
8
8
  import './../../../assets/src/theme/lightTheme.css.ts.vanilla-Ct6f9Iym.css';
9
- import '../../../node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js';
9
+ import '@vanilla-extract/css';
10
10
  import './../../../assets/src/theme/darkTheme.css.ts.vanilla-BHZ3ecRn.css';
11
11
  import 'react/jsx-runtime';
12
12
  import './../../../assets/src/theme/globalScrollbars.css.ts.vanilla-BAJwnUEJ.css';
@@ -1 +1 @@
1
- {"version":3,"file":"useTimelineDraw.js","sources":["../../../../../../src/components/editor/Timeline/useTimelineDraw.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqDA;;;;;;AAMG;AACG;AACJ;;;;AAMA;AACE;AACA;AACE;AACA;;;AAEA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACE;AACA;;AAEF;AAEA;;AAIA;;;AAIE;AACA;AACA;AACA;AACA;AACA;;;AAOA;;;AAIF;AAEA;;;;;;;;;;;;;;;AAeE;AACA;;;;;AAQE;AACI;AACE;AACA;AAEE;AACF;AACA;AACA;AACA;;;AAGD;AACF;;AAEL;;;;AAOD;AACH;;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGD;;AAGC;AACA;AACE;AACF;AACF;;;;;AAKE;;AAIE;AACF;AACA;AACA;AACE;AACF;AACF;AACF;;"}
1
+ {"version":3,"file":"useTimelineDraw.js","sources":["src/components/editor/Timeline/useTimelineDraw.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { resolveVarValue } from '@/components/primitives/canvas/canvasTheme';\nimport { useLatest } from '@/hooks';\nimport { vars } from '@/theme/contract.css';\n\nimport { framesToTimecode } from './timelineCoords';\nimport { drawTimeline } from './timelineDrawing';\nimport { selectionKey, selectionKeySet } from './timelineSelection';\n\nimport type {\n TimelineDrawInfo,\n TimelineSelection,\n TimelineTrackScaleProps,\n TimelineView,\n} from './Timeline.types';\nimport type { TimelineDrawColors } from './timelineDrawing';\nimport type { TimelineRow } from './timelineLayout';\nimport type { ViewportSize } from '@/components/primitives/viewport';\nimport type React from 'react';\n\nexport interface UseTimelineDrawOptions {\n canvasRef: React.RefObject<HTMLCanvasElement | null>;\n size: ViewportSize;\n view: TimelineView;\n startFrame: number;\n endFrame: number;\n fps: number;\n frame: number;\n rows: ReadonlyArray<TimelineRow>;\n scrollTop: number;\n rulerHeight: number;\n loopStripHeight: number;\n loopHandles: 'edges' | 'brackets';\n showPlayhead: boolean;\n selection: TimelineSelection;\n hover: { trackId: string; keyframeId: string } | null;\n hoverPlayhead: boolean;\n marquee: { x: number; y: number; width: number; height: number } | null;\n loopRegion: { startFrame: number; endFrame: number } | null;\n loopHover: 'start' | 'end' | 'body' | null;\n backgroundColor?: string;\n playheadColor?: string;\n trackScale?: TimelineTrackScaleProps;\n renderOverlay?: (\n ctx: CanvasRenderingContext2D,\n info: TimelineDrawInfo\n ) => void;\n formatTime?: (frame: number, fps: number) => string;\n}\n\n/**\n * Schedules a canvas redraw via `requestAnimationFrame`, resolves theme\n * tokens per-frame so the live theme is respected, and re-runs on any\n * input change. `renderOverlay` / `formatTime` are read through `useLatest`\n * refs so consumer inline functions don't invalidate the draw schedule\n * (component-patterns.md rule #3).\n */\nexport function useTimelineDraw(opts: UseTimelineDrawOptions): void {\n const rafRef = useRef<number>(0);\n\n // Consumer callbacks — read live without invalidating `scheduleDraw`.\n const renderOverlayRef = useLatest(opts.renderOverlay);\n const formatTimeRef = useLatest(opts.formatTime);\n\n const scheduleDraw = useCallback((): void => {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = requestAnimationFrame(() => {\n const canvas = opts.canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const w = Math.max(1, opts.size.width);\n const h = Math.max(1, opts.size.height);\n const dpr =\n typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n const targetW = Math.max(1, Math.round(w * dpr));\n const targetH = Math.max(1, Math.round(h * dpr));\n if (canvas.width !== targetW || canvas.height !== targetH) {\n canvas.width = targetW;\n canvas.height = targetH;\n }\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n\n const fontPx =\n parseFloat(resolveVarValue(canvas, vars.typography.fontSize.xs)) || 10;\n const family = getComputedStyle(canvas).fontFamily || 'sans-serif';\n\n const colors: TimelineDrawColors = {\n background:\n opts.backgroundColor ??\n resolveVarValue(canvas, vars.colors.background.secondary),\n gridLine: resolveVarValue(canvas, vars.colors.border.default),\n rulerText: resolveVarValue(canvas, vars.colors.text.muted),\n rowSeparator: resolveVarValue(canvas, vars.colors.border.default),\n keyframe: resolveVarValue(canvas, vars.colors.accent.secondary),\n keyframeSelected: resolveVarValue(canvas, vars.colors.accent.primary),\n keyframeStroke: resolveVarValue(\n canvas,\n vars.colors.background.secondary\n ),\n playhead:\n opts.playheadColor ??\n resolveVarValue(canvas, vars.colors.accent.primary),\n groupHeader: resolveVarValue(canvas, vars.colors.background.elevated),\n };\n\n const selKeys = selectionKeySet(opts.selection);\n const hover = opts.hover;\n\n drawTimeline({\n ctx,\n size: { width: w, height: h },\n view: opts.view,\n startFrame: opts.startFrame,\n endFrame: opts.endFrame,\n fps: opts.fps,\n frame: opts.frame,\n rows: opts.rows,\n scrollTop: opts.scrollTop,\n rulerHeight: opts.rulerHeight,\n loopStripHeight: opts.loopStripHeight,\n loopHandles: opts.loopHandles,\n showPlayhead: opts.showPlayhead,\n colors,\n font: `${fontPx}px ${family}`,\n formatTime: (f: number, fps: number): string =>\n (formatTimeRef.current ?? framesToTimecode)(f, fps),\n isSelected: (t, k) =>\n selKeys.has(selectionKey({ trackId: t, keyframeId: k })),\n isHovered: (t, k) =>\n hover !== null && hover.trackId === t && hover.keyframeId === k,\n playheadHovered: opts.hoverPlayhead,\n ...(opts.trackScale\n ? {\n trackScale: {\n position: opts.trackScale.position ?? 'start',\n format:\n opts.trackScale.format ??\n ((v: number) => Number(v.toFixed(2)).toString()),\n showMidpoint: opts.trackScale.showMidpoint ?? false,\n gridlines: opts.trackScale.gridlines ?? false,\n minLaneHeight: opts.trackScale.minLaneHeight ?? 48,\n ...(opts.trackScale.color\n ? { color: opts.trackScale.color }\n : {}),\n },\n }\n : {}),\n renderOverlay: (\n ctx: CanvasRenderingContext2D,\n info: TimelineDrawInfo\n ): void => renderOverlayRef.current?.(ctx, info),\n marquee: opts.marquee,\n loopRegion: opts.loopRegion,\n loopHover: opts.loopHover,\n });\n });\n // `renderOverlayRef` / `formatTimeRef` are stable refs from `useLatest`.\n }, [\n opts.canvasRef,\n opts.size,\n opts.view,\n opts.startFrame,\n opts.endFrame,\n opts.fps,\n opts.frame,\n opts.rows,\n opts.scrollTop,\n opts.rulerHeight,\n opts.loopStripHeight,\n opts.loopHandles,\n opts.showPlayhead,\n opts.selection,\n opts.hover,\n opts.hoverPlayhead,\n opts.marquee,\n opts.loopRegion,\n opts.loopHover,\n opts.backgroundColor,\n opts.playheadColor,\n opts.trackScale,\n formatTimeRef,\n renderOverlayRef,\n ]);\n\n useLayoutEffect(() => {\n scheduleDraw();\n return () => {\n cancelAnimationFrame(rafRef.current);\n };\n }, [scheduleDraw]);\n\n // Redraw when DPR changes (e.g. dragging to a different display).\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const mq = window.matchMedia(\n `(resolution: ${window.devicePixelRatio}dppx)`\n );\n const handler = (): void => {\n scheduleDraw();\n };\n mq.addEventListener('change', handler);\n return () => {\n mq.removeEventListener('change', handler);\n };\n }, [scheduleDraw]);\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqDA;;;;;;AAMG;AACG;AACJ;;;;AAMA;AACE;AACA;AACE;AACA;;;AAEA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACE;AACA;;AAEF;AAEA;;AAIA;;;AAIE;AACA;AACA;AACA;AACA;AACA;;;AAOA;;;AAIF;AAEA;;;;;;;;;;;;;;;AAeE;AACA;;;;;AAQE;AACI;AACE;AACA;AAEE;AACF;AACA;AACA;AACA;;;AAGD;AACF;;AAEL;;;;AAOD;AACH;;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGD;;AAGC;AACA;AACE;AACF;AACF;;;;;AAKE;;AAIE;AACF;AACA;AACA;AACE;AACF;AACF;AACF;;"}
@@ -4,7 +4,7 @@ import '../../../utils/devWarn.js';
4
4
  import { useLatest } from '../../../hooks/useLatest/useLatest.js';
5
5
  import '../../../hooks/useBreakpoint/useBreakpoint.js';
6
6
  import './../../../assets/src/theme/lightTheme.css.ts.vanilla-Ct6f9Iym.css';
7
- import '../../../node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js';
7
+ import '@vanilla-extract/css';
8
8
  import './../../../assets/src/theme/darkTheme.css.ts.vanilla-BHZ3ecRn.css';
9
9
  import 'react/jsx-runtime';
10
10
  import './../../../assets/src/theme/globalScrollbars.css.ts.vanilla-BAJwnUEJ.css';