@remotion/cli 3.3.38 → 3.3.39

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 (61) hide show
  1. package/dist/config/index.js +69 -55
  2. package/dist/config/timeout.js +1 -1
  3. package/dist/editor/components/Modals.js +1 -1
  4. package/dist/editor/components/RenderButton.js +29 -8
  5. package/dist/editor/components/RenderModal/CrfSetting.d.ts +2 -2
  6. package/dist/editor/components/RenderModal/CrfSetting.js +11 -24
  7. package/dist/editor/components/RenderModal/EveryNthFrameSetting.d.ts +5 -0
  8. package/dist/editor/components/RenderModal/EveryNthFrameSetting.js +9 -0
  9. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.d.ts +5 -0
  10. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.js +26 -0
  11. package/dist/editor/components/RenderModal/NumberSetting.d.ts +9 -0
  12. package/dist/editor/components/RenderModal/NumberSetting.js +26 -0
  13. package/dist/editor/components/RenderModal/RenderModal.d.ts +19 -5
  14. package/dist/editor/components/RenderModal/RenderModal.js +225 -181
  15. package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +11 -0
  16. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +15 -0
  17. package/dist/editor/components/RenderModal/RenderModalAudio.d.ts +13 -0
  18. package/dist/editor/components/RenderModal/RenderModalAudio.js +22 -0
  19. package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +22 -0
  20. package/dist/editor/components/RenderModal/RenderModalBasic.js +70 -0
  21. package/dist/editor/components/RenderModal/RenderModalGeneral.d.ts +0 -0
  22. package/dist/editor/components/RenderModal/RenderModalGeneral.js +1 -0
  23. package/dist/editor/components/RenderModal/RenderModalGif.d.ts +9 -0
  24. package/dist/editor/components/RenderModal/RenderModalGif.js +16 -0
  25. package/dist/editor/components/RenderModal/RenderModalHr.d.ts +2 -0
  26. package/dist/editor/components/RenderModal/RenderModalHr.js +18 -0
  27. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +28 -0
  28. package/dist/editor/components/RenderModal/RenderModalPicture.js +51 -0
  29. package/dist/editor/components/RenderModal/ScaleSetting.js +2 -18
  30. package/dist/editor/components/RenderModal/human-readable-codec.d.ts +2 -0
  31. package/dist/editor/components/RenderModal/human-readable-codec.js +36 -0
  32. package/dist/editor/components/RenderModal/layout.d.ts +1 -0
  33. package/dist/editor/components/RenderModal/layout.js +8 -2
  34. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +2 -1
  35. package/dist/editor/components/RenderQueue/actions.d.ts +15 -2
  36. package/dist/editor/components/RenderQueue/actions.js +14 -1
  37. package/dist/editor/components/RenderToolbarIcon.js +30 -8
  38. package/dist/editor/components/SegmentedControl.js +1 -1
  39. package/dist/editor/components/SidebarContent.js +2 -1
  40. package/dist/editor/icons/audio.d.ts +2 -0
  41. package/dist/editor/icons/audio.js +6 -0
  42. package/dist/editor/icons/file.d.ts +2 -0
  43. package/dist/editor/icons/file.js +6 -0
  44. package/dist/editor/icons/frame.d.ts +2 -0
  45. package/dist/editor/icons/frame.js +6 -0
  46. package/dist/editor/icons/gear.d.ts +2 -0
  47. package/dist/editor/icons/gear.js +6 -0
  48. package/dist/editor/icons/gif.d.ts +2 -0
  49. package/dist/editor/icons/gif.js +6 -0
  50. package/dist/get-env.js +1 -1
  51. package/dist/handle-common-errors.js +5 -0
  52. package/dist/parse-command-line.js +32 -32
  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/dist/upgrade.js +9 -3
  61. package/package.json +7 -7
@@ -85,63 +85,77 @@ const timeout_2 = require("./timeout");
85
85
  const webpack_caching_2 = require("./webpack-caching");
86
86
  const webpack_poll_1 = require("./webpack-poll");
87
87
  const width_1 = require("./width");
