@remotion/cli 3.3.36 → 3.3.37

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.
Files changed (60) hide show
  1. package/dist/config/log.d.ts +1 -1
  2. package/dist/editor/components/Modals.js +1 -1
  3. package/dist/editor/components/NewComposition/ComboBox.js +8 -2
  4. package/dist/editor/components/NewComposition/InputDragger.js +1 -0
  5. package/dist/editor/components/RenderButton.js +29 -8
  6. package/dist/editor/components/RenderModal/CrfSetting.d.ts +2 -2
  7. package/dist/editor/components/RenderModal/CrfSetting.js +11 -24
  8. package/dist/editor/components/RenderModal/EveryNthFrameSetting.d.ts +5 -0
  9. package/dist/editor/components/RenderModal/EveryNthFrameSetting.js +9 -0
  10. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.d.ts +5 -0
  11. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.js +26 -0
  12. package/dist/editor/components/RenderModal/NumberSetting.d.ts +9 -0
  13. package/dist/editor/components/RenderModal/NumberSetting.js +26 -0
  14. package/dist/editor/components/RenderModal/RenderModal.d.ts +19 -5
  15. package/dist/editor/components/RenderModal/RenderModal.js +225 -181
  16. package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +11 -0
  17. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +15 -0
  18. package/dist/editor/components/RenderModal/RenderModalAudio.d.ts +13 -0
  19. package/dist/editor/components/RenderModal/RenderModalAudio.js +22 -0
  20. package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +22 -0
  21. package/dist/editor/components/RenderModal/RenderModalBasic.js +70 -0
  22. package/dist/editor/components/RenderModal/RenderModalGeneral.d.ts +0 -0
  23. package/dist/editor/components/RenderModal/RenderModalGeneral.js +1 -0
  24. package/dist/editor/components/RenderModal/RenderModalGif.d.ts +9 -0
  25. package/dist/editor/components/RenderModal/RenderModalGif.js +16 -0
  26. package/dist/editor/components/RenderModal/RenderModalHr.d.ts +2 -0
  27. package/dist/editor/components/RenderModal/RenderModalHr.js +18 -0
  28. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +28 -0
  29. package/dist/editor/components/RenderModal/RenderModalPicture.js +51 -0
  30. package/dist/editor/components/RenderModal/ScaleSetting.js +2 -18
  31. package/dist/editor/components/RenderModal/human-readable-codec.d.ts +2 -0
  32. package/dist/editor/components/RenderModal/human-readable-codec.js +36 -0
  33. package/dist/editor/components/RenderModal/layout.d.ts +1 -0
  34. package/dist/editor/components/RenderModal/layout.js +8 -2
  35. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +2 -1
  36. package/dist/editor/components/RenderQueue/actions.d.ts +15 -2
  37. package/dist/editor/components/RenderQueue/actions.js +14 -1
  38. package/dist/editor/components/RenderToolbarIcon.js +30 -8
  39. package/dist/editor/components/SegmentedControl.js +1 -1
  40. package/dist/editor/components/SidebarContent.js +2 -1
  41. package/dist/editor/icons/audio.d.ts +2 -0
  42. package/dist/editor/icons/audio.js +6 -0
  43. package/dist/editor/icons/file.d.ts +2 -0
  44. package/dist/editor/icons/file.js +6 -0
  45. package/dist/editor/icons/frame.d.ts +2 -0
  46. package/dist/editor/icons/frame.js +6 -0
  47. package/dist/editor/icons/gear.d.ts +2 -0
  48. package/dist/editor/icons/gear.js +6 -0
  49. package/dist/editor/icons/gif.d.ts +2 -0
  50. package/dist/editor/icons/gif.js +6 -0
  51. package/dist/get-cli-options.d.ts +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/preview-server/render-queue/get-default-video-contexts.d.ts +1 -1
  54. package/dist/preview-server/render-queue/job.d.ts +27 -1
  55. package/dist/preview-server/render-queue/make-retry-payload.js +52 -10
  56. package/dist/preview-server/render-queue/process-video.js +16 -9
  57. package/dist/preview-server/routes/add-render.js +13 -0
  58. package/dist/render-flows/render.d.ts +14 -4
  59. package/dist/render-flows/render.js +40 -13
  60. package/package.json +7 -7
