@remotion/cli 3.3.43 → 3.3.44
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/code-frame.js +18 -7
- package/dist/config/log.d.ts +1 -1
- package/dist/derive-codec-from-file-extension.d.ts +1 -0
- package/dist/derive-codec-from-file-extension.js +27 -0
- package/dist/editor/components/Modals.js +1 -1
- package/dist/editor/components/RenderButton.js +29 -8
- package/dist/editor/components/RenderModal/CrfSetting.d.ts +2 -2
- package/dist/editor/components/RenderModal/CrfSetting.js +11 -24
- package/dist/editor/components/RenderModal/EveryNthFrameSetting.d.ts +5 -0
- package/dist/editor/components/RenderModal/EveryNthFrameSetting.js +9 -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/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.js +2 -18
- 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 +1 -0
- package/dist/editor/components/RenderModal/layout.js +8 -2
- 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/make-progress-bar.js +14 -1
- package/dist/preview-server/render-queue/get-default-video-contexts.d.ts +1 -1
- 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/code-frame.js
CHANGED
|
@@ -25,8 +25,12 @@ const printCodeFrame = (frame) => {
|
|
|
25
25
|
const alignLeftAmount = Math.min(...frame.originalScriptCode.map((c) => c.content.length - c.content.trimStart().length));
|
|
26
26
|
log_1.Log.info(`${frame.originalScriptCode
|
|
27
27
|
.map((c) => {
|
|
28
|
-
const
|
|
29
|
-
|
|
28
|
+
const left = String(c.lineNumber).padStart(longestLineNumber, ' ');
|
|
29
|
+
const right = c.content.substring(alignLeftAmount);
|
|
30
|
+
if (c.highlight) {
|
|
31
|
+
return `${left} │ ${right}`;
|
|
32
|
+
}
|
|
33
|
+
return `${chalk_1.chalk.gray(left)} │ ${chalk_1.chalk.gray(right)}`;
|
|
30
34
|
})
|
|
31
35
|
.join('\n')}`);
|
|
32
36
|
};
|
|
@@ -40,7 +44,7 @@ const logLine = (frame) => {
|
|
|
40
44
|
.join(' ')));
|
|
41
45
|
};
|
|
42
46
|
const printCodeFrameAndStack = (err) => {
|
|
43
|
-
var _a, _b, _c;
|
|
47
|
+
var _a, _b, _c, _d, _e;
|
|
44
48
|
if (!err.symbolicatedStackFrames ||
|
|
45
49
|
err.symbolicatedStackFrames.length === 0) {
|
|
46
50
|
log_1.Log.error(err.stack);
|
|
@@ -54,16 +58,23 @@ const printCodeFrameAndStack = (err) => {
|
|
|
54
58
|
if (frame === firstFrame) {
|
|
55
59
|
continue;
|
|
56
60
|
}
|
|
57
|
-
|
|
61
|
+
const isUserCode = !((_a = frame.originalFileName) === null || _a === void 0 ? void 0 : _a.includes('node_modules')) &&
|
|
62
|
+
!((_b = frame.originalFileName) === null || _b === void 0 ? void 0 : _b.startsWith('webpack/'));
|
|
63
|
+
if (isUserCode) {
|
|
64
|
+
printCodeFrame(frame);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
logLine(frame);
|
|
68
|
+
}
|
|
58
69
|
}
|
|
59
70
|
if (err.delayRenderCall) {
|
|
60
71
|
log_1.Log.error();
|
|
61
72
|
log_1.Log.error('🕧 The delayRender() call is located at:');
|
|
62
73
|
for (const frame of err.delayRenderCall) {
|
|
63
|
-
const showCodeFrame = (!((
|
|
64
|
-
!((
|
|
74
|
+
const showCodeFrame = (!((_c = frame.originalFileName) === null || _c === void 0 ? void 0 : _c.includes('node_modules')) &&
|
|
75
|
+
!((_d = frame.originalFileName) === null || _d === void 0 ? void 0 : _d.startsWith('webpack/'))) ||
|
|
65
76
|
frame === err.delayRenderCall[0] ||
|
|
66
|
-
((
|
|
77
|
+
((_e = frame.originalScriptCode) === null || _e === void 0 ? void 0 : _e.map((c) => c.content).join('').includes('delayRender'));
|
|
67
78
|
if (showCodeFrame) {
|
|
68
79
|
printCodeFrame(frame);
|
|
69
80
|
}
|
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 @@
|
|
|
1
|
+
export declare const makeFileExtensionMap: () => Record<string, ("h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif")[]>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeFileExtensionMap = void 0;
|
|
4
|
+
const renderer_1 = require("@remotion/renderer");
|
|
5
|
+
const makeFileExtensionMap = () => {
|
|
6
|
+
const map = {};
|
|
7
|
+
Object.keys(renderer_1.RenderInternals.defaultFileExtensionMap).forEach((_codec) => {
|
|
8
|
+
const codec = _codec;
|
|
9
|
+
const fileExtMap = renderer_1.RenderInternals.defaultFileExtensionMap[codec];
|
|
10
|
+
const audioCodecs = Object.keys(fileExtMap.forAudioCodec);
|
|
11
|
+
const possibleExtensionsForAudioCodec = audioCodecs.map((audioCodec) => fileExtMap.forAudioCodec[audioCodec].possible);
|
|
12
|
+
const allPossibleExtensions = [
|
|
13
|
+
fileExtMap.default,
|
|
14
|
+
...possibleExtensionsForAudioCodec.flat(1),
|
|
15
|
+
];
|
|
16
|
+
for (const extension of allPossibleExtensions) {
|
|
17
|
+
if (!map[extension]) {
|
|
18
|
+
map[extension] = [];
|
|
19
|
+
}
|
|
20
|
+
if (!map[extension].includes(codec)) {
|
|
21
|
+
map[extension].push(codec);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return map;
|
|
26
|
+
};
|
|
27
|
+
exports.makeFileExtensionMap = makeFileExtensionMap;
|
|
@@ -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
|
};
|
|
@@ -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) {
|
|
@@ -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: (
|
|
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:
|
|
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
|
|
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
|
|
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
|
-
|
|
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,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,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;
|
|
@@ -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
|
}>;
|