@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,19 @@
|
|
|
1
|
-
// The
|
|
2
|
-
//
|
|
1
|
+
// The manual: the dialog the app menu's Help row opens.
|
|
2
|
+
//
|
|
3
|
+
// ── WHY A DIALOG AND NOT A PANEL SECTION ────────────────────────────────
|
|
4
|
+
//
|
|
5
|
+
// The left rail is the layer outliner. The manual is a five-line first-run
|
|
6
|
+
// guide, thirteen tool rows and fifty-six shortcut rows, and the full MCP guide is
|
|
7
|
+
// setup documentation. The Shot outliner now keeps only a compact MCP status
|
|
8
|
+
// and connection footer tied to the open Project. Parking the complete manual
|
|
9
|
+
// in the column the author reads to find a layer made that column harder to
|
|
10
|
+
// scan. A `<details>` made that cost one summary line at rest, which is one
|
|
11
|
+
// line more than a reference nobody has open deserves, and it read the whole
|
|
12
|
+
// manual into a 232px column when opened.
|
|
13
|
+
//
|
|
14
|
+
// The shared `Dialog` (packages/ui) is what the export dialog and the material
|
|
15
|
+
// picker already use, so Escape, the focus trap and `aria-modal` are answered
|
|
16
|
+
// once for the lane rather than three times.
|
|
3
17
|
//
|
|
4
18
|
// ── ONE LIST, PINNED BY A TEST ──────────────────────────────────────────
|
|
5
19
|
//
|
|
@@ -10,181 +24,193 @@
|
|
|
10
24
|
// walks every row through `resolveKey`. A binding change without a manual
|
|
11
25
|
// edit is a red test, not a stale manual.
|
|
12
26
|
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
//
|
|
27
|
+
// THE TABLE ITSELF MOVED to `state/shortcuts.ts` once the app menu became its
|
|
28
|
+
// second reader: a data table reached through a React component drags a Dialog
|
|
29
|
+
// into `state/menu.ts`, which is JSX-free on purpose. Re-exported here because
|
|
30
|
+
// this is where every caller already looks for it.
|
|
31
|
+
//
|
|
32
|
+
// No store, no context: the content is static prose over static tables, which
|
|
33
|
+
// is what lets the test mount it bare.
|
|
34
|
+
import { Dialog } from "@dailies-studio/ui";
|
|
35
|
+
import { McpSection } from "../files/McpSection.js";
|
|
16
36
|
import { SHOT_TOOLS, specOf } from "../../tools.js";
|
|
17
|
-
import
|
|
37
|
+
import { layoutSpec } from "../../state/layouts.js";
|
|
38
|
+
import { VIEW_MODE_SPECS } from "../../state/viewMode.js";
|
|
39
|
+
import {
|
|
40
|
+
MATERIAL_SHORTCUTS,
|
|
41
|
+
STORYBOARD_SHORTCUTS,
|
|
42
|
+
SHORTCUTS,
|
|
43
|
+
SHORTCUT_GROUPS,
|
|
44
|
+
comboOf,
|
|
45
|
+
formatCombo,
|
|
46
|
+
toolKey,
|
|
47
|
+
} from "../../state/shortcuts.js";
|
|
48
|
+
import type { ShortcutGroup } from "../../state/shortcuts.js";
|
|
18
49
|
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
combo: string;
|
|
22
|
-
does: string;
|
|
23
|
-
group: "View" | "Working view" | "Edit" | "Animate & camera";
|
|
24
|
-
/** The event this combo produces, so the test can ask the keymap itself. */
|
|
25
|
-
probe: KeyEventLike;
|
|
26
|
-
/** Arrows answer differently with a selection; everything else omits it. */
|
|
27
|
-
hasSelection?: boolean;
|
|
28
|
-
/** The pen's two rows answer differently with a path open, and ONLY with one
|
|
29
|
-
* open — Escape means deselect the rest of the time, which is why the
|
|
30
|
-
* context carries "holds points" and not "the pen tool is armed". */
|
|
31
|
-
penActive?: boolean;
|
|
32
|
-
/** Escape's third meaning: leave one level of isolation. It only answers
|
|
33
|
-
* that with NOTHING selected, so the row carries the bit and the test
|
|
34
|
-
* probes with `hasSelection` false. */
|
|
35
|
-
isolation?: boolean;
|
|
36
|
-
/** The modal starters (G/R/S) answer only with the cursor over the working
|
|
37
|
-
* pane — the same letters arm tools everywhere else, and both readings
|
|
38
|
-
* have rows. */
|
|
39
|
-
workingPane?: boolean;
|
|
40
|
-
/** The axis and terminator rows answer only while a transform is LIVE. */
|
|
41
|
-
transformModal?: boolean;
|
|
42
|
-
/** The action `resolveKey(probe)` must return. */
|
|
43
|
-
action: KeyAction["kind"];
|
|
44
|
-
}
|
|
50
|
+
export { MATERIAL_SHORTCUTS, SHORTCUTS, STORYBOARD_SHORTCUTS };
|
|
51
|
+
export type { ShortcutRow } from "../../state/shortcuts.js";
|
|
45
52
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
/**
|
|
54
|
+
* The material graph's keys, listed apart from the four groups below.
|
|
55
|
+
*
|
|
56
|
+
* They live in their own table because they answer a DIFFERENT question of the
|
|
57
|
+
* keymap: every row here resolves with `materialGraph: true`, meaning the key
|
|
58
|
+
* landed inside the node canvas, and the same combo means something else
|
|
59
|
+
* everywhere else (P is a tool, ⌘G groups layers). Folding them into
|
|
60
|
+
* `SHORTCUTS` would make that table's own test walk them through the wrong
|
|
61
|
+
* context and assert the wrong answer.
|
|
62
|
+
*
|
|
63
|
+
* Typed as a `ShortcutGroup` rather than left a bare literal: a section heading
|
|
64
|
+
* that no row can carry is a heading over an empty list.
|
|
65
|
+
*/
|
|
66
|
+
const MATERIAL_GROUP: ShortcutGroup = "Material nodes";
|
|
57
67
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
{ group: "View", combo: "1 / 2 / 3", does: "Working / split / camera view", probe: probe("1"), action: "stageLayout" },
|
|
62
|
-
{ group: "View", combo: "[", does: "Hide / show the left panel", probe: probe("["), action: "togglePanel" },
|
|
63
|
-
{ group: "View", combo: "]", does: "Hide / show the right panel", probe: probe("]"), action: "togglePanel" },
|
|
64
|
-
{ group: "View", combo: ".", does: "Hide every panel", probe: probe("."), action: "togglePanel" },
|
|
65
|
-
{ group: "View", combo: "\\", does: "Fit the timeline", probe: probe("\\"), action: "fitTimeline" },
|
|
66
|
-
{ group: "View", combo: "⌘+ / ⌘−", does: "Zoom in / out", probe: probe("=", { ctrl: true }), action: "zoom" },
|
|
67
|
-
{ group: "View", combo: "⌘0", does: "Zoom to 100%", probe: probe("0", { ctrl: true }), action: "zoomReset" },
|
|
68
|
-
{ group: "View", combo: "Home", does: "Fit the active pane", probe: probe("Home"), action: "fit" },
|
|
69
|
-
{ group: "View", combo: "⇧C", does: "Fit the active pane (Blender's frame all)", probe: probe("c", { shift: true }), action: "fit" },
|
|
70
|
-
{ group: "View", combo: "Z", does: "Cycle working-pane shading (solid / wire / material / rendered)", probe: probe("z"), action: "shadingCycle" },
|
|
71
|
-
{ group: "View", combo: "⇧Z", does: "Wireframe on / off", probe: probe("z", { shift: true }), action: "wireframeToggle" },
|
|
68
|
+
/** The board's keys, apart for the same reason: every row resolves only with
|
|
69
|
+
* `storyboard: true`, and Delete means "remove a layer" outside it. */
|
|
70
|
+
const STORYBOARD_GROUP: ShortcutGroup = "Storyboard";
|
|
72
71
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
// roll, so switching to rotate on a camera transform would arm one that could
|
|
81
|
-
// never emit.
|
|
82
|
-
{ group: "Working view", combo: "G / R / S", does: "Switch transform without leaving the gesture", probe: probe("r"), transformModal: true, hasSelection: true, action: "modalStart" },
|
|
83
|
-
{ group: "Working view", combo: "Enter", does: "Confirm the transform (or click)", probe: probe("Enter"), transformModal: true, action: "modalConfirm" },
|
|
84
|
-
{ group: "Working view", combo: "Esc", does: "Cancel the transform (or right-click)", probe: probe("Escape"), transformModal: true, action: "modalCancel" },
|
|
85
|
-
{ group: "Working view", combo: "Num1 / 3 / 7", does: "Front / right / top view (⌘ = the opposite)", probe: probe("1", { code: "Numpad1" }), action: "workingViewPreset" },
|
|
86
|
-
{ group: "Working view", combo: "Num0", does: "Camera view, and back again", probe: probe("0", { code: "Numpad0" }), action: "stageLayout" },
|
|
87
|
-
{ group: "Working view", combo: "Num.", does: "Frame the selection", probe: probe(".", { code: "NumpadDecimal" }), action: "fitSelection" },
|
|
88
|
-
{ group: "Working view", combo: "Num2 / 4 / 6 / 8", does: "Orbit 15°; Num9 looks from the opposite side", probe: probe("4", { code: "Numpad4" }), action: "orbitStep" },
|
|
89
|
-
{ group: "Working view", combo: "Num5", does: "Orthographic / perspective", probe: probe("5", { code: "Numpad5" }), action: "toggleWorkingOrtho" },
|
|
90
|
-
{ group: "Working view", combo: "Num/", does: "Go inside the selection, and back out", probe: probe("/", { code: "NumpadDivide" }), action: "toggleIsolation" },
|
|
91
|
-
{ group: "Working view", combo: "Num+ / Num−", does: "Zoom the active pane", probe: probe("+", { code: "NumpadAdd" }), action: "zoom" },
|
|
72
|
+
/** The groups the main table prints, in the manual's own order: every one
|
|
73
|
+
* `state/shortcuts.ts` declares, less the two that own a table and a section
|
|
74
|
+
* of their own. Derived rather than re-listed, so a new group is one edit
|
|
75
|
+
* there and not a second one here that nobody remembers to make. */
|
|
76
|
+
const GROUPS = SHORTCUT_GROUPS.filter(
|
|
77
|
+
(group) => group !== MATERIAL_GROUP && group !== STORYBOARD_GROUP,
|
|
78
|
+
);
|
|
92
79
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
{ group: "Edit", combo: "⇧D", does: "Duplicate", probe: probe("d", { shift: true }), action: "duplicate" },
|
|
102
|
-
{ group: "Edit", combo: "Esc", does: "Deselect", probe: probe("Escape"), action: "deselect" },
|
|
103
|
-
{ group: "Edit", combo: "Del", does: "Delete selection", probe: probe("Delete"), action: "deleteSelection" },
|
|
104
|
-
{ group: "Edit", combo: "⌘G", does: "Group", probe: probe("g", { ctrl: true }), action: "group" },
|
|
105
|
-
{ group: "Edit", combo: "⌘⇧G", does: "Ungroup", probe: probe("g", { ctrl: true, shift: true }), action: "ungroup" },
|
|
106
|
-
{ group: "Edit", combo: "⌥L", does: "Lock / unlock", probe: probe("l", { alt: true }), action: "toggleLock" },
|
|
107
|
-
{ group: "Edit", combo: "H", does: "Hide the selection", probe: probe("h"), action: "setHidden" },
|
|
108
|
-
{ group: "Edit", combo: "⇧H", does: "Hide everything else", probe: probe("h", { shift: true }), action: "setHidden" },
|
|
109
|
-
{ group: "Edit", combo: "⌥H", does: "Show everything again", probe: probe("h", { alt: true }), action: "setHidden" },
|
|
110
|
-
{ group: "Edit", combo: "⌥G / ⌥R", does: "Clear the position / the rotation", probe: probe("g", { alt: true }), action: "clearTransform" },
|
|
111
|
-
{ group: "Edit", combo: "Enter", does: "Edit inside the selection", probe: probe("Enter"), hasSelection: true, action: "enterIsolation" },
|
|
112
|
-
{ group: "Edit", combo: "Esc", does: "Come back out one level", probe: probe("Escape"), isolation: true, action: "exitIsolation" },
|
|
113
|
-
{ group: "Edit", combo: "Enter", does: "Finish the path you are drawing", probe: probe("Enter"), penActive: true, action: "penCommit" },
|
|
114
|
-
{ group: "Edit", combo: "Esc", does: "Throw away the path you are drawing", probe: probe("Escape"), penActive: true, action: "penAbandon" },
|
|
80
|
+
/** The three layouts by name and key, out of the one table the toolbar chips,
|
|
81
|
+
* the View menu and the refusal sentences all read. Renaming the third from
|
|
82
|
+
* "Frame" to "Camera" (founder order, 2026-09-05) left this manual teaching
|
|
83
|
+
* the withdrawn word for exactly as long as it took someone to read it,
|
|
84
|
+
* because prose was the one surface with nothing tying it to the control. */
|
|
85
|
+
const WORKING = layoutSpec("working");
|
|
86
|
+
const SPLIT = layoutSpec("split");
|
|
87
|
+
const CAMERA = layoutSpec("camera");
|
|
115
88
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
];
|
|
89
|
+
/** The two words the switch shows, from the same table the control and the
|
|
90
|
+
* View menu read. The paragraph below taught "Video (4)" as a literal, which
|
|
91
|
+
* is a rebind away from being wrong in the one place an author looks first. */
|
|
92
|
+
const EDIT = VIEW_MODE_SPECS.edit;
|
|
93
|
+
const VIDEO = VIEW_MODE_SPECS.video;
|
|
122
94
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
*
|
|
127
|
-
* row of that table is walked through the real keymap by its test — a row for
|
|
128
|
-
* a gesture no key produces would have to carry a fake event to pass. */
|
|
95
|
+
/** The first-run guide: the few sentences a first session needs, in the order
|
|
96
|
+
* it meets them. Everything else is in the key tables below. Mouse gestures
|
|
97
|
+
* live HERE and not in those tables, because every row there is walked
|
|
98
|
+
* through the real keymap by its test, and a gesture has no key to walk. */
|
|
129
99
|
const BASICS: readonly string[] = [
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"Double-click a layer to go INSIDE it: the working pane frames that subtree flat and head-on and everything else dims. Orbit, pan or dolly and the camera is yours; Home puts it back head-on. A blue bar over the pane says you are inside; Esc backs out one level, or click a crumb in the left panel.",
|
|
136
|
-
"Drag arms (red/green/blue) sit on the selection, or on the CAMERA when nothing is selected — the same subject G and S pick. Z moves a layer in depth; on the camera it dollies.",
|
|
137
|
-
"Header zoom, ⌘+ / ⌘− and ⇧C all act on the pane you last clicked. ⇧Z is the wireframe toggle.",
|
|
138
|
-
"Draw: arm a tool in the top bar, then drag on the stage. Text takes a click.",
|
|
139
|
-
"Animate: toggle ⇧A, then edit — the change becomes a block ending at the playhead.",
|
|
140
|
-
"Camera: use the timeline's + shot button for a move, or in the working view (1) drag the yellow frustum's edge to pan, its apex to zoom, or its arms for one axis at a time.",
|
|
141
|
-
"Audio: drop a file on the timeline's audio lane. Markers ride their clip.",
|
|
142
|
-
"Everything exports exactly as previewed — same engine, same frames.",
|
|
100
|
+
`${EDIT.label} is where you build. ${VIDEO.label} (${VIDEO.key}) is the finished picture. Space plays it, and a click on anything brings ${EDIT.label} back.`,
|
|
101
|
+
`${EDIT.label} has three views: ${CAMERA.title} (${CAMERA.key}) is the shot's picture, where you draw. ${WORKING.title} (${WORKING.key}) is free to look around: drag to orbit, scroll to dolly. ${SPLIT.title} (${SPLIT.key}) is both.`,
|
|
102
|
+
"Draw: pick a tool in the footer under the picture (on the Storyboard, the rail beside the frame), then drag on the stage. Text takes a click, then type.",
|
|
103
|
+
"Double-click a layer to go inside it. Esc backs out. Right-click a layer for more.",
|
|
104
|
+
"Animate: turn on ⇧A, then change something. Edits write keyframes at the playhead.",
|
|
143
105
|
];
|
|
144
106
|
|
|
145
|
-
|
|
107
|
+
/**
|
|
108
|
+
* The manual itself, CONTROLLED, and opened from ONE surface: the app menu's
|
|
109
|
+
* Help row (AppMenu owns the `open` bit).
|
|
110
|
+
*
|
|
111
|
+
* There used to be a second door, a "?" in the left column's foot. The Studio
|
|
112
|
+
* redesign dropped it: a 28px glyph over the foot's end was a second Help
|
|
113
|
+
* entry the founder questioned, and the foot itself is gone now. The menu row
|
|
114
|
+
* is reachable with no document open, which was the "?"'s whole reason to live
|
|
115
|
+
* in the column rather than in the Files panel.
|
|
116
|
+
*
|
|
117
|
+
* `Dialog` returns null while closed, so this copy of `McpSection` does not
|
|
118
|
+
* probe health until the author asks for Help. The top bar's Agent chip owns
|
|
119
|
+
* a separate Project-targeted copy.
|
|
120
|
+
*/
|
|
121
|
+
export function HelpDialog(props: { open: boolean; onClose(): void }) {
|
|
122
|
+
const close = props.onClose;
|
|
146
123
|
return (
|
|
147
|
-
<
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
</li>
|
|
167
|
-
)
|
|
168
|
-
|
|
169
|
-
</ul>
|
|
124
|
+
<Dialog
|
|
125
|
+
open={props.open}
|
|
126
|
+
title="Help"
|
|
127
|
+
// The shared dialog is a hard 320px, which is a confirm's width: the
|
|
128
|
+
// shortcut rows are a combo and a sentence on one line, and at 320
|
|
129
|
+
// every one of them wraps.
|
|
130
|
+
className="shot-help-dialog"
|
|
131
|
+
onClose={close}
|
|
132
|
+
actions={
|
|
133
|
+
<button type="button" className="btn" onClick={close}>
|
|
134
|
+
Close
|
|
135
|
+
</button>
|
|
136
|
+
}
|
|
137
|
+
>
|
|
138
|
+
<div className="help-manual" data-testid="help-manual">
|
|
139
|
+
<ul className="help-basics">
|
|
140
|
+
{/* In this machine's spelling, like every table row below: the
|
|
141
|
+
lines name keys in the house glyphs ("⇧1", "⇧A"). */}
|
|
142
|
+
{BASICS.map((line) => (
|
|
143
|
+
<li key={line}>{formatCombo(line)}</li>
|
|
144
|
+
))}
|
|
145
|
+
</ul>
|
|
170
146
|
|
|
171
|
-
|
|
172
|
-
<
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
<li key={`${row.combo}:${row.does}`} className="help-row">
|
|
180
|
-
<span>{row.does}</span>
|
|
181
|
-
<kbd>{row.combo}</kbd>
|
|
147
|
+
<div className="file-section-label">Tools</div>
|
|
148
|
+
<ul className="help-rows">
|
|
149
|
+
{SHOT_TOOLS.map((tool) => {
|
|
150
|
+
const spec = specOf(tool);
|
|
151
|
+
return (
|
|
152
|
+
<li key={tool} className="help-row">
|
|
153
|
+
<span>{spec.label}</span>
|
|
154
|
+
{spec.key !== null && <kbd>{toolKey(tool)}</kbd>}
|
|
182
155
|
</li>
|
|
183
|
-
)
|
|
184
|
-
|
|
156
|
+
);
|
|
157
|
+
})}
|
|
158
|
+
</ul>
|
|
159
|
+
|
|
160
|
+
<div className="help-groups">
|
|
161
|
+
{GROUPS.map((group) => (
|
|
162
|
+
<div key={group}>
|
|
163
|
+
<div className="file-section-label">{group}</div>
|
|
164
|
+
<ul className="help-rows">
|
|
165
|
+
{SHORTCUTS.filter((row) => row.group === group).map((row) => (
|
|
166
|
+
// Keyed on the combo AND what it does: Esc and Enter each
|
|
167
|
+
// mean three things now, depending on what is open, and
|
|
168
|
+
// every one of them is a row.
|
|
169
|
+
<li key={`${row.combo}:${row.does}`} className="help-row">
|
|
170
|
+
<span>{row.does}</span>
|
|
171
|
+
<kbd>{comboOf(row)}</kbd>
|
|
172
|
+
</li>
|
|
173
|
+
))}
|
|
174
|
+
</ul>
|
|
175
|
+
</div>
|
|
176
|
+
))}
|
|
177
|
+
<div>
|
|
178
|
+
<div className="file-section-label">{MATERIAL_GROUP}</div>
|
|
179
|
+
<ul className="help-rows">
|
|
180
|
+
{MATERIAL_SHORTCUTS.map((row) => (
|
|
181
|
+
<li key={`${row.combo}:${row.does}`} className="help-row">
|
|
182
|
+
<span>{row.does}</span>
|
|
183
|
+
<kbd>{comboOf(row)}</kbd>
|
|
184
|
+
</li>
|
|
185
|
+
))}
|
|
186
|
+
</ul>
|
|
187
|
+
</div>
|
|
188
|
+
<div>
|
|
189
|
+
<div className="file-section-label">{STORYBOARD_GROUP}</div>
|
|
190
|
+
<ul className="help-rows">
|
|
191
|
+
{STORYBOARD_SHORTCUTS.map((row) => (
|
|
192
|
+
<li key={`${row.combo}:${row.does}`} className="help-row">
|
|
193
|
+
<span>{row.does}</span>
|
|
194
|
+
<kbd>{comboOf(row)}</kbd>
|
|
195
|
+
</li>
|
|
196
|
+
))}
|
|
197
|
+
</ul>
|
|
198
|
+
</div>
|
|
185
199
|
</div>
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
200
|
+
{/* The "⌘ is Ctrl on Windows and Linux" footnote used to live here and
|
|
201
|
+
is gone on purpose: every row above is printed through
|
|
202
|
+
`comboOf`, so on Windows and Linux the table already says Ctrl.
|
|
203
|
+
A footnote translating a glyph the reader is not being shown is
|
|
204
|
+
worse than no footnote. */}
|
|
205
|
+
<p className="help-note">
|
|
206
|
+
The Material nodes keys act only inside the node canvas, and the
|
|
207
|
+
Storyboard keys only while the Storyboard is open.
|
|
208
|
+
</p>
|
|
209
|
+
|
|
210
|
+
{/* The general doorway, repeated from the Agent chip so setup stays
|
|
211
|
+
findable from Help. */}
|
|
212
|
+
<McpSection />
|
|
213
|
+
</div>
|
|
214
|
+
</Dialog>
|
|
189
215
|
);
|
|
190
216
|
}
|