@dailies-studio/shot-editor 0.1.0 → 0.2.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 (432) hide show
  1. package/dist/.vite/manifest.json +382 -0
  2. package/dist/assets/AgentPanel-CQejLbiX.js +2 -0
  3. package/dist/assets/AgentPanel-DJEphah0.css +1 -0
  4. package/dist/assets/AgentQuestionDialog-BqkD0kXF.js +1 -0
  5. package/dist/assets/CodeStudio-Dv4ihHpz.js +23 -0
  6. package/dist/assets/CommentsPanel-B4yhhT1T.js +1 -0
  7. package/dist/assets/ComponentLibraryRail-Ch_dsAru.js +1 -0
  8. package/dist/assets/ComponentStage-BRhRotyH.js +1 -0
  9. package/dist/assets/CurvePane-BjFVabKX.css +1 -0
  10. package/dist/assets/CurvePane-R22WzllJ.js +1 -0
  11. package/dist/assets/ExportDialog-CWLQWTmG.js +2 -0
  12. package/dist/assets/FontPicker-DWKaYL7F.js +1 -0
  13. package/dist/assets/FontPicker-v0IOIArM.css +1 -0
  14. package/dist/assets/GenerateDrawer-Bh3SqDKt.js +2 -0
  15. package/dist/assets/InsertDrawer-Ce1fod1L.js +1 -0
  16. package/dist/assets/LibraryBrowser-D9sEGz5w.js +2 -0
  17. package/dist/assets/MakeItYoursSection-CMO4319_.js +2 -0
  18. package/dist/assets/MaterialGraphCanvas-BFzl4wWR.js +23 -0
  19. package/dist/assets/MaterialGraphCanvas-BIUD59ik.css +1 -0
  20. package/dist/assets/MaterialWorkspace-CqTWqaRA.js +14 -0
  21. package/dist/assets/PreferencesDialog-CBf9_OoD.js +1 -0
  22. package/dist/assets/PresetsSection-CUEaoCVU.js +1 -0
  23. package/dist/assets/SoundHistory-BeS8EW1h.js +1 -0
  24. package/dist/assets/SoundMode-BmcZru3i.js +3 -0
  25. package/dist/assets/StockSounds-DdAUGRYK.js +1 -0
  26. package/dist/assets/TemplateFieldSection-CaeXpLFo.js +1 -0
  27. package/dist/assets/VersionHistoryPanel-CxG6XhNP.js +1 -0
  28. package/dist/assets/board-B88EPuLO.css +1 -0
  29. package/dist/assets/board-CL-he7SL.js +3 -0
  30. package/dist/assets/components-0oOSPN0l.js +1 -0
  31. package/dist/assets/googleFontRanges-gp32wJMo.js +1 -0
  32. package/dist/assets/googleFonts-BNon6M7X.js +1 -0
  33. package/dist/assets/iconsAndAliases-DL7gXP5j.js +1863 -0
  34. package/dist/assets/index-4F5NQmI8.css +1 -0
  35. package/dist/assets/index-BGHQGV5z.js +117 -0
  36. package/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  37. package/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  38. package/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  39. package/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  40. package/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  41. package/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  42. package/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  43. package/dist/assets/libraryModel-CpIwfFha.js +1 -0
  44. package/dist/assets/lucide-6iK64tTB.js +9319 -0
  45. package/dist/assets/motionStamp-CH-Hew4E.js +1 -0
  46. package/dist/assets/takeMeasure-Tdg0TxEi.js +1 -0
  47. package/dist/assets/webmcp-BsB9gxWC.js +2 -0
  48. package/dist/index.html +34 -3
  49. package/package.json +12 -9
  50. package/src/addFamilies.ts +66 -0
  51. package/src/api.ts +1631 -55
  52. package/src/app/App.tsx +977 -198
  53. package/src/app/lazyPanel.tsx +137 -0
  54. package/src/app/lazySurfaces.tsx +203 -0
  55. package/src/audio/index.tsx +41 -10
  56. package/src/audio/meter.ts +485 -0
  57. package/src/audio/meterMath.ts +273 -0
  58. package/src/audio/meterStore.ts +155 -0
  59. package/src/audio/offlineMix.ts +289 -0
  60. package/src/audio/preview.ts +928 -118
  61. package/src/bridge.ts +15 -5
  62. package/src/bridgeTypes.ts +1611 -36
  63. package/src/channels.ts +17 -32
  64. package/src/fonts/googleFonts.ts +4 -0
  65. package/src/hostApi.ts +174 -0
  66. package/src/icons.tsx +770 -0
  67. package/src/layerWords.ts +61 -0
  68. package/src/main.tsx +56 -4
  69. package/src/panels/ResizeHandle.tsx +33 -43
  70. package/src/panels/agent/AgentDots.tsx +36 -0
  71. package/src/panels/agent/AgentPanel.tsx +119 -43
  72. package/src/panels/agent/AgentQuestionDialog.tsx +202 -0
  73. package/src/panels/agent/agent.css +113 -97
  74. package/src/panels/agent/agentGate.ts +35 -0
  75. package/src/panels/code/CodeDefaultsPanel.tsx +345 -0
  76. package/src/panels/code/CodeStudio.tsx +373 -0
  77. package/src/panels/code/FileTree.tsx +265 -0
  78. package/src/panels/code/codeBufferGuard.ts +52 -0
  79. package/src/panels/code/codeParts.tsx +321 -0
  80. package/src/panels/comments/CommentComposer.tsx +239 -0
  81. package/src/panels/comments/CommentThread.tsx +346 -0
  82. package/src/panels/comments/CommentsPanel.tsx +336 -0
  83. package/src/panels/comments/InboxButton.tsx +131 -0
  84. package/src/panels/comments/MentionMenu.tsx +98 -0
  85. package/src/panels/comments/parts.tsx +171 -0
  86. package/src/panels/export/ExportDialog.tsx +919 -96
  87. package/src/panels/export/ExportScrim.tsx +57 -0
  88. package/src/panels/files/AssetsTab.tsx +656 -0
  89. package/src/panels/files/FilePanel.tsx +1466 -216
  90. package/src/panels/files/LayerMarks.tsx +40 -0
  91. package/src/panels/files/LeftColumn.tsx +37 -0
  92. package/src/panels/files/McpSection.tsx +690 -47
  93. package/src/panels/files/MissingAssetsNotice.tsx +60 -0
  94. package/src/panels/files/assetDrag.ts +79 -0
  95. package/src/panels/files/resourceParts.tsx +255 -0
  96. package/src/panels/fonts/FontPicker.tsx +762 -0
  97. package/src/panels/fonts/faceCache.ts +207 -0
  98. package/src/panels/fonts/fontPicker.css +271 -0
  99. package/src/panels/fonts/pickerModel.ts +265 -0
  100. package/src/panels/fonts/pickerRequest.ts +46 -0
  101. package/src/panels/header/AccountAvatar.tsx +76 -0
  102. package/src/panels/header/AgentChip.tsx +77 -0
  103. package/src/panels/header/AppMenu.tsx +213 -0
  104. package/src/panels/header/Header.tsx +564 -84
  105. package/src/panels/header/HistoryControls.tsx +31 -5
  106. package/src/panels/header/PresenceStack.tsx +329 -0
  107. package/src/panels/header/ProjectTitle.tsx +232 -0
  108. package/src/panels/header/ShareButton.tsx +59 -0
  109. package/src/panels/header/StatusBadges.tsx +358 -27
  110. package/src/panels/header/SyncDeletedDialog.tsx +88 -0
  111. package/src/panels/header/ZoomControls.tsx +46 -15
  112. package/src/panels/header/agentHandoff.ts +52 -0
  113. package/src/panels/header/leave.ts +26 -0
  114. package/src/panels/help/HelpSection.tsx +189 -163
  115. package/src/panels/insert/InsertDrawer.tsx +723 -0
  116. package/src/panels/insert/iconSet.ts +109 -0
  117. package/src/panels/inspector/ExposeDot.tsx +117 -0
  118. package/src/panels/inspector/FramingRows.tsx +314 -44
  119. package/src/panels/inspector/InspectorFooter.tsx +91 -0
  120. package/src/panels/inspector/InspectorHead.tsx +425 -0
  121. package/src/panels/inspector/InspectorPanel.tsx +408 -124
  122. package/src/panels/inspector/KeyframeDot.tsx +373 -0
  123. package/src/panels/inspector/KeyframeSection.tsx +257 -0
  124. package/src/panels/inspector/MarkerSection.tsx +55 -11
  125. package/src/panels/inspector/ParamRow.tsx +84 -53
  126. package/src/panels/inspector/RightColumn.tsx +152 -0
  127. package/src/panels/inspector/TimeSection.tsx +866 -0
  128. package/src/panels/inspector/animate/EaseControl.tsx +244 -0
  129. package/src/panels/inspector/animate/PresetsSection.tsx +135 -0
  130. package/src/panels/inspector/animate/ShotSection.tsx +562 -48
  131. package/src/panels/inspector/design/AlignRow.tsx +95 -31
  132. package/src/panels/inspector/design/AppearanceSection.tsx +118 -9
  133. package/src/panels/inspector/design/ClonerSection.tsx +323 -62
  134. package/src/panels/inspector/design/ComponentSection.tsx +50 -43
  135. package/src/panels/inspector/design/CornerSection.tsx +45 -14
  136. package/src/panels/inspector/design/DefinitionProps.tsx +315 -0
  137. package/src/panels/inspector/design/DefinitionSection.tsx +136 -0
  138. package/src/panels/inspector/design/DeviceSection.tsx +210 -0
  139. package/src/panels/inspector/design/FillSection.tsx +83 -51
  140. package/src/panels/inspector/design/FontField.tsx +196 -0
  141. package/src/panels/inspector/design/HtmlSection.tsx +23 -12
  142. package/src/panels/inspector/design/InstanceSection.tsx +373 -154
  143. package/src/panels/inspector/design/MaskSection.tsx +84 -0
  144. package/src/panels/inspector/design/MaterialSection.tsx +177 -0
  145. package/src/panels/inspector/design/MediaSection.tsx +273 -120
  146. package/src/panels/inspector/design/MeshSection.tsx +910 -82
  147. package/src/panels/inspector/design/PaintRows.tsx +550 -0
  148. package/src/panels/inspector/design/PlateStyleSection.tsx +177 -0
  149. package/src/panels/inspector/design/ShadowSection.tsx +221 -48
  150. package/src/panels/inspector/design/SplineFollowSection.tsx +235 -0
  151. package/src/panels/inspector/design/StrokeSection.tsx +228 -43
  152. package/src/panels/inspector/design/TemplateFieldSection.tsx +57 -0
  153. package/src/panels/inspector/design/TransformSection.tsx +244 -50
  154. package/src/panels/inspector/design/TypographySection.tsx +679 -110
  155. package/src/panels/inspector/layout.ts +295 -0
  156. package/src/panels/inspector/propValue.ts +199 -0
  157. package/src/panels/inspector/scene/CameraSection.tsx +232 -22
  158. package/src/panels/inspector/scene/EffectsSection.tsx +722 -71
  159. package/src/panels/inspector/scene/MakeItYoursSection.tsx +180 -0
  160. package/src/panels/inspector/scene/SceneDocSection.tsx +191 -0
  161. package/src/panels/inspector/scene/SceneSection.tsx +219 -44
  162. package/src/panels/inspector/scene/TransitionSection.tsx +523 -72
  163. package/src/panels/inspector/storyboard/StoryboardReferenceSection.tsx +593 -0
  164. package/src/panels/inspector/storyboard/VideoStill.tsx +120 -0
  165. package/src/panels/inspector/timeModel.ts +190 -0
  166. package/src/panels/inspector/useDocWrite.ts +438 -146
  167. package/src/panels/library/LibraryBrowser.tsx +435 -0
  168. package/src/panels/library/LibraryGrid.tsx +190 -0
  169. package/src/panels/library/LibraryPreviewPanel.tsx +349 -0
  170. package/src/panels/library/LibraryRail.tsx +84 -0
  171. package/src/panels/library/LibrarySoundPanel.tsx +293 -0
  172. package/src/panels/library/SoundHistory.tsx +245 -0
  173. package/src/panels/library/StockSounds.tsx +390 -0
  174. package/src/panels/library/libraryModel.ts +147 -0
  175. package/src/panels/library/stockSearch.ts +77 -0
  176. package/src/panels/maskMarks.tsx +117 -0
  177. package/src/panels/material/MaterialCommentNode.tsx +54 -0
  178. package/src/panels/material/MaterialGraphCanvas.tsx +861 -0
  179. package/src/panels/material/MaterialGraphMenu.tsx +45 -0
  180. package/src/panels/material/MaterialGroupNode.tsx +56 -0
  181. package/src/panels/material/MaterialLibrary.tsx +253 -0
  182. package/src/panels/material/MaterialNode.tsx +453 -0
  183. package/src/panels/material/MaterialNodePalette.tsx +349 -0
  184. package/src/panels/material/MaterialParameterControls.tsx +525 -0
  185. package/src/panels/material/MaterialRerouteNode.tsx +42 -0
  186. package/src/panels/material/MaterialWorkspace.tsx +501 -0
  187. package/src/panels/material/NodePreview.tsx +70 -0
  188. package/src/panels/material/flowModel.ts +441 -0
  189. package/src/panels/material/parameterValues.ts +231 -0
  190. package/src/panels/material/previewScheduler.ts +235 -0
  191. package/src/panels/material/reactFlow.css +6 -0
  192. package/src/panels/material/socketGlyph.ts +85 -0
  193. package/src/panels/material/viewportMemory.ts +58 -0
  194. package/src/panels/preferences/PreferencesDialog.tsx +215 -0
  195. package/src/panels/share/ShareComponentDialog.tsx +247 -0
  196. package/src/panels/stage/StageMenu.tsx +35 -5
  197. package/src/panels/stage/StagePanel.tsx +338 -23
  198. package/src/panels/stage/cellSlots.tsx +70 -0
  199. package/src/panels/storyboard/BoardCanvas.tsx +739 -0
  200. package/src/panels/storyboard/BoardCursors.tsx +158 -0
  201. package/src/panels/storyboard/BoardDropDialog.tsx +161 -0
  202. package/src/panels/storyboard/BoardPlan.tsx +42 -0
  203. package/src/panels/storyboard/ComponentSheet.tsx +187 -0
  204. package/src/panels/storyboard/ComponentStage.tsx +235 -0
  205. package/src/panels/storyboard/MiniSketch.tsx +173 -0
  206. package/src/panels/storyboard/PartPicker.tsx +64 -0
  207. package/src/panels/storyboard/PlanPanel.tsx +617 -0
  208. package/src/panels/storyboard/ReferencePreview.tsx +217 -0
  209. package/src/panels/storyboard/ShotBrief.tsx +360 -0
  210. package/src/panels/storyboard/ShotCard.tsx +251 -0
  211. package/src/panels/storyboard/StagePreview.tsx +348 -0
  212. package/src/panels/storyboard/StillThumbs.tsx +162 -0
  213. package/src/panels/storyboard/StoryboardView.tsx +79 -0
  214. package/src/panels/storyboard/board.css +1065 -0
  215. package/src/panels/storyboard/board.ts +12 -0
  216. package/src/panels/storyboard/boardClipboard.ts +111 -0
  217. package/src/panels/storyboard/boardOrder.ts +68 -0
  218. package/src/panels/storyboard/boardRows.tsx +425 -0
  219. package/src/panels/storyboard/liveCap.ts +90 -0
  220. package/src/panels/storyboard/plan.css +295 -0
  221. package/src/panels/storyboard/posterCache.ts +133 -0
  222. package/src/panels/storyboard/shotboard/ComponentPicker.tsx +373 -0
  223. package/src/panels/storyboard/shotboard/ImagePicker.tsx +145 -0
  224. package/src/panels/storyboard/shotboard/ShotBoard.tsx +292 -0
  225. package/src/panels/storyboard/shotboard/SketchCanvas.tsx +443 -0
  226. package/src/panels/storyboard/shotboard/SketchInspector.tsx +471 -0
  227. package/src/panels/storyboard/shotboard/SketchItem.tsx +240 -0
  228. package/src/panels/storyboard/shotboard/SketchLayers.tsx +130 -0
  229. package/src/panels/storyboard/shotboard/SketchPlay.tsx +108 -0
  230. package/src/panels/storyboard/shotboard/SketchStrip.tsx +178 -0
  231. package/src/panels/storyboard/shotboard/SketchToolFooter.tsx +99 -0
  232. package/src/panels/storyboard/shotboard/sketch.css +1392 -0
  233. package/src/panels/storyboard/shotboard/sketchModel.ts +219 -0
  234. package/src/panels/storyboard/storyboardDrop.ts +164 -0
  235. package/src/panels/studio/ComponentLibraryRail.tsx +346 -0
  236. package/src/panels/studio/ComponentSidePanel.tsx +355 -0
  237. package/src/panels/studio/ComponentStudio.tsx +243 -0
  238. package/src/panels/studio/ComponentsHome.tsx +318 -0
  239. package/src/panels/studio/ComponentsPreview.tsx +179 -0
  240. package/src/panels/studio/EveryUse.tsx +244 -0
  241. package/src/panels/studio/ThisUsePanel.tsx +679 -0
  242. package/src/panels/studio/componentParts.tsx +341 -0
  243. package/src/panels/studio/components.ts +6 -0
  244. package/src/panels/studio/newCodeComponent.ts +66 -0
  245. package/src/panels/timeline/AudioFxButton.tsx +290 -0
  246. package/src/panels/timeline/AudioLane.tsx +674 -85
  247. package/src/panels/timeline/BlockRow.tsx +154 -85
  248. package/src/panels/timeline/ChannelRow.tsx +378 -129
  249. package/src/panels/timeline/CurvePane.tsx +508 -0
  250. package/src/panels/timeline/Filmstrip.tsx +361 -0
  251. package/src/panels/timeline/GenerateDrawer.tsx +407 -0
  252. package/src/panels/timeline/KeyStretch.tsx +115 -0
  253. package/src/panels/timeline/LifespanRow.tsx +730 -47
  254. package/src/panels/timeline/MarkerLane.tsx +46 -8
  255. package/src/panels/timeline/PlayButton.tsx +91 -0
  256. package/src/panels/timeline/PropertyPicker.tsx +254 -0
  257. package/src/panels/timeline/ShotRow.tsx +400 -0
  258. package/src/panels/timeline/SoundMode.tsx +1406 -0
  259. package/src/panels/timeline/TimelineDock.tsx +2338 -272
  260. package/src/panels/timeline/TransportVolume.tsx +163 -0
  261. package/src/panels/timeline/beatRuler.ts +74 -0
  262. package/src/panels/timeline/curveModel.ts +500 -0
  263. package/src/panels/timeline/duckUnderVoice.ts +68 -0
  264. package/src/panels/timeline/keyframeMenu.ts +138 -0
  265. package/src/panels/timeline/labelWidth.ts +49 -0
  266. package/src/panels/timeline/marquee.ts +155 -0
  267. package/src/panels/timeline/model.ts +1860 -199
  268. package/src/panels/timeline/snap.ts +125 -43
  269. package/src/panels/timeline/staggerPreview.tsx +92 -0
  270. package/src/panels/timeline/takeMeasure.ts +72 -0
  271. package/src/panels/timeline/useLive.ts +48 -0
  272. package/src/panels/timeline/viewport.ts +234 -0
  273. package/src/panels/toolbar/BackChip.tsx +116 -0
  274. package/src/panels/toolbar/CameraViewBar.tsx +118 -49
  275. package/src/panels/toolbar/CanvasBar.tsx +117 -0
  276. package/src/panels/toolbar/InsertButton.tsx +38 -0
  277. package/src/panels/toolbar/IsolationTrail.tsx +156 -0
  278. package/src/panels/toolbar/PanelToggles.tsx +86 -0
  279. package/src/panels/toolbar/ShadingBar.tsx +119 -26
  280. package/src/panels/toolbar/ToolDockBar.tsx +329 -80
  281. package/src/panels/toolbar/ToolFooter.tsx +102 -0
  282. package/src/panels/toolbar/ViewModeBar.tsx +247 -38
  283. package/src/panels/toolbar/WorkPlaneBar.tsx +94 -0
  284. package/src/panels/toolbar/useAddRows.tsx +326 -0
  285. package/src/panels/toolbar/useDismiss.ts +122 -0
  286. package/src/panels/versions/VersionHistoryPanel.tsx +274 -0
  287. package/src/panels/versions/versionModel.ts +103 -0
  288. package/src/panels/virtualWindow.ts +271 -0
  289. package/src/shotTokens.css +151 -60
  290. package/src/stage/FrustumGizmo.tsx +504 -84
  291. package/src/stage/GridPlane.tsx +225 -16
  292. package/src/stage/NodePreviews.tsx +628 -0
  293. package/src/stage/PerfHud.tsx +437 -47
  294. package/src/stage/SplitRenderer.tsx +816 -169
  295. package/src/stage/StageApp.tsx +4274 -486
  296. package/src/stage/StageRootBoundary.tsx +114 -0
  297. package/src/stage/StageTools.tsx +651 -151
  298. package/src/stage/TransformGizmo.tsx +696 -0
  299. package/src/stage/adaptivePresentation.ts +145 -0
  300. package/src/stage/bridgeClient.ts +2522 -41
  301. package/src/stage/exportWorker.ts +9 -0
  302. package/src/stage/feed.ts +305 -14
  303. package/src/stage/fontPreview.ts +176 -0
  304. package/src/stage/frustumGeometry.ts +319 -1
  305. package/src/stage/furnitureTokens.ts +33 -0
  306. package/src/stage/gizmoMath.ts +508 -16
  307. package/src/stage/gpuTimer.ts +276 -0
  308. package/src/stage/instanceModules.ts +194 -33
  309. package/src/stage/interactions/move.ts +24 -5
  310. package/src/stage/isolation.ts +291 -33
  311. package/src/stage/jsSelfProfiler.ts +325 -0
  312. package/src/stage/main.tsx +116 -16
  313. package/src/stage/modalState.ts +222 -23
  314. package/src/stage/moduleEpoch.ts +60 -0
  315. package/src/stage/motionPathStage.ts +279 -0
  316. package/src/stage/motionPreview.ts +74 -0
  317. package/src/stage/overlays/Overlays.tsx +1112 -159
  318. package/src/stage/overlays/Rulers.tsx +495 -0
  319. package/src/stage/panes.ts +159 -10
  320. package/src/stage/project.ts +68 -3
  321. package/src/stage/renderScaleController.ts +730 -0
  322. package/src/stage/rulers.ts +129 -0
  323. package/src/stage/sceneExtent.ts +75 -0
  324. package/src/stage/shading.ts +20 -0
  325. package/src/stage/splineStage.ts +632 -0
  326. package/src/stage/stagePerformanceTelemetry.ts +717 -0
  327. package/src/stage/stageTheme.ts +36 -0
  328. package/src/stage/stageWarmup.ts +11 -0
  329. package/src/stage/textAutoSize.ts +124 -0
  330. package/src/stage/tier1Export.ts +641 -0
  331. package/src/stage/tokenColor.ts +14 -9
  332. package/src/stage/view.ts +56 -9
  333. package/src/stage/workingView.ts +277 -33
  334. package/src/state/accountPrefs.ts +261 -0
  335. package/src/state/agentActions.ts +173 -15
  336. package/src/state/agentActivity.ts +198 -0
  337. package/src/state/agentQuestion.ts +239 -0
  338. package/src/state/bootOpen.ts +42 -0
  339. package/src/state/cameraVerbs.ts +139 -0
  340. package/src/state/clientId.ts +6 -1
  341. package/src/state/comments.ts +1099 -0
  342. package/src/state/context.tsx +19 -1
  343. package/src/state/editorPrefs.ts +220 -0
  344. package/src/state/errorReports.ts +121 -0
  345. package/src/state/fieldWrite.ts +161 -0
  346. package/src/state/fontRecents.ts +70 -0
  347. package/src/state/fonts.ts +656 -0
  348. package/src/state/graphClipboard.ts +414 -0
  349. package/src/state/imageThumbs.ts +216 -0
  350. package/src/state/insert.ts +444 -67
  351. package/src/state/isolationTrail.ts +92 -0
  352. package/src/state/keyMoves.ts +134 -0
  353. package/src/state/keyframeClipboard.ts +177 -0
  354. package/src/state/keymap.ts +1153 -117
  355. package/src/state/layoutPrefs.ts +272 -0
  356. package/src/state/layouts.ts +205 -0
  357. package/src/state/measureMedia.ts +167 -0
  358. package/src/state/menu.ts +2341 -28
  359. package/src/state/motionStamp.ts +7 -0
  360. package/src/state/panelSize.ts +375 -5
  361. package/src/state/pendingChanges.ts +119 -0
  362. package/src/state/playHold.ts +78 -0
  363. package/src/state/playbackPreparation.ts +562 -0
  364. package/src/state/posterCapture.ts +242 -0
  365. package/src/state/presence.ts +254 -0
  366. package/src/state/projectComponents.ts +160 -0
  367. package/src/state/renderEvents.ts +298 -18
  368. package/src/state/runtimeErrors.ts +46 -0
  369. package/src/state/selection.ts +12 -0
  370. package/src/state/shortcuts.ts +1606 -0
  371. package/src/state/sketchGuide.ts +51 -0
  372. package/src/state/splineRefs.ts +87 -0
  373. package/src/state/stageHealth.ts +259 -0
  374. package/src/state/stageWatchdog.ts +47 -0
  375. package/src/state/stillStage.ts +330 -0
  376. package/src/state/stillThumbs.ts +474 -0
  377. package/src/state/store.ts +23591 -2982
  378. package/src/state/storyboardModel.ts +528 -0
  379. package/src/state/sync.ts +1257 -0
  380. package/src/state/syncCache.ts +159 -0
  381. package/src/state/triangles.ts +13 -0
  382. package/src/state/types.ts +1698 -55
  383. package/src/state/unsavedGuard.ts +49 -0
  384. package/src/state/viewMode.ts +200 -0
  385. package/src/state/webmcp.ts +1128 -0
  386. package/src/state/workspace.ts +1147 -0
  387. package/src/styles/assets-tab.css +304 -0
  388. package/src/styles/canvas.css +545 -0
  389. package/src/styles/comments.css +1435 -0
  390. package/src/styles/controls.css +162 -0
  391. package/src/styles/dialogs.css +390 -0
  392. package/src/styles/insert-drawer.css +586 -0
  393. package/src/styles/inspector-board.css +207 -0
  394. package/src/styles/inspector-object.css +486 -0
  395. package/src/styles/inspector-shot.css +252 -0
  396. package/src/styles/inspector.css +360 -0
  397. package/src/styles/left-column.css +1628 -0
  398. package/src/styles/library-preview.css +575 -0
  399. package/src/styles/library.css +512 -0
  400. package/src/styles/modes/code.css +569 -0
  401. package/src/styles/modes/component.css +1561 -0
  402. package/src/styles/modes/material.css +1201 -0
  403. package/src/styles/modes/storyboard.css +518 -0
  404. package/src/styles/share-component.css +49 -0
  405. package/src/styles/shell.css +653 -0
  406. package/src/styles/shot-brief.css +360 -0
  407. package/src/styles/states.css +76 -0
  408. package/src/styles/sync.css +380 -0
  409. package/src/styles/timeline-graph.css +384 -0
  410. package/src/styles/timeline-meters.css +89 -0
  411. package/src/styles/timeline-rows.css +1959 -0
  412. package/src/styles/timeline-sound.css +1003 -0
  413. package/src/styles/timeline.css +754 -0
  414. package/src/styles/tool-footer.css +525 -0
  415. package/src/styles/topbar.css +886 -0
  416. package/src/styles/versions.css +262 -0
  417. package/src/styles.css +72 -2921
  418. package/src/tools.ts +108 -23
  419. package/dist/assets/index-B7notge7.css +0 -1
  420. package/dist/assets/index-BBE6Ta9L.js +0 -52
  421. package/src/panels/files/icons.tsx +0 -118
  422. package/src/panels/header/DocSwitcher.tsx +0 -85
  423. package/src/panels/header/TransportBar.tsx +0 -86
  424. package/src/panels/inspector/animate/BlockTiming.tsx +0 -341
  425. package/src/panels/inspector/animate/DuringBlocks.tsx +0 -85
  426. package/src/panels/inspector/animate/InOutPresets.tsx +0 -57
  427. package/src/panels/inspector/animate/ResolvedChannels.tsx +0 -150
  428. package/src/panels/inspector/animate/useBlocks.ts +0 -43
  429. package/src/panels/material/MaterialPicker.tsx +0 -172
  430. package/src/panels/timeline/SceneStrip.tsx +0 -145
  431. package/src/panels/toolbar/AddMenu.tsx +0 -230
  432. package/src/stage/MoveGizmo.tsx +0 -411