88
+ const Preview = {
89
+ setMaxTimelineTracks: max_timeline_tracks_2.setMaxTimelineTracks,
90
+ setKeyboardShortcutsEnabled: keyboard_shortcuts_1.setKeyboardShortcutsEnabled,
91
+ setNumberOfSharedAudioTags: number_of_shared_audio_tags_1.setNumberOfSharedAudioTags,
92
+ setWebpackPollingInMilliseconds: webpack_poll_1.setWebpackPollingInMilliseconds,
93
+ setShouldOpenBrowser: open_browser_1.setShouldOpenBrowser,
94
+ };
95
+ const Bundling = {
96
+ overrideWebpackConfig: override_webpack_2.overrideWebpackConfig,
97
+ setCachingEnabled: webpack_caching_2.setWebpackCaching,
98
+ setPort: preview_server_2.setPort,
99
+ setPublicDir: public_dir_1.setPublicDir,
100
+ setEntryPoint: entry_point_1.setEntryPoint,
101
+ };
102
+ const Log = {
103
+ setLevel: log_1.setLogLevel,
104
+ };
105
+ const Puppeteer = {
106
+ setBrowserExecutable: browser_executable_2.setBrowserExecutable,
107
+ setTimeoutInMilliseconds: timeout_2.setPuppeteerTimeout,
108
+ setDelayRenderTimeoutInMilliseconds: timeout_2.setPuppeteerTimeout,
109
+ setChromiumDisableWebSecurity: chromium_flags_2.setChromiumDisableWebSecurity,
110
+ setChromiumIgnoreCertificateErrors: chromium_flags_2.setChromiumIgnoreCertificateErrors,
111
+ setChromiumHeadlessMode: chromium_flags_2.setChromiumHeadlessMode,
112
+ setChromiumOpenGlRenderer: chromium_flags_2.setChromiumOpenGlRenderer,
113
+ };
114
+ const Rendering = {
115
+ setDotEnvLocation: env_file_2.setDotEnvLocation,
116
+ setConcurrency: concurrency_2.setConcurrency,
117
+ setQuality: quality_2.setQuality,
118
+ setImageFormat: image_format_2.setImageFormat,
119
+ setFrameRange: frame_range_2.setFrameRange,
120
+ setFfmpegExecutable: ffmpeg_executable_2.setFfmpegExecutable,
121
+ setFfprobeExecutable: ffmpeg_executable_2.setFfprobeExecutable,
122
+ setScale: scale_2.setScale,
123
+ setEveryNthFrame: every_nth_frame_1.setEveryNthFrame,
124
+ setNumberOfGifLoops: number_of_gif_loops_1.setNumberOfGifLoops,
125
+ setMuted: muted_1.setMuted,
126
+ setEnforceAudioTrack: enforce_audio_track_1.setEnforceAudioTrack,
127
+ };
128
+ const Output = {
129
+ setOutputLocation: output_location_2.setOutputLocation,
130
+ setOverwriteOutput: overwrite_2.setOverwriteOutput,
131
+ setPixelFormat: pixel_format_2.setPixelFormat,
132
+ setOutputFormat: codec_2.setOutputFormat,
133
+ setCodec: codec_2.setCodec,
134
+ setCrf: crf_1.setCrf,
135
+ setImageSequence: image_sequence_2.setImageSequence,
136
+ setProResProfile: prores_profile_2.setProResProfile,
137
+ setAudioBitrate: bitrate_1.setAudioBitrate,
138
+ setVideoBitrate: bitrate_1.setVideoBitrate,
139
+ overrideHeight: height_1.overrideHeight,
140
+ overrideWidth: width_1.overrideWidth,
141
+ overrideFfmpegCommand: ffmpeg_override_1.setFfmpegOverrideFunction,
142
+ };
88
143
  exports.Config = {
89
- Preview: {
90
- setMaxTimelineTracks: max_timeline_tracks_2.setMaxTimelineTracks,
91
- setKeyboardShortcutsEnabled: keyboard_shortcuts_1.setKeyboardShortcutsEnabled,
92
- setNumberOfSharedAudioTags: number_of_shared_audio_tags_1.setNumberOfSharedAudioTags,
93
- setWebpackPollingInMilliseconds: webpack_poll_1.setWebpackPollingInMilliseconds,
94
- setShouldOpenBrowser: open_browser_1.setShouldOpenBrowser,
95
- },
96
- Bundling: {
97
- overrideWebpackConfig: override_webpack_2.overrideWebpackConfig,
98
- setCachingEnabled: webpack_caching_2.setWebpackCaching,
99
- setPort: preview_server_2.setPort,
100
- setPublicDir: public_dir_1.setPublicDir,
101
- setEntryPoint: entry_point_1.setEntryPoint,
102
- },
103
- Log: {
104
- setLevel: log_1.setLogLevel,
105
- },
106
- Puppeteer: {
107
- setBrowserExecutable: browser_executable_2.setBrowserExecutable,
108
- setTimeoutInMilliseconds: timeout_2.setPuppeteerTimeout,
109
- setChromiumDisableWebSecurity: chromium_flags_2.setChromiumDisableWebSecurity,
110
- setChromiumIgnoreCertificateErrors: chromium_flags_2.setChromiumIgnoreCertificateErrors,
111
- setChromiumHeadlessMode: chromium_flags_2.setChromiumHeadlessMode,
112
- setChromiumOpenGlRenderer: chromium_flags_2.setChromiumOpenGlRenderer,
113
- },
114
- Rendering: {
115
- setDotEnvLocation: env_file_2.setDotEnvLocation,
116
- setConcurrency: concurrency_2.setConcurrency,
117
- setQuality: quality_2.setQuality,
118
- setImageFormat: image_format_2.setImageFormat,
119
- setFrameRange: frame_range_2.setFrameRange,
120
- setFfmpegExecutable: ffmpeg_executable_2.setFfmpegExecutable,
121
- setFfprobeExecutable: ffmpeg_executable_2.setFfprobeExecutable,
122
- setScale: scale_2.setScale,
123
- setEveryNthFrame: every_nth_frame_1.setEveryNthFrame,
124
- setNumberOfGifLoops: number_of_gif_loops_1.setNumberOfGifLoops,
125
- setMuted: muted_1.setMuted,
126
- setEnforceAudioTrack: enforce_audio_track_1.setEnforceAudioTrack,
127
- },
128
- Output: {
129
- setOutputLocation: output_location_2.setOutputLocation,
130
- setOverwriteOutput: overwrite_2.setOverwriteOutput,
131
- setPixelFormat: pixel_format_2.setPixelFormat,
132
- setOutputFormat: codec_2.setOutputFormat,
133
- setCodec: codec_2.setCodec,
134
- setCrf: crf_1.setCrf,
135
- setImageSequence: image_sequence_2.setImageSequence,
136
- setProResProfile: prores_profile_2.setProResProfile,
137
- setAudioBitrate: bitrate_1.setAudioBitrate,
138
- setVideoBitrate: bitrate_1.setVideoBitrate,
139
- overrideHeight: height_1.overrideHeight,
140
- overrideWidth: width_1.overrideWidth,
141
- overrideFfmpegCommand: ffmpeg_override_1.setFfmpegOverrideFunction,
142
- },
144
+ // New flat config format
145
+ ...Preview,
146
+ ...Bundling,
147
+ ...Log,
148
+ ...Puppeteer,
149
+ ...Rendering,
150
+ ...Output,
151
+ // Legacy config format
152
+ Preview,
153
+ Bundling,
154
+ Log,
155
+ Puppeteer,
156
+ Rendering,
157
+ Output,
143
158
  };
