@remotion/cli 3.3.76 → 3.3.78
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/still-frame.js +5 -1
- package/dist/convert-entry-point-to-serve-url.d.ts +1 -0
- package/dist/convert-entry-point-to-serve-url.js +15 -0
- package/dist/editor/components/Checkbox.d.ts +6 -0
- package/dist/editor/components/Checkbox.js +41 -0
- package/dist/editor/components/CollapsableOptions.d.ts +6 -0
- package/dist/editor/components/CollapsableOptions.js +35 -0
- package/dist/editor/components/CurrentCompositionSideEffects.d.ts +3 -0
- package/dist/editor/components/CurrentCompositionSideEffects.js +43 -0
- package/dist/editor/components/InlineAction.d.ts +5 -0
- package/dist/editor/components/InlineAction.js +34 -0
- package/dist/editor/components/Modals.d.ts +2 -0
- package/dist/editor/components/Modals.js +23 -0
- package/dist/editor/components/RenderButton.d.ts +6 -0
- package/dist/editor/components/RenderButton.js +68 -0
- 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 +6 -0
- package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.js +14 -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/InfoBubble.d.ts +5 -0
- package/dist/editor/components/RenderModal/InfoBubble.js +111 -0
- package/dist/editor/components/RenderModal/InfoTooltip.d.ts +4 -0
- package/dist/editor/components/RenderModal/InfoTooltip.js +30 -0
- package/dist/editor/components/RenderModal/MutedSetting.d.ts +6 -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 +12 -0
- package/dist/editor/components/RenderModal/NumberSetting.js +29 -0
- package/dist/editor/components/RenderModal/OptionExplainer.d.ts +5 -0
- package/dist/editor/components/RenderModal/OptionExplainer.js +21 -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/RenderErrorModal.d.ts +5 -0
- package/dist/editor/components/RenderModal/RenderErrorModal.js +64 -0
- package/dist/editor/components/RenderModal/RenderModal.d.ts +29 -0
- package/dist/editor/components/RenderModal/RenderModal.js +488 -0
- package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +15 -0
- package/dist/editor/components/RenderModal/RenderModalAdvanced.js +22 -0
- package/dist/editor/components/RenderModal/RenderModalAudio.d.ts +17 -0
- package/dist/editor/components/RenderModal/RenderModalAudio.js +41 -0
- package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +22 -0
- package/dist/editor/components/RenderModal/RenderModalBasic.js +78 -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 +14 -0
- package/dist/editor/components/RenderModal/human-readable-audio-codecs.d.ts +2 -0
- package/dist/editor/components/RenderModal/human-readable-audio-codecs.js +18 -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/CircularProgress.d.ts +5 -0
- package/dist/editor/components/RenderQueue/CircularProgress.js +18 -0
- package/dist/editor/components/RenderQueue/RenderQueueError.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueError.js +26 -0
- package/dist/editor/components/RenderQueue/RenderQueueItem.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueItem.js +40 -0
- package/dist/editor/components/RenderQueue/RenderQueueItemCancelButton.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueItemCancelButton.js +22 -0
- package/dist/editor/components/RenderQueue/RenderQueueItemStatus.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueItemStatus.js +27 -0
- package/dist/editor/components/RenderQueue/RenderQueueOpenInFolder.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueOpenInFolder.js +22 -0
- package/dist/editor/components/RenderQueue/RenderQueueOutputName.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueOutputName.js +24 -0
- package/dist/editor/components/RenderQueue/RenderQueueProgressMessage.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueProgressMessage.js +27 -0
- package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +23 -0
- package/dist/editor/components/RenderQueue/RenderQueueRepeat.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueRepeat.js +22 -0
- package/dist/editor/components/RenderQueue/actions.d.ts +50 -0
- package/dist/editor/components/RenderQueue/actions.js +99 -0
- package/dist/editor/components/RenderQueue/context.d.ts +19 -0
- package/dist/editor/components/RenderQueue/context.js +56 -0
- package/dist/editor/components/RenderQueue/index.d.ts +2 -0
- package/dist/editor/components/RenderQueue/index.js +18 -0
- package/dist/editor/components/RenderQueue/item-style.d.ts +2 -0
- package/dist/editor/components/RenderQueue/item-style.js +21 -0
- package/dist/editor/components/RenderToolbarIcon.d.ts +2 -0
- package/dist/editor/components/RenderToolbarIcon.js +79 -0
- package/dist/editor/components/RendersTab.d.ts +6 -0
- package/dist/editor/components/RendersTab.js +43 -0
- package/dist/editor/components/SegmentedControl.d.ts +16 -0
- package/dist/editor/components/SegmentedControl.js +63 -0
- package/dist/editor/components/SidebarContent.d.ts +5 -0
- package/dist/editor/components/SidebarContent.js +52 -0
- package/dist/editor/components/Tabs/index.d.ts +11 -0
- package/dist/editor/components/Tabs/index.js +51 -0
- package/dist/editor/helpers/client-id.d.ts +17 -0
- package/dist/editor/helpers/client-id.js +46 -0
- package/dist/editor/helpers/prores-labels.d.ts +2 -0
- package/dist/editor/helpers/prores-labels.js +25 -0
- package/dist/editor/helpers/render-modal-sections.d.ts +10 -0
- package/dist/editor/helpers/render-modal-sections.js +32 -0
- package/dist/editor/helpers/use-file-existence.d.ts +1 -0
- package/dist/editor/helpers/use-file-existence.js +66 -0
- package/dist/editor/icons/RenderStillIcon.d.ts +3 -0
- package/dist/editor/icons/RenderStillIcon.js +8 -0
- 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/editor/icons/render.d.ts +5 -0
- package/dist/editor/icons/render.js +8 -0
- package/dist/editor/icons/video.d.ts +5 -0
- package/dist/editor/icons/video.js +8 -0
- package/dist/file-watcher.d.ts +9 -0
- package/dist/file-watcher.js +35 -0
- package/dist/gcp-command.d.ts +1 -0
- package/dist/gcp-command.js +27 -0
- package/dist/get-default-out-name.d.ts +5 -0
- package/dist/get-default-out-name.js +10 -0
- package/dist/preview-server/api-routes.d.ts +4 -0
- package/dist/preview-server/api-routes.js +17 -0
- package/dist/preview-server/api-types.d.ts +27 -0
- package/dist/preview-server/api-types.js +2 -0
- package/dist/preview-server/file-existence-watchers.d.ts +13 -0
- package/dist/preview-server/file-existence-watchers.js +62 -0
- package/dist/preview-server/handler.d.ts +9 -0
- package/dist/preview-server/handler.js +34 -0
- package/dist/preview-server/parse-body.d.ts +2 -0
- package/dist/preview-server/parse-body.js +16 -0
- 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 +116 -0
- package/dist/preview-server/render-queue/job.js +2 -0
- package/dist/preview-server/render-queue/make-retry-payload.d.ts +3 -0
- package/dist/preview-server/render-queue/make-retry-payload.js +79 -0
- package/dist/preview-server/render-queue/open-directory-in-finder.d.ts +1 -0
- package/dist/preview-server/render-queue/open-directory-in-finder.js +34 -0
- package/dist/preview-server/render-queue/process-still.d.ts +8 -0
- package/dist/preview-server/render-queue/process-still.js +52 -0
- package/dist/preview-server/render-queue/process-video.d.ts +8 -0
- package/dist/preview-server/render-queue/process-video.js +69 -0
- package/dist/preview-server/render-queue/queue.d.ts +21 -0
- package/dist/preview-server/render-queue/queue.js +185 -0
- package/dist/preview-server/routes/add-render.d.ts +3 -0
- package/dist/preview-server/routes/add-render.js +69 -0
- package/dist/preview-server/routes/cancel-render.d.ts +3 -0
- package/dist/preview-server/routes/cancel-render.js +9 -0
- package/dist/preview-server/routes/open-in-file-explorer.d.ts +3 -0
- package/dist/preview-server/routes/open-in-file-explorer.js +14 -0
- package/dist/preview-server/routes/remove-render.d.ts +3 -0
- package/dist/preview-server/routes/remove-render.js +9 -0
- package/dist/preview-server/routes/subscribe-to-file-existence.d.ts +3 -0
- package/dist/preview-server/routes/subscribe-to-file-existence.js +13 -0
- package/dist/preview-server/routes/unsubscribe-from-file-existence.d.ts +3 -0
- package/dist/preview-server/routes/unsubscribe-from-file-existence.js +13 -0
- package/dist/render-flows/render.d.ts +47 -0
- package/dist/render-flows/render.js +280 -0
- package/dist/render-flows/still.d.ts +29 -0
- package/dist/render-flows/still.js +171 -0
- package/package.json +6 -6
|
@@ -0,0 +1,78 @@
|
|
|
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 prores_labels_1 = require("../../helpers/prores-labels");
|
|
8
|
+
const use_file_existence_1 = require("../../helpers/use-file-existence");
|
|
9
|
+
const Checkmark_1 = require("../../icons/Checkmark");
|
|
10
|
+
const ComboBox_1 = require("../NewComposition/ComboBox");
|
|
11
|
+
const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
12
|
+
const RemInput_1 = require("../NewComposition/RemInput");
|
|
13
|
+
const ValidationMessage_1 = require("../NewComposition/ValidationMessage");
|
|
14
|
+
const SegmentedControl_1 = require("../SegmentedControl");
|
|
15
|
+
const FrameRangeSetting_1 = require("./FrameRangeSetting");
|
|
16
|
+
const human_readable_codec_1 = require("./human-readable-codec");
|
|
17
|
+
const layout_1 = require("./layout");
|
|
18
|
+
const RenderModalBasic = ({ renderMode, imageFormatOptions, outName, codec, setVideoCodec: setCodec, proResProfile, setProResProfile, frame, setFrame, currentComposition, setOutName, setEndFrame, endFrame, setStartFrame, startFrame, }) => {
|
|
19
|
+
const existence = (0, use_file_existence_1.useFileExistence)(outName);
|
|
20
|
+
const videoCodecOptions = (0, react_1.useMemo)(() => {
|
|
21
|
+
return client_1.BrowserSafeApis.validCodecs
|
|
22
|
+
.filter((c) => {
|
|
23
|
+
return client_1.BrowserSafeApis.isAudioCodec(c) === (renderMode === 'audio');
|
|
24
|
+
})
|
|
25
|
+
.map((codecOption) => {
|
|
26
|
+
return {
|
|
27
|
+
label: (0, human_readable_codec_1.humanReadableCodec)(codecOption),
|
|
28
|
+
onClick: () => setCodec(codecOption),
|
|
29
|
+
key: codecOption,
|
|
30
|
+
leftItem: codec === codecOption ? (0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {}) : null,
|
|
31
|
+
id: codecOption,
|
|
32
|
+
keyHint: null,
|
|
33
|
+
quickSwitcherLabel: null,
|
|
34
|
+
subMenu: null,
|
|
35
|
+
type: 'item',
|
|
36
|
+
value: codecOption,
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}, [renderMode, setCodec, codec]);
|
|
40
|
+
const proResProfileOptions = (0, react_1.useMemo)(() => {
|
|
41
|
+
return client_1.BrowserSafeApis.proResProfileOptions.map((option) => {
|
|
42
|
+
return {
|
|
43
|
+
label: (0, prores_labels_1.labelProResProfile)(option),
|
|
44
|
+
onClick: () => setProResProfile(option),
|
|
45
|
+
key: option,
|
|
46
|
+
selected: proResProfile === option,
|
|
47
|
+
type: 'item',
|
|
48
|
+
id: option,
|
|
49
|
+
keyHint: null,
|
|
50
|
+
leftItem: null,
|
|
51
|
+
quickSwitcherLabel: null,
|
|
52
|
+
subMenu: null,
|
|
53
|
+
value: option,
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
}, [proResProfile, setProResProfile]);
|
|
57
|
+
const onFrameSetDirectly = (0, react_1.useCallback)((newFrame) => {
|
|
58
|
+
setFrame(newFrame);
|
|
59
|
+
}, [setFrame]);
|
|
60
|
+
const onFrameChanged = (0, react_1.useCallback)((e) => {
|
|
61
|
+
setFrame((q) => {
|
|
62
|
+
const newFrame = parseFloat(e);
|
|
63
|
+
if (Number.isNaN(newFrame)) {
|
|
64
|
+
return q;
|
|
65
|
+
}
|
|
66
|
+
return newFrame;
|
|
67
|
+
});
|
|
68
|
+
}, [setFrame]);
|
|
69
|
+
const onValueChange = (0, react_1.useCallback)((e) => {
|
|
70
|
+
setOutName(e.target.value);
|
|
71
|
+
}, [setOutName]);
|
|
72
|
+
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)(ComboBox_1.Combobox, { title: proResProfile, selectedId: proResProfile, values: proResProfileOptions }) })] })) : 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
|
|
73
|
+
// TODO: Validate and reject folders or weird file names
|
|
74
|
+
, {
|
|
75
|
+
// TODO: Validate and reject folders or weird file names
|
|
76
|
+
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] }) })] })] }));
|
|
77
|
+
};
|
|
78
|
+
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,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, VideoImageFormat } 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: VideoImageFormat;
|
|
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 })), renderMode === 'video' ? (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}) : null, 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, renderMode === 'video' ? (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}) : null, (0, jsx_runtime_1.jsx)(ScaleSetting_1.ScaleSetting, { scale: scale, setScale: setScale }), renderMode === 'video' ? (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}) : null, 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;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScaleSetting = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const client_1 = require("@remotion/renderer/client");
|
|
6
|
+
const NumberSetting_1 = require("./NumberSetting");
|
|
7
|
+
const MIN_SCALE = 0.1;
|
|
8
|
+
const MAX_SCALE = 10;
|
|
9
|
+
const ScaleSetting = ({ scale, setScale }) => {
|
|
10
|
+
return (
|
|
11
|
+
// TODO: Always show 1 decimal
|
|
12
|
+
(0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: MIN_SCALE, max: MAX_SCALE, step: 0.1, name: "Scale", formatter: (w) => `${w}x`, onValueChanged: setScale, value: scale, hint: client_1.BrowserSafeApis.options.scaleOption }));
|
|
13
|
+
};
|
|
14
|
+
exports.ScaleSetting = ScaleSetting;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.humanReadableAudioCodec = void 0;
|
|
4
|
+
const humanReadableAudioCodec = (audioCodec) => {
|
|
5
|
+
if (audioCodec === 'aac') {
|
|
6
|
+
return 'AAC';
|
|
7
|
+
}
|
|
8
|
+
if (audioCodec === 'mp3') {
|
|
9
|
+
return 'MP3';
|
|
10
|
+
}
|
|
11
|
+
if (audioCodec === 'pcm-16') {
|
|
12
|
+
return 'Lossless';
|
|
13
|
+
}
|
|
14
|
+
if (audioCodec === 'opus') {
|
|
15
|
+
return 'Opus';
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
exports.humanReadableAudioCodec = humanReadableAudioCodec;
|
|
@@ -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 Matroska';
|
|
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;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.input = exports.rightRow = exports.label = exports.optionRow = void 0;
|
|
4
|
+
const colors_1 = require("../../helpers/colors");
|
|
5
|
+
exports.optionRow = {
|
|
6
|
+
display: 'flex',
|
|
7
|
+
flexDirection: 'row',
|
|
8
|
+
alignItems: 'flex-start',
|
|
9
|
+
minHeight: 40,
|
|
10
|
+
paddingLeft: 16,
|
|
11
|
+
paddingRight: 16,
|
|
12
|
+
paddingTop: 8,
|
|
13
|
+
paddingBottom: 8,
|
|
14
|
+
};
|
|
15
|
+
exports.label = {
|
|
16
|
+
width: 150,
|
|
17
|
+
fontSize: 15,
|
|
18
|
+
lineHeight: '40px',
|
|
19
|
+
color: colors_1.LIGHT_TEXT,
|
|
20
|
+
};
|
|
21
|
+
exports.rightRow = {
|
|
22
|
+
display: 'flex',
|
|
23
|
+
flexDirection: 'row',
|
|
24
|
+
justifyContent: 'flex-end',
|
|
25
|
+
alignSelf: 'center',
|
|
26
|
+
flex: 1,
|
|
27
|
+
};
|
|
28
|
+
exports.input = {
|
|
29
|
+
minWidth: 250,
|
|
30
|
+
textAlign: 'right',
|
|
31
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CircularProgress = exports.RENDER_STATUS_INDICATOR_SIZE = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const colors_1 = require("../../helpers/colors");
|
|
6
|
+
exports.RENDER_STATUS_INDICATOR_SIZE = 16;
|
|
7
|
+
const STROKE_WIDTH = 3;
|
|
8
|
+
const container = {
|
|
9
|
+
height: exports.RENDER_STATUS_INDICATOR_SIZE,
|
|
10
|
+
width: exports.RENDER_STATUS_INDICATOR_SIZE,
|
|
11
|
+
transform: `rotate(-90deg)`,
|
|
12
|
+
};
|
|
13
|
+
const CircularProgress = ({ progress }) => {
|
|
14
|
+
const r = exports.RENDER_STATUS_INDICATOR_SIZE / 2 - STROKE_WIDTH;
|
|
15
|
+
const circumference = r * Math.PI * 2;
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)("svg", { style: container, viewBox: `0 0 ${exports.RENDER_STATUS_INDICATOR_SIZE} ${exports.RENDER_STATUS_INDICATOR_SIZE}`, children: (0, jsx_runtime_1.jsx)("circle", { r: exports.RENDER_STATUS_INDICATOR_SIZE / 2 - STROKE_WIDTH, stroke: colors_1.LIGHT_TEXT, fill: "none", strokeWidth: STROKE_WIDTH, cx: exports.RENDER_STATUS_INDICATOR_SIZE / 2, cy: exports.RENDER_STATUS_INDICATOR_SIZE / 2, strokeDasharray: `${circumference} ${circumference}`, strokeMiterlimit: 0, strokeDashoffset: (1 - progress) * circumference }) }));
|
|
17
|
+
};
|
|
18
|
+
exports.CircularProgress = CircularProgress;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueueError = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const modals_1 = require("../../state/modals");
|
|
7
|
+
const z_index_1 = require("../../state/z-index");
|
|
8
|
+
const item_style_1 = require("./item-style");
|
|
9
|
+
const outputLocation = {
|
|
10
|
+
...item_style_1.renderQueueItemSubtitleStyle,
|
|
11
|
+
};
|
|
12
|
+
const RenderQueueError = ({ job }) => {
|
|
13
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
14
|
+
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
15
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
16
|
+
setSelectedModal({
|
|
17
|
+
type: 'render-error',
|
|
18
|
+
job,
|
|
19
|
+
});
|
|
20
|
+
}, [job, setSelectedModal]);
|
|
21
|
+
if (job.status !== 'failed') {
|
|
22
|
+
throw new Error('should not have rendered this component');
|
|
23
|
+
}
|
|
24
|
+
return ((0, jsx_runtime_1.jsx)("button", { onClick: onClick, type: "button", style: outputLocation, tabIndex: tabIndex, title: job.error.message, children: job.error.message }));
|
|
25
|
+
};
|
|
26
|
+
exports.RenderQueueError = RenderQueueError;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueueItem = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const layout_1 = require("../layout");
|
|
6
|
+
const RenderQueueError_1 = require("./RenderQueueError");
|
|
7
|
+
const RenderQueueItemCancelButton_1 = require("./RenderQueueItemCancelButton");
|
|
8
|
+
const RenderQueueItemStatus_1 = require("./RenderQueueItemStatus");
|
|
9
|
+
const RenderQueueOpenInFolder_1 = require("./RenderQueueOpenInFolder");
|
|
10
|
+
const RenderQueueOutputName_1 = require("./RenderQueueOutputName");
|
|
11
|
+
const RenderQueueProgressMessage_1 = require("./RenderQueueProgressMessage");
|
|
12
|
+
const RenderQueueRemoveItem_1 = require("./RenderQueueRemoveItem");
|
|
13
|
+
const RenderQueueRepeat_1 = require("./RenderQueueRepeat");
|
|
14
|
+
const container = {
|
|
15
|
+
padding: 12,
|
|
16
|
+
display: 'flex',
|
|
17
|
+
flexDirection: 'row',
|
|
18
|
+
paddingBottom: 10,
|
|
19
|
+
paddingRight: 4,
|
|
20
|
+
};
|
|
21
|
+
const title = {
|
|
22
|
+
fontSize: 13,
|
|
23
|
+
lineHeight: 1,
|
|
24
|
+
};
|
|
25
|
+
const right = {
|
|
26
|
+
flex: 1,
|
|
27
|
+
display: 'flex',
|
|
28
|
+
flexDirection: 'column',
|
|
29
|
+
overflow: 'hidden',
|
|
30
|
+
};
|
|
31
|
+
const subtitle = {
|
|
32
|
+
maxWidth: '100%',
|
|
33
|
+
flex: 1,
|
|
34
|
+
display: 'flex',
|
|
35
|
+
overflow: 'hidden',
|
|
36
|
+
};
|
|
37
|
+
const RenderQueueItem = ({ job }) => {
|
|
38
|
+
return ((0, jsx_runtime_1.jsxs)(layout_1.Row, { style: container, align: "center", children: [(0, jsx_runtime_1.jsx)(RenderQueueItemStatus_1.RenderQueueItemStatus, { job: job }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), (0, jsx_runtime_1.jsxs)("div", { style: right, children: [(0, jsx_runtime_1.jsx)("div", { style: title, children: job.compositionId }), (0, jsx_runtime_1.jsx)("div", { style: subtitle, children: job.status === 'done' ? ((0, jsx_runtime_1.jsx)(RenderQueueOutputName_1.RenderQueueOutputName, { job: job })) : job.status === 'failed' ? ((0, jsx_runtime_1.jsx)(RenderQueueError_1.RenderQueueError, { job: job })) : job.status === 'running' ? ((0, jsx_runtime_1.jsx)(RenderQueueProgressMessage_1.RenderQueueProgressMessage, { job: job })) : null })] }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), job.status === 'done' || job.status === 'failed' ? ((0, jsx_runtime_1.jsx)(RenderQueueRepeat_1.RenderQueueRepeatItem, { job: job })) : null, job.status === 'running' ? ((0, jsx_runtime_1.jsx)(RenderQueueItemCancelButton_1.RenderQueueCancelButton, { job: job })) : ((0, jsx_runtime_1.jsx)(RenderQueueRemoveItem_1.RenderQueueRemoveItem, { job: job })), job.status === 'done' ? (0, jsx_runtime_1.jsx)(RenderQueueOpenInFolder_1.RenderQueueOpenInFinderItem, { job: job }) : null] }));
|
|
39
|
+
};
|
|
40
|
+
exports.RenderQueueItem = RenderQueueItem;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueueCancelButton = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const InlineAction_1 = require("../InlineAction");
|
|
7
|
+
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
8
|
+
const actions_1 = require("./actions");
|
|
9
|
+
const RenderQueueCancelButton = ({ job }) => {
|
|
10
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
11
|
+
(0, actions_1.cancelRenderJob)(job).catch((err) => {
|
|
12
|
+
(0, NotificationCenter_1.sendErrorNotification)(`Could not cancel job: ${err.message}`);
|
|
13
|
+
});
|
|
14
|
+
}, [job]);
|
|
15
|
+
const icon = (0, react_1.useMemo)(() => {
|
|
16
|
+
return {
|
|
17
|
+
height: 14,
|
|
18
|
+
};
|
|
19
|
+
}, []);
|
|
20
|
+
return ((0, jsx_runtime_1.jsx)(InlineAction_1.InlineAction, { onClick: onClick, children: (0, jsx_runtime_1.jsx)("svg", { style: icon, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", children: (0, jsx_runtime_1.jsx)("path", { fill: "currentcolor", d: "M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z" }) }) }));
|
|
21
|
+
};
|
|
22
|
+
exports.RenderQueueCancelButton = RenderQueueCancelButton;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueueItemStatus = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const colors_1 = require("../../helpers/colors");
|
|
6
|
+
const CircularProgress_1 = require("./CircularProgress");
|
|
7
|
+
const iconStyle = {
|
|
8
|
+
height: CircularProgress_1.RENDER_STATUS_INDICATOR_SIZE,
|
|
9
|
+
width: CircularProgress_1.RENDER_STATUS_INDICATOR_SIZE,
|
|
10
|
+
};
|
|
11
|
+
const RenderQueueItemStatus = ({ job }) => {
|
|
12
|
+
if (job.status === 'failed') {
|
|
13
|
+
return ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("svg", { style: iconStyle, viewBox: "0 0 512 512", children: (0, jsx_runtime_1.jsx)("path", { fill: colors_1.FAIL_COLOR, d: "M0 160V352L160 512H352L512 352V160L352 0H160L0 160zm353.9 32l-17 17-47 47 47 47 17 17L320 353.9l-17-17-47-47-47 47-17 17L158.1 320l17-17 47-47-47-47-17-17L192 158.1l17 17 47 47 47-47 17-17L353.9 192z" }) }) }));
|
|
14
|
+
}
|
|
15
|
+
if (job.status === 'idle') {
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)("svg", { style: iconStyle, viewBox: "0 0 512 512", children: (0, jsx_runtime_1.jsx)("path", { fill: colors_1.LIGHT_TEXT, d: "M256 512C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z" }) }));
|
|
17
|
+
}
|
|
18
|
+
if (job.status === 'done') {
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("svg", { style: iconStyle, viewBox: "0 0 512 512", children: (0, jsx_runtime_1.jsx)("path", { fill: colors_1.LIGHT_TEXT, d: "M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM369 209L241 337l-17 17-17-17-64-64-17-17L160 222.1l17 17 47 47L335 175l17-17L385.9 192l-17 17z" }) }));
|
|
20
|
+
}
|
|
21
|
+
if (job.status === 'running') {
|
|
22
|
+
// Add a minimum progress to avoid the progress bar from disappearing
|
|
23
|
+
return (0, jsx_runtime_1.jsx)(CircularProgress_1.CircularProgress, { progress: Math.max(0.07, job.progress) });
|
|
24
|
+
}
|
|
25
|
+
throw new Error('Unknown job status');
|
|
26
|
+
};
|
|
27
|
+
exports.RenderQueueItemStatus = RenderQueueItemStatus;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueueOpenInFinderItem = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const InlineAction_1 = require("../InlineAction");
|
|
7
|
+
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
8
|
+
const actions_1 = require("./actions");
|
|
9
|
+
const RenderQueueOpenInFinderItem = ({ job, }) => {
|
|
10
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
11
|
+
(0, actions_1.openInFileExplorer)({ directory: job.outName }).catch((err) => {
|
|
12
|
+
(0, NotificationCenter_1.sendErrorNotification)(`Could not open file: ${err.message}`);
|
|
13
|
+
});
|
|
14
|
+
}, [job.outName]);
|
|
15
|
+
const icon = (0, react_1.useMemo)(() => {
|
|
16
|
+
return {
|
|
17
|
+
height: 12,
|
|
18
|
+
};
|
|
19
|
+
}, []);
|
|
20
|
+
return ((0, jsx_runtime_1.jsx)(InlineAction_1.InlineAction, { onClick: onClick, children: (0, jsx_runtime_1.jsx)("svg", { style: icon, viewBox: "0 0 576 512", children: (0, jsx_runtime_1.jsx)("path", { fill: "currentcolor", d: "M384 480h48c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224H144c-11.4 0-21.9 6-27.6 15.9L48 357.1V96c0-8.8 7.2-16 16-16H181.5c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8H416c8.8 0 16 7.2 16 16v32h48V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H87.7 384z" }) }) }));
|
|
21
|
+
};
|
|
22
|
+
exports.RenderQueueOpenInFinderItem = RenderQueueOpenInFinderItem;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueueOutputName = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
7
|
+
const actions_1 = require("./actions");
|
|
8
|
+
const item_style_1 = require("./item-style");
|
|
9
|
+
const RenderQueueOutputName = ({ job }) => {
|
|
10
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
11
|
+
(0, actions_1.openInFileExplorer)({ directory: job.outName }).catch((err) => {
|
|
12
|
+
(0, NotificationCenter_1.sendErrorNotification)(`Could not open file: ${err.message}`);
|
|
13
|
+
});
|
|
14
|
+
}, [job.outName]);
|
|
15
|
+
const style = (0, react_1.useMemo)(() => {
|
|
16
|
+
return {
|
|
17
|
+
...item_style_1.renderQueueItemSubtitleStyle,
|
|
18
|
+
cursor: job.deletedOutputLocation ? 'inherit' : 'pointer',
|
|
19
|
+
textDecoration: job.deletedOutputLocation ? 'line-through' : 'none',
|
|
20
|
+
};
|
|
21
|
+
}, [job.deletedOutputLocation]);
|
|
22
|
+
return ((0, jsx_runtime_1.jsx)("button", { onClick: onClick, type: "button", style: style, disabled: job.deletedOutputLocation, title: job.deletedOutputLocation ? 'File was deleted' : job.outName, children: job.outName }));
|
|
23
|
+
};
|
|
24
|
+
exports.RenderQueueOutputName = RenderQueueOutputName;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueueProgressMessage = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const modals_1 = require("../../state/modals");
|
|
7
|
+
const z_index_1 = require("../../state/z-index");
|
|
8
|
+
const item_style_1 = require("./item-style");
|
|
9
|
+
const outputLocation = {
|
|
10
|
+
...item_style_1.renderQueueItemSubtitleStyle,
|
|
11
|
+
};
|
|
12
|
+
const RenderQueueProgressMessage = ({ job }) => {
|
|
13
|
+
if (job.status !== 'running') {
|
|
14
|
+
throw new Error('should not have rendered this component');
|
|
15
|
+
}
|
|
16
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
17
|
+
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
18
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
19
|
+
// TODO: Show progress instead
|
|
20
|
+
setSelectedModal({
|
|
21
|
+
type: 'render-error',
|
|
22
|
+
job,
|
|
23
|
+
});
|
|
24
|
+
}, [job, setSelectedModal]);
|
|
25
|
+
return ((0, jsx_runtime_1.jsx)("button", { onClick: onClick, type: "button", style: outputLocation, tabIndex: tabIndex, title: job.message, children: job.message }));
|
|
26
|
+
};
|
|
27
|
+
exports.RenderQueueProgressMessage = RenderQueueProgressMessage;
|