@remotion/cli 3.3.35 → 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.
- package/dist/config/log.d.ts +1 -1
- package/dist/editor/components/Checkbox.d.ts +5 -0
- package/dist/editor/components/Checkbox.js +38 -0
- package/dist/editor/components/CurrentCompositionSideEffects.d.ts +3 -0
- package/dist/editor/components/CurrentCompositionSideEffects.js +43 -0
- package/dist/editor/components/Modals.js +1 -1
- package/dist/editor/components/NewComposition/ComboBox.js +8 -2
- package/dist/editor/components/NewComposition/InputDragger.js +1 -0
- package/dist/editor/components/RenderButton.js +29 -8
- package/dist/editor/components/RenderModal/CrfSetting.d.ts +15 -0
- package/dist/editor/components/RenderModal/CrfSetting.js +43 -0
- package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.d.ts +5 -0
- package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.js +14 -0
- package/dist/editor/components/RenderModal/EveryNthFrameSetting.d.ts +5 -0
- package/dist/editor/components/RenderModal/EveryNthFrameSetting.js +9 -0
- package/dist/editor/components/RenderModal/FrameRangeSetting.d.ts +8 -0
- package/dist/editor/components/RenderModal/FrameRangeSetting.js +42 -0
- package/dist/editor/components/RenderModal/MutedSetting.d.ts +5 -0
- package/dist/editor/components/RenderModal/MutedSetting.js +14 -0
- package/dist/editor/components/RenderModal/NumberOfLoopsSetting.d.ts +5 -0
- package/dist/editor/components/RenderModal/NumberOfLoopsSetting.js +26 -0
- package/dist/editor/components/RenderModal/NumberSetting.d.ts +9 -0
- package/dist/editor/components/RenderModal/NumberSetting.js +26 -0
- package/dist/editor/components/RenderModal/QualitySetting.d.ts +5 -0
- package/dist/editor/components/RenderModal/QualitySetting.js +27 -0
- package/dist/editor/components/RenderModal/RenderModal.d.ts +19 -5
- package/dist/editor/components/RenderModal/RenderModal.js +225 -181
- package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +11 -0
- package/dist/editor/components/RenderModal/RenderModalAdvanced.js +15 -0
- package/dist/editor/components/RenderModal/RenderModalAudio.d.ts +13 -0
- package/dist/editor/components/RenderModal/RenderModalAudio.js +22 -0
- package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +22 -0
- package/dist/editor/components/RenderModal/RenderModalBasic.js +70 -0
- package/dist/editor/components/RenderModal/RenderModalGeneral.d.ts +0 -0
- package/dist/editor/components/RenderModal/RenderModalGeneral.js +1 -0
- package/dist/editor/components/RenderModal/RenderModalGif.d.ts +9 -0
- package/dist/editor/components/RenderModal/RenderModalGif.js +16 -0
- package/dist/editor/components/RenderModal/RenderModalHr.d.ts +2 -0
- package/dist/editor/components/RenderModal/RenderModalHr.js +18 -0
- package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +28 -0
- package/dist/editor/components/RenderModal/RenderModalPicture.js +51 -0
- package/dist/editor/components/RenderModal/ScaleSetting.d.ts +5 -0
- package/dist/editor/components/RenderModal/ScaleSetting.js +11 -0
- package/dist/editor/components/RenderModal/human-readable-codec.d.ts +2 -0
- package/dist/editor/components/RenderModal/human-readable-codec.js +36 -0
- package/dist/editor/components/RenderModal/layout.d.ts +5 -0
- package/dist/editor/components/RenderModal/layout.js +31 -0
- package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +2 -1
- package/dist/editor/components/RenderQueue/actions.d.ts +15 -2
- package/dist/editor/components/RenderQueue/actions.js +14 -1
- package/dist/editor/components/RenderToolbarIcon.js +30 -8
- package/dist/editor/components/SegmentedControl.js +1 -1
- package/dist/editor/components/SidebarContent.js +2 -1
- package/dist/editor/icons/audio.d.ts +2 -0
- package/dist/editor/icons/audio.js +6 -0
- package/dist/editor/icons/file.d.ts +2 -0
- package/dist/editor/icons/file.js +6 -0
- package/dist/editor/icons/frame.d.ts +2 -0
- package/dist/editor/icons/frame.js +6 -0
- package/dist/editor/icons/gear.d.ts +2 -0
- package/dist/editor/icons/gear.js +6 -0
- package/dist/editor/icons/gif.d.ts +2 -0
- package/dist/editor/icons/gif.js +6 -0
- package/dist/get-cli-options.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/preview-server/render-queue/get-default-video-contexts.d.ts +10 -0
- package/dist/preview-server/render-queue/get-default-video-contexts.js +13 -0
- package/dist/preview-server/render-queue/job.d.ts +27 -1
- package/dist/preview-server/render-queue/make-retry-payload.js +52 -10
- package/dist/preview-server/render-queue/process-video.js +16 -9
- package/dist/preview-server/routes/add-render.js +13 -0
- package/dist/render-flows/render.d.ts +14 -4
- package/dist/render-flows/render.js +40 -13
- package/package.json +7 -7
package/dist/config/log.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { LogLevel } from '@remotion/renderer';
|
|
2
|
-
export declare const getLogLevel: () => "
|
|
2
|
+
export declare const getLogLevel: () => "verbose" | "error" | "info" | "warn";
|
|
3
3
|
export declare const setLogLevel: (newLogLevel: LogLevel) => void;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Checkbox = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const colors_1 = require("../helpers/colors");
|
|
6
|
+
const Checkmark_1 = require("../icons/Checkmark");
|
|
7
|
+
const size = 20;
|
|
8
|
+
const background = {
|
|
9
|
+
height: size,
|
|
10
|
+
width: size,
|
|
11
|
+
position: 'relative',
|
|
12
|
+
};
|
|
13
|
+
const input = {
|
|
14
|
+
appearance: 'none',
|
|
15
|
+
background: colors_1.INPUT_BACKGROUND,
|
|
16
|
+
border: '1px solid ' + colors_1.INPUT_BORDER_COLOR_UNHOVERED,
|
|
17
|
+
height: size,
|
|
18
|
+
width: size,
|
|
19
|
+
top: 0,
|
|
20
|
+
left: 0,
|
|
21
|
+
position: 'absolute',
|
|
22
|
+
margin: 0,
|
|
23
|
+
};
|
|
24
|
+
const box = {
|
|
25
|
+
display: 'flex',
|
|
26
|
+
justifyContent: 'center',
|
|
27
|
+
alignItems: 'center',
|
|
28
|
+
position: 'absolute',
|
|
29
|
+
height: size,
|
|
30
|
+
width: size,
|
|
31
|
+
top: 0,
|
|
32
|
+
left: 0,
|
|
33
|
+
pointerEvents: 'none',
|
|
34
|
+
};
|
|
35
|
+
const Checkbox = ({ checked, onChange }) => {
|
|
36
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: background, children: [(0, jsx_runtime_1.jsx)("input", { style: input, type: 'checkbox', checked: checked, onChange: onChange }), (0, jsx_runtime_1.jsx)("div", { style: box, children: checked ? (0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {}) : null })] }));
|
|
37
|
+
};
|
|
38
|
+
exports.Checkbox = Checkbox;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CurrentCompositionKeybindings = exports.TitleUpdater = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const remotion_1 = require("remotion");
|
|
6
|
+
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
7
|
+
const TitleUpdater = () => {
|
|
8
|
+
const video = remotion_1.Internals.useVideo();
|
|
9
|
+
(0, react_1.useEffect)(() => {
|
|
10
|
+
if (!video) {
|
|
11
|
+
document.title = 'Remotion Preview';
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
document.title = `${video.id} / ${window.remotion_projectName} - Remotion Preview`;
|
|
15
|
+
}, [video]);
|
|
16
|
+
return null;
|
|
17
|
+
};
|
|
18
|
+
exports.TitleUpdater = TitleUpdater;
|
|
19
|
+
const CurrentCompositionKeybindings = () => {
|
|
20
|
+
const keybindings = (0, use_keybinding_1.useKeybinding)();
|
|
21
|
+
const video = remotion_1.Internals.useVideo();
|
|
22
|
+
const openRenderModal = (0, react_1.useCallback)(() => {
|
|
23
|
+
if (!video) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const renderButton = document.getElementById('render-modal-button');
|
|
27
|
+
renderButton.click();
|
|
28
|
+
}, [video]);
|
|
29
|
+
(0, react_1.useEffect)(() => {
|
|
30
|
+
const binding = keybindings.registerKeybinding({
|
|
31
|
+
event: 'keydown',
|
|
32
|
+
key: 'r',
|
|
33
|
+
commandCtrlKey: false,
|
|
34
|
+
callback: openRenderModal,
|
|
35
|
+
preventDefault: true,
|
|
36
|
+
});
|
|
37
|
+
return () => {
|
|
38
|
+
binding.unregister();
|
|
39
|
+
};
|
|
40
|
+
}, [keybindings, openRenderModal]);
|
|
41
|
+
return null;
|
|
42
|
+
};
|
|
43
|
+
exports.CurrentCompositionKeybindings = CurrentCompositionKeybindings;
|
|
@@ -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,
|
|
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
|
};
|
|
@@ -33,6 +33,7 @@ const Combobox = ({ values, selectedId, style: customStyle, title }) => {
|
|
|
33
33
|
triggerOnWindowResize: true,
|
|
34
34
|
shouldApplyCssTransforms: true,
|
|
35
35
|
});
|
|
36
|
+
const refresh = size === null || size === void 0 ? void 0 : size.refresh;
|
|
36
37
|
const onHide = (0, react_1.useCallback)(() => {
|
|
37
38
|
setOpened(false);
|
|
38
39
|
}, []);
|
|
@@ -45,7 +46,12 @@ const Combobox = ({ values, selectedId, style: customStyle, title }) => {
|
|
|
45
46
|
const onMouseLeave = () => setIsHovered(false);
|
|
46
47
|
const onClick = (e) => {
|
|
47
48
|
e.stopPropagation();
|
|
48
|
-
return setOpened((o) =>
|
|
49
|
+
return setOpened((o) => {
|
|
50
|
+
if (!o) {
|
|
51
|
+
refresh === null || refresh === void 0 ? void 0 : refresh();
|
|
52
|
+
}
|
|
53
|
+
return !o;
|
|
54
|
+
});
|
|
49
55
|
};
|
|
50
56
|
current.addEventListener('mouseenter', onMouseEnter);
|
|
51
57
|
current.addEventListener('mouseleave', onMouseLeave);
|
|
@@ -55,7 +61,7 @@ const Combobox = ({ values, selectedId, style: customStyle, title }) => {
|
|
|
55
61
|
current.removeEventListener('mouseleave', onMouseLeave);
|
|
56
62
|
current.removeEventListener('click', onClick);
|
|
57
63
|
};
|
|
58
|
-
}, []);
|
|
64
|
+
}, [refresh]);
|
|
59
65
|
const portalStyle = (0, react_1.useMemo)(() => {
|
|
60
66
|
if (!opened || !size) {
|
|
61
67
|
return null;
|
|
@@ -25,6 +25,7 @@ const InputDragger = ({ onValueChange, min: _min, step: _step, value, onTextChan
|
|
|
25
25
|
cursor: 'ew-resize',
|
|
26
26
|
userSelect: 'none',
|
|
27
27
|
fontSize: 13,
|
|
28
|
+
fontVariantNumeric: 'tabular-nums',
|
|
28
29
|
}), []);
|
|
29
30
|
const onClick = (0, react_1.useCallback)((e) => {
|
|
30
31
|
if (!(0, input_dragger_click_lock_1.getClickLock)()) {
|
|
@@ -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
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
initialQuality:
|
|
30
|
-
initialScale:
|
|
31
|
-
initialVerbose:
|
|
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
|
-
|
|
38
|
-
|
|
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) {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { Codec } from '@remotion/renderer';
|
|
3
|
+
export declare const useCrfState: (codec: Codec) => {
|
|
4
|
+
crf: number;
|
|
5
|
+
setCrf: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
6
|
+
minCrf: number;
|
|
7
|
+
maxCrf: number;
|
|
8
|
+
shouldDisplayOption: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare const CrfSetting: React.FC<{
|
|
11
|
+
crf: number;
|
|
12
|
+
setCrf: React.Dispatch<React.SetStateAction<number>>;
|
|
13
|
+
min: number;
|
|
14
|
+
max: number;
|
|
15
|
+
}>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CrfSetting = exports.useCrfState = 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 NumberSetting_1 = require("./NumberSetting");
|
|
8
|
+
const getDefaultCrfState = () => {
|
|
9
|
+
return client_1.BrowserSafeApis.validCodecs
|
|
10
|
+
.map((c) => {
|
|
11
|
+
return [c, client_1.BrowserSafeApis.getDefaultCrfForCodec(c)];
|
|
12
|
+
})
|
|
13
|
+
.reduce((acc, [codec, crf]) => {
|
|
14
|
+
return {
|
|
15
|
+
...acc,
|
|
16
|
+
[codec]: crf,
|
|
17
|
+
};
|
|
18
|
+
}, {});
|
|
19
|
+
};
|
|
20
|
+
const useCrfState = (codec) => {
|
|
21
|
+
const [state, setState] = (0, react_1.useState)(() => getDefaultCrfState());
|
|
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
|
+
};
|
|
31
|
+
return {
|
|
32
|
+
crf: state[codec],
|
|
33
|
+
setCrf,
|
|
34
|
+
minCrf: range[0],
|
|
35
|
+
maxCrf: range[1],
|
|
36
|
+
shouldDisplayOption: range[0] !== range[1],
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
exports.useCrfState = useCrfState;
|
|
40
|
+
const CrfSetting = ({ crf, setCrf, min, max }) => {
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: min, max: max, name: "CRF", onValueChanged: setCrf, value: crf, step: 1 }));
|
|
42
|
+
};
|
|
43
|
+
exports.CrfSetting = CrfSetting;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnforceAudioTrackSetting = 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 EnforceAudioTrackSetting = ({ enforceAudioTrack, setEnforceAudioTrack }) => {
|
|
9
|
+
const onEnforceAudioTrackChanged = (0, react_1.useCallback)((e) => {
|
|
10
|
+
setEnforceAudioTrack(e.target.checked);
|
|
11
|
+
}, [setEnforceAudioTrack]);
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Enforce Audio Track" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: enforceAudioTrack, onChange: onEnforceAudioTrackChanged }) })] }));
|
|
13
|
+
};
|
|
14
|
+
exports.EnforceAudioTrackSetting = EnforceAudioTrackSetting;
|
|
@@ -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,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const FrameRangeSetting: React.FC<{
|
|
3
|
+
startFrame: number;
|
|
4
|
+
endFrame: number;
|
|
5
|
+
setEndFrame: React.Dispatch<React.SetStateAction<number | null>>;
|
|
6
|
+
setStartFrame: React.Dispatch<React.SetStateAction<number | null>>;
|
|
7
|
+
durationInFrames: number;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FrameRangeSetting = 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 FrameRangeSetting = ({ startFrame, endFrame, setEndFrame, durationInFrames, setStartFrame }) => {
|
|
10
|
+
const maxStartFrame = endFrame - 1;
|
|
11
|
+
const minStartFrame = 0;
|
|
12
|
+
const minEndFrame = startFrame + 1;
|
|
13
|
+
const maxEndFrame = durationInFrames - 1;
|
|
14
|
+
const onStartFrameChangedDirectly = (0, react_1.useCallback)((newStartFrame) => {
|
|
15
|
+
setStartFrame(newStartFrame);
|
|
16
|
+
}, [setStartFrame]);
|
|
17
|
+
const onEndFrameChangedDirectly = (0, react_1.useCallback)((newEndFrame) => {
|
|
18
|
+
setEndFrame(newEndFrame);
|
|
19
|
+
}, [setEndFrame]);
|
|
20
|
+
const onStartFrameChanged = (0, react_1.useCallback)((e) => {
|
|
21
|
+
setStartFrame((q) => {
|
|
22
|
+
const newStartFrame = parseInt(e, 10);
|
|
23
|
+
if (Number.isNaN(newStartFrame)) {
|
|
24
|
+
return q;
|
|
25
|
+
}
|
|
26
|
+
const newStartFrameClamped = Math.min(maxStartFrame, Math.max(newStartFrame, minStartFrame));
|
|
27
|
+
return newStartFrameClamped;
|
|
28
|
+
});
|
|
29
|
+
}, [maxStartFrame, setStartFrame]);
|
|
30
|
+
const onEndFrameChanged = (0, react_1.useCallback)((e) => {
|
|
31
|
+
setEndFrame((q) => {
|
|
32
|
+
const newEndFrame = parseInt(e, 10);
|
|
33
|
+
if (Number.isNaN(newEndFrame)) {
|
|
34
|
+
return q;
|
|
35
|
+
}
|
|
36
|
+
const newEndFrameClamped = Math.min(maxEndFrame, Math.max(newEndFrame, minEndFrame));
|
|
37
|
+
return newEndFrameClamped;
|
|
38
|
+
});
|
|
39
|
+
}, [maxEndFrame, minEndFrame, setEndFrame]);
|
|
40
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Frame range" }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.rightRow, children: [(0, jsx_runtime_1.jsx)(RemInput_1.RightAlignInput, { children: (0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { value: startFrame, onTextChange: onStartFrameChanged, placeholder: `${minStartFrame}-${maxStartFrame}`, onValueChange: onStartFrameChangedDirectly, name: "startFrame", step: 1, min: minStartFrame, max: maxStartFrame }) }), (0, jsx_runtime_1.jsx)(RemInput_1.RightAlignInput, { children: (0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { value: endFrame, onTextChange: onEndFrameChanged, placeholder: `${minEndFrame}-${maxEndFrame}`, onValueChange: onEndFrameChangedDirectly, name: "endFrame", step: 1, min: minEndFrame, max: maxEndFrame }) })] })] }));
|
|
41
|
+
};
|
|
42
|
+
exports.FrameRangeSetting = FrameRangeSetting;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MutedSetting = 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 MutedSetting = ({ muted, setMuted }) => {
|
|
9
|
+
const onMutedChanged = (0, react_1.useCallback)((e) => {
|
|
10
|
+
setMuted(e.target.checked);
|
|
11
|
+
}, [setMuted]);
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Muted" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: muted, onChange: onMutedChanged }) })] }));
|
|
13
|
+
};
|
|
14
|
+
exports.MutedSetting = MutedSetting;
|
|
@@ -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,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;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QualitySetting = 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_QUALITY = 1;
|
|
10
|
+
const MAX_QUALITY = 100;
|
|
11
|
+
const QualitySetting = ({ quality, setQuality }) => {
|
|
12
|
+
const onQualityChangedDirectly = (0, react_1.useCallback)((newQuality) => {
|
|
13
|
+
setQuality(newQuality);
|
|
14
|
+
}, [setQuality]);
|
|
15
|
+
const onQualityChanged = (0, react_1.useCallback)((e) => {
|
|
16
|
+
setQuality((q) => {
|
|
17
|
+
const newQuality = parseInt(e, 10);
|
|
18
|
+
if (Number.isNaN(newQuality)) {
|
|
19
|
+
return q;
|
|
20
|
+
}
|
|
21
|
+
const newQualityClamped = Math.min(MAX_QUALITY, Math.max(newQuality, MIN_QUALITY));
|
|
22
|
+
return newQualityClamped;
|
|
23
|
+
});
|
|
24
|
+
}, [setQuality]);
|
|
25
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "JPEG Quality" }), (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: quality, onTextChange: onQualityChanged, placeholder: `${MIN_QUALITY}-${MAX_QUALITY}`, onValueChange: onQualityChangedDirectly, name: "quality", step: 1, min: MIN_QUALITY, max: MAX_QUALITY }) }) })] }));
|
|
26
|
+
};
|
|
27
|
+
exports.QualitySetting = QualitySetting;
|
|
@@ -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
|
-
|
|
3
|
+
import type { RenderType } from './RenderModalAdvanced';
|
|
4
4
|
export declare const RenderModal: React.FC<{
|
|
5
5
|
compositionId: string;
|
|
6
6
|
initialFrame: number;
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
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
|
}>;
|