144
- // eslint-disable-next-line no-restricted-imports
145
159
  exports.ConfigInternals = {
146
160
  getRange: frame_range_1.getRange,
147
161
  getOutputCodecOrUndefined: codec_1.getOutputCodecOrUndefined,
@@ -5,7 +5,7 @@ const renderer_1 = require("@remotion/renderer");
5
5
  let currentTimeout = renderer_1.RenderInternals.DEFAULT_TIMEOUT;
6
6
  const setPuppeteerTimeout = (newPuppeteerTimeout) => {
7
7
  if (typeof newPuppeteerTimeout !== 'number') {
8
- throw new Error('--timeout flag / setTimeoutInMilliseconds() must be a number, but got ' +
8
+ throw new Error('--timeout flag / setDelayRenderTimeoutInMilliseconds() must be a number, but got ' +
9
9
  JSON.stringify(newPuppeteerTimeout));
10
10
  }
11
11
  currentTimeout = newPuppeteerTimeout;
@@ -16,7 +16,7 @@ const UpdateModal_1 = require("./UpdateModal/UpdateModal");
16
16
  const Modals = () => {
17
17
  const { selectedModal: modalContextType } = (0, react_1.useContext)(modals_1.ModalsContext);
18
18
  const canRender = (0, react_1.useContext)(client_id_1.PreviewServerConnectionCtx).type === 'connected';
19
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [modalContextType && modalContextType.type === 'new-comp' && ((0, jsx_runtime_1.jsx)(NewComposition_1.default, { initialCompType: modalContextType.compType })), modalContextType && canRender && modalContextType.type === 'render' && ((0, jsx_runtime_1.jsx)(RenderModal_1.RenderModal, { initialFrame: modalContextType.initialFrame, compositionId: modalContextType.compositionId, initialImageFormat: modalContextType.initialImageFormat, initialQuality: modalContextType.initialQuality, initialOutName: modalContextType.initialOutName, initialScale: modalContextType.initialScale, initialVerbose: modalContextType.initialVerbose, initialRenderType: modalContextType.initialRenderType, initialCodec: modalContextType.initialCodec })), modalContextType &&
19
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [modalContextType && modalContextType.type === 'new-comp' && ((0, jsx_runtime_1.jsx)(NewComposition_1.default, { initialCompType: modalContextType.compType })), modalContextType && canRender && modalContextType.type === 'render' && ((0, jsx_runtime_1.jsx)(RenderModal_1.RenderModal, { initialFrame: modalContextType.initialFrame, compositionId: modalContextType.compositionId, initialVideoImageFormat: modalContextType.initialVideoImageFormat, initialQuality: modalContextType.initialQuality, initialOutName: modalContextType.initialOutName, initialScale: modalContextType.initialScale, initialVerbose: modalContextType.initialVerbose, initialRenderType: modalContextType.initialRenderType, initialAudioCodec: modalContextType.initialAudioCodec, initialVideoCodec: modalContextType.initialVideoCodec, initialConcurrency: modalContextType.initialConcurrency, maxConcurrency: modalContextType.maxConcurrency, minConcurrency: modalContextType.minConcurrency, initialStillImageFormat: modalContextType.initialStillImageFormat, initialMuted: modalContextType.initialMuted, initialEnforceAudioTrack: modalContextType.initialEnforceAudioTrack, initialProResProfile: modalContextType.initialProResProfile, initialPixelFormat: modalContextType.initialPixelFormat, initialAudioBitrate: modalContextType.initialAudioBitrate, initialVideoBitrate: modalContextType.initialVideoBitrate, initialEveryNthFrame: modalContextType.initialEveryNthFrame, initialNumberOfGifLoops: modalContextType.initialNumberOfGifLoops, initialDelayRenderTimeout: modalContextType.initialDelayRenderTimeout })), modalContextType &&
20
20
  canRender &&
21
21
  modalContextType.type === 'render-error' && ((0, jsx_runtime_1.jsx)(RenderErrorModal_1.RenderErrorModal, { job: modalContextType.job })), modalContextType && modalContextType.type === 'update' && ((0, jsx_runtime_1.jsx)(UpdateModal_1.UpdateModal, { info: modalContextType.info })), modalContextType && modalContextType.type === 'quick-switcher' && ((0, jsx_runtime_1.jsx)(QuickSwitcher_1.default, { invocationTimestamp: modalContextType.invocationTimestamp, initialMode: modalContextType.mode }))] }));
22
22
  };
@@ -4,6 +4,7 @@ exports.RenderButton = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const get_default_out_name_1 = require("../../get-default-out-name");
7
+ const get_default_video_contexts_1 = require("../../preview-server/render-queue/get-default-video-contexts");
7
8
  const render_1 = require("../icons/render");
8
9
  const modals_1 = require("../state/modals");
9
10
  const InlineAction_1 = require("./InlineAction");
@@ -18,24 +19,44 @@ const RenderButton = ({ composition, visible }) => {
18
19
  }, []);
