@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.
- package/dist/.vite/manifest.json +382 -0
- package/dist/assets/AgentPanel-CQejLbiX.js +2 -0
- package/dist/assets/AgentPanel-DJEphah0.css +1 -0
- package/dist/assets/AgentQuestionDialog-BqkD0kXF.js +1 -0
- package/dist/assets/CodeStudio-Dv4ihHpz.js +23 -0
- package/dist/assets/CommentsPanel-B4yhhT1T.js +1 -0
- package/dist/assets/ComponentLibraryRail-Ch_dsAru.js +1 -0
- package/dist/assets/ComponentStage-BRhRotyH.js +1 -0
- package/dist/assets/CurvePane-BjFVabKX.css +1 -0
- package/dist/assets/CurvePane-R22WzllJ.js +1 -0
- package/dist/assets/ExportDialog-CWLQWTmG.js +2 -0
- package/dist/assets/FontPicker-DWKaYL7F.js +1 -0
- package/dist/assets/FontPicker-v0IOIArM.css +1 -0
- package/dist/assets/GenerateDrawer-Bh3SqDKt.js +2 -0
- package/dist/assets/InsertDrawer-Ce1fod1L.js +1 -0
- package/dist/assets/LibraryBrowser-D9sEGz5w.js +2 -0
- package/dist/assets/MakeItYoursSection-CMO4319_.js +2 -0
- package/dist/assets/MaterialGraphCanvas-BFzl4wWR.js +23 -0
- package/dist/assets/MaterialGraphCanvas-BIUD59ik.css +1 -0
- package/dist/assets/MaterialWorkspace-CqTWqaRA.js +14 -0
- package/dist/assets/PreferencesDialog-CBf9_OoD.js +1 -0
- package/dist/assets/PresetsSection-CUEaoCVU.js +1 -0
- package/dist/assets/SoundHistory-BeS8EW1h.js +1 -0
- package/dist/assets/SoundMode-BmcZru3i.js +3 -0
- package/dist/assets/StockSounds-DdAUGRYK.js +1 -0
- package/dist/assets/TemplateFieldSection-CaeXpLFo.js +1 -0
- package/dist/assets/VersionHistoryPanel-CxG6XhNP.js +1 -0
- package/dist/assets/board-B88EPuLO.css +1 -0
- package/dist/assets/board-CL-he7SL.js +3 -0
- package/dist/assets/components-0oOSPN0l.js +1 -0
- package/dist/assets/googleFontRanges-gp32wJMo.js +1 -0
- package/dist/assets/googleFonts-BNon6M7X.js +1 -0
- package/dist/assets/iconsAndAliases-DL7gXP5j.js +1863 -0
- package/dist/assets/index-4F5NQmI8.css +1 -0
- package/dist/assets/index-BGHQGV5z.js +117 -0
- package/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/dist/assets/libraryModel-CpIwfFha.js +1 -0
- package/dist/assets/lucide-6iK64tTB.js +9319 -0
- package/dist/assets/motionStamp-CH-Hew4E.js +1 -0
- package/dist/assets/takeMeasure-Tdg0TxEi.js +1 -0
- package/dist/assets/webmcp-BsB9gxWC.js +2 -0
- package/dist/index.html +34 -3
- package/package.json +12 -9
- package/src/addFamilies.ts +66 -0
- package/src/api.ts +1631 -55
- package/src/app/App.tsx +977 -198
- package/src/app/lazyPanel.tsx +137 -0
- package/src/app/lazySurfaces.tsx +203 -0
- package/src/audio/index.tsx +41 -10
- package/src/audio/meter.ts +485 -0
- package/src/audio/meterMath.ts +273 -0
- package/src/audio/meterStore.ts +155 -0
- package/src/audio/offlineMix.ts +289 -0
- package/src/audio/preview.ts +928 -118
- package/src/bridge.ts +15 -5
- package/src/bridgeTypes.ts +1611 -36
- package/src/channels.ts +17 -32
- package/src/fonts/googleFonts.ts +4 -0
- package/src/hostApi.ts +174 -0
- package/src/icons.tsx +770 -0
- package/src/layerWords.ts +61 -0
- package/src/main.tsx +56 -4
- package/src/panels/ResizeHandle.tsx +33 -43
- package/src/panels/agent/AgentDots.tsx +36 -0
- package/src/panels/agent/AgentPanel.tsx +119 -43
- package/src/panels/agent/AgentQuestionDialog.tsx +202 -0
- package/src/panels/agent/agent.css +113 -97
- package/src/panels/agent/agentGate.ts +35 -0
- package/src/panels/code/CodeDefaultsPanel.tsx +345 -0
- package/src/panels/code/CodeStudio.tsx +373 -0
- package/src/panels/code/FileTree.tsx +265 -0
- package/src/panels/code/codeBufferGuard.ts +52 -0
- package/src/panels/code/codeParts.tsx +321 -0
- package/src/panels/comments/CommentComposer.tsx +239 -0
- package/src/panels/comments/CommentThread.tsx +346 -0
- package/src/panels/comments/CommentsPanel.tsx +336 -0
- package/src/panels/comments/InboxButton.tsx +131 -0
- package/src/panels/comments/MentionMenu.tsx +98 -0
- package/src/panels/comments/parts.tsx +171 -0
- package/src/panels/export/ExportDialog.tsx +919 -96
- package/src/panels/export/ExportScrim.tsx +57 -0
- package/src/panels/files/AssetsTab.tsx +656 -0
- package/src/panels/files/FilePanel.tsx +1466 -216
- package/src/panels/files/LayerMarks.tsx +40 -0
- package/src/panels/files/LeftColumn.tsx +37 -0
- package/src/panels/files/McpSection.tsx +690 -47
- package/src/panels/files/MissingAssetsNotice.tsx +60 -0
- package/src/panels/files/assetDrag.ts +79 -0
- package/src/panels/files/resourceParts.tsx +255 -0
- package/src/panels/fonts/FontPicker.tsx +762 -0
- package/src/panels/fonts/faceCache.ts +207 -0
- package/src/panels/fonts/fontPicker.css +271 -0
- package/src/panels/fonts/pickerModel.ts +265 -0
- package/src/panels/fonts/pickerRequest.ts +46 -0
- package/src/panels/header/AccountAvatar.tsx +76 -0
- package/src/panels/header/AgentChip.tsx +77 -0
- package/src/panels/header/AppMenu.tsx +213 -0
- package/src/panels/header/Header.tsx +564 -84
- package/src/panels/header/HistoryControls.tsx +31 -5
- package/src/panels/header/PresenceStack.tsx +329 -0
- package/src/panels/header/ProjectTitle.tsx +232 -0
- package/src/panels/header/ShareButton.tsx +59 -0
- package/src/panels/header/StatusBadges.tsx +358 -27
- package/src/panels/header/SyncDeletedDialog.tsx +88 -0
- package/src/panels/header/ZoomControls.tsx +46 -15
- package/src/panels/header/agentHandoff.ts +52 -0
- package/src/panels/header/leave.ts +26 -0
- package/src/panels/help/HelpSection.tsx +189 -163
- package/src/panels/insert/InsertDrawer.tsx +723 -0
- package/src/panels/insert/iconSet.ts +109 -0
- package/src/panels/inspector/ExposeDot.tsx +117 -0
- package/src/panels/inspector/FramingRows.tsx +314 -44
- package/src/panels/inspector/InspectorFooter.tsx +91 -0
- package/src/panels/inspector/InspectorHead.tsx +425 -0
- package/src/panels/inspector/InspectorPanel.tsx +408 -124
- package/src/panels/inspector/KeyframeDot.tsx +373 -0
- package/src/panels/inspector/KeyframeSection.tsx +257 -0
- package/src/panels/inspector/MarkerSection.tsx +55 -11
- package/src/panels/inspector/ParamRow.tsx +84 -53
- package/src/panels/inspector/RightColumn.tsx +152 -0
- package/src/panels/inspector/TimeSection.tsx +866 -0
- package/src/panels/inspector/animate/EaseControl.tsx +244 -0
- package/src/panels/inspector/animate/PresetsSection.tsx +135 -0
- package/src/panels/inspector/animate/ShotSection.tsx +562 -48
- package/src/panels/inspector/design/AlignRow.tsx +95 -31
- package/src/panels/inspector/design/AppearanceSection.tsx +118 -9
- package/src/panels/inspector/design/ClonerSection.tsx +323 -62
- package/src/panels/inspector/design/ComponentSection.tsx +50 -43
- package/src/panels/inspector/design/CornerSection.tsx +45 -14
- package/src/panels/inspector/design/DefinitionProps.tsx +315 -0
- package/src/panels/inspector/design/DefinitionSection.tsx +136 -0
- package/src/panels/inspector/design/DeviceSection.tsx +210 -0
- package/src/panels/inspector/design/FillSection.tsx +83 -51
- package/src/panels/inspector/design/FontField.tsx +196 -0
- package/src/panels/inspector/design/HtmlSection.tsx +23 -12
- package/src/panels/inspector/design/InstanceSection.tsx +373 -154
- package/src/panels/inspector/design/MaskSection.tsx +84 -0
- package/src/panels/inspector/design/MaterialSection.tsx +177 -0
- package/src/panels/inspector/design/MediaSection.tsx +273 -120
- package/src/panels/inspector/design/MeshSection.tsx +910 -82
- package/src/panels/inspector/design/PaintRows.tsx +550 -0
- package/src/panels/inspector/design/PlateStyleSection.tsx +177 -0
- package/src/panels/inspector/design/ShadowSection.tsx +221 -48
- package/src/panels/inspector/design/SplineFollowSection.tsx +235 -0
- package/src/panels/inspector/design/StrokeSection.tsx +228 -43
- package/src/panels/inspector/design/TemplateFieldSection.tsx +57 -0
- package/src/panels/inspector/design/TransformSection.tsx +244 -50
- package/src/panels/inspector/design/TypographySection.tsx +679 -110
- package/src/panels/inspector/layout.ts +295 -0
- package/src/panels/inspector/propValue.ts +199 -0
- package/src/panels/inspector/scene/CameraSection.tsx +232 -22
- package/src/panels/inspector/scene/EffectsSection.tsx +722 -71
- package/src/panels/inspector/scene/MakeItYoursSection.tsx +180 -0
- package/src/panels/inspector/scene/SceneDocSection.tsx +191 -0
- package/src/panels/inspector/scene/SceneSection.tsx +219 -44
- package/src/panels/inspector/scene/TransitionSection.tsx +523 -72
- package/src/panels/inspector/storyboard/StoryboardReferenceSection.tsx +593 -0
- package/src/panels/inspector/storyboard/VideoStill.tsx +120 -0
- package/src/panels/inspector/timeModel.ts +190 -0
- package/src/panels/inspector/useDocWrite.ts +438 -146
- package/src/panels/library/LibraryBrowser.tsx +435 -0
- package/src/panels/library/LibraryGrid.tsx +190 -0
- package/src/panels/library/LibraryPreviewPanel.tsx +349 -0
- package/src/panels/library/LibraryRail.tsx +84 -0
- package/src/panels/library/LibrarySoundPanel.tsx +293 -0
- package/src/panels/library/SoundHistory.tsx +245 -0
- package/src/panels/library/StockSounds.tsx +390 -0
- package/src/panels/library/libraryModel.ts +147 -0
- package/src/panels/library/stockSearch.ts +77 -0
- package/src/panels/maskMarks.tsx +117 -0
- package/src/panels/material/MaterialCommentNode.tsx +54 -0
- package/src/panels/material/MaterialGraphCanvas.tsx +861 -0
- package/src/panels/material/MaterialGraphMenu.tsx +45 -0
- package/src/panels/material/MaterialGroupNode.tsx +56 -0
- package/src/panels/material/MaterialLibrary.tsx +253 -0
- package/src/panels/material/MaterialNode.tsx +453 -0
- package/src/panels/material/MaterialNodePalette.tsx +349 -0
- package/src/panels/material/MaterialParameterControls.tsx +525 -0
- package/src/panels/material/MaterialRerouteNode.tsx +42 -0
- package/src/panels/material/MaterialWorkspace.tsx +501 -0
- package/src/panels/material/NodePreview.tsx +70 -0
- package/src/panels/material/flowModel.ts +441 -0
- package/src/panels/material/parameterValues.ts +231 -0
- package/src/panels/material/previewScheduler.ts +235 -0
- package/src/panels/material/reactFlow.css +6 -0
- package/src/panels/material/socketGlyph.ts +85 -0
- package/src/panels/material/viewportMemory.ts +58 -0
- package/src/panels/preferences/PreferencesDialog.tsx +215 -0
- package/src/panels/share/ShareComponentDialog.tsx +247 -0
- package/src/panels/stage/StageMenu.tsx +35 -5
- package/src/panels/stage/StagePanel.tsx +338 -23
- package/src/panels/stage/cellSlots.tsx +70 -0
- package/src/panels/storyboard/BoardCanvas.tsx +739 -0
- package/src/panels/storyboard/BoardCursors.tsx +158 -0
- package/src/panels/storyboard/BoardDropDialog.tsx +161 -0
- package/src/panels/storyboard/BoardPlan.tsx +42 -0
- package/src/panels/storyboard/ComponentSheet.tsx +187 -0
- package/src/panels/storyboard/ComponentStage.tsx +235 -0
- package/src/panels/storyboard/MiniSketch.tsx +173 -0
- package/src/panels/storyboard/PartPicker.tsx +64 -0
- package/src/panels/storyboard/PlanPanel.tsx +617 -0
- package/src/panels/storyboard/ReferencePreview.tsx +217 -0
- package/src/panels/storyboard/ShotBrief.tsx +360 -0
- package/src/panels/storyboard/ShotCard.tsx +251 -0
- package/src/panels/storyboard/StagePreview.tsx +348 -0
- package/src/panels/storyboard/StillThumbs.tsx +162 -0
- package/src/panels/storyboard/StoryboardView.tsx +79 -0
- package/src/panels/storyboard/board.css +1065 -0
- package/src/panels/storyboard/board.ts +12 -0
- package/src/panels/storyboard/boardClipboard.ts +111 -0
- package/src/panels/storyboard/boardOrder.ts +68 -0
- package/src/panels/storyboard/boardRows.tsx +425 -0
- package/src/panels/storyboard/liveCap.ts +90 -0
- package/src/panels/storyboard/plan.css +295 -0
- package/src/panels/storyboard/posterCache.ts +133 -0
- package/src/panels/storyboard/shotboard/ComponentPicker.tsx +373 -0
- package/src/panels/storyboard/shotboard/ImagePicker.tsx +145 -0
- package/src/panels/storyboard/shotboard/ShotBoard.tsx +292 -0
- package/src/panels/storyboard/shotboard/SketchCanvas.tsx +443 -0
- package/src/panels/storyboard/shotboard/SketchInspector.tsx +471 -0
- package/src/panels/storyboard/shotboard/SketchItem.tsx +240 -0
- package/src/panels/storyboard/shotboard/SketchLayers.tsx +130 -0
- package/src/panels/storyboard/shotboard/SketchPlay.tsx +108 -0
- package/src/panels/storyboard/shotboard/SketchStrip.tsx +178 -0
- package/src/panels/storyboard/shotboard/SketchToolFooter.tsx +99 -0
- package/src/panels/storyboard/shotboard/sketch.css +1392 -0
- package/src/panels/storyboard/shotboard/sketchModel.ts +219 -0
- package/src/panels/storyboard/storyboardDrop.ts +164 -0
- package/src/panels/studio/ComponentLibraryRail.tsx +346 -0
- package/src/panels/studio/ComponentSidePanel.tsx +355 -0
- package/src/panels/studio/ComponentStudio.tsx +243 -0
- package/src/panels/studio/ComponentsHome.tsx +318 -0
- package/src/panels/studio/ComponentsPreview.tsx +179 -0
- package/src/panels/studio/EveryUse.tsx +244 -0
- package/src/panels/studio/ThisUsePanel.tsx +679 -0
- package/src/panels/studio/componentParts.tsx +341 -0
- package/src/panels/studio/components.ts +6 -0
- package/src/panels/studio/newCodeComponent.ts +66 -0
- package/src/panels/timeline/AudioFxButton.tsx +290 -0
- package/src/panels/timeline/AudioLane.tsx +674 -85
- package/src/panels/timeline/BlockRow.tsx +154 -85
- package/src/panels/timeline/ChannelRow.tsx +378 -129
- package/src/panels/timeline/CurvePane.tsx +508 -0
- package/src/panels/timeline/Filmstrip.tsx +361 -0
- package/src/panels/timeline/GenerateDrawer.tsx +407 -0
- package/src/panels/timeline/KeyStretch.tsx +115 -0
- package/src/panels/timeline/LifespanRow.tsx +730 -47
- package/src/panels/timeline/MarkerLane.tsx +46 -8
- package/src/panels/timeline/PlayButton.tsx +91 -0
- package/src/panels/timeline/PropertyPicker.tsx +254 -0
- package/src/panels/timeline/ShotRow.tsx +400 -0
- package/src/panels/timeline/SoundMode.tsx +1406 -0
- package/src/panels/timeline/TimelineDock.tsx +2338 -272
- package/src/panels/timeline/TransportVolume.tsx +163 -0
- package/src/panels/timeline/beatRuler.ts +74 -0
- package/src/panels/timeline/curveModel.ts +500 -0
- package/src/panels/timeline/duckUnderVoice.ts +68 -0
- package/src/panels/timeline/keyframeMenu.ts +138 -0
- package/src/panels/timeline/labelWidth.ts +49 -0
- package/src/panels/timeline/marquee.ts +155 -0
- package/src/panels/timeline/model.ts +1860 -199
- package/src/panels/timeline/snap.ts +125 -43
- package/src/panels/timeline/staggerPreview.tsx +92 -0
- package/src/panels/timeline/takeMeasure.ts +72 -0
- package/src/panels/timeline/useLive.ts +48 -0
- package/src/panels/timeline/viewport.ts +234 -0
- package/src/panels/toolbar/BackChip.tsx +116 -0
- package/src/panels/toolbar/CameraViewBar.tsx +118 -49
- package/src/panels/toolbar/CanvasBar.tsx +117 -0
- package/src/panels/toolbar/InsertButton.tsx +38 -0
- package/src/panels/toolbar/IsolationTrail.tsx +156 -0
- package/src/panels/toolbar/PanelToggles.tsx +86 -0
- package/src/panels/toolbar/ShadingBar.tsx +119 -26
- package/src/panels/toolbar/ToolDockBar.tsx +329 -80
- package/src/panels/toolbar/ToolFooter.tsx +102 -0
- package/src/panels/toolbar/ViewModeBar.tsx +247 -38
- package/src/panels/toolbar/WorkPlaneBar.tsx +94 -0
- package/src/panels/toolbar/useAddRows.tsx +326 -0
- package/src/panels/toolbar/useDismiss.ts +122 -0
- package/src/panels/versions/VersionHistoryPanel.tsx +274 -0
- package/src/panels/versions/versionModel.ts +103 -0
- package/src/panels/virtualWindow.ts +271 -0
- package/src/shotTokens.css +151 -60
- package/src/stage/FrustumGizmo.tsx +504 -84
- package/src/stage/GridPlane.tsx +225 -16
- package/src/stage/NodePreviews.tsx +628 -0
- package/src/stage/PerfHud.tsx +437 -47
- package/src/stage/SplitRenderer.tsx +816 -169
- package/src/stage/StageApp.tsx +4274 -486
- package/src/stage/StageRootBoundary.tsx +114 -0
- package/src/stage/StageTools.tsx +651 -151
- package/src/stage/TransformGizmo.tsx +696 -0
- package/src/stage/adaptivePresentation.ts +145 -0
- package/src/stage/bridgeClient.ts +2522 -41
- package/src/stage/exportWorker.ts +9 -0
- package/src/stage/feed.ts +305 -14
- package/src/stage/fontPreview.ts +176 -0
- package/src/stage/frustumGeometry.ts +319 -1
- package/src/stage/furnitureTokens.ts +33 -0
- package/src/stage/gizmoMath.ts +508 -16
- package/src/stage/gpuTimer.ts +276 -0
- package/src/stage/instanceModules.ts +194 -33
- package/src/stage/interactions/move.ts +24 -5
- package/src/stage/isolation.ts +291 -33
- package/src/stage/jsSelfProfiler.ts +325 -0
- package/src/stage/main.tsx +116 -16
- package/src/stage/modalState.ts +222 -23
- package/src/stage/moduleEpoch.ts +60 -0
- package/src/stage/motionPathStage.ts +279 -0
- package/src/stage/motionPreview.ts +74 -0
- package/src/stage/overlays/Overlays.tsx +1112 -159
- package/src/stage/overlays/Rulers.tsx +495 -0
- package/src/stage/panes.ts +159 -10
- package/src/stage/project.ts +68 -3
- package/src/stage/renderScaleController.ts +730 -0
- package/src/stage/rulers.ts +129 -0
- package/src/stage/sceneExtent.ts +75 -0
- package/src/stage/shading.ts +20 -0
- package/src/stage/splineStage.ts +632 -0
- package/src/stage/stagePerformanceTelemetry.ts +717 -0
- package/src/stage/stageTheme.ts +36 -0
- package/src/stage/stageWarmup.ts +11 -0
- package/src/stage/textAutoSize.ts +124 -0
- package/src/stage/tier1Export.ts +641 -0
- package/src/stage/tokenColor.ts +14 -9
- package/src/stage/view.ts +56 -9
- package/src/stage/workingView.ts +277 -33
- package/src/state/accountPrefs.ts +261 -0
- package/src/state/agentActions.ts +173 -15
- package/src/state/agentActivity.ts +198 -0
- package/src/state/agentQuestion.ts +239 -0
- package/src/state/bootOpen.ts +42 -0
- package/src/state/cameraVerbs.ts +139 -0
- package/src/state/clientId.ts +6 -1
- package/src/state/comments.ts +1099 -0
- package/src/state/context.tsx +19 -1
- package/src/state/editorPrefs.ts +220 -0
- package/src/state/errorReports.ts +121 -0
- package/src/state/fieldWrite.ts +161 -0
- package/src/state/fontRecents.ts +70 -0
- package/src/state/fonts.ts +656 -0
- package/src/state/graphClipboard.ts +414 -0
- package/src/state/imageThumbs.ts +216 -0
- package/src/state/insert.ts +444 -67
- package/src/state/isolationTrail.ts +92 -0
- package/src/state/keyMoves.ts +134 -0
- package/src/state/keyframeClipboard.ts +177 -0
- package/src/state/keymap.ts +1153 -117
- package/src/state/layoutPrefs.ts +272 -0
- package/src/state/layouts.ts +205 -0
- package/src/state/measureMedia.ts +167 -0
- package/src/state/menu.ts +2341 -28
- package/src/state/motionStamp.ts +7 -0
- package/src/state/panelSize.ts +375 -5
- package/src/state/pendingChanges.ts +119 -0
- package/src/state/playHold.ts +78 -0
- package/src/state/playbackPreparation.ts +562 -0
- package/src/state/posterCapture.ts +242 -0
- package/src/state/presence.ts +254 -0
- package/src/state/projectComponents.ts +160 -0
- package/src/state/renderEvents.ts +298 -18
- package/src/state/runtimeErrors.ts +46 -0
- package/src/state/selection.ts +12 -0
- package/src/state/shortcuts.ts +1606 -0
- package/src/state/sketchGuide.ts +51 -0
- package/src/state/splineRefs.ts +87 -0
- package/src/state/stageHealth.ts +259 -0
- package/src/state/stageWatchdog.ts +47 -0
- package/src/state/stillStage.ts +330 -0
- package/src/state/stillThumbs.ts +474 -0
- package/src/state/store.ts +23591 -2982
- package/src/state/storyboardModel.ts +528 -0
- package/src/state/sync.ts +1257 -0
- package/src/state/syncCache.ts +159 -0
- package/src/state/triangles.ts +13 -0
- package/src/state/types.ts +1698 -55
- package/src/state/unsavedGuard.ts +49 -0
- package/src/state/viewMode.ts +200 -0
- package/src/state/webmcp.ts +1128 -0
- package/src/state/workspace.ts +1147 -0
- package/src/styles/assets-tab.css +304 -0
- package/src/styles/canvas.css +545 -0
- package/src/styles/comments.css +1435 -0
- package/src/styles/controls.css +162 -0
- package/src/styles/dialogs.css +390 -0
- package/src/styles/insert-drawer.css +586 -0
- package/src/styles/inspector-board.css +207 -0
- package/src/styles/inspector-object.css +486 -0
- package/src/styles/inspector-shot.css +252 -0
- package/src/styles/inspector.css +360 -0
- package/src/styles/left-column.css +1628 -0
- package/src/styles/library-preview.css +575 -0
- package/src/styles/library.css +512 -0
- package/src/styles/modes/code.css +569 -0
- package/src/styles/modes/component.css +1561 -0
- package/src/styles/modes/material.css +1201 -0
- package/src/styles/modes/storyboard.css +518 -0
- package/src/styles/share-component.css +49 -0
- package/src/styles/shell.css +653 -0
- package/src/styles/shot-brief.css +360 -0
- package/src/styles/states.css +76 -0
- package/src/styles/sync.css +380 -0
- package/src/styles/timeline-graph.css +384 -0
- package/src/styles/timeline-meters.css +89 -0
- package/src/styles/timeline-rows.css +1959 -0
- package/src/styles/timeline-sound.css +1003 -0
- package/src/styles/timeline.css +754 -0
- package/src/styles/tool-footer.css +525 -0
- package/src/styles/topbar.css +886 -0
- package/src/styles/versions.css +262 -0
- package/src/styles.css +72 -2921
- package/src/tools.ts +108 -23
- package/dist/assets/index-B7notge7.css +0 -1
- package/dist/assets/index-BBE6Ta9L.js +0 -52
- package/src/panels/files/icons.tsx +0 -118
- package/src/panels/header/DocSwitcher.tsx +0 -85
- package/src/panels/header/TransportBar.tsx +0 -86
- package/src/panels/inspector/animate/BlockTiming.tsx +0 -341
- package/src/panels/inspector/animate/DuringBlocks.tsx +0 -85
- package/src/panels/inspector/animate/InOutPresets.tsx +0 -57
- package/src/panels/inspector/animate/ResolvedChannels.tsx +0 -150
- package/src/panels/inspector/animate/useBlocks.ts +0 -43
- package/src/panels/material/MaterialPicker.tsx +0 -172
- package/src/panels/timeline/SceneStrip.tsx +0 -145
- package/src/panels/toolbar/AddMenu.tsx +0 -230
- package/src/stage/MoveGizmo.tsx +0 -411
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
// The scene's camera
|
|
2
|
-
// selected
|
|
1
|
+
// The scene's camera: where it looks, its lens, its zoom and its orbit. Shown
|
|
2
|
+
// in both contexts when nothing is selected, after the context's own section
|
|
3
|
+
// (see `CONTAINER_LAYOUT`).
|
|
3
4
|
//
|
|
4
5
|
// ── THE SAME TWO TRUTHS THE LAYER INSPECTOR FOLLOWS ─────────────────────
|
|
5
6
|
//
|
|
@@ -12,48 +13,257 @@
|
|
|
12
13
|
// onwards `cameraAt` is painting a shot's framing, so writing `scene.camera`
|
|
13
14
|
// there would dirty the document and move nothing. That refusal is not written
|
|
14
15
|
// here. It is `writeFraming`'s, reached through the store's `writeCamera`, the
|
|
15
|
-
// same seam the
|
|
16
|
-
// is a keyboard
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
// same seam the gizmo drag, the align and the fit all go through. This panel
|
|
17
|
+
// is a keyboard gizmo and deliberately has no opinion of its own.
|
|
18
|
+
//
|
|
19
|
+
// ── AND IT SAYS WHAT A CHANGE WILL DO, BEFORE ONE IS MADE ───────────────
|
|
20
|
+
//
|
|
21
|
+
// `cameraWriteGate` is the fork's own answer, asked up front: held by which
|
|
22
|
+
// move, or edits which move, or adds one. The same sentence the error strip
|
|
23
|
+
// speaks after a refused drag, said here while the author is still reading.
|
|
24
|
+
//
|
|
25
|
+
// ── A DRAG HERE IS A STAGE DRAG ─────────────────────────────────────────
|
|
26
|
+
//
|
|
27
|
+
// The fields and the zoom slider scrub LIVE, through the stage's own
|
|
28
|
+
// framing lane (`onFramingGestureStart`/`End`): one gesture, one undo entry,
|
|
29
|
+
// and the same "a lane already open wins" refusal the gizmo gets. They used
|
|
30
|
+
// to commit only on release, so the stage did not move while the number did.
|
|
31
|
+
//
|
|
32
|
+
// ── ITS KEYS ARE ITS POSES ──────────────────────────────────────────────
|
|
33
|
+
//
|
|
34
|
+
// The camera has no property track: it animates through moves, and a move's
|
|
35
|
+
// two ends are the camera's keyframes (`cameraMarks`, the same marks the
|
|
36
|
+
// camera row draws). So each field's diamond reads those poses: KEYED when a
|
|
37
|
+
// pose sits at the playhead (a pose holds the whole framing, so every field
|
|
38
|
+
// lights together), ANIMATED when the field's value differs between poses,
|
|
39
|
+
// STATIC otherwise. A click on a keyed diamond removes the move that pose
|
|
40
|
+
// belongs to; a click anywhere else adds a move ending at the playhead
|
|
41
|
+
// (`addShotAtPlayhead`, the camera row's "+ shot"). A path's interior
|
|
42
|
+
// waypoint is read-only here, as it is on the row. While the transport plays
|
|
43
|
+
// the diamonds are disabled: their state is read off the held inspector frame
|
|
44
|
+
// while a press would add or remove a move at the live one.
|
|
45
|
+
//
|
|
46
|
+
// Each diamond sits INSIDE its field, the house in-field key, and it is the
|
|
47
|
+
// ACCENT, not `--kf`: `--kf` is a property keyframe on a track, and a camera
|
|
48
|
+
// pose is not one (model.ts says the same of its marks). The lens has no
|
|
49
|
+
// diamond at all: it is not part of a pose.
|
|
50
|
+
import { useEffect, useMemo, useRef } from "react";
|
|
51
|
+
import { InspectorSection, NumberField } from "@dailies-studio/ui";
|
|
52
|
+
import { cameraAt, cameraWriteGate, removeShot } from "@dailies-studio/shot/doc";
|
|
53
|
+
import type { Doc3D, Framing, Scene3D } from "@dailies-studio/shot/doc";
|
|
54
|
+
import type { ShotEditorStore } from "../../../state/store.js";
|
|
23
55
|
import { useShotEditor, useStore } from "../../../state/context.js";
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
56
|
+
import { SECTION_ICONS } from "../../../icons.js";
|
|
57
|
+
import { FRAMING_KEYS, FramingRows } from "../FramingRows.js";
|
|
58
|
+
import type { CameraKeys, FramingScrub } from "../FramingRows.js";
|
|
59
|
+
import { cameraMarks } from "../../timeline/model.js";
|
|
60
|
+
import { useInspectorFrame, useScrub } from "../useDocWrite.js";
|
|
61
|
+
import { patchScene } from "./SceneSection.js";
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* The camera's gesture bracket over the store's framing lane.
|
|
65
|
+
*
|
|
66
|
+
* THE LANE IS OPENED ON THE FIRST MOVE, not on the press: a press that never
|
|
67
|
+
* moves (a click to focus, a slider tap on the thumb) then opens nothing. If
|
|
68
|
+
* the lane refuses (another drag holds the history), the gesture writes
|
|
69
|
+
* nothing live and its last value is committed as one plain edit at the end,
|
|
70
|
+
* so the author's number still lands rather than vanishing.
|
|
71
|
+
*
|
|
72
|
+
* Stable for the store's lifetime, and the gesture is a ref, so the widgets
|
|
73
|
+
* reading these at pointer time always see the one gesture in flight.
|
|
74
|
+
*/
|
|
75
|
+
function useCameraScrub(store: ShotEditorStore): FramingScrub {
|
|
76
|
+
const gesture = useRef<{ open: boolean | null; last: Partial<Framing> | null } | null>(null);
|
|
77
|
+
// A section unmounted mid-drag (the subject changed under the pointer)
|
|
78
|
+
// must not leave the lane open: the next stage drag would be refused.
|
|
79
|
+
useEffect(
|
|
80
|
+
() => () => {
|
|
81
|
+
if (gesture.current?.open === true) store.stageHandlers.onFramingGestureEnd(false);
|
|
82
|
+
gesture.current = null;
|
|
83
|
+
},
|
|
84
|
+
[store],
|
|
85
|
+
);
|
|
86
|
+
return useMemo(() => {
|
|
87
|
+
const move = (patch: Partial<Framing>): void => {
|
|
88
|
+
const g = gesture.current;
|
|
89
|
+
if (g === null) return;
|
|
90
|
+
g.last = { ...g.last, ...patch };
|
|
91
|
+
if (g.open === null) g.open = store.stageHandlers.onFramingGestureStart();
|
|
92
|
+
if (g.open) store.setSceneCamera(patch);
|
|
93
|
+
};
|
|
94
|
+
const end = (commit: boolean): void => {
|
|
95
|
+
const g = gesture.current;
|
|
96
|
+
gesture.current = null;
|
|
97
|
+
if (g === null) return;
|
|
98
|
+
if (g.open === true) store.stageHandlers.onFramingGestureEnd(commit);
|
|
99
|
+
else if (commit && g.last !== null) store.setSceneCamera(g.last);
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
start: () => {
|
|
103
|
+
gesture.current = { open: null, last: null };
|
|
104
|
+
},
|
|
105
|
+
move,
|
|
106
|
+
end,
|
|
107
|
+
commit: (patch) => {
|
|
108
|
+
if (gesture.current === null) {
|
|
109
|
+
store.setSceneCamera(patch);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
move(patch);
|
|
113
|
+
end(true);
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}, [store]);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** Why the diamonds are disabled while the transport runs, as their tooltip. */
|
|
120
|
+
const PLAYING_ACTION = "Pause playback to add or remove a camera move.";
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* The diamonds' data for the scene at a scene-local frame. Pure, so the rule
|
|
124
|
+
* is testable without a store: `remove` is handed the id of the move to drop
|
|
125
|
+
* and `add` adds one at the playhead.
|
|
126
|
+
*/
|
|
127
|
+
export function cameraKeys(
|
|
128
|
+
doc: Doc3D,
|
|
129
|
+
scene: Scene3D,
|
|
130
|
+
sceneFrame: number,
|
|
131
|
+
actions: { add(): void; remove(shotId: string): void },
|
|
132
|
+
): { keys: CameraKeys; count: number } {
|
|
133
|
+
const marks = cameraMarks(scene, doc.fps);
|
|
134
|
+
const poses = marks.map((mark) => cameraAt(scene, mark.frame, doc.fps, doc.size));
|
|
135
|
+
const animated = new Set(
|
|
136
|
+
FRAMING_KEYS.filter((key) => poses.some((pose) => (pose[key] ?? 0) !== (poses[0]![key] ?? 0))),
|
|
137
|
+
);
|
|
138
|
+
const here = marks.find((mark) => mark.frame === sceneFrame);
|
|
139
|
+
const shot = here === undefined ? undefined : scene.shots.find((s) => here.id.startsWith(`${s.id}:`));
|
|
140
|
+
let action: string;
|
|
141
|
+
let toggle: (() => void) | null;
|
|
142
|
+
if (here === undefined) {
|
|
143
|
+
action = "Click to add a camera move ending at the playhead.";
|
|
144
|
+
toggle = actions.add;
|
|
145
|
+
} else if (here.kind === "waypoint" || shot === undefined) {
|
|
146
|
+
action = "A path waypoint is read-only here: edit its pose in the move's waypoint rows.";
|
|
147
|
+
toggle = null;
|
|
148
|
+
} else {
|
|
149
|
+
action = `Click to remove the camera move “${shot.label}”.`;
|
|
150
|
+
toggle = () => actions.remove(shot.id);
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
count: marks.length,
|
|
154
|
+
keys: {
|
|
155
|
+
stateOf: (key) => (here !== undefined ? "keyed" : animated.has(key) ? "animated" : "static"),
|
|
156
|
+
animatedOf: (key) => animated.has(key),
|
|
157
|
+
action,
|
|
158
|
+
toggle,
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
26
162
|
|
|
27
163
|
export function CameraSection() {
|
|
28
164
|
const store = useStore();
|
|
29
165
|
const doc = useShotEditor((s) => s.doc);
|
|
30
166
|
const animate = useShotEditor((s) => s.animateMode);
|
|
167
|
+
const driver = useShotEditor((s) => s.cameraDriver);
|
|
168
|
+
const playing = useShotEditor((s) => s.playing);
|
|
31
169
|
const { sceneId, sceneFrame } = useInspectorFrame();
|
|
170
|
+
const scrub = useCameraScrub(store);
|
|
171
|
+
// The lens writes the SCENE, so it rides the scene's scrub and its one
|
|
172
|
+
// patch op rather than the framing lane. The scene is read live per capture,
|
|
173
|
+
// for `SceneSection`'s reason.
|
|
174
|
+
const dragLens = useScrub((d, raw) => {
|
|
175
|
+
const id = store.getState().sceneId;
|
|
176
|
+
return id === null ? d : patchScene(d, id, raw as Partial<Scene3D>, store.getState().frame);
|
|
177
|
+
});
|
|
32
178
|
if (doc === null || sceneId === null) return null;
|
|
33
179
|
const scene = doc.scenesById[sceneId];
|
|
34
180
|
if (scene === undefined) return null;
|
|
35
181
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
182
|
+
const gate = cameraWriteGate(scene, sceneFrame, animate);
|
|
183
|
+
const { keys, count } = cameraKeys(doc, scene, sceneFrame, {
|
|
184
|
+
add: () => store.addShotAtPlayhead(sceneId),
|
|
185
|
+
remove: (shotId) => store.edit((d) => removeShot(d, sceneId, shotId)),
|
|
186
|
+
});
|
|
40
187
|
|
|
41
188
|
return (
|
|
42
|
-
|
|
189
|
+
// No section scope: the camera's rows keep the rhythm and the fields every
|
|
190
|
+
// other section keeps because both are the house's (widgets.css).
|
|
191
|
+
<InspectorSection
|
|
192
|
+
title="Camera"
|
|
193
|
+
icon={SECTION_ICONS.camera}
|
|
194
|
+
note={count > 0 ? <span className="camera-field-key-count">· {count} keyed</span> : undefined}
|
|
195
|
+
persistKey="shot:camera"
|
|
196
|
+
>
|
|
197
|
+
{driver !== null && (
|
|
198
|
+
<span className="insp-notice" data-testid="camera-driven-by">
|
|
199
|
+
Camera driven by {driver}. The framing below has no effect while it is.
|
|
200
|
+
</span>
|
|
201
|
+
)}
|
|
43
202
|
<FramingRows
|
|
44
|
-
framing={cameraAt(scene, sceneFrame, doc.fps)}
|
|
203
|
+
framing={cameraAt(scene, sceneFrame, doc.fps, doc.size)}
|
|
45
204
|
name="Camera"
|
|
46
|
-
|
|
205
|
+
scrub={scrub}
|
|
206
|
+
zoomSlider
|
|
207
|
+
keys={playing ? { ...keys, toggle: null, action: PLAYING_ACTION } : keys}
|
|
208
|
+
fov={
|
|
209
|
+
// THE ONLY CONTROL ON PARALLAX STRENGTH. A wide fov puts the camera
|
|
210
|
+
// close, so a depth offset changes scale a lot; a long lens puts it
|
|
211
|
+
// far and the same offset barely registers (resolve.ts's
|
|
212
|
+
// planeDistance). Moved here from the Shot section: it is the
|
|
213
|
+
// camera's lens, whatever object stores it.
|
|
214
|
+
//
|
|
215
|
+
// Its name starts with the word in its box, so a speech command and
|
|
216
|
+
// a screen reader use the word the author reads. No diamond: the
|
|
217
|
+
// lens is the scene's, not a pose's, and a dead diamond would only
|
|
218
|
+
// claim it keys.
|
|
219
|
+
<NumberField
|
|
220
|
+
value={scene.fovDeg}
|
|
221
|
+
label="FOV"
|
|
222
|
+
ariaLabel="FOV, field of view"
|
|
223
|
+
unit="°"
|
|
224
|
+
min={5}
|
|
225
|
+
max={120}
|
|
226
|
+
step={1}
|
|
227
|
+
title="The lens. A wide field of view puts the camera close, so depth changes scale a lot; a long lens puts it far, and the same depth barely registers"
|
|
228
|
+
onScrubStart={dragLens.start}
|
|
229
|
+
onScrub={(fovDeg) => dragLens.move({ fovDeg } satisfies Partial<Scene3D>)}
|
|
230
|
+
onScrubEnd={dragLens.end}
|
|
231
|
+
onCommit={(fovDeg) => {
|
|
232
|
+
store.edit((d) => patchScene(d, sceneId, { fovDeg }, store.getState().frame));
|
|
233
|
+
}}
|
|
234
|
+
/>
|
|
235
|
+
}
|
|
47
236
|
/>
|
|
48
|
-
{
|
|
237
|
+
{gate.kind === "held" && gate.shot !== undefined && (
|
|
49
238
|
// The fields stay LIVE. Typing into one produces the refusal by name in
|
|
50
239
|
// the error strip, which is how the author learns the rule; a disabled
|
|
51
240
|
// field would only teach them that the panel is broken.
|
|
52
|
-
|
|
53
|
-
|
|
241
|
+
// `insp-notice` and NOT `insp-dim`: the dim face is the MONO NUMERAL
|
|
242
|
+
// one and it sets `white-space: nowrap`, so this two-sentence
|
|
243
|
+
// explanation was laid out as a single line and clipped at the rail's
|
|
244
|
+
// edge, so the author saw "Held by the camera move" and none of the two
|
|
245
|
+
// ways out of it. `insp-dim` is for a value or a unit; a sentence
|
|
246
|
+
// wraps.
|
|
247
|
+
<span className="insp-notice" data-testid="camera-held-by">
|
|
248
|
+
Held by the camera move “{gate.shot.label}” from frame {gate.shot.frame}. Turn on Animate (⇧A) to author the
|
|
54
249
|
move, or put the playhead before it.
|
|
55
250
|
</span>
|
|
56
251
|
)}
|
|
252
|
+
{gate.kind === "free" && gate.writes === "editsMove" && gate.shot !== undefined && (
|
|
253
|
+
<span className="insp-notice" data-testid="camera-edits-move">
|
|
254
|
+
Animate is on: a change here edits the end of the camera move “{gate.shot.label}”.
|
|
255
|
+
</span>
|
|
256
|
+
)}
|
|
257
|
+
{gate.kind === "free" && gate.writes === "newMove" && (
|
|
258
|
+
<span className="insp-notice" data-testid="camera-new-move">
|
|
259
|
+
Animate is on: a change here adds a camera move ending at the playhead.
|
|
260
|
+
</span>
|
|
261
|
+
)}
|
|
262
|
+
{(gate.kind === "derived" || gate.kind === "shaped" || gate.kind === "tooEarly") && (
|
|
263
|
+
<span className="insp-notice" data-testid="camera-gate">
|
|
264
|
+
{gate.refusal}
|
|
265
|
+
</span>
|
|
266
|
+
)}
|
|
57
267
|
</InspectorSection>
|
|
58
268
|
);
|
|
59
269
|
}
|