@remotion/cli 4.0.0-alpha.130 → 4.0.0-alpha.179

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 (129) hide show
  1. package/dist/benchmark.js +2 -2
  2. package/dist/codemods/update-default-props.js +7 -8
  3. package/dist/config/ffmpeg-executable.d.ts +5 -0
  4. package/dist/config/ffmpeg-executable.js +21 -0
  5. package/dist/config/image-format.d.ts +1 -1
  6. package/dist/config/index.d.ts +7 -3
  7. package/dist/config/index.js +7 -4
  8. package/dist/config/jpeg-quality.d.ts +2 -0
  9. package/dist/config/jpeg-quality.js +17 -0
  10. package/dist/config/log.d.ts +1 -1
  11. package/dist/editor/components/CheckerboardProvider.d.ts +4 -0
  12. package/dist/editor/components/CheckerboardProvider.js +24 -0
  13. package/dist/editor/components/CollapsedCompositionSelector.d.ts +4 -0
  14. package/dist/editor/components/{CollapsedSidebarExpander.js → CollapsedCompositionSelector.js} +8 -9
  15. package/dist/editor/components/EditorContexts.js +7 -71
  16. package/dist/editor/components/KeyboardShortcutsExplainer.js +1 -1
  17. package/dist/editor/components/MediaVolumeProvider.d.ts +4 -0
  18. package/dist/editor/components/MediaVolumeProvider.js +25 -0
  19. package/dist/editor/components/Menu/MenuSubItem.js +14 -1
  20. package/dist/editor/components/Menu/styles.d.ts +2 -0
  21. package/dist/editor/components/Menu/styles.js +9 -2
  22. package/dist/editor/components/MenuToolbar.js +2 -1
  23. package/dist/editor/components/Modals.js +1 -1
  24. package/dist/editor/components/ModalsProvider.d.ts +4 -0
  25. package/dist/editor/components/ModalsProvider.js +17 -0
  26. package/dist/editor/components/NewComposition/ComboBox.js +22 -13
  27. package/dist/editor/components/NewComposition/InputDragger.js +1 -1
  28. package/dist/editor/components/NewComposition/MenuContent.js +7 -1
  29. package/dist/editor/components/NewComposition/RemInput.d.ts +1 -1
  30. package/dist/editor/components/PlayerEmitterContext.d.ts +4 -0
  31. package/dist/editor/components/PlayerEmitterContext.js +11 -0
  32. package/dist/editor/components/QuickSwitcher/QuickSwitcherContent.js +1 -0
  33. package/dist/editor/components/RenderButton.js +2 -3
  34. package/dist/editor/components/RenderModal/JpegQualitySetting.d.ts +2 -2
  35. package/dist/editor/components/RenderModal/JpegQualitySetting.js +4 -4
  36. package/dist/editor/components/RenderModal/RenderModal.d.ts +1 -1
  37. package/dist/editor/components/RenderModal/RenderModal.js +13 -13
  38. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +2 -0
  39. package/dist/editor/components/RenderModal/RenderModalAudio.js +0 -2
  40. package/dist/editor/components/RenderModal/RenderModalData.d.ts +1 -1
  41. package/dist/editor/components/RenderModal/RenderModalData.js +52 -6
  42. package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.d.ts +2 -0
  43. package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.js +25 -3
  44. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +2 -2
  45. package/dist/editor/components/RenderModal/RenderModalPicture.js +2 -2
  46. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.js +2 -0
  47. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -4
  48. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +12 -3
  49. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.js +0 -1
  50. package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +5 -1
  51. package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.js +4 -1
  52. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.d.ts +15 -0
  53. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +45 -0
  54. package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.js +4 -0
  55. package/dist/editor/components/RenderModal/SchemaEditor/ZodUnionEditor.d.ts +14 -0
  56. package/dist/editor/components/RenderModal/SchemaEditor/ZodUnionEditor.js +45 -0
  57. package/dist/editor/components/RenderModal/SchemaEditor/create-zod-values.d.ts +2 -0
  58. package/dist/editor/components/RenderModal/SchemaEditor/create-zod-values.js +150 -0
  59. package/dist/editor/components/RenderModal/human-readable-codec.d.ts +1 -1
  60. package/dist/editor/components/RenderModal/out-name-checker.js +2 -1
  61. package/dist/editor/components/RenderQueue/actions.d.ts +5 -4
  62. package/dist/editor/components/RenderQueue/actions.js +11 -5
  63. package/dist/editor/components/RenderToolbarIcon.js +4 -2
  64. package/dist/editor/components/RendersTab.js +3 -3
  65. package/dist/editor/components/RichTimelineToggle.d.ts +2 -0
  66. package/dist/editor/components/RichTimelineToggle.js +29 -0
  67. package/dist/editor/components/RightPanel.js +3 -9
  68. package/dist/editor/components/SetTimelineInOutProvider.d.ts +4 -0
  69. package/dist/editor/components/SetTimelineInOutProvider.js +19 -0
  70. package/dist/editor/components/SidebarCollapserControls.d.ts +2 -0
  71. package/dist/editor/components/SidebarCollapserControls.js +122 -0
  72. package/dist/editor/components/Tabs/index.d.ts +1 -0
  73. package/dist/editor/components/Tabs/index.js +12 -5
  74. package/dist/editor/components/Tabs/vertical.d.ts +12 -0
  75. package/dist/editor/components/Tabs/vertical.js +57 -0
  76. package/dist/editor/components/Thumbnail.d.ts +8 -0
  77. package/dist/editor/components/Thumbnail.js +76 -0
  78. package/dist/editor/components/TopPanel.d.ts +1 -0
  79. package/dist/editor/components/TopPanel.js +19 -24
  80. package/dist/editor/components/ZoomGesturesProvider.d.ts +4 -0
  81. package/dist/editor/components/ZoomGesturesProvider.js +24 -0
  82. package/dist/editor/components/layout.d.ts +1 -0
  83. package/dist/editor/components/layout.js +5 -4
  84. package/dist/editor/helpers/colors.d.ts +1 -1
  85. package/dist/editor/helpers/use-compact-ui.d.ts +1 -0
  86. package/dist/editor/helpers/use-compact-ui.js +18 -0
  87. package/dist/editor/helpers/use-menu-structure.js +10 -22
  88. package/dist/editor/icons/film.d.ts +3 -0
  89. package/dist/editor/icons/film.js +8 -0
  90. package/dist/editor/icons/render.d.ts +3 -0
  91. package/dist/editor/icons/render.js +5 -1
  92. package/dist/editor/icons/timeline.d.ts +3 -0
  93. package/dist/editor/icons/timeline.js +9 -0
  94. package/dist/editor/state/modals.d.ts +1 -1
  95. package/dist/editor/state/rich-timeline.d.ts +9 -0
  96. package/dist/editor/state/rich-timeline.js +17 -0
  97. package/dist/editor/state/sidebar.d.ts +6 -5
  98. package/dist/editor/state/sidebar.js +35 -21
  99. package/dist/get-cli-options.d.ts +3 -3
  100. package/dist/get-cli-options.js +1 -1
  101. package/dist/get-render-media-options.d.ts +8 -0
  102. package/dist/get-render-media-options.js +53 -0
  103. package/dist/index.d.ts +9 -9
  104. package/dist/install.d.ts +2 -0
  105. package/dist/install.js +36 -0
  106. package/dist/parse-command-line.d.ts +1 -0
  107. package/dist/parse-command-line.js +5 -1
  108. package/dist/preview-server/api-routes.js +2 -0
  109. package/dist/preview-server/api-types.d.ts +2 -1
  110. package/dist/preview-server/render-queue/job.d.ts +13 -4
  111. package/dist/preview-server/render-queue/make-retry-payload.js +2 -2
  112. package/dist/preview-server/render-queue/process-still.js +1 -1
  113. package/dist/preview-server/render-queue/process-video.js +1 -1
  114. package/dist/preview-server/routes/add-render.js +2 -2
  115. package/dist/preview-server/routes/can-update-default-props.d.ts +4 -0
  116. package/dist/preview-server/routes/can-update-default-props.js +39 -0
  117. package/dist/preview-server/routes/update-default-props.js +3 -1
  118. package/dist/preview-server/routes.js +2 -2
  119. package/dist/print-help.js +2 -2
  120. package/dist/render-flows/render.d.ts +2 -2
  121. package/dist/render-flows/render.js +3 -3
  122. package/dist/render-flows/still.d.ts +2 -2
  123. package/dist/render-flows/still.js +2 -2
  124. package/dist/render.js +2 -2
  125. package/dist/still.js +2 -2
  126. package/package.json +7 -7
  127. package/dist/editor/components/CollapsedSidebarExpander.d.ts +0 -5
  128. package/dist/editor/components/RenderModal/SchemaEditor/schema-serialization.d.ts +0 -2
  129. package/dist/editor/components/RenderModal/SchemaEditor/schema-serialization.js +0 -21
@@ -34,7 +34,7 @@ const useMenuStructure = (closeMenu) => {
34
34
  const { editorZoomGestures, setEditorZoomGestures } = (0, react_1.useContext)(editor_zoom_gestures_1.EditorZoomGesturesContext);
35
35
  const { size, setSize } = (0, react_1.useContext)(preview_size_1.PreviewSizeContext);
36
36
  const { type } = (0, react_1.useContext)(client_id_1.PreviewServerConnectionCtx);
37
- const { setSidebarCollapsedStateLeft, sidebarCollapsedStateLeft, setSidebarCollapsedStateRight, sidebarCollapsedStateRight, } = (0, react_1.useContext)(sidebar_1.SidebarContext);
37
+ const { setSidebarCollapsedState, sidebarCollapsedStateLeft, sidebarCollapsedStateRight, } = (0, react_1.useContext)(sidebar_1.SidebarContext);
38
38
  const sizes = (0, SizeSelector_1.getUniqueSizes)(size);
39
39
  const structure = (0, react_1.useMemo)(() => {
40
40
  const struct = [
@@ -263,7 +263,10 @@ const useMenuStructure = (closeMenu) => {
263
263
  leftItem: sidebarCollapsedStateLeft === 'responsive' ? ((0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {})) : null,
264
264
  onClick: () => {
265
265
  closeMenu();
266
- setSidebarCollapsedStateLeft('responsive');
266
+ setSidebarCollapsedState({
267
+ left: 'responsive',
268
+ right: null,
269
+ });
267
270
  },
268
271
  subMenu: null,
269
272
  type: 'item',
@@ -277,7 +280,7 @@ const useMenuStructure = (closeMenu) => {
277
280
  leftItem: sidebarCollapsedStateLeft === 'expanded' ? ((0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {})) : null,
278
281
  onClick: () => {
279
282
  closeMenu();
280
- setSidebarCollapsedStateLeft('expanded');
283
+ setSidebarCollapsedState({ left: 'expanded', right: null });
281
284
  },
282
285
  subMenu: null,
283
286
  type: 'item',
@@ -291,7 +294,7 @@ const useMenuStructure = (closeMenu) => {
291
294
  leftItem: sidebarCollapsedStateLeft === 'collapsed' ? ((0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {})) : null,
292
295
  onClick: () => {
293
296
  closeMenu();
294
- setSidebarCollapsedStateLeft('collapsed');
297
+ setSidebarCollapsedState({ left: 'collapsed', right: null });
295
298
  },
296
299
  subMenu: null,
297
300
  type: 'item',
@@ -314,20 +317,6 @@ const useMenuStructure = (closeMenu) => {
314
317
  leaveLeftSpace: true,
315
318
  preselectIndex: 0,
316
319
  items: [
317
- {
318
- id: 'right-sidebar-responsive',
319
- keyHint: null,
320
- label: 'Responsive',
321
- leftItem: sidebarCollapsedStateRight === 'responsive' ? ((0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {})) : null,
322
- onClick: () => {
323
- closeMenu();
324
- setSidebarCollapsedStateRight('responsive');
325
- },
326
- subMenu: null,
327
- type: 'item',
328
- value: 'responsive',
329
- quickSwitcherLabel: null,
330
- },
331
320
  {
332
321
  id: 'sidebar-expanded',
333
322
  keyHint: null,
@@ -335,7 +324,7 @@ const useMenuStructure = (closeMenu) => {
335
324
  leftItem: sidebarCollapsedStateRight === 'expanded' ? ((0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {})) : null,
336
325
  onClick: () => {
337
326
  closeMenu();
338
- setSidebarCollapsedStateRight('expanded');
327
+ setSidebarCollapsedState({ left: null, right: 'expanded' });
339
328
  },
340
329
  subMenu: null,
341
330
  type: 'item',
@@ -349,7 +338,7 @@ const useMenuStructure = (closeMenu) => {
349
338
  leftItem: sidebarCollapsedStateRight === 'collapsed' ? ((0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {})) : null,
350
339
  onClick: () => {
351
340
  closeMenu();
352
- setSidebarCollapsedStateRight('collapsed');
341
+ setSidebarCollapsedState({ left: null, right: 'collapsed' });
353
342
  },
354
343
  subMenu: null,
355
344
  type: 'item',
@@ -656,8 +645,7 @@ const useMenuStructure = (closeMenu) => {
656
645
  size.size,
657
646
  setSize,
658
647
  setEditorZoomGestures,
659
- setSidebarCollapsedStateLeft,
660
- setSidebarCollapsedStateRight,
648
+ setSidebarCollapsedState,
661
649
  setCheckerboard,
662
650
  ]);
663
651
  return structure;
@@ -0,0 +1,3 @@
1
+ import type { SVGProps } from 'react';
2
+ import React from 'react';
3
+ export declare const FilmIcon: React.FC<SVGProps<SVGSVGElement>>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilmIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const FilmIcon = (props) => {
6
+ return ((0, jsx_runtime_1.jsx)("svg", { viewBox: "0 0 512 512", ...props, children: (0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm280 208c0 6.6-5.4 12-12 12H148c-6.6 0-12-5.4-12-12V124c0-6.6 5.4-12 12-12h216c6.6 0 12 5.4 12 12v264zm104-16c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z" }) }));
7
+ };
8
+ exports.FilmIcon = FilmIcon;
@@ -3,3 +3,6 @@ import React from 'react';
3
3
  export declare const RenderIcon: React.FC<{
4
4
  svgProps: SVGProps<SVGSVGElement>;
5
5
  }>;
6
+ export declare const ThinRenderIcon: React.FC<{
7
+ svgProps: SVGProps<SVGSVGElement>;
8
+ }>;
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RenderIcon = void 0;
3
+ exports.ThinRenderIcon = exports.RenderIcon = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const RenderIcon = (props) => {
6
6
  return ((0, jsx_runtime_1.jsx)("svg", { ...props.svgProps, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", children: (0, jsx_runtime_1.jsx)("path", { fill: 'currentColor', d: "M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z" }) }));
7
7
  };
8
8
  exports.RenderIcon = RenderIcon;
9
+ const ThinRenderIcon = (props) => {
10
+ return ((0, jsx_runtime_1.jsx)("svg", { ...props.svgProps, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", children: (0, jsx_runtime_1.jsx)("path", { fill: 'currentColor', d: "M188.9 372l-50.4-50.4c18.6-42.6 61.7-137.7 95.1-187C304.6 30.1 409 24.6 475.7 36.3c11.7 66.7 6.2 171.1-98.4 242c-49.4 33.5-145.5 75.6-188.4 93.7zm-79.9-62.8c-5.2 11.9-2.5 25.7 6.7 34.9l50.7 50.7c9.1 9.1 22.7 11.9 34.5 6.9c6.5-2.7 14.3-6 23-9.8L224 496c0 5.5 2.9 10.7 7.6 13.6s10.6 3.2 15.6 .7l101.5-50.7c21.7-10.8 35.4-33 35.4-57.2V312.1c4-2.5 7.7-4.9 11.3-7.3C516.1 222.9 520.1 100.9 506.7 28.1c-2.1-11.6-11.2-20.6-22.8-22.8C411.1-8.1 289.1-4.1 207.2 116.7c-2.4 3.6-4.9 7.3-7.3 11.3l-90.2 0c-24.2 0-46.4 13.7-57.2 35.4L1.7 264.8c-2.5 5-2.2 10.8 .7 15.6s8.1 7.6 13.6 7.6H118.5c-3.6 8-6.8 15.2-9.4 21.2zM256 470.1l0-92.5c30.3-13.7 65.4-30.3 96-47v71.7c0 12.1-6.8 23.2-17.7 28.6L256 470.1zM109.7 160h71.5c-16.9 30.7-34 65.8-48.1 96H41.9L81 177.7c5.4-10.8 16.5-17.7 28.6-17.7zM392 144a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM368 88a56 56 0 1 0 0 112 56 56 0 1 0 0-112z" }) }));
11
+ };
12
+ exports.ThinRenderIcon = ThinRenderIcon;
@@ -0,0 +1,3 @@
1
+ import type { SVGProps } from 'react';
2
+ import React from 'react';
3
+ export declare const TimelineIcon: React.FC<SVGProps<SVGSVGElement>>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimelineIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const TimelineIcon = (props) => {
6
+ var _a;
7
+ return ((0, jsx_runtime_1.jsx)("svg", { "aria-hidden": "true", focusable: "false", "data-prefix": "fas", "data-icon": "stream", className: "svg-inline--fa fa-stream fa-w-16", role: "img", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", ...props, children: (0, jsx_runtime_1.jsx)("path", { fill: (_a = props.style) === null || _a === void 0 ? void 0 : _a.color, d: "M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z" }) }));
8
+ };
9
+ exports.TimelineIcon = TimelineIcon;
@@ -10,7 +10,7 @@ export declare type RenderModalState = {
10
10
  initialFrame: number;
11
11
  initialStillImageFormat: StillImageFormat;
12
12
  initialVideoImageFormat: VideoImageFormat;
13
- initialQuality: number;
13
+ initialJpegQuality: number;
14
14
  initialOutName: string;
15
15
  initialScale: number;
16
16
  initialVerbose: boolean;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ declare type State = {
3
+ richTimeline: boolean;
4
+ setRichTimeline: (cb: (prevState: boolean) => boolean) => void;
5
+ };
6
+ export declare const persistRichTimelineOption: (option: boolean) => void;
7
+ export declare const loadRichTimelineOption: () => boolean;
8
+ export declare const RichTimelineContext: import("react").Context<State>;
9
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RichTimelineContext = exports.loadRichTimelineOption = exports.persistRichTimelineOption = void 0;
4
+ const react_1 = require("react");
5
+ const persistRichTimelineOption = (option) => {
6
+ localStorage.setItem('richTimeline', String(option));
7
+ };
8
+ exports.persistRichTimelineOption = persistRichTimelineOption;
9
+ const loadRichTimelineOption = () => {
10
+ const item = localStorage.getItem('richTimeline');
11
+ return item === 'true';
12
+ };
13
+ exports.loadRichTimelineOption = loadRichTimelineOption;
14
+ exports.RichTimelineContext = (0, react_1.createContext)({
15
+ richTimeline: (0, exports.loadRichTimelineOption)(),
16
+ setRichTimeline: () => undefined,
17
+ });
@@ -1,13 +1,14 @@
1
1
  import React from 'react';
2
2
  export declare type SidebarCollapsedState = 'collapsed' | 'expanded' | 'responsive';
3
+ export declare type RightSidebarCollapsedState = Exclude<SidebarCollapsedState, 'responsive'>;
3
4
  declare type Context = {
4
5
  sidebarCollapsedStateLeft: SidebarCollapsedState;
5
- setSidebarCollapsedStateLeft: (newState: SidebarCollapsedState) => void;
6
- sidebarCollapsedStateRight: SidebarCollapsedState;
7
- setSidebarCollapsedStateRight: (newState: SidebarCollapsedState) => void;
6
+ setSidebarCollapsedState: (options: {
7
+ left: null | React.SetStateAction<SidebarCollapsedState>;
8
+ right: null | React.SetStateAction<RightSidebarCollapsedState>;
9
+ }) => void;
10
+ sidebarCollapsedStateRight: RightSidebarCollapsedState;
8
11
  };
9
- declare type Sidebars = 'left' | 'right';
10
- export declare const getSavedCollapsedState: (sidebar: Sidebars) => SidebarCollapsedState;
11
12
  export declare const SidebarContext: React.Context<Context>;
12
13
  export declare const SidebarContextProvider: React.FC<{
13
14
  children: React.ReactNode;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SidebarContextProvider = exports.SidebarContext = exports.getSavedCollapsedState = void 0;
3
+ exports.SidebarContextProvider = exports.SidebarContext = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const storageKey = (sidebar) => {
@@ -9,8 +9,8 @@ const storageKey = (sidebar) => {
9
9
  }
10
10
  return 'remotion.sidebarCollapsing';
11
11
  };
12
- const getSavedCollapsedState = (sidebar) => {
13
- const state = window.localStorage.getItem(storageKey(sidebar));
12
+ const getSavedCollapsedStateLeft = () => {
13
+ const state = window.localStorage.getItem(storageKey('left'));
14
14
  if (state === 'collapsed') {
15
15
  return 'collapsed';
16
16
  }
@@ -19,37 +19,51 @@ const getSavedCollapsedState = (sidebar) => {
19
19
  }
20
20
  return 'responsive';
21
21
  };
22
- exports.getSavedCollapsedState = getSavedCollapsedState;
23
- const setSavedCollapsedState = (type, sidebar) => {
22
+ const getSavedCollapsedStateRight = () => {
23
+ const state = window.localStorage.getItem(storageKey('right'));
24
+ if (state === 'expanded') {
25
+ return 'expanded';
26
+ }
27
+ return 'collapsed';
28
+ };
29
+ const saveCollapsedState = (type, sidebar) => {
24
30
  window.localStorage.setItem(storageKey(sidebar), type);
25
31
  };
26
32
  exports.SidebarContext = (0, react_1.createContext)({
27
33
  sidebarCollapsedStateLeft: 'collapsed',
28
- setSidebarCollapsedStateLeft: () => {
34
+ setSidebarCollapsedState: () => {
29
35
  throw new Error('sidebar collapsed state');
30
36
  },
31
37
  sidebarCollapsedStateRight: 'collapsed',
32
- setSidebarCollapsedStateRight: () => {
33
- throw new Error('sidebar collapsed state');
34
- },
35
38
  });
36
39
  const SidebarContextProvider = ({ children }) => {
37
- const [sidebarCollapsedStateLeft, setSidebarCollapsedStateLeft] = (0, react_1.useState)(() => (0, exports.getSavedCollapsedState)('left'));
38
- const [sidebarCollapsedStateRight, setSidebarCollapsedStateRight] = (0, react_1.useState)(() => (0, exports.getSavedCollapsedState)('right'));
40
+ const [sidebarCollapsedState, setSidebarCollapsedState] = (0, react_1.useState)(() => ({
41
+ left: getSavedCollapsedStateLeft(),
42
+ right: getSavedCollapsedStateRight(),
43
+ }));
39
44
  const value = (0, react_1.useMemo)(() => {
40
45
  return {
41
- sidebarCollapsedStateLeft,
42
- sidebarCollapsedStateRight,
43
- setSidebarCollapsedStateLeft: (state) => {
44
- setSidebarCollapsedStateLeft(state);
45
- setSavedCollapsedState(state, 'left');
46
- },
47
- setSidebarCollapsedStateRight: (state) => {
48
- setSidebarCollapsedStateRight(state);
49
- setSavedCollapsedState(state, 'right');
46
+ sidebarCollapsedStateLeft: sidebarCollapsedState.left,
47
+ sidebarCollapsedStateRight: sidebarCollapsedState.right,
48
+ setSidebarCollapsedState: (options) => {
49
+ const { left, right } = options;
50
+ setSidebarCollapsedState((f) => {
51
+ const copied = { ...f };
52
+ if (left) {
53
+ const updatedLeft = typeof left === 'function' ? left(f.left) : left;
54
+ saveCollapsedState(updatedLeft, 'left');
55
+ copied.left = updatedLeft;
56
+ }
57
+ if (right) {
58
+ const updatedRight = typeof right === 'function' ? right(f.right) : right;
59
+ saveCollapsedState(updatedRight, 'right');
60
+ copied.right = updatedRight;
61
+ }
62
+ return copied;
63
+ });
50
64
  },
51
65
  };
52
- }, [sidebarCollapsedStateLeft, sidebarCollapsedStateRight]);
66
+ }, [sidebarCollapsedState]);
53
67
  return ((0, jsx_runtime_1.jsx)(exports.SidebarContext.Provider, { value: value, children: children }));
54
68
  };
55
69
  exports.SidebarContextProvider = SidebarContextProvider;
@@ -11,7 +11,7 @@ export declare const getCliOptions: (options: {
11
11
  shouldOutputImageSequence: boolean;
12
12
  inputProps: object;
13
13
  envVariables: Record<string, string>;
14
- quality: number | undefined;
14
+ jpegQuality: number | undefined;
15
15
  browser: import("@remotion/renderer").Browser;
16
16
  crf: import("@remotion/renderer").Crf | null;
17
17
  pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
@@ -20,7 +20,7 @@ export declare const getCliOptions: (options: {
20
20
  numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
21
21
  stillFrame: number;
22
22
  browserExecutable: BrowserExecutable;
23
- logLevel: "error" | "verbose" | "info" | "warn";
23
+ logLevel: "verbose" | "info" | "warn" | "error";
24
24
  scale: number;
25
25
  chromiumOptions: ChromiumOptions;
26
26
  overwrite: boolean;
@@ -33,5 +33,5 @@ export declare const getCliOptions: (options: {
33
33
  videoBitrate: string | null;
34
34
  height: number | null;
35
35
  width: number | null;
36
- configFileImageFormat: "none" | "png" | "jpeg" | undefined;
36
+ configFileImageFormat: "png" | "jpeg" | "none" | undefined;
37
37
  }>;
@@ -93,7 +93,7 @@ const getCliOptions = async (options) => {
93
93
  shouldOutputImageSequence,
94
94
  inputProps: (0, get_input_props_1.getInputProps)(null),
95
95
  envVariables: await (0, get_env_1.getEnvironmentVariables)(null),
96
- quality: config_1.ConfigInternals.getQuality(),
96
+ jpegQuality: config_1.ConfigInternals.getJpegQuality(),
97
97
  browser: await getAndValidateBrowser(browserExecutable),
98
98
  crf,
99
99
  pixelFormat,
@@ -0,0 +1,8 @@
1
+ import type { Codec, RenderMediaOptions } from '@remotion/renderer';
2
+ export declare const getRenderMediaOptions: ({ outputLocation, config, serveUrl, codec, remotionRoot, }: {
3
+ outputLocation: RenderMediaOptions['outputLocation'];
4
+ config: RenderMediaOptions['composition'];
5
+ serveUrl: string;
6
+ codec: Codec;
7
+ remotionRoot: string;
8
+ }) => Promise<RenderMediaOptions>;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRenderMediaOptions = void 0;
4
+ const renderer_1 = require("@remotion/renderer");
5
+ const config_1 = require("./config");
6
+ const get_audio_codec_1 = require("./get-audio-codec");
7
+ const get_cli_options_1 = require("./get-cli-options");
8
+ const image_formats_1 = require("./image-formats");
9
+ const getRenderMediaOptions = async ({ outputLocation, config, serveUrl, codec, remotionRoot, }) => {
10
+ const { proResProfile, concurrency, frameRange, overwrite, inputProps, envVariables, quality, crf, pixelFormat, browserExecutable, scale, chromiumOptions, port, numberOfGifLoops, everyNthFrame, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, height, width, } = await (0, get_cli_options_1.getCliOptions)({
11
+ isLambda: false,
12
+ type: 'series',
13
+ remotionRoot,
14
+ });
15
+ const imageFormat = (0, image_formats_1.getVideoImageFormat)(codec);
16
+ const audioCodec = (0, get_audio_codec_1.getResolvedAudioCodec)();
17
+ return {
18
+ outputLocation,
19
+ composition: {
20
+ ...config,
21
+ width: width !== null && width !== void 0 ? width : config.width,
22
+ height: height !== null && height !== void 0 ? height : config.height,
23
+ },
24
+ crf,
25
+ envVariables,
26
+ frameRange,
27
+ imageFormat,
28
+ inputProps,
29
+ overwrite,
30
+ pixelFormat,
31
+ proResProfile,
32
+ quality,
33
+ dumpBrowserLogs: renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose'),
34
+ chromiumOptions,
35
+ timeoutInMilliseconds: config_1.ConfigInternals.getCurrentPuppeteerTimeout(),
36
+ scale,
37
+ port,
38
+ numberOfGifLoops,
39
+ everyNthFrame,
40
+ verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose'),
41
+ muted,
42
+ enforceAudioTrack,
43
+ browserExecutable,
44
+ ffmpegOverride,
45
+ concurrency,
46
+ serveUrl,
47
+ codec,
48
+ audioBitrate,
49
+ videoBitrate,
50
+ audioCodec,
51
+ };
52
+ };
53
+ exports.getRenderMediaOptions = getRenderMediaOptions;
package/dist/index.d.ts CHANGED
@@ -64,17 +64,17 @@ export declare const CliInternals: {
64
64
  verbose: (message?: any, ...optionalParams: any[]) => void;
65
65
  verboseAdvanced: (options: {
66
66
  indent: boolean;
67
- logLevel: "error" | "verbose" | "info" | "warn";
67
+ logLevel: "verbose" | "info" | "warn" | "error";
68
68
  }, message?: any, ...optionalParams: any[]) => void;
69
69
  info: (message?: any, ...optionalParams: any[]) => void;
70
70
  infoAdvanced: (options: {
71
71
  indent: boolean;
72
- logLevel: "error" | "verbose" | "info" | "warn";
72
+ logLevel: "verbose" | "info" | "warn" | "error";
73
73
  }, message?: any, ...optionalParams: any[]) => void;
74
74
  warn: (message?: any, ...optionalParams: any[]) => void;
75
75
  warnAdvanced: (options: {
76
76
  indent: boolean;
77
- logLevel: "error" | "verbose" | "info" | "warn";
77
+ logLevel: "verbose" | "info" | "warn" | "error";
78
78
  }, message?: any, ...optionalParams: any[]) => void;
79
79
  error: (message?: any, ...optionalParams: any[]) => void;
80
80
  };
@@ -89,7 +89,7 @@ export declare const CliInternals: {
89
89
  shouldOutputImageSequence: boolean;
90
90
  inputProps: object;
91
91
  envVariables: Record<string, string>;
92
- quality: number | undefined;
92
+ jpegQuality: number | undefined;
93
93
  browser: import("@remotion/renderer").Browser;
94
94
  crf: import("@remotion/renderer").Crf | null;
95
95
  pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
@@ -98,7 +98,7 @@ export declare const CliInternals: {
98
98
  numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
99
99
  stillFrame: number;
100
100
  browserExecutable: import("@remotion/renderer").BrowserExecutable;
101
- logLevel: "error" | "verbose" | "info" | "warn";
101
+ logLevel: "verbose" | "info" | "warn" | "error";
102
102
  scale: number;
103
103
  chromiumOptions: import("@remotion/renderer").ChromiumOptions;
104
104
  overwrite: boolean;
@@ -111,7 +111,7 @@ export declare const CliInternals: {
111
111
  videoBitrate: string | null;
112
112
  height: number | null;
113
113
  width: number | null;
114
- configFileImageFormat: "none" | "png" | "jpeg" | undefined;
114
+ configFileImageFormat: "png" | "jpeg" | "none" | undefined;
115
115
  }>;
116
116
  loadConfig: (remotionRoot: string) => Promise<string | null>;
117
117
  initializeCli: (remotionRoot: string) => Promise<void>;
@@ -132,7 +132,7 @@ export declare const CliInternals: {
132
132
  downloadName: string | null;
133
133
  outName: string | null;
134
134
  configImageFormat: "png" | "jpeg" | "pdf" | "webp" | null;
135
- cliFlag: "none" | "png" | "jpeg" | "pdf" | "webp" | null;
135
+ cliFlag: "png" | "jpeg" | "pdf" | "webp" | "none" | null;
136
136
  isLambda: boolean;
137
137
  fromUi: "png" | "jpeg" | "pdf" | "webp" | null;
138
138
  }) => {
@@ -151,8 +151,8 @@ export declare const CliInternals: {
151
151
  };
152
152
  getVideoImageFormat: ({ codec, uiImageFormat, }: {
153
153
  codec: import("@remotion/renderer").CodecOrUndefined;
154
- uiImageFormat: "none" | "png" | "jpeg" | null;
155
- }) => "none" | "png" | "jpeg";
154
+ uiImageFormat: "png" | "jpeg" | "none" | null;
155
+ }) => "png" | "jpeg" | "none";
156
156
  printCompositions: (compositions: import("remotion").AnyCompMetadata[]) => void;
157
157
  getFinalOutputCodec: ({ cliFlag, configFile, downloadName, outName, uiCodec, }: {
158
158
  cliFlag: import("@remotion/renderer").CodecOrUndefined;
@@ -0,0 +1,2 @@
1
+ export declare const INSTALL_COMMAND: "install";
2
+ export declare const installCommand: (remotionRoot: string, args: string[]) => Promise<void>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.installCommand = exports.INSTALL_COMMAND = void 0;
4
+ const renderer_1 = require("@remotion/renderer");
5
+ const log_1 = require("./log");
6
+ exports.INSTALL_COMMAND = 'install';
7
+ const installCommand = async (remotionRoot, args) => {
8
+ const firstArg = args[0];
9
+ if (firstArg === 'ffmpeg') {
10
+ const { wasAlreadyInstalled } = await (0, renderer_1.ensureFfmpeg)({ remotionRoot });
11
+ if (wasAlreadyInstalled) {
12
+ log_1.Log.info('FFmpeg is already installed');
13
+ }
14
+ else {
15
+ log_1.Log.info('Successfully installed FFmpeg');
16
+ }
17
+ return;
18
+ }
19
+ if (firstArg === 'ffprobe') {
20
+ const { wasAlreadyInstalled } = await (0, renderer_1.ensureFfprobe)({ remotionRoot });
21
+ if (wasAlreadyInstalled) {
22
+ log_1.Log.info('FFmpeg is already installed');
23
+ }
24
+ else {
25
+ log_1.Log.info('Successfully installed FFmpeg');
26
+ }
27
+ return;
28
+ }
29
+ log_1.Log.error('Please specify either "ffmpeg" or "ffprobe" as the first argument to the install command');
30
+ log_1.Log.error();
31
+ log_1.Log.info('Example Usage: ');
32
+ log_1.Log.info(' remotion install ffmpeg');
33
+ log_1.Log.info(' remotion install ffprobe');
34
+ process.exit(1);
35
+ };
36
+ exports.installCommand = installCommand;
@@ -25,6 +25,7 @@ export declare type CommandLineOptions = {
25
25
  png: boolean;
26
26
  props: string;
27
27
  quality: number;
28
+ ['jpeg-quality']: number;
28
29
  frames: string | number;
29
30
  scale: number;
30
31
  sequence: boolean;
@@ -106,7 +106,11 @@ const parseCommandLine = () => {
106
106
  config_1.Config.setOverwriteOutput(exports.parsedCli.overwrite);
107
107
  }
108
108
  if (typeof exports.parsedCli.quality !== 'undefined') {
109
- config_1.Config.setQuality(exports.parsedCli.quality);
109
+ log_1.Log.warn('The --quality flag has been renamed to --jpeg-quality instead.');
110
+ config_1.Config.setJpegQuality(exports.parsedCli.quality);
111
+ }
112
+ if (typeof exports.parsedCli['jpeg-quality'] !== 'undefined') {
113
+ config_1.Config.setJpegQuality(exports.parsedCli['jpeg-quality']);
110
114
  }
111
115
  if (typeof exports.parsedCli.scale !== 'undefined') {
112
116
  config_1.Config.setScale(exports.parsedCli.scale);
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.allApiRoutes = void 0;
4
4
  const add_render_1 = require("./routes/add-render");
5
+ const can_update_default_props_1 = require("./routes/can-update-default-props");
5
6
  const cancel_render_1 = require("./routes/cancel-render");
6
7
  const open_in_file_explorer_1 = require("./routes/open-in-file-explorer");
7
8
  const remove_render_1 = require("./routes/remove-render");
@@ -16,4 +17,5 @@ exports.allApiRoutes = {
16
17
  '/api/remove-render': remove_render_1.handleRemoveRender,
17
18
  '/api/open-in-file-explorer': open_in_file_explorer_1.handleOpenInFileExplorer,
18
19
  '/api/update-default-props': update_default_props_1.updateDefaultPropsHandler,
20
+ '/api/can-update-default-props': can_update_default_props_1.canUpdateDefaultPropsHandler,
19
21
  };
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import type { IncomingMessage, ServerResponse } from 'http';
3
- import type { AddRenderRequest, CancelRenderRequest, CancelRenderResponse, OpenInFileExplorerRequest, RemoveRenderRequest, SubscribeToFileExistenceRequest, SubscribeToFileExistenceResponse, UnsubscribeFromFileExistenceRequest, UpdateDefaultPropsRequest } from './render-queue/job';
3
+ import type { AddRenderRequest, CancelRenderRequest, CancelRenderResponse, CanUpdateDefaultPropsRequest, CanUpdateDefaultPropsResponse, OpenInFileExplorerRequest, RemoveRenderRequest, SubscribeToFileExistenceRequest, SubscribeToFileExistenceResponse, UnsubscribeFromFileExistenceRequest, UpdateDefaultPropsRequest } from './render-queue/job';
4
4
  export declare type ApiHandler<ReqData, ResData> = (params: {
5
5
  input: ReqData;
6
6
  entryPoint: string;
@@ -24,5 +24,6 @@ export declare type ApiRoutes = {
24
24
  '/api/remove-render': ReqAndRes<RemoveRenderRequest, undefined>;
25
25
  '/api/open-in-file-explorer': ReqAndRes<OpenInFileExplorerRequest, void>;
26
26
  '/api/update-default-props': ReqAndRes<UpdateDefaultPropsRequest, void>;
27
+ '/api/can-update-default-props': ReqAndRes<CanUpdateDefaultPropsRequest, CanUpdateDefaultPropsResponse>;
27
28
  };
28
29
  export {};
@@ -24,13 +24,13 @@ export declare type JobProgressCallback = (options: BaseRenderProgress & Aggrega
24
24
  declare type RenderJobDynamicFields = ({
25
25
  type: 'still';
26
26
  imageFormat: StillImageFormat;
27
- quality: number | null;
27
+ jpegQuality: number | null;
28
28
  frame: number;
29
29
  scale: number;
30
30
  } & RenderJobDynamicStatus) | ({
31
31
  type: 'video';
32
32
  imageFormat: VideoImageFormat;
33
- quality: number | null;
33
+ jpegQuality: number | null;
34
34
  scale: number;
35
35
  codec: Codec;
36
36
  audioCodec: AudioCodec;
@@ -67,7 +67,7 @@ export declare type RenderJobWithCleanup = RenderJob & {
67
67
  declare type AddRenderRequestDynamicFields = {
68
68
  type: 'still';
69
69
  imageFormat: StillImageFormat;
70
- quality: number | null;
70
+ jpegQuality: number | null;
71
71
  frame: number;
72
72
  scale: number;
73
73
  verbose: boolean;
@@ -76,7 +76,7 @@ declare type AddRenderRequestDynamicFields = {
76
76
  codec: Codec;
77
77
  audioCodec: AudioCodec;
78
78
  imageFormat: VideoImageFormat;
79
- quality: number | null;
79
+ jpegQuality: number | null;
80
80
  scale: number;
81
81
  verbose: boolean;
82
82
  concurrency: number;
@@ -126,4 +126,13 @@ export declare type UpdateDefaultPropsRequest = {
126
126
  compositionId: string;
127
127
  defaultProps: string;
128
128
  };
129
+ export declare type CanUpdateDefaultPropsRequest = {
130
+ compositionId: string;
131
+ };
132
+ export declare type CanUpdateDefaultPropsResponse = {
133
+ canUpdate: true;
134
+ } | {
135
+ canUpdate: false;
136
+ reason: string;
137
+ };
129
138
  export {};
@@ -19,7 +19,7 @@ const makeRetryPayload = (job) => {
19
19
  initialFrame: job.frame,
20
20
  initialStillImageFormat: job.imageFormat,
21
21
  initialVideoImageFormat: defaults.videoImageFormat,
22
- initialQuality: (_a = job.quality) !== null && _a !== void 0 ? _a : defaults.quality,
22
+ initialJpegQuality: (_a = job.jpegQuality) !== null && _a !== void 0 ? _a : defaults.jpegQuality,
23
23
  initialOutName: job.outName,
24
24
  initialScale: job.scale,
25
25
  initialVerbose: job.verbose,
@@ -56,7 +56,7 @@ const makeRetryPayload = (job) => {
56
56
  compositionId: job.compositionId,
57
57
  initialStillImageFormat: defaults.stillImageFormat,
58
58
  initialVideoImageFormat: job.imageFormat,
59
- initialQuality: (_b = job.quality) !== null && _b !== void 0 ? _b : defaults.quality,
59
+ initialJpegQuality: (_b = job.jpegQuality) !== null && _b !== void 0 ? _b : defaults.jpegQuality,
60
60
  initialOutName: job.outName,
61
61
  initialScale: job.scale,
62
62
  initialVerbose: job.verbose,
@@ -29,7 +29,7 @@ const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addClea
29
29
  port,
30
30
  publicDir,
31
31
  puppeteerTimeout,
32
- quality: (_a = job.quality) !== null && _a !== void 0 ? _a : undefined,
32
+ jpegQuality: (_a = job.jpegQuality) !== null && _a !== void 0 ? _a : undefined,
33
33
  remainingArgs: [],
34
34
  scale: job.scale,
35
35
  stillFrame: job.frame,