19
20
  const isVideo = composition.durationInFrames > 1;
20
21
  const onClick = (0, react_1.useCallback)((e) => {
21
- var _a, _b, _c, _d, _e;
22
+ const defaults = window.remotion_renderDefaults;
23
+ if (!defaults) {
24
+ throw new Error('expected defaults');
25
+ }
22
26
  e.stopPropagation();
27
+ const { initialAudioCodec, initialRenderType, initialVideoCodec } = (0, get_default_video_contexts_1.getDefaultCodecs)({
28
+ defaultCodec: defaults.codec,
29
+ isStill: !isVideo,
30
+ });
23
31
  setSelectedModal({
24
32
  type: 'render',
25
33
  compositionId: composition.id,
26
34
  initialFrame: 0,
27
- initialImageFormat: isVideo ? 'jpeg' : 'png',
28
- // TODO: Determine defaults from config file
29
- initialQuality: (_b = (_a = window.remotion_renderDefaults) === null || _a === void 0 ? void 0 : _a.quality) !== null && _b !== void 0 ? _b : 80,
30
- initialScale: (_d = (_c = window.remotion_renderDefaults) === null || _c === void 0 ? void 0 : _c.scale) !== null && _d !== void 0 ? _d : 1,
31
- initialVerbose: ((_e = window.remotion_renderDefaults) === null || _e === void 0 ? void 0 : _e.logLevel) === 'verbose',
35
+ initialVideoImageFormat: defaults.videoImageFormat,
36
+ initialStillImageFormat: defaults.stillImageFormat,
37
+ initialQuality: defaults.quality,
38
+ initialScale: defaults.scale,
39
+ initialVerbose: defaults.logLevel === 'verbose',
32
40
  initialOutName: (0, get_default_out_name_1.getDefaultOutLocation)({
33
41
  compositionName: composition.id,
34
42
  defaultExtension: isVideo ? 'mp4' : 'png',
35
43
  type: 'asset',
36
44
  }),
37
- initialRenderType: isVideo ? 'video' : 'still',
38
- initialCodec: 'h264',
45
+ initialAudioCodec,
46
+ initialRenderType,
47
+ initialVideoCodec,
48
+ initialConcurrency: defaults.concurrency,
49
+ maxConcurrency: defaults.maxConcurrency,
50
+ minConcurrency: defaults.minConcurrency,
51
+ initialMuted: defaults.muted,
52
+ initialEnforceAudioTrack: defaults.enforceAudioTrack,
53
+ initialProResProfile: defaults.proResProfile,
54
+ initialPixelFormat: defaults.pixelFormat,
55
+ initialAudioBitrate: defaults.audioBitrate,
56
+ initialVideoBitrate: defaults.videoBitrate,
57
+ initialEveryNthFrame: defaults.everyNthFrame,
58
+ initialNumberOfGifLoops: defaults.numberOfGifLoops,
59
+ initialDelayRenderTimeout: defaults.delayRenderTimeout,
39
60
  });
40
61
  }, [composition.id, isVideo, setSelectedModal]);
