@remotion/cli 3.3.76 → 3.3.78

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 (168) hide show
  1. package/dist/config/still-frame.js +5 -1
  2. package/dist/convert-entry-point-to-serve-url.d.ts +1 -0
  3. package/dist/convert-entry-point-to-serve-url.js +15 -0
  4. package/dist/editor/components/Checkbox.d.ts +6 -0
  5. package/dist/editor/components/Checkbox.js +41 -0
  6. package/dist/editor/components/CollapsableOptions.d.ts +6 -0
  7. package/dist/editor/components/CollapsableOptions.js +35 -0
  8. package/dist/editor/components/CurrentCompositionSideEffects.d.ts +3 -0
  9. package/dist/editor/components/CurrentCompositionSideEffects.js +43 -0
  10. package/dist/editor/components/InlineAction.d.ts +5 -0
  11. package/dist/editor/components/InlineAction.js +34 -0
  12. package/dist/editor/components/Modals.d.ts +2 -0
  13. package/dist/editor/components/Modals.js +23 -0
  14. package/dist/editor/components/RenderButton.d.ts +6 -0
  15. package/dist/editor/components/RenderButton.js +68 -0
  16. package/dist/editor/components/RenderModal/CrfSetting.d.ts +15 -0
  17. package/dist/editor/components/RenderModal/CrfSetting.js +43 -0
  18. package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.d.ts +6 -0
  19. package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.js +14 -0
  20. package/dist/editor/components/RenderModal/FrameRangeSetting.d.ts +8 -0
  21. package/dist/editor/components/RenderModal/FrameRangeSetting.js +42 -0
  22. package/dist/editor/components/RenderModal/InfoBubble.d.ts +5 -0
  23. package/dist/editor/components/RenderModal/InfoBubble.js +111 -0
  24. package/dist/editor/components/RenderModal/InfoTooltip.d.ts +4 -0
  25. package/dist/editor/components/RenderModal/InfoTooltip.js +30 -0
  26. package/dist/editor/components/RenderModal/MutedSetting.d.ts +6 -0
  27. package/dist/editor/components/RenderModal/MutedSetting.js +14 -0
  28. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.d.ts +5 -0
  29. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.js +26 -0
  30. package/dist/editor/components/RenderModal/NumberSetting.d.ts +12 -0
  31. package/dist/editor/components/RenderModal/NumberSetting.js +29 -0
  32. package/dist/editor/components/RenderModal/OptionExplainer.d.ts +5 -0
  33. package/dist/editor/components/RenderModal/OptionExplainer.js +21 -0
  34. package/dist/editor/components/RenderModal/QualitySetting.d.ts +5 -0
  35. package/dist/editor/components/RenderModal/QualitySetting.js +27 -0
  36. package/dist/editor/components/RenderModal/RenderErrorModal.d.ts +5 -0
  37. package/dist/editor/components/RenderModal/RenderErrorModal.js +64 -0
  38. package/dist/editor/components/RenderModal/RenderModal.d.ts +29 -0
  39. package/dist/editor/components/RenderModal/RenderModal.js +488 -0
  40. package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +15 -0
  41. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +22 -0
  42. package/dist/editor/components/RenderModal/RenderModalAudio.d.ts +17 -0
  43. package/dist/editor/components/RenderModal/RenderModalAudio.js +41 -0
  44. package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +22 -0
  45. package/dist/editor/components/RenderModal/RenderModalBasic.js +78 -0
  46. package/dist/editor/components/RenderModal/RenderModalGif.d.ts +9 -0
  47. package/dist/editor/components/RenderModal/RenderModalGif.js +16 -0
  48. package/dist/editor/components/RenderModal/RenderModalHr.d.ts +2 -0
  49. package/dist/editor/components/RenderModal/RenderModalHr.js +18 -0
  50. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +28 -0
  51. package/dist/editor/components/RenderModal/RenderModalPicture.js +51 -0
  52. package/dist/editor/components/RenderModal/ScaleSetting.d.ts +5 -0
  53. package/dist/editor/components/RenderModal/ScaleSetting.js +14 -0
  54. package/dist/editor/components/RenderModal/human-readable-audio-codecs.d.ts +2 -0
  55. package/dist/editor/components/RenderModal/human-readable-audio-codecs.js +18 -0
  56. package/dist/editor/components/RenderModal/human-readable-codec.d.ts +2 -0
  57. package/dist/editor/components/RenderModal/human-readable-codec.js +36 -0
  58. package/dist/editor/components/RenderModal/layout.d.ts +5 -0
  59. package/dist/editor/components/RenderModal/layout.js +31 -0
  60. package/dist/editor/components/RenderQueue/CircularProgress.d.ts +5 -0
  61. package/dist/editor/components/RenderQueue/CircularProgress.js +18 -0
  62. package/dist/editor/components/RenderQueue/RenderQueueError.d.ts +5 -0
  63. package/dist/editor/components/RenderQueue/RenderQueueError.js +26 -0
  64. package/dist/editor/components/RenderQueue/RenderQueueItem.d.ts +5 -0
  65. package/dist/editor/components/RenderQueue/RenderQueueItem.js +40 -0
  66. package/dist/editor/components/RenderQueue/RenderQueueItemCancelButton.d.ts +5 -0
  67. package/dist/editor/components/RenderQueue/RenderQueueItemCancelButton.js +22 -0
  68. package/dist/editor/components/RenderQueue/RenderQueueItemStatus.d.ts +5 -0
  69. package/dist/editor/components/RenderQueue/RenderQueueItemStatus.js +27 -0
  70. package/dist/editor/components/RenderQueue/RenderQueueOpenInFolder.d.ts +5 -0
  71. package/dist/editor/components/RenderQueue/RenderQueueOpenInFolder.js +22 -0
  72. package/dist/editor/components/RenderQueue/RenderQueueOutputName.d.ts +5 -0
  73. package/dist/editor/components/RenderQueue/RenderQueueOutputName.js +24 -0
  74. package/dist/editor/components/RenderQueue/RenderQueueProgressMessage.d.ts +5 -0
  75. package/dist/editor/components/RenderQueue/RenderQueueProgressMessage.js +27 -0
  76. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.d.ts +5 -0
  77. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +23 -0
  78. package/dist/editor/components/RenderQueue/RenderQueueRepeat.d.ts +5 -0
  79. package/dist/editor/components/RenderQueue/RenderQueueRepeat.js +22 -0
  80. package/dist/editor/components/RenderQueue/actions.d.ts +50 -0
  81. package/dist/editor/components/RenderQueue/actions.js +99 -0
  82. package/dist/editor/components/RenderQueue/context.d.ts +19 -0
  83. package/dist/editor/components/RenderQueue/context.js +56 -0
  84. package/dist/editor/components/RenderQueue/index.d.ts +2 -0
  85. package/dist/editor/components/RenderQueue/index.js +18 -0
  86. package/dist/editor/components/RenderQueue/item-style.d.ts +2 -0
  87. package/dist/editor/components/RenderQueue/item-style.js +21 -0
  88. package/dist/editor/components/RenderToolbarIcon.d.ts +2 -0
  89. package/dist/editor/components/RenderToolbarIcon.js +79 -0
  90. package/dist/editor/components/RendersTab.d.ts +6 -0
  91. package/dist/editor/components/RendersTab.js +43 -0
  92. package/dist/editor/components/SegmentedControl.d.ts +16 -0
  93. package/dist/editor/components/SegmentedControl.js +63 -0
  94. package/dist/editor/components/SidebarContent.d.ts +5 -0
  95. package/dist/editor/components/SidebarContent.js +52 -0
  96. package/dist/editor/components/Tabs/index.d.ts +11 -0
  97. package/dist/editor/components/Tabs/index.js +51 -0
  98. package/dist/editor/helpers/client-id.d.ts +17 -0
  99. package/dist/editor/helpers/client-id.js +46 -0
  100. package/dist/editor/helpers/prores-labels.d.ts +2 -0
  101. package/dist/editor/helpers/prores-labels.js +25 -0
  102. package/dist/editor/helpers/render-modal-sections.d.ts +10 -0
  103. package/dist/editor/helpers/render-modal-sections.js +32 -0
  104. package/dist/editor/helpers/use-file-existence.d.ts +1 -0
  105. package/dist/editor/helpers/use-file-existence.js +66 -0
  106. package/dist/editor/icons/RenderStillIcon.d.ts +3 -0
  107. package/dist/editor/icons/RenderStillIcon.js +8 -0
  108. package/dist/editor/icons/audio.d.ts +2 -0
  109. package/dist/editor/icons/audio.js +6 -0
  110. package/dist/editor/icons/file.d.ts +2 -0
  111. package/dist/editor/icons/file.js +6 -0
  112. package/dist/editor/icons/frame.d.ts +2 -0
  113. package/dist/editor/icons/frame.js +6 -0
  114. package/dist/editor/icons/gear.d.ts +2 -0
  115. package/dist/editor/icons/gear.js +6 -0
  116. package/dist/editor/icons/gif.d.ts +2 -0
  117. package/dist/editor/icons/gif.js +6 -0
  118. package/dist/editor/icons/render.d.ts +5 -0
  119. package/dist/editor/icons/render.js +8 -0
  120. package/dist/editor/icons/video.d.ts +5 -0
  121. package/dist/editor/icons/video.js +8 -0
  122. package/dist/file-watcher.d.ts +9 -0
  123. package/dist/file-watcher.js +35 -0
  124. package/dist/gcp-command.d.ts +1 -0
  125. package/dist/gcp-command.js +27 -0
  126. package/dist/get-default-out-name.d.ts +5 -0
  127. package/dist/get-default-out-name.js +10 -0
  128. package/dist/preview-server/api-routes.d.ts +4 -0
  129. package/dist/preview-server/api-routes.js +17 -0
  130. package/dist/preview-server/api-types.d.ts +27 -0
  131. package/dist/preview-server/api-types.js +2 -0
  132. package/dist/preview-server/file-existence-watchers.d.ts +13 -0
  133. package/dist/preview-server/file-existence-watchers.js +62 -0
  134. package/dist/preview-server/handler.d.ts +9 -0
  135. package/dist/preview-server/handler.js +34 -0
  136. package/dist/preview-server/parse-body.d.ts +2 -0
  137. package/dist/preview-server/parse-body.js +16 -0
  138. package/dist/preview-server/render-queue/get-default-video-contexts.d.ts +10 -0
  139. package/dist/preview-server/render-queue/get-default-video-contexts.js +13 -0
  140. package/dist/preview-server/render-queue/job.d.ts +116 -0
  141. package/dist/preview-server/render-queue/job.js +2 -0
  142. package/dist/preview-server/render-queue/make-retry-payload.d.ts +3 -0
  143. package/dist/preview-server/render-queue/make-retry-payload.js +79 -0
  144. package/dist/preview-server/render-queue/open-directory-in-finder.d.ts +1 -0
  145. package/dist/preview-server/render-queue/open-directory-in-finder.js +34 -0
  146. package/dist/preview-server/render-queue/process-still.d.ts +8 -0
  147. package/dist/preview-server/render-queue/process-still.js +52 -0
  148. package/dist/preview-server/render-queue/process-video.d.ts +8 -0
  149. package/dist/preview-server/render-queue/process-video.js +69 -0
  150. package/dist/preview-server/render-queue/queue.d.ts +21 -0
  151. package/dist/preview-server/render-queue/queue.js +185 -0
  152. package/dist/preview-server/routes/add-render.d.ts +3 -0
  153. package/dist/preview-server/routes/add-render.js +69 -0
  154. package/dist/preview-server/routes/cancel-render.d.ts +3 -0
  155. package/dist/preview-server/routes/cancel-render.js +9 -0
  156. package/dist/preview-server/routes/open-in-file-explorer.d.ts +3 -0
  157. package/dist/preview-server/routes/open-in-file-explorer.js +14 -0
  158. package/dist/preview-server/routes/remove-render.d.ts +3 -0
  159. package/dist/preview-server/routes/remove-render.js +9 -0
  160. package/dist/preview-server/routes/subscribe-to-file-existence.d.ts +3 -0
  161. package/dist/preview-server/routes/subscribe-to-file-existence.js +13 -0
  162. package/dist/preview-server/routes/unsubscribe-from-file-existence.d.ts +3 -0
  163. package/dist/preview-server/routes/unsubscribe-from-file-existence.js +13 -0
  164. package/dist/render-flows/render.d.ts +47 -0
  165. package/dist/render-flows/render.js +280 -0
  166. package/dist/render-flows/still.d.ts +29 -0
  167. package/dist/render-flows/still.js +171 -0
  168. package/package.json +6 -6