@@ -0,0 +1,22 @@
1
+ import type { Codec, ProResProfile } from '@remotion/renderer';
2
+ import React from 'react';
3
+ import type { TComposition } from 'remotion';
4
+ import type { SegmentedControlItem } from '../SegmentedControl';
5
+ import type { RenderType } from './RenderModalAdvanced';
6
+ export declare const RenderModalBasic: React.FC<{
7
+ renderMode: RenderType;
8
+ imageFormatOptions: SegmentedControlItem[];
9
+ codec: Codec;
10
+ setCodec: (newCodec: Codec) => void;
11
+ outName: string;
12
+ proResProfile: ProResProfile | null;
13
+ setProResProfile: React.Dispatch<React.SetStateAction<ProResProfile>>;
14
+ frame: number;
15
+ setFrame: React.Dispatch<React.SetStateAction<number>>;
16
+ currentComposition: TComposition<unknown>;
17
+ setOutName: (value: React.SetStateAction<string>) => void;
18
+ setEndFrame: React.Dispatch<React.SetStateAction<number | null>>;
19
+ startFrame: number;
20
+ endFrame: number;
21
+ setStartFrame: React.Dispatch<React.SetStateAction<number | null>>;
22
+ }>;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderModalBasic = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const client_1 = require("@remotion/renderer/client");
6
+ const react_1 = require("react");
7
+ const use_file_existence_1 = require("../../helpers/use-file-existence");
8
+ const Checkmark_1 = require("../../icons/Checkmark");
9
+ const ComboBox_1 = require("../NewComposition/ComboBox");
10
+ const InputDragger_1 = require("../NewComposition/InputDragger");
11
+ const RemInput_1 = require("../NewComposition/RemInput");
12
+ const ValidationMessage_1 = require("../NewComposition/ValidationMessage");
13
+ const SegmentedControl_1 = require("../SegmentedControl");
14
+ const FrameRangeSetting_1 = require("./FrameRangeSetting");
15
+ const human_readable_codec_1 = require("./human-readable-codec");
16
+ const layout_1 = require("./layout");
17
+ const RenderModalBasic = ({ renderMode, imageFormatOptions, outName, codec, setCodec, proResProfile, setProResProfile, frame, setFrame, currentComposition, setOutName, setEndFrame, endFrame, setStartFrame, startFrame, }) => {
18
+ const existence = (0, use_file_existence_1.useFileExistence)(outName);
19
+ const videoCodecOptions = (0, react_1.useMemo)(() => {
20
+ return client_1.BrowserSafeApis.validCodecs
21
+ .filter((c) => {
22
+ return client_1.BrowserSafeApis.isAudioCodec(c) === (renderMode === 'audio');
23
+ })
24
+ .map((codecOption) => {
25
+ return {
26
+ label: (0, human_readable_codec_1.humanReadableCodec)(codecOption),
27
+ onClick: () => setCodec(codecOption),
28
+ key: codecOption,
29
+ leftItem: codec === codecOption ? (0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {}) : null,
30
+ id: codecOption,
31
+ keyHint: null,
32
+ quickSwitcherLabel: null,
33
+ subMenu: null,
34
+ type: 'item',
35
+ value: codecOption,
36
+ };
37
+ });
38
+ }, [renderMode, setCodec, codec]);
39
+ const proResProfileOptions = (0, react_1.useMemo)(() => {
40
+ return client_1.BrowserSafeApis.proResProfileOptions.map((option) => {
41
+ return {
42
+ label: option,
43
+ onClick: () => setProResProfile(option),
44
+ key: option,
45
+ selected: proResProfile === option,
46
+ };
47
+ });
48
+ }, [proResProfile, setProResProfile]);
49
+ const onFrameSetDirectly = (0, react_1.useCallback)((newFrame) => {
50
+ setFrame(newFrame);
51
+ }, [setFrame]);
52
+ const onFrameChanged = (0, react_1.useCallback)((e) => {
53
+ setFrame((q) => {
54
+ const newFrame = parseFloat(e);
55
+ if (Number.isNaN(newFrame)) {
56
+ return q;
57
+ }
58
+ return newFrame;
59
+ });
60
+ }, [setFrame]);
61
+ const onValueChange = (0, react_1.useCallback)((e) => {
62
+ setOutName(e.target.value);
63
+ }, [setOutName]);
64
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [renderMode === 'still' ? ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Format" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(SegmentedControl_1.SegmentedControl, { items: imageFormatOptions, needsWrapping: true }) })] })) : ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Codec" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(ComboBox_1.Combobox, { values: videoCodecOptions, selectedId: codec, title: "Codec" }) })] })), renderMode === 'still' && currentComposition.durationInFrames > 1 ? ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Frame" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(RemInput_1.RightAlignInput, { children: (0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { value: frame, onTextChange: onFrameChanged, placeholder: `0-${currentComposition.durationInFrames - 1}`, onValueChange: onFrameSetDirectly, name: "frame", step: 1, min: 0, max: currentComposition.durationInFrames - 1 }) }) })] })) : null, renderMode === 'video' && codec === 'prores' ? ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "ProRes profile" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(SegmentedControl_1.SegmentedControl, { items: proResProfileOptions, needsWrapping: true }) })] })) : null, renderMode === 'still' ? null : ((0, jsx_runtime_1.jsx)(FrameRangeSetting_1.FrameRangeSetting, { durationInFrames: currentComposition.durationInFrames, endFrame: endFrame, setEndFrame: setEndFrame, setStartFrame: setStartFrame, startFrame: startFrame })), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Output name" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(RemInput_1.RemotionInput
65
+ // TODO: Validate and reject folders or weird file names
66
+ , {
67
+ // TODO: Validate and reject folders or weird file names
68
+ warning: existence, style: layout_1.input, type: "text", value: outName, onChange: onValueChange }), existence ? ((0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-end", message: "Will be overwritten" })) : null] }) })] })] }));
69
+ };
70
+ exports.RenderModalBasic = RenderModalBasic;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export declare const RenderModalGif: React.FC<{
3
+ limitNumberOfGifLoops: boolean;
4
+ setLimitNumberOfGifLoops: (value: React.SetStateAction<boolean>) => void;
5
+ numberOfGifLoopsSetting: number;
6
+ setNumberOfGifLoopsSetting: React.Dispatch<React.SetStateAction<number>>;
7
+ everyNthFrame: number;
8
+ setEveryNthFrameSetting: React.Dispatch<React.SetStateAction<number>>;
9
+ }>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderModalGif = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const Checkbox_1 = require("../Checkbox");
7
+ const layout_1 = require("./layout");
8
+ const NumberOfLoopsSetting_1 = require("./NumberOfLoopsSetting");
9
+ const NumberSetting_1 = require("./NumberSetting");
10
+ const RenderModalGif = ({ everyNthFrame, limitNumberOfGifLoops, numberOfGifLoopsSetting, setEveryNthFrameSetting, setLimitNumberOfGifLoops, setNumberOfGifLoopsSetting, }) => {
11
+ const onShouldLimitNumberOfGifLoops = (0, react_1.useCallback)((e) => {
12
+ setLimitNumberOfGifLoops(e.target.checked);
13
+ }, [setLimitNumberOfGifLoops]);
14
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { name: "Every nth frame", min: 1, onValueChanged: setEveryNthFrameSetting, value: everyNthFrame, step: 1 }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Limit GIF loops" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: limitNumberOfGifLoops, onChange: onShouldLimitNumberOfGifLoops }) })] }), limitNumberOfGifLoops ? ((0, jsx_runtime_1.jsx)(NumberOfLoopsSetting_1.NumberOfLoopsSetting, { numberOfGifLoops: numberOfGifLoopsSetting, setNumberOfGifLoops: setNumberOfGifLoopsSetting })) : null] }));
15
+ };
16
+ exports.RenderModalGif = RenderModalGif;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const RenderModalHr: React.FC;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderModalHr = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const hrStyle = {
6
+ margin: '0 0 0 0',
7
+ padding: '0 0 0 0',
8
+ border: 'none',
9
+ borderTop: '1px solid #000',
10
+ marginRight: 16,
11
+ marginLeft: 16,
12
+ marginTop: 8,
13
+ marginBottom: 8,
14
+ };
15
+ const RenderModalHr = () => {
16
+ return (0, jsx_runtime_1.jsx)("div", { style: hrStyle });
17
+ };
18
+ exports.RenderModalHr = RenderModalHr;
@@ -0,0 +1,28 @@
1
+ /// <reference types="react" />
2
+ import type { PixelFormat, StillImageFormat } from '@remotion/renderer';
3
+ import type { SegmentedControlItem } from '../SegmentedControl';
4
+ import type { RenderType } from './RenderModalAdvanced';
5
+ declare const qualityControlModes: readonly ["crf", "bitrate"];
6
+ export declare type QualityControl = typeof qualityControlModes[number];
7
+ export declare const RenderModalPicture: React.FC<{
8
+ renderMode: RenderType;
9
+ scale: number;
10
+ setScale: React.Dispatch<React.SetStateAction<number>>;
11
+ pixelFormat: PixelFormat;
12
+ setPixelFormat: React.Dispatch<React.SetStateAction<PixelFormat>>;
13
+ imageFormatOptions: SegmentedControlItem[];
14
+ setQualityControl: React.Dispatch<React.SetStateAction<QualityControl>>;
15
+ qualityControlType: QualityControl;
16
+ videoImageFormat: StillImageFormat;
17
+ stillImageFormat: StillImageFormat;
18
+ setQuality: React.Dispatch<React.SetStateAction<number>>;
19
+ quality: number;
20
+ maxCrf: number;
21
+ minCrf: number;
22
+ setCrf: React.Dispatch<React.SetStateAction<number>>;
23
+ shouldDisplayCrfOption: boolean;
24
+ setCustomTargetVideoBitrateValue: React.Dispatch<React.SetStateAction<string>>;
25
+ crf: number;
26
+ customTargetVideoBitrate: string;
27
+ }>;
28
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderModalPicture = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const client_1 = require("@remotion/renderer/client");
6
+ const react_1 = require("react");
7
+ const Checkmark_1 = require("../../icons/Checkmark");
8
+ const ComboBox_1 = require("../NewComposition/ComboBox");
9
+ const RemInput_1 = require("../NewComposition/RemInput");
10
+ const SegmentedControl_1 = require("../SegmentedControl");
11
+ const layout_1 = require("./layout");
12
+ const NumberSetting_1 = require("./NumberSetting");
13
+ const QualitySetting_1 = require("./QualitySetting");
14
+ const RenderModalHr_1 = require("./RenderModalHr");
15
+ const ScaleSetting_1 = require("./ScaleSetting");
16
+ const qualityControlModes = ['crf', 'bitrate'];
17
+ const RenderModalPicture = ({ renderMode, scale, setScale, pixelFormat, setPixelFormat, imageFormatOptions, setQualityControl, qualityControlType, videoImageFormat, setQuality, quality, maxCrf, minCrf, setCrf, shouldDisplayCrfOption, setCustomTargetVideoBitrateValue, crf, customTargetVideoBitrate, stillImageFormat, }) => {
18
+ const pixelFormatOptions = (0, react_1.useMemo)(() => {
19
+ return client_1.BrowserSafeApis.validPixelFormats.map((option) => {
20
+ return {
21
+ label: option,
22
+ onClick: () => setPixelFormat(option),
23
+ key: option,
24
+ id: option,
25
+ keyHint: null,
26
+ leftItem: pixelFormat === option ? (0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {}) : null,
27
+ quickSwitcherLabel: null,
28
+ subMenu: null,
29
+ type: 'item',
30
+ value: option,
31
+ };
32
+ });
33
+ }, [pixelFormat, setPixelFormat]);
34
+ const qualityControlOptions = (0, react_1.useMemo)(() => {
35
+ return qualityControlModes.map((option) => {
36
+ return {
37
+ label: option === 'crf' ? 'CRF' : 'Bitrate',
38
+ onClick: () => setQualityControl(option),
39
+ key: option,
40
+ selected: qualityControlType === option,
41
+ };
42
+ });
43
+ }, [qualityControlType, setQualityControl]);
44
+ const onTargetVideoBitrateChanged = (0, react_1.useCallback)((e) => {
45
+ setCustomTargetVideoBitrateValue(e.target.value);
46
+ }, [setCustomTargetVideoBitrateValue]);
47
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [renderMode === 'video' ? ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Image Format" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(SegmentedControl_1.SegmentedControl, { items: imageFormatOptions, needsWrapping: false }) })] })) : null, renderMode === 'video' && videoImageFormat === 'jpeg' && ((0, jsx_runtime_1.jsx)(QualitySetting_1.QualitySetting, { setQuality: setQuality, quality: quality })), renderMode === 'still' && stillImageFormat === 'jpeg' && ((0, jsx_runtime_1.jsx)(QualitySetting_1.QualitySetting, { setQuality: setQuality, quality: quality })), (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}), renderMode === 'video' ? ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Quality control" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(SegmentedControl_1.SegmentedControl, { items: qualityControlOptions, needsWrapping: true }) })] })) : null, shouldDisplayCrfOption &&
48
+ qualityControlType === 'crf' &&
49
+ renderMode !== 'still' ? ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: minCrf, max: maxCrf, name: "CRF", onValueChanged: setCrf, value: crf, step: 1 })) : null, qualityControlType === 'bitrate' && renderMode !== 'still' ? ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Target video bitrate" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(RemInput_1.RemotionInput, { style: layout_1.input, value: customTargetVideoBitrate, onChange: onTargetVideoBitrateChanged }) }) })] })) : null, (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}), renderMode === 'video' ? ((0, jsx_runtime_1.jsx)(ScaleSetting_1.ScaleSetting, { scale: scale, setScale: setScale })) : null, (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}), renderMode === 'video' ? ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Pixel format" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(ComboBox_1.Combobox, { values: pixelFormatOptions, selectedId: pixelFormat, title: "Pixel Format" }) })] })) : null] }));
50
+ };
51
+ exports.RenderModalPicture = RenderModalPicture;
@@ -2,26 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ScaleSetting = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const InputDragger_1 = require("../NewComposition/InputDragger");
7
- const RemInput_1 = require("../NewComposition/RemInput");
8
- const layout_1 = require("./layout");
5
+ const NumberSetting_1 = require("./NumberSetting");
9
6
  const MIN_SCALE = 0.1;