41
62
  if (!visible) {
@@ -2,14 +2,14 @@
2
2
  import type { Codec } from '@remotion/renderer';
3
3
  export declare const useCrfState: (codec: Codec) => {
4
4
  crf: number;
5
- setCrf: (updater: (prev: number) => number) => void;
5
+ setCrf: import("react").Dispatch<import("react").SetStateAction<number>>;
6
6
  minCrf: number;
7
7
  maxCrf: number;
8
8
  shouldDisplayOption: boolean;
9
9
  };
10
10
  export declare const CrfSetting: React.FC<{
11
11
  crf: number;
12
- setCrf: (value: (prevVal: number) => number) => void;
12
+ setCrf: React.Dispatch<React.SetStateAction<number>>;
13
13
  min: number;
14
14
  max: number;
15
15
  }>;
@@ -4,9 +4,7 @@ exports.CrfSetting = exports.useCrfState = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const client_1 = require("@remotion/renderer/client");
6
6
  const react_1 = require("react");
7
- const InputDragger_1 = require("../NewComposition/InputDragger");
8
- const RemInput_1 = require("../NewComposition/RemInput");
9
- const layout_1 = require("./layout");
7
+ const NumberSetting_1 = require("./NumberSetting");
10
8
  const getDefaultCrfState = () => {
11
9
  return client_1.BrowserSafeApis.validCodecs
12
10
  .map((c) => {
@@ -22,16 +20,17 @@ const getDefaultCrfState = () => {
22
20
  const useCrfState = (codec) => {
23
21
  const [state, setState] = (0, react_1.useState)(() => getDefaultCrfState());
24
22
  const range = client_1.BrowserSafeApis.getValidCrfRanges(codec);
23
+ const setCrf = (updater) => {
24
+ setState((q) => {
25
+ return {
26
+ ...q,
27
+ [codec]: typeof updater === 'number' ? updater : updater(q[codec]),
28
+ };
29
+ });
30
+ };
25
31
  return {
26
32
  crf: state[codec],
27
- setCrf: (updater) => {
28
- setState((q) => {
29
- return {
30
- ...q,
31
- [codec]: updater(q[codec]),
32
- };
33
- });
34
- },
33
+ setCrf,
35
34
  minCrf: range[0],
36
35
  maxCrf: range[1],
37
36
  shouldDisplayOption: range[0] !== range[1],
@@ -39,18 +38,6 @@ const useCrfState = (codec) => {
39
38
  };
40
39
  exports.useCrfState = useCrfState;
41
40
  const CrfSetting = ({ crf, setCrf, min, max }) => {
42
- const onCrfSetDirectly = (0, react_1.useCallback)((newCrf) => {
43
- setCrf(() => newCrf);
44
- }, [setCrf]);
45
- const onCrfChanged = (0, react_1.useCallback)((e) => {
46
- setCrf((q) => {
47
- const newCrf = parseFloat(e);
48
- if (Number.isNaN(newCrf)) {
49
- return q;
50
- }
51
- return Math.min(max, Math.max(newCrf, min));
52
- });
53
- }, [max, min, setCrf]);
54
- return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "CRF" }), (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: crf, onTextChange: onCrfChanged, placeholder: `${min}-${max}`, onValueChange: onCrfSetDirectly, name: "crf", step: 1, min: min, max: max }) }) })] }));
41
+ return ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: min, max: max, name: "CRF", onValueChanged: setCrf, value: crf, step: 1 }));
55
42
  };