@@ -1,9 +1,9 @@
1
- // The working pane's ground plane.
1
+ // The working pane's ambient floor and active spline construction plane.
2
2
  //
3
3
  // Editor-only by exactly the three constructions FrustumGizmo's header states —
4
4
  // `layers.set(EDITOR_LAYER)`, SplitRenderer's post pass pinned to bit 0, and no
5
5
  // `SHOT_LAYER_KEY` userData — so it cannot reach the graded image, the camera
6
- // pane or a pick. It reads no document and writes nothing.
6
+ // pane or a pick. It reads editor-only resolved geometry and writes nothing.
7
7
  //
8
8
  // ── WHY IT SITS UNDER THE FRAME AND NOT THROUGH THE ORIGIN ──────────────
9
9
  //
@@ -53,15 +53,26 @@
53
53
  // so they cross the gridlines rather than fight them, and still a million
54
54
  // below every layer, so the artwork covers both.
55
55
  import { useEffect, useMemo } from "react";
56
- import { BufferAttribute, BufferGeometry, LineSegments } from "three";
56
+ import { BufferAttribute, BufferGeometry, LineSegments, Matrix4, Vector3 } from "three";
57
57
  import { LineBasicNodeMaterial } from "three/webgpu";
58
- import { cameraPosition, color, length, mix, positionWorld, smoothstep, uniform } from "three/tsl";
58
+ import {
59
+ cameraPosition,
60
+ color,
61
+ length,
62
+ mix,
63
+ positionLocal,
64
+ positionWorld,
65
+ smoothstep,
66
+ uniform,
67
+ } from "three/tsl";
59
68
  import { EDITOR_LAYER } from "./StageTools.js";
