@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,653 @@
|
|
|
1
|
+
/* The shell: the docked grid and where every cell sits in it, the stage frame, the tool footer's row, the floating recipe, the error strip and empty state, the resize handles, the shared stage window, scrollbars and the export scrims. */
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
/* ONE STEP PER TREE LEVEL, for every tree the chrome draws (the outliner,
|
|
5
|
+
the timeline's label column, the curve list, the code tree). The markup
|
|
6
|
+
passes only `--depth`; the step and each list's base inset live in CSS. */
|
|
7
|
+
--tree-indent: 12px;
|
|
8
|
+
|
|
9
|
+
/* The rounding of what still floats: the tool flyouts and the notices.
|
|
10
|
+
The chrome's own name, not the house --panel-radius, which the retired
|
|
11
|
+
editor still reads at 20px. */
|
|
12
|
+
--float-radius: 12px;
|
|
13
|
+
|
|
14
|
+
/* The inset of a menu that drops off a bar: the tool flyouts and the
|
|
15
|
+
shading menu. The name is the retired pill's, which these menus took
|
|
16
|
+
their inset from; the value stayed so no menu moves. Off the space scale
|
|
17
|
+
on purpose, as it always was. */
|
|
18
|
+
--pill-pad: 5px;
|
|
19
|
+
|
|
20
|
+
/* THE TOOL FOOTER: the docked row under the canvas cell that holds the
|
|
21
|
+
tools and the view track. Mirrors TOOL_FOOTER_H in state/panelSize.ts,
|
|
22
|
+
pinned by rowMetrics.test.ts. The grid reads `--tool-footer-row`, which
|
|
23
|
+
is 0 until `.shell.has-tool-footer` opens it. It opens at every level of
|
|
24
|
+
the stage workspace (the Project included, where it holds the shot's
|
|
25
|
+
metadata), so only the modes and a page with no document give the canvas
|
|
26
|
+
its height back. */
|
|
27
|
+
--tool-footer-h: 48px;
|
|
28
|
+
--tool-footer-row: 0px;
|
|
29
|
+
|
|
30
|
+
/* The grid's three dragged tracks. App.tsx writes all three from the stored
|
|
31
|
+
sizes through `fitShell` (state/panelSize.ts); these literals are only the
|
|
32
|
+
pre-hydration defaults and match RAIL_WIDTH, INSPECTOR_WIDTH and
|
|
33
|
+
DOCK_HEIGHT's defaults. A COLLAPSED column keeps its track: the timeline's
|
|
34
|
+
name column and meters sit under it, so collapsing never moves a bar, and
|
|
35
|
+
the canvas spans over the empty track instead. */
|
|
36
|
+
--rail-w: 224px;
|
|
37
|
+
--inspector-w: 304px;
|
|
38
|
+
--dock-row-h: 300px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
* {
|
|
42
|
+
box-sizing: border-box;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
html,
|
|
46
|
+
body,
|
|
47
|
+
#root {
|
|
48
|
+
height: 100%;
|
|
49
|
+
margin: 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
body {
|
|
53
|
+
font: var(--type-md)/var(--leading-body) var(--font-sans);
|
|
54
|
+
color: var(--ink-1);
|
|
55
|
+
background: var(--surface-app);
|
|
56
|
+
-webkit-font-smoothing: antialiased;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* ── THE DOCKED GRID ───────────────────────────────────────────────────────
|
|
60
|
+
One grid, edge to edge. Rows: the top bar, the canvas bar, the stage, the
|
|
61
|
+
tool footer, the bottom row. Columns: the left column, the canvas, the right column. NO GAP:
|
|
62
|
+
a seam is a 1px border owned by one of the two cells beside it, so no live
|
|
63
|
+
stage pixel ever shows through a seam.
|
|
64
|
+
|
|
65
|
+
`overflow: clip`, never `hidden`: `hidden` makes the shell a scroll
|
|
66
|
+
container, and a focused control that overflows sideways would scroll every
|
|
67
|
+
cell while the fixed iframe stays put. `clip` scrolls nothing and makes no
|
|
68
|
+
containing block. And still NO transform, filter, backdrop-filter, contain
|
|
69
|
+
or will-change on the shell: any of those makes it the containing block of
|
|
70
|
+
the fixed iframe, which would then size itself to the shell's box. */
|
|
71
|
+
.shell {
|
|
72
|
+
position: relative;
|
|
73
|
+
height: 100%;
|
|
74
|
+
display: grid;
|
|
75
|
+
grid-template-columns: [edge-l] var(--rail-w) [rail-r] minmax(0, 1fr) [insp-l] var(--inspector-w) [edge-r];
|
|
76
|
+
grid-template-rows: [edge-t] var(--topbar-h) [main-t] var(--panel-head-h) [stage-t] minmax(0, 1fr) [foot-t] var(--tool-footer-row) [main-b] var(--dock-row-h) [edge-b];
|
|
77
|
+
overflow: clip;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* A CLASS, not a measured height: App sets it in the same commit that mounts
|
|
81
|
+
`.tool-footer`, so the row and its content arrive together and there is no
|
|
82
|
+
frame where the track is open with nothing in it, or the footer is drawn
|
|
83
|
+
into a 0px track. */
|
|
84
|
+
.shell.has-tool-footer {
|
|
85
|
+
--tool-footer-row: var(--tool-footer-h);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* THE TOOLBAR ON TOP (Preferences > Canvas > Toolbar position). The footer's
|
|
89
|
+
row moves up between the canvas bar and the stage; the dock row stays at the
|
|
90
|
+
bottom and the footer still costs the same height, so `dockCeiling` is
|
|
91
|
+
unchanged. `stage-t / foot-t` keeps meaning "the stage's own track" in both
|
|
92
|
+
templates (here `foot-t` is where the stage ends), so the canvas cell, the
|
|
93
|
+
overlay strip and every mode that spans the stage need no override. Only the
|
|
94
|
+
two boxes the move is ABOUT take one: the canvas bar ends at `head-b`, and
|
|
95
|
+
the footer sits `head-b / stage-t`. */
|
|
96
|
+
.shell.tool-footer-top {
|
|
97
|
+
grid-template-rows: [edge-t] var(--topbar-h) [main-t] var(--panel-head-h) [head-b] var(--tool-footer-row) [stage-t] minmax(0, 1fr) [foot-t main-b] var(--dock-row-h) [edge-b];
|
|
98
|
+
}
|
|
99
|
+
.shell.tool-footer-top > .control-strip {
|
|
100
|
+
grid-row: main-t / head-b;
|
|
101
|
+
}
|
|
102
|
+
.shell.tool-footer-top > .tool-footer {
|
|
103
|
+
grid-row: head-b / stage-t;
|
|
104
|
+
border-top: 0;
|
|
105
|
+
border-bottom: 1px solid var(--line);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* The stage is the whole window, BEHIND the cells: every docked cell is
|
|
109
|
+
opaque and positioned above it, so the picture shows only through the cell
|
|
110
|
+
nothing is docked in. Sizing the iframe to that cell was rejected: every
|
|
111
|
+
collapse, Video toggle and mode swap would become a canvas resize, and a
|
|
112
|
+
resize while a compile is in flight presents a cleared canvas. */
|
|
113
|
+
.stage-frame {
|
|
114
|
+
position: fixed;
|
|
115
|
+
inset: 0;
|
|
116
|
+
width: 100%;
|
|
117
|
+
height: 100%;
|
|
118
|
+
border: 0;
|
|
119
|
+
display: block;
|
|
120
|
+
z-index: var(--z-stage);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* ── EVERY DOCKED CELL ─────────────────────────────────────────────────────
|
|
124
|
+
Positioned with a z-index, which does two jobs: it paints the cell above
|
|
125
|
+
the fixed iframe (a non-positioned grid cell would paint UNDER it), and it
|
|
126
|
+
makes the cell a stacking context of its own, so the z-indices inside a
|
|
127
|
+
panel stay local to it. Opaque, with its seams drawn by its own borders. */
|
|
128
|
+
.shell-header,
|
|
129
|
+
.left-rail,
|
|
130
|
+
.control-strip,
|
|
131
|
+
.inspector-column,
|
|
132
|
+
.timeline-dock {
|
|
133
|
+
position: relative;
|
|
134
|
+
z-index: var(--z-panel);
|
|
135
|
+
min-width: 0;
|
|
136
|
+
min-height: 0;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* A collapsed column hides its cell, not its track: `visibility` keeps the
|
|
140
|
+
panel laid out, so its scroll position and virtualised rows survive the
|
|
141
|
+
round trip, and `measureInset` skips a hidden box. */
|
|
142
|
+
.shell.is-rail-collapsed > .left-rail,
|
|
143
|
+
.shell.is-inspector-collapsed > .inspector-column {
|
|
144
|
+
visibility: hidden;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* And the canvas takes the collapsed column's width. Everything that lives in
|
|
148
|
+
the canvas column spans out over the empty track. */
|
|
149
|
+
.shell.is-rail-collapsed > .control-strip,
|
|
150
|
+
.shell.is-rail-collapsed > .canvas-cell,
|
|
151
|
+
.shell.is-rail-collapsed > .tool-footer,
|
|
152
|
+
.shell.is-rail-collapsed > .overlay-strip,
|
|
153
|
+
.shell.is-rail-collapsed > .empty-state,
|
|
154
|
+
.shell.is-rail-collapsed > .panel-crash {
|
|
155
|
+
grid-column-start: edge-l;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.shell.is-inspector-collapsed > .control-strip,
|
|
159
|
+
.shell.is-inspector-collapsed > .canvas-cell,
|
|
160
|
+
.shell.is-inspector-collapsed > .tool-footer,
|
|
161
|
+
.shell.is-inspector-collapsed > .overlay-strip,
|
|
162
|
+
.shell.is-inspector-collapsed > .empty-state,
|
|
163
|
+
.shell.is-inspector-collapsed > .panel-crash {
|
|
164
|
+
grid-column-end: edge-r;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* ── THE MODES' CELLS ──────────────────────────────────────────────────────
|
|
168
|
+
A mode shows its content in the docked grid's own cells (cellSlots.tsx).
|
|
169
|
+
The canvas cell is the one cell nothing is docked in: empty in the stage
|
|
170
|
+
workspace, so the picture shows through, and a mode's centre otherwise.
|
|
171
|
+
It takes no pointer and paints nothing itself, because a mode's centre can
|
|
172
|
+
be a HOLE onto the stage: each part that paints opts back in, and a hole
|
|
173
|
+
(`.stage-window`) stays out, so a drag on it reaches the stage. */
|
|
174
|
+
.canvas-cell {
|
|
175
|
+
grid-column: rail-r / insp-l;
|
|
176
|
+
grid-row: stage-t / foot-t;
|
|
177
|
+
position: relative;
|
|
178
|
+
z-index: var(--z-panel);
|
|
179
|
+
display: flex;
|
|
180
|
+
flex-direction: column;
|
|
181
|
+
min-width: 0;
|
|
182
|
+
min-height: 0;
|
|
183
|
+
pointer-events: none;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* A SURFACE STILL LOADING (app/lazySurfaces.tsx): its skeleton holds its
|
|
187
|
+
cells, so nothing moves when its chunk lands. The board's is its bar on the
|
|
188
|
+
desk ground; a mode's is its left column's head and an opaque canvas, so the
|
|
189
|
+
stage never shows through a cell the mode is about to fill. */
|
|
190
|
+
.board-skeleton,
|
|
191
|
+
.mode-skeleton {
|
|
192
|
+
flex: 1 1 0;
|
|
193
|
+
display: flex;
|
|
194
|
+
flex-direction: column;
|
|
195
|
+
min-width: 0;
|
|
196
|
+
min-height: 0;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.board-skeleton {
|
|
200
|
+
pointer-events: auto;
|
|
201
|
+
background-color: var(--surface-board);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.mode-skeleton.is-canvas {
|
|
205
|
+
pointer-events: auto;
|
|
206
|
+
background-color: var(--surface-app);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/* The bottom row's stand-in, for Code Studio, whose strip replaces the
|
|
210
|
+
timeline: the same three tracks, as a subgrid, so a strip's cells land
|
|
211
|
+
under the left column, the canvas and the right column. Transparent and
|
|
212
|
+
pointer-less for the canvas cell's reason. */
|
|
213
|
+
.bottom-cell {
|
|
214
|
+
grid-column: edge-l / edge-r;
|
|
215
|
+
grid-row: main-b / edge-b;
|
|
216
|
+
position: relative;
|
|
217
|
+
z-index: var(--z-panel);
|
|
218
|
+
display: none;
|
|
219
|
+
grid-template-columns: subgrid;
|
|
220
|
+
grid-template-rows: minmax(0, 1fr);
|
|
221
|
+
min-width: 0;
|
|
222
|
+
min-height: 0;
|
|
223
|
+
pointer-events: none;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.shell.is-code-studio > .bottom-cell {
|
|
227
|
+
display: grid;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/* ── WHAT STILL FLOATS ─────────────────────────────────────────────────────
|
|
231
|
+
One recipe, and a short list: the tool flyouts that open off the footer,
|
|
232
|
+
and a notice. Everything else is docked, the tools included. */
|
|
233
|
+
.tool-flyout,
|
|
234
|
+
.overlay-message {
|
|
235
|
+
background: var(--surface-panel);
|
|
236
|
+
border: 1px solid var(--line);
|
|
237
|
+
border-radius: var(--float-radius);
|
|
238
|
+
box-shadow: var(--shadow-float);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
/* ---- overlays ----------------------------------------------------------- */
|
|
243
|
+
/* ── THE ERROR SURFACE OUTRANKS EVERYTHING IN THE SHELL ───────────────────
|
|
244
|
+
This is where a refusal lands. `sayRefusal` sets `state.error`, the stage
|
|
245
|
+
reports its own failures the same way, and this strip is the only place
|
|
246
|
+
either is ever drawn — so a layer that covers it does not hide a decoration,
|
|
247
|
+
it makes the chrome silently ignore gestures with the reason it declined
|
|
248
|
+
them rendered underneath. The overlay tier is above every mode.
|
|
249
|
+
|
|
250
|
+
At the bottom of the canvas cell, with 12px of air above the tool footer
|
|
251
|
+
(or above the bottom row, where the footer's track is closed). */
|
|
252
|
+
.overlay-strip {
|
|
253
|
+
grid-column: rail-r / insp-l;
|
|
254
|
+
grid-row: stage-t / foot-t;
|
|
255
|
+
align-self: end;
|
|
256
|
+
justify-self: center;
|
|
257
|
+
position: relative;
|
|
258
|
+
z-index: var(--z-overlay);
|
|
259
|
+
margin-bottom: var(--space-6);
|
|
260
|
+
display: flex;
|
|
261
|
+
flex-direction: column;
|
|
262
|
+
gap: var(--space-3);
|
|
263
|
+
pointer-events: none;
|
|
264
|
+
max-width: min(560px, 100%);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.overlay-message {
|
|
268
|
+
pointer-events: auto;
|
|
269
|
+
display: flex;
|
|
270
|
+
gap: var(--space-5);
|
|
271
|
+
align-items: flex-start;
|
|
272
|
+
padding: var(--space-5) var(--space-6);
|
|
273
|
+
line-height: var(--leading-body);
|
|
274
|
+
border-color: color-mix(in srgb, var(--danger) 50%, transparent);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/* The same arrival the dialogs and toasts use — `dialog-in` comes from the ui
|
|
278
|
+
sheet this file @imports, and it is the `settle` spring transcribed to CSS.
|
|
279
|
+
This strip is the shot chrome's toast, so it should not arrive differently
|
|
280
|
+
from one. Surface only: no geometry animates, and nothing above `.stage-frame`
|
|
281
|
+
gains a transform. */
|
|
282
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
283
|
+
.overlay-message { animation: dialog-in var(--dur-med) var(--ease); }
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/* No dismiss button, so nothing reserves space for one. WARN and not DANGER:
|
|
287
|
+
nothing is broken yet, and the sentence is about a process the author has to
|
|
288
|
+
restart rather than about something they did. */
|
|
289
|
+
.overlay-message.is-sticky {
|
|
290
|
+
border-color: color-mix(in srgb, var(--warn) 50%, transparent);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.overlay-message button {
|
|
294
|
+
font: inherit;
|
|
295
|
+
font-size: var(--type-lg);
|
|
296
|
+
color: var(--ink-2);
|
|
297
|
+
background: transparent;
|
|
298
|
+
border: 0;
|
|
299
|
+
cursor: pointer;
|
|
300
|
+
padding: 0;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.overlay-message button:hover {
|
|
304
|
+
color: var(--ink-1);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/* A worded action on a sticky row (the save conflict's Reload): body size,
|
|
308
|
+
underlined so it reads as the one thing to press. */
|
|
309
|
+
.overlay-message .overlay-action {
|
|
310
|
+
flex: none;
|
|
311
|
+
font-size: inherit;
|
|
312
|
+
color: var(--ink-1);
|
|
313
|
+
text-decoration: underline;
|
|
314
|
+
white-space: nowrap;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/* No Project: said in the middle of the canvas, where the picture would be. */
|
|
318
|
+
.empty-state {
|
|
319
|
+
grid-column: rail-r / insp-l;
|
|
320
|
+
grid-row: main-t / main-b;
|
|
321
|
+
place-self: center;
|
|
322
|
+
position: relative;
|
|
323
|
+
z-index: var(--z-scrim);
|
|
324
|
+
display: grid;
|
|
325
|
+
text-align: center;
|
|
326
|
+
gap: var(--space-3);
|
|
327
|
+
pointer-events: none;
|
|
328
|
+
color: var(--ink-3);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.empty-state h1 {
|
|
332
|
+
font-size: var(--type-xl);
|
|
333
|
+
font-weight: 600;
|
|
334
|
+
margin: 0;
|
|
335
|
+
color: var(--ink-2);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.empty-state p {
|
|
339
|
+
margin: 0;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/* The way forward takes the click the container gives up. */
|
|
343
|
+
.empty-state a {
|
|
344
|
+
pointer-events: auto;
|
|
345
|
+
justify-self: center;
|
|
346
|
+
margin-top: var(--space-3);
|
|
347
|
+
text-decoration: none;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/* A mode's crash card (the fallback of the PanelBoundary App.tsx wraps around
|
|
351
|
+
each mode, a direct child of the shell) sits at the top of the centre
|
|
352
|
+
column, over the canvas bar and the canvas cell. The mode's portalled parts
|
|
353
|
+
went with the throw, so the card is what is left of the mode. */
|
|
354
|
+
.shell > .panel-crash {
|
|
355
|
+
grid-column: rail-r / insp-l;
|
|
356
|
+
grid-row: main-t / main-b;
|
|
357
|
+
align-self: start;
|
|
358
|
+
justify-self: center;
|
|
359
|
+
position: relative;
|
|
360
|
+
z-index: var(--z-overlay);
|
|
361
|
+
max-width: min(640px, 100%);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
/* ---- resizable edges ---------------------------------------------------- */
|
|
366
|
+
/* 8px of hit area for a 1px seam, centred on it. Anything thinner is a target
|
|
367
|
+
you have to aim at. Paper draws the handle 6 wide; the extra 2px is hit
|
|
368
|
+
area only.
|
|
369
|
+
|
|
370
|
+
THE GRIP: a 20px stroke at the handle's middle, in ink-3 at rest, so an
|
|
371
|
+
edge that drags says so. The seam itself is the panel's own border at rest.
|
|
372
|
+
On hover the band takes the soft state fill, the seam is redrawn in the
|
|
373
|
+
selected fill, and the grip turns accent ink.
|
|
374
|
+
|
|
375
|
+
`touch-action: none` is what makes a pen or touch drag resize instead of
|
|
376
|
+
scrolling the page out from under the gesture. */
|
|
377
|
+
.rail-resize,
|
|
378
|
+
.inspector-resize,
|
|
379
|
+
.dock-resize,
|
|
380
|
+
.split-resize {
|
|
381
|
+
touch-action: none;
|
|
382
|
+
background: transparent;
|
|
383
|
+
transition: background var(--dur-fast) var(--ease);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
.rail-resize::before,
|
|
387
|
+
.inspector-resize::before,
|
|
388
|
+
.dock-resize::before,
|
|
389
|
+
.split-resize::before,
|
|
390
|
+
.rail-resize::after,
|
|
391
|
+
.inspector-resize::after,
|
|
392
|
+
.dock-resize::after,
|
|
393
|
+
.split-resize::after {
|
|
394
|
+
content: "";
|
|
395
|
+
position: absolute;
|
|
396
|
+
pointer-events: none;
|
|
397
|
+
transition: background var(--dur-fast) var(--ease);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/* The seam, hover only, ON the panel's own border so the two never sit a
|
|
401
|
+
pixel apart: the rail's border is the last pixel before its track line,
|
|
402
|
+
the inspector's and the split's the first after theirs, and the dock's is
|
|
403
|
+
its top edge (the handle starts there, inside the dock). */
|
|
404
|
+
.rail-resize::before,
|
|
405
|
+
.inspector-resize::before,
|
|
406
|
+
.split-resize::before {
|
|
407
|
+
top: 0;
|
|
408
|
+
bottom: 0;
|
|
409
|
+
left: var(--space-2);
|
|
410
|
+
width: 1px;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.rail-resize::before {
|
|
414
|
+
left: calc(var(--space-2) - 1px);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.dock-resize::before {
|
|
418
|
+
left: 0;
|
|
419
|
+
right: 0;
|
|
420
|
+
top: 0;
|
|
421
|
+
height: 1px;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/* The grip, on the same line. */
|
|
425
|
+
.rail-resize::after,
|
|
426
|
+
.inspector-resize::after,
|
|
427
|
+
.split-resize::after {
|
|
428
|
+
top: calc(50% - 10px);
|
|
429
|
+
left: var(--space-2);
|
|
430
|
+
width: 1px;
|
|
431
|
+
height: 20px;
|
|
432
|
+
background: var(--ink-3);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
.rail-resize::after {
|
|
436
|
+
left: calc(var(--space-2) - 1px);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
.dock-resize::after {
|
|
440
|
+
left: calc(50% - 10px);
|
|
441
|
+
top: 0;
|
|
442
|
+
width: 20px;
|
|
443
|
+
height: 1px;
|
|
444
|
+
background: var(--ink-3);
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
.rail-resize:hover,
|
|
448
|
+
.inspector-resize:hover,
|
|
449
|
+
.dock-resize:hover,
|
|
450
|
+
.split-resize:hover {
|
|
451
|
+
background: var(--fill-state-soft);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
.rail-resize:hover::before,
|
|
455
|
+
.inspector-resize:hover::before,
|
|
456
|
+
.dock-resize:hover::before,
|
|
457
|
+
.split-resize:hover::before {
|
|
458
|
+
background: var(--fill-selected);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.rail-resize:hover::after,
|
|
462
|
+
.inspector-resize:hover::after,
|
|
463
|
+
.dock-resize:hover::after,
|
|
464
|
+
.split-resize:hover::after {
|
|
465
|
+
background: var(--accent-ink);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/* The two column seams, as grid items on the seam's own line. Each runs on
|
|
469
|
+
down through the timeline, whose name column and meters cell are the two
|
|
470
|
+
columns' own tracks: one drag moves the column and the timeline cell under
|
|
471
|
+
it together. */
|
|
472
|
+
.rail-resize,
|
|
473
|
+
.inspector-resize {
|
|
474
|
+
grid-row: main-t / edge-b;
|
|
475
|
+
position: relative;
|
|
476
|
+
z-index: var(--z-handle);
|
|
477
|
+
width: 8px;
|
|
478
|
+
cursor: col-resize;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
.rail-resize {
|
|
482
|
+
grid-column: edge-l / rail-r;
|
|
483
|
+
justify-self: end;
|
|
484
|
+
margin-right: calc(-1 * var(--space-2));
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
.inspector-resize {
|
|
488
|
+
grid-column: insp-l / edge-r;
|
|
489
|
+
justify-self: start;
|
|
490
|
+
margin-left: calc(-1 * var(--space-2));
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
/* The stage's own divider between the working and camera panes. It sits ON the
|
|
495
|
+
seam the scissor draws to, whose position is `--split-x` — written by the
|
|
496
|
+
shell's writer from the same `splitRatio` `paneRects` reads, so the handle
|
|
497
|
+
and the rendered boundary cannot end up a column apart. It spans exactly the
|
|
498
|
+
stage's visible window (`--window-*`, written beside it). */
|
|
499
|
+
.split-resize {
|
|
500
|
+
position: fixed;
|
|
501
|
+
top: var(--window-t, 0px);
|
|
502
|
+
bottom: var(--window-b, 0px);
|
|
503
|
+
left: var(--split-x);
|
|
504
|
+
z-index: var(--z-handle);
|
|
505
|
+
width: 8px;
|
|
506
|
+
margin-left: calc(-1 * var(--space-2));
|
|
507
|
+
cursor: col-resize;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
/* The dock's top edge, inside the dock: the handle drags the row it heads. */
|
|
511
|
+
.dock-resize {
|
|
512
|
+
position: absolute;
|
|
513
|
+
top: 0;
|
|
514
|
+
left: 0;
|
|
515
|
+
right: 0;
|
|
516
|
+
/* Local to the dock (a stacking context): above its sticky ruler (5). */
|
|
517
|
+
z-index: 6;
|
|
518
|
+
height: 8px;
|
|
519
|
+
cursor: row-resize;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
/* ---- the shared stage window -------------------------------------------- */
|
|
525
|
+
/* A HOLE, AND THE CLASS THAT MAKES IT ONE.
|
|
526
|
+
*
|
|
527
|
+
* A mode (the material workspace, the Component and Code Studios) paints its
|
|
528
|
+
* part of the docked cells and leaves exactly
|
|
529
|
+
* one box for the stage iframe behind them to show through, and
|
|
530
|
+
* `measureInset` (app/App.tsx) finds that box by THIS class. The two rules
|
|
531
|
+
* that make the cell a window rather than a lid are stated once here so a mode
|
|
532
|
+
* cannot half-implement them:
|
|
533
|
+
*
|
|
534
|
+
* NO PAINT. Anything opaque, including a "subtle" tint, covers the only live
|
|
535
|
+
* thing on screen.
|
|
536
|
+
* NO POINTER. Hit testing follows paint, so a box over the iframe swallows
|
|
537
|
+
* every press on the stage even where it draws nothing, and in every hole
|
|
538
|
+
* a drag on the subject ORBITS, which is the gesture that would be lost.
|
|
539
|
+
* Each cell that actually paints opts back in.
|
|
540
|
+
*
|
|
541
|
+
* Size and placement stay with each mode: they are laid out differently and
|
|
542
|
+
* only the modes know their own columns. */
|
|
543
|
+
.stage-window {
|
|
544
|
+
background: transparent;
|
|
545
|
+
pointer-events: none;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
/* ---- scrollbars --------------------------------------------------------- */
|
|
550
|
+
/* Default scrollbars on a near-black panel are a bright grey slab. THE ONE
|
|
551
|
+
SCROLLBAR RULE: every chrome scroller is themed here and nowhere else
|
|
552
|
+
(sourceHygiene holds it), the board's desk, which scrolls the whole plan,
|
|
553
|
+
and its Style row, which scrolls sideways, included, and the bodies of the
|
|
554
|
+
board's right panels (the Plan, the component sheet, the item inspector)
|
|
555
|
+
and of the Brief. Those hold a stable gutter, so an unthemed one reserves
|
|
556
|
+
the default bar's width at rest and its rows end short of the inspector's
|
|
557
|
+
in the same column. `height` is declared beside `width` so a horizontal bar
|
|
558
|
+
is themed as well. Theming rather than hiding: a scrollbar is a scroller's
|
|
559
|
+
only resting statement of where it is and how much more there is. */
|
|
560
|
+
.rail-scroll::-webkit-scrollbar,
|
|
561
|
+
.inspector-body::-webkit-scrollbar,
|
|
562
|
+
.agent-transcript::-webkit-scrollbar,
|
|
563
|
+
.dock-scroll::-webkit-scrollbar,
|
|
564
|
+
.board-desk::-webkit-scrollbar,
|
|
565
|
+
.style-wall-items::-webkit-scrollbar,
|
|
566
|
+
.plan-body::-webkit-scrollbar,
|
|
567
|
+
.component-sheet-body::-webkit-scrollbar,
|
|
568
|
+
.sketch-inspector-body::-webkit-scrollbar,
|
|
569
|
+
.shot-brief-body::-webkit-scrollbar {
|
|
570
|
+
width: 10px;
|
|
571
|
+
height: 10px;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
.rail-scroll::-webkit-scrollbar-thumb,
|
|
575
|
+
.inspector-body::-webkit-scrollbar-thumb,
|
|
576
|
+
.agent-transcript::-webkit-scrollbar-thumb,
|
|
577
|
+
.dock-scroll::-webkit-scrollbar-thumb,
|
|
578
|
+
.board-desk::-webkit-scrollbar-thumb,
|
|
579
|
+
.style-wall-items::-webkit-scrollbar-thumb,
|
|
580
|
+
.plan-body::-webkit-scrollbar-thumb,
|
|
581
|
+
.component-sheet-body::-webkit-scrollbar-thumb,
|
|
582
|
+
.sketch-inspector-body::-webkit-scrollbar-thumb,
|
|
583
|
+
.shot-brief-body::-webkit-scrollbar-thumb {
|
|
584
|
+
background: var(--fill-hover);
|
|
585
|
+
border: 3px solid transparent;
|
|
586
|
+
background-clip: content-box;
|
|
587
|
+
border-radius: var(--radius-full);
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
.rail-scroll::-webkit-scrollbar-thumb:hover,
|
|
591
|
+
.inspector-body::-webkit-scrollbar-thumb:hover,
|
|
592
|
+
.agent-transcript::-webkit-scrollbar-thumb:hover,
|
|
593
|
+
.dock-scroll::-webkit-scrollbar-thumb:hover,
|
|
594
|
+
.board-desk::-webkit-scrollbar-thumb:hover,
|
|
595
|
+
.style-wall-items::-webkit-scrollbar-thumb:hover,
|
|
596
|
+
.plan-body::-webkit-scrollbar-thumb:hover,
|
|
597
|
+
.component-sheet-body::-webkit-scrollbar-thumb:hover,
|
|
598
|
+
.sketch-inspector-body::-webkit-scrollbar-thumb:hover,
|
|
599
|
+
.shot-brief-body::-webkit-scrollbar-thumb:hover {
|
|
600
|
+
background: var(--line-strong);
|
|
601
|
+
background-clip: content-box;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.rail-scroll::-webkit-scrollbar-track,
|
|
605
|
+
.inspector-body::-webkit-scrollbar-track,
|
|
606
|
+
.agent-transcript::-webkit-scrollbar-track,
|
|
607
|
+
.dock-scroll::-webkit-scrollbar-track,
|
|
608
|
+
.board-desk::-webkit-scrollbar-track,
|
|
609
|
+
.style-wall-items::-webkit-scrollbar-track,
|
|
610
|
+
.plan-body::-webkit-scrollbar-track,
|
|
611
|
+
.component-sheet-body::-webkit-scrollbar-track,
|
|
612
|
+
.sketch-inspector-body::-webkit-scrollbar-track,
|
|
613
|
+
.shot-brief-body::-webkit-scrollbar-track {
|
|
614
|
+
background: transparent;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
/* ── the in-browser export scrim ──────────────────────────────────────────
|
|
618
|
+
Over the stage's VISIBLE WINDOW and nothing else: the canvas cell, or a
|
|
619
|
+
mode's hole. `--window-*` is that rect, written by the shell's writer from
|
|
620
|
+
the same measure that tells the stage where it is covered, so the header,
|
|
621
|
+
the columns and the dock stay usable while the capture loop owns the
|
|
622
|
+
canvas. `pointer-events` swallows stage clicks, which is the point: the
|
|
623
|
+
export is driving that canvas. Above a mode, because a mode's hole is
|
|
624
|
+
transparent and the veil has to cover what shows through it.
|
|
625
|
+
|
|
626
|
+
No backdrop-filter: compositing a blur over a live GL canvas every frame
|
|
627
|
+
is exactly the work it is waiting on. */
|
|
628
|
+
.export-scrim {
|
|
629
|
+
position: fixed;
|
|
630
|
+
top: var(--window-t, 0px);
|
|
631
|
+
right: var(--window-r, 0px);
|
|
632
|
+
bottom: var(--window-b, 0px);
|
|
633
|
+
left: var(--window-l, 0px);
|
|
634
|
+
z-index: var(--z-scrim);
|
|
635
|
+
display: grid;
|
|
636
|
+
place-content: center;
|
|
637
|
+
gap: var(--space-4);
|
|
638
|
+
text-align: center;
|
|
639
|
+
background: var(--scrim);
|
|
640
|
+
color: var(--ink-1);
|
|
641
|
+
font-family: var(--font-sans);
|
|
642
|
+
font-variant-numeric: var(--numeric);
|
|
643
|
+
pointer-events: auto;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.export-scrim p {
|
|
647
|
+
margin: 0;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
.export-scrim-note {
|
|
651
|
+
color: var(--ink-2);
|
|
652
|
+
font-size: var(--type-sm);
|
|
653
|
+
}
|