56
43
  exports.CrfSetting = CrfSetting;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const EveryNthFrameSetting: React.FC<{
3
+ everyNthFrame: number;
4
+ setEveryNthFrameSetting: React.Dispatch<React.SetStateAction<number>>;
5
+ }>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EveryNthFrameSetting = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const NumberSetting_1 = require("./NumberSetting");
6
+ const EveryNthFrameSetting = ({ everyNthFrame, setEveryNthFrameSetting }) => {
7
+ return ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { name: "Every nth frame", min: 1, onValueChanged: setEveryNthFrameSetting, value: everyNthFrame }));
8
+ };
9
+ exports.EveryNthFrameSetting = EveryNthFrameSetting;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const NumberOfLoopsSetting: React.FC<{
3
+ numberOfGifLoops: number;
4
+ setNumberOfGifLoops: React.Dispatch<React.SetStateAction<number>>;
5
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberOfLoopsSetting = void 0;
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");
9
+ const min = 0;
10
+ const NumberOfLoopsSetting = ({ numberOfGifLoops, setNumberOfGifLoops }) => {
11
+ const onNumberOfGifLoopsChangedDirectly = (0, react_1.useCallback)((newConcurrency) => {
12
+ setNumberOfGifLoops(newConcurrency);
13
+ }, [setNumberOfGifLoops]);
14
+ const onNumberOfGifLoopsChanged = (0, react_1.useCallback)((e) => {
15
+ setNumberOfGifLoops((q) => {
16
+ const newConcurrency = parseInt(e, 10);
17
+ if (Number.isNaN(newConcurrency)) {
18
+ return q;
19
+ }
20
+ const newConcurrencyClamped = Math.max(newConcurrency, min);
21
+ return newConcurrencyClamped;
22
+ });
23
+ }, [setNumberOfGifLoops]);
24
+ return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Number of loops" }), (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: numberOfGifLoops, onTextChange: onNumberOfGifLoopsChanged, placeholder: `${min}-`, onValueChange: onNumberOfGifLoopsChangedDirectly, name: "number-of-gif-loops", step: 1, min: min }) }) })] }));
25
+ };
26
+ exports.NumberOfLoopsSetting = NumberOfLoopsSetting;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export declare const NumberSetting: React.FC<{
3
+ name: string;
4
+ value: number;
5
+ onValueChanged: React.Dispatch<React.SetStateAction<number>>;
6
+ max?: number;
7
+ min: number;
8
+ step: number;
9
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberSetting = void 0;
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");
9
+ const NumberSetting = ({ name, value, step, onValueChanged, max, min }) => {
10
+ const onTextChanged = (0, react_1.useCallback)((e) => {
11
+ onValueChanged((q) => {
12
+ const newSetting = parseInt(e, 10);
13
+ if (Number.isNaN(newSetting)) {
14
+ return q;
15
+ }
16
+ return Math.min(max !== null && max !== void 0 ? max : Infinity, Math.max(newSetting, min));
17
+ });
18
+ }, [max, min, onValueChanged]);
19
+ const onValueChange = (0, react_1.useCallback)((newConcurrency) => {
20
+ onValueChanged(newConcurrency);
21
+ }, [onValueChanged]);
22
+ return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: name }), (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: value, name: name.toLowerCase(), onTextChange: onTextChanged, onValueChange: onValueChange, step: step, placeholder: [min, max]
23
+ .map((f) => (f !== null && f !== undefined ? f : ''))
24
+ .join('-'), min: min, max: max }) }) })] }));
25
+ };
26
+ exports.NumberSetting = NumberSetting;
@@ -1,14 +1,28 @@
1
- import type { Codec, StillImageFormat } from '@remotion/renderer';
1
+ import type { Codec, PixelFormat, ProResProfile, StillImageFormat } from '@remotion/renderer';
2
2
  import React from 'react';
