@remotion/cli 3.2.38 → 3.2.40

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 (76) hide show
  1. package/dist/benchmark.js +7 -6
  2. package/dist/compositions.d.ts +1 -1
  3. package/dist/compositions.js +4 -3
  4. package/dist/config/entry-point.d.ts +2 -0
  5. package/dist/config/entry-point.js +12 -0
  6. package/dist/config/every-nth-frame.d.ts +1 -2
  7. package/dist/config/every-nth-frame.js +3 -11
  8. package/dist/config/height.d.ts +2 -2
  9. package/dist/config/height.js +6 -7
  10. package/dist/config/index.d.ts +5 -2
  11. package/dist/config/index.js +15 -8
  12. package/dist/config/number-of-gif-loops.d.ts +1 -2
  13. package/dist/config/number-of-gif-loops.js +3 -9
  14. package/dist/config/width.d.ts +2 -2
  15. package/dist/config/width.js +7 -6
  16. package/dist/editor/components/Canvas.js +3 -0
  17. package/dist/editor/components/Editor.js +1 -2
  18. package/dist/editor/components/GlobalKeybindings.js +9 -1
  19. package/dist/editor/components/KeyboardShortcutsExplainer.d.ts +2 -0
  20. package/dist/editor/components/KeyboardShortcutsExplainer.js +56 -0
  21. package/dist/editor/components/NewComposition/MenuContent.js +7 -0
  22. package/dist/editor/components/PlayPause.js +6 -0
  23. package/dist/editor/components/PlaybackKeyboardShortcutsManager.js +3 -0
  24. package/dist/editor/components/QuickSwitcher/AlgoliaCredit.d.ts +2 -0
  25. package/dist/editor/components/QuickSwitcher/AlgoliaCredit.js +11 -0
  26. package/dist/editor/components/QuickSwitcher/NoResults.d.ts +2 -2
  27. package/dist/editor/components/QuickSwitcher/NoResults.js +6 -1
  28. package/dist/editor/components/QuickSwitcher/QuickSwitcher.d.ts +5 -1
  29. package/dist/editor/components/QuickSwitcher/QuickSwitcher.js +2 -2
  30. package/dist/editor/components/QuickSwitcher/QuickSwitcherContent.d.ts +5 -1
  31. package/dist/editor/components/QuickSwitcher/QuickSwitcherContent.js +117 -27
  32. package/dist/editor/components/QuickSwitcher/QuickSwitcherResult.d.ts +4 -0
  33. package/dist/editor/components/QuickSwitcher/QuickSwitcherResult.js +27 -8
  34. package/dist/editor/components/QuickSwitcher/algolia-search.d.ts +29 -0
  35. package/dist/editor/components/QuickSwitcher/algolia-search.js +63 -0
  36. package/dist/editor/components/TimelineInOutToggle.js +3 -0
  37. package/dist/editor/helpers/use-keybinding.d.ts +1 -0
  38. package/dist/editor/helpers/use-keybinding.js +3 -1
  39. package/dist/editor/helpers/use-menu-structure.js +37 -9
  40. package/dist/editor/state/modals.d.ts +3 -2
  41. package/dist/editor/state/z-index.js +1 -0
  42. package/dist/entry-point.d.ts +5 -0
  43. package/dist/entry-point.js +46 -0
  44. package/dist/get-cli-options.d.ts +3 -3
  45. package/dist/get-cli-options.js +7 -25
  46. package/dist/get-composition-id.d.ts +2 -1
  47. package/dist/get-composition-id.js +8 -6
  48. package/dist/get-composition-with-dimension-override.d.ts +12 -0
  49. package/dist/get-composition-with-dimension-override.js +16 -0
  50. package/dist/get-filename.d.ts +2 -1
  51. package/dist/get-filename.js +2 -1
  52. package/dist/get-render-media-options.js +8 -3
  53. package/dist/index.d.ts +9 -5
  54. package/dist/index.js +11 -11
  55. package/dist/lambda-command.d.ts +1 -1
  56. package/dist/lambda-command.js +2 -3
  57. package/dist/list-of-remotion-packages.js +1 -0
  58. package/dist/parse-command-line.d.ts +2 -0
  59. package/dist/parse-command-line.js +6 -0
  60. package/dist/preview-server/error-overlay/remotion-overlay/AskOnDiscord.js +1 -0
  61. package/dist/preview-server/error-overlay/remotion-overlay/HelpLink.js +1 -0
  62. package/dist/preview-server/error-overlay/remotion-overlay/OpenInEditor.js +1 -0
  63. package/dist/preview-server/error-overlay/remotion-overlay/SearchGitHubIssues.js +1 -0
  64. package/dist/preview-server/error-overlay/remotion-overlay/ShortcutHint.d.ts +1 -0
  65. package/dist/preview-server/error-overlay/remotion-overlay/ShortcutHint.js +3 -3
  66. package/dist/preview.d.ts +1 -1
  67. package/dist/preview.js +4 -2
  68. package/dist/render.d.ts +1 -1
  69. package/dist/render.js +21 -12
  70. package/dist/still.d.ts +1 -1
  71. package/dist/still.js +26 -14
  72. package/dist/user-passed-output-location.d.ts +3 -2
  73. package/dist/user-passed-output-location.js +5 -7
  74. package/package.json +8 -8
  75. package/dist/editor/components/KeyboardShortcutsModal.d.ts +0 -2
  76. package/dist/editor/components/KeyboardShortcutsModal.js +0 -67
package/dist/render.js CHANGED
@@ -12,18 +12,20 @@ const path_1 = __importDefault(require("path"));
12
12
  const remotion_1 = require("remotion");
13
13
  const chalk_1 = require("./chalk");
14
14
  const config_1 = require("./config");
15
+ const entry_point_1 = require("./entry-point");
15
16
  const get_cli_options_1 = require("./get-cli-options");
16
- const get_composition_id_1 = require("./get-composition-id");
17
+ const get_composition_with_dimension_override_1 = require("./get-composition-with-dimension-override");
17
18
  const get_filename_1 = require("./get-filename");
18
19
  const get_render_media_options_1 = require("./get-render-media-options");
20
+ const image_formats_1 = require("./image-formats");
19
21
  const log_1 = require("./log");
20
22
  const parse_command_line_1 = require("./parse-command-line");
21
23
  const progress_bar_1 = require("./progress-bar");
22
24
  const setup_cache_1 = require("./setup-cache");
23
25
  const user_passed_output_location_1 = require("./user-passed-output-location");
24
- const render = async (remotionRoot) => {
26
+ const render = async (remotionRoot, args) => {
25
27
  const startTime = Date.now();
26
- const file = parse_command_line_1.parsedCli._[1];
28
+ const { file, remainingArgs, reason: entryPointReason, } = (0, entry_point_1.findEntryPoint)(args, remotionRoot);
27
29
  if (!file) {
28
30
  log_1.Log.error('No entry point specified. Pass more arguments:');
29
31
  log_1.Log.error(' npx remotion render [entry-point] [composition-name] [out-name]');
@@ -39,15 +41,9 @@ const render = async (remotionRoot) => {
39
41
  process.exit(1);
40
42
  }
41
43
  log_1.Log.verbose('Asset dirs', downloadMap.assetDir);
42
- const { codec, reason: codecReason } = (0, get_cli_options_1.getFinalCodec)({
43
- downloadName: null,
44
- outName: (0, user_passed_output_location_1.getUserPassedOutputLocation)(),
45
- });
46
- (0, get_cli_options_1.validateFfmpegCanUseCodec)(codec);
47
- const { concurrency, frameRange, shouldOutputImageSequence, overwrite, inputProps, envVariables, quality, browser, imageFormat, browserExecutable, ffmpegExecutable, ffprobeExecutable, scale, chromiumOptions, port, everyNthFrame, puppeteerTimeout, publicDir, } = await (0, get_cli_options_1.getCliOptions)({
44
+ const { concurrency, frameRange, shouldOutputImageSequence, overwrite, inputProps, envVariables, quality, browser, browserExecutable, ffmpegExecutable, ffprobeExecutable, scale, chromiumOptions, port, everyNthFrame, puppeteerTimeout, publicDir, height, width, } = await (0, get_cli_options_1.getCliOptions)({
48
45
  isLambda: false,
49
46
  type: 'series',
50
- codec,
51
47
  });
52
48
  const ffmpegVersion = await renderer_1.RenderInternals.getFfmpegVersion({
53
49
  ffmpegExecutable,
@@ -100,7 +96,17 @@ const render = async (remotionRoot) => {
100
96
  downloadMap,
101
97
  port,
102
98
  });
103
- const { compositionId, config, reason } = await (0, get_composition_id_1.getCompositionId)(comps);
99
+ const { compositionId, config, reason, argsAfterComposition } = await (0, get_composition_with_dimension_override_1.getCompositionWithDimensionOverride)({
100
+ validCompositions: comps,
101
+ height,
102
+ width,
103
+ args: remainingArgs,
104
+ });
105
+ const { codec, reason: codecReason } = (0, get_cli_options_1.getFinalCodec)({
106
+ downloadName: null,
107
+ outName: (0, user_passed_output_location_1.getUserPassedOutputLocation)(argsAfterComposition),
108
+ });
109
+ (0, get_cli_options_1.validateFfmpegCanUseCodec)(codec);
104
110
  renderer_1.RenderInternals.validateEvenDimensionsWithCodec({
105
111
  width: config.width,
106
112
  height: config.height,
@@ -112,8 +118,9 @@ const render = async (remotionRoot) => {
112
118
  imageSequence: shouldOutputImageSequence,
113
119
  compositionName: compositionId,
114
120
  defaultExtension: renderer_1.RenderInternals.getFileExtensionFromCodec(codec, 'final'),
121
+ args: argsAfterComposition,
115
122
  });
116
- log_1.Log.info(chalk_1.chalk.gray(`Composition = ${compositionId} (${reason}), Codec = ${codec} (${codecReason}), Output = ${relativeOutputLocation}`));
123
+ log_1.Log.info(chalk_1.chalk.gray(`Entry point = ${file} (${entryPointReason}), Composition = ${compositionId} (${reason}), Codec = ${codec} (${codecReason}), Output = ${relativeOutputLocation}`));
117
124
  const absoluteOutputFile = (0, get_cli_options_1.getAndValidateAbsoluteOutputFile)(relativeOutputLocation, overwrite);
118
125
  const outputDir = shouldOutputImageSequence
119
126
  ? absoluteOutputFile
@@ -153,6 +160,7 @@ const render = async (remotionRoot) => {
153
160
  downloads,
154
161
  }));
155
162
  };
163
+ const imageFormat = (0, image_formats_1.getImageFormat)(shouldOutputImageSequence ? undefined : codec);
156
164
  if (shouldOutputImageSequence) {
157
165
  fs_1.default.mkdirSync(absoluteOutputFile, {
158
166
  recursive: true,
@@ -202,6 +210,7 @@ const render = async (remotionRoot) => {
202
210
  log_1.Log.info();
203
211
  log_1.Log.info();
204
212
  log_1.Log.info(chalk_1.chalk.green('\nYour image sequence is ready!'));
213
+ log_1.Log.info(chalk_1.chalk.cyan(`▶ ${absoluteOutputFile}`));
205
214
  return;
206
215
  }
207
216
  const options = await (0, get_render_media_options_1.getRenderMediaOptions)({
package/dist/still.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const still: (remotionRoot: string) => Promise<void>;
1
+ export declare const still: (remotionRoot: string, args: string[]) => Promise<void>;
package/dist/still.js CHANGED
@@ -10,18 +10,25 @@ const path_1 = __importDefault(require("path"));
10
10
  const chalk_1 = require("./chalk");
11
11
  const config_1 = require("./config");
12
12
  const determine_image_format_1 = require("./determine-image-format");
13
+ const entry_point_1 = require("./entry-point");
13
14
  const get_cli_options_1 = require("./get-cli-options");
14
- const get_composition_id_1 = require("./get-composition-id");
15
+ const get_composition_with_dimension_override_1 = require("./get-composition-with-dimension-override");
15
16
  const log_1 = require("./log");
16
17
  const parse_command_line_1 = require("./parse-command-line");
17
18
  const progress_bar_1 = require("./progress-bar");
18
19
  const setup_cache_1 = require("./setup-cache");
19
20
  const truthy_1 = require("./truthy");
20
21
  const user_passed_output_location_1 = require("./user-passed-output-location");
21
- const still = async (remotionRoot) => {
22
+ const still = async (remotionRoot, args) => {
22
23
  var _a, _b;
23
24
  const startTime = Date.now();
24
- const file = parse_command_line_1.parsedCli._[1];
25
+ const { file, remainingArgs, reason: entryPointReason, } = (0, entry_point_1.findEntryPoint)(args, remotionRoot);
26
+ if (!file) {
27
+ log_1.Log.error('No entry point specified. Pass more arguments:');
28
+ log_1.Log.error(' npx remotion render [entry-point] [composition-name] [out-name]');
29
+ log_1.Log.error('Documentation: https://www.remotion.dev/docs/render');
30
+ process.exit(1);
31
+ }
25
32
  const fullPath = renderer_1.RenderInternals.isServeUrl(file)
26
33
  ? file
27
34
  : path_1.default.join(process.cwd(), file);
@@ -29,19 +36,11 @@ const still = async (remotionRoot) => {
29
36
  log_1.Log.error('--frames flag was passed to the `still` command. This flag only works with the `render` command. Did you mean `--frame`? See reference: https://www.remotion.dev/docs/cli/');
30
37
  process.exit(1);
31
38
  }
32
- const { inputProps, envVariables, quality, browser, stillFrame, browserExecutable, chromiumOptions, scale, ffmpegExecutable, ffprobeExecutable, overwrite, puppeteerTimeout, port, publicDir, } = await (0, get_cli_options_1.getCliOptions)({
39
+ const { inputProps, envVariables, quality, browser, stillFrame, browserExecutable, chromiumOptions, scale, ffmpegExecutable, ffprobeExecutable, overwrite, puppeteerTimeout, port, publicDir, height, width, } = await (0, get_cli_options_1.getCliOptions)({
33
40
  isLambda: false,
34
41
  type: 'still',
35
- codec: 'h264',
36
42
  });
37
43
  log_1.Log.verbose('Browser executable: ', browserExecutable);
38
- const { format: imageFormat, source } = (0, determine_image_format_1.determineFinalImageFormat)({
39
- cliFlag: (_a = parse_command_line_1.parsedCli['image-format']) !== null && _a !== void 0 ? _a : null,
40
- configImageFormat: (_b = config_1.ConfigInternals.getUserPreferredImageFormat()) !== null && _b !== void 0 ? _b : null,
41
- downloadName: null,
42
- outName: (0, user_passed_output_location_1.getUserPassedOutputLocation)(),
43
- isLambda: false,
44
- });
45
44
  const browserInstance = (0, renderer_1.openBrowser)(browser, {
46
45
  browserExecutable,
47
46
  chromiumOptions,
@@ -67,16 +66,29 @@ const still = async (remotionRoot) => {
67
66
  ffprobeExecutable,
68
67
  downloadMap,
69
68
  });
70
- const { compositionId, config, reason } = await (0, get_composition_id_1.getCompositionId)(comps);
69
+ const { compositionId, config, reason, argsAfterComposition } = await (0, get_composition_with_dimension_override_1.getCompositionWithDimensionOverride)({
70
+ validCompositions: comps,
71
+ height,
72
+ width,
73
+ args: remainingArgs,
74
+ });
75
+ const { format: imageFormat, source } = (0, determine_image_format_1.determineFinalImageFormat)({
76
+ cliFlag: (_a = parse_command_line_1.parsedCli['image-format']) !== null && _a !== void 0 ? _a : null,
77
+ configImageFormat: (_b = config_1.ConfigInternals.getUserPreferredImageFormat()) !== null && _b !== void 0 ? _b : null,
78
+ downloadName: null,
79
+ outName: (0, user_passed_output_location_1.getUserPassedOutputLocation)(argsAfterComposition),
80
+ isLambda: false,
81
+ });
71
82
  const relativeOutputLocation = (0, user_passed_output_location_1.getOutputLocation)({
72
83
  compositionId,
73
84
  defaultExtension: imageFormat,
85
+ args: argsAfterComposition,
74
86
  });
75
87
  const absoluteOutputLocation = (0, get_cli_options_1.getAndValidateAbsoluteOutputFile)(relativeOutputLocation, overwrite);
76
88
  (0, fs_1.mkdirSync)(path_1.default.join(absoluteOutputLocation, '..'), {
77
89
  recursive: true,
78
90
  });
79
- log_1.Log.info(chalk_1.chalk.gray(`Output = ${relativeOutputLocation}, Format = ${imageFormat} (${source}), Composition = ${compositionId} (${reason})`));
91
+ log_1.Log.info(chalk_1.chalk.gray(`Entry point = ${file} (${entryPointReason}), Output = ${relativeOutputLocation}, Format = ${imageFormat} (${source}), Composition = ${compositionId} (${reason})`));
80
92
  const renderProgress = (0, progress_bar_1.createOverwriteableCliOutput)((0, parse_command_line_1.quietFlagProvided)());
81
93
  const renderStart = Date.now();
82
94
  const downloads = [];
@@ -1,5 +1,6 @@
1
- export declare const getUserPassedOutputLocation: () => string | null;
2
- export declare const getOutputLocation: ({ compositionId, defaultExtension, }: {
1
+ export declare const getUserPassedOutputLocation: (args: string[]) => string;
2
+ export declare const getOutputLocation: ({ compositionId, defaultExtension, args, }: {
3
3
  compositionId: string;
4
4
  defaultExtension: string;
5
+ args: string[];
5
6
  }) => string;
@@ -2,11 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getOutputLocation = exports.getUserPassedOutputLocation = void 0;
4
4
  const config_1 = require("./config");
5
- const parse_command_line_1 = require("./parse-command-line");
6
- const getUserPassedOutputLocation = () => {
7
- const filename = parse_command_line_1.parsedCli._[3]
8
- ? parse_command_line_1.parsedCli._[3]
9
- : config_1.ConfigInternals.getOutputLocation();
5
+ const getUserPassedOutputLocation = (args) => {
6
+ var _a;
7
+ const filename = (_a = args[0]) !== null && _a !== void 0 ? _a : config_1.ConfigInternals.getOutputLocation();
10
8
  return filename;
11
9
  };
12
10
  exports.getUserPassedOutputLocation = getUserPassedOutputLocation;
@@ -14,8 +12,8 @@ const getDefaultOutLocation = ({ compositionName, defaultExtension, }) => {
14
12
  const defaultName = `out/${compositionName}.${defaultExtension}`;
15
13
  return defaultName;
16
14
  };
17
- const getOutputLocation = ({ compositionId, defaultExtension, }) => {
15
+ const getOutputLocation = ({ compositionId, defaultExtension, args, }) => {
18
16
  var _a;
19
- return ((_a = (0, exports.getUserPassedOutputLocation)()) !== null && _a !== void 0 ? _a : getDefaultOutLocation({ compositionName: compositionId, defaultExtension }));
17
+ return ((_a = (0, exports.getUserPassedOutputLocation)(args)) !== null && _a !== void 0 ? _a : getDefaultOutLocation({ compositionName: compositionId, defaultExtension }));
20
18
  };
21
19
  exports.getOutputLocation = getOutputLocation;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/cli",
3
- "version": "3.2.38",
3
+ "version": "3.2.40",
4
4
  "description": "CLI for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "sideEffects": false,
@@ -22,16 +22,16 @@
22
22
  "author": "Jonny Burger <jonny@remotion.dev>",
23
23
  "license": "SEE LICENSE IN LICENSE.md",
24
24
  "dependencies": {
25
- "@remotion/bundler": "3.2.38",
26
- "@remotion/media-utils": "3.2.38",
27
- "@remotion/player": "3.2.38",
28
- "@remotion/renderer": "3.2.38",
25
+ "@remotion/bundler": "3.2.40",
26
+ "@remotion/media-utils": "3.2.40",
27
+ "@remotion/player": "3.2.40",
28
+ "@remotion/renderer": "3.2.40",
29
29
  "better-opn": "2.1.1",
30
30
  "dotenv": "9.0.2",
31
31
  "memfs": "3.4.3",
32
32
  "minimist": "1.2.6",
33
33
  "prompts": "2.4.1",
34
- "remotion": "3.2.38",
34
+ "remotion": "3.2.40",
35
35
  "semver": "7.3.5",
36
36
  "source-map": "0.6.1"
37
37
  },
@@ -44,7 +44,7 @@
44
44
  "@types/minimist": "^1.2.2",
45
45
  "@types/node": "^16.7.5",
46
46
  "@types/prompts": "^2.4.1",
47
- "@types/react": "18.0.1",
47
+ "@types/react": "18.0.23",
48
48
  "@types/react-dom": "18.0.0",
49
49
  "@types/semver": "^7.3.4",
50
50
  "@types/webpack-env": "^1.16.0",
@@ -72,5 +72,5 @@
72
72
  "publishConfig": {
73
73
  "access": "public"
74
74
  },
75
- "gitHead": "faec18c286d03b94887ef5ff16ea48f94c82954d"
75
+ "gitHead": "dd204bb0a42d4c6c2988957d399c898e5eba4eba"
76
76
  }
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const KeyboardShortcuts: React.FC;
@@ -1,67 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KeyboardShortcuts = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const use_keybinding_1 = require("../helpers/use-keybinding");
7
- const keys_1 = require("../icons/keys");
8
- const modals_1 = require("../state/modals");
9
- const layout_1 = require("./layout");
10
- const ModalContainer_1 = require("./ModalContainer");
11
- const ModalHeader_1 = require("./ModalHeader");
12
- const left = {
13
- width: 100,
14
- paddingTop: 8,
15
- paddingBottom: 8,
16
- };
17
- const shortLeft = {
18
- ...left,
19
- width: 40,
20
- };
21
- const key = {
22
- background: '#333',
23
- padding: '3px 6px',
24
- color: 'white',
25
- borderRadius: 3,
26
- border: '1px solid black',
27
- borderBottomWidth: 3,
28
- fontSize: 13,
29
- fontFamily: 'monospace',
30
- };
31
- const right = {
32
- fontSize: 14,
33
- color: '#eee',
34
- };
35
- const container = {
36
- paddingLeft: 20,
37
- paddingRight: 40,
38
- paddingTop: 10,
39
- paddingBottom: 10,
40
- };
41
- const title = {
42
- fontWeight: 'bold',
43
- color: 'white',
44
- fontSize: 14,
45
- marginBottom: 10,
46
- };
47
- const keyboardShortcutsDisabled = {
48
- padding: 12,
49
- width: '100%',
50
- fontSize: 14,
51
- backgroundColor: 'rgba(255, 255, 255, 0.1)',
52
- };
53
- const ul = {
54
- marginTop: 0,
55
- marginBottom: 0,
56
- };
57
- const li = {
58
- fontSize: 14,
59
- };
60
- const KeyboardShortcuts = () => {
61
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
62
- const onQuit = (0, react_1.useCallback)(() => {
63
- setSelectedModal(null);
64
- }, [setSelectedModal]);
65
- return ((0, jsx_runtime_1.jsxs)(ModalContainer_1.ModalContainer, { onEscape: onQuit, onOutsideClick: onQuit, children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.NewCompHeader, { title: "Keyboard shortcuts" }), (0, use_keybinding_1.areKeyboardShortcutsDisabled)() ? ((0, jsx_runtime_1.jsxs)("div", { style: keyboardShortcutsDisabled, children: ["Keyboard shortcuts disabled either due to:", (0, jsx_runtime_1.jsxs)("ul", { style: ul, children: [(0, jsx_runtime_1.jsx)("li", { style: li, children: "a) --disable-keyboard-shortcuts being passed" }), (0, jsx_runtime_1.jsx)("li", { style: li, children: "b) Config.Preview.setKeyboardShortcutsEnabled(false) being set or" }), (0, jsx_runtime_1.jsx)("li", { style: li, children: " c) a Remotion version mismatch." })] })] })) : null, (0, jsx_runtime_1.jsxs)(layout_1.Row, { style: container, children: [(0, jsx_runtime_1.jsxs)(layout_1.Column, { children: [(0, jsx_runtime_1.jsx)("div", { style: title, children: "Playback" }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsxs)("div", { style: left, children: [(0, jsx_runtime_1.jsx)("kbd", { style: key, children: (0, jsx_runtime_1.jsx)(keys_1.ShiftIcon, {}) }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.3 }), (0, jsx_runtime_1.jsx)("kbd", { style: key, children: (0, jsx_runtime_1.jsx)(keys_1.ArrowLeft, {}) })] }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "1 second back" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: left, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: (0, jsx_runtime_1.jsx)(keys_1.ArrowLeft, {}) }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Previous frame" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: left, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "Space" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Play / Pause" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: left, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: (0, jsx_runtime_1.jsx)(keys_1.ArrowRight, {}) }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Next frame" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsxs)("div", { style: left, children: [(0, jsx_runtime_1.jsx)("kbd", { style: key, children: (0, jsx_runtime_1.jsx)(keys_1.ShiftIcon, {}) }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.3 }), (0, jsx_runtime_1.jsx)("kbd", { style: key, children: (0, jsx_runtime_1.jsx)(keys_1.ArrowRight, {}) })] }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "1 second forward" })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: left, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "A" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Jump to beginning" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: left, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "E" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Jump to end" })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: left, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "J" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Reverse playback" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: left, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "K" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Pause" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: left, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "L" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Play / Speed up" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: left, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "Enter" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Pause & return to playback start" })] })] }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 8 }), (0, jsx_runtime_1.jsxs)(layout_1.Column, { children: [(0, jsx_runtime_1.jsx)("div", { style: title, children: "Navigation" }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: shortLeft, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "N" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "New composition" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: shortLeft, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "T" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Toggle checkerboard transparency" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: shortLeft, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "?" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Show keyboard shortcuts" })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("div", { style: title, children: "Playback range" }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: shortLeft, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "I" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Set In Point" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: shortLeft, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "O" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Set Out Point" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: shortLeft, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "X" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Clear In/Out Points" })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("div", { style: title, children: "Zoom" }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: shortLeft, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "+" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Zoom in" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: shortLeft, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "-" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Zoom out" })] }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { align: "center", children: [(0, jsx_runtime_1.jsx)("div", { style: shortLeft, children: (0, jsx_runtime_1.jsx)("kbd", { style: key, children: "0" }) }), (0, jsx_runtime_1.jsx)("div", { style: right, children: "Reset zoom" })] })] })] })] }));
66
- };
67
- exports.KeyboardShortcuts = KeyboardShortcuts;