60
- import { CLAY_BACKDROP } from "./SplitRenderer.js";
61
69
  import { WORKING_FOV_DEG } from "./workingView.js";
62
70
  import { GRID_CELLS, axisOrigin, axisPositions, gridFade, gridPositions, gridStep } from "./gizmoMath.js";
63
71
  import { tokenColor } from "./tokenColor.js";
72
+ import type { StageTheme } from "./stageTheme.js";
64
73
  import type { FrameSize } from "./view.js";
74
+ import type { ResolvedWorkPlane } from "../bridgeTypes.js";
75
+ import { workPlaneGridCenter } from "./splineStage.js";
65
76
 
66
77
  /** Behind everything. The mirror of the frustum's +1_000_000, for the reason
67
78
  * its own comment gives: with depth testing off, order is the only answer to
@@ -72,6 +83,12 @@ const GRID_RENDER_ORDER = -1_000_000;
72
83
  * the grid lines rather than fighting them, and any layer covers both. */
73
84
  const AXIS_RENDER_ORDER = GRID_RENDER_ORDER + 1;
74
85
 
86
+ /** The selected construction plane sits above the ambient floor and axes, but
87
+ * remains far below authored geometry. */
88
+ const WORK_PLANE_RENDER_ORDER = AXIS_RENDER_ORDER + 1;
89
+ const WORK_PLANE_AXIS_RENDER_ORDER = WORK_PLANE_RENDER_ORDER + 1;
90
+ const WORK_PLANE_CELLS = 24;
91
+
75
92
  /**
76
93
  * Half-length of each world axis.
77
94
  *
@@ -83,7 +100,7 @@ const AXIS_RENDER_ORDER = GRID_RENDER_ORDER + 1;
83
100
  */