10
7
  const MAX_SCALE = 10;
11
8
  const ScaleSetting = ({ scale, setScale }) => {
12
- const onScaleSetDirectly = (0, react_1.useCallback)((newScale) => {
13
- setScale(newScale);
14
- }, [setScale]);
15
- const onScaleChanged = (0, react_1.useCallback)((e) => {
16
- setScale((q) => {
17
- const newScale = parseFloat(e);
18
- if (Number.isNaN(newScale)) {
19
- return q;
20
- }
21
- const newScaleClamped = Math.min(MAX_SCALE, Math.max(newScale, MIN_SCALE));
22
- return newScaleClamped;
23
- });
24
- }, [setScale]);
25
- return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Scale" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(RemInput_1.RightAlignInput, { children: (0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { value: scale, onTextChange: onScaleChanged, placeholder: `${MIN_SCALE}-${MAX_SCALE}`, onValueChange: onScaleSetDirectly, name: "scale", step: 0.1, min: MIN_SCALE, max: MAX_SCALE }) }) })] }));
9
+ return ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: MIN_SCALE, max: MAX_SCALE, step: 0.1, name: "Scale", onValueChanged: setScale, value: scale }));
26
10
  };
27
11
  exports.ScaleSetting = ScaleSetting;
@@ -0,0 +1,2 @@
1
+ import type { Codec } from '@remotion/renderer';
2
+ export declare const humanReadableCodec: (codec: Codec) => "GIF" | "AAC" | "MP3" | "H.264" | "H.264 MKV" | "H.265" | "ProRes" | "WebM VP8" | "WebM VP9" | "Waveform" | undefined;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.humanReadableCodec = void 0;
4
+ const humanReadableCodec = (codec) => {
5
+ if (codec === 'aac') {
6
+ return 'AAC';
7
+ }
8
+ if (codec === 'mp3') {
9
+ return 'MP3';
10
+ }
11
+ if (codec === 'gif') {
12
+ return 'GIF';
13
+ }
14
+ if (codec === 'h264') {
15
+ return 'H.264';
16
+ }
17
+ if (codec === 'h264-mkv') {
18
+ return 'H.264 MKV';
19
+ }
20
+ if (codec === 'h265') {
21
+ return 'H.265';
22
+ }
23
+ if (codec === 'prores') {
24
+ return 'ProRes';
25
+ }
26
+ if (codec === 'vp8') {
27
+ return 'WebM VP8';
28
+ }
29
+ if (codec === 'vp9') {
30
+ return 'WebM VP9';
31
+ }
32
+ if (codec === 'wav') {
33
+ return 'Waveform';
34
+ }
35
+ };
36
+ exports.humanReadableCodec = humanReadableCodec;
@@ -2,3 +2,4 @@
2
2
  export declare const optionRow: React.CSSProperties;
