@remotion/cli 3.3.81 → 3.3.83

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 (90) hide show
  1. package/dist/cloudrun-command.d.ts +1 -0
  2. package/dist/cloudrun-command.js +27 -0
  3. package/dist/codemods/update-default-props.js +7 -8
  4. package/dist/color-math.d.ts +1 -0
  5. package/dist/color-math.js +12 -0
  6. package/dist/config/index.d.ts +1 -0
  7. package/dist/config/index.js +3 -0
  8. package/dist/config/jpeg-quality.d.ts +2 -0
  9. package/dist/config/jpeg-quality.js +17 -0
  10. package/dist/config/user-agent.d.ts +4 -0
  11. package/dist/config/user-agent.js +12 -0
  12. package/dist/editor/components/Canvas.js +1 -4
  13. package/dist/editor/components/CheckerboardProvider.d.ts +4 -0
  14. package/dist/editor/components/CheckerboardProvider.js +24 -0
  15. package/dist/editor/components/MediaVolumeProvider.d.ts +4 -0
  16. package/dist/editor/components/MediaVolumeProvider.js +25 -0
  17. package/dist/editor/components/Modals.js +1 -1
  18. package/dist/editor/components/ModalsProvider.d.ts +4 -0
  19. package/dist/editor/components/ModalsProvider.js +17 -0
  20. package/dist/editor/components/NewComposition/RemInputTypeColor.d.ts +8 -0
  21. package/dist/editor/components/NewComposition/RemInputTypeColor.js +53 -0
  22. package/dist/editor/components/PlayerEmitterContext.d.ts +4 -0
  23. package/dist/editor/components/PlayerEmitterContext.js +11 -0
  24. package/dist/editor/components/RenderButton.js +1 -1
  25. package/dist/editor/components/RenderModal/JpegQualitySetting.d.ts +2 -2
  26. package/dist/editor/components/RenderModal/JpegQualitySetting.js +4 -4
  27. package/dist/editor/components/RenderModal/RenderModal.d.ts +1 -1
  28. package/dist/editor/components/RenderModal/RenderModal.js +14 -13
  29. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +2 -0
  30. package/dist/editor/components/RenderModal/RenderModalData.d.ts +1 -1
  31. package/dist/editor/components/RenderModal/RenderModalData.js +50 -6
  32. package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.d.ts +1 -0
  33. package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.js +22 -2
  34. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +2 -2
  35. package/dist/editor/components/RenderModal/RenderModalPicture.js +2 -2
  36. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.js +2 -0
  37. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -2
  38. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +12 -4
  39. package/dist/editor/components/RenderModal/SchemaEditor/ZodColorEditor.d.ts +14 -0
  40. package/dist/editor/components/RenderModal/SchemaEditor/ZodColorEditor.js +108 -0
  41. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.js +0 -1
  42. package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.js +4 -1
  43. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.d.ts +15 -0
  44. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +45 -0
  45. package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.js +8 -0
  46. package/dist/editor/components/RenderModal/SchemaEditor/ZodUnionEditor.d.ts +14 -0
  47. package/dist/editor/components/RenderModal/SchemaEditor/ZodUnionEditor.js +45 -0
  48. package/dist/editor/components/RenderModal/SchemaEditor/create-zod-values.d.ts +2 -0
  49. package/dist/editor/components/RenderModal/SchemaEditor/create-zod-values.js +153 -0
  50. package/dist/editor/components/RenderModal/human-readable-codec.d.ts +1 -1
  51. package/dist/editor/components/RenderQueue/actions.d.ts +5 -4
  52. package/dist/editor/components/RenderQueue/actions.js +11 -5
  53. package/dist/editor/components/RenderToolbarIcon.js +4 -2
  54. package/dist/editor/components/RendersTab.js +3 -3
  55. package/dist/editor/components/RightPanel.js +3 -8
  56. package/dist/editor/components/SetTimelineInOutProvider.d.ts +4 -0
  57. package/dist/editor/components/SetTimelineInOutProvider.js +19 -0
  58. package/dist/editor/components/SidebarCollapserControls.d.ts +2 -0
  59. package/dist/editor/components/SidebarCollapserControls.js +122 -0
  60. package/dist/editor/components/SizeSelector.js +1 -1
  61. package/dist/editor/components/Tabs/index.d.ts +1 -0
  62. package/dist/editor/components/Tabs/index.js +12 -5
  63. package/dist/editor/components/Tabs/vertical.d.ts +12 -0
  64. package/dist/editor/components/Tabs/vertical.js +57 -0
  65. package/dist/editor/components/ZoomGesturesProvider.d.ts +4 -0
  66. package/dist/editor/components/ZoomGesturesProvider.js +24 -0
  67. package/dist/editor/helpers/render-modal-sections.d.ts +1 -0
  68. package/dist/ffmpeg.js +2 -2
  69. package/dist/get-cli-options.js +1 -0
  70. package/dist/parse-command-line.d.ts +1 -0
  71. package/dist/parse-command-line.js +3 -0
  72. package/dist/preview-server/api-routes.js +2 -0
  73. package/dist/preview-server/api-types.d.ts +2 -1
  74. package/dist/preview-server/render-queue/job.d.ts +13 -4
  75. package/dist/preview-server/render-queue/make-retry-payload.js +2 -2
  76. package/dist/preview-server/render-queue/process-still.js +1 -1
  77. package/dist/preview-server/render-queue/process-video.js +1 -1
  78. package/dist/preview-server/routes/add-render.js +2 -2
  79. package/dist/preview-server/routes/can-update-default-props.d.ts +4 -0
  80. package/dist/preview-server/routes/can-update-default-props.js +39 -0
  81. package/dist/preview-server/routes/update-default-props.js +3 -1
  82. package/dist/render-flows/render.d.ts +2 -2
  83. package/dist/render-flows/render.js +3 -3
  84. package/dist/render-flows/still.d.ts +2 -2
  85. package/dist/render-flows/still.js +2 -2
  86. package/package.json +6 -6
  87. package/dist/editor/components/CollapsedSidebarExpander.d.ts +0 -5
  88. package/dist/editor/components/CollapsedSidebarExpander.js +0 -41
  89. package/dist/editor/components/RenderModal/SchemaEditor/schema-serialization.d.ts +0 -2
  90. package/dist/editor/components/RenderModal/SchemaEditor/schema-serialization.js +0 -21
