@remotion/cli 3.3.11 → 3.3.13
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/chromium-flags.d.ts +0 -2
- package/dist/config/chromium-flags.js +1 -8
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -2
- package/dist/config/log.d.ts +1 -1
- package/dist/editor/components/RenderButton.d.ts +6 -0
- package/dist/editor/components/RenderButton.js +53 -0
- package/dist/editor/components/RenderModal/RenderModal.d.ts +5 -0
- package/dist/editor/components/RenderModal/RenderModal.js +90 -0
- package/dist/editor/components/RenderQueue/RenderQueueItem.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueItem.js +25 -0
- package/dist/editor/components/RenderQueue/RenderQueueItemStatus.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueItemStatus.js +19 -0
- package/dist/editor/components/RenderQueue/RenderQueueOutputName.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueOutputName.js +70 -0
- package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.d.ts +5 -0
- package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +56 -0
- package/dist/editor/components/RenderQueue/context.d.ts +18 -0
- package/dist/editor/components/RenderQueue/context.js +49 -0
- package/dist/editor/components/RenderQueue/index.d.ts +2 -0
- package/dist/editor/components/RenderQueue/index.js +18 -0
- package/dist/editor/components/RendersTab.d.ts +6 -0
- package/dist/editor/components/RendersTab.js +40 -0
- package/dist/editor/components/SidebarContent.d.ts +5 -0
- package/dist/editor/components/SidebarContent.js +34 -0
- package/dist/editor/components/Tabs/index.d.ts +11 -0
- package/dist/editor/components/Tabs/index.js +49 -0
- package/dist/editor/icons/render.d.ts +6 -0
- package/dist/editor/icons/render.js +8 -0
- package/dist/find-closest-package-json.d.ts +2 -0
- package/dist/find-closest-package-json.js +35 -0
- package/dist/get-cli-options.d.ts +1 -1
- package/dist/get-cli-options.js +0 -1
- package/dist/get-default-out-name.d.ts +4 -0
- package/dist/get-default-out-name.js +8 -0
- package/dist/index.d.ts +1 -1
- package/dist/parse-command-line.d.ts +0 -1
- package/dist/parse-command-line.js +0 -3
- package/dist/preview-server/get-absolute-public-dir.d.ts +4 -0
- package/dist/preview-server/get-absolute-public-dir.js +14 -0
- package/dist/preview-server/get-files-in-public-folder.d.ts +2 -0
- package/dist/preview-server/get-files-in-public-folder.js +7 -0
- package/dist/preview-server/live-event-listener.d.ts +0 -0
- package/dist/preview-server/live-event-listener.js +1 -0
- package/dist/preview-server/parse-body.d.ts +2 -0
- package/dist/preview-server/parse-body.js +16 -0
- package/dist/preview-server/public-folder.d.ts +12 -0
- package/dist/preview-server/public-folder.js +39 -0
- package/dist/preview-server/render-queue/add-render.d.ts +2 -0
- package/dist/preview-server/render-queue/add-render.js +39 -0
- package/dist/preview-server/render-queue/index.d.ts +7 -0
- package/dist/preview-server/render-queue/index.js +105 -0
- package/dist/preview-server/render-queue/job.d.ts +29 -0
- package/dist/preview-server/render-queue/job.js +2 -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 +32 -0
- package/dist/preview-server/render-queue/open-in-file-explorer.d.ts +2 -0
- package/dist/preview-server/render-queue/open-in-file-explorer.js +30 -0
- package/dist/preview-server/render-queue/remove-render.d.ts +2 -0
- package/dist/preview-server/render-queue/remove-render.js +28 -0
- package/dist/preview-server/write-files-definition-file.d.ts +2 -0
- package/dist/preview-server/write-files-definition-file.js +37 -0
- package/package.json +7 -7
|
@@ -7,5 +7,3 @@ export declare const getChromiumOpenGlRenderer: () => "swangle" | "angle" | "egl
|
|
|
7
7
|
export declare const setChromiumOpenGlRenderer: (renderer: OpenGlRenderer) => void;
|
|
8
8
|
export declare const getChromiumHeadlessMode: () => boolean;
|
|
9
9
|
export declare const setChromiumHeadlessMode: (should: boolean) => void;
|
|
10
|
-
export declare const getChromiumEnableExtensions: () => boolean;
|
|
11
|
-
export declare const setEnableChromiumExtensions: (should: boolean) => void;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.setChromiumHeadlessMode = exports.getChromiumHeadlessMode = exports.setChromiumOpenGlRenderer = exports.getChromiumOpenGlRenderer = exports.setChromiumIgnoreCertificateErrors = exports.getIgnoreCertificateErrors = exports.setChromiumDisableWebSecurity = exports.getChromiumDisableWebSecurity = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
5
5
|
let chromiumDisableWebSecurity = false;
|
|
6
6
|
let ignoreCertificateErrors = false;
|
|
7
7
|
let openGlRenderer = renderer_1.RenderInternals.DEFAULT_OPENGL_RENDERER;
|
|
8
8
|
let headlessMode = true;
|
|
9
|
-
let enableExtensions = false;
|
|
10
9
|
const getChromiumDisableWebSecurity = () => chromiumDisableWebSecurity;
|
|
11
10
|
exports.getChromiumDisableWebSecurity = getChromiumDisableWebSecurity;
|
|
12
11
|
const setChromiumDisableWebSecurity = (should) => {
|
|
@@ -32,9 +31,3 @@ const setChromiumHeadlessMode = (should) => {
|
|
|
32
31
|
headlessMode = should;
|
|
33
32
|
};
|
|
34
33
|
exports.setChromiumHeadlessMode = setChromiumHeadlessMode;
|
|
35
|
-
const getChromiumEnableExtensions = () => enableExtensions;
|
|
36
|
-
exports.getChromiumEnableExtensions = getChromiumEnableExtensions;
|
|
37
|
-
const setEnableChromiumExtensions = (should) => {
|
|
38
|
-
enableExtensions = should;
|
|
39
|
-
};
|
|
40
|
-
exports.setEnableChromiumExtensions = setEnableChromiumExtensions;
|
package/dist/config/index.d.ts
CHANGED
|
@@ -23,7 +23,6 @@ export declare const ConfigInternals: {
|
|
|
23
23
|
getIgnoreCertificateErrors: () => boolean;
|
|
24
24
|
getChromiumHeadlessMode: () => boolean;
|
|
25
25
|
getChromiumOpenGlRenderer: () => "swangle" | "angle" | "egl" | "swiftshader" | null;
|
|
26
|
-
getChromiumEnableExtensions: () => boolean;
|
|
27
26
|
getEveryNthFrame: () => number;
|
|
28
27
|
getConcurrency: () => number | null;
|
|
29
28
|
getCurrentPuppeteerTimeout: () => number;
|
package/dist/config/index.js
CHANGED
|
@@ -107,7 +107,6 @@ exports.Config = {
|
|
|
107
107
|
setChromiumDisableWebSecurity: chromium_flags_2.setChromiumDisableWebSecurity,
|
|
108
108
|
setChromiumIgnoreCertificateErrors: chromium_flags_2.setChromiumIgnoreCertificateErrors,
|
|
109
109
|
setChromiumHeadlessMode: chromium_flags_2.setChromiumHeadlessMode,
|
|
110
|
-
setEnableChromiumExtensions: chromium_flags_1.setEnableChromiumExtensions,
|
|
111
110
|
setChromiumOpenGlRenderer: chromium_flags_2.setChromiumOpenGlRenderer,
|
|
112
111
|
},
|
|
113
112
|
Rendering: {
|
|
@@ -157,7 +156,6 @@ exports.ConfigInternals = {
|
|
|
157
156
|
getIgnoreCertificateErrors: chromium_flags_1.getIgnoreCertificateErrors,
|
|
158
157
|
getChromiumHeadlessMode: chromium_flags_1.getChromiumHeadlessMode,
|
|
159
158
|
getChromiumOpenGlRenderer: chromium_flags_1.getChromiumOpenGlRenderer,
|
|
160
|
-
getChromiumEnableExtensions: chromium_flags_1.getChromiumEnableExtensions,
|
|
161
159
|
getEveryNthFrame: every_nth_frame_1.getEveryNthFrame,
|
|
162
160
|
getConcurrency: concurrency_1.getConcurrency,
|
|
163
161
|
getCurrentPuppeteerTimeout: timeout_1.getCurrentPuppeteerTimeout,
|
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" | "info" | "warn" | "error";
|
|
3
3
|
export declare const setLogLevel: (newLogLevel: LogLevel) => void;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderButton = exports.COMPOSITION_ITEM_HEIGHT = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const colors_1 = require("../helpers/colors");
|
|
7
|
+
const render_1 = require("../icons/render");
|
|
8
|
+
const modals_1 = require("../state/modals");
|
|
9
|
+
const z_index_1 = require("../state/z-index");
|
|
10
|
+
exports.COMPOSITION_ITEM_HEIGHT = 32;
|
|
11
|
+
const itemStyle = {
|
|
12
|
+
display: 'flex',
|
|
13
|
+
cursor: 'default',
|
|
14
|
+
alignItems: 'center',
|
|
15
|
+
justifyContent: 'center',
|
|
16
|
+
marginBottom: 1,
|
|
17
|
+
appearance: 'none',
|
|
18
|
+
border: 'none',
|
|
19
|
+
height: exports.COMPOSITION_ITEM_HEIGHT,
|
|
20
|
+
};
|
|
21
|
+
const RenderButton = ({ composition }) => {
|
|
22
|
+
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
23
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
24
|
+
const onPointerEnter = (0, react_1.useCallback)(() => {
|
|
25
|
+
setHovered(true);
|
|
26
|
+
}, []);
|
|
27
|
+
const onPointerLeave = (0, react_1.useCallback)(() => {
|
|
28
|
+
setHovered(false);
|
|
29
|
+
}, []);
|
|
30
|
+
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
31
|
+
const style = (0, react_1.useMemo)(() => {
|
|
32
|
+
return {
|
|
33
|
+
...itemStyle,
|
|
34
|
+
backgroundColor: hovered ? colors_1.CLEAR_HOVER : 'transparent',
|
|
35
|
+
color: hovered ? 'white' : colors_1.LIGHT_TEXT,
|
|
36
|
+
};
|
|
37
|
+
}, [hovered]);
|
|
38
|
+
const iconStyle = (0, react_1.useMemo)(() => {
|
|
39
|
+
return {
|
|
40
|
+
style: {
|
|
41
|
+
height: 14,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}, []);
|
|
45
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
46
|
+
setSelectedModal({
|
|
47
|
+
type: 'render',
|
|
48
|
+
composition,
|
|
49
|
+
});
|
|
50
|
+
}, [composition, setSelectedModal]);
|
|
51
|
+
return ((0, jsx_runtime_1.jsx)("button", { style: style, tabIndex: tabIndex, onClick: onClick, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, type: "button", children: (0, jsx_runtime_1.jsx)(render_1.RenderIcon, { svgProps: iconStyle, color: hovered ? 'white' : colors_1.LIGHT_TEXT }) }));
|
|
52
|
+
};
|
|
53
|
+
exports.RenderButton = RenderButton;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderModal = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const get_default_out_name_1 = require("../../../get-default-out-name");
|
|
7
|
+
const Button_1 = require("../../../preview-server/error-overlay/remotion-overlay/Button");
|
|
8
|
+
const modals_1 = require("../../state/modals");
|
|
9
|
+
const layout_1 = require("../layout");
|
|
10
|
+
const ModalContainer_1 = require("../ModalContainer");
|
|
11
|
+
const ModalHeader_1 = require("../ModalHeader");
|
|
12
|
+
const RemInput_1 = require("../NewComposition/RemInput");
|
|
13
|
+
const SidebarContent_1 = require("../SidebarContent");
|
|
14
|
+
const initialState = { type: 'idle' };
|
|
15
|
+
const reducer = (state, action) => {
|
|
16
|
+
if (action.type === 'start') {
|
|
17
|
+
return {
|
|
18
|
+
type: 'load',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (action.type === 'fail') {
|
|
22
|
+
return {
|
|
23
|
+
type: 'error',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if (action.type === 'succeed') {
|
|
27
|
+
return {
|
|
28
|
+
type: 'success',
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return state;
|
|
32
|
+
};
|
|
33
|
+
const container = {
|
|
34
|
+
padding: 20,
|
|
35
|
+
};
|
|
36
|
+
const RenderModal = ({ composition, }) => {
|
|
37
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
38
|
+
const onQuit = (0, react_1.useCallback)(() => {
|
|
39
|
+
setSelectedModal(null);
|
|
40
|
+
}, [setSelectedModal]);
|
|
41
|
+
const isMounted = (0, react_1.useRef)(true);
|
|
42
|
+
const [state, dispatch] = (0, react_1.useReducer)(reducer, initialState);
|
|
43
|
+
// TODO: Allow to change out name
|
|
44
|
+
const [outName] = (0, react_1.useState)(() => (0, get_default_out_name_1.getDefaultOutLocation)({
|
|
45
|
+
compositionName: composition.id,
|
|
46
|
+
// TODO: Set default extension
|
|
47
|
+
defaultExtension: 'png',
|
|
48
|
+
}));
|
|
49
|
+
const dispatchIfMounted = (0, react_1.useCallback)((payload) => {
|
|
50
|
+
if (isMounted.current === false)
|
|
51
|
+
return;
|
|
52
|
+
dispatch(payload);
|
|
53
|
+
}, []);
|
|
54
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
55
|
+
var _a;
|
|
56
|
+
const body = {
|
|
57
|
+
compositionId: composition.id,
|
|
58
|
+
type: 'still',
|
|
59
|
+
outName,
|
|
60
|
+
};
|
|
61
|
+
(_a = SidebarContent_1.leftSidebarTabs.current) === null || _a === void 0 ? void 0 : _a.selectRendersPanel();
|
|
62
|
+
fetch(`/api/render`, {
|
|
63
|
+
method: 'post',
|
|
64
|
+
headers: {
|
|
65
|
+
'content-type': 'application/json',
|
|
66
|
+
},
|
|
67
|
+
body: JSON.stringify(body),
|
|
68
|
+
})
|
|
69
|
+
.then((res) => res.json())
|
|
70
|
+
.then((data) => {
|
|
71
|
+
if (data.success) {
|
|
72
|
+
dispatchIfMounted({ type: 'succeed' });
|
|
73
|
+
setSelectedModal(null);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
dispatchIfMounted({ type: 'fail' });
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
.catch(() => {
|
|
80
|
+
dispatchIfMounted({ type: 'fail' });
|
|
81
|
+
});
|
|
82
|
+
}, [composition.id, dispatchIfMounted, outName, setSelectedModal]);
|
|
83
|
+
(0, react_1.useEffect)(() => {
|
|
84
|
+
return () => {
|
|
85
|
+
isMounted.current = false;
|
|
86
|
+
};
|
|
87
|
+
}, []);
|
|
88
|
+
return ((0, jsx_runtime_1.jsxs)(ModalContainer_1.ModalContainer, { onOutsideClick: onQuit, onEscape: onQuit, children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.NewCompHeader, { title: `Render ${composition.id}` }), (0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(RemInput_1.RemotionInput, { type: "text", value: outName }) }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { block: true, y: 0.5 }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: onClick, disabled: state.type === 'load', children: state.type === 'idle' ? 'Render' : 'Rendering...' }) })] })] }));
|
|
89
|
+
};
|
|
90
|
+
exports.RenderModal = RenderModal;
|
|
@@ -0,0 +1,25 @@
|
|
|
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 RenderQueueItemStatus_1 = require("./RenderQueueItemStatus");
|
|
7
|
+
const RenderQueueOutputName_1 = require("./RenderQueueOutputName");
|
|
8
|
+
const RenderQueueRemoveItem_1 = require("./RenderQueueRemoveItem");
|
|
9
|
+
const container = {
|
|
10
|
+
padding: 12,
|
|
11
|
+
display: 'flex',
|
|
12
|
+
flexDirection: 'row',
|
|
13
|
+
paddingBottom: 10,
|
|
14
|
+
};
|
|
15
|
+
const title = {
|
|
16
|
+
fontSize: 13,
|
|
17
|
+
lineHeight: 1,
|
|
18
|
+
};
|
|
19
|
+
const right = {
|
|
20
|
+
flex: 1,
|
|
21
|
+
};
|
|
22
|
+
const RenderQueueItem = ({ job }) => {
|
|
23
|
+
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)(RenderQueueOutputName_1.RenderQueueOutputName, { job: job })] }), (0, jsx_runtime_1.jsx)(RenderQueueRemoveItem_1.RenderQueueRemoveItem, { job: job })] }));
|
|
24
|
+
};
|
|
25
|
+
exports.RenderQueueItem = RenderQueueItem;
|
|
@@ -0,0 +1,19 @@
|
|
|
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 iconStyle = {
|
|
7
|
+
height: 16,
|
|
8
|
+
width: 16,
|
|
9
|
+
};
|
|
10
|
+
const RenderQueueItemStatus = ({ job }) => {
|
|
11
|
+
if (job.status === 'failed') {
|
|
12
|
+
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" }) }) }));
|
|
13
|
+
}
|
|
14
|
+
if (job.status === 'idle') {
|
|
15
|
+
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" }) }));
|
|
16
|
+
}
|
|
17
|
+
return (0, jsx_runtime_1.jsx)("div", { children: job.status });
|
|
18
|
+
};
|
|
19
|
+
exports.RenderQueueItemStatus = RenderQueueItemStatus;
|
|
@@ -0,0 +1,70 @@
|
|
|
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 colors_1 = require("../../helpers/colors");
|
|
7
|
+
const layout_1 = require("../layout");
|
|
8
|
+
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
9
|
+
const outputLocation = {
|
|
10
|
+
fontSize: 13,
|
|
11
|
+
color: colors_1.LIGHT_TEXT,
|
|
12
|
+
appearance: 'none',
|
|
13
|
+
border: 'none',
|
|
14
|
+
padding: 0,
|
|
15
|
+
cursor: 'pointer',
|
|
16
|
+
lineHeight: 1,
|
|
17
|
+
textAlign: 'left',
|
|
18
|
+
whiteSpace: 'nowrap',
|
|
19
|
+
marginRight: layout_1.SPACING_UNIT,
|
|
20
|
+
};
|
|
21
|
+
const formatOutputLocation = (location) => {
|
|
22
|
+
if (location.startsWith(window.remotion_cwd)) {
|
|
23
|
+
const out = location.substring(window.remotion_cwd.length);
|
|
24
|
+
if (out.startsWith('/') || out.startsWith('\\')) {
|
|
25
|
+
return out.substring(1);
|
|
26
|
+
}
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
return location;
|
|
30
|
+
};
|
|
31
|
+
const RenderQueueOutputName = ({ job }) => {
|
|
32
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
33
|
+
const body = {
|
|
34
|
+
directory: job.outputLocation,
|
|
35
|
+
};
|
|
36
|
+
fetch(`/api/open-in-file-explorer`, {
|
|
37
|
+
method: 'post',
|
|
38
|
+
headers: {
|
|
39
|
+
'content-type': 'application/json',
|
|
40
|
+
},
|
|
41
|
+
body: JSON.stringify(body),
|
|
42
|
+
})
|
|
43
|
+
.then((res) => res.json())
|
|
44
|
+
.then((data) => {
|
|
45
|
+
var _a;
|
|
46
|
+
if (data.success) {
|
|
47
|
+
console.log('Opened file in explorer');
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
(_a = NotificationCenter_1.notificationCenter.current) === null || _a === void 0 ? void 0 : _a.addNotification({
|
|
51
|
+
content: `Could not open file: ${data.error}`,
|
|
52
|
+
created: Date.now(),
|
|
53
|
+
duration: 2000,
|
|
54
|
+
id: String(Math.random()),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
.catch((err) => {
|
|
59
|
+
var _a;
|
|
60
|
+
(_a = NotificationCenter_1.notificationCenter.current) === null || _a === void 0 ? void 0 : _a.addNotification({
|
|
61
|
+
content: `Could not open file: ${err.message}`,
|
|
62
|
+
created: Date.now(),
|
|
63
|
+
duration: 2000,
|
|
64
|
+
id: String(Math.random()),
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}, [job.outputLocation]);
|
|
68
|
+
return ((0, jsx_runtime_1.jsx)("button", { onClick: onClick, type: "button", style: outputLocation, title: job.outputLocation, children: formatOutputLocation(job.outputLocation) }));
|
|
69
|
+
};
|
|
70
|
+
exports.RenderQueueOutputName = RenderQueueOutputName;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueueRemoveItem = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const colors_1 = require("../../helpers/colors");
|
|
7
|
+
const RenderQueueRemoveItem = ({ job }) => {
|
|
8
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
9
|
+
const body = {
|
|
10
|
+
jobId: job.id,
|
|
11
|
+
};
|
|
12
|
+
fetch(`/api/remove-render`, {
|
|
13
|
+
method: 'post',
|
|
14
|
+
headers: {
|
|
15
|
+
'content-type': 'application/json',
|
|
16
|
+
},
|
|
17
|
+
body: JSON.stringify(body),
|
|
18
|
+
})
|
|
19
|
+
.then((res) => res.json())
|
|
20
|
+
.then((data) => {
|
|
21
|
+
if (!data.success) {
|
|
22
|
+
// TODO: Handle error
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
.catch(() => {
|
|
26
|
+
// TODO: Handle error
|
|
27
|
+
});
|
|
28
|
+
}, [job.id]);
|
|
29
|
+
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
30
|
+
const icon = (0, react_1.useMemo)(() => {
|
|
31
|
+
return {
|
|
32
|
+
height: 12,
|
|
33
|
+
};
|
|
34
|
+
}, []);
|
|
35
|
+
const onPointerEnter = (0, react_1.useCallback)(() => {
|
|
36
|
+
setHovered(true);
|
|
37
|
+
}, []);
|
|
38
|
+
const onPointerLeave = (0, react_1.useCallback)(() => {
|
|
39
|
+
setHovered(false);
|
|
40
|
+
}, []);
|
|
41
|
+
const style = (0, react_1.useMemo)(() => {
|
|
42
|
+
return {
|
|
43
|
+
border: 'none',
|
|
44
|
+
background: hovered ? colors_1.CLEAR_HOVER : 'transparent',
|
|
45
|
+
height: 24,
|
|
46
|
+
width: 24,
|
|
47
|
+
display: 'inline-flex',
|
|
48
|
+
justifyContent: 'center',
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
borderRadius: 3,
|
|
51
|
+
cursor: 'pointer',
|
|
52
|
+
};
|
|
53
|
+
}, [hovered]);
|
|
54
|
+
return ((0, jsx_runtime_1.jsx)("button", { onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, type: "button", onClick: onClick, style: style, children: (0, jsx_runtime_1.jsx)("svg", { style: icon, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", children: (0, jsx_runtime_1.jsx)("path", { fill: hovered ? 'white' : colors_1.LIGHT_TEXT, d: "M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z" }) }) }));
|
|
55
|
+
};
|
|
56
|
+
exports.RenderQueueRemoveItem = RenderQueueRemoveItem;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { RenderJob } from '../../../preview-server/render-queue/job';
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
remotion_initialRenderQueue: RenderJob[];
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
declare type RenderQueueContextType = {
|
|
9
|
+
jobs: RenderJob[];
|
|
10
|
+
};
|
|
11
|
+
export declare const RenderQueueContext: React.Context<RenderQueueContextType>;
|
|
12
|
+
export declare const renderJobsRef: React.RefObject<{
|
|
13
|
+
updateRenderJobs: (jobs: RenderJob[]) => void;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const RenderQueueContextProvider: React.FC<{
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
}>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.RenderQueueContextProvider = exports.renderJobsRef = exports.RenderQueueContext = void 0;
|
|
27
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
28
|
+
const react_1 = __importStar(require("react"));
|
|
29
|
+
exports.RenderQueueContext = react_1.default.createContext({
|
|
30
|
+
jobs: [],
|
|
31
|
+
});
|
|
32
|
+
exports.renderJobsRef = (0, react_1.createRef)();
|
|
33
|
+
const RenderQueueContextProvider = ({ children }) => {
|
|
34
|
+
const [jobs, setJobs] = (0, react_1.useState)(window.remotion_initialRenderQueue);
|
|
35
|
+
const value = (0, react_1.useMemo)(() => {
|
|
36
|
+
return {
|
|
37
|
+
jobs,
|
|
38
|
+
};
|
|
39
|
+
}, [jobs]);
|
|
40
|
+
(0, react_1.useImperativeHandle)(exports.renderJobsRef, () => {
|
|
41
|
+
return {
|
|
42
|
+
updateRenderJobs: (newJobs) => {
|
|
43
|
+
setJobs(newJobs);
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}, []);
|
|
47
|
+
return ((0, jsx_runtime_1.jsx)(exports.RenderQueueContext.Provider, { value: value, children: children }));
|
|
48
|
+
};
|
|
49
|
+
exports.RenderQueueContextProvider = RenderQueueContextProvider;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderQueue = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const colors_1 = require("../../helpers/colors");
|
|
7
|
+
const context_1 = require("./context");
|
|
8
|
+
const RenderQueueItem_1 = require("./RenderQueueItem");
|
|
9
|
+
const separatorStyle = {
|
|
10
|
+
borderBottom: '1px solid ' + colors_1.BORDER_COLOR,
|
|
11
|
+
};
|
|
12
|
+
const RenderQueue = () => {
|
|
13
|
+
const { jobs } = (0, react_1.useContext)(context_1.RenderQueueContext);
|
|
14
|
+
return ((0, jsx_runtime_1.jsx)("div", { children: jobs.map((j, index) => {
|
|
15
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: index === jobs.length - 1 ? undefined : separatorStyle, children: (0, jsx_runtime_1.jsx)(RenderQueueItem_1.RenderQueueItem, { job: j }) }, j.id));
|
|
16
|
+
}) }));
|
|
17
|
+
};
|
|
18
|
+
exports.RenderQueue = RenderQueue;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RendersTab = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const colors_1 = require("../helpers/colors");
|
|
7
|
+
const layout_1 = require("./layout");
|
|
8
|
+
const context_1 = require("./RenderQueue/context");
|
|
9
|
+
const Tabs_1 = require("./Tabs");
|
|
10
|
+
const row = {
|
|
11
|
+
display: 'flex',
|
|
12
|
+
flexDirection: 'row',
|
|
13
|
+
fontSize: 13,
|
|
14
|
+
justifyContent: 'center',
|
|
15
|
+
color: 'inherit',
|
|
16
|
+
alignItems: 'center',
|
|
17
|
+
};
|
|
18
|
+
const badge = {
|
|
19
|
+
height: 16,
|
|
20
|
+
width: 16,
|
|
21
|
+
borderRadius: 8,
|
|
22
|
+
fontSize: 10,
|
|
23
|
+
display: 'inline-flex',
|
|
24
|
+
justifyContent: 'center',
|
|
25
|
+
alignItems: 'center',
|
|
26
|
+
};
|
|
27
|
+
const RendersTab = ({ selected, onClick }) => {
|
|
28
|
+
const { jobs } = (0, react_1.useContext)(context_1.RenderQueueContext);
|
|
29
|
+
const failedJobs = jobs.filter((j) => j.status === 'failed').length;
|
|
30
|
+
const jobCount = jobs.length;
|
|
31
|
+
const badgeStyle = (0, react_1.useMemo)(() => {
|
|
32
|
+
return {
|
|
33
|
+
...badge,
|
|
34
|
+
backgroundColor: failedJobs > 0 ? colors_1.FAIL_COLOR : 'white',
|
|
35
|
+
color: failedJobs > 0 ? 'white' : 'black',
|
|
36
|
+
};
|
|
37
|
+
}, [failedJobs]);
|
|
38
|
+
return ((0, jsx_runtime_1.jsx)(Tabs_1.Tab, { selected: selected, onClick: onClick, children: (0, jsx_runtime_1.jsxs)("div", { style: row, children: ["Renders", jobCount > 0 ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.5 }), (0, jsx_runtime_1.jsx)("div", { style: badgeStyle, children: jobCount })] })) : null] }) }));
|
|
39
|
+
};
|
|
40
|
+
exports.RendersTab = RendersTab;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SidebarContent = exports.leftSidebarTabs = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const colors_1 = require("../helpers/colors");
|
|
7
|
+
const CompositionSelector_1 = require("./CompositionSelector");
|
|
8
|
+
const RenderQueue_1 = require("./RenderQueue");
|
|
9
|
+
const RendersTab_1 = require("./RendersTab");
|
|
10
|
+
const Tabs_1 = require("./Tabs");
|
|
11
|
+
const container = {
|
|
12
|
+
width: '100%',
|
|
13
|
+
};
|
|
14
|
+
const tabsContainer = {
|
|
15
|
+
padding: 4,
|
|
16
|
+
borderBottom: `1px solid ${colors_1.BORDER_COLOR}`,
|
|
17
|
+
};
|
|
18
|
+
exports.leftSidebarTabs = (0, react_1.createRef)();
|
|
19
|
+
const SidebarContent = () => {
|
|
20
|
+
const [panel, setPanel] = (0, react_1.useState)('compositions');
|
|
21
|
+
const onCompositionsSelected = (0, react_1.useCallback)(() => {
|
|
22
|
+
setPanel('compositions');
|
|
23
|
+
}, []);
|
|
24
|
+
const onRendersSelected = (0, react_1.useCallback)(() => {
|
|
25
|
+
setPanel('renders');
|
|
26
|
+
}, []);
|
|
27
|
+
(0, react_1.useImperativeHandle)(exports.leftSidebarTabs, () => {
|
|
28
|
+
return {
|
|
29
|
+
selectRendersPanel: () => setPanel('renders'),
|
|
30
|
+
};
|
|
31
|
+
}, []);
|
|
32
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)("div", { style: tabsContainer, children: (0, jsx_runtime_1.jsxs)(Tabs_1.Tabs, { children: [(0, jsx_runtime_1.jsx)(Tabs_1.Tab, { selected: panel === 'compositions', onClick: onCompositionsSelected, children: "Compositions" }), (0, jsx_runtime_1.jsx)(RendersTab_1.RendersTab, { onClick: onRendersSelected, selected: panel === 'renders' })] }) }), panel === 'compositions' ? (0, jsx_runtime_1.jsx)(CompositionSelector_1.CompositionSelector, {}) : (0, jsx_runtime_1.jsx)(RenderQueue_1.RenderQueue, {})] }));
|
|
33
|
+
};
|
|
34
|
+
exports.SidebarContent = SidebarContent;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const Tabs: React.FC<{
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
style?: React.CSSProperties;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const Tab: React.FC<{
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
onClick: React.MouseEventHandler<HTMLButtonElement>;
|
|
9
|
+
style?: React.CSSProperties;
|
|
10
|
+
selected: boolean;
|
|
11
|
+
}>;
|