3
3
  export declare const label: React.CSSProperties;
4
4
  export declare const rightRow: React.CSSProperties;
5
+ export declare const input: React.CSSProperties;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rightRow = exports.label = exports.optionRow = void 0;
3
+ exports.input = exports.rightRow = exports.label = exports.optionRow = void 0;
4
4
  const colors_1 = require("../../helpers/colors");
5
5
  exports.optionRow = {
6
6
  display: 'flex',
@@ -9,10 +9,12 @@ exports.optionRow = {
9
9
  minHeight: 40,
10
10
  paddingLeft: 16,
11
11
  paddingRight: 16,
12
+ paddingTop: 8,
13
+ paddingBottom: 8,
12
14
  };
13
15
  exports.label = {
14
16
  width: 150,
15
- fontSize: 14,
17
+ fontSize: 15,
16
18
  lineHeight: '40px',
17
19
  color: colors_1.LIGHT_TEXT,
18
20
  };
@@ -23,3 +25,7 @@ exports.rightRow = {
23
25
  alignSelf: 'center',
24
26
  flex: 1,
25
27
  };
28
+ exports.input = {
29
+ minWidth: 250,
30
+ textAlign: 'right',
31
+ };
@@ -4,11 +4,12 @@ exports.RenderQueueRemoveItem = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const InlineAction_1 = require("../InlineAction");
7
+ const NotificationCenter_1 = require("../Notifications/NotificationCenter");
7
8
  const actions_1 = require("./actions");
8
9
  const RenderQueueRemoveItem = ({ job }) => {
9
10
  const onClick = (0, react_1.useCallback)(() => {
10
11
  (0, actions_1.removeRenderJob)(job).catch((err) => {
11
- // TODO: Handle error
12
+ (0, NotificationCenter_1.sendErrorNotification)(`Could not remove item: ${err.message}`);
12
13
  console.log(err);
13
14
  });
14
15
  }, [job]);
@@ -1,4 +1,4 @@
1
- import type { Codec, StillImageFormat } from '@remotion/renderer';
1
+ import type { Codec, PixelFormat, ProResProfile, StillImageFormat } from '@remotion/renderer';
2
2
  import type { ApiRoutes } from '../../../preview-server/api-types';
3
3
  import type { RenderJob } from '../../../preview-server/render-queue/job';
4
4
  export declare const callApi: <Endpoint extends keyof ApiRoutes>(endpoint: Endpoint, body: ApiRoutes[Endpoint]["Request"]) => Promise<ApiRoutes[Endpoint]["Response"]>;
@@ -11,7 +11,7 @@ export declare const addStillRenderJob: ({ compositionId, outName, imageFormat,
11
11
  scale: number;
12
12
  verbose: boolean;
13
13
  }) => Promise<undefined>;
14
- export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat, quality, scale, verbose, codec, }: {
14
+ export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat, quality, scale, verbose, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, }: {
15
15
  compositionId: string;
16
16
  outName: string;
17
17
  imageFormat: StillImageFormat;
@@ -19,6 +19,19 @@ export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat,
19
19
  scale: number;
20
20
  verbose: boolean;
21
21
  codec: Codec;
22
+ concurrency: number;
23
+ crf: number | null;
24
+ startFrame: number;
25
+ endFrame: number;
26
+ muted: boolean;
27
+ enforceAudioTrack: boolean;
28
+ proResProfile: ProResProfile | null;
29
+ pixelFormat: PixelFormat;
30
+ audioBitrate: string | null;
31
+ videoBitrate: string | null;
32
+ everyNthFrame: number;
33
+ numberOfGifLoops: number | null;
34
+ delayRenderTimeout: number;
22
35
  }) => Promise<undefined>;