@@ -0,0 +1 @@
1
+ export declare const cloudrunCommand: (remotionRoot: string, args: string[]) => Promise<never>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cloudrunCommand = void 0;
4
+ const log_1 = require("./log");
5
+ const get_package_manager_1 = require("./preview-server/get-package-manager");
6
+ const update_available_1 = require("./preview-server/update-available");
7
+ const cloudrunCommand = async (remotionRoot, args) => {
8
+ try {
9
+ const path = require.resolve('@remotion/cloudrun', {
10
+ paths: [remotionRoot],
11
+ });
12
+ const { CloudrunInternals } = require(path);
13
+ await CloudrunInternals.executeCommand(args, remotionRoot);
14
+ process.exit(0);
15
+ }
16
+ catch (err) {
17
+ const manager = (0, get_package_manager_1.getPackageManager)(remotionRoot, undefined);
18
+ const installCommand = manager === 'unknown' ? 'npm i' : manager.installCommand;
19
+ log_1.Log.error(err);
20
+ log_1.Log.error('Remotion CloudRun is not installed.');
21
+ log_1.Log.info('');
22
+ log_1.Log.info('You can install it using:');
23
+ log_1.Log.info(`${installCommand} @remotion/cloudrun@${(0, update_available_1.getRemotionVersion)()}`);
24
+ process.exit(1);
25
+ }
26
+ };
27
+ exports.cloudrunCommand = cloudrunCommand;
@@ -61,7 +61,7 @@ const findEndPosition = (input, currentPosition) => {
61
61
  }
62
62
  throw new Error('Could not find end of defaultProps');
63
63
  };