84
101
  const AXIS_EXTENT = 100_000;
85
102
 
86
- const GRID_FALLBACK = "#2a2a31";
103
+ const GRID_FALLBACK = "#2a2a2a";
87
104
 
88
105
  /** World axis index -> token. The one mapping (`world = (x, -y, -z)`) is a sign
89
106
  * flip, and a line through the origin is invariant under it, so the world axes
@@ -94,17 +111,82 @@ const AXES = [
94
111
  { axis: 2 as const, token: "--axis-z", fallback: "#3b82f6" },
95
112
  ];
96
113
 
114
+ const AXIS_PALETTE = {
115
+ x: { token: "--axis-x", fallback: "#ef4444" },
116
+ y: { token: "--axis-y", fallback: "#22c55e" },
117
+ z: { token: "--axis-z", fallback: "#3b82f6" },
118
+ } as const;
119
+
120
+ function workPlanePalette(
121
+ plane: ResolvedWorkPlane,
122
+ ): readonly [keyof typeof AXIS_PALETTE, keyof typeof AXIS_PALETTE, keyof typeof AXIS_PALETTE] {
123
+ switch (plane.target.kind) {
124
+ case "xz":
125
+ return ["x", "z", "y"];
126
+ case "yz":
127
+ return ["y", "z", "x"];
128
+ case "xy":
129
+ return ["x", "y", "z"];
130
+ // View and Selection expose local construction U/V/N. Use the established
131
+ // local-axis convention rather than inventing a second palette.
132
+ case "view":
133
+ case "selection":
134
+ return ["x", "y", "z"];
135
+ }
136
+ }
137
+
138
+ function localPlaneGridPositions(step: number, cells: number): number[] {
139
+ const half = step * cells;
140
+ const out: number[] = [];
141
+ for (let index = -cells; index <= cells; index += 1) {
142
+ const at = index * step;
143
+ out.push(at, -half, 0, at, half, 0);
144
+ out.push(-half, at, 0, half, at, 0);
145
+ }
146
+ return out;
147
+ }
148
+
149
+ function localPlaneAxisPositions(axis: 0 | 1 | 2, extent: number): number[] {
150
+ const a = [0, 0, 0];
151
+ const b = [0, 0, 0];
152
+ a[axis] = -extent;
153
+ b[axis] = extent;
154
+ return [...a, ...b];
155
+ }
156
+
157
+ function designVector(value: readonly [number, number, number]): Vector3 {
158
+ return new Vector3(value[0], -value[1], -value[2]);
159
+ }
160
+
161
+ function designPoint(value: readonly [number, number, number]): Vector3 {
162
+ return designVector(value);
163
+ }
164
+
97
165
  export function GridPlane({
166
+ theme,
98
167
  frame,
99
168
  target,
100
169
  distance,
170
+ ortho,
171
+ showGround,
172
+ workPlane,
101
173
  }: {
174
+ /** Resolved editor theme. It rebuilds only the token-backed GL materials. */
175
+ theme: StageTheme;
102
176
  frame: FrameSize;