23
36
  export declare const unsubscribeFromFileExistenceWatcher: ({ file, clientId, }: {
24
37
  file: string;
@@ -38,7 +38,7 @@ const addStillRenderJob = ({ compositionId, outName, imageFormat, quality, frame
38
38
  });
39
39
  };
40
40
  exports.addStillRenderJob = addStillRenderJob;
41
- const addVideoRenderJob = ({ compositionId, outName, imageFormat, quality, scale, verbose, codec, }) => {
41
+ const addVideoRenderJob = ({ compositionId, outName, imageFormat, quality, scale, verbose, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, }) => {
42
42
  return (0, exports.callApi)('/api/render', {
43
43
  compositionId,
44
44
  type: 'video',
@@ -48,6 +48,19 @@ const addVideoRenderJob = ({ compositionId, outName, imageFormat, quality, scale
48
48
  scale,
49
49
  verbose,
50
50
  codec,
51
+ concurrency,
52
+ crf,
53
+ endFrame,
54
+ startFrame,
55
+ muted,
56
+ enforceAudioTrack,
57
+ proResProfile,
58
+ pixelFormat,
59
+ audioBitrate,
60
+ videoBitrate,
61
+ everyNthFrame,
62
+ numberOfGifLoops,
63
+ delayRenderTimeout,
51
64
  });
52
65
  };
53
66
  exports.addVideoRenderJob = addVideoRenderJob;
@@ -5,6 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const remotion_1 = require("remotion");
7
7
  const get_default_out_name_1 = require("../../get-default-out-name");
8
+ const get_default_video_contexts_1 = require("../../preview-server/render-queue/get-default-video-contexts");
8
9
  const client_id_1 = require("../helpers/client-id");
9
10
  const render_1 = require("../icons/render");
10
11
  const modals_1 = require("../state/modals");
@@ -25,27 +26,48 @@ const RenderStillButton = () => {
25
26
  const video = remotion_1.Internals.useVideo();
26
27
  const frame = (0, remotion_1.useCurrentFrame)();
27
28
  const onClick = (0, react_1.useCallback)(() => {
28
- var _a, _b, _c, _d, _e;
29
+ var _a, _b;
29
30
  if (!video) {
30
31
  return null;
31
32
  }
32
33
  const isVideo = video.durationInFrames > 1;
34
+ const defaults = window.remotion_renderDefaults;
35
+ if (!defaults) {
36
+ throw new TypeError('Expected defaults');
37
+ }
38
+ const { initialAudioCodec, initialRenderType, initialVideoCodec } = (0, get_default_video_contexts_1.getDefaultCodecs)({
39
+ defaultCodec: defaults.codec,
40
+ isStill: !isVideo,
41
+ });
33
42
  setSelectedModal({
34
43
  type: 'render',
35
44
  compositionId: video.id,
36
45
  initialFrame: frame,
37
- initialImageFormat: isVideo ? 'jpeg' : 'png',
46
+ initialStillImageFormat: defaults.stillImageFormat,
47
+ initialVideoImageFormat: defaults.videoImageFormat,
38
48
  initialOutName: (0, get_default_out_name_1.getDefaultOutLocation)({
39
49
  compositionName: video.id,
40
50
  defaultExtension: isVideo ? 'mp4' : 'png',
41
51
  type: 'asset',
42
52
  }),
43
- // TODO: Determine defaults from config file
44
- initialQuality: (_b = (_a = window.remotion_renderDefaults) === null || _a === void 0 ? void 0 : _a.quality) !== null && _b !== void 0 ? _b : 80,
45
- initialScale: (_d = (_c = window.remotion_renderDefaults) === null || _c === void 0 ? void 0 : _c.scale) !== null && _d !== void 0 ? _d : 1,
46
- initialVerbose: ((_e = window.remotion_renderDefaults) === null || _e === void 0 ? void 0 : _e.logLevel) === 'verbose',
47
- initialRenderType: isVideo ? 'video' : 'still',
48
- initialCodec: 'h264',
53
+ initialQuality: defaults.quality,
54
+ initialScale: (_b = (_a = window.remotion_renderDefaults) === null || _a === void 0 ? void 0 : _a.scale) !== null && _b !== void 0 ? _b : 1,
55
+ initialVerbose: defaults.logLevel === 'verbose',
56
+ initialAudioCodec,
57
+ initialRenderType,
58
+ initialVideoCodec,
59
+ initialConcurrency: defaults.concurrency,
60
+ maxConcurrency: defaults.maxConcurrency,
61
+ minConcurrency: defaults.minConcurrency,
62
+ initialMuted: defaults.muted,
63
+ initialEnforceAudioTrack: defaults.enforceAudioTrack,
64
+ initialProResProfile: defaults.proResProfile,
65
+ initialPixelFormat: defaults.pixelFormat,
66
+ initialAudioBitrate: defaults.audioBitrate,
67
+ initialVideoBitrate: defaults.videoBitrate,
68
+ initialEveryNthFrame: defaults.everyNthFrame,
69
+ initialNumberOfGifLoops: defaults.numberOfGifLoops,
70
+ initialDelayRenderTimeout: defaults.delayRenderTimeout,
49
71
  });
50
72
  }, [video, frame, setSelectedModal]);
51
73
  if (!video) {
@@ -16,7 +16,7 @@ const container = {
16
16
  };
17
17
  const item = {
18
18
  display: 'flex',
19
- fontSize: 13,
19
+ fontSize: 15,
20
20
  padding: '4px 12px',
21
21
  cursor: 'pointer',
22
22
  appearance: 'none',
@@ -5,6 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const colors_1 = require("../helpers/colors");
7
7
  const CompositionSelector_1 = require("./CompositionSelector");
8
+ const CurrentCompositionSideEffects_1 = require("./CurrentCompositionSideEffects");
8
9
  const RenderQueue_1 = require("./RenderQueue");
9
10
  const context_1 = require("./RenderQueue/context");
10
11
  const RendersTab_1 = require("./RendersTab");
@@ -46,6 +47,6 @@ const SidebarContent = () => {
46
47
  },
47
48
  };
48
49
  }, []);
49
- return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [shouldRender ? ((0, jsx_runtime_1.jsx)("div", { style: tabsContainer, children: (0, jsx_runtime_1.jsxs)(Tabs_1.Tabs, { children: [(0, jsx_runtime_1.jsx)(Tabs_1.Tab, { selected: panel === 'compositions', onClick: onCompositionsSelected, children: "Compositions" }), (0, jsx_runtime_1.jsx)(RendersTab_1.RendersTab, { onClick: onRendersSelected, selected: panel === 'renders' })] }) })) : null, panel === 'renders' && shouldRender ? ((0, jsx_runtime_1.jsx)(RenderQueue_1.RenderQueue, {})) : ((0, jsx_runtime_1.jsx)(CompositionSelector_1.CompositionSelector, {}))] }));
50
+ return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [shouldRender ? ((0, jsx_runtime_1.jsx)("div", { style: tabsContainer, children: (0, jsx_runtime_1.jsxs)(Tabs_1.Tabs, { children: [(0, jsx_runtime_1.jsx)(Tabs_1.Tab, { selected: panel === 'compositions', onClick: onCompositionsSelected, children: "Compositions" }), (0, jsx_runtime_1.jsx)(RendersTab_1.RendersTab, { onClick: onRendersSelected, selected: panel === 'renders' })] }) })) : null, panel === 'renders' && shouldRender ? ((0, jsx_runtime_1.jsx)(RenderQueue_1.RenderQueue, {})) : ((0, jsx_runtime_1.jsx)(CompositionSelector_1.CompositionSelector, {})), (0, jsx_runtime_1.jsx)(CurrentCompositionSideEffects_1.CurrentCompositionKeybindings, {}), (0, jsx_runtime_1.jsx)(CurrentCompositionSideEffects_1.TitleUpdater, {})] }));
50
51
  };
