@remotion/studio 4.0.422 → 4.0.424
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/FastRefreshProvider.js +1 -1
- package/dist/ResolveCompositionConfigInStudio.js +1 -1
- package/dist/Studio.js +6 -4
- package/dist/api/create-composition.js +2 -2
- package/dist/api/focus-default-props-path.d.ts +1 -1
- package/dist/api/get-zod-schema-from-primitive.d.ts +3 -2
- package/dist/api/get-zod-schema-from-primitive.js +3 -4
- package/dist/api/helpers/calc-new-props.d.ts +2 -2
- package/dist/api/play.d.ts +1 -1
- package/dist/api/save-render-output.d.ts +7 -0
- package/dist/api/save-render-output.js +45 -0
- package/dist/api/toggle.d.ts +1 -1
- package/dist/components/AskAiModal.js +3 -1
- package/dist/components/AssetSelector.js +21 -58
- package/dist/components/AssetSelectorItem.js +15 -9
- package/dist/components/AudioWaveform.js +5 -4
- package/dist/components/AudioWaveformBar.js +1 -1
- package/dist/components/Button.js +1 -1
- package/dist/components/Canvas.js +2 -1
- package/dist/components/CanvasIfSizeIsAvailable.js +1 -1
- package/dist/components/CanvasOrLoading.js +12 -6
- package/dist/components/CheckboardToggle.js +1 -1
- package/dist/components/Checkbox.js +3 -1
- package/dist/components/CheckerboardProvider.js +1 -1
- package/dist/components/CompSelectorRef.js +1 -1
- package/dist/components/CompositionContextButton.js +2 -2
- package/dist/components/CompositionSelector.js +4 -3
- package/dist/components/CompositionSelectorItem.js +6 -3
- package/dist/components/ContextMenu.js +3 -2
- package/dist/components/ControlButton.d.ts +1 -1
- package/dist/components/ControlButton.js +1 -1
- package/dist/components/CopyButton.js +3 -2
- package/dist/components/CurrentAsset.d.ts +3 -0
- package/dist/components/CurrentAsset.js +113 -0
- package/dist/components/CurrentComposition.js +3 -2
- package/dist/components/Editor.js +6 -1
- package/dist/components/EditorContent.js +6 -1
- package/dist/components/EditorContexts.js +3 -1
- package/dist/components/EditorGuides/Guide.js +1 -1
- package/dist/components/EditorGuides/index.js +2 -2
- package/dist/components/EditorRuler/Ruler.js +1 -1
- package/dist/components/EditorRuler/index.js +3 -1
- package/dist/components/ExplorerPanel.js +4 -1
- package/dist/components/FilePreview.js +8 -6
- package/dist/components/FpsCounter.js +1 -1
- package/dist/components/FullscreenToggle.js +1 -1
- package/dist/components/GlobalPropsEditorUpdateButton.js +3 -1
- package/dist/components/InitialCompositionLoader.d.ts +1 -2
- package/dist/components/InitialCompositionLoader.js +3 -3
- package/dist/components/InlineAction.js +1 -1
- package/dist/components/InlineDropdown.js +3 -2
- package/dist/components/InstallPackage.js +19 -9
- package/dist/components/InstallablePackage.js +5 -3
- package/dist/components/JSONViewer.js +1 -1
- package/dist/components/KeyboardShortcutsExplainer.js +91 -1
- package/dist/components/KnownBugs.js +4 -2
- package/dist/components/LoopToggle.js +1 -1
- package/dist/components/MediaVolumeProvider.js +1 -1
- package/dist/components/Menu/MenuDivider.js +1 -1
- package/dist/components/Menu/MenuItem.js +3 -2
- package/dist/components/Menu/MenuSubItem.js +4 -2
- package/dist/components/Menu/SubMenu.js +1 -1
- package/dist/components/MenuBuildIndicator.js +1 -1
- package/dist/components/MenuToolbar.js +5 -3
- package/dist/components/MobilePanel.d.ts +1 -1
- package/dist/components/MobilePanel.js +2 -1
- package/dist/components/ModalButton.js +1 -1
- package/dist/components/ModalContainer.js +1 -1
- package/dist/components/ModalFooter.js +1 -1
- package/dist/components/ModalHeader.js +3 -1
- package/dist/components/Modals.js +2 -2
- package/dist/components/ModalsProvider.js +1 -1
- package/dist/components/MuteToggle.js +1 -1
- package/dist/components/NewComposition/CancelButton.js +1 -1
- package/dist/components/NewComposition/CodemodFooter.js +5 -2
- package/dist/components/NewComposition/ComboBox.js +6 -2
- package/dist/components/NewComposition/DeleteComposition.js +10 -2
- package/dist/components/NewComposition/DiffPreview.js +5 -3
- package/dist/components/NewComposition/DismissableModal.js +1 -1
- package/dist/components/NewComposition/DuplicateComposition.js +28 -3
- package/dist/components/NewComposition/InputDragger.d.ts +1 -1
- package/dist/components/NewComposition/InputDragger.js +2 -2
- package/dist/components/NewComposition/MenuContent.js +3 -3
- package/dist/components/NewComposition/NewCompDuration.js +7 -2
- package/dist/components/NewComposition/RemInput.d.ts +2 -2
- package/dist/components/NewComposition/RemInput.js +2 -2
- package/dist/components/NewComposition/RemInputTypeColor.js +1 -1
- package/dist/components/NewComposition/RemTextarea.js +1 -1
- package/dist/components/NewComposition/RenameComposition.js +11 -2
- package/dist/components/NewComposition/ValidationMessage.js +4 -2
- package/dist/components/NoRegisterRoot.js +4 -1
- package/dist/components/Notifications/ColorDot.js +1 -1
- package/dist/components/Notifications/Notification.js +1 -1
- package/dist/components/Notifications/NotificationCenter.js +2 -2
- package/dist/components/Notifications/ServerDisconnected.js +2 -1
- package/dist/components/OpenEditorButton.js +2 -2
- package/dist/components/OptionsPanel.js +7 -4
- package/dist/components/OverrideInputProps.js +7 -2
- package/dist/components/PlayPause.js +3 -1
- package/dist/components/PlaybackRateSelector.js +2 -2
- package/dist/components/Preview.js +8 -8
- package/dist/components/PreviewToolbar.js +11 -1
- package/dist/components/QuickSwitcher/AlgoliaCredit.js +1 -1
- package/dist/components/QuickSwitcher/NoResults.js +1 -1
- package/dist/components/QuickSwitcher/QuickSwitcher.js +1 -1
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +12 -3
- package/dist/components/QuickSwitcher/QuickSwitcherResult.js +6 -3
- package/dist/components/RefreshCompositionOverlay.js +1 -1
- package/dist/components/RenderButton.js +26 -9
- package/dist/components/RenderModal/CliCopyButton.js +3 -3
- package/dist/components/RenderModal/ClientRenderProgress.js +18 -13
- package/dist/components/RenderModal/CrfSetting.d.ts +1 -2
- package/dist/components/RenderModal/CrfSetting.js +1 -1
- package/dist/components/RenderModal/DataEditor.js +15 -8
- package/dist/components/RenderModal/EnforceAudioTrackSetting.js +5 -1
- package/dist/components/RenderModal/EnvInput.js +4 -1
- package/dist/components/RenderModal/FrameRangeSetting.js +5 -1
- package/dist/components/RenderModal/GuiRenderStatus.js +15 -10
- package/dist/components/RenderModal/InfoBubble.js +3 -2
- package/dist/components/RenderModal/InfoTooltip.js +3 -2
- package/dist/components/RenderModal/InlineEyeIcon.js +2 -2
- package/dist/components/RenderModal/InlineRemoveButton.js +2 -2
- package/dist/components/RenderModal/JpegQualitySetting.js +1 -1
- package/dist/components/RenderModal/MultiRangeSlider.js +3 -1
- package/dist/components/RenderModal/MutedSetting.js +5 -1
- package/dist/components/RenderModal/NumberOfLoopsSetting.js +3 -1
- package/dist/components/RenderModal/NumberSetting.js +6 -2
- package/dist/components/RenderModal/OptionExplainer.js +14 -1
- package/dist/components/RenderModal/OptionExplainerBubble.js +1 -1
- package/dist/components/RenderModal/RenderModalAdvanced.js +66 -7
- package/dist/components/RenderModal/RenderModalAudio.js +21 -4
- package/dist/components/RenderModal/RenderModalBasic.js +18 -3
- package/dist/components/RenderModal/RenderModalEnvironmentVariables.js +5 -3
- package/dist/components/RenderModal/RenderModalGif.js +6 -1
- package/dist/components/RenderModal/RenderModalHr.js +1 -1
- package/dist/components/RenderModal/RenderModalJSONPropsEditor.js +5 -2
- package/dist/components/RenderModal/RenderModalOutputName.js +8 -1
- package/dist/components/RenderModal/RenderModalPicture.js +30 -3
- package/dist/components/RenderModal/RenderStatusModal.js +12 -2
- package/dist/components/RenderModal/ResolveCompositionBeforeModal.js +6 -3
- package/dist/components/RenderModal/ScaleSetting.js +3 -2
- package/dist/components/RenderModal/SchemaEditor/Fieldset.js +2 -2
- package/dist/components/RenderModal/SchemaEditor/SchemaEditor.js +4 -4
- package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.js +31 -6
- package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +3 -3
- package/dist/components/RenderModal/SchemaEditor/SchemaResetButton.js +2 -2
- package/dist/components/RenderModal/SchemaEditor/SchemaSaveButton.js +2 -2
- package/dist/components/RenderModal/SchemaEditor/SchemaSeparationLine.js +9 -5
- package/dist/components/RenderModal/SchemaEditor/SchemaVerticalGuide.js +3 -1
- package/dist/components/RenderModal/SchemaEditor/ZodArrayEditor.js +9 -5
- package/dist/components/RenderModal/SchemaEditor/ZodArrayItemEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodBooleanEditor.js +3 -1
- package/dist/components/RenderModal/SchemaEditor/ZodColorEditor.js +8 -2
- package/dist/components/RenderModal/SchemaEditor/ZodDateEditor.js +5 -1
- package/dist/components/RenderModal/SchemaEditor/ZodDefaultEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +6 -4
- package/dist/components/RenderModal/SchemaEditor/ZodEffectEditor.js +3 -1
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +4 -2
- package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.js +6 -4
- package/dist/components/RenderModal/SchemaEditor/ZodFieldValidation.js +8 -2
- package/dist/components/RenderModal/SchemaEditor/ZodMatrixEditor.js +8 -6
- package/dist/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +3 -1
- package/dist/components/RenderModal/SchemaEditor/ZodNullableEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodNumberEditor.js +5 -1
- package/dist/components/RenderModal/SchemaEditor/ZodObjectEditor.js +6 -5
- package/dist/components/RenderModal/SchemaEditor/ZodOptionalEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +4 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +8 -5
- package/dist/components/RenderModal/SchemaEditor/ZodStringEditor.js +5 -1
- package/dist/components/RenderModal/SchemaEditor/ZodSwitch.js +24 -24
- package/dist/components/RenderModal/SchemaEditor/ZodTextareaEditor.js +5 -1
- package/dist/components/RenderModal/SchemaEditor/ZodTupleEditor.js +9 -5
- package/dist/components/RenderModal/SchemaEditor/ZodTupleItemEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodUnionEditor.js +5 -5
- package/dist/components/RenderModal/SchemaEditor/create-zod-values.d.ts +2 -2
- package/dist/components/RenderModal/SchemaEditor/extract-enum-json-paths.d.ts +4 -4
- package/dist/components/RenderModal/SchemaEditor/local-state.js +1 -1
- package/dist/components/RenderModal/SeparateAudioOption.js +7 -2
- package/dist/components/RenderModal/ServerRenderModal.js +28 -6
- package/dist/components/RenderModal/WarningIndicatorButton.js +4 -2
- package/dist/components/RenderModal/WebRenderModal.js +35 -7
- package/dist/components/RenderModal/WebRenderModalAdvanced.js +11 -4
- package/dist/components/RenderModal/WebRenderModalAudio.js +12 -2
- package/dist/components/RenderModal/WebRenderModalBasic.js +23 -5
- package/dist/components/RenderModal/WebRenderModalLicense.js +24 -2
- package/dist/components/RenderModal/WebRenderModalLicenseKeyDetails.js +12 -1
- package/dist/components/RenderModal/WebRenderModalPicture.js +8 -1
- package/dist/components/RenderModal/WebRendererExperimentalBadge.js +3 -1
- package/dist/components/RenderModal/get-default-codecs.d.ts +7 -8
- package/dist/components/RenderModal/human-readable-audio-codecs.d.ts +1 -2
- package/dist/components/RenderModal/human-readable-codec.d.ts +1 -2
- package/dist/components/RenderModal/human-readable-loglevel.d.ts +1 -2
- package/dist/components/RenderModal/out-name-checker.d.ts +4 -5
- package/dist/components/RenderModal/quality-options.js +1 -1
- package/dist/components/RenderPreview.js +4 -4
- package/dist/components/RenderQueue/CircularProgress.js +1 -1
- package/dist/components/RenderQueue/ClientRenderQueueProcessor.d.ts +1 -0
- package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +34 -5
- package/dist/components/RenderQueue/RenderQueueCancelledMessage.js +1 -1
- package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +2 -2
- package/dist/components/RenderQueue/RenderQueueDownloadItem.d.ts +5 -0
- package/dist/components/RenderQueue/RenderQueueDownloadItem.js +35 -0
- package/dist/components/RenderQueue/RenderQueueError.js +1 -1
- package/dist/components/RenderQueue/RenderQueueItem.js +51 -16
- package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +2 -2
- package/dist/components/RenderQueue/RenderQueueItemStatus.js +10 -7
- package/dist/components/RenderQueue/RenderQueueOpenInFolder.d.ts +2 -2
- package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +2 -2
- package/dist/components/RenderQueue/RenderQueueOutputName.js +2 -9
- package/dist/components/RenderQueue/RenderQueueProgressMessage.js +4 -2
- package/dist/components/RenderQueue/RenderQueueRemoveItem.js +6 -4
- package/dist/components/RenderQueue/RenderQueueRepeat.js +2 -2
- package/dist/components/RenderQueue/RenderQueueSavingMessage.d.ts +2 -0
- package/dist/components/RenderQueue/RenderQueueSavingMessage.js +13 -0
- package/dist/components/RenderQueue/SuccessIcon.js +1 -1
- package/dist/components/RenderQueue/actions.d.ts +21 -24
- package/dist/components/RenderQueue/client-side-render-types.d.ts +11 -9
- package/dist/components/RenderQueue/client-side-render-types.js +5 -0
- package/dist/components/RenderQueue/context.d.ts +6 -3
- package/dist/components/RenderQueue/context.js +39 -8
- package/dist/components/RenderQueue/index.js +11 -19
- package/dist/components/RendersTab.js +3 -1
- package/dist/components/ResetZoomButton.js +1 -1
- package/dist/components/RunningCalculateMetadata.js +5 -1
- package/dist/components/SegmentedControl.js +3 -3
- package/dist/components/SetTimelineInOutProvider.js +1 -1
- package/dist/components/ShowGuidesProvider.js +1 -1
- package/dist/components/ShowRulersProvider.js +1 -1
- package/dist/components/SidebarCollapserControls.js +5 -3
- package/dist/components/SidebarRenderButton.js +2 -2
- package/dist/components/SizeSelector.js +2 -2
- package/dist/components/Spinner.js +6 -4
- package/dist/components/Splitter/SplitterContainer.js +1 -1
- package/dist/components/Splitter/SplitterElement.js +3 -1
- package/dist/components/Splitter/SplitterHandle.js +1 -1
- package/dist/components/StaticFilePreview.js +5 -5
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Tabs/vertical.js +1 -1
- package/dist/components/TextViewer.js +1 -1
- package/dist/components/TimeValue.js +3 -1
- package/dist/components/Timeline/LoopedIndicator.js +4 -2
- package/dist/components/Timeline/LoopedTimelineIndicators.js +5 -4
- package/dist/components/Timeline/MaxTimelineTracks.js +1 -1
- package/dist/components/Timeline/Timeline.js +5 -1
- package/dist/components/Timeline/TimelineCollapseToggle.js +2 -2
- package/dist/components/Timeline/TimelineDragHandler.js +5 -3
- package/dist/components/Timeline/TimelineInOutPointer.js +2 -2
- package/dist/components/Timeline/TimelineInOutPointerHandle.js +2 -2
- package/dist/components/Timeline/TimelineLayerEye.js +3 -3
- package/dist/components/Timeline/TimelineList.js +3 -2
- package/dist/components/Timeline/TimelineListItem.js +3 -1
- package/dist/components/Timeline/TimelineScrollable.js +1 -1
- package/dist/components/Timeline/TimelineSequence.js +6 -6
- package/dist/components/Timeline/TimelineSequenceFrame.js +1 -1
- package/dist/components/Timeline/TimelineSlider.d.ts +1 -1
- package/dist/components/Timeline/TimelineSlider.js +6 -3
- package/dist/components/Timeline/TimelineSliderHandle.js +1 -1
- package/dist/components/Timeline/TimelineStack/index.js +5 -2
- package/dist/components/Timeline/TimelineTimeIndicators.js +5 -5
- package/dist/components/Timeline/TimelineTracks.js +6 -4
- package/dist/components/Timeline/TimelineVideoInfo.js +1 -1
- package/dist/components/Timeline/TimelineWidthProvider.js +1 -1
- package/dist/components/Timeline/TimelineZoomControls.js +3 -1
- package/dist/components/Timeline/timeline-scroll-logic.d.ts +1 -1
- package/dist/components/Timeline/timeline-scroll-logic.js +12 -8
- package/dist/components/TimelineInOutToggle.js +11 -7
- package/dist/components/TopPanel.js +5 -1
- package/dist/components/UpdateCheck.js +2 -2
- package/dist/components/UpdateModal/OpenIssueButton.js +2 -2
- package/dist/components/UpdateModal/UpdateModal.js +8 -1
- package/dist/components/VisualControls/ClickableFileName.js +1 -1
- package/dist/components/VisualControls/VisualControlHandle.js +3 -1
- package/dist/components/VisualControls/VisualControlHandleHeader.js +1 -1
- package/dist/components/VisualControls/VisualControlsContent.js +3 -2
- package/dist/components/ZoomGesturesProvider.js +1 -1
- package/dist/components/call-api.d.ts +1 -1
- package/dist/components/get-zod-if-possible.d.ts +3 -3
- package/dist/components/get-zod-if-possible.js +9 -9
- package/dist/components/layout.js +4 -4
- package/dist/components/use-static-files.d.ts +6 -0
- package/dist/components/use-static-files.js +63 -0
- package/dist/error-overlay/react-overlay/utils/parser.d.ts +1 -1
- package/dist/error-overlay/remotion-overlay/AskOnDiscord.js +1 -1
- package/dist/error-overlay/remotion-overlay/CalculateMetadataErrorExplainer.js +2 -1
- package/dist/error-overlay/remotion-overlay/CodeFrame.js +6 -4
- package/dist/error-overlay/remotion-overlay/CompositionIdListItem.js +1 -1
- package/dist/error-overlay/remotion-overlay/CompositionIdsDropdown.js +8 -3
- package/dist/error-overlay/remotion-overlay/DismissButton.js +1 -1
- package/dist/error-overlay/remotion-overlay/ErrorDisplay.js +19 -4
- package/dist/error-overlay/remotion-overlay/ErrorLoader.js +8 -4
- package/dist/error-overlay/remotion-overlay/ErrorMessage.js +2 -1
- package/dist/error-overlay/remotion-overlay/ErrorTitle.js +7 -1
- package/dist/error-overlay/remotion-overlay/HelpLink.js +1 -1
- package/dist/error-overlay/remotion-overlay/OpenInEditor.js +1 -1
- package/dist/error-overlay/remotion-overlay/Overlay.js +2 -2
- package/dist/error-overlay/remotion-overlay/Retry.js +1 -1
- package/dist/error-overlay/remotion-overlay/SearchGitHubIssues.js +1 -1
- package/dist/error-overlay/remotion-overlay/ShortcutHint.js +2 -1
- package/dist/error-overlay/remotion-overlay/StackFrame.js +6 -2
- package/dist/error-overlay/remotion-overlay/Symbolicating.js +3 -1
- package/dist/error-overlay/remotion-overlay/carets.d.ts +1 -1
- package/dist/error-overlay/remotion-overlay/carets.js +2 -2
- package/dist/error-overlay/remotion-overlay/index.js +2 -2
- package/dist/esm/{chunk-4153e552.js → chunk-3g77e2p9.js} +4722 -19219
- package/dist/esm/internals.mjs +4722 -19219
- package/dist/esm/previewEntry.mjs +4747 -19244
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/client-id.js +5 -2
- package/dist/helpers/color-math.d.ts +1 -2
- package/dist/helpers/create-folder-tree.d.ts +2 -2
- package/dist/helpers/document-title.js +2 -2
- package/dist/helpers/editor-ruler.d.ts +3 -3
- package/dist/helpers/extract-frames.d.ts +1 -1
- package/dist/helpers/pick-color.js +5 -1
- package/dist/helpers/presets-labels.d.ts +1 -2
- package/dist/helpers/prores-labels.d.ts +1 -2
- package/dist/helpers/render-modal-sections.d.ts +1 -2
- package/dist/helpers/retry-payload.d.ts +2 -2
- package/dist/helpers/timeline-layout.d.ts +1 -1
- package/dist/helpers/use-asset-drag-events.d.ts +1 -1
- package/dist/helpers/use-menu-structure.d.ts +1 -1
- package/dist/helpers/use-menu-structure.js +11 -11
- package/dist/helpers/use-studio-canvas-dimensions.d.ts +1 -1
- package/dist/helpers/validate-new-comp-data.d.ts +2 -3
- package/dist/hot-middleware-client/client.d.ts +1 -1
- package/dist/hot-middleware-client/process-update.d.ts +8 -2
- package/dist/hot-middleware-client/process-update.js +2 -1
- package/dist/icons/Checkmark.js +1 -1
- package/dist/icons/audio.js +1 -1
- package/dist/icons/caret.js +3 -3
- package/dist/icons/certificate.d.ts +1 -1
- package/dist/icons/certificate.js +1 -1
- package/dist/icons/check-circle-filled.js +1 -1
- package/dist/icons/clipboard.js +1 -1
- package/dist/icons/data.js +1 -1
- package/dist/icons/ellipsis.js +1 -1
- package/dist/icons/file.js +1 -1
- package/dist/icons/folder.js +3 -3
- package/dist/icons/frame.js +1 -1
- package/dist/icons/gear.js +1 -1
- package/dist/icons/gif.js +1 -1
- package/dist/icons/jump-to-start.js +1 -1
- package/dist/icons/keys.js +3 -3
- package/dist/icons/media-volume.js +2 -2
- package/dist/icons/minus.js +1 -1
- package/dist/icons/pause.js +1 -1
- package/dist/icons/play.js +1 -1
- package/dist/icons/plus.js +1 -1
- package/dist/icons/render.js +1 -1
- package/dist/icons/step-back.js +1 -1
- package/dist/icons/step-forward.js +1 -1
- package/dist/icons/still.js +1 -1
- package/dist/icons/timelineInOutPointer.js +2 -2
- package/dist/icons/video.js +1 -1
- package/dist/index.js +16 -16
- package/dist/internals.d.ts +1 -1
- package/dist/previewEntry.js +2 -2
- package/dist/renderEntry.js +10 -8
- package/dist/state/folders.js +1 -1
- package/dist/state/highest-z-index.js +1 -1
- package/dist/state/in-out.js +4 -3
- package/dist/state/keybindings.js +1 -1
- package/dist/state/preview-size.js +1 -1
- package/dist/state/sidebar.js +1 -1
- package/dist/state/timeline-zoom.js +1 -1
- package/dist/state/z-index.js +2 -1
- package/dist/visual-controls/VisualControls.js +1 -1
- package/dist/visual-controls/get-current-edited-value.js +2 -1
- package/package.json +13 -12
|
@@ -69,27 +69,30 @@ const RenderQueueItemStatus = ({ job }) => {
|
|
|
69
69
|
});
|
|
70
70
|
}, [job.id, setSelectedModal]);
|
|
71
71
|
if (job.status === 'failed') {
|
|
72
|
-
return (
|
|
72
|
+
return (jsx_runtime_1.jsx("button", { type: "button", style: invisibleStyle, onClick: onClick, children: jsx_runtime_1.jsx("svg", { style: iconStyle, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: colors_1.FAIL_COLOR, d: "M0 160V352L160 512H352L512 352V160L352 0H160L0 160zm353.9 32l-17 17-47 47 47 47 17 17L320 353.9l-17-17-47-47-47 47-17 17L158.1 320l17-17 47-47-47-47-17-17L192 158.1l17 17 47 47 47-47 17-17L353.9 192z" }) }) }));
|
|
73
73
|
}
|
|
74
74
|
if (job.status === 'idle') {
|
|
75
|
-
return (
|
|
75
|
+
return (jsx_runtime_1.jsx("svg", { style: iconStyle, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: colors_1.LIGHT_TEXT, d: "M256 512C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z" }) }));
|
|
76
76
|
}
|
|
77
77
|
if (job.status === 'done') {
|
|
78
|
-
return (
|
|
78
|
+
return (jsx_runtime_1.jsx("button", { type: "button", style: invisibleStyle, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, onClick: onClick, children: jsx_runtime_1.jsx("svg", { style: iconStyle, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: hovered ? 'white' : colors_1.LIGHT_TEXT, d: "M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM369 209L241 337l-17 17-17-17-64-64-17-17L160 222.1l17 17 47 47L335 175l17-17L385.9 192l-17 17z" }) }) }));
|
|
79
79
|
}
|
|
80
80
|
if (job.status === 'running') {
|
|
81
81
|
let progressValue;
|
|
82
82
|
if (isClientJob) {
|
|
83
|
-
const {
|
|
84
|
-
progressValue = totalFrames > 0 ?
|
|
83
|
+
const { encodedFrames, totalFrames } = job.progress;
|
|
84
|
+
progressValue = totalFrames > 0 ? encodedFrames / totalFrames : 0;
|
|
85
85
|
}
|
|
86
86
|
else {
|
|
87
87
|
progressValue = job.progress.value;
|
|
88
88
|
}
|
|
89
|
-
return (
|
|
89
|
+
return (jsx_runtime_1.jsx("button", { type: "button", style: invisibleStyle, onClick: onClick, children: jsx_runtime_1.jsx(CircularProgress_1.CircularProgress, { progress: Math.max(0.07, progressValue) }) }));
|
|
90
|
+
}
|
|
91
|
+
if (job.status === 'saving') {
|
|
92
|
+
return (jsx_runtime_1.jsx("button", { type: "button", style: invisibleStyle, onClick: onClick, children: jsx_runtime_1.jsx(CircularProgress_1.CircularProgress, { progress: 0.95 }) }));
|
|
90
93
|
}
|
|
91
94
|
if (job.status === 'cancelled') {
|
|
92
|
-
return (
|
|
95
|
+
return (jsx_runtime_1.jsx("svg", { style: iconStyle, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: colors_1.FAIL_COLOR, d: "M0 160V352L160 512H352L512 352V160L352 0H160L0 160zm353.9 32l-17 17-47 47 47 47 17 17L320 353.9l-17-17-47-47-47 47-17 17L158.1 320l17-17 47-47-47-47-17-17L192 158.1l17 17 47 47 47-47 17-17L353.9 192z" }) }));
|
|
93
96
|
}
|
|
94
97
|
throw new Error('Unknown job status');
|
|
95
98
|
};
|
|
@@ -21,8 +21,8 @@ const RenderQueueOpenInFinderItem = ({ job }) => {
|
|
|
21
21
|
};
|
|
22
22
|
}, []);
|
|
23
23
|
const renderAction = (0, react_1.useCallback)((color) => {
|
|
24
|
-
return
|
|
24
|
+
return jsx_runtime_1.jsx(folder_1.ExpandedFolderIconSolid, { style: icon, color: color });
|
|
25
25
|
}, [icon]);
|
|
26
|
-
return
|
|
26
|
+
return jsx_runtime_1.jsx(InlineAction_1.InlineAction, { renderAction: renderAction, onClick: onClick });
|
|
27
27
|
};
|
|
28
28
|
exports.RenderQueueOpenInFinderItem = RenderQueueOpenInFinderItem;
|
|
@@ -3,13 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.RenderQueueOutputName = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
const context_1 = require("./context");
|
|
7
6
|
const item_style_1 = require("./item-style");
|
|
8
7
|
const RenderQueueOutputName = ({ job }) => {
|
|
9
|
-
const
|
|
10
|
-
const deletedOutputLocation = isClientJob
|
|
11
|
-
? false
|
|
12
|
-
: job.deletedOutputLocation;
|
|
8
|
+
const deletedOutputLocation = 'deletedOutputLocation' in job && job.deletedOutputLocation;
|
|
13
9
|
const style = (0, react_1.useMemo)(() => {
|
|
14
10
|
return {
|
|
15
11
|
...item_style_1.renderQueueItemSubtitleStyle,
|
|
@@ -19,14 +15,11 @@ const RenderQueueOutputName = ({ job }) => {
|
|
|
19
15
|
};
|
|
20
16
|
}, [deletedOutputLocation]);
|
|
21
17
|
const getTitle = () => {
|
|
22
|
-
if (isClientJob) {
|
|
23
|
-
return `Downloaded as ${job.outName}`;
|
|
24
|
-
}
|
|
25
18
|
if (deletedOutputLocation) {
|
|
26
19
|
return 'File was deleted';
|
|
27
20
|
}
|
|
28
21
|
return job.outName;
|
|
29
22
|
};
|
|
30
|
-
return (
|
|
23
|
+
return (jsx_runtime_1.jsx("span", { style: style, title: getTitle(), children: job.outName }));
|
|
31
24
|
};
|
|
32
25
|
exports.RenderQueueOutputName = RenderQueueOutputName;
|
|
@@ -24,8 +24,10 @@ const RenderQueueProgressMessage = ({ job }) => {
|
|
|
24
24
|
});
|
|
25
25
|
}, [job.id, setSelectedModal]);
|
|
26
26
|
const message = isClientJob
|
|
27
|
-
?
|
|
27
|
+
? job.progress.totalFrames === 0
|
|
28
|
+
? 'Getting composition'
|
|
29
|
+
: `Encoding frame ${job.progress.encodedFrames}/${job.progress.totalFrames}`
|
|
28
30
|
: job.progress.message;
|
|
29
|
-
return (
|
|
31
|
+
return (jsx_runtime_1.jsx("button", { onClick: onClick, type: "button", style: outputLocation, tabIndex: tabIndex, title: message, children: message }));
|
|
30
32
|
};
|
|
31
33
|
exports.RenderQueueProgressMessage = RenderQueueProgressMessage;
|
|
@@ -4,6 +4,7 @@ exports.RenderQueueRemoveItem = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
|
+
const save_render_output_1 = require("../../api/save-render-output");
|
|
7
8
|
const InlineAction_1 = require("../InlineAction");
|
|
8
9
|
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
9
10
|
const actions_1 = require("./actions");
|
|
@@ -17,12 +18,13 @@ const RenderQueueRemoveItem = ({ job }) => {
|
|
|
17
18
|
e.stopPropagation();
|
|
18
19
|
if (isClientJob) {
|
|
19
20
|
if (canvasContent &&
|
|
20
|
-
canvasContent.type === 'output
|
|
21
|
+
canvasContent.type === 'output' &&
|
|
21
22
|
job.status === 'done' &&
|
|
22
|
-
canvasContent.
|
|
23
|
+
canvasContent.path === `/${job.outName}`) {
|
|
23
24
|
setCanvasContent(null);
|
|
24
25
|
}
|
|
25
26
|
removeClientJob(job.id);
|
|
27
|
+
(0, save_render_output_1.unregisterClientRender)(job.id).catch(() => { });
|
|
26
28
|
(0, NotificationCenter_1.showNotification)('Removed job', 2000);
|
|
27
29
|
return;
|
|
28
30
|
}
|
|
@@ -41,8 +43,8 @@ const RenderQueueRemoveItem = ({ job }) => {
|
|
|
41
43
|
};
|
|
42
44
|
}, []);
|
|
43
45
|
const renderAction = (0, react_1.useCallback)((color) => {
|
|
44
|
-
return (
|
|
46
|
+
return (jsx_runtime_1.jsx("svg", { style: icon, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 320 512", children: jsx_runtime_1.jsx("path", { fill: color, d: "M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z" }) }));
|
|
45
47
|
}, [icon]);
|
|
46
|
-
return
|
|
48
|
+
return jsx_runtime_1.jsx(InlineAction_1.InlineAction, { renderAction: renderAction, onClick: onClick });
|
|
47
49
|
};
|
|
48
50
|
exports.RenderQueueRemoveItem = RenderQueueRemoveItem;
|
|
@@ -41,8 +41,8 @@ const RenderQueueRepeatItem = ({ job }) => {
|
|
|
41
41
|
};
|
|
42
42
|
}, []);
|
|
43
43
|
const renderAction = (0, react_1.useCallback)((color) => {
|
|
44
|
-
return (
|
|
44
|
+
return (jsx_runtime_1.jsx("svg", { style: icon, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: color, d: "M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z" }) }));
|
|
45
45
|
}, [icon]);
|
|
46
|
-
return
|
|
46
|
+
return jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: onClick, renderAction: renderAction });
|
|
47
47
|
};
|
|
48
48
|
exports.RenderQueueRepeatItem = RenderQueueRepeatItem;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueueSavingMessage = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const item_style_1 = require("./item-style");
|
|
6
|
+
const savingStyle = {
|
|
7
|
+
...item_style_1.renderQueueItemSubtitleStyle,
|
|
8
|
+
cursor: 'default',
|
|
9
|
+
};
|
|
10
|
+
const RenderQueueSavingMessage = () => {
|
|
11
|
+
return jsx_runtime_1.jsx("span", { style: savingStyle, children: "Saving to out/..." });
|
|
12
|
+
};
|
|
13
|
+
exports.RenderQueueSavingMessage = RenderQueueSavingMessage;
|
|
@@ -9,6 +9,6 @@ const iconStyle = {
|
|
|
9
9
|
width: CircularProgress_1.RENDER_STATUS_INDICATOR_SIZE,
|
|
10
10
|
};
|
|
11
11
|
const SuccessIcon = () => {
|
|
12
|
-
return (
|
|
12
|
+
return (jsx_runtime_1.jsx("svg", { style: iconStyle, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: colors_1.LIGHT_TEXT, d: "M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM369 209L241 337l-17 17-17-17-64-64-17-17L160 222.1l17 17 47 47L335 175l17-17L385.9 192l-17 17z" }) }));
|
|
13
13
|
};
|
|
14
14
|
exports.SuccessIcon = SuccessIcon;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { HardwareAccelerationOption } from '@remotion/renderer/client';
|
|
3
|
-
import type { CanUpdateDefaultPropsResponse, EnumPath, RecastCodemod, RenderJob, RequiredChromiumOptions, VisualControlChange } from '@remotion/studio-shared';
|
|
4
|
-
import type { _InternalTypes } from 'remotion';
|
|
1
|
+
import type { CanUpdateDefaultPropsResponse, EnumPath, RecastCodemod, RenderJob, VisualControlChange } from '@remotion/studio-shared';
|
|
5
2
|
export declare const addStillRenderJob: ({ compositionId, outName, imageFormat, jpegQuality, frame, scale, logLevel, chromiumOptions, delayRenderTimeout, envVariables, inputProps, offthreadVideoCacheSizeInBytes, offthreadVideoThreads, multiProcessOnLinux, beepOnFinish, metadata, chromeMode, mediaCacheSizeInBytes, }: {
|
|
6
3
|
compositionId: string;
|
|
7
4
|
outName: string;
|
|
8
|
-
imageFormat:
|
|
5
|
+
imageFormat: "jpeg" | "pdf" | "png" | "webp";
|
|
9
6
|
jpegQuality: number;
|
|
10
7
|
frame: number;
|
|
11
8
|
scale: number;
|
|
12
|
-
logLevel:
|
|
13
|
-
chromiumOptions:
|
|
9
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
10
|
+
chromiumOptions: Required<import("@remotion/renderer").ChromiumOptions>;
|
|
14
11
|
delayRenderTimeout: number;
|
|
15
12
|
envVariables: Record<string, string>;
|
|
16
13
|
inputProps: Record<string, unknown>;
|
|
@@ -19,19 +16,19 @@ export declare const addStillRenderJob: ({ compositionId, outName, imageFormat,
|
|
|
19
16
|
multiProcessOnLinux: boolean;
|
|
20
17
|
beepOnFinish: boolean;
|
|
21
18
|
metadata: Record<string, string> | null;
|
|
22
|
-
chromeMode:
|
|
19
|
+
chromeMode: "chrome-for-testing" | "headless-shell";
|
|
23
20
|
mediaCacheSizeInBytes: number | null;
|
|
24
21
|
}) => Promise<undefined>;
|
|
25
22
|
export declare const addSequenceRenderJob: ({ compositionId, outName, imageFormat, startFrame, endFrame, scale, logLevel, chromiumOptions, delayRenderTimeout, envVariables, inputProps, concurrency, offthreadVideoCacheSizeInBytes, offthreadVideoThreads, jpegQuality, disallowParallelEncoding, multiProcessOnLinux, beepOnFinish, repro, metadata, chromeMode, mediaCacheSizeInBytes, }: {
|
|
26
23
|
compositionId: string;
|
|
27
24
|
outName: string;
|
|
28
|
-
imageFormat:
|
|
25
|
+
imageFormat: "jpeg" | "none" | "png";
|
|
29
26
|
jpegQuality: number;
|
|
30
27
|
startFrame: number;
|
|
31
28
|
endFrame: number;
|
|
32
29
|
scale: number;
|
|
33
|
-
logLevel:
|
|
34
|
-
chromiumOptions:
|
|
30
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
31
|
+
chromiumOptions: Required<import("@remotion/renderer").ChromiumOptions>;
|
|
35
32
|
concurrency: number;
|
|
36
33
|
delayRenderTimeout: number;
|
|
37
34
|
envVariables: Record<string, string>;
|
|
@@ -43,39 +40,39 @@ export declare const addSequenceRenderJob: ({ compositionId, outName, imageForma
|
|
|
43
40
|
beepOnFinish: boolean;
|
|
44
41
|
repro: boolean;
|
|
45
42
|
metadata: Record<string, string> | null;
|
|
46
|
-
chromeMode:
|
|
43
|
+
chromeMode: "chrome-for-testing" | "headless-shell";
|
|
47
44
|
mediaCacheSizeInBytes: number | null;
|
|
48
45
|
}) => Promise<undefined>;
|
|
49
46
|
export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat, jpegQuality, scale, logLevel, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, audioCodec, disallowParallelEncoding, chromiumOptions, envVariables, inputProps, offthreadVideoCacheSizeInBytes, offthreadVideoThreads, colorSpace, multiProcessOnLinux, encodingMaxRate, encodingBufferSize, beepOnFinish, repro, forSeamlessAacConcatenation, separateAudioTo, metadata, hardwareAcceleration, chromeMode, mediaCacheSizeInBytes, }: {
|
|
50
47
|
compositionId: string;
|
|
51
48
|
outName: string;
|
|
52
|
-
imageFormat:
|
|
49
|
+
imageFormat: "jpeg" | "none" | "png";
|
|
53
50
|
jpegQuality: number | null;
|
|
54
51
|
scale: number;
|
|
55
|
-
logLevel:
|
|
56
|
-
codec:
|
|
52
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
53
|
+
codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
|
|
57
54
|
concurrency: number;
|
|
58
55
|
crf: number | null;
|
|
59
56
|
startFrame: number;
|
|
60
57
|
endFrame: number;
|
|
61
58
|
muted: boolean;
|
|
62
59
|
enforceAudioTrack: boolean;
|
|
63
|
-
proResProfile:
|
|
64
|
-
x264Preset:
|
|
65
|
-
pixelFormat:
|
|
60
|
+
proResProfile: "4444" | "4444-xq" | "hq" | "light" | "proxy" | "standard" | null;
|
|
61
|
+
x264Preset: "fast" | "faster" | "medium" | "placebo" | "slow" | "slower" | "superfast" | "ultrafast" | "veryfast" | "veryslow" | null;
|
|
62
|
+
pixelFormat: "yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva420p" | "yuva444p10le";
|
|
66
63
|
audioBitrate: string | null;
|
|
67
64
|
videoBitrate: string | null;
|
|
68
65
|
everyNthFrame: number;
|
|
69
66
|
numberOfGifLoops: number | null;
|
|
70
67
|
delayRenderTimeout: number;
|
|
71
|
-
audioCodec:
|
|
68
|
+
audioCodec: "aac" | "mp3" | "opus" | "pcm-16";
|
|
72
69
|
disallowParallelEncoding: boolean;
|
|
73
|
-
chromiumOptions:
|
|
70
|
+
chromiumOptions: Required<import("@remotion/renderer").ChromiumOptions>;
|
|
74
71
|
envVariables: Record<string, string>;
|
|
75
72
|
inputProps: Record<string, unknown>;
|
|
76
73
|
offthreadVideoCacheSizeInBytes: number | null;
|
|
77
74
|
offthreadVideoThreads: number | null;
|
|
78
|
-
colorSpace:
|
|
75
|
+
colorSpace: "bt2020-ncl" | "bt601" | "bt709" | "default";
|
|
79
76
|
multiProcessOnLinux: boolean;
|
|
80
77
|
encodingMaxRate: string | null;
|
|
81
78
|
encodingBufferSize: string | null;
|
|
@@ -84,8 +81,8 @@ export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat,
|
|
|
84
81
|
forSeamlessAacConcatenation: boolean;
|
|
85
82
|
separateAudioTo: string | null;
|
|
86
83
|
metadata: Record<string, string> | null;
|
|
87
|
-
hardwareAcceleration:
|
|
88
|
-
chromeMode:
|
|
84
|
+
hardwareAcceleration: "disable" | "if-possible" | "required";
|
|
85
|
+
chromeMode: "chrome-for-testing" | "headless-shell";
|
|
89
86
|
mediaCacheSizeInBytes: number | null;
|
|
90
87
|
}) => Promise<undefined>;
|
|
91
88
|
export declare const unsubscribeFromFileExistenceWatcher: ({ file, clientId, }: {
|
|
@@ -102,7 +99,7 @@ export declare const openInFileExplorer: ({ directory }: {
|
|
|
102
99
|
export declare const applyCodemod: ({ codemod, dryRun, signal, }: {
|
|
103
100
|
codemod: RecastCodemod;
|
|
104
101
|
dryRun: boolean;
|
|
105
|
-
signal:
|
|
102
|
+
signal: AbortSignal;
|
|
106
103
|
}) => Promise<import("@remotion/studio-shared").ApplyCodemodResponse>;
|
|
107
104
|
export declare const removeRenderJob: (job: RenderJob) => Promise<undefined>;
|
|
108
105
|
export declare const cancelRenderJob: (job: RenderJob) => Promise<import("@remotion/studio-shared").CancelRenderResponse>;
|
|
@@ -1,25 +1,22 @@
|
|
|
1
|
+
import type { CompletedClientRender } from '@remotion/studio-shared';
|
|
1
2
|
import type { RenderStillOnWebImageFormat, WebRendererAudioCodec, WebRendererContainer, WebRendererQuality, WebRendererVideoCodec } from '@remotion/web-renderer';
|
|
2
3
|
import type { LogLevel } from 'remotion';
|
|
3
4
|
export type ClientRenderJobProgress = {
|
|
4
|
-
renderedFrames: number;
|
|
5
5
|
encodedFrames: number;
|
|
6
6
|
totalFrames: number;
|
|
7
7
|
};
|
|
8
8
|
export type GetBlobCallback = () => Promise<Blob>;
|
|
9
|
-
export type ClientRenderMetadata = {
|
|
10
|
-
width: number;
|
|
11
|
-
height: number;
|
|
12
|
-
sizeInBytes: number;
|
|
13
|
-
};
|
|
14
9
|
type ClientRenderJobDynamicStatus = {
|
|
15
10
|
status: 'idle';
|
|
16
11
|
} | {
|
|
17
12
|
status: 'running';
|
|
18
13
|
progress: ClientRenderJobProgress;
|
|
14
|
+
} | {
|
|
15
|
+
status: 'saving';
|
|
19
16
|
} | {
|
|
20
17
|
status: 'done';
|
|
21
|
-
getBlob
|
|
22
|
-
metadata:
|
|
18
|
+
getBlob?: GetBlobCallback;
|
|
19
|
+
metadata: CompletedClientRender['metadata'];
|
|
23
20
|
} | {
|
|
24
21
|
status: 'cancelled';
|
|
25
22
|
} | {
|
|
@@ -60,5 +57,10 @@ export type ClientVideoRenderJob = ClientRenderJobBase & {
|
|
|
60
57
|
transparent: boolean;
|
|
61
58
|
muted: boolean;
|
|
62
59
|
} & ClientRenderJobDynamicStatus;
|
|
63
|
-
export type
|
|
60
|
+
export type RestoredClientRenderJob = CompletedClientRender & {
|
|
61
|
+
status: 'done';
|
|
62
|
+
getBlob?: GetBlobCallback;
|
|
63
|
+
};
|
|
64
|
+
export type ClientRenderJob = ClientStillRenderJob | ClientVideoRenderJob | RestoredClientRenderJob;
|
|
65
|
+
export declare const isRestoredClientJob: (job: ClientRenderJob) => job is RestoredClientRenderJob;
|
|
64
66
|
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { RenderJob } from '@remotion/studio-shared';
|
|
1
|
+
import type { CompletedClientRender, RenderJob } from '@remotion/studio-shared';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { type AddClientStillJobParams, type AddClientVideoJobParams, type CompositionRef } from './client-render-queue';
|
|
4
|
-
import type { ClientRenderJob, ClientRenderJobProgress,
|
|
4
|
+
import type { ClientRenderJob, ClientRenderJobProgress, GetBlobCallback } from './client-side-render-types';
|
|
5
5
|
declare global {
|
|
6
6
|
interface Window {
|
|
7
7
|
remotion_initialRenderQueue: RenderJob[] | null;
|
|
8
|
+
remotion_initialClientRenders: CompletedClientRender[] | null;
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
11
|
export type AnyRenderJob = RenderJob | ClientRenderJob;
|
|
@@ -16,7 +17,8 @@ type RenderQueueContextType = {
|
|
|
16
17
|
addClientStillJob: (params: AddClientStillJobParams, compositionRef: CompositionRef) => string;
|
|
17
18
|
addClientVideoJob: (params: AddClientVideoJobParams, compositionRef: CompositionRef) => string;
|
|
18
19
|
updateClientJobProgress: (jobId: string, progress: ClientRenderJobProgress) => void;
|
|
19
|
-
|
|
20
|
+
markClientJobSaving: (jobId: string) => void;
|
|
21
|
+
markClientJobDone: (jobId: string, metadata: CompletedClientRender['metadata'], getBlob?: GetBlobCallback) => void;
|
|
20
22
|
markClientJobFailed: (jobId: string, error: Error) => void;
|
|
21
23
|
markClientJobCancelled: (jobId: string) => void;
|
|
22
24
|
removeClientJob: (jobId: string) => void;
|
|
@@ -28,6 +30,7 @@ type RenderQueueContextType = {
|
|
|
28
30
|
export declare const RenderQueueContext: React.Context<RenderQueueContextType>;
|
|
29
31
|
export declare const renderJobsRef: React.RefObject<{
|
|
30
32
|
updateRenderJobs: (jobs: RenderJob[]) => void;
|
|
33
|
+
updateClientRenders: (renders: CompletedClientRender[]) => void;
|
|
31
34
|
} | null>;
|
|
32
35
|
export declare const RenderQueueContextProvider: React.FC<{
|
|
33
36
|
readonly children: React.ReactNode;
|
|
@@ -37,6 +37,11 @@ exports.RenderQueueContextProvider = exports.renderJobsRef = exports.RenderQueue
|
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
39
|
const client_render_queue_1 = require("./client-render-queue");
|
|
40
|
+
const restorePersistedClientRenders = () => {
|
|
41
|
+
var _a;
|
|
42
|
+
const persisted = (_a = window.remotion_initialClientRenders) !== null && _a !== void 0 ? _a : [];
|
|
43
|
+
return persisted.map((r) => ({ ...r, status: 'done' }));
|
|
44
|
+
};
|
|
40
45
|
const isClientRenderJob = (job) => {
|
|
41
46
|
return job.type === 'client-still' || job.type === 'client-video';
|
|
42
47
|
};
|
|
@@ -50,6 +55,7 @@ exports.RenderQueueContext = react_1.default.createContext({
|
|
|
50
55
|
addClientStillJob: noopString,
|
|
51
56
|
addClientVideoJob: noopString,
|
|
52
57
|
updateClientJobProgress: noop,
|
|
58
|
+
markClientJobSaving: noop,
|
|
53
59
|
markClientJobDone: noop,
|
|
54
60
|
markClientJobFailed: noop,
|
|
55
61
|
markClientJobCancelled: noop,
|
|
@@ -63,7 +69,7 @@ exports.renderJobsRef = (0, react_1.createRef)();
|
|
|
63
69
|
const RenderQueueContextProvider = ({ children }) => {
|
|
64
70
|
var _a;
|
|
65
71
|
const [serverJobs, setServerJobs] = (0, react_1.useState)((_a = window.remotion_initialRenderQueue) !== null && _a !== void 0 ? _a : []);
|
|
66
|
-
const [clientJobs, setClientJobs] = (0, react_1.useState)(
|
|
72
|
+
const [clientJobs, setClientJobs] = (0, react_1.useState)(restorePersistedClientRenders);
|
|
67
73
|
const [currentlyProcessing, setCurrentlyProcessing] = (0, react_1.useState)(null);
|
|
68
74
|
const processJobCallbackRef = (0, react_1.useRef)(null);
|
|
69
75
|
// Process next job when state changes
|
|
@@ -80,7 +86,7 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
80
86
|
? {
|
|
81
87
|
...job,
|
|
82
88
|
status: 'running',
|
|
83
|
-
progress: {
|
|
89
|
+
progress: { encodedFrames: 0, totalFrames: 0 },
|
|
84
90
|
}
|
|
85
91
|
: job));
|
|
86
92
|
processJobCallbackRef.current(nextJob);
|
|
@@ -114,12 +120,15 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
114
120
|
? { ...job, status: 'running', progress }
|
|
115
121
|
: job));
|
|
116
122
|
}, []);
|
|
117
|
-
const
|
|
118
|
-
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
119
|
-
(0, client_render_queue_1.cleanupCompositionForJob)(jobId);
|
|
123
|
+
const markClientJobSaving = (0, react_1.useCallback)((jobId) => {
|
|
120
124
|
setClientJobs((prev) => prev.map((job) => job.id === jobId
|
|
121
|
-
? { ...job, status: '
|
|
125
|
+
? { ...job, status: 'saving' }
|
|
122
126
|
: job));
|
|
127
|
+
}, []);
|
|
128
|
+
const markClientJobDone = (0, react_1.useCallback)((jobId, metadata, getBlob) => {
|
|
129
|
+
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
130
|
+
(0, client_render_queue_1.cleanupCompositionForJob)(jobId);
|
|
131
|
+
setClientJobs((prev) => prev.map((job) => job.id === jobId ? { ...job, status: 'done', metadata, getBlob } : job));
|
|
123
132
|
setCurrentlyProcessing(null);
|
|
124
133
|
}, []);
|
|
125
134
|
const markClientJobFailed = (0, react_1.useCallback)((jobId, error) => {
|
|
@@ -166,15 +175,36 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
166
175
|
updateRenderJobs: (newJobs) => {
|
|
167
176
|
setServerJobs(newJobs);
|
|
168
177
|
},
|
|
178
|
+
updateClientRenders: (renders) => {
|
|
179
|
+
setClientJobs((prev) => {
|
|
180
|
+
const existingIds = new Set(prev.map((j) => j.id));
|
|
181
|
+
const updatedPrev = prev.map((job) => {
|
|
182
|
+
const updated = renders.find((r) => r.id === job.id);
|
|
183
|
+
if (updated && job.status === 'done') {
|
|
184
|
+
return {
|
|
185
|
+
...job,
|
|
186
|
+
deletedOutputLocation: updated.deletedOutputLocation,
|
|
187
|
+
metadata: updated.metadata,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return job;
|
|
191
|
+
});
|
|
192
|
+
const newJobs = renders
|
|
193
|
+
.filter((r) => !existingIds.has(r.id))
|
|
194
|
+
.map((r) => ({ ...r, status: 'done' }));
|
|
195
|
+
return [...updatedPrev, ...newJobs];
|
|
196
|
+
});
|
|
197
|
+
},
|
|
169
198
|
}), []);
|
|
170
199
|
const value = (0, react_1.useMemo)(() => {
|
|
171
200
|
return {
|
|
172
|
-
jobs: [...serverJobs, ...clientJobs],
|
|
201
|
+
jobs: [...serverJobs, ...clientJobs].sort((a, b) => a.startedAt - b.startedAt),
|
|
173
202
|
serverJobs,
|
|
174
203
|
clientJobs,
|
|
175
204
|
addClientStillJob,
|
|
176
205
|
addClientVideoJob,
|
|
177
206
|
updateClientJobProgress,
|
|
207
|
+
markClientJobSaving,
|
|
178
208
|
markClientJobDone,
|
|
179
209
|
markClientJobFailed,
|
|
180
210
|
markClientJobCancelled,
|
|
@@ -190,6 +220,7 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
190
220
|
addClientStillJob,
|
|
191
221
|
addClientVideoJob,
|
|
192
222
|
updateClientJobProgress,
|
|
223
|
+
markClientJobSaving,
|
|
193
224
|
markClientJobDone,
|
|
194
225
|
markClientJobFailed,
|
|
195
226
|
markClientJobCancelled,
|
|
@@ -197,6 +228,6 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
197
228
|
cancelClientJob,
|
|
198
229
|
setProcessJobCallback,
|
|
199
230
|
]);
|
|
200
|
-
return (
|
|
231
|
+
return (jsx_runtime_1.jsx(exports.RenderQueueContext.Provider, { value: value, children: children }));
|
|
201
232
|
};
|
|
202
233
|
exports.RenderQueueContextProvider = RenderQueueContextProvider;
|
|
@@ -39,6 +39,7 @@ const react_1 = __importStar(require("react"));
|
|
|
39
39
|
const remotion_1 = require("remotion");
|
|
40
40
|
const client_id_1 = require("../../helpers/client-id");
|
|
41
41
|
const colors_1 = require("../../helpers/colors");
|
|
42
|
+
const show_browser_rendering_1 = require("../../helpers/show-browser-rendering");
|
|
42
43
|
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
43
44
|
const layout_1 = require("../layout");
|
|
44
45
|
const RenderQueueItem_1 = require("./RenderQueueItem");
|
|
@@ -92,37 +93,28 @@ const RenderQueue = () => {
|
|
|
92
93
|
if (!canvasContent) {
|
|
93
94
|
return -1;
|
|
94
95
|
}
|
|
95
|
-
if (canvasContent.type === 'output-blob') {
|
|
96
|
-
for (let i = 0; i < jobs.length; i++) {
|
|
97
|
-
const job = jobs[i];
|
|
98
|
-
if ((0, context_1.isClientRenderJob)(job) && job.status === 'done') {
|
|
99
|
-
if (canvasContent.getBlob === job.getBlob) {
|
|
100
|
-
return i;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return -1;
|
|
105
|
-
}
|
|
106
96
|
if (canvasContent.type === 'output') {
|
|
107
97
|
for (let i = 0; i < jobs.length; i++) {
|
|
108
98
|
const job = jobs[i];
|
|
109
|
-
if (
|
|
110
|
-
job.status === 'done' &&
|
|
111
|
-
canvasContent.path === `/${job.outName}`) {
|
|
99
|
+
if (job.status === 'done' && canvasContent.path === `/${job.outName}`) {
|
|
112
100
|
return i;
|
|
113
101
|
}
|
|
114
102
|
}
|
|
115
103
|
}
|
|
116
104
|
return -1;
|
|
117
105
|
}, [canvasContent, jobs]);
|
|
118
|
-
if (connectionStatus === 'disconnected') {
|
|
119
|
-
return (
|
|
106
|
+
if (connectionStatus === 'disconnected' && !show_browser_rendering_1.SHOW_BROWSER_RENDERING) {
|
|
107
|
+
return (jsx_runtime_1.jsxs("div", { style: explainer, children: [
|
|
108
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { y: 5 }), jsx_runtime_1.jsx("div", { style: errorExplanation, children: "The studio server has disconnected." }), jsx_runtime_1.jsx(layout_1.Spacing, { y: 2, block: true })
|
|
109
|
+
] }));
|
|
120
110
|
}
|
|
121
111
|
if (jobCount === 0) {
|
|
122
|
-
return (
|
|
112
|
+
return (jsx_runtime_1.jsxs("div", { style: explainer, children: [
|
|
113
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { y: 5 }), jsx_runtime_1.jsx("div", { style: errorExplanation, children: "No renders in the queue." }), jsx_runtime_1.jsx(layout_1.Spacing, { y: 2, block: true })
|
|
114
|
+
] }));
|
|
123
115
|
}
|
|
124
|
-
return (
|
|
125
|
-
return (
|
|
116
|
+
return (jsx_runtime_1.jsx("div", { ref: divRef, style: renderQueue, className: ['css-reset', is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME].join(' '), children: jobs.map((j, index) => {
|
|
117
|
+
return (jsx_runtime_1.jsx("div", { style: index === jobs.length - 1 ? undefined : separatorStyle, children: jsx_runtime_1.jsx(RenderQueueItem_1.RenderQueueItem, { selected: selectedJob === index, job: j }) }, j.id));
|
|
126
118
|
}) }));
|
|
127
119
|
};
|
|
128
120
|
exports.RenderQueue = RenderQueue;
|
|
@@ -46,6 +46,8 @@ const RendersTab = ({ selected, onClick }) => {
|
|
|
46
46
|
borderColor: colors_1.LIGHT_TEXT,
|
|
47
47
|
};
|
|
48
48
|
}, [failedJobs]);
|
|
49
|
-
return (
|
|
49
|
+
return (jsx_runtime_1.jsx(Tabs_1.Tab, { selected: isActuallySelected, onClick: onClick, children: jsx_runtime_1.jsxs("div", { style: row, children: ["Renders", jobCount > 0 ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
50
|
+
jsx_runtime_1.jsx(layout_1.Flex, {}), jsx_runtime_1.jsx("div", { style: badgeStyle, children: jobCount })
|
|
51
|
+
] })) : null] }) }));
|
|
50
52
|
};
|
|
51
53
|
exports.RendersTab = RendersTab;
|
|
@@ -4,6 +4,6 @@ exports.ResetZoomButton = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const Button_1 = require("./Button");
|
|
6
6
|
const ResetZoomButton = ({ onClick }) => {
|
|
7
|
-
return
|
|
7
|
+
return jsx_runtime_1.jsx(Button_1.Button, { onClick: onClick, children: "Reset zoom" });
|
|
8
8
|
};
|
|
9
9
|
exports.ResetZoomButton = ResetZoomButton;
|
|
@@ -21,6 +21,10 @@ const container = {
|
|
|
21
21
|
padding: 20,
|
|
22
22
|
};
|
|
23
23
|
const RunningCalculateMetadata = () => {
|
|
24
|
-
return (
|
|
24
|
+
return (jsx_runtime_1.jsxs("div", { style: container, children: [
|
|
25
|
+
jsx_runtime_1.jsx(Spinner_1.Spinner, { size: 24, duration: 1 }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 }), jsx_runtime_1.jsxs("div", { style: exports.loaderLabel, children: ["Running ",
|
|
26
|
+
jsx_runtime_1.jsx("code", { style: styles_1.inlineCodeSnippet, children: "calculateMetadata()" }),
|
|
27
|
+
"..."] })
|
|
28
|
+
] }));
|
|
25
29
|
};
|
|
26
30
|
exports.RunningCalculateMetadata = RunningCalculateMetadata;
|
|
@@ -40,8 +40,8 @@ const SegmentedControl = ({ items, needsWrapping }) => {
|
|
|
40
40
|
...container,
|
|
41
41
|
};
|
|
42
42
|
}, [needsWrapping]);
|
|
43
|
-
return (
|
|
44
|
-
return (
|
|
43
|
+
return (jsx_runtime_1.jsx("div", { style: controlStyle, children: items.map((i) => {
|
|
44
|
+
return (jsx_runtime_1.jsx(Item, { onClick: i.onClick, selected: i.selected, children: i.label }, i.key));
|
|
45
45
|
}) }));
|
|
46
46
|
};
|
|
47
47
|
exports.SegmentedControl = SegmentedControl;
|
|
@@ -61,5 +61,5 @@ const Item = ({ selected, onClick, children }) => {
|
|
|
61
61
|
color: selected ? 'white' : hovered ? 'white' : colors_1.LIGHT_TEXT,
|
|
62
62
|
};
|
|
63
63
|
}, [hovered, selected]);
|
|
64
|
-
return (
|
|
64
|
+
return (jsx_runtime_1.jsx("button", { type: "button", onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, style: itemStyle, tabIndex: tabIndex, onClick: onClick, children: children }));
|
|
65
65
|
};
|
|
@@ -15,6 +15,6 @@ const SetTimelineInOutProvider = ({ children }) => {
|
|
|
15
15
|
(0, react_1.useEffect)(() => {
|
|
16
16
|
(0, marks_1.persistMarks)(inAndOutFrames);
|
|
17
17
|
}, [inAndOutFrames]);
|
|
18
|
-
return (
|
|
18
|
+
return (jsx_runtime_1.jsx(in_out_1.TimelineInOutContext.Provider, { value: inAndOutFrames, children: jsx_runtime_1.jsx(in_out_1.SetTimelineInOutContext.Provider, { value: setTimelineInOutContextValue, children: children }) }));
|
|
19
19
|
};
|
|
20
20
|
exports.SetTimelineInOutProvider = SetTimelineInOutProvider;
|
|
@@ -38,6 +38,6 @@ const ShowGuidesProvider = ({ children }) => {
|
|
|
38
38
|
selectedGuideId,
|
|
39
39
|
hoveredGuideId,
|
|
40
40
|
]);
|
|
41
|
-
return (
|
|
41
|
+
return (jsx_runtime_1.jsx(editor_guides_1.EditorShowGuidesContext.Provider, { value: editorShowGuidesCtx, children: children }));
|
|
42
42
|
};
|
|
43
43
|
exports.ShowGuidesProvider = ShowGuidesProvider;
|