@remotion/studio 4.0.207 → 4.0.209
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/.turbo/turbo-build.log +1 -1
- package/README.md +1 -1
- package/dist/api/install-package.d.ts +2 -0
- package/dist/api/install-package.js +8 -0
- package/dist/components/Button.d.ts +11 -10
- package/dist/components/InstallPackage.d.ts +5 -0
- package/dist/components/InstallPackage.js +141 -0
- package/dist/components/InstallablePackage.d.ts +7 -0
- package/dist/components/InstallablePackage.js +19 -0
- package/dist/components/Menu/MenuItem.d.ts +1 -1
- package/dist/components/ModalButton.d.ts +3 -0
- package/dist/components/ModalButton.js +21 -0
- package/dist/components/ModalFooter.d.ts +4 -0
- package/dist/components/ModalFooter.js +15 -0
- package/dist/components/ModalHeader.d.ts +2 -2
- package/dist/components/ModalHeader.js +3 -3
- package/dist/components/Modals.js +2 -1
- package/dist/components/NewComposition/CodemodFooter.d.ts +7 -7
- package/dist/components/NewComposition/CodemodFooter.js +2 -10
- package/dist/components/NewComposition/DeleteComposition.js +2 -1
- package/dist/components/NewComposition/DuplicateComposition.js +3 -2
- package/dist/components/NewComposition/RenameComposition.js +2 -1
- package/dist/components/RenderModal/RenderModal.js +1 -1
- package/dist/components/RenderModal/RenderStatusModal.js +1 -1
- package/dist/components/TopPanel.js +14 -1
- package/dist/components/UpdateModal/UpdateModal.d.ts +2 -2
- package/dist/components/UpdateModal/UpdateModal.js +1 -1
- package/dist/error-overlay/remotion-overlay/ShortcutHint.d.ts +2 -2
- package/dist/error-overlay/remotion-overlay/ShortcutHint.js +2 -0
- package/dist/esm/index.mjs +2783 -2847
- package/dist/esm/internals.mjs +2620 -2293
- package/dist/helpers/colors.d.ts +1 -0
- package/dist/helpers/colors.js +2 -1
- package/dist/helpers/use-menu-structure.js +64 -17
- package/dist/state/modals.d.ts +4 -0
- package/package.json +8 -7
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
package/README.md
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.installPackages = void 0;
|
|
4
|
+
const call_api_1 = require("../components/call-api");
|
|
5
|
+
const installPackages = (packageNames) => {
|
|
6
|
+
return (0, call_api_1.callApi)('/api/install-package', { packageNames });
|
|
7
|
+
};
|
|
8
|
+
exports.installPackages = installPackages;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export
|
|
3
|
-
onClick: () => void;
|
|
4
|
-
disabled?: boolean
|
|
5
|
-
children: React.ReactNode;
|
|
6
|
-
style?: React.CSSProperties
|
|
7
|
-
buttonContainerStyle?: React.CSSProperties
|
|
8
|
-
autoFocus?: boolean
|
|
9
|
-
title?: string
|
|
10
|
-
id?: string
|
|
11
|
-
}
|
|
2
|
+
export type ButtonProps = {
|
|
3
|
+
readonly onClick: () => void;
|
|
4
|
+
readonly disabled?: boolean;
|
|
5
|
+
readonly children: React.ReactNode;
|
|
6
|
+
readonly style?: React.CSSProperties;
|
|
7
|
+
readonly buttonContainerStyle?: React.CSSProperties;
|
|
8
|
+
readonly autoFocus?: boolean;
|
|
9
|
+
readonly title?: string;
|
|
10
|
+
readonly id?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,141 @@
|
|
|
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.InstallPackageModal = void 0;
|
|
27
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
28
|
+
const studio_shared_1 = require("@remotion/studio-shared");
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
|
+
const remotion_1 = require("remotion");
|
|
31
|
+
const install_package_1 = require("../api/install-package");
|
|
32
|
+
const restart_studio_1 = require("../api/restart-studio");
|
|
33
|
+
const ShortcutHint_1 = require("../error-overlay/remotion-overlay/ShortcutHint");
|
|
34
|
+
const client_id_1 = require("../helpers/client-id");
|
|
35
|
+
const colors_1 = require("../helpers/colors");
|
|
36
|
+
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
37
|
+
const Checkbox_1 = require("./Checkbox");
|
|
38
|
+
const InstallablePackage_1 = require("./InstallablePackage");
|
|
39
|
+
const is_menu_item_1 = require("./Menu/is-menu-item");
|
|
40
|
+
const ModalButton_1 = require("./ModalButton");
|
|
41
|
+
const ModalFooter_1 = require("./ModalFooter");
|
|
42
|
+
const ModalHeader_1 = require("./ModalHeader");
|
|
43
|
+
const DismissableModal_1 = require("./NewComposition/DismissableModal");
|
|
44
|
+
const layout_1 = require("./layout");
|
|
45
|
+
const container = {
|
|
46
|
+
padding: 20,
|
|
47
|
+
maxHeight: 400,
|
|
48
|
+
overflowY: 'auto',
|
|
49
|
+
};
|
|
50
|
+
const text = {
|
|
51
|
+
fontSize: 14,
|
|
52
|
+
};
|
|
53
|
+
const InstallPackageModal = ({ packageManager }) => {
|
|
54
|
+
const [state, setState] = react_1.default.useState({ type: 'idle' });
|
|
55
|
+
const [map, setMap] = react_1.default.useState({
|
|
56
|
+
'@remotion/animated-emoji': false,
|
|
57
|
+
'@remotion/gif': false,
|
|
58
|
+
'@remotion/lottie': false,
|
|
59
|
+
'@remotion/media-utils': false,
|
|
60
|
+
'@remotion/animation-utils': false,
|
|
61
|
+
'@remotion/cloudrun': false,
|
|
62
|
+
'@remotion/google-fonts': false,
|
|
63
|
+
'@remotion/enable-scss': false,
|
|
64
|
+
'@remotion/lambda': false,
|
|
65
|
+
'@remotion/layout-utils': false,
|
|
66
|
+
'@remotion/media-parser': false,
|
|
67
|
+
'@remotion/motion-blur': false,
|
|
68
|
+
'@remotion/noise': false,
|
|
69
|
+
'@remotion/paths': false,
|
|
70
|
+
'@remotion/rive': false,
|
|
71
|
+
'@remotion/shapes': false,
|
|
72
|
+
'@remotion/skia': false,
|
|
73
|
+
'@remotion/studio': false,
|
|
74
|
+
'@remotion/tailwind': false,
|
|
75
|
+
'@remotion/three': false,
|
|
76
|
+
'@remotion/transitions': false,
|
|
77
|
+
'@remotion/zod-types': false,
|
|
78
|
+
});
|
|
79
|
+
const { previewServerState: ctx } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
80
|
+
const selectedPackages = Object.keys(map).filter((pkg) => map[pkg]);
|
|
81
|
+
const onClick = (0, react_1.useCallback)(async () => {
|
|
82
|
+
if (state.type === 'done') {
|
|
83
|
+
setState({ type: 'restarting' });
|
|
84
|
+
(0, restart_studio_1.restartStudio)();
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
setState({ type: 'installing' });
|
|
88
|
+
try {
|
|
89
|
+
await (0, install_package_1.installPackages)(selectedPackages);
|
|
90
|
+
setState({ type: 'done' });
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
setState({ type: 'error', error: err });
|
|
94
|
+
}
|
|
95
|
+
}, [selectedPackages, state.type]);
|
|
96
|
+
const canSelectPackages = state.type === 'idle' && ctx.type === 'connected';
|
|
97
|
+
const disabled = !(canSelectPackages || state.type === 'done') ||
|
|
98
|
+
selectedPackages.length === 0;
|
|
99
|
+
const { registerKeybinding } = (0, use_keybinding_1.useKeybinding)();
|
|
100
|
+
(0, react_1.useEffect)(() => {
|
|
101
|
+
if (disabled) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const enter = registerKeybinding({
|
|
105
|
+
callback() {
|
|
106
|
+
onClick();
|
|
107
|
+
},
|
|
108
|
+
commandCtrlKey: true,
|
|
109
|
+
key: 'Enter',
|
|
110
|
+
event: 'keydown',
|
|
111
|
+
preventDefault: true,
|
|
112
|
+
triggerIfInputFieldFocused: true,
|
|
113
|
+
keepRegisteredWhenNotHighestContext: true,
|
|
114
|
+
});
|
|
115
|
+
return () => {
|
|
116
|
+
enter.unregister();
|
|
117
|
+
};
|
|
118
|
+
}, [disabled, onClick, registerKeybinding]);
|
|
119
|
+
return ((0, jsx_runtime_1.jsxs)(DismissableModal_1.DismissableModal, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: "Install packages" }), (0, jsx_runtime_1.jsx)("div", { style: container, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: state.type === 'done' ? ((0, jsx_runtime_1.jsxs)("div", { style: text, children: ["Installed package", selectedPackages.length === 1 ? '' : 's', ' ', "successfully. Restart the server to complete."] })) : state.type === 'restarting' ? ((0, jsx_runtime_1.jsx)("div", { style: text, children: "Restarting the Studio server..." })) : state.type === 'installing' ? ((0, jsx_runtime_1.jsxs)("div", { style: text, children: ["Installing package", selectedPackages.length === 1 ? '' : 's', ". Check your terminal for progress."] })) : ((0, jsx_runtime_1.jsx)("div", { style: text, children: studio_shared_1.listOfInstallableRemotionPackages.map((pkg) => {
|
|
120
|
+
var _a, _b;
|
|
121
|
+
const isInstalled = (_b = (_a = window.remotion_installedPackages) === null || _a === void 0 ? void 0 : _a.includes(pkg)) !== null && _b !== void 0 ? _b : false;
|
|
122
|
+
const link = studio_shared_1.apiDocs[pkg.replace('@remotion/', '')];
|
|
123
|
+
const description = studio_shared_1.descriptions[pkg.replace('@remotion/', '')];
|
|
124
|
+
if (!link) {
|
|
125
|
+
throw new Error('No link for ' + pkg);
|
|
126
|
+
}
|
|
127
|
+
if (!description) {
|
|
128
|
+
throw new Error('No description for ' + pkg);
|
|
129
|
+
}
|
|
130
|
+
return ((0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: map[pkg], name: pkg, onChange: () => {
|
|
131
|
+
setMap((prev) => ({ ...prev, [pkg]: !prev[pkg] }));
|
|
132
|
+
}, disabled: !canSelectPackages || isInstalled }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1.5 }), (0, jsx_runtime_1.jsx)(InstallablePackage_1.InstallablePackageComp, { description: description, isInstalled: isInstalled, link: link, pkg: pkg })] }, pkg));
|
|
133
|
+
}) })) }), (0, jsx_runtime_1.jsx)(ModalFooter_1.ModalFooterContainer, { children: (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [state.type === 'idle' ? ((0, jsx_runtime_1.jsxs)("span", { style: { color: colors_1.LIGHT_TEXT, fontSize: 13, lineHeight: 1.2 }, children: ["This will install ", selectedPackages.length, " package", selectedPackages.length === 1 ? '' : 's', (0, jsx_runtime_1.jsx)("br", {}), "using ", packageManager, ", Remotion v", remotion_1.VERSION] })) : null, (0, jsx_runtime_1.jsx)(layout_1.Flex, {}), (0, jsx_runtime_1.jsxs)(ModalButton_1.ModalButton, { onClick: onClick, disabled: disabled, children: [state.type === 'restarting'
|
|
134
|
+
? 'Restarting...'
|
|
135
|
+
: state.type === 'installing'
|
|
136
|
+
? 'Installing...'
|
|
137
|
+
: state.type === 'done'
|
|
138
|
+
? 'Restart Server'
|
|
139
|
+
: 'Install', disabled ? null : (0, jsx_runtime_1.jsx)(ShortcutHint_1.ShortcutHint, { keyToPress: "\u21B5", cmdOrCtrl: true })] })] }) })] }));
|
|
140
|
+
};
|
|
141
|
+
exports.InstallPackageModal = InstallPackageModal;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InstallablePackageComp = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const colors_1 = require("../helpers/colors");
|
|
6
|
+
const FONT_SIZE = 13;
|
|
7
|
+
const InstallablePackageComp = ({ isInstalled, pkg, link, description }) => {
|
|
8
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
9
|
+
fontSize: FONT_SIZE,
|
|
10
|
+
lineHeight: 1.2,
|
|
11
|
+
paddingBottom: 4,
|
|
12
|
+
paddingTop: 4,
|
|
13
|
+
}, children: [(0, jsx_runtime_1.jsx)("a", { href: link, style: {
|
|
14
|
+
fontSize: FONT_SIZE,
|
|
15
|
+
color: colors_1.TEXT_COLOR,
|
|
16
|
+
textDecoration: 'none',
|
|
17
|
+
}, target: "_blank", children: pkg }), ' ', isInstalled ? ((0, jsx_runtime_1.jsx)("span", { style: { opacity: 0.3, fontSize: 'inherit' }, children: "(installed)" })) : null, (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("span", { style: { color: colors_1.LIGHT_TEXT, fontSize: FONT_SIZE }, children: description })] }));
|
|
18
|
+
};
|
|
19
|
+
exports.InstallablePackageComp = InstallablePackageComp;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SetStateAction } from 'react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { ComboboxValue } from '../NewComposition/ComboBox';
|
|
4
|
-
export type MenuId = 'remotion' | 'file' | 'view' | 'tools' | 'help';
|
|
4
|
+
export type MenuId = 'remotion' | 'file' | 'view' | 'install' | 'tools' | 'help';
|
|
5
5
|
export type Menu = {
|
|
6
6
|
id: MenuId;
|
|
7
7
|
label: React.ReactNode;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModalButton = 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 Button_1 = require("./Button");
|
|
8
|
+
const buttonStyle = {
|
|
9
|
+
backgroundColor: colors_1.BLUE,
|
|
10
|
+
color: 'white',
|
|
11
|
+
};
|
|
12
|
+
const ModalButton = (props) => {
|
|
13
|
+
const style = (0, react_1.useMemo)(() => {
|
|
14
|
+
return {
|
|
15
|
+
...buttonStyle,
|
|
16
|
+
backgroundColor: props.disabled ? colors_1.BLUE_DISABLED : colors_1.BLUE,
|
|
17
|
+
};
|
|
18
|
+
}, [props.disabled]);
|
|
19
|
+
return (0, jsx_runtime_1.jsx)(Button_1.Button, { ...props, style: style });
|
|
20
|
+
};
|
|
21
|
+
exports.ModalButton = ModalButton;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModalFooterContainer = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const content = {
|
|
6
|
+
padding: 12,
|
|
7
|
+
paddingRight: 12,
|
|
8
|
+
flex: 1,
|
|
9
|
+
fontSize: 13,
|
|
10
|
+
minWidth: 500,
|
|
11
|
+
};
|
|
12
|
+
const ModalFooterContainer = ({ children }) => {
|
|
13
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { ...content, borderTop: '1px solid black' }, children: children }));
|
|
14
|
+
};
|
|
15
|
+
exports.ModalFooterContainer = ModalFooterContainer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ModalHeader = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const modals_1 = require("../state/modals");
|
|
@@ -22,11 +22,11 @@ const icon = {
|
|
|
22
22
|
height: 20,
|
|
23
23
|
width: 20,
|
|
24
24
|
};
|
|
25
|
-
const
|
|
25
|
+
const ModalHeader = ({ title }) => {
|
|
26
26
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
27
27
|
const onPress = (0, react_1.useCallback)(() => {
|
|
28
28
|
setSelectedModal(null);
|
|
29
29
|
}, [setSelectedModal]);
|
|
30
30
|
return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)("div", { style: titleStyle, children: title }), (0, jsx_runtime_1.jsx)(layout_1.Flex, {}), (0, jsx_runtime_1.jsx)(CancelButton_1.CancelButton, { style: icon, onPress: onPress })] }));
|
|
31
31
|
};
|
|
32
|
-
exports.
|
|
32
|
+
exports.ModalHeader = ModalHeader;
|
|
@@ -8,6 +8,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
8
8
|
const react_1 = require("react");
|
|
9
9
|
const client_id_1 = require("../helpers/client-id");
|
|
10
10
|
const modals_1 = require("../state/modals");
|
|
11
|
+
const InstallPackage_1 = require("./InstallPackage");
|
|
11
12
|
const DeleteComposition_1 = require("./NewComposition/DeleteComposition");
|
|
12
13
|
const DuplicateComposition_1 = require("./NewComposition/DuplicateComposition");
|
|
13
14
|
const RenameComposition_1 = require("./NewComposition/RenameComposition");
|
|
@@ -21,6 +22,6 @@ const Modals = ({ readOnlyStudio }) => {
|
|
|
21
22
|
'connected';
|
|
22
23
|
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [modalContextType && modalContextType.type === 'duplicate-comp' && ((0, jsx_runtime_1.jsx)(DuplicateComposition_1.DuplicateComposition, { compositionType: modalContextType.compositionType, compositionId: modalContextType.compositionId })), modalContextType && modalContextType.type === 'delete-comp' && ((0, jsx_runtime_1.jsx)(DeleteComposition_1.DeleteComposition, { compositionId: modalContextType.compositionId })), modalContextType && modalContextType.type === 'rename-comp' && ((0, jsx_runtime_1.jsx)(RenameComposition_1.RenameComposition, { compositionId: modalContextType.compositionId })), modalContextType && canRender && modalContextType.type === 'render' && ((0, jsx_runtime_1.jsx)(RenderModal_1.RenderModalWithLoader, { initialFrame: modalContextType.initialFrame, compositionId: modalContextType.compositionId, initialVideoImageFormat: modalContextType.initialVideoImageFormat, initialJpegQuality: modalContextType.initialJpegQuality, initialScale: modalContextType.initialScale, initialLogLevel: modalContextType.initialLogLevel, initialOffthreadVideoCacheSizeInBytes: modalContextType.initialOffthreadVideoCacheSizeInBytes, initialConcurrency: modalContextType.initialConcurrency, maxConcurrency: modalContextType.maxConcurrency, minConcurrency: modalContextType.minConcurrency, initialStillImageFormat: modalContextType.initialStillImageFormat, initialMuted: modalContextType.initialMuted, initialEnforceAudioTrack: modalContextType.initialEnforceAudioTrack, initialProResProfile: modalContextType.initialProResProfile, initialx264Preset: modalContextType.initialx264Preset, initialPixelFormat: modalContextType.initialPixelFormat, initialAudioBitrate: modalContextType.initialAudioBitrate, initialVideoBitrate: modalContextType.initialVideoBitrate, initialEveryNthFrame: modalContextType.initialEveryNthFrame, initialNumberOfGifLoops: modalContextType.initialNumberOfGifLoops, initialDelayRenderTimeout: modalContextType.initialDelayRenderTimeout, initialEnvVariables: modalContextType.initialEnvVariables, initialDisableWebSecurity: modalContextType.initialDisableWebSecurity, initialGl: modalContextType.initialOpenGlRenderer, initialHeadless: modalContextType.initialHeadless, initialIgnoreCertificateErrors: modalContextType.initialIgnoreCertificateErrors, initialEncodingBufferSize: modalContextType.initialEncodingBufferSize, initialEncodingMaxRate: modalContextType.initialEncodingMaxRate, initialUserAgent: modalContextType.initialUserAgent, initialColorSpace: modalContextType.initialColorSpace, initialMultiProcessOnLinux: modalContextType.initialMultiProcessOnLinux, initialRepro: modalContextType.initialRepro, initialBeep: modalContextType.initialBeep, initialForSeamlessAacConcatenation: modalContextType.initialForSeamlessAacConcatenation, defaultProps: modalContextType.defaultProps, inFrameMark: modalContextType.inFrameMark, outFrameMark: modalContextType.outFrameMark, defaultConfigurationAudioCodec: modalContextType.defaultConfigurationAudioCodec, defaultConfigurationVideoCodec: modalContextType.defaultConfigurationVideoCodec, renderTypeOfLastRender: modalContextType.renderTypeOfLastRender })), modalContextType &&
|
|
23
24
|
canRender &&
|
|
24
|
-
modalContextType.type === 'render-progress' && ((0, jsx_runtime_1.jsx)(RenderStatusModal_1.RenderStatusModal, { jobId: modalContextType.jobId })), modalContextType && modalContextType.type === 'update' && ((0, jsx_runtime_1.jsx)(UpdateModal_1.UpdateModal, { info: modalContextType.info, knownBugs: modalContextType.knownBugs })), modalContextType && modalContextType.type === 'quick-switcher' && ((0, jsx_runtime_1.jsx)(QuickSwitcher_1.default, { readOnlyStudio: readOnlyStudio, invocationTimestamp: modalContextType.invocationTimestamp, initialMode: modalContextType.mode }))] }));
|
|
25
|
+
modalContextType.type === 'render-progress' && ((0, jsx_runtime_1.jsx)(RenderStatusModal_1.RenderStatusModal, { jobId: modalContextType.jobId })), modalContextType && modalContextType.type === 'update' && ((0, jsx_runtime_1.jsx)(UpdateModal_1.UpdateModal, { info: modalContextType.info, knownBugs: modalContextType.knownBugs })), modalContextType && modalContextType.type === 'install-packages' && ((0, jsx_runtime_1.jsx)(InstallPackage_1.InstallPackageModal, { packageManager: modalContextType.packageManager })), modalContextType && modalContextType.type === 'quick-switcher' && ((0, jsx_runtime_1.jsx)(QuickSwitcher_1.default, { readOnlyStudio: readOnlyStudio, invocationTimestamp: modalContextType.invocationTimestamp, initialMode: modalContextType.mode }))] }));
|
|
25
26
|
};
|
|
26
27
|
exports.Modals = Modals;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { RecastCodemod } from '@remotion/studio-shared';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export declare const CodemodFooter: React.FC<{
|
|
4
|
-
valid: boolean;
|
|
5
|
-
codemod: RecastCodemod;
|
|
6
|
-
loadingNotification: React.ReactNode;
|
|
7
|
-
succeessNotifcation: React.ReactNode;
|
|
8
|
-
errorNotification: string;
|
|
9
|
-
genericSubmitLabel: string;
|
|
10
|
-
submitLabel: (options: {
|
|
4
|
+
readonly valid: boolean;
|
|
5
|
+
readonly codemod: RecastCodemod;
|
|
6
|
+
readonly loadingNotification: React.ReactNode;
|
|
7
|
+
readonly succeessNotifcation: React.ReactNode;
|
|
8
|
+
readonly errorNotification: string;
|
|
9
|
+
readonly genericSubmitLabel: string;
|
|
10
|
+
readonly submitLabel: (options: {
|
|
11
11
|
relativeRootPath: string;
|
|
12
12
|
}) => string;
|
|
13
13
|
}>;
|
|
@@ -4,18 +4,13 @@ exports.CodemodFooter = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const ShortcutHint_1 = require("../../error-overlay/remotion-overlay/ShortcutHint");
|
|
7
|
-
const colors_1 = require("../../helpers/colors");
|
|
8
7
|
const use_keybinding_1 = require("../../helpers/use-keybinding");
|
|
9
8
|
const modals_1 = require("../../state/modals");
|
|
10
|
-
const
|
|
9
|
+
const ModalButton_1 = require("../ModalButton");
|
|
11
10
|
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
12
11
|
const actions_1 = require("../RenderQueue/actions");
|
|
13
12
|
const layout_1 = require("../layout");
|
|
14
13
|
const DiffPreview_1 = require("./DiffPreview");
|
|
15
|
-
const buttonStyle = {
|
|
16
|
-
backgroundColor: colors_1.BLUE,
|
|
17
|
-
color: 'white',
|
|
18
|
-
};
|
|
19
14
|
const CodemodFooter = ({ codemod, valid, loadingNotification, succeessNotifcation, errorNotification, genericSubmitLabel, submitLabel, }) => {
|
|
20
15
|
const [submitting, setSubmitting] = (0, react_1.useState)(false);
|
|
21
16
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
@@ -114,10 +109,7 @@ const CodemodFooter = ({ codemod, valid, loadingNotification, succeessNotifcatio
|
|
|
114
109
|
enter.unregister();
|
|
115
110
|
};
|
|
116
111
|
}, [disabled, registerKeybinding, trigger, valid]);
|
|
117
|
-
return ((0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)(DiffPreview_1.CodemodDiffPreview, { status: codemodStatus }), (0, jsx_runtime_1.jsx)(layout_1.Flex, {}), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { block: true, x: 2 }), (0, jsx_runtime_1.jsxs)(
|
|
118
|
-
...buttonStyle,
|
|
119
|
-
backgroundColor: disabled ? colors_1.BLUE_DISABLED : colors_1.BLUE,
|
|
120
|
-
}, children: [projectInfo && projectInfo.relativeRootFile
|
|
112
|
+
return ((0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)(DiffPreview_1.CodemodDiffPreview, { status: codemodStatus }), (0, jsx_runtime_1.jsx)(layout_1.Flex, {}), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { block: true, x: 2 }), (0, jsx_runtime_1.jsxs)(ModalButton_1.ModalButton, { onClick: trigger, disabled: disabled, children: [projectInfo && projectInfo.relativeRootFile
|
|
121
113
|
? submitLabel({ relativeRootPath: projectInfo.relativeRootFile })
|
|
122
114
|
: genericSubmitLabel, (0, jsx_runtime_1.jsx)(ShortcutHint_1.ShortcutHint, { keyToPress: "\u21B5", cmdOrCtrl: true })] })] }));
|
|
123
115
|
};
|
|
@@ -4,6 +4,7 @@ exports.DeleteComposition = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const styles_1 = require("../Menu/styles");
|
|
7
|
+
const ModalFooter_1 = require("../ModalFooter");
|
|
7
8
|
const ModalHeader_1 = require("../ModalHeader");
|
|
8
9
|
const ResolveCompositionBeforeModal_1 = require("../RenderModal/ResolveCompositionBeforeModal");
|
|
9
10
|
const CodemodFooter_1 = require("./CodemodFooter");
|
|
@@ -29,7 +30,7 @@ const DeleteCompositionLoaded = ({ compositionId }) => {
|
|
|
29
30
|
const onSubmit = (0, react_1.useCallback)((e) => {
|
|
30
31
|
e.preventDefault();
|
|
31
32
|
}, []);
|
|
32
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.
|
|
33
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: 'Delete composition' }), (0, jsx_runtime_1.jsxs)("form", { onSubmit: onSubmit, children: [(0, jsx_runtime_1.jsxs)("div", { style: content, children: ["Do you want to delete the", ' ', (0, jsx_runtime_1.jsx)("code", { style: styles_1.inlineCodeSnippet, children: unresolved.durationInFrames === 1 ? `<Still>` : '<Composition>' }), ' ', "with ID ", '"', unresolved.id, '"', "?", (0, jsx_runtime_1.jsx)("br", {}), "The associated ", (0, jsx_runtime_1.jsx)("code", { style: styles_1.inlineCodeSnippet, children: "component" }), " will remain in your code."] }), (0, jsx_runtime_1.jsx)(ModalFooter_1.ModalFooterContainer, { children: (0, jsx_runtime_1.jsx)(CodemodFooter_1.CodemodFooter, { errorNotification: `Could not delete composition`, loadingNotification: 'Deleting', succeessNotifcation: `Deleted ${unresolved.id}`, genericSubmitLabel: `Delete`, submitLabel: ({ relativeRootPath }) => `Delete from ${relativeRootPath}`, codemod: codemod, valid: true }) })] })] }));
|
|
33
34
|
};
|
|
34
35
|
const DeleteComposition = ({ compositionId }) => {
|
|
35
36
|
return ((0, jsx_runtime_1.jsx)(DismissableModal_1.DismissableModal, { children: (0, jsx_runtime_1.jsx)(ResolveCompositionBeforeModal_1.ResolveCompositionBeforeModal, { compositionId: compositionId, children: (0, jsx_runtime_1.jsx)(DeleteCompositionLoaded, { compositionId: compositionId }) }) }));
|
|
@@ -5,6 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
7
|
const validate_new_comp_data_1 = require("../../helpers/validate-new-comp-data");
|
|
8
|
+
const ModalFooter_1 = require("../ModalFooter");
|
|
8
9
|
const ModalHeader_1 = require("../ModalHeader");
|
|
9
10
|
const ResolveCompositionBeforeModal_1 = require("../RenderModal/ResolveCompositionBeforeModal");
|
|
10
11
|
const layout_1 = require("../RenderModal/layout");
|
|
@@ -169,10 +170,10 @@ const DuplicateCompositionLoaded = ({ initialType }) => {
|
|
|
169
170
|
const onSubmit = (0, react_1.useCallback)((e) => {
|
|
170
171
|
e.preventDefault();
|
|
171
172
|
}, []);
|
|
172
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.
|
|
173
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: `Duplicate ${resolved.result.id}` }), (0, jsx_runtime_1.jsxs)("form", { onSubmit: onSubmit, children: [(0, jsx_runtime_1.jsxs)("div", { style: content, children: [initialCompType === 'composition' ? (
|
|
173
174
|
// We allow converting from a composition to a still, but
|
|
174
175
|
// not the other way around
|
|
175
|
-
(0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Type" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(ComboBox_1.Combobox, { title: "Type of composition", style: comboBoxStyle, values: typeValues, selectedId: type }) })] })) : null, (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "ID" }), (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, { value: newId, onChange: onNameChange, type: "text", autoFocus: true, placeholder: "Composition ID", status: "ok", rightAlign: true }), compNameErrMessage ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_2.Spacing, { y: 1, block: true }), (0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: compNameErrMessage, type: "error" })] })) : null] }) })] }), hadDimensionsDefined ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Width" }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.rightRow, children: [(0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { type: "number", value: size.width, placeholder: "Width", onTextChange: onWidthChanged, name: "width", step: 2, min: 2, required: true, status: "ok", formatter: (w) => `${w}px`, max: 100000000, onValueChange: onWidthDirectlyChanged, rightAlign: false }), compWidthErrMessage ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_2.Spacing, { y: 1, block: true }), (0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: compWidthErrMessage, type: "error" })] })) : null] })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Height" }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.rightRow, children: [(0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { type: "number", value: size.height, onTextChange: onHeightChanged, placeholder: "Height", name: "height", step: 2, required: true, formatter: (h) => `${h}px`, min: 2, status: "ok", max: 100000000, onValueChange: onHeightDirectlyChanged, rightAlign: false }), compHeightErrMessage ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_2.Spacing, { y: 1, block: true }), (0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: compHeightErrMessage, type: "error" })] })) : null] })] })] })) : null, type === 'composition' && hadDurationDefined ? ((0, jsx_runtime_1.jsx)(NewCompDuration_1.NewCompDuration, { durationInFrames: durationInFrames, setDurationInFrames: setDurationInFrames })) : null, type === 'composition' && hadFpsDefined ? ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "FPS" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { type: "number", value: selectedFrameRate, onTextChange: onTextFpsChange, placeholder: "Frame rate (fps)", name: "fps", min: 1, required: true, status: "ok", max: 240, step: 0.01, onValueChange: onFpsChange, rightAlign: false }) })] })) : null] }), (0, jsx_runtime_1.jsx)(
|
|
176
|
+
(0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Type" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(ComboBox_1.Combobox, { title: "Type of composition", style: comboBoxStyle, values: typeValues, selectedId: type }) })] })) : null, (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "ID" }), (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, { value: newId, onChange: onNameChange, type: "text", autoFocus: true, placeholder: "Composition ID", status: "ok", rightAlign: true }), compNameErrMessage ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_2.Spacing, { y: 1, block: true }), (0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: compNameErrMessage, type: "error" })] })) : null] }) })] }), hadDimensionsDefined ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Width" }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.rightRow, children: [(0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { type: "number", value: size.width, placeholder: "Width", onTextChange: onWidthChanged, name: "width", step: 2, min: 2, required: true, status: "ok", formatter: (w) => `${w}px`, max: 100000000, onValueChange: onWidthDirectlyChanged, rightAlign: false }), compWidthErrMessage ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_2.Spacing, { y: 1, block: true }), (0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: compWidthErrMessage, type: "error" })] })) : null] })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Height" }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.rightRow, children: [(0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { type: "number", value: size.height, onTextChange: onHeightChanged, placeholder: "Height", name: "height", step: 2, required: true, formatter: (h) => `${h}px`, min: 2, status: "ok", max: 100000000, onValueChange: onHeightDirectlyChanged, rightAlign: false }), compHeightErrMessage ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_2.Spacing, { y: 1, block: true }), (0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: compHeightErrMessage, type: "error" })] })) : null] })] })] })) : null, type === 'composition' && hadDurationDefined ? ((0, jsx_runtime_1.jsx)(NewCompDuration_1.NewCompDuration, { durationInFrames: durationInFrames, setDurationInFrames: setDurationInFrames })) : null, type === 'composition' && hadFpsDefined ? ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "FPS" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { type: "number", value: selectedFrameRate, onTextChange: onTextFpsChange, placeholder: "Frame rate (fps)", name: "fps", min: 1, required: true, status: "ok", max: 240, step: 0.01, onValueChange: onFpsChange, rightAlign: false }) })] })) : null] }), (0, jsx_runtime_1.jsx)(ModalFooter_1.ModalFooterContainer, { children: (0, jsx_runtime_1.jsx)(CodemodFooter_1.CodemodFooter, { loadingNotification: 'Duplicating...', errorNotification: 'Could not duplicate composition', succeessNotifcation: `Duplicated ${unresolved.id}`, genericSubmitLabel: 'Duplicate', submitLabel: ({ relativeRootPath }) => `Add to ${relativeRootPath}`, codemod: codemod, valid: valid }) })] })] }));
|
|
176
177
|
};
|
|
177
178
|
const DuplicateComposition = ({ compositionId, compositionType }) => {
|
|
178
179
|
return ((0, jsx_runtime_1.jsx)(DismissableModal_1.DismissableModal, { children: (0, jsx_runtime_1.jsx)(ResolveCompositionBeforeModal_1.ResolveCompositionBeforeModal, { compositionId: compositionId, children: (0, jsx_runtime_1.jsx)(DuplicateCompositionLoaded, { initialType: compositionType }) }) }));
|
|
@@ -5,6 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
7
|
const validate_new_comp_data_1 = require("../../helpers/validate-new-comp-data");
|
|
8
|
+
const ModalFooter_1 = require("../ModalFooter");
|
|
8
9
|
const ModalHeader_1 = require("../ModalHeader");
|
|
9
10
|
const ResolveCompositionBeforeModal_1 = require("../RenderModal/ResolveCompositionBeforeModal");
|
|
10
11
|
const layout_1 = require("../RenderModal/layout");
|
|
@@ -47,7 +48,7 @@ const RenameCompositionLoaded = () => {
|
|
|
47
48
|
const onSubmit = (0, react_1.useCallback)((e) => {
|
|
48
49
|
e.preventDefault();
|
|
49
50
|
}, []);
|
|
50
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.
|
|
51
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: `Rename ${resolved.result.id}` }), (0, jsx_runtime_1.jsxs)("form", { onSubmit: onSubmit, children: [(0, jsx_runtime_1.jsx)("div", { style: content, children: (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "ID" }), (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, { value: newId, onChange: onNameChange, type: "text", autoFocus: true, placeholder: "Composition ID", status: "ok", rightAlign: true }), compNameErrMessage ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_2.Spacing, { y: 1, block: true }), (0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: compNameErrMessage, type: "error" })] })) : null] }) })] }) }), (0, jsx_runtime_1.jsx)(ModalFooter_1.ModalFooterContainer, { children: (0, jsx_runtime_1.jsx)(CodemodFooter_1.CodemodFooter, { loadingNotification: 'Renaming...', errorNotification: 'Could not rename composition', succeessNotifcation: `Renamed to ${newId}`, genericSubmitLabel: 'Rename', submitLabel: ({ relativeRootPath }) => `Modify ${relativeRootPath}`, codemod: codemod, valid: valid }) })] })] }));
|
|
51
52
|
};
|
|
52
53
|
const RenameComposition = ({ compositionId }) => {
|
|
53
54
|
return ((0, jsx_runtime_1.jsx)(DismissableModal_1.DismissableModal, { children: (0, jsx_runtime_1.jsx)(ResolveCompositionBeforeModal_1.ResolveCompositionBeforeModal, { compositionId: compositionId, children: (0, jsx_runtime_1.jsx)(RenameCompositionLoaded, {}) }) }));
|
|
@@ -797,7 +797,7 @@ const RenderModal = ({ initialFrame, initialVideoImageFormat, initialStillImageF
|
|
|
797
797
|
};
|
|
798
798
|
});
|
|
799
799
|
}, [availablePixelFormats, pixelFormat]);
|
|
800
|
-
return ((0, jsx_runtime_1.jsxs)("div", { style: outer, children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.
|
|
800
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: outer, children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: `Render ${resolvedComposition.id}` }), (0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)(SegmentedControl_1.SegmentedControl, { items: renderTabOptions, needsWrapping: false }), (0, jsx_runtime_1.jsx)("div", { style: flexer }), (0, jsx_runtime_1.jsxs)(Button_1.Button, { autoFocus: true, onClick: trigger, disabled: renderDisabled, style: {
|
|
801
801
|
...buttonStyle,
|
|
802
802
|
backgroundColor: outnameValidation.valid ? colors_1.BLUE : colors_1.BLUE_DISABLED,
|
|
803
803
|
}, children: [state.type === 'idle' ? `Render ${renderMode}` : 'Rendering...', (0, jsx_runtime_1.jsx)(ShortcutHint_1.ShortcutHint, { keyToPress: "\u21B5", cmdOrCtrl: true })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: horizontalLayout, children: [(0, jsx_runtime_1.jsxs)("div", { style: leftSidebar, children: [shownTabs.includes('general') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'general', onClick: () => setTab('general'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(file_1.FileIcon, { style: icon }) }), "General"] })) : null, shownTabs.includes('data') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'data', onClick: () => setTab('data'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(data_1.DataIcon, { style: icon }) }), "Input Props"] })) : null, shownTabs.includes('picture') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'picture', onClick: () => setTab('picture'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(frame_1.PicIcon, { style: icon }) }), "Picture"] })) : null, shownTabs.includes('audio') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'audio', onClick: () => setTab('audio'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(audio_1.AudioIcon, { style: icon }) }), "Audio"] })) : null, shownTabs.includes('gif') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'gif', onClick: () => setTab('gif'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(gif_1.GifIcon, { style: icon }) }), "GIF"] })) : null, shownTabs.includes('advanced') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'advanced', onClick: () => setTab('advanced'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(gear_1.GearIcon, { style: icon }) }), "Other"] })) : null] }), (0, jsx_runtime_1.jsx)("div", { style: optionsPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: tab === 'general' ? ((0, jsx_runtime_1.jsx)(RenderModalBasic_1.RenderModalBasic, { codec: codec, resolvedComposition: resolvedComposition, frame: frame, imageFormatOptions: imageFormatOptions, outName: outName, proResProfile: proResProfile, renderMode: renderMode, setVideoCodec: setCodec, setFrame: setFrame, setOutName: setOutName, setProResProfile: setProResProfile, endFrame: endFrame, setEndFrame: setEndFrame, setStartFrame: setStartFrame, startFrame: startFrame, validationMessage: outnameValidation.valid ? null : outnameValidation.error.message })) : tab === 'picture' ? ((0, jsx_runtime_1.jsx)(RenderModalPicture_1.RenderModalPicture, { renderMode: renderMode, scale: scale, setScale: setScale, pixelFormat: pixelFormat, pixelFormatOptions: pixelFormatOptions, imageFormatOptions: imageFormatOptions, crf: crf, setCrf: setCrf, customTargetVideoBitrate: customTargetVideoBitrate, maxCrf: maxCrf, minCrf: minCrf, jpegQuality: jpegQuality, qualityControlType: qualityControlType, setJpegQuality: setJpegQuality, setColorSpace: setColorSpace, colorSpace: colorSpace, setCustomTargetVideoBitrateValue: setCustomTargetVideoBitrateValue, setQualityControl: setQualityControl, videoImageFormat: videoImageFormat, stillImageFormat: stillImageFormat, shouldDisplayQualityControlPicker: supportsBothQualityControls, encodingBufferSize: encodingBufferSize, setEncodingBufferSize: setEncodingBufferSize, encodingMaxRate: encodingMaxRate, setEncodingMaxRate: setEncodingMaxRate })) : tab === 'audio' ? ((0, jsx_runtime_1.jsx)(RenderModalAudio_1.RenderModalAudio, { muted: muted, renderMode: renderMode, setMuted: setMuted, codec: codec, audioCodec: audioCodec, setAudioCodec: setAudioCodec, enforceAudioTrack: enforceAudioTrack, setEnforceAudioTrackState: setEnforceAudioTrackState, customTargetAudioBitrate: customTargetAudioBitrate, setCustomTargetAudioBitrateValue: setCustomTargetAudioBitrateValue, setShouldHaveCustomTargetAudioBitrate: setShouldHaveCustomTargetAudioBitrate, shouldHaveCustomTargetAudioBitrate: shouldHaveCustomTargetAudioBitrate, forSeamlessAacConcatenation: forSeamlessAacConcatenation, setForSeamlessAacConcatenation: setForSeamlessAacConcatenation, separateAudioTo: separateAudioTo, setSeparateAudioTo: setSeparateAudioTo, outName: outName })) : tab === 'gif' ? ((0, jsx_runtime_1.jsx)(RenderModalGif_1.RenderModalGif, { everyNthFrame: everyNthFrame, limitNumberOfGifLoops: limitNumberOfGifLoops, numberOfGifLoopsSetting: numberOfGifLoopsSetting, setEveryNthFrameSetting: setEveryNthFrameSetting, setLimitNumberOfGifLoops: setLimitNumberOfGifLoops, setNumberOfGifLoopsSetting: setNumberOfGifLoopsSetting })) : tab === 'data' ? ((0, jsx_runtime_1.jsx)(DataEditor_1.DataEditor, { defaultProps: inputProps, setDefaultProps: setInputProps, unresolvedComposition: unresolvedComposition, mayShowSaveButton: false, propsEditType: "input-props", saving: saving, setSaving: setSaving, readOnlyStudio: false })) : ((0, jsx_runtime_1.jsx)(RenderModalAdvanced_1.RenderModalAdvanced, { x264Preset: x264Preset, setx264Preset: setx264Preset, concurrency: concurrency, maxConcurrency: maxConcurrency, minConcurrency: minConcurrency, renderMode: renderMode, setConcurrency: setConcurrency, setVerboseLogging: setLogLevel, logLevel: logLevel, delayRenderTimeout: delayRenderTimeout, setDelayRenderTimeout: setDelayRenderTimeout, disallowParallelEncoding: disallowParallelEncoding, setDisallowParallelEncoding: setDisallowParallelEncoding, setDisableWebSecurity: setDisableWebSecurity, setIgnoreCertificateErrors: setIgnoreCertificateErrors, setHeadless: setHeadless, headless: headless, ignoreCertificateErrors: ignoreCertificateErrors, disableWebSecurity: disableWebSecurity, openGlOption: openGlOption, setOpenGlOption: setOpenGlOption, setEnvVariables: setEnvVariables, envVariables: envVariables, offthreadVideoCacheSizeInBytes: offthreadVideoCacheSizeInBytes, setOffthreadVideoCacheSizeInBytes: setOffthreadVideoCacheSizeInBytes, enableMultiProcessOnLinux: multiProcessOnLinux, setChromiumMultiProcessOnLinux: setChromiumMultiProcessOnLinux, codec: codec, userAgent: userAgent, setUserAgent: setUserAgent, setBeep: setBeepOnFinish, beep: beepOnFinish, repro: repro, setRepro: setRepro })) })] })] }));
|
|
@@ -65,6 +65,6 @@ const RenderStatusModal = ({ jobId }) => {
|
|
|
65
65
|
if (!job || job.status === 'idle') {
|
|
66
66
|
throw new Error('should not have rendered this modal');
|
|
67
67
|
}
|
|
68
|
-
return ((0, jsx_runtime_1.jsxs)(ModalContainer_1.ModalContainer, { onOutsideClick: onQuit, onEscape: onQuit, children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.
|
|
68
|
+
return ((0, jsx_runtime_1.jsxs)(ModalContainer_1.ModalContainer, { onOutsideClick: onQuit, onEscape: onQuit, children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: `Render ${job.compositionId}` }), (0, jsx_runtime_1.jsxs)("div", { style: container, children: [job.status === 'failed' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("p", { children: "The render failed because of the following error:" }), (0, jsx_runtime_1.jsx)("div", { className: is_menu_item_1.HORIZONTAL_SCROLLBAR_CLASSNAME, style: codeBlock, children: job.error.stack })] })) : null, job.status === 'done' || job.status === 'running' ? ((0, jsx_runtime_1.jsx)(GuiRenderStatus_1.GuiRenderStatus, { job: job })) : null, (0, jsx_runtime_1.jsx)("div", { style: spacer }), (0, jsx_runtime_1.jsxs)("div", { style: buttonRow, children: [job.status === 'running' ? ((0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: onClickOnCancel, children: "Cancel render" })) : ((0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: onClickOnRemove, children: "Remove render" })), (0, jsx_runtime_1.jsx)(layout_1.Flex, {}), job.status === 'failed' ? ((0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: onRetry, children: "Retry" })) : null, (0, jsx_runtime_1.jsx)("div", { style: spacer }), (0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: onQuit, children: "Close" })] })] })] }));
|
|
69
69
|
};
|
|
70
70
|
exports.RenderStatusModal = RenderStatusModal;
|
|
@@ -68,6 +68,19 @@ const TopPanel = ({ readOnlyStudio, onMounted, size, drawRef, bufferStateDelayIn
|
|
|
68
68
|
paddingTop: rulersAreVisible ? editor_rulers_1.RULER_WIDTH : 0,
|
|
69
69
|
paddingLeft: rulersAreVisible ? editor_rulers_1.RULER_WIDTH : 0,
|
|
70
70
|
}), [rulersAreVisible]);
|
|
71
|
+
const sizeWithRulersApplied = (0, react_1.useMemo)(() => {
|
|
72
|
+
if (!rulersAreVisible) {
|
|
73
|
+
return size;
|
|
74
|
+
}
|
|
75
|
+
if (!size) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
...size,
|
|
80
|
+
width: size.width - editor_rulers_1.RULER_WIDTH,
|
|
81
|
+
height: size.height - editor_rulers_1.RULER_WIDTH,
|
|
82
|
+
};
|
|
83
|
+
}, [rulersAreVisible, size]);
|
|
71
84
|
const onCollapseLeft = (0, react_1.useCallback)(() => {
|
|
72
85
|
setSidebarCollapsedState({ left: 'collapsed', right: null });
|
|
73
86
|
}, [setSidebarCollapsedState]);
|
|
@@ -75,6 +88,6 @@ const TopPanel = ({ readOnlyStudio, onMounted, size, drawRef, bufferStateDelayIn
|
|
|
75
88
|
setSidebarCollapsedState({ left: null, right: 'collapsed' });
|
|
76
89
|
}, [setSidebarCollapsedState]);
|
|
77
90
|
const isMobileLayout = (0, mobile_layout_1.useMobileLayout)();
|
|
78
|
-
return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)("div", { style: row, children: (0, jsx_runtime_1.jsxs)(SplitterContainer_1.SplitterContainer, { minFlex: 0.15, maxFlex: 0.4, defaultFlex: 0.2, id: "sidebar-to-preview", orientation: "vertical", children: [actualStateLeft === 'expanded' ? (isMobileLayout ? ((0, jsx_runtime_1.jsx)(MobilePanel_1.default, { onClose: onCollapseLeft, children: (0, jsx_runtime_1.jsx)(ExplorerPanel_1.ExplorerPanel, { readOnlyStudio: readOnlyStudio }) })) : ((0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "flexer", children: (0, jsx_runtime_1.jsx)(ExplorerPanel_1.ExplorerPanel, { readOnlyStudio: readOnlyStudio }) }))) : null, actualStateLeft === 'expanded' ? ((0, jsx_runtime_1.jsx)(SplitterHandle_1.SplitterHandle, { allowToCollapse: "left", onCollapse: onCollapseLeft })) : null, (0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "anti-flexer", children: (0, jsx_runtime_1.jsxs)(SplitterContainer_1.SplitterContainer, { minFlex: 0.5, maxFlex: 0.8, defaultFlex: 0.7, id: "canvas-to-right-sidebar", orientation: "vertical", children: [(0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "flexer", children: (0, jsx_runtime_1.jsx)("div", { ref: drawRef, style: canvasContainerStyle, children:
|
|
91
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)("div", { style: row, children: (0, jsx_runtime_1.jsxs)(SplitterContainer_1.SplitterContainer, { minFlex: 0.15, maxFlex: 0.4, defaultFlex: 0.2, id: "sidebar-to-preview", orientation: "vertical", children: [actualStateLeft === 'expanded' ? (isMobileLayout ? ((0, jsx_runtime_1.jsx)(MobilePanel_1.default, { onClose: onCollapseLeft, children: (0, jsx_runtime_1.jsx)(ExplorerPanel_1.ExplorerPanel, { readOnlyStudio: readOnlyStudio }) })) : ((0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "flexer", children: (0, jsx_runtime_1.jsx)(ExplorerPanel_1.ExplorerPanel, { readOnlyStudio: readOnlyStudio }) }))) : null, actualStateLeft === 'expanded' ? ((0, jsx_runtime_1.jsx)(SplitterHandle_1.SplitterHandle, { allowToCollapse: "left", onCollapse: onCollapseLeft })) : null, (0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "anti-flexer", children: (0, jsx_runtime_1.jsxs)(SplitterContainer_1.SplitterContainer, { minFlex: 0.5, maxFlex: 0.8, defaultFlex: 0.7, id: "canvas-to-right-sidebar", orientation: "vertical", children: [(0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "flexer", children: (0, jsx_runtime_1.jsx)("div", { ref: drawRef, style: canvasContainerStyle, children: sizeWithRulersApplied ? ((0, jsx_runtime_1.jsx)(CanvasOrLoading_1.CanvasOrLoading, { size: sizeWithRulersApplied })) : null }) }), actualStateRight === 'expanded' ? ((0, jsx_runtime_1.jsx)(SplitterHandle_1.SplitterHandle, { allowToCollapse: "right", onCollapse: onCollapseRight })) : null, actualStateRight === 'expanded' ? (isMobileLayout ? ((0, jsx_runtime_1.jsx)(MobilePanel_1.default, { onClose: onCollapseRight, children: (0, jsx_runtime_1.jsx)(OptionsPanel_1.OptionsPanel, { readOnlyStudio: readOnlyStudio }) })) : ((0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "anti-flexer", children: (0, jsx_runtime_1.jsx)(OptionsPanel_1.OptionsPanel, { readOnlyStudio: readOnlyStudio }) }))) : null] }) })] }) }), (0, jsx_runtime_1.jsx)(PreviewToolbar_1.PreviewToolbar, { bufferStateDelayInMilliseconds: bufferStateDelayInMilliseconds, readOnlyStudio: readOnlyStudio }), (0, jsx_runtime_1.jsx)(CurrentCompositionSideEffects_1.CurrentCompositionKeybindings, { readOnlyStudio: readOnlyStudio }), (0, jsx_runtime_1.jsx)(CurrentCompositionSideEffects_1.TitleUpdater, {})] }));
|
|
79
92
|
};
|
|
80
93
|
exports.TopPanel = TopPanel;
|
|
@@ -53,6 +53,6 @@ const UpdateModal = ({ info, knownBugs }) => {
|
|
|
53
53
|
(0, NotificationCenter_1.showNotification)(`Could not copy: ${err.message}`, 2000);
|
|
54
54
|
});
|
|
55
55
|
}, [command]);
|
|
56
|
-
return ((0, jsx_runtime_1.jsxs)(DismissableModal_1.DismissableModal, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.
|
|
56
|
+
return ((0, jsx_runtime_1.jsxs)(DismissableModal_1.DismissableModal, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: "Update available" }), (0, jsx_runtime_1.jsxs)("div", { style: container, children: [hasKnownBugs ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { style: title, children: ["The currently installed version ", info.currentVersion, " has the following known bugs:"] }), (0, jsx_runtime_1.jsx)(KnownBugs_1.KnownBugs, { bugs: knownBugs }), (0, jsx_runtime_1.jsx)("div", { style: { height: '20px' } }), (0, jsx_runtime_1.jsx)("div", { style: text, children: "To upgrade, run the following command:" })] })) : ((0, jsx_runtime_1.jsx)("div", { style: title, children: "A new update for Remotion is available! Run the following command:" })), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)(layout_1.Flex, { children: (0, jsx_runtime_1.jsx)("pre", { onClick: onClick, style: code, children: command }) }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), (0, jsx_runtime_1.jsx)(CopyButton_1.CopyButton, { textToCopy: command, label: "Copy", labelWhenCopied: "Copied!" })] }), (0, jsx_runtime_1.jsxs)("div", { style: text, children: ["This will upgrade Remotion from ", info.currentVersion, " to", ' ', info.latestVersion, "."] }), (0, jsx_runtime_1.jsxs)("div", { style: text, children: ["Read the", ' ', (0, jsx_runtime_1.jsx)("a", { style: link, target: "_blank", href: "https://github.com/remotion-dev/remotion/releases", children: "Release notes" }), ' ', "to know what", "'s", " new in Remotion."] })] })] }));
|
|
57
57
|
};
|
|
58
58
|
exports.UpdateModal = UpdateModal;
|