51
52
  exports.SidebarContent = SidebarContent;
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare const AudioIcon: (props: SVGProps<SVGSVGElement>) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AudioIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const AudioIcon = (props) => ((0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", ...props, children: (0, jsx_runtime_1.jsx)("path", { fill: "currentcolor", d: "M243 32.32C105.5 39.15 0 157.8 0 295.5v120.4C0 451.3 28.63 480 64 480h32c17.62 0 32-14.38 32-32V288c0-17.62-14.38-32-32-32H64c-10.79 0-20.8 2.9-29.72 7.7 14.2-106.8 100.5-193.9 210.4-199.4 120.5-5.965 221.7 83.92 234 199.9-9.08-5.1-19.48-8.2-30.68-8.2h-32c-17.62 0-32 14.38-32 32v160c0 17.62 14.38 32 32 32h32c35.38 0 64-28.75 64-64.13V287.9c0-145.4-122-262.88-269-255.58zM64 288h32v160H64c-17.62 0-32-14.5-32-32.13v-95.75C32 302.5 46.38 288 64 288zm416 127.9c0 17.6-14.4 32.1-32 32.1h-32V288h32c17.62 0 32 14.5 32 32.13v95.77z" }) }));
6
+ exports.AudioIcon = AudioIcon;
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare const FileIcon: (props: SVGProps<SVGSVGElement>) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const FileIcon = (props) => ((0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 384 512", ...props, children: (0, jsx_runtime_1.jsx)("path", { fill: "currentcolor", d: "M0 64C0 28.65 28.65 0 64 0h156.1c12.7 0 25 5.057 34 14.06L369.9 129.9c9 9 14.1 21.3 14.1 34V448c0 35.3-28.7 64-64 64H64c-35.35 0-64-28.7-64-64V64zm352 128H240c-26.5 0-48-21.5-48-48V32H64c-17.67 0-32 14.33-32 32v384c0 17.7 14.33 32 32 32h256c17.7 0 32-14.3 32-32V192zm-4.7-39.4L231.4 36.69c-2-2.07-4.6-3.51-7.4-4.21V144c0 8.8 7.2 16 16 16h111.5c-.7-2.8-2.1-5.4-4.2-7.4z" }) }));
6
+ exports.FileIcon = FileIcon;
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare const PicIcon: (props: SVGProps<SVGSVGElement>) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PicIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const PicIcon = (props) => ((0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", ...props, children: (0, jsx_runtime_1.jsx)("path", { fill: "currentcolor", d: "M324.9 157.8c-11.38-17.38-39.89-17.31-51.23-.063L200.5 268.5l-16.4-22.6c-11.4-16.8-38.2-16-49.7 0l-64.52 89.16c-6.797 9.406-7.75 21.72-2.547 32C72.53 377.5 83.05 384 94.75 384h322.5c11.41 0 21.8-6.281 27.14-16.38a30.922 30.922 0 0 0-1.516-31.56L324.9 157.8zM95.8 352l62.39-87.38 29.91 41.34c3.1 4.24 8.3 7.24 13.3 6.64 5.25-.125 10.12-2.781 13.02-7.188l83.83-129.9L415 352H95.8zM447.1 32h-384C28.65 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zM480 416c0 17.64-14.36 32-32 32H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h384c17.64 0 32 14.36 32 32v320zM144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm0-64c8.822 0 15.1 7.178 15.1 16s-6.3 16-15.1 16-16-7.2-16-16 7.2-16 16-16z" }) }));
6
+ exports.PicIcon = PicIcon;
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare const GearIcon: (props: SVGProps<SVGSVGElement>) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GearIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const GearIcon = (props) => ((0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", ...props, children: (0, jsx_runtime_1.jsx)("path", { fill: "currentcolor", d: "M168 255.1c0-47.7 39.4-88 88-88s88 40.3 88 88c0 49.5-39.4 88.9-88 88.9s-88-39.4-88-88.9zm88-56c-30.9 0-56 26-56 56 0 31.8 25.1 56 56 56s56-24.2 56-56c0-30-25.1-56-56-56zM65.67 230.6l-40.33-36.8c-11.12-10.1-13.68-26.6-6.16-39.6l30.24-52.4c7.52-13.02 23.09-19.05 37.42-14.48l51.96 16.58c13.4-10.34 28.2-18.94 44-25.47l11.7-53.27C197.7 10.47 210.7 0 225.8 0h60.4c15.1 0 28.1 10.47 31.3 25.16l11.7 53.27c14.9 6.53 30.6 15.13 44 25.47l52-16.58c14.3-4.57 29.9 1.46 37.4 14.48l30.2 52.4c7.5 13 5 29.5-6.1 39.6l-40.4 36.8c1.1 8.3 1.7 16.8 1.7 24.5 0 9.5-.6 18-1.7 26.3l40.4 36.8c11.1 10.1 13.6 26.6 6.1 39.6l-30.2 52.4c-7.5 13-23.1 19-37.4 14.5l-52-16.6c-13.4 10.3-29.1 18.9-44 25.5l-11.7 53.2c-3.2 14.7-16.2 25.2-31.3 25.2h-60.4c-15.1 0-28.1-10.5-31.3-25.2l-11.7-53.2c-15.8-6.6-30.6-15.2-44-25.5l-51.96 16.6c-14.33 4.5-29.9-1.5-37.42-14.5l-30.24-52.4c-7.52-13-4.96-29.5 6.16-39.6l40.33-36.8c-1.1-8.3-1.67-16.8-1.67-26.3 0-7.7.57-16.2 1.67-24.5zm92.73-101.4-13.3 10.3-67.97-21.7-30.24 52.4 52.69 48-2.19 16.6c-.92 6.9-1.39 14-1.39 20.3 0 8.1.47 15.2 1.39 22.1l2.19 16.6-52.69 48 30.24 52.4 67.97-21.7 13.3 10.3c11.1 8.6 23.5 15.8 36.6 20.3l15.5 7.3 15.3 69.6h60.4l15.3-69.6 14.6-7.3c14-4.5 26.4-11.7 37.5-20.3l13.3-10.3 68 21.7 30.2-52.4-52.7-48 2.2-16.6c.9-6.9 1.4-14 1.4-21.2 0-7.2-.5-14.3-1.4-21.2l-2.2-16.6 52.7-48-30.2-52.4-68 21.7-13.3-10.3c-11.1-8.6-23.5-15.8-37.5-21.2l-14.6-6.4L286.2 32h-60.4l-15.3 69.6L195 108c-13.1 5.4-25.5 12.6-36.6 21.2z" }) }));
6
+ exports.GearIcon = GearIcon;
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare const GifIcon: (props: SVGProps<SVGSVGElement>) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GifIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const GifIcon = (props) => ((0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 576 512", ...props, children: (0, jsx_runtime_1.jsx)("path", { fill: "currentcolor", d: "M512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96c0-35.35-28.7-64-64-64zm32 384c0 17.64-14.36 32-32 32H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h448c17.64 0 32 14.36 32 32v320zm-80-256h-96c-8.8 0-16 7.2-16 16v160c0 8.844 7.156 16 16 16s16-7.156 16-16v-64h56c8.844 0 16-7.156 16-16s-7.156-16-16-16h-56v-48h80c8.8 0 16-7.2 16-16s-7.2-16-16-16zm-160 0c-8.8 0-16 7.2-16 16v160c0 8.844 7.156 16 16 16s16-7.156 16-16V176c0-8.8-7.2-16-16-16zm-64 80h-64c-8.8 0-16 7.2-16 16s7.156 16 16 16h48v33.45c-24.83 19.91-69.13 18.16-91.48-4.203-24.95-24.95-24.95-65.55 0-90.5 25.03-25 64.19-25 89.22 0 6.25 6.25 16.38 6.25 22.62 0s6.25-16.38 0-22.62c-37.69-37.72-96.78-37.72-134.5 0-37.42 37.42-37.42 98.33 0 135.8C127.8 341.8 153.5 352 180.6 352c27.06 0 52.84-10.25 70.7-28.12 3-2.98 4.7-7.08 4.7-11.28V256c0-8.8-7.2-16-16-16z" }) }));
6
+ exports.GifIcon = GifIcon;
@@ -30,7 +30,7 @@ export declare const getCliOptions: (options: {
30
30
  browserExecutable: BrowserExecutable;
31
31
  ffmpegExecutable: import("@remotion/renderer").FfmpegExecutable;
32
32
  ffprobeExecutable: import("@remotion/renderer").FfmpegExecutable;
33
- logLevel: "error" | "verbose" | "info" | "warn";
33
+ logLevel: "verbose" | "error" | "info" | "warn";
34
34
  scale: number;
35
35
  chromiumOptions: ChromiumOptions;
36
36
  overwrite: boolean;
package/dist/index.d.ts CHANGED
@@ -88,7 +88,7 @@ export declare const CliInternals: {
88
88
  browserExecutable: import("@remotion/renderer").BrowserExecutable;
89
89
  ffmpegExecutable: import("@remotion/renderer").FfmpegExecutable;
90
90
  ffprobeExecutable: import("@remotion/renderer").FfmpegExecutable;
91
- logLevel: "error" | "verbose" | "info" | "warn";
91
+ logLevel: "verbose" | "error" | "info" | "warn";
92
92
  scale: number;
93
93
  chromiumOptions: import("@remotion/renderer").ChromiumOptions;
94
94
  overwrite: boolean;
@@ -1,5 +1,5 @@
1
1
  import type { Codec } from '@remotion/renderer';
2
- import type { RenderType } from '../../editor/components/RenderModal/RenderModal';
2
+ import type { RenderType } from '../../editor/components/RenderModal/RenderModalAdvanced';
3
3
  export declare const getDefaultCodecs: ({ defaultCodec, isStill, }: {
4
4
  defaultCodec: Codec;
5
5
  isStill: boolean;