@@ -4,7 +4,11 @@ exports.getStillFrame = exports.setStillFrame = void 0;
4
4
  const remotion_1 = require("remotion");
5
5
  let stillFrame = 0;
6
6
  const setStillFrame = (frame) => {
7
- remotion_1.Internals.validateFrame(frame, Infinity);
7
+ remotion_1.Internals.validateFrame({
8
+ frame,
9
+ durationInFrames: Infinity,
10
+ allowFloats: false,
11
+ });
8
12
  stillFrame = frame;
9
13
  };
10
14
  exports.setStillFrame = setStillFrame;
@@ -0,0 +1 @@
1
+ export declare const convertEntryPointToServeUrl: (entryPoint: string) => string;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.convertEntryPointToServeUrl = void 0;
7
+ const renderer_1 = require("@remotion/renderer");
8
+ const path_1 = __importDefault(require("path"));
9
+ const convertEntryPointToServeUrl = (entryPoint) => {
10
+ const fullPath = renderer_1.RenderInternals.isServeUrl(entryPoint)
11
+ ? entryPoint
12
+ : path_1.default.resolve(process.cwd(), entryPoint);
13
+ return fullPath;
14
+ };
15
+ exports.convertEntryPointToServeUrl = convertEntryPointToServeUrl;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const Checkbox: React.FC<{
3
+ checked: boolean;
4
+ onChange: React.ChangeEventHandler<HTMLInputElement>;
5
+ disabled?: boolean;
6
+ }>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Checkbox = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const colors_1 = require("../helpers/colors");
7
+ const Checkmark_1 = require("../icons/Checkmark");
8
+ const size = 20;
9
+ const background = {
10
+ height: size,
11
+ width: size,
12
+ position: 'relative',
13
+ };
14
+ const box = {
15
+ display: 'flex',
16
+ justifyContent: 'center',
17
+ alignItems: 'center',
18
+ position: 'absolute',
19
+ height: size,
20
+ width: size,
21
+ top: 0,
22
+ left: 0,
23
+ pointerEvents: 'none',
24
+ };
25
+ const Checkbox = ({ checked, onChange, disabled }) => {
26
+ const input = (0, react_1.useMemo)(() => {
27
+ return {
28
+ appearance: 'none',
29
+ background: disabled ? 'transparent' : colors_1.INPUT_BACKGROUND,
30
+ border: '1px solid ' + colors_1.INPUT_BORDER_COLOR_UNHOVERED,
31
+ height: size,
32
+ width: size,
33
+ top: 0,
34
+ left: 0,
35
+ position: 'absolute',
36
+ margin: 0,
37
+ };
38
+ }, [disabled]);
39
+ return ((0, jsx_runtime_1.jsxs)("div", { style: background, children: [(0, jsx_runtime_1.jsx)("input", { style: input, type: 'checkbox', checked: checked, onChange: onChange, disabled: disabled }), (0, jsx_runtime_1.jsx)("div", { style: box, children: checked ? (0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {}) : null })] }));
40
+ };
41
+ exports.Checkbox = Checkbox;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const CollapsableOptions: React.FC<{
3
+ children: React.ReactNode;
4
+ showLabel: string;
5
+ hideLabel: string;
6
+ }>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CollapsableOptions = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const colors_1 = require("../helpers/colors");
7
+ const z_index_1 = require("../state/z-index");
8
+ const layout_1 = require("./layout");
9
+ const TimelineCollapseToggle_1 = require("./Timeline/TimelineCollapseToggle");
10
+ const container = {
11
+ marginLeft: 16,
12
+ height: 40,
13
+ display: 'flex',
14
+ flexDirection: 'row',
15
+ alignItems: 'center',
16
+ };
17
+ const buttonStyle = {
18
+ border: 'none',
19
+ padding: 0,
20
+ appearance: 'none',
21
+ display: 'flex',
22
+ flexDirection: 'row',
23
+ alignItems: 'center',
24
+ fontSize: 14,
25
+ color: colors_1.LIGHT_TEXT,
26
+ };
27
+ const CollapsableOptions = ({ children, showLabel, hideLabel }) => {
28
+ const [show, setShow] = (0, react_1.useState)(false);
29
+ const { tabIndex } = (0, z_index_1.useZIndex)();
30
+ const onClick = (0, react_1.useCallback)(() => {
31
+ setShow((s) => !s);
32
+ }, []);
33
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: container, children: (0, jsx_runtime_1.jsxs)("button", { style: buttonStyle, tabIndex: tabIndex, onClick: onClick, type: "button", children: [(0, jsx_runtime_1.jsx)(TimelineCollapseToggle_1.TimelineCollapseToggle, { color: colors_1.LIGHT_TEXT, collapsed: !show }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { block: true, x: 1 }), show ? hideLabel : showLabel] }) }), show ? children : null] }));
34
+ };
35
+ exports.CollapsableOptions = CollapsableOptions;
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+ export declare const TitleUpdater: React.FC;
3
+ export declare const CurrentCompositionKeybindings: React.FC;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CurrentCompositionKeybindings = exports.TitleUpdater = void 0;
4
+ const react_1 = require("react");
5
+ const remotion_1 = require("remotion");
6
+ const use_keybinding_1 = require("../helpers/use-keybinding");
7
+ const TitleUpdater = () => {
8
+ const video = remotion_1.Internals.useVideo();
9
+ (0, react_1.useEffect)(() => {
10
+ if (!video) {
11
+ document.title = 'Remotion Preview';
12
+ return;
13
+ }
14
+ document.title = `${video.id} / ${window.remotion_projectName} - Remotion Preview`;
15
+ }, [video]);
16
+ return null;
17
+ };
18
+ exports.TitleUpdater = TitleUpdater;
19
+ const CurrentCompositionKeybindings = () => {
20
+ const keybindings = (0, use_keybinding_1.useKeybinding)();
21
+ const video = remotion_1.Internals.useVideo();
22
+ const openRenderModal = (0, react_1.useCallback)(() => {
23
+ if (!video) {
24
+ return null;
25
+ }
26
+ const renderButton = document.getElementById('render-modal-button');
27
+ renderButton.click();
28
+ }, [video]);
29
+ (0, react_1.useEffect)(() => {
30
+ const binding = keybindings.registerKeybinding({
31
+ event: 'keydown',
32
+ key: 'r',
33
+ commandCtrlKey: false,
34
+ callback: openRenderModal,
35
+ preventDefault: true,
36
+ });
37
+ return () => {
38
+ binding.unregister();
39
+ };
40
+ }, [keybindings, openRenderModal]);
41
+ return null;
42
+ };
43
+ exports.CurrentCompositionKeybindings = CurrentCompositionKeybindings;
@@ -0,0 +1,5 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ import React from 'react';
3
+ export declare const InlineAction: React.FC<PropsWithChildren<{
4
+ onClick: React.MouseEventHandler<HTMLAnchorElement> | undefined;
5
+ }>>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InlineAction = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const colors_1 = require("../helpers/colors");
7
+ const z_index_1 = require("../state/z-index");
8
+ const InlineAction = ({ children, onClick }) => {
9
+ const { tabIndex } = (0, z_index_1.useZIndex)();
10
+ const [hovered, setHovered] = (0, react_1.useState)(false);
11
+ const onPointerEnter = (0, react_1.useCallback)(() => {
12
+ setHovered(true);
13
+ }, []);
14
+ const onPointerLeave = (0, react_1.useCallback)(() => {
15
+ setHovered(false);
16
+ }, []);
17
+ const style = (0, react_1.useMemo)(() => {
18
+ return {
19
+ border: 'none',
20
+ background: hovered ? colors_1.CLEAR_HOVER : 'transparent',
21
+ height: 24,
22
+ width: 24,
23
+ display: 'inline-flex',
24
+ justifyContent: 'center',
25
+ alignItems: 'center',
26
+ borderRadius: 3,
27
+ opacity: hovered ? 1 : 0.6,
28
+ };
29
+ }, [hovered]);
30
+ return (
31
+ // <div> because cannot use button inside a button
32
+ (0, jsx_runtime_1.jsx)("a", { onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, onClick: onClick, style: style, tabIndex: tabIndex, children: children }));
33
+ };
34
+ exports.InlineAction = InlineAction;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const Modals: React.FC;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Modals = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = require("react");
9
+ const client_id_1 = require("../helpers/client-id");
10
+ const modals_1 = require("../state/modals");
11
+ const NewComposition_1 = __importDefault(require("./NewComposition/NewComposition"));
12
+ const QuickSwitcher_1 = __importDefault(require("./QuickSwitcher/QuickSwitcher"));
13
+ const RenderErrorModal_1 = require("./RenderModal/RenderErrorModal");
14
+ const RenderModal_1 = require("./RenderModal/RenderModal");
15
+ const UpdateModal_1 = require("./UpdateModal/UpdateModal");
16
+ const Modals = () => {
17
+ const { selectedModal: modalContextType } = (0, react_1.useContext)(modals_1.ModalsContext);
18
+ const canRender = (0, react_1.useContext)(client_id_1.PreviewServerConnectionCtx).type === 'connected';
19
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [modalContextType && modalContextType.type === 'new-comp' && ((0, jsx_runtime_1.jsx)(NewComposition_1.default, { initialCompType: modalContextType.compType })), modalContextType && canRender && modalContextType.type === 'render' && ((0, jsx_runtime_1.jsx)(RenderModal_1.RenderModal, { initialFrame: modalContextType.initialFrame, compositionId: modalContextType.compositionId, initialVideoImageFormat: modalContextType.initialVideoImageFormat, initialQuality: modalContextType.initialQuality, initialOutName: modalContextType.initialOutName, initialScale: modalContextType.initialScale, initialVerbose: modalContextType.initialVerbose, initialRenderType: modalContextType.initialRenderType, initialVideoCodecForAudioTab: modalContextType.initialVideoCodecForAudioTab, initialVideoCodecForVideoTab: modalContextType.initialVideoCodecForVideoTab, initialConcurrency: modalContextType.initialConcurrency, maxConcurrency: modalContextType.maxConcurrency, minConcurrency: modalContextType.minConcurrency, initialStillImageFormat: modalContextType.initialStillImageFormat, initialMuted: modalContextType.initialMuted, initialEnforceAudioTrack: modalContextType.initialEnforceAudioTrack, initialProResProfile: modalContextType.initialProResProfile, initialPixelFormat: modalContextType.initialPixelFormat, initialAudioBitrate: modalContextType.initialAudioBitrate, initialVideoBitrate: modalContextType.initialVideoBitrate, initialEveryNthFrame: modalContextType.initialEveryNthFrame, initialNumberOfGifLoops: modalContextType.initialNumberOfGifLoops, initialDelayRenderTimeout: modalContextType.initialDelayRenderTimeout, initialAudioCodec: modalContextType.initialAudioCodec })), modalContextType &&
20
+ canRender &&
21
+ modalContextType.type === 'render-error' && ((0, jsx_runtime_1.jsx)(RenderErrorModal_1.RenderErrorModal, { job: modalContextType.job })), modalContextType && modalContextType.type === 'update' && ((0, jsx_runtime_1.jsx)(UpdateModal_1.UpdateModal, { info: modalContextType.info })), modalContextType && modalContextType.type === 'quick-switcher' && ((0, jsx_runtime_1.jsx)(QuickSwitcher_1.default, { invocationTimestamp: modalContextType.invocationTimestamp, initialMode: modalContextType.mode }))] }));
22
+ };
23
+ exports.Modals = Modals;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import type { TCompMetadata } from 'remotion';
3
+ export declare const RenderButton: React.FC<{
4
+ composition: TCompMetadata;
5
+ visible: boolean;
6
+ }>;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderButton = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const get_default_out_name_1 = require("../../get-default-out-name");
7
+ const get_default_video_contexts_1 = require("../../preview-server/render-queue/get-default-video-contexts");
8
+ const render_1 = require("../icons/render");
9
+ const modals_1 = require("../state/modals");
10
+ const InlineAction_1 = require("./InlineAction");
11
+ const RenderButton = ({ composition, visible }) => {
12
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
13
+ const iconStyle = (0, react_1.useMemo)(() => {
14
+ return {
15
+ style: {
16
+ height: 12,
17
+ },
18
+ };
19
+ }, []);
20
+ const isVideo = composition.durationInFrames > 1;
21
+ const onClick = (0, react_1.useCallback)((e) => {
22
+ const defaults = window.remotion_renderDefaults;
23
+ if (!defaults) {
24
+ throw new Error('expected defaults');
25
+ }
26
+ e.stopPropagation();
27
+ const { initialAudioCodec, initialRenderType, initialVideoCodec } = (0, get_default_video_contexts_1.getDefaultCodecs)({
28
+ defaultCodec: defaults.codec,
29
+ isStill: !isVideo,
30
+ });
31
+ setSelectedModal({
32
+ type: 'render',
33
+ compositionId: composition.id,
34
+ initialFrame: 0,
35
+ initialVideoImageFormat: defaults.videoImageFormat,
36
+ initialStillImageFormat: defaults.stillImageFormat,
37
+ initialQuality: defaults.quality,
38
+ initialScale: defaults.scale,
39
+ initialVerbose: defaults.logLevel === 'verbose',
40
+ initialOutName: (0, get_default_out_name_1.getDefaultOutLocation)({
41
+ compositionName: composition.id,
42
+ defaultExtension: isVideo ? 'mp4' : 'png',
43
+ type: 'asset',
44
+ }),
45
+ initialVideoCodecForAudioTab: initialAudioCodec,
46
+ initialRenderType,
47
+ initialVideoCodecForVideoTab: initialVideoCodec,
48
+ initialConcurrency: defaults.concurrency,
49
+ maxConcurrency: defaults.maxConcurrency,
50
+ minConcurrency: defaults.minConcurrency,
51
+ initialMuted: defaults.muted,
52
+ initialEnforceAudioTrack: defaults.enforceAudioTrack,
53
+ initialProResProfile: defaults.proResProfile,
54
+ initialPixelFormat: defaults.pixelFormat,
55
+ initialAudioBitrate: defaults.audioBitrate,
56
+ initialVideoBitrate: defaults.videoBitrate,
57
+ initialEveryNthFrame: defaults.everyNthFrame,
58
+ initialNumberOfGifLoops: defaults.numberOfGifLoops,
59
+ initialDelayRenderTimeout: defaults.delayRenderTimeout,
60
+ initialAudioCodec: defaults.audioCodec,
61
+ });
62
+ }, [composition.id, isVideo, setSelectedModal]);
63
+ if (!visible) {
64
+ return null;
65
+ }
66
+ return ((0, jsx_runtime_1.jsx)(InlineAction_1.InlineAction, { onClick: onClick, children: (0, jsx_runtime_1.jsx)(render_1.RenderIcon, { svgProps: iconStyle }) }));
67
+ };
68
+ exports.RenderButton = RenderButton;
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import type { Codec } from '@remotion/renderer';
3
+ export declare const useCrfState: (codec: Codec) => {
4
+ crf: number;
5
+ setCrf: import("react").Dispatch<import("react").SetStateAction<number>>;
6
+ minCrf: number;
7
+ maxCrf: number;
8
+ shouldDisplayOption: boolean;
9
+ };
10
+ export declare const CrfSetting: React.FC<{
11
+ crf: number;
12
+ setCrf: React.Dispatch<React.SetStateAction<number>>;
13
+ min: number;
14
+ max: number;
15
+ }>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrfSetting = exports.useCrfState = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const client_1 = require("@remotion/renderer/client");
6
+ const react_1 = require("react");
7
+ const NumberSetting_1 = require("./NumberSetting");
8
+ const getDefaultCrfState = () => {
9
+ return client_1.BrowserSafeApis.validCodecs
10
+ .map((c) => {
11
+ return [c, client_1.BrowserSafeApis.getDefaultCrfForCodec(c)];
12
+ })
13
+ .reduce((acc, [codec, crf]) => {
14
+ return {
15
+ ...acc,
16
+ [codec]: crf,
17
+ };
18
+ }, {});
19
+ };
20
+ const useCrfState = (codec) => {
21
+ const [state, setState] = (0, react_1.useState)(() => getDefaultCrfState());
22
+ const range = client_1.BrowserSafeApis.getValidCrfRanges(codec);
23
+ const setCrf = (updater) => {
24
+ setState((q) => {
25
+ return {
26
+ ...q,
27
+ [codec]: typeof updater === 'number' ? updater : updater(q[codec]),
28
+ };
29
+ });
30
+ };
31
+ return {
32
+ crf: state[codec],
33
+ setCrf,
34
+ minCrf: range[0],
35
+ maxCrf: range[1],
36
+ shouldDisplayOption: range[0] !== range[1],
37
+ };
38
+ };
39
+ exports.useCrfState = useCrfState;
40
+ const CrfSetting = ({ crf, setCrf, min, max }) => {
41
+ return ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: min, max: max, name: "CRF", onValueChanged: setCrf, value: crf, step: 1 }));
42
+ };
43
+ exports.CrfSetting = CrfSetting;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const EnforceAudioTrackSetting: React.FC<{
3
+ enforceAudioTrack: boolean;
4
+ setEnforceAudioTrack: React.Dispatch<React.SetStateAction<boolean>>;
5
+ muted: boolean;
6
+ }>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnforceAudioTrackSetting = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const Checkbox_1 = require("../Checkbox");
7
+ const layout_1 = require("./layout");
8
+ const EnforceAudioTrackSetting = ({ enforceAudioTrack, muted, setEnforceAudioTrack }) => {
9
+ const onEnforceAudioTrackChanged = (0, react_1.useCallback)((e) => {
10
+ setEnforceAudioTrack(e.target.checked);
11
+ }, [setEnforceAudioTrack]);
12
+ return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Enforce Audio Track" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { disabled: muted && !enforceAudioTrack, checked: enforceAudioTrack, onChange: onEnforceAudioTrackChanged }) })] }));
13
+ };
14
+ exports.EnforceAudioTrackSetting = EnforceAudioTrackSetting;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export declare const FrameRangeSetting: React.FC<{
3
+ startFrame: number;
4
+ endFrame: number;
5
+ setEndFrame: React.Dispatch<React.SetStateAction<number | null>>;
6
+ setStartFrame: React.Dispatch<React.SetStateAction<number | null>>;
7
+ durationInFrames: number;
8
+ }>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FrameRangeSetting = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const InputDragger_1 = require("../NewComposition/InputDragger");
7
+ const RemInput_1 = require("../NewComposition/RemInput");
8
+ const layout_1 = require("./layout");
9
+ const FrameRangeSetting = ({ startFrame, endFrame, setEndFrame, durationInFrames, setStartFrame }) => {
10
+ const maxStartFrame = endFrame - 1;
11
+ const minStartFrame = 0;
12
+ const minEndFrame = startFrame + 1;
13
+ const maxEndFrame = durationInFrames - 1;
14
+ const onStartFrameChangedDirectly = (0, react_1.useCallback)((newStartFrame) => {
15
+ setStartFrame(newStartFrame);
16
+ }, [setStartFrame]);
17
+ const onEndFrameChangedDirectly = (0, react_1.useCallback)((newEndFrame) => {
18
+ setEndFrame(newEndFrame);
19
+ }, [setEndFrame]);
20
+ const onStartFrameChanged = (0, react_1.useCallback)((e) => {
21
+ setStartFrame((q) => {
22
+ const newStartFrame = parseInt(e, 10);
23
+ if (Number.isNaN(newStartFrame)) {
24
+ return q;
25
+ }
26
+ const newStartFrameClamped = Math.min(maxStartFrame, Math.max(newStartFrame, minStartFrame));
27
+ return newStartFrameClamped;
28
+ });
29
+ }, [maxStartFrame, setStartFrame]);
30
+ const onEndFrameChanged = (0, react_1.useCallback)((e) => {
31
+ setEndFrame((q) => {
32
+ const newEndFrame = parseInt(e, 10);
33
+ if (Number.isNaN(newEndFrame)) {
34
+ return q;
35
+ }
36
+ const newEndFrameClamped = Math.min(maxEndFrame, Math.max(newEndFrame, minEndFrame));
37
+ return newEndFrameClamped;
38
+ });
39
+ }, [maxEndFrame, minEndFrame, setEndFrame]);
40
+ return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Frame range" }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.rightRow, children: [(0, jsx_runtime_1.jsx)(RemInput_1.RightAlignInput, { children: (0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { value: startFrame, onTextChange: onStartFrameChanged, placeholder: `${minStartFrame}-${maxStartFrame}`, onValueChange: onStartFrameChangedDirectly, name: "startFrame", step: 1, min: minStartFrame, max: maxStartFrame }) }), (0, jsx_runtime_1.jsx)(RemInput_1.RightAlignInput, { children: (0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { value: endFrame, onTextChange: onEndFrameChanged, placeholder: `${minEndFrame}-${maxEndFrame}`, onValueChange: onEndFrameChangedDirectly, name: "endFrame", step: 1, min: minEndFrame, max: maxEndFrame }) })] })] }));
41
+ };
42
+ exports.FrameRangeSetting = FrameRangeSetting;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const InfoBubble: React.FC<{
3
+ title: string;
4
+ children: React.ReactNode;
5
+ }>;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InfoBubble = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const player_1 = require("@remotion/player");
9
+ const react_1 = require("react");
10
+ const react_dom_1 = __importDefault(require("react-dom"));
11
+ const colors_1 = require("../../helpers/colors");
12
+ const z_index_1 = require("../../state/z-index");
13
+ const portals_1 = require("../Menu/portals");
14
+ const styles_1 = require("../Menu/styles");
15
+ const InfoTooltip_1 = require("./InfoTooltip");
16
+ const icon = {
17
+ color: colors_1.LIGHT_TEXT,
18
+ height: 15,
19
+ };
20
+ const container = {
21
+ display: 'inline-block',
22
+ border: 'none',
23
+ fontSize: 14,
24
+ verticalAlign: 'text-bottom',
25
+ };
26
+ const InfoBubble = ({ title, children }) => {
27
+ const [hovered, setIsHovered] = (0, react_1.useState)(false);
28
+ const [opened, setOpened] = (0, react_1.useState)(false);
29
+ const ref = (0, react_1.useRef)(null);
30
+ const { tabIndex, currentZIndex } = (0, z_index_1.useZIndex)();
31
+ const size = player_1.PlayerInternals.useElementSize(ref, {
32
+ triggerOnWindowResize: true,
33
+ shouldApplyCssTransforms: true,
34
+ });
35
+ const refresh = size === null || size === void 0 ? void 0 : size.refresh;
36
+ const onHide = (0, react_1.useCallback)(() => {
37
+ setOpened(false);
38
+ }, []);
39
+ (0, react_1.useEffect)(() => {
40
+ const { current } = ref;
41
+ if (!current) {
42
+ return;
43
+ }
44
+ const onMouseEnter = () => setIsHovered(true);
45
+ const onMouseLeave = () => setIsHovered(false);
46
+ const onPointerDown = (e) => {
47
+ e.stopPropagation();
48
+ return setOpened((o) => {
49
+ if (!o) {
50
+ refresh === null || refresh === void 0 ? void 0 : refresh();
51
+ }
52
+ return !o;
53
+ });
54
+ };
55
+ const onClick = (e) => {
56
+ e.stopPropagation();
57
+ const isKeyboardInitiated = e.detail === 0;
58
+ if (!isKeyboardInitiated) {
59
+ return;
60
+ }
61
+ return setOpened((o) => {
62
+ return !o;
63
+ });
64
+ };
65
+ current.addEventListener('mouseenter', onMouseEnter);
66
+ current.addEventListener('mouseleave', onMouseLeave);
67
+ current.addEventListener('pointerdown', onPointerDown);
68
+ current.addEventListener('click', onClick);
69
+ return () => {
70
+ current.removeEventListener('mouseenter', onMouseEnter);
71
+ current.removeEventListener('mouseleave', onMouseLeave);
72
+ current.removeEventListener('pointerdown', onPointerDown);
73
+ current.removeEventListener('click', onClick);
74
+ };
75
+ }, [refresh]);
76
+ const portalStyle = (0, react_1.useMemo)(() => {
77
+ if (!opened || !size) {
78
+ return null;
79
+ }
80
+ const spaceToBottom = size.windowSize.height - (size.top + size.height);
81
+ const spaceToTop = size.top;
82
+ const layout = spaceToTop > spaceToBottom ? 'bottom' : 'top';
83
+ return {
84
+ ...(layout === 'top'
85
+ ? {
86
+ position: 'fixed',
87
+ top: size.top + size.height,
88
+ }
89
+ : {
90
+ position: 'fixed',
91
+ bottom: size.windowSize.height - size.top,
92
+ }),
93
+ left: size.left,
94
+ };
95
+ }, [opened, size]);
96
+ const style = (0, react_1.useMemo)(() => {
97
+ return {
98
+ ...container,
99
+ userSelect: 'none',
100
+ color: 'white',
101
+ display: 'inline-flex',
102
+ flexDirection: 'row',
103
+ alignItems: 'center',
104
+ };
105
+ }, []);
106
+ // TODO: Can click two info bubbles at the same time
107
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("button", { ref: ref, tabIndex: tabIndex, style: style, title: title, type: "button", children: (0, jsx_runtime_1.jsx)("svg", { style: icon, viewBox: "0 0 512 512", children: (0, jsx_runtime_1.jsx)("path", { fill: hovered ? 'white' : colors_1.LIGHT_TEXT, d: "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V248c0-13.3-10.7-24-24-24H216c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v64H216zm40-144a32 32 0 1 0 0-64 32 32 0 1 0 0 64z" }) }) }), portalStyle
108
+ ? react_dom_1.default.createPortal((0, jsx_runtime_1.jsx)("div", { style: styles_1.outerPortal, className: "css-reset", children: (0, jsx_runtime_1.jsx)(z_index_1.HigherZIndex, { onOutsideClick: onHide, onEscape: onHide, children: (0, jsx_runtime_1.jsx)("div", { style: portalStyle, children: (0, jsx_runtime_1.jsx)(InfoTooltip_1.InfoTooltip, { children: children }) }) }) }), (0, portals_1.getPortal)(currentZIndex))
109
+ : null] }));
110
+ };
111
+ exports.InfoBubble = InfoBubble;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const InfoTooltip: React.FC<{
3
+ children: React.ReactNode;
4
+ }>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InfoTooltip = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const colors_1 = require("../../helpers/colors");
6
+ const styles_1 = require("../Menu/styles");
7
+ const container = {
8
+ padding: '10px 12px',
9
+ // TODO: Depending on direction
10
+ boxShadow: styles_1.SHADOW_TOWARDS_TOP,
11
+ background: colors_1.BACKGROUND,
12
+ color: 'white',
13
+ border: '0.5px solid ' + colors_1.BORDER_COLOR,
14
+ maxHeight: 200,
15
+ overflow: 'auto',
16
+ };
17
+ const arrow = {
18
+ height: 7,
19
+ display: 'block',
20
+ overflow: 'visible',
21
+ marginTop: -0.5,
22
+ marginLeft: 7,
23
+ };
24
+ const InfoTooltip = ({ children }) => {
25
+ return (
26
+ // TODO: Down arrow
27
+ // TODO: not scrolling with portal
28
+ (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: container, children: children }), (0, jsx_runtime_1.jsx)("svg", { viewBox: "0 0 14 7", style: arrow, children: (0, jsx_runtime_1.jsx)("path", { d: `M 14 0 L 7 7 L 0 0`, fill: colors_1.BACKGROUND, strokeLinecap: "butt", stroke: colors_1.BORDER_COLOR, strokeWidth: 0.5 }) })] }));
29
+ };
30
+ exports.InfoTooltip = InfoTooltip;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const MutedSetting: React.FC<{
3
+ muted: boolean;
4
+ setMuted: React.Dispatch<React.SetStateAction<boolean>>;
5
+ enforceAudioTrack: boolean;
6
+ }>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MutedSetting = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const Checkbox_1 = require("../Checkbox");
7
+ const layout_1 = require("./layout");
8
+ const MutedSetting = ({ muted, setMuted, enforceAudioTrack }) => {
9
+ const onMutedChanged = (0, react_1.useCallback)((e) => {
10
+ setMuted(e.target.checked);
11
+ }, [setMuted]);
12
+ return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Muted" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: muted, disabled: enforceAudioTrack && !muted, onChange: onMutedChanged }) })] }));
13
+ };
14
+ exports.MutedSetting = MutedSetting;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const NumberOfLoopsSetting: React.FC<{
3
+ numberOfGifLoops: number;
4
+ setNumberOfGifLoops: React.Dispatch<React.SetStateAction<number>>;
5
+ }>;