64
- const findEnder = (input, position, maxPosition) => {
64
+ const findEnder = (input, position, maxPosition, compositionId) => {
65
65
  let currentPosition = position;
66
66
  while (currentPosition < maxPosition) {
67
67
  const next = findEndPosition(input, currentPosition);
@@ -72,7 +72,7 @@ const findEnder = (input, position, maxPosition) => {
72
72
  }
73
73
  return [position, currentPosition + 1];
74
74
  }
75
- throw new Error('did not find string');
75
+ throw new Error(`No \`defaultProps\` prop found in the <Composition/> tag with the ID "${compositionId}".`);
76
76
  };
77
77
  const findTerminators = (input, position) => {
78
78
  const nextComposition = input.indexOf('<Composition', position);
@@ -101,23 +101,22 @@ const stringifyDefaultProps = (props) => {
101
101
  .replace(/__ADD_AS_CONST__"/g, '" as const');
102
102
  };
103
103
  // TODO: Add more sanity checks
104
- // TODO: better error messages
105
104
  const updateDefaultProps = async ({ input, compositionId, newDefaultProps, }) => {
106
105
  const starter = findStarter({ input, compositionId });
107
106
  const START_TOKEN = 'defaultProps={';
108
107
  const start = input.indexOf(START_TOKEN, starter);
109
108
  if (start === -1) {
110
- throw new Error('Could not find defaultProps in <Composition> tag');
109
+ throw new Error(`No \`defaultProps\` prop found in the <Composition/> tag with the ID "${compositionId}".`);
111
110
  }
112
111
  const maxEnd = findTerminators(input, starter);
113
- const [startPos, endPos] = findEnder(input, start + START_TOKEN.length, maxEnd);
112
+ const [startPos, endPos] = findEnder(input, start + START_TOKEN.length, maxEnd, compositionId);
114
113
  // eslint-disable-next-line @typescript-eslint/consistent-type-imports
115
114
  let prettier = null;
116
115
  try {
117
116
  prettier = await Promise.resolve().then(() => __importStar(require('prettier')));
118
117
  }
119
118
  catch (err) {
120
- throw new Error('Cannot save default props because Prettier cannot be found in the current project.');
119
+ throw new Error('Prettier cannot be found in the current project.');
121
120
  }
122
121
  const { format, resolveConfig, resolveConfigFile } = prettier;
123
122
  const newFile = input.substring(0, startPos) +
@@ -125,11 +124,11 @@ const updateDefaultProps = async ({ input, compositionId, newDefaultProps, }) =>
125
124
  input.substring(endPos);
126
125
  const configFilePath = await resolveConfigFile();
127
126
  if (!configFilePath) {
128
- throw new Error('prettier config file not found');
127
+ throw new Error('The Prettier config file was not found');
129
128
  }
130
129
  const prettierConfig = await resolveConfig(configFilePath);
131
130
  if (!prettierConfig) {
132
- throw new Error('Prettier config not found');
131
+ throw new Error(`The Prettier config at ${configFilePath} could not be read`);
133
132
  }
134
133
  const prettified = format(newFile, {
135
134
  ...prettierConfig,
@@ -0,0 +1 @@
1
+ export declare const colorWithNewOpacity: (color: string, opacity: number) => string;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.colorWithNewOpacity = void 0;
4
+ const remotion_1 = require("remotion");
5
+ const colorWithNewOpacity = (color, opacity) => {
6
+ const { r, g, b } = remotion_1.Internals.parseColor(color);
7
+ if (opacity >= 255) {
8
+ return `#${r.toString(16)}${g.toString(16)}${b.toString(16)}`;
9
+ }
10
+ return `rgba(${r}, ${g}, ${b}, ${(opacity / 255).toFixed(2)})`;
11
+ };
12
+ exports.colorWithNewOpacity = colorWithNewOpacity;
@@ -56,5 +56,6 @@ export declare const ConfigInternals: {
56
56
  getNumberOfGifLoops: () => import("./number-of-gif-loops").Loop;
57
57
  getWebpackPolling: () => number | null;
58
58
  getShouldOpenBrowser: () => boolean;
59
+ getChromiumUserAgent: () => string | null;
59
60
  };
60
61
  export declare const overrideRemotion: () => void;
@@ -82,6 +82,7 @@ const public_dir_1 = require("./public-dir");
82
82
  const quality_2 = require("./quality");
83
83
  const scale_2 = require("./scale");
84
84
  const timeout_2 = require("./timeout");
85
+ const user_agent_1 = require("./user-agent");
85
86
  const webpack_caching_2 = require("./webpack-caching");
86
87
  const webpack_poll_1 = require("./webpack-poll");
87
88
  const width_1 = require("./width");
@@ -110,6 +111,7 @@ const Puppeteer = {
110
111
  setChromiumIgnoreCertificateErrors: chromium_flags_2.setChromiumIgnoreCertificateErrors,
111
112
  setChromiumHeadlessMode: chromium_flags_2.setChromiumHeadlessMode,
112
113
  setChromiumOpenGlRenderer: chromium_flags_2.setChromiumOpenGlRenderer,
114
+ setChromiumUserAgent: user_agent_1.setChromiumUserAgent,
113
115
  };
114
116
  const Rendering = {
115
117
  setDotEnvLocation: env_file_2.setDotEnvLocation,
@@ -207,6 +209,7 @@ exports.ConfigInternals = {
207
209
  getNumberOfGifLoops: number_of_gif_loops_1.getNumberOfGifLoops,
208
210
  getWebpackPolling: webpack_poll_1.getWebpackPolling,
209
211
  getShouldOpenBrowser: open_browser_1.getShouldOpenBrowser,
212
+ getChromiumUserAgent: user_agent_1.getChromiumUserAgent,
210
213
  };
211
214
  const overrideRemotion = () => {
212
215
  Object.assign(remotion_1.Config, exports.Config);
@@ -0,0 +1,2 @@
1
+ export declare const setJpegQuality: (q: number | undefined) => void;
2
+ export declare const getJpegQuality: () => number | undefined;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getJpegQuality = exports.setJpegQuality = void 0;
4
+ const renderer_1 = require("@remotion/renderer");
5
+ const defaultValue = undefined;
6
+ let quality = defaultValue;
7
+ const setJpegQuality = (q) => {
8
+ renderer_1.RenderInternals.validateJpegQuality(q);
9
+ if (q === 0 || q === undefined) {
10
+ quality = defaultValue;
11
+ return;
12
+ }
13
+ quality = q;
14
+ };
15
+ exports.setJpegQuality = setJpegQuality;
16
+ const getJpegQuality = () => quality;
17
+ exports.getJpegQuality = getJpegQuality;
@@ -0,0 +1,4 @@
1
+ declare type UserAgent = string | null;
2
+ export declare const setChromiumUserAgent: (newAgent: UserAgent) => void;
3
+ export declare const getChromiumUserAgent: () => UserAgent;
4
+ export {};
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getChromiumUserAgent = exports.setChromiumUserAgent = void 0;
4
+ let userAgent = null;
5
+ const setChromiumUserAgent = (newAgent) => {
6
+ userAgent = newAgent;
7
+ };
8
+ exports.setChromiumUserAgent = setChromiumUserAgent;
9
+ const getChromiumUserAgent = () => {
10
+ return userAgent;
11
+ };
12
+ exports.getChromiumUserAgent = getChromiumUserAgent;
@@ -37,10 +37,7 @@ const Canvas = () => {
37
37
  triggerOnWindowResize: false,
38
38
  shouldApplyCssTransforms: true,
39
39
  });
40
- const isFit = previewSize.size === 'auto' ||
41
- (previewSize.size === 1 &&
42
- previewSize.translation.x === 0 &&
43
- previewSize.translation.y === 0);
40
+ const isFit = previewSize.size === 'auto';
44
41
  const onWheel = (0, react_1.useCallback)((e) => {
45
42
  if (!editorZoomGestures) {
46
43
  return;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const CheckerboardProvider: React.FC<{
3
+ children: React.ReactNode;
4
+ }>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CheckerboardProvider = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const checkerboard_1 = require("../state/checkerboard");
7
+ const CheckerboardProvider = ({ children }) => {
8
+ const [checkerboard, setCheckerboardState] = (0, react_1.useState)(() => (0, checkerboard_1.loadCheckerboardOption)());
9
+ const setCheckerboard = (0, react_1.useCallback)((newValue) => {
10
+ setCheckerboardState((prevState) => {
11
+ const newVal = newValue(prevState);
12
+ (0, checkerboard_1.persistCheckerboardOption)(newVal);
13
+ return newVal;
14
+ });
15
+ }, []);
16
+ const checkerboardCtx = (0, react_1.useMemo)(() => {
17
+ return {
18
+ checkerboard,
19
+ setCheckerboard,
20
+ };
21
+ }, [checkerboard, setCheckerboard]);
22
+ return ((0, jsx_runtime_1.jsx)(checkerboard_1.CheckerboardContext.Provider, { value: checkerboardCtx, children: children }));
23
+ };
24
+ exports.CheckerboardProvider = CheckerboardProvider;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const MediaVolumeProvider: React.FC<{
3
+ children: React.ReactNode;
4
+ }>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MediaVolumeProvider = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const remotion_1 = require("remotion");
7
+ const mute_1 = require("../state/mute");
8
+ const MediaVolumeProvider = ({ children }) => {
9
+ const [mediaMuted, setMediaMuted] = (0, react_1.useState)(() => (0, mute_1.loadMuteOption)());
10
+ const [mediaVolume, setMediaVolume] = (0, react_1.useState)(1);
11
+ const mediaVolumeContextValue = (0, react_1.useMemo)(() => {
12
+ return {
13
+ mediaMuted,
14
+ mediaVolume,
15
+ };
16
+ }, [mediaMuted, mediaVolume]);
17
+ const setMediaVolumeContextValue = (0, react_1.useMemo)(() => {
18
+ return {
19
+ setMediaMuted,
20
+ setMediaVolume,
21
+ };
22
+ }, []);
23
+ return ((0, jsx_runtime_1.jsx)(remotion_1.Internals.MediaVolumeContext.Provider, { value: mediaVolumeContextValue, children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.SetMediaVolumeContext.Provider, { value: setMediaVolumeContextValue, children: children }) }));
24
+ };
25
+ exports.MediaVolumeProvider = MediaVolumeProvider;
@@ -16,7 +16,7 @@ const UpdateModal_1 = require("./UpdateModal/UpdateModal");
16
16
  const Modals = () => {
17
17
  const { selectedModal: modalContextType } = (0, react_1.useContext)(modals_1.ModalsContext);
18
18
  const canRender = (0, react_1.useContext)(client_id_1.PreviewServerConnectionCtx).type === 'connected';
19
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [modalContextType && modalContextType.type === 'new-comp' && ((0, jsx_runtime_1.jsx)(NewComposition_1.default, { initialCompType: modalContextType.compType })), modalContextType && canRender && modalContextType.type === 'render' && ((0, jsx_runtime_1.jsx)(RenderModal_1.RenderModal, { initialFrame: modalContextType.initialFrame, compositionId: modalContextType.compositionId, initialVideoImageFormat: modalContextType.initialVideoImageFormat, initialQuality: modalContextType.initialQuality, initialOutName: modalContextType.initialOutName, initialScale: modalContextType.initialScale, initialVerbose: modalContextType.initialVerbose, initialRenderType: modalContextType.initialRenderType, initialVideoCodecForAudioTab: modalContextType.initialVideoCodecForAudioTab, initialVideoCodecForVideoTab: modalContextType.initialVideoCodecForVideoTab, initialConcurrency: modalContextType.initialConcurrency, maxConcurrency: modalContextType.maxConcurrency, minConcurrency: modalContextType.minConcurrency, initialStillImageFormat: modalContextType.initialStillImageFormat, initialMuted: modalContextType.initialMuted, initialEnforceAudioTrack: modalContextType.initialEnforceAudioTrack, initialProResProfile: modalContextType.initialProResProfile, initialPixelFormat: modalContextType.initialPixelFormat, initialAudioBitrate: modalContextType.initialAudioBitrate, initialVideoBitrate: modalContextType.initialVideoBitrate, initialEveryNthFrame: modalContextType.initialEveryNthFrame, initialNumberOfGifLoops: modalContextType.initialNumberOfGifLoops, initialDelayRenderTimeout: modalContextType.initialDelayRenderTimeout, initialAudioCodec: modalContextType.initialAudioCodec, initialEnvVariables: modalContextType.initialEnvVariables, initialDisableWebSecurity: modalContextType.initialDisableWebSecurity, initialGl: modalContextType.initialOpenGlRenderer, initialHeadless: modalContextType.initialHeadless, initialIgnoreCertificateErrors: modalContextType.initialIgnoreCertificateErrors })), modalContextType &&
19
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [modalContextType && modalContextType.type === 'new-comp' && ((0, jsx_runtime_1.jsx)(NewComposition_1.default, { initialCompType: modalContextType.compType })), modalContextType && canRender && modalContextType.type === 'render' && ((0, jsx_runtime_1.jsx)(RenderModal_1.RenderModal, { initialFrame: modalContextType.initialFrame, compositionId: modalContextType.compositionId, initialVideoImageFormat: modalContextType.initialVideoImageFormat, initialJpegQuality: modalContextType.initialJpegQuality, initialOutName: modalContextType.initialOutName, initialScale: modalContextType.initialScale, initialVerbose: modalContextType.initialVerbose, initialRenderType: modalContextType.initialRenderType, initialVideoCodecForAudioTab: modalContextType.initialVideoCodecForAudioTab, initialVideoCodecForVideoTab: modalContextType.initialVideoCodecForVideoTab, initialConcurrency: modalContextType.initialConcurrency, maxConcurrency: modalContextType.maxConcurrency, minConcurrency: modalContextType.minConcurrency, initialStillImageFormat: modalContextType.initialStillImageFormat, initialMuted: modalContextType.initialMuted, initialEnforceAudioTrack: modalContextType.initialEnforceAudioTrack, initialProResProfile: modalContextType.initialProResProfile, initialPixelFormat: modalContextType.initialPixelFormat, initialAudioBitrate: modalContextType.initialAudioBitrate, initialVideoBitrate: modalContextType.initialVideoBitrate, initialEveryNthFrame: modalContextType.initialEveryNthFrame, initialNumberOfGifLoops: modalContextType.initialNumberOfGifLoops, initialDelayRenderTimeout: modalContextType.initialDelayRenderTimeout, initialAudioCodec: modalContextType.initialAudioCodec, initialEnvVariables: modalContextType.initialEnvVariables, initialDisableWebSecurity: modalContextType.initialDisableWebSecurity, initialGl: modalContextType.initialOpenGlRenderer, initialHeadless: modalContextType.initialHeadless, initialIgnoreCertificateErrors: modalContextType.initialIgnoreCertificateErrors })), modalContextType &&
20
20
  canRender &&
21
21
  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 })), modalContextType && modalContextType.type === 'quick-switcher' && ((0, jsx_runtime_1.jsx)(QuickSwitcher_1.default, { invocationTimestamp: modalContextType.invocationTimestamp, initialMode: modalContextType.mode }))] }));
22
22
  };
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const ModalsProvider: React.FC<{
3
+ children: React.ReactNode;
4
+ }>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModalsProvider = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const modals_1 = require("../state/modals");
7
+ const ModalsProvider = ({ children }) => {
8
+ const [modalContextType, setModalContextType] = (0, react_1.useState)(null);
9
+ const modalsContext = (0, react_1.useMemo)(() => {
10
+ return {
11
+ selectedModal: modalContextType,
12
+ setSelectedModal: setModalContextType,
13
+ };
14
+ }, [modalContextType]);
15
+ return ((0, jsx_runtime_1.jsx)(modals_1.ModalsContext.Provider, { value: modalsContext, children: children }));
16
+ };
17
+ exports.ModalsProvider = ModalsProvider;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import type { RemInputStatus } from './RemInput';
3
+ declare type Props = React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> & {
4
+ status: RemInputStatus;
5
+ };
6
+ export declare const inputBaseStyle: React.CSSProperties;
7
+ export declare const RemInputTypeColor: React.ForwardRefExoticComponent<Pick<Props, "key" | "status" | keyof React.InputHTMLAttributes<HTMLInputElement>> & React.RefAttributes<HTMLInputElement>>;
8
+ export {};
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RemInputTypeColor = exports.inputBaseStyle = 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 z_index_1 = require("../../state/z-index");
8
+ const RemInput_1 = require("./RemInput");
9
+ exports.inputBaseStyle = {
10
+ padding: 0,
11
+ borderStyle: 'solid',
12
+ borderWidth: 1,
13
+ };
14
+ const RemInputTypeColorForwardRef = ({ status, ...props }, ref) => {
15
+ const [isFocused, setIsFocused] = (0, react_1.useState)(false);
16
+ const [isHovered, setIsHovered] = (0, react_1.useState)(false);
17
+ const inputRef = (0, react_1.useRef)(null);
18
+ const { tabIndex } = (0, z_index_1.useZIndex)();
19
+ const style = (0, react_1.useMemo)(() => {
20
+ var _a;
21
+ return {
22
+ backgroundColor: colors_1.INPUT_BACKGROUND,
23
+ ...exports.inputBaseStyle,
24
+ borderColor: (0, RemInput_1.getInputBorderColor)({ isFocused, isHovered, status }),
25
+ ...((_a = props.style) !== null && _a !== void 0 ? _a : {}),
26
+ };
27
+ }, [isFocused, isHovered, props.style, status]);
28
+ (0, react_1.useImperativeHandle)(ref, () => {
29
+ return inputRef.current;
30
+ }, []);
31
+ (0, react_1.useEffect)(() => {
32
+ if (!inputRef.current) {
33
+ return;
34
+ }
35
+ const { current } = inputRef;
36
+ const onFocus = () => setIsFocused(true);
37
+ const onBlur = () => setIsFocused(false);
38
+ const onMouseEnter = () => setIsHovered(true);
39
+ const onMouseLeave = () => setIsHovered(false);
40
+ current.addEventListener('focus', onFocus);
41
+ current.addEventListener('blur', onBlur);
42
+ current.addEventListener('mouseenter', onMouseEnter);
43
+ current.addEventListener('mouseleave', onMouseLeave);
44
+ return () => {
45
+ current.removeEventListener('focus', onFocus);
46
+ current.removeEventListener('blur', onBlur);
47
+ current.removeEventListener('mouseenter', onMouseEnter);
48
+ current.removeEventListener('mouseleave', onMouseLeave);
49
+ };
50
+ }, [inputRef]);
51
+ return ((0, jsx_runtime_1.jsx)("input", { ref: inputRef, type: "color", tabIndex: tabIndex, ...props, style: style }));
52
+ };
53
+ exports.RemInputTypeColor = (0, react_1.forwardRef)(RemInputTypeColorForwardRef);
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const PlayerEmitterContext: React.FC<{
3
+ children: React.ReactNode;
4
+ }>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlayerEmitterContext = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const player_1 = require("@remotion/player");
6
+ const react_1 = require("react");
7
+ const PlayerEmitterContext = ({ children }) => {
8
+ const [emitter] = (0, react_1.useState)(() => new player_1.PlayerInternals.PlayerEmitter());
9
+ return ((0, jsx_runtime_1.jsx)(player_1.PlayerInternals.PlayerEventEmitterContext.Provider, { value: emitter, children: children }));
10
+ };
11
+ exports.PlayerEmitterContext = PlayerEmitterContext;
@@ -34,7 +34,7 @@ const RenderButton = ({ composition, visible }) => {
34
34
  initialFrame: 0,
35
35
  initialVideoImageFormat: defaults.videoImageFormat,
36
36
  initialStillImageFormat: defaults.stillImageFormat,
37
- initialQuality: defaults.quality,
37
+ initialJpegQuality: defaults.jpegQuality,
38
38
  initialScale: defaults.scale,
39
39
  initialVerbose: defaults.logLevel === 'verbose',
40
40
  initialOutName: (0, get_default_out_name_1.getDefaultOutLocation)({
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  export declare const JpegQualitySetting: React.FC<{
3
- quality: number;
4
- setQuality: (value: React.SetStateAction<number>) => void;
3
+ jpegQuality: number;
4
+ setJpegQuality: (value: React.SetStateAction<number>) => void;
5
5
  }>;
@@ -4,9 +4,9 @@ exports.JpegQualitySetting = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const client_1 = require("@remotion/renderer/client");
6
6
  const NumberSetting_1 = require("./NumberSetting");
7
- const MIN_QUALITY = 1;
8
- const MAX_QUALITY = 100;
9
- const JpegQualitySetting = ({ quality: scale, setQuality: setScale }) => {
10
- return ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: MIN_QUALITY, max: MAX_QUALITY, step: 1, name: "JPEG Quality", onValueChanged: setScale, value: scale, hint: client_1.BrowserSafeApis.options.jpegQualityOption }));
7
+ const MIN_JPEG_QUALITY = 1;
8
+ const MAX_JPEG_QUALITY = 100;
9
+ const JpegQualitySetting = ({ jpegQuality, setJpegQuality }) => {
10
+ return ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: MIN_JPEG_QUALITY, max: MAX_JPEG_QUALITY, step: 1, name: "JPEG Quality", onValueChanged: setJpegQuality, value: jpegQuality, hint: client_1.BrowserSafeApis.options.jpegQualityOption }));
11
11
  };
12
12
  exports.JpegQualitySetting = JpegQualitySetting;
@@ -6,7 +6,7 @@ export declare const RenderModal: React.FC<{
6
6
  initialFrame: number;
7
7
  initialVideoImageFormat: VideoImageFormat;
8
8
  initialStillImageFormat: StillImageFormat;
9
- initialQuality: number;
9
+ initialJpegQuality: number;
10
10
  initialScale: number;
11
11
  initialVerbose: boolean;
12
12
  initialOutName: string;
@@ -24,7 +24,7 @@ const ModalHeader_1 = require("../ModalHeader");
24
24
  const actions_1 = require("../RenderQueue/actions");
25
25
  const RightPanel_1 = require("../RightPanel");
26
26
  const SegmentedControl_1 = require("../SegmentedControl");
27
- const Tabs_1 = require("../Tabs");
27
+ const vertical_1 = require("../Tabs/vertical");
28
28
  const CrfSetting_1 = require("./CrfSetting");
29
29
  const out_name_checker_1 = require("./out-name-checker");
30
30
  const RenderModalAdvanced_1 = require("./RenderModalAdvanced");
@@ -103,7 +103,8 @@ const buttonStyle = {
103
103
  const flexer = {
104
104
  flex: 1,
105
105
  };
106
- const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, initialStillImageFormat, initialQuality, initialScale, initialVerbose, initialOutName, initialRenderType, initialVideoCodecForAudioTab, initialVideoCodecForVideoTab, initialConcurrency, maxConcurrency, minConcurrency, initialMuted, initialEnforceAudioTrack, initialProResProfile, initialPixelFormat, initialVideoBitrate, initialAudioBitrate, initialEveryNthFrame, initialNumberOfGifLoops, initialDelayRenderTimeout, initialAudioCodec, initialEnvVariables, initialDisableWebSecurity, initialGl, initialHeadless, initialIgnoreCertificateErrors, }) => {
106
+ // TODO: Copy edited props from Props editor to Render modal
107
+ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, initialStillImageFormat, initialJpegQuality, initialScale, initialVerbose, initialOutName, initialRenderType, initialVideoCodecForAudioTab, initialVideoCodecForVideoTab, initialConcurrency, maxConcurrency, minConcurrency, initialMuted, initialEnforceAudioTrack, initialProResProfile, initialPixelFormat, initialVideoBitrate, initialAudioBitrate, initialEveryNthFrame, initialNumberOfGifLoops, initialDelayRenderTimeout, initialAudioCodec, initialEnvVariables, initialDisableWebSecurity, initialGl, initialHeadless, initialIgnoreCertificateErrors, }) => {
107
108
  const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
108
109
  const onQuit = (0, react_1.useCallback)(() => {
109
110
  setSelectedModal(null);
@@ -121,7 +122,7 @@ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, ini
121
122
  const [mutedState, setMuted] = (0, react_1.useState)(() => initialMuted);
122
123
  const [enforceAudioTrackState, setEnforceAudioTrackState] = (0, react_1.useState)(() => initialEnforceAudioTrack);
123
124
  const [renderMode, setRenderModeState] = (0, react_1.useState)(initialRenderType);
124
- const [quality, setQuality] = (0, react_1.useState)(() => initialQuality);
125
+ const [jpegQuality, setJpegQuality] = (0, react_1.useState)(() => initialJpegQuality);
125
126
  const [scale, setScale] = (0, react_1.useState)(() => initialScale);
126
127
  const [verbose, setVerboseLogging] = (0, react_1.useState)(() => initialVerbose);
127
128
  const [disallowParallelEncoding, setDisallowParallelEncoding] = (0, react_1.useState)(false);
@@ -284,10 +285,10 @@ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, ini
284
285
  setStillImageFormat(format);
285
286
  setDefaultOutName({ type: 'still', imageFormat: format });
286
287
  }, [setDefaultOutName]);
287
- const { setSidebarCollapsedStateRight } = (0, react_1.useContext)(sidebar_1.SidebarContext);
288
+ const { setSidebarCollapsedState } = (0, react_1.useContext)(sidebar_1.SidebarContext);
288
289
  const onClickStill = (0, react_1.useCallback)(() => {
289
290
  var _a;
290
- setSidebarCollapsedStateRight('expanded');
291
+ setSidebarCollapsedState({ left: null, right: 'expanded' });
291
292
  (0, RightPanel_1.persistSelectedPanel)('renders');
292
293
  (_a = RightPanel_1.rightSidebarTabs.current) === null || _a === void 0 ? void 0 : _a.selectRendersPanel();
293
294
  dispatchIfMounted({ type: 'start' });
@@ -295,7 +296,7 @@ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, ini
295
296
  compositionId,
296
297
  outName,
297
298
  imageFormat: stillImageFormat,
298
- quality: stillImageFormat === 'jpeg' ? quality : null,
299
+ jpegQuality: stillImageFormat === 'jpeg' ? jpegQuality : null,
299
300
  frame,
300
301
  scale,
301
302
  verbose,
@@ -312,12 +313,12 @@ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, ini
312
313
  dispatchIfMounted({ type: 'fail' });
313
314
  });
314
315
  }, [
315
- setSidebarCollapsedStateRight,
316
+ setSidebarCollapsedState,
316
317
  dispatchIfMounted,
317
318
  compositionId,
318
319
  outName,
319
320
  stillImageFormat,
320
- quality,
321
+ jpegQuality,
321
322
  frame,
322
323
  scale,
323
324
  verbose,
@@ -337,7 +338,7 @@ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, ini
337
338
  const audioCodec = deriveFinalAudioCodec(codec, userSelectedAudioCodec);
338
339
  const onClickVideo = (0, react_1.useCallback)(() => {
339
340
  var _a;
340
- setSidebarCollapsedStateRight('expanded');
341
+ setSidebarCollapsedState({ left: null, right: 'expanded' });
341
342
  (0, RightPanel_1.persistSelectedPanel)('renders');
342
343
  (_a = RightPanel_1.rightSidebarTabs.current) === null || _a === void 0 ? void 0 : _a.selectRendersPanel();
343
344
  dispatchIfMounted({ type: 'start' });
@@ -345,7 +346,7 @@ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, ini
345
346
  compositionId,
346
347
  outName,
347
348
  imageFormat: videoImageFormat,
348
- quality: stillImageFormat === 'jpeg' ? quality : null,
349
+ jpegQuality: stillImageFormat === 'jpeg' ? jpegQuality : null,
349
350
  scale,
350
351
  verbose,
351
352
  codec,
@@ -376,13 +377,13 @@ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, ini
376
377
  dispatchIfMounted({ type: 'fail' });
377
378
  });
378
379
  }, [
379
- setSidebarCollapsedStateRight,
380
+ setSidebarCollapsedState,
380
381
  dispatchIfMounted,
381
382
  compositionId,
382
383
  outName,
383
384
  videoImageFormat,
384
385
  stillImageFormat,
385
- quality,
386
+ jpegQuality,
386
387
  scale,
387
388
  verbose,
388
389
  codec,
@@ -561,6 +562,6 @@ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, ini
561
562
  backgroundColor: outnameValidation.valid
562
563
  ? 'var(--blue)'
563
564
  : 'var(--blue-disabled)',
564
- }, 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)(Tabs_1.Tab, { 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)(Tabs_1.Tab, { 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)(Tabs_1.Tab, { 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)(Tabs_1.Tab, { 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)(Tabs_1.Tab, { 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)(Tabs_1.Tab, { 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: rightPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: tab === 'general' ? ((0, jsx_runtime_1.jsx)(RenderModalBasic_1.RenderModalBasic, { codec: codec, currentComposition: currentComposition, 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, setPixelFormat: setPixelFormat, imageFormatOptions: imageFormatOptions, crf: crf, setCrf: setCrf, customTargetVideoBitrate: customTargetVideoBitrate, maxCrf: maxCrf, minCrf: minCrf, quality: quality, qualityControlType: qualityControlType, setQuality: setQuality, setCustomTargetVideoBitrateValue: setCustomTargetVideoBitrateValue, setQualityControl: setQualityControl, shouldDisplayCrfOption: shouldDisplayCrfOption, videoImageFormat: videoImageFormat, stillImageFormat: stillImageFormat })) : 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 })) : 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)(RenderModalData_1.RenderModalData, { inputProps: inputProps, setInputProps: setInputProps, composition: currentComposition, compact: false, showSaveButton: false })) : ((0, jsx_runtime_1.jsx)(RenderModalAdvanced_1.RenderModalAdvanced, { concurrency: concurrency, maxConcurrency: maxConcurrency, minConcurrency: minConcurrency, renderMode: renderMode, setConcurrency: setConcurrency, setVerboseLogging: setVerboseLogging, verbose: verbose, 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 })) })] })] }));
565
+ }, 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: rightPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: tab === 'general' ? ((0, jsx_runtime_1.jsx)(RenderModalBasic_1.RenderModalBasic, { codec: codec, currentComposition: currentComposition, 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, setPixelFormat: setPixelFormat, imageFormatOptions: imageFormatOptions, crf: crf, setCrf: setCrf, customTargetVideoBitrate: customTargetVideoBitrate, maxCrf: maxCrf, minCrf: minCrf, jpegQuality: jpegQuality, qualityControlType: qualityControlType, setJpegQuality: setJpegQuality, setCustomTargetVideoBitrateValue: setCustomTargetVideoBitrateValue, setQualityControl: setQualityControl, shouldDisplayCrfOption: shouldDisplayCrfOption, videoImageFormat: videoImageFormat, stillImageFormat: stillImageFormat })) : 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 })) : 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)(RenderModalData_1.RenderModalData, { inputProps: inputProps, setInputProps: setInputProps, composition: currentComposition, compact: false, mayShowSaveButton: false })) : ((0, jsx_runtime_1.jsx)(RenderModalAdvanced_1.RenderModalAdvanced, { concurrency: concurrency, maxConcurrency: maxConcurrency, minConcurrency: minConcurrency, renderMode: renderMode, setConcurrency: setConcurrency, setVerboseLogging: setVerboseLogging, verbose: verbose, 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 })) })] })] }));
565
566
  };