3
- export declare type RenderType = 'still' | 'video';
3
+ import type { RenderType } from './RenderModalAdvanced';
4
4
  export declare const RenderModal: React.FC<{
5
5
  compositionId: string;
6
6
  initialFrame: number;
7
- initialImageFormat: StillImageFormat;
8
- initialQuality: number | null;
7
+ initialVideoImageFormat: StillImageFormat;
8
+ initialStillImageFormat: StillImageFormat;
9
+ initialQuality: number;
9
10
  initialScale: number;
10
11
  initialVerbose: boolean;
11
12
  initialOutName: string;
12
13
  initialRenderType: RenderType;
13
- initialCodec: Codec;
14
+ initialAudioCodec: Codec;
15
+ initialVideoCodec: Codec;
16
+ initialConcurrency: number;
17
+ minConcurrency: number;
18
+ maxConcurrency: number;
19
+ initialMuted: boolean;
20
+ initialEnforceAudioTrack: boolean;
21
+ initialProResProfile: ProResProfile;
22
+ initialPixelFormat: PixelFormat;
23
+ initialVideoBitrate: string | null;
24
+ initialAudioBitrate: string | null;
25
+ initialEveryNthFrame: number;
26
+ initialNumberOfGifLoops: number | null;
27
+ initialDelayRenderTimeout: number;
14
28
  }>;