103
177
  target: readonly [number, number, number];
104
178
  /** The working camera's eye-to-target distance. Drives the spacing through
105
179
  * `gridStep`'s ladder, so a dolly changes the geometry in jumps, and the
106
180
  * fade band continuously, which is a uniform write and no rebuild. */
107
181
  distance: number;
182
+ /** The working pane is on its ORTHOGRAPHIC rig (numpad-5). Changes what the
183
+ * fade below is measured FROM, and nothing else. */
184
+ ortho: boolean;
185
+ /** Ambient floor/axes. Definitions and isolation can suppress these while
186
+ * retaining the explicitly chosen spline construction plane. */
187
+ showGround: boolean;
188
+ /** Frozen draft plane, or the live plane before the first anchor. */
189
+ workPlane: ResolvedWorkPlane | null;
108
190
  }) {
109
191
  const step = gridStep(frame.height, distance, WORKING_FOV_DEG);
110
192
  const height = -frame.height / 2;
@@ -135,10 +217,35 @@ export function GridPlane({
135
217
  // disagreement.
136
218
  const fadeStart = uniform(0);
137
219
  const fadeEnd = uniform(1);
220
+ // ── AND WHY ORTHO MEASURES IT FROM SOMEWHERE ELSE ─────────────────────
221
+ //
222
+ // From the EYE is right for the perspective rig: the fade is standing in
223
+ // for a horizon, and a horizon is where distance from the viewer runs out.
224
+ //
225
+ // An orthographic view HAS no such point. Parallel edges stay parallel and
226
+ // nothing converges, so there is no horizon to stand in for — and the eye
227
+ // is not even a place: `StageTools` pushes the ortho camera back by
228
+ // `max(distance * 8, 10_000)` so every hit test starts in front of a
229
+ // positive near plane. That push-back is many times `fadeEnd`, so measured
230
+ // from THAT point every vertex of the floor is past the far end of the band
231
+ // and the whole grid resolves to exactly the backdrop colour. The floor
232
+ // vanished in ortho while the axes, which carry a flat colour, stayed —
233
+ // which is what the bug looked like from the outside.
234
+ //
235
+ // So ortho fades RADIALLY from the grid's own centre, in the floor plane.
236
+ // Object space is centred on the snapped target (see the follow effect), so
237
+ // `positionLocal.xz` IS that radius with no uniform to keep in step. The
238
+ // band needs no adjusting either: the ortho rig's half-height is
239
+ // `distance * tan(fov/2)`, so `gridSpan` is exactly its visible height and
240
+ // "1.5 to 6 spans" means the same thing in both projections.
138
241
  material.colorNode = mix(
139
242
  color(tokenColor("--grid", GRID_FALLBACK)),
140
- color(CLAY_BACKDROP),
141
- smoothstep(fadeStart, fadeEnd, length(positionWorld.sub(cameraPosition))),
243
+ color(tokenColor("--working-bg", "#141414")),
244
+ smoothstep(
245
+ fadeStart,
246
+ fadeEnd,
247
+ ortho ? length(positionLocal.xz) : length(positionWorld.sub(cameraPosition)),
248
+ ),
142
249
  );
143
250
  material.depthTest = false;
144
251
  material.depthWrite = false;
@@ -160,10 +267,15 @@ export function GridPlane({
160
267
  // edit) or when the dolly crosses a ladder rung — never within a rung, so a
161
268
  // continuous dolly does no geometry work. The buffer stays static and the
162
269
  // OBJECT moves; see the follow effect below.
163
- }, [step, height]);
270
+ //
271
+ // `ortho` is in here because it picks a different NODE, and a node graph is
272
+ // fixed once the material is built. It is a numpad press, not a gesture, so
273
+ // rebuilding on it costs nothing a dolly would have to pay.
274
+ }, [step, height, ortho, theme]);
164
275
 
165
- // The three world axes. Built ONCE — their geometry has nothing to do with
166
- // the grid's spacing, and their extent is already past every legal view.
276
+ // The three world axes. Rebuilt only when appearance changes; their geometry
277
+ // has nothing to do with the grid's spacing, and their extent is already
278
+ // past every legal view.
167
279
  //
168
280
  // Three objects with three materials rather than one buffer with vertex
169
281
  // colours: `MoveGizmo` states the same choice for the same reason, that a
@@ -193,9 +305,65 @@ export function GridPlane({
193
305
  lines.matrixAutoUpdate = false;
194
306
  return { axis, lines, geometry, material };
195
307
  }),
196
- [],
308
+ [theme],
197
309
  );
198
310
 
311
+ // ── THE ACTIVE CONSTRUCTION PLANE ──────────────────────────────────────
312
+ //
313
+ // Unlike the ambient floor, this grid is the plane pointer rays intersect.
314
+ // Its basis and origin therefore come from the exact ResolvedWorkPlane the
315
+ // draft owns. Geometry is local XY and static within a spacing rung; orbit,
316
+ // selection motion and panning update one matrix instead of rebuilding a
317
+ // buffer on every frame.
318
+ const construction = useMemo(() => {
319
+ if (workPlane === null) return null;
320
+ const geometry = new BufferGeometry();
321
+ geometry.setAttribute(
322
+ "position",
323
+ new BufferAttribute(new Float32Array(localPlaneGridPositions(step, WORK_PLANE_CELLS)), 3),
324
+ );
325
+ const material = new LineBasicNodeMaterial();
326
+ material.color.copy(tokenColor("--grid", GRID_FALLBACK));
327
+ material.depthTest = false;
328
+ material.depthWrite = false;
329
+ material.toneMapped = false;
330
+ material.allowOverride = false;
331
+ const lines = new LineSegments(geometry, material);
332
+ lines.layers.set(EDITOR_LAYER);
333
+ lines.renderOrder = WORK_PLANE_RENDER_ORDER;
334
+ lines.frustumCulled = false;
335
+ lines.matrixAutoUpdate = false;
336
+
337
+ const extent = step * WORK_PLANE_CELLS;
338
+ const normalExtent = Math.max(step * 0.35, 1);
339
+ const palette = workPlanePalette(workPlane);
340
+ const axes = palette.map((axisName, index) => {
341
+ const axis = index as 0 | 1 | 2;
342
+ const axisGeometry = new BufferGeometry();
343
+ axisGeometry.setAttribute(
344
+ "position",
345
+ new BufferAttribute(
346
+ new Float32Array(localPlaneAxisPositions(axis, axis === 2 ? normalExtent : extent)),
347
+ 3,
348
+ ),
349
+ );
350
+ const axisMaterial = new LineBasicNodeMaterial();
351
+ const colorSpec = AXIS_PALETTE[axisName];
352
+ axisMaterial.color.copy(tokenColor(colorSpec.token, colorSpec.fallback));
353
+ axisMaterial.depthTest = false;
354
+ axisMaterial.depthWrite = false;
355
+ axisMaterial.toneMapped = false;
356
+ axisMaterial.allowOverride = false;
357
+ const axisLines = new LineSegments(axisGeometry, axisMaterial);
358
+ axisLines.layers.set(EDITOR_LAYER);
359
+ axisLines.renderOrder = WORK_PLANE_AXIS_RENDER_ORDER;
360
+ axisLines.frustumCulled = false;
361
+ axisLines.matrixAutoUpdate = false;
362
+ return { lines: axisLines, geometry: axisGeometry, material: axisMaterial };
363
+ });
364
+ return { lines, geometry, material, axes };
365
+ }, [step, theme, workPlane?.target.kind, workPlane === null]);
366
+
199
367
  // ── THE GRID FOLLOWS THE AUTHOR ─────────────────────────────────────────
200
368
  //
201
369
  // It was 24 cells nailed to the world origin, so panning far enough left it
@@ -245,6 +413,26 @@ export function GridPlane({
245
413
  }
246
414
  }, [axes, target, height]);
247
415
 
416
+ useEffect(() => {
417
+ if (construction === null || workPlane === null) return;
418
+ const focusDesign: [number, number, number] = [target[0], -target[1], -target[2]];
419
+ const center = workPlaneGridCenter(workPlane, focusDesign, step);
420
+ const basis = new Matrix4().makeBasis(
421
+ designVector(workPlane.xAxis).normalize(),
422
+ designVector(workPlane.yAxis).normalize(),
423
+ designVector(workPlane.normal).normalize(),
424
+ );
425
+ const gridMatrix = basis.clone().setPosition(designPoint(center));
426
+ construction.lines.matrix.copy(gridMatrix);
427
+ construction.lines.matrixWorldNeedsUpdate = true;
428
+
429
+ const axisMatrix = basis.setPosition(designPoint(workPlane.origin));
430
+ for (const axis of construction.axes) {
431
+ axis.lines.matrix.copy(axisMatrix);
432
+ axis.lines.matrixWorldNeedsUpdate = true;
433
+ }
434
+ }, [construction, step, target, workPlane]);
435
+
248
436
  useEffect(
249
437
  () => () => {
250
438
  grid.geometry.dispose();
@@ -263,12 +451,33 @@ export function GridPlane({
263
451
  [axes],
264
452
  );
265
453
 
454
+ useEffect(
455
+ () => () => {
456
+ if (construction === null) return;
457
+ construction.geometry.dispose();
458
+ construction.material.dispose();
459
+ for (const axis of construction.axes) {
460
+ axis.geometry.dispose();
461
+ axis.material.dispose();
462
+ }
463
+ },
464
+ [construction],
465
+ );
466
+
266
467
  return (
267
468
  <>
268
- <primitive object={grid.lines} />
269
- {axes.map((a) => (
270
- <primitive key={a.axis} object={a.lines} />
271
- ))}
469
+ {showGround ? <primitive object={grid.lines} /> : null}
470
+ {showGround
471
+ ? axes.map((a) => <primitive key={a.axis} object={a.lines} />)
472
+ : null}
473
+ {construction === null ? null : (
474
+ <>
475
+ <primitive object={construction.lines} />
476
+ {construction.axes.map((axis, index) => (
477
+ <primitive key={`work-plane-axis-${index}`} object={axis.lines} />
478
+ ))}
479
+ </>
480
+ )}
272
481
  </>
273
482
  );
274
483
  }