566
567
  exports.RenderModal = RenderModal;
@@ -51,8 +51,10 @@ const RenderModalAdvanced = ({ renderMode, maxConcurrency, minConcurrency, setCo
51
51
  });
52
52
  }, [extendedOpenGlOptions, openGlOption, setOpenGlOption]);
53
53
  return ((0, jsx_runtime_1.jsxs)("div", { style: container, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: [renderMode === 'still' ? null : ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: minConcurrency, max: maxConcurrency, step: 1, name: "Concurrency", formatter: (w) => `${w}x`, onValueChanged: setConcurrency, value: concurrency })), (0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting
54
+ // TODO: Should be right aligned
54
55
  // Also appears in packages/renderer/src/validate-puppeteer-timeout.ts
55
56
  , {
57
+ // TODO: Should be right aligned
56
58
  // Also appears in packages/renderer/src/validate-puppeteer-timeout.ts
57
59
  min: 7000, max: 900000, name: "delayRender() timeout", onValueChanged: setDelayRenderTimeout, formatter: (w) => `${w}ms`, step: 1000, value: delayRenderTimeout }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "No parallel encoding" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: disallowParallelEncoding, onChange: onDisallowParallelEncodingChanged }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Verbose logging" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: verbose, onChange: onVerboseLoggingChanged }) })] }), (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Disable web security" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: disableWebSecurity, onChange: onDisableWebSecurityChanged }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Ignore certificate errors " }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: ignoreCertificateErrors, onChange: onIgnoreCertificatErrors }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Headless mode" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: headless, onChange: onHeadless }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "OpenGL render backend" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(ComboBox_1.Combobox, { values: openGlOptions, selectedId: openGlOption, title: "OpenGl option" }) })] }), (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}), (0, jsx_runtime_1.jsx)(RenderModalEnvironmentVariables_1.RenderModalEnvironmentVariables, { envVariables: envVariables, setEnvVariables: setEnvVariables })] }));
58
60
  };
@@ -5,5 +5,5 @@ export declare const RenderModalData: React.FC<{
5
5
  inputProps: unknown;
6
6
  setInputProps: React.Dispatch<React.SetStateAction<unknown>>;
7
7
  compact: boolean;
8
- showSaveButton: boolean;
8
+ mayShowSaveButton: boolean;
9
9
  }>;