@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
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// The rulers' arithmetic (gap 5), kept out of the component so it is tested
|
|
2
|
+
// without a canvas.
|
|
3
|
+
//
|
|
4
|
+
// A RULER READS THE INSPECTOR'S NUMBERS: centre origin, x right, y UP. So a
|
|
5
|
+
// y ruler counts upward, and a guide placed at a reading sits exactly where a
|
|
6
|
+
// layer with that X or Y would. The stage's design frame runs y DOWN, which is
|
|
7
|
+
// why every y mapping below carries a negative scale.
|
|
8
|
+
|
|
9
|
+
/** The ruler band's thickness, in screen px. */
|
|
10
|
+
export const RULER_BAND_PX = 20;
|
|
11
|
+
/** The least screen distance between two labelled ticks. */
|
|
12
|
+
export const RULER_LABEL_GAP_PX = 50;
|
|
13
|
+
|
|
14
|
+
/** Ruler units to screen px on one axis: `px = origin + scale * value`. */
|
|
15
|
+
export interface AxisMap {
|
|
16
|
+
origin: number;
|
|
17
|
+
scale: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** The labelled step for a zoom: 1, 2 or 5 times a power of ten, the
|
|
21
|
+
* smallest one whose labels stand at least `RULER_LABEL_GAP_PX` apart. Never
|
|
22
|
+
* under 1, so a label is always a whole pixel. */
|
|
23
|
+
export function rulerStep(pxPerUnit: number): number {
|
|
24
|
+
const scale = Math.abs(pxPerUnit);
|
|
25
|
+
if (!(scale > 0) || !Number.isFinite(scale)) return 1;
|
|
26
|
+
const need = RULER_LABEL_GAP_PX / scale;
|
|
27
|
+
let power = 10 ** Math.floor(Math.log10(need));
|
|
28
|
+
for (;;) {
|
|
29
|
+
for (const m of [1, 2, 5]) {
|
|
30
|
+
const step = m * power;
|
|
31
|
+
if (step >= need) return Math.max(1, step);
|
|
32
|
+
}
|
|
33
|
+
power *= 10;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** The minor interval under a labelled step: quarters of a 2, fifths of a 1
|
|
38
|
+
* or a 5, so every minor tick lands on a round number. */
|
|
39
|
+
export function minorStep(step: number): number {
|
|
40
|
+
const lead = Math.round(step / 10 ** Math.floor(Math.log10(step) + 1e-9));
|
|
41
|
+
return lead === 2 ? step / 4 : step / 5;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface RulerTicks {
|
|
45
|
+
major: { px: number; value: number }[];
|
|
46
|
+
minor: number[];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Every tick between two screen px on one ruler. */
|
|
50
|
+
export function rulerTicks(map: AxisMap, from: number, to: number): RulerTicks {
|
|
51
|
+
const out: RulerTicks = { major: [], minor: [] };
|
|
52
|
+
if (!(Math.abs(map.scale) > 0) || !Number.isFinite(map.scale) || !Number.isFinite(map.origin)) return out;
|
|
53
|
+
const step = rulerStep(map.scale);
|
|
54
|
+
// A minor interval is at least a fifth of a step, so never under 10 px:
|
|
55
|
+
// every one is drawn.
|
|
56
|
+
const unit = minorStep(step);
|
|
57
|
+
const a = (from - map.origin) / map.scale;
|
|
58
|
+
const b = (to - map.origin) / map.scale;
|
|
59
|
+
const lo = Math.min(a, b);
|
|
60
|
+
const hi = Math.max(a, b);
|
|
61
|
+
// Counted in whole minor units so a long ruler does not drift off its grid.
|
|
62
|
+
const first = Math.ceil(lo / unit);
|
|
63
|
+
const last = Math.floor(hi / unit);
|
|
64
|
+
const perMajor = Math.round(step / unit);
|
|
65
|
+
for (let i = first; i <= last; i++) {
|
|
66
|
+
const value = i * unit;
|
|
67
|
+
const px = map.origin + map.scale * value;
|
|
68
|
+
if (i % perMajor === 0) out.major.push({ px, value });
|
|
69
|
+
else out.minor.push(px);
|
|
70
|
+
}
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** A ruler label: a whole number, and never "-0". */
|
|
75
|
+
export function rulerLabel(value: number): string {
|
|
76
|
+
const n = Math.round(value);
|
|
77
|
+
return n === 0 ? "0" : String(n);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** The ruler map on one axis from two projected design points. `a` is the
|
|
81
|
+
* frame centre on screen and `b` the point 100 design px along the axis
|
|
82
|
+
* (y DOWN, as the design frame runs); the y map is flipped to read y up. */
|
|
83
|
+
export function axisMapFrom(axis: "x" | "y", a: readonly [number, number], b: readonly [number, number]): AxisMap {
|
|
84
|
+
const i = axis === "x" ? 0 : 1;
|
|
85
|
+
const scale = (b[i] - a[i]) / 100;
|
|
86
|
+
return { origin: a[i], scale: axis === "x" ? scale : -scale };
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** A screen px back to a ruler reading. */
|
|
90
|
+
export function valueAt(map: AxisMap, px: number): number {
|
|
91
|
+
return map.scale === 0 ? 0 : (px - map.origin) / map.scale;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Where a dragged guide lands: rounded to a whole pixel, and with smart
|
|
96
|
+
* guides on, pulled onto the frame's centre or edges within `threshold`
|
|
97
|
+
* screen px. Holding Ctrl (`free`) drops the pull, as it does for a layer.
|
|
98
|
+
*/
|
|
99
|
+
export function snapGuide(
|
|
100
|
+
value: number,
|
|
101
|
+
axis: "x" | "y",
|
|
102
|
+
frame: { width: number; height: number },
|
|
103
|
+
thresholdPx: number,
|
|
104
|
+
pxPerUnit: number,
|
|
105
|
+
smart: boolean,
|
|
106
|
+
free: boolean,
|
|
107
|
+
): number {
|
|
108
|
+
if (smart && !free) {
|
|
109
|
+
const half = (axis === "x" ? frame.width : frame.height) / 2;
|
|
110
|
+
const reach = thresholdPx / Math.max(Math.abs(pxPerUnit), 1e-6);
|
|
111
|
+
for (const target of [0, -half, half]) {
|
|
112
|
+
if (Math.abs(value - target) <= reach) return target;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const n = Math.round(value);
|
|
116
|
+
return n === 0 ? 0 : n;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** A pane's clear rect with the rulers' bands taken off its top and left, so
|
|
120
|
+
* a fit frames the shot clear of them. */
|
|
121
|
+
export function clearOfRulers<R extends { x: number; y: number; width: number; height: number }>(rect: R): R {
|
|
122
|
+
return {
|
|
123
|
+
...rect,
|
|
124
|
+
x: rect.x + RULER_BAND_PX,
|
|
125
|
+
y: rect.y + RULER_BAND_PX,
|
|
126
|
+
width: Math.max(0, rect.width - RULER_BAND_PX),
|
|
127
|
+
height: Math.max(0, rect.height - RULER_BAND_PX),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// How big is the scene a driven camera lives in?
|
|
2
|
+
//
|
|
3
|
+
// The camera body (frustumGeometry.ts) is sized against the SCENE'S extent. On
|
|
4
|
+
// the rig that is the design frame; when a component drives the camera the
|
|
5
|
+
// scene is whatever that component built, at whatever scale it chose (the
|
|
6
|
+
// future-2035 city is ~200 units across inside a 1920-unit frame), and the only
|
|
7
|
+
// honest measure of it is the live content's bounding box.
|
|
8
|
+
//
|
|
9
|
+
// Three-typed but GPU-free, so it is testable in node like the geometry it
|
|
10
|
+
// feeds.
|
|
11
|
+
import { BackSide, Box3, Vector3 } from "three";
|
|
12
|
+
import type { Material, Object3D } from "three";
|
|
13
|
+
import { GLYPH_DRAW_ORDER, GLYPH_TEXT_MARK } from "@dailies-studio/shot/doc";
|
|
14
|
+
|
|
15
|
+
const _box = new Box3();
|
|
16
|
+
const _size = new Vector3();
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A mesh whose material(s) are ALL `BackSide`: a shell meant to be seen from
|
|
20
|
+
* inside (a sky dome, an environment sphere). Under a single-sided override it
|
|
21
|
+
* is a wall around everything else (see `hideInsideOut`), and in a bounds walk
|
|
22
|
+
* it is a 1000-unit sphere that says nothing about where the content is.
|
|
23
|
+
*/
|
|
24
|
+
export function isInsideOutShell(o: Object3D): boolean {
|
|
25
|
+
const m = o as Object3D & { isMesh?: boolean; material?: Material | Material[] };
|
|
26
|
+
if (m.isMesh !== true || m.material === undefined) return false;
|
|
27
|
+
const mats = Array.isArray(m.material) ? m.material : [m.material];
|
|
28
|
+
return mats.length > 0 && mats.every((mat) => mat.side === BackSide);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The largest axis of the visible content's bounding box, or NaN when there is
|
|
33
|
+
* nothing to measure.
|
|
34
|
+
*
|
|
35
|
+
* Counts MESHES the shot camera can see (layer bit 0: every editor-only object,
|
|
36
|
+
* the grid, the gizmos and the marks live on bit 1 alone) and skips inside-out
|
|
37
|
+
* shells. Each mesh contributes its own geometry box under its own world
|
|
38
|
+
* matrix, never its children's, so an editor object parented under a layer
|
|
39
|
+
* cannot leak in. `out` is the caller's scratch and holds the box afterwards,
|
|
40
|
+
* for anyone who also wants its centre.
|
|
41
|
+
*
|
|
42
|
+
* GLYPH TEXT IS THE ONE EXCEPTION, and it has to be. A glyph draw is an
|
|
43
|
+
* instanced mesh whose geometry is a unit quad and whose world matrix is the
|
|
44
|
+
* publication object's identity: every glyph on screen is a row in an instanced
|
|
45
|
+
* attribute, so the geometry box says the whole paragraph is a 1-unit square at
|
|
46
|
+
* the origin. Counting it would pull the extent to the origin and shrink the
|
|
47
|
+
* camera body against a scene it measured wrongly. The PARAGRAPH object knows,
|
|
48
|
+
* so the draws are skipped and the paragraphs unioned instead.
|
|
49
|
+
*/
|
|
50
|
+
export function sceneExtent(root: Object3D, out: Box3): number {
|
|
51
|
+
out.makeEmpty();
|
|
52
|
+
root.traverseVisible((o) => {
|
|
53
|
+
if ((o.layers.mask & 1) === 0) return;
|
|
54
|
+
if (o.userData[GLYPH_TEXT_MARK] === true) {
|
|
55
|
+
const local = (o as Object3D & { boundingBox?: Box3 }).boundingBox;
|
|
56
|
+
if (local === undefined || local.isEmpty()) return;
|
|
57
|
+
_box.copy(local).applyMatrix4(o.matrixWorld);
|
|
58
|
+
out.union(_box);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const m = o as Object3D & { isMesh?: boolean; geometry?: { boundingBox: Box3 | null; computeBoundingBox(): void } };
|
|
62
|
+
if (m.isMesh !== true || m.geometry === undefined) return;
|
|
63
|
+
if (o.userData[GLYPH_DRAW_ORDER] !== undefined) return;
|
|
64
|
+
if (isInsideOutShell(o)) return;
|
|
65
|
+
if (m.geometry.boundingBox === null) m.geometry.computeBoundingBox();
|
|
66
|
+
const local = m.geometry.boundingBox;
|
|
67
|
+
if (local === null || local.isEmpty()) return;
|
|
68
|
+
_box.copy(local).applyMatrix4(o.matrixWorld);
|
|
69
|
+
out.union(_box);
|
|
70
|
+
});
|
|
71
|
+
if (out.isEmpty()) return Number.NaN;
|
|
72
|
+
out.getSize(_size);
|
|
73
|
+
const extent = Math.max(_size.x, _size.y, _size.z);
|
|
74
|
+
return Number.isFinite(extent) && extent > 0 ? extent : Number.NaN;
|
|
75
|
+
}
|
package/src/stage/shading.ts
CHANGED
|
@@ -16,6 +16,26 @@ export type ShadingMode = "solid" | "wireframe" | "material" | "rendered";
|
|
|
16
16
|
/** Bar order, which is also Z's cycle order: cheapest first, truest last. */
|
|
17
17
|
export const SHADING_MODES: readonly ShadingMode[] = ["solid", "wireframe", "material", "rendered"];
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* The word for each mode, in the one place that has it.
|
|
21
|
+
*
|
|
22
|
+
* The App menu used to title-case the id and the ShadingBar hand-wrote the
|
|
23
|
+
* same four words beside its glyphs, so renaming a mode moved the menu row and
|
|
24
|
+
* left the bar's tooltip on the old name. A `Record` over the union, so a
|
|
25
|
+
* fifth mode fails to compile here rather than arriving unnamed.
|
|
26
|
+
*/
|
|
27
|
+
export const SHADING_LABELS: Record<ShadingMode, string> = {
|
|
28
|
+
solid: "Solid",
|
|
29
|
+
wireframe: "Wireframe",
|
|
30
|
+
material: "Material",
|
|
31
|
+
rendered: "Rendered",
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** What to call this mode on a control or a menu row. */
|
|
35
|
+
export function shadingLabel(mode: ShadingMode): string {
|
|
36
|
+
return SHADING_LABELS[mode];
|
|
37
|
+
}
|
|
38
|
+
|
|
19
39
|
/** Z's cycle, wrapping. */
|
|
20
40
|
export function nextShading(mode: ShadingMode): ShadingMode {
|
|
21
41
|
const at = SHADING_MODES.indexOf(mode);
|