@remotion/cli 4.0.69 → 4.0.71

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 (35) hide show
  1. package/dist/config/audio-codec.d.ts +1 -1
  2. package/dist/config/image-format.d.ts +1 -1
  3. package/dist/config/index.d.ts +3 -3
  4. package/dist/config/log.d.ts +1 -1
  5. package/dist/editor/components/Canvas.js +3 -0
  6. package/dist/editor/components/CurrentCompositionSideEffects.js +1 -0
  7. package/dist/editor/components/FullscreenToggle.js +1 -0
  8. package/dist/editor/components/GlobalKeybindings.js +4 -0
  9. package/dist/editor/components/InlineAction.d.ts +1 -1
  10. package/dist/editor/components/InlineAction.js +1 -1
  11. package/dist/editor/components/NewComposition/MenuContent.js +7 -0
  12. package/dist/editor/components/NewComposition/RemInput.d.ts +2 -2
  13. package/dist/editor/components/NewComposition/RemInputTypeColor.d.ts +1 -1
  14. package/dist/editor/components/PlayPause.js +6 -0
  15. package/dist/editor/components/PlaybackKeyboardShortcutsManager.js +3 -0
  16. package/dist/editor/components/QuickSwitcher/QuickSwitcherContent.js +2 -0
  17. package/dist/editor/components/QuickSwitcher/QuickSwitcherResult.js +1 -0
  18. package/dist/editor/components/RenderModal/RenderModal.js +1 -0
  19. package/dist/editor/components/RenderModal/RenderModalJSONPropsEditor.js +1 -0
  20. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.js +1 -0
  21. package/dist/editor/components/SidebarCollapserControls.js +3 -0
  22. package/dist/editor/components/TimelineInOutToggle.js +3 -0
  23. package/dist/editor/helpers/presets-labels.d.ts +1 -1
  24. package/dist/editor/helpers/use-keybinding.d.ts +1 -0
  25. package/dist/editor/helpers/use-keybinding.js +1 -1
  26. package/dist/editor/state/z-index.js +1 -0
  27. package/dist/get-cli-options.d.ts +3 -3
  28. package/dist/index.d.ts +20 -20
  29. package/dist/preview-server/error-overlay/remotion-overlay/AskOnDiscord.js +1 -0
  30. package/dist/preview-server/error-overlay/remotion-overlay/HelpLink.js +1 -0
  31. package/dist/preview-server/error-overlay/remotion-overlay/OpenInEditor.js +1 -0
  32. package/dist/preview-server/error-overlay/remotion-overlay/SearchGitHubIssues.js +1 -0
  33. package/dist/preview-server/hot-middleware/client.js +1 -1
  34. package/dist/preview-server/start-server.js +2 -2
  35. package/package.json +8 -8
@@ -1,3 +1,3 @@
1
1
  import type { AudioCodec } from '@remotion/renderer';
2
2
  export declare const setAudioCodec: (audioCodec: AudioCodec | null) => void;
3
- export declare const getAudioCodec: () => "mp3" | "aac" | "pcm-16" | "opus" | null;
3
+ export declare const getAudioCodec: () => "pcm-16" | "aac" | "mp3" | "opus" | null;
@@ -2,4 +2,4 @@ import type { StillImageFormat, VideoImageFormat } from '@remotion/renderer';
2
2
  export declare const setStillImageFormat: (format: StillImageFormat) => void;
3
3
  export declare const setVideoImageFormat: (format: VideoImageFormat) => void;
4
4
  export declare const getUserPreferredStillImageFormat: () => "png" | "jpeg" | "pdf" | "webp" | undefined;
5
- export declare const getUserPreferredVideoImageFormat: () => "none" | "png" | "jpeg" | undefined;
5
+ export declare const getUserPreferredVideoImageFormat: () => "png" | "jpeg" | "none" | undefined;
@@ -307,7 +307,7 @@ export declare const ConfigInternals: {
307
307
  getBrowser: () => null;
308
308
  getPixelFormat: () => "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
309
309
  getProResProfile: () => "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined;
310
- getPresetProfile: () => "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
310
+ getPresetProfile: () => "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
311
311
  getShouldOverwrite: ({ defaultValue, }: {
312
312
  defaultValue: boolean;
313
313
  }) => boolean;
@@ -324,12 +324,12 @@ export declare const ConfigInternals: {
324
324
  getConcurrency: () => string | number | null;
325
325
  getCurrentPuppeteerTimeout: () => number;
326
326
  getJpegQuality: () => number;
327
- getAudioCodec: () => "mp3" | "aac" | "pcm-16" | "opus" | null;
327
+ getAudioCodec: () => "pcm-16" | "aac" | "mp3" | "opus" | null;
328
328
  getStillFrame: () => number;
329
329
  getShouldOutputImageSequence: (frameRange: FrameRange | null) => boolean;
330
330
  getDotEnvLocation: () => string | null;
331
331
  getUserPreferredStillImageFormat: () => "png" | "jpeg" | "pdf" | "webp" | undefined;
332
- getUserPreferredVideoImageFormat: () => "none" | "png" | "jpeg" | undefined;
332
+ getUserPreferredVideoImageFormat: () => "png" | "jpeg" | "none" | undefined;
333
333
  getWebpackOverrideFn: () => WebpackOverrideFn;
334
334
  getWebpackCaching: () => boolean;
335
335
  getOutputLocation: () => string | null;
@@ -1 +1 @@
1
- export declare const getLogLevel: () => "error" | "verbose" | "info" | "warn", setLogLevel: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
1
+ export declare const getLogLevel: () => "verbose" | "info" | "warn" | "error", setLogLevel: (newLogLevel: "verbose" | "info" | "warn" | "error") => void;
@@ -218,6 +218,7 @@ const Canvas = ({ canvasContent }) => {
218
218
  callback: onReset,
219
219
  preventDefault: true,
220
220
  triggerIfInputFieldFocused: false,
221
+ keepRegisteredWhenNotHighestContext: false,
221
222
  });
222
223
  const zoomIn = keybindings.registerKeybinding({
223
224
  event: 'keydown',
@@ -226,6 +227,7 @@ const Canvas = ({ canvasContent }) => {
226
227
  callback: onZoomIn,
227
228
  preventDefault: true,
228
229
  triggerIfInputFieldFocused: false,
230
+ keepRegisteredWhenNotHighestContext: false,
229
231
  });
230
232
  const zoomOut = keybindings.registerKeybinding({
231
233
  event: 'keydown',
@@ -234,6 +236,7 @@ const Canvas = ({ canvasContent }) => {
234
236
  callback: onZoomOut,
235
237
  preventDefault: true,
236
238
  triggerIfInputFieldFocused: false,
239
+ keepRegisteredWhenNotHighestContext: false,
237
240
  });
238
241
  return () => {
239
242
  resetBinding.unregister();
@@ -56,6 +56,7 @@ const CurrentCompositionKeybindings = () => {
56
56
  callback: openRenderModal,
57
57
  preventDefault: true,
58
58
  triggerIfInputFieldFocused: false,
59
+ keepRegisteredWhenNotHighestContext: false,
59
60
  });
60
61
  return () => {
61
62
  binding.unregister();
@@ -37,6 +37,7 @@ const FullScreenToggle = () => {
37
37
  commandCtrlKey: false,
38
38
  preventDefault: true,
39
39
  triggerIfInputFieldFocused: false,
40
+ keepRegisteredWhenNotHighestContext: false,
40
41
  });
41
42
  return () => {
42
43
  f.unregister();
@@ -22,6 +22,7 @@ const GlobalKeybindings = () => {
22
22
  commandCtrlKey: false,
23
23
  preventDefault: true,
24
24
  triggerIfInputFieldFocused: false,
25
+ keepRegisteredWhenNotHighestContext: false,
25
26
  });
26
27
  const cmdKKey = keybindings.registerKeybinding({
27
28
  event: 'keydown',
@@ -34,6 +35,7 @@ const GlobalKeybindings = () => {
34
35
  });
35
36
  },
36
37
  triggerIfInputFieldFocused: true,
38
+ keepRegisteredWhenNotHighestContext: false,
37
39
  commandCtrlKey: true,
38
40
  preventDefault: true,
39
41
  });
@@ -46,6 +48,7 @@ const GlobalKeybindings = () => {
46
48
  commandCtrlKey: false,
47
49
  preventDefault: true,
48
50
  triggerIfInputFieldFocused: false,
51
+ keepRegisteredWhenNotHighestContext: false,
49
52
  });
50
53
  const questionMark = keybindings.registerKeybinding({
51
54
  event: 'keypress',
@@ -60,6 +63,7 @@ const GlobalKeybindings = () => {
60
63
  commandCtrlKey: false,
61
64
  preventDefault: true,
62
65
  triggerIfInputFieldFocused: false,
66
+ keepRegisteredWhenNotHighestContext: false,
63
67
  });
64
68
  return () => {
65
69
  nKey.unregister();
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  export type RenderInlineAction = (color: string) => React.ReactNode;
3
3
  export declare const InlineAction: React.FC<{
4
- onClick: React.MouseEventHandler<HTMLAnchorElement>;
4
+ onClick: React.MouseEventHandler<HTMLButtonElement>;
5
5
  disabled?: boolean;
6
6
  renderAction: RenderInlineAction;
7
7
  title?: string;
@@ -29,6 +29,6 @@ const InlineAction = ({ renderAction, onClick, disabled, title }) => {
29
29
  pointerEvents: disabled ? 'none' : 'auto',
30
30
  };
31
31
  }, [disabled, hovered]);
32
- return ((0, jsx_runtime_1.jsx)("a", { type: "button", onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, onClick: onClick, style: style, tabIndex: tabIndex, title: title, children: renderAction(hovered ? 'white' : colors_1.LIGHT_TEXT) }));
32
+ return ((0, jsx_runtime_1.jsx)("button", { type: "button", onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, onClick: onClick, style: style, tabIndex: tabIndex, title: title, children: renderAction(hovered ? 'white' : colors_1.LIGHT_TEXT) }));
33
33
  };
34
34
  exports.InlineAction = InlineAction;
@@ -123,6 +123,7 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
123
123
  commandCtrlKey: false,
124
124
  preventDefault: true,
125
125
  triggerIfInputFieldFocused: false,
126
+ keepRegisteredWhenNotHighestContext: false,
126
127
  });
127
128
  const rightBinding = keybindings.registerKeybinding({
128
129
  event: 'keydown',
@@ -131,6 +132,7 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
131
132
  callback: onArrowRight,
132
133
  preventDefault: true,
133
134
  triggerIfInputFieldFocused: false,
135
+ keepRegisteredWhenNotHighestContext: false,
134
136
  });
135
137
  const leftBinding = keybindings.registerKeybinding({
136
138
  event: 'keydown',
@@ -139,6 +141,7 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
139
141
  callback: onPreviousMenu,
140
142
  preventDefault: true,
141
143
  triggerIfInputFieldFocused: false,
144
+ keepRegisteredWhenNotHighestContext: false,
142
145
  });
143
146
  const downBinding = keybindings.registerKeybinding({
144
147
  event: 'keydown',
@@ -147,6 +150,7 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
147
150
  callback: onArrowDown,
148
151
  preventDefault: true,
149
152
  triggerIfInputFieldFocused: false,
153
+ keepRegisteredWhenNotHighestContext: false,
150
154
  });
151
155
  const upBinding = keybindings.registerKeybinding({
152
156
  event: 'keydown',
@@ -155,6 +159,7 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
155
159
  commandCtrlKey: false,
156
160
  preventDefault: true,
157
161
  triggerIfInputFieldFocused: false,
162
+ keepRegisteredWhenNotHighestContext: false,
158
163
  });
159
164
  const enterBinding = keybindings.registerKeybinding({
160
165
  event: 'keydown',
@@ -163,6 +168,7 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
163
168
  commandCtrlKey: false,
164
169
  preventDefault: true,
165
170
  triggerIfInputFieldFocused: false,
171
+ keepRegisteredWhenNotHighestContext: false,
166
172
  });
167
173
  const spaceBinding = keybindings.registerKeybinding({
168
174
  event: 'keyup',
@@ -171,6 +177,7 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
171
177
  commandCtrlKey: false,
172
178
  preventDefault: true,
173
179
  triggerIfInputFieldFocused: false,
180
+ keepRegisteredWhenNotHighestContext: false,
174
181
  });
175
182
  return () => {
176
183
  escapeBinding.unregister();
@@ -12,6 +12,6 @@ export declare const getInputBorderColor: ({ status, isFocused, isHovered, }: {
12
12
  status: 'error' | 'warning' | 'ok';
13
13
  isFocused: boolean;
14
14
  isHovered: boolean;
15
- }) => "#ff3232" | "hsla(0, 0%, 100%, 0.15)" | "#f1c40f" | "rgba(0, 0, 0, 0.6)" | "rgba(255, 255, 255, 0.05)";
16
- export declare const RemotionInput: React.ForwardRefExoticComponent<Pick<Props, "key" | "status" | "rightAlign" | keyof React.InputHTMLAttributes<HTMLInputElement>> & React.RefAttributes<HTMLInputElement>>;
15
+ }) => "hsla(0, 0%, 100%, 0.15)" | "rgba(0, 0, 0, 0.6)" | "rgba(255, 255, 255, 0.05)" | "#ff3232" | "#f1c40f";
16
+ export declare const RemotionInput: React.ForwardRefExoticComponent<Pick<Props, "key" | keyof React.InputHTMLAttributes<HTMLInputElement> | "status" | "rightAlign"> & React.RefAttributes<HTMLInputElement>>;
17
17
  export {};
@@ -4,5 +4,5 @@ type Props = React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>
4
4
  status: RemInputStatus;
5
5
  name: string;
6
6
  };
7
- export declare const RemInputTypeColor: React.ForwardRefExoticComponent<Pick<Props, "key" | "status" | keyof React.InputHTMLAttributes<HTMLInputElement>> & React.RefAttributes<HTMLInputElement>>;
7
+ export declare const RemInputTypeColor: React.ForwardRefExoticComponent<Pick<Props, "key" | keyof React.InputHTMLAttributes<HTMLInputElement> | "status"> & React.RefAttributes<HTMLInputElement>>;
8
8
  export {};
@@ -132,6 +132,7 @@ const PlayPause = ({ playbackRate, loop }) => {
132
132
  commandCtrlKey: false,
133
133
  preventDefault: true,
134
134
  triggerIfInputFieldFocused: false,
135
+ keepRegisteredWhenNotHighestContext: false,
135
136
  });
136
137
  const arrowRight = keybindings.registerKeybinding({
137
138
  event: 'keydown',
@@ -140,6 +141,7 @@ const PlayPause = ({ playbackRate, loop }) => {
140
141
  commandCtrlKey: false,
141
142
  preventDefault: true,
142
143
  triggerIfInputFieldFocused: false,
144
+ keepRegisteredWhenNotHighestContext: false,
143
145
  });
144
146
  const space = keybindings.registerKeybinding({
145
147
  event: 'keydown',
@@ -148,6 +150,7 @@ const PlayPause = ({ playbackRate, loop }) => {
148
150
  commandCtrlKey: false,
149
151
  preventDefault: true,
150
152
  triggerIfInputFieldFocused: false,
153
+ keepRegisteredWhenNotHighestContext: false,
151
154
  });
152
155
  const enter = keybindings.registerKeybinding({
153
156
  event: 'keydown',
@@ -156,6 +159,7 @@ const PlayPause = ({ playbackRate, loop }) => {
156
159
  commandCtrlKey: false,
157
160
  preventDefault: false,
158
161
  triggerIfInputFieldFocused: false,
162
+ keepRegisteredWhenNotHighestContext: false,
159
163
  });
160
164
  const a = keybindings.registerKeybinding({
161
165
  event: 'keydown',
@@ -164,6 +168,7 @@ const PlayPause = ({ playbackRate, loop }) => {
164
168
  commandCtrlKey: false,
165
169
  preventDefault: true,
166
170
  triggerIfInputFieldFocused: false,
171
+ keepRegisteredWhenNotHighestContext: false,
167
172
  });
168
173
  const e = keybindings.registerKeybinding({
169
174
  event: 'keydown',
@@ -172,6 +177,7 @@ const PlayPause = ({ playbackRate, loop }) => {
172
177
  commandCtrlKey: false,
173
178
  preventDefault: true,
174
179
  triggerIfInputFieldFocused: false,
180
+ keepRegisteredWhenNotHighestContext: false,
175
181
  });
176
182
  return () => {
177
183
  arrowLeft.unregister();
@@ -49,6 +49,7 @@ const PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
49
49
  commandCtrlKey: false,
50
50
  preventDefault: true,
51
51
  triggerIfInputFieldFocused: false,
52
+ keepRegisteredWhenNotHighestContext: false,
52
53
  });
53
54
  const kKey = keybindings.registerKeybinding({
54
55
  event: 'keydown',
@@ -57,6 +58,7 @@ const PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
57
58
  commandCtrlKey: false,
58
59
  preventDefault: true,
59
60
  triggerIfInputFieldFocused: false,
61
+ keepRegisteredWhenNotHighestContext: false,
60
62
  });
61
63
  const lKey = keybindings.registerKeybinding({
62
64
  event: 'keydown',
@@ -65,6 +67,7 @@ const PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
65
67
  commandCtrlKey: false,
66
68
  preventDefault: true,
67
69
  triggerIfInputFieldFocused: false,
70
+ keepRegisteredWhenNotHighestContext: false,
68
71
  });
69
72
  return () => {
70
73
  jKey.unregister();
@@ -181,6 +181,7 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp }) => {
181
181
  preventDefault: true,
182
182
  // Will be using the input field while selecting
183
183
  triggerIfInputFieldFocused: true,
184
+ keepRegisteredWhenNotHighestContext: false,
184
185
  });
185
186
  return () => {
186
187
  binding.unregister();
@@ -223,6 +224,7 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp }) => {
223
224
  preventDefault: true,
224
225
  // Will be using the input field while selecting
225
226
  triggerIfInputFieldFocused: true,
227
+ keepRegisteredWhenNotHighestContext: false,
226
228
  });
227
229
  return () => {
228
230
  binding.unregister();
@@ -64,6 +64,7 @@ const QuickSwitcherResult = ({ result, selected }) => {
64
64
  preventDefault: true,
65
65
  // Input will be focused while sleection
66
66
  triggerIfInputFieldFocused: true,
67
+ keepRegisteredWhenNotHighestContext: false,
67
68
  });
68
69
  return () => {
69
70
  binding.unregister();
@@ -728,6 +728,7 @@ const RenderModal = ({ initialFrame, initialVideoImageFormat, initialStillImageF
728
728
  event: 'keydown',
729
729
  preventDefault: true,
730
730
  triggerIfInputFieldFocused: true,
731
+ keepRegisteredWhenNotHighestContext: false,
731
732
  });
732
733
  return () => {
733
734
  enter.unregister();
@@ -116,6 +116,7 @@ const RenderModalJSONPropsEditor = ({ setValue, value, defaultProps, onSave, sho
116
116
  callback: onQuickSave,
117
117
  preventDefault: true,
118
118
  triggerIfInputFieldFocused: true,
119
+ keepRegisteredWhenNotHighestContext: false,
119
120
  });
120
121
  return () => {
121
122
  save.unregister();
@@ -42,6 +42,7 @@ const SchemaEditor = ({ schema, value, setValue, zodValidationResult, defaultPro
42
42
  callback: onQuickSave,
43
43
  preventDefault: true,
44
44
  triggerIfInputFieldFocused: true,
45
+ keepRegisteredWhenNotHighestContext: true,
45
46
  });
46
47
  return () => {
47
48
  save.unregister();
@@ -89,6 +89,7 @@ const SidebarCollapserControls = () => {
89
89
  callback: toggleLeft,
90
90
  preventDefault: true,
91
91
  triggerIfInputFieldFocused: false,
92
+ keepRegisteredWhenNotHighestContext: false,
92
93
  });
93
94
  const right = keybindings.registerKeybinding({
94
95
  event: 'keydown',
@@ -97,6 +98,7 @@ const SidebarCollapserControls = () => {
97
98
  callback: toggleRight,
98
99
  preventDefault: true,
99
100
  triggerIfInputFieldFocused: false,
101
+ keepRegisteredWhenNotHighestContext: false,
100
102
  });
101
103
  const zen = keybindings.registerKeybinding({
102
104
  event: 'keydown',
@@ -105,6 +107,7 @@ const SidebarCollapserControls = () => {
105
107
  callback: toggleBoth,
106
108
  preventDefault: true,
107
109
  triggerIfInputFieldFocused: false,
110
+ keepRegisteredWhenNotHighestContext: false,
108
111
  });
109
112
  return () => {
110
113
  left.unregister();
@@ -193,6 +193,7 @@ const TimelineInOutPointToggle = () => {
193
193
  commandCtrlKey: false,
194
194
  preventDefault: true,
195
195
  triggerIfInputFieldFocused: false,
196
+ keepRegisteredWhenNotHighestContext: false,
196
197
  });
197
198
  const oKey = keybindings.registerKeybinding({
198
199
  event: 'keypress',
@@ -203,6 +204,7 @@ const TimelineInOutPointToggle = () => {
203
204
  commandCtrlKey: false,
204
205
  preventDefault: true,
205
206
  triggerIfInputFieldFocused: false,
207
+ keepRegisteredWhenNotHighestContext: false,
206
208
  });
207
209
  const xKey = keybindings.registerKeybinding({
208
210
  event: 'keypress',
@@ -213,6 +215,7 @@ const TimelineInOutPointToggle = () => {
213
215
  commandCtrlKey: false,
214
216
  preventDefault: true,
215
217
  triggerIfInputFieldFocused: false,
218
+ keepRegisteredWhenNotHighestContext: false,
216
219
  });
217
220
  return () => {
218
221
  oKey.unregister();
@@ -1,2 +1,2 @@
1
1
  import type { X264Preset } from '@remotion/renderer';
2
- export declare const labelx264Preset: (profile: X264Preset) => "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
2
+ export declare const labelx264Preset: (profile: X264Preset) => "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
@@ -8,6 +8,7 @@ export declare const useKeybinding: () => {
8
8
  callback: (e: KeyboardEvent) => void;
9
9
  preventDefault: boolean;
10
10
  triggerIfInputFieldFocused: boolean;
11
+ keepRegisteredWhenNotHighestContext: boolean;
11
12
  }) => {
12
13
  unregister: () => void;
13
14
  };
@@ -22,7 +22,7 @@ const useKeybinding = () => {
22
22
  unregister: () => undefined,
23
23
  };
24
24
  }
25
- if (!isHighestContext) {
25
+ if (!isHighestContext && !options.keepRegisteredWhenNotHighestContext) {
26
26
  return {
27
27
  unregister: () => undefined,
28
28
  };
@@ -23,6 +23,7 @@ const EscapeHook = ({ onEscape }) => {
23
23
  preventDefault: true,
24
24
  // To dismiss the Quick Switcher menu if input is focused
25
25
  triggerIfInputFieldFocused: true,
26
+ keepRegisteredWhenNotHighestContext: false,
26
27
  });
27
28
  return () => {
28
29
  escape.unregister();
@@ -17,12 +17,12 @@ export declare const getCliOptions: (options: {
17
17
  crf: import("@remotion/renderer").Crf | null;
18
18
  pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
19
19
  proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined;
20
- x264Preset: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
20
+ x264Preset: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
21
21
  everyNthFrame: number;
22
22
  numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
23
23
  stillFrame: number;
24
24
  browserExecutable: BrowserExecutable;
25
- logLevel: "error" | "verbose" | "info" | "warn";
25
+ logLevel: "verbose" | "info" | "warn" | "error";
26
26
  scale: number;
27
27
  chromiumOptions: ChromiumOptions;
28
28
  overwrite: boolean;
@@ -34,7 +34,7 @@ export declare const getCliOptions: (options: {
34
34
  videoBitrate: string | null;
35
35
  height: number | null;
36
36
  width: number | null;
37
- configFileImageFormat: "none" | "png" | "jpeg" | undefined;
37
+ configFileImageFormat: "png" | "jpeg" | "none" | undefined;
38
38
  offthreadVideoCacheSizeInBytes: number | null;
39
39
  deleteAfter: ("1-day" | "3-days" | "7-days" | "30-days") | null;
40
40
  colorSpace: "default" | "bt709";
package/dist/index.d.ts CHANGED
@@ -74,7 +74,7 @@ export declare const CliInternals: {
74
74
  isLambda: boolean;
75
75
  type: "still" | "series" | "get-compositions";
76
76
  remotionRoot: string;
77
- logLevel: "error" | "verbose" | "info" | "warn";
77
+ logLevel: "verbose" | "info" | "warn" | "error";
78
78
  }) => Promise<{
79
79
  puppeteerTimeout: number;
80
80
  concurrency: string | number | null;
@@ -87,12 +87,12 @@ export declare const CliInternals: {
87
87
  crf: import("@remotion/renderer").Crf | null;
88
88
  pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
89
89
  proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined;
90
- x264Preset: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
90
+ x264Preset: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
91
91
  everyNthFrame: number;
92
92
  numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
93
93
  stillFrame: number;
94
94
  browserExecutable: import("@remotion/renderer").BrowserExecutable;
95
- logLevel: "error" | "verbose" | "info" | "warn";
95
+ logLevel: "verbose" | "info" | "warn" | "error";
96
96
  scale: number;
97
97
  chromiumOptions: import("@remotion/renderer").ChromiumOptions;
98
98
  overwrite: boolean;
@@ -104,21 +104,21 @@ export declare const CliInternals: {
104
104
  videoBitrate: string | null;
105
105
  height: number | null;
106
106
  width: number | null;
107
- configFileImageFormat: "none" | "png" | "jpeg" | undefined;
107
+ configFileImageFormat: "png" | "jpeg" | "none" | undefined;
108
108
  offthreadVideoCacheSizeInBytes: number | null;
109
109
  deleteAfter: ("1-day" | "3-days" | "7-days" | "30-days") | null;
110
110
  colorSpace: "default" | "bt709";
111
111
  }>;
112
112
  loadConfig: (remotionRoot: string) => Promise<string | null>;
113
- initializeCli: (remotionRoot: string) => Promise<"error" | "verbose" | "info" | "warn">;
113
+ initializeCli: (remotionRoot: string) => Promise<"verbose" | "info" | "warn" | "error">;
114
114
  BooleanFlags: string[];
115
115
  quietFlagProvided: () => boolean;
116
116
  parsedCli: {
117
117
  "browser-executable": import("@remotion/renderer").BrowserExecutable;
118
118
  "pixel-format": "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
119
- "image-format": "none" | "png" | "jpeg" | "pdf" | "webp";
119
+ "image-format": "png" | "jpeg" | "none" | "pdf" | "webp";
120
120
  "prores-profile": "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy";
121
- "x264-preset": "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
121
+ "x264-preset": "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
122
122
  "bundle-cache": string;
123
123
  "env-file": string;
124
124
  "ignore-certificate-errors": string;
@@ -127,14 +127,14 @@ export declare const CliInternals: {
127
127
  "number-of-gif-loops": number;
128
128
  "number-of-shared-audio-tags": number;
129
129
  version: string;
130
- codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
130
+ codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
131
131
  concurrency: number;
132
132
  timeout: number;
133
133
  config: string;
134
134
  "public-dir": string;
135
135
  "audio-bitrate": string;
136
136
  "video-bitrate": string;
137
- "audio-codec": "mp3" | "aac" | "pcm-16" | "opus";
137
+ "audio-codec": "pcm-16" | "aac" | "mp3" | "opus";
138
138
  crf: number;
139
139
  force: boolean;
140
140
  output: string;
@@ -175,7 +175,7 @@ export declare const CliInternals: {
175
175
  } & {
176
176
  _: string[];
177
177
  };
178
- printError: (err: Error, logLevel: "error" | "verbose" | "info" | "warn") => Promise<void>;
178
+ printError: (err: Error, logLevel: "verbose" | "info" | "warn" | "error") => Promise<void>;
179
179
  formatBytes: (number: number, options?: Intl.NumberFormatOptions & {
180
180
  locale: string;
181
181
  bits?: boolean | undefined;
@@ -187,7 +187,7 @@ export declare const CliInternals: {
187
187
  downloadName: string | null;
188
188
  outName: string | null;
189
189
  configImageFormat: "png" | "jpeg" | "pdf" | "webp" | null;
190
- cliFlag: "none" | "png" | "jpeg" | "pdf" | "webp" | null;
190
+ cliFlag: "png" | "jpeg" | "none" | "pdf" | "webp" | null;
191
191
  isLambda: boolean;
192
192
  fromUi: "png" | "jpeg" | "pdf" | "webp" | null;
193
193
  }) => {
@@ -195,30 +195,30 @@ export declare const CliInternals: {
195
195
  source: string;
196
196
  };
197
197
  minimist: typeof minimist;
198
- findEntryPoint: (args: string[], remotionRoot: string, logLevel: "error" | "verbose" | "info" | "warn") => {
198
+ findEntryPoint: (args: string[], remotionRoot: string, logLevel: "verbose" | "info" | "warn" | "error") => {
199
199
  file: string | null;
200
200
  remainingArgs: string[];
201
201
  reason: string;
202
202
  };
203
203
  getVideoImageFormat: ({ codec, uiImageFormat, }: {
204
204
  codec: import("@remotion/renderer").CodecOrUndefined;
205
- uiImageFormat: "none" | "png" | "jpeg" | null;
206
- }) => "none" | "png" | "jpeg";
205
+ uiImageFormat: "png" | "jpeg" | "none" | null;
206
+ }) => "png" | "jpeg" | "none";
207
207
  printCompositions: (compositions: import("remotion").VideoConfig[]) => void;
208
208
  getFinalOutputCodec: ({ cliFlag, configFile, downloadName, outName, uiCodec, compositionCodec, }: {
209
209
  cliFlag: import("@remotion/renderer").CodecOrUndefined;
210
210
  outName: string | null;
211
211
  downloadName: string | null;
212
- configFile: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | null;
213
- uiCodec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | null;
214
- compositionCodec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | null;
212
+ configFile: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif" | null;
213
+ uiCodec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif" | null;
214
+ compositionCodec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif" | null;
215
215
  }) => {
216
- codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
216
+ codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
217
217
  reason: string;
218
218
  };
219
219
  listOfRemotionPackages: string[];
220
220
  shouldUseNonOverlayingLogger: ({ logLevel, }: {
221
- logLevel: "error" | "verbose" | "info" | "warn";
221
+ logLevel: "verbose" | "info" | "warn" | "error";
222
222
  }) => boolean;
223
223
  getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, serializedInputPropsWithCustomSchema, logLevel, server, offthreadVideoCacheSizeInBytes, }: {
224
224
  height: number | null;
@@ -233,7 +233,7 @@ export declare const CliInternals: {
233
233
  browserExecutable: import("@remotion/renderer").BrowserExecutable;
234
234
  serveUrlOrWebpackUrl: string;
235
235
  indent: boolean;
236
- logLevel: "error" | "verbose" | "info" | "warn";
236
+ logLevel: "verbose" | "info" | "warn" | "error";
237
237
  serializedInputPropsWithCustomSchema: string;
238
238
  server: import("@remotion/renderer").RemotionServer;
239
239
  offthreadVideoCacheSizeInBytes: number | null;
@@ -26,6 +26,7 @@ const AskOnDiscord = ({ canHaveKeyboardShortcuts }) => {
26
26
  commandCtrlKey: true,
27
27
  preventDefault: true,
28
28
  triggerIfInputFieldFocused: false,
29
+ keepRegisteredWhenNotHighestContext: false,
29
30
  });
30
31
  return () => unregister();
31
32
  }, [canHaveKeyboardShortcuts, openInBrowser, registerKeybinding]);
@@ -30,6 +30,7 @@ const HelpLink = ({ canHaveKeyboardShortcuts, link }) => {
30
30
  commandCtrlKey: true,
31
31
  preventDefault: true,
32
32
  triggerIfInputFieldFocused: false,
33
+ keepRegisteredWhenNotHighestContext: false,
33
34
  });
34
35
  return () => unregister();
35
36
  }, [canHaveKeyboardShortcuts, openLink, registerKeybinding]);
@@ -82,6 +82,7 @@ const OpenInEditor = ({ stack, canHaveKeyboardShortcuts }) => {
82
82
  commandCtrlKey: true,
83
83
  preventDefault: true,
84
84
  triggerIfInputFieldFocused: false,
85
+ keepRegisteredWhenNotHighestContext: false,
85
86
  });
86
87
  return () => unregister();
87
88
  }, [canHaveKeyboardShortcuts, openInBrowser, registerKeybinding]);
@@ -25,6 +25,7 @@ const SearchGithubIssues = ({ message, canHaveKeyboardShortcuts }) => {
25
25
  commandCtrlKey: true,
26
26
  preventDefault: true,
27
27
  triggerIfInputFieldFocused: false,
28
+ keepRegisteredWhenNotHighestContext: false,
28
29
  });
29
30
  return () => unregister();
30
31
  }, [canHaveKeyboardShortcuts, openInBrowser, registerKeybinding]);
@@ -48,7 +48,7 @@ function eventSourceWrapper() {
48
48
  function handleDisconnect() {
49
49
  clearInterval(timer);
50
50
  source.close();
51
- setTimeout(init, types_1.hotMiddlewareOptions.timeout);
51
+ setTimeout(init, 1000);
52
52
  }
53
53
  return {
54
54
  addMessageListener(fn) {
@@ -90,14 +90,14 @@ const startServer = async (options) => {
90
90
  to: 3100,
91
91
  hostsToTry: portConfig.hostsToTry,
92
92
  })
93
- .then(({ port, didUsePort }) => {
93
+ .then(({ port, unlockPort }) => {
94
94
  server.listen({
95
95
  port,
96
96
  host: portConfig.host,
97
97
  });
98
98
  server.on('listening', () => {
99
99
  resolve(port);
100
- return didUsePort();
100
+ return unlockPort();
101
101
  });
102
102
  server.on('error', (err) => {
103
103
  reject(err);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/cli",
3
- "version": "4.0.69",
3
+ "version": "4.0.71",
4
4
  "description": "CLI for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "sideEffects": false,
@@ -35,11 +35,11 @@
35
35
  "prompts": "2.4.1",
36
36
  "semver": "7.5.3",
37
37
  "source-map": "0.6.1",
38
- "@remotion/media-utils": "4.0.69",
39
- "@remotion/bundler": "4.0.69",
40
- "@remotion/player": "4.0.69",
41
- "remotion": "4.0.69",
42
- "@remotion/renderer": "4.0.69"
38
+ "@remotion/bundler": "4.0.71",
39
+ "@remotion/media-utils": "4.0.71",
40
+ "@remotion/player": "4.0.71",
41
+ "@remotion/renderer": "4.0.71",
42
+ "remotion": "4.0.71"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "react": ">=16.8.0",
@@ -65,8 +65,8 @@
65
65
  "react-dom": "18.2.0",
66
66
  "vitest": "0.31.1",
67
67
  "zod": "^3.22.3",
68
- "@remotion/zod-types": "4.0.69",
69
- "@remotion/tailwind": "4.0.69"
68
+ "@remotion/tailwind": "4.0.71",
69
+ "@remotion/zod-types": "4.0.71"
70
70
  },
71
71
  "keywords": [
72
72
  "remotion",