@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.
Files changed (63) hide show
  1. package/dist/config/chromium-flags.d.ts +0 -2
  2. package/dist/config/chromium-flags.js +1 -8
  3. package/dist/config/index.d.ts +0 -1
  4. package/dist/config/index.js +0 -2
  5. package/dist/config/log.d.ts +1 -1
  6. package/dist/editor/components/RenderButton.d.ts +6 -0
  7. package/dist/editor/components/RenderButton.js +53 -0
  8. package/dist/editor/components/RenderModal/RenderModal.d.ts +5 -0
  9. package/dist/editor/components/RenderModal/RenderModal.js +90 -0
  10. package/dist/editor/components/RenderQueue/RenderQueueItem.d.ts +5 -0
  11. package/dist/editor/components/RenderQueue/RenderQueueItem.js +25 -0
  12. package/dist/editor/components/RenderQueue/RenderQueueItemStatus.d.ts +5 -0
  13. package/dist/editor/components/RenderQueue/RenderQueueItemStatus.js +19 -0
  14. package/dist/editor/components/RenderQueue/RenderQueueOutputName.d.ts +5 -0
  15. package/dist/editor/components/RenderQueue/RenderQueueOutputName.js +70 -0
  16. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.d.ts +5 -0
  17. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +56 -0
  18. package/dist/editor/components/RenderQueue/context.d.ts +18 -0
  19. package/dist/editor/components/RenderQueue/context.js +49 -0
  20. package/dist/editor/components/RenderQueue/index.d.ts +2 -0
  21. package/dist/editor/components/RenderQueue/index.js +18 -0
  22. package/dist/editor/components/RendersTab.d.ts +6 -0
  23. package/dist/editor/components/RendersTab.js +40 -0
  24. package/dist/editor/components/SidebarContent.d.ts +5 -0
  25. package/dist/editor/components/SidebarContent.js +34 -0
  26. package/dist/editor/components/Tabs/index.d.ts +11 -0
  27. package/dist/editor/components/Tabs/index.js +49 -0
  28. package/dist/editor/icons/render.d.ts +6 -0
  29. package/dist/editor/icons/render.js +8 -0
  30. package/dist/find-closest-package-json.d.ts +2 -0
  31. package/dist/find-closest-package-json.js +35 -0
  32. package/dist/get-cli-options.d.ts +1 -1
  33. package/dist/get-cli-options.js +0 -1
  34. package/dist/get-default-out-name.d.ts +4 -0
  35. package/dist/get-default-out-name.js +8 -0
  36. package/dist/index.d.ts +1 -1
  37. package/dist/parse-command-line.d.ts +0 -1
  38. package/dist/parse-command-line.js +0 -3
  39. package/dist/preview-server/get-absolute-public-dir.d.ts +4 -0
  40. package/dist/preview-server/get-absolute-public-dir.js +14 -0
  41. package/dist/preview-server/get-files-in-public-folder.d.ts +2 -0
  42. package/dist/preview-server/get-files-in-public-folder.js +7 -0
  43. package/dist/preview-server/live-event-listener.d.ts +0 -0
  44. package/dist/preview-server/live-event-listener.js +1 -0
  45. package/dist/preview-server/parse-body.d.ts +2 -0
  46. package/dist/preview-server/parse-body.js +16 -0
  47. package/dist/preview-server/public-folder.d.ts +12 -0
  48. package/dist/preview-server/public-folder.js +39 -0
  49. package/dist/preview-server/render-queue/add-render.d.ts +2 -0
  50. package/dist/preview-server/render-queue/add-render.js +39 -0
  51. package/dist/preview-server/render-queue/index.d.ts +7 -0
  52. package/dist/preview-server/render-queue/index.js +105 -0
  53. package/dist/preview-server/render-queue/job.d.ts +29 -0
  54. package/dist/preview-server/render-queue/job.js +2 -0
  55. package/dist/preview-server/render-queue/open-directory-in-finder.d.ts +1 -0
  56. package/dist/preview-server/render-queue/open-directory-in-finder.js +32 -0
  57. package/dist/preview-server/render-queue/open-in-file-explorer.d.ts +2 -0
  58. package/dist/preview-server/render-queue/open-in-file-explorer.js +30 -0
  59. package/dist/preview-server/render-queue/remove-render.d.ts +2 -0
  60. package/dist/preview-server/render-queue/remove-render.js +28 -0
  61. package/dist/preview-server/write-files-definition-file.d.ts +2 -0
  62. package/dist/preview-server/write-files-definition-file.js +37 -0
  63. 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.setEnableChromiumExtensions = exports.getChromiumEnableExtensions = exports.setChromiumHeadlessMode = exports.getChromiumHeadlessMode = exports.setChromiumOpenGlRenderer = exports.getChromiumOpenGlRenderer = exports.setChromiumIgnoreCertificateErrors = exports.getIgnoreCertificateErrors = exports.setChromiumDisableWebSecurity = exports.getChromiumDisableWebSecurity = void 0;
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;
@@ -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;
@@ -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,
@@ -1,3 +1,3 @@
1
1
  import type { LogLevel } from '@remotion/renderer';
2
- export declare const getLogLevel: () => "error" | "verbose" | "info" | "warn";
2
+ export declare const getLogLevel: () => "verbose" | "info" | "warn" | "error";
3
3
  export declare const setLogLevel: (newLogLevel: LogLevel) => void;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import type { TCompMetadata } from 'remotion';
3
+ export declare const COMPOSITION_ITEM_HEIGHT = 32;
4
+ export declare const RenderButton: React.FC<{
5
+ composition: TCompMetadata;
6
+ }>;
@@ -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,5 @@
1
+ import React from 'react';
2
+ import type { TCompMetadata } from 'remotion';
3
+ export declare const RenderModal: React.FC<{
4
+ composition: TCompMetadata;
5
+ }>;
@@ -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,5 @@
1
+ import React from 'react';
2
+ import type { RenderJob } from '../../../preview-server/render-queue/job';
3
+ export declare const RenderQueueItem: React.FC<{
4
+ job: RenderJob;
5
+ }>;
@@ -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,5 @@
1
+ import React from 'react';
2
+ import type { RenderJob } from '../../../preview-server/render-queue/job';
3
+ export declare const RenderQueueItemStatus: React.FC<{
4
+ job: RenderJob;
5
+ }>;
@@ -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,5 @@
1
+ import React from 'react';
2
+ import type { RenderJob } from '../../../preview-server/render-queue/job';
3
+ export declare const RenderQueueOutputName: React.FC<{
4
+ job: RenderJob;
5
+ }>;
@@ -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,5 @@
1
+ import React from 'react';
2
+ import type { RenderJob } from '../../../preview-server/render-queue/job';
3
+ export declare const RenderQueueRemoveItem: React.FC<{
4
+ job: RenderJob;
5
+ }>;
@@ -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,2 @@
1
+ import React from 'react';
2
+ export declare const RenderQueue: React.FC;
@@ -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,6 @@
1
+ import type { MouseEventHandler } from 'react';
2
+ import React from 'react';
3
+ export declare const RendersTab: React.FC<{
4
+ selected: boolean;
5
+ onClick: MouseEventHandler<HTMLButtonElement>;
6
+ }>;
@@ -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,5 @@
1
+ import React from 'react';
2
+ export declare const leftSidebarTabs: React.RefObject<{
3
+ selectRendersPanel: () => void;
4
+ }>;
5
+ export declare const SidebarContent: React.FC;
@@ -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
+ }>;