@remotion/cli 3.3.79 → 3.3.81

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 (249) hide show
  1. package/dist/codemods/update-default-props.d.ts +5 -0
  2. package/dist/codemods/update-default-props.js +144 -0
  3. package/dist/convert-entry-point-to-serve-url.d.ts +1 -0
  4. package/dist/convert-entry-point-to-serve-url.js +15 -0
  5. package/dist/editor/components/Checkbox.d.ts +6 -0
  6. package/dist/editor/components/Checkbox.js +42 -0
  7. package/dist/editor/components/CollapsableOptions.d.ts +6 -0
  8. package/dist/editor/components/CollapsableOptions.js +35 -0
  9. package/dist/editor/components/CollapsedSidebarExpander.d.ts +5 -0
  10. package/dist/editor/components/CollapsedSidebarExpander.js +41 -0
  11. package/dist/editor/components/CurrentCompositionSideEffects.d.ts +3 -0
  12. package/dist/editor/components/CurrentCompositionSideEffects.js +51 -0
  13. package/dist/editor/components/InlineAction.d.ts +5 -0
  14. package/dist/editor/components/InlineAction.js +35 -0
  15. package/dist/editor/components/Modals.d.ts +2 -0
  16. package/dist/editor/components/Modals.js +23 -0
  17. package/dist/editor/components/NewComposition/RemTextarea.d.ts +7 -0
  18. package/dist/editor/components/NewComposition/RemTextarea.js +92 -0
  19. package/dist/editor/components/RenderButton.d.ts +6 -0
  20. package/dist/editor/components/RenderButton.js +73 -0
  21. package/dist/editor/components/RenderModal/CliCopyButton.d.ts +4 -0
  22. package/dist/editor/components/RenderModal/CliCopyButton.js +22 -0
  23. package/dist/editor/components/RenderModal/CrfSetting.d.ts +16 -0
  24. package/dist/editor/components/RenderModal/CrfSetting.js +43 -0
  25. package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.d.ts +8 -0
  26. package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.js +16 -0
  27. package/dist/editor/components/RenderModal/EnvInput.d.ts +11 -0
  28. package/dist/editor/components/RenderModal/EnvInput.js +74 -0
  29. package/dist/editor/components/RenderModal/FrameRangeSetting.d.ts +8 -0
  30. package/dist/editor/components/RenderModal/FrameRangeSetting.js +42 -0
  31. package/dist/editor/components/RenderModal/GuiRenderStatus.d.ts +5 -0
  32. package/dist/editor/components/RenderModal/GuiRenderStatus.js +78 -0
  33. package/dist/editor/components/RenderModal/InfoBubble.d.ts +5 -0
  34. package/dist/editor/components/RenderModal/InfoBubble.js +115 -0
  35. package/dist/editor/components/RenderModal/InfoTooltip.d.ts +5 -0
  36. package/dist/editor/components/RenderModal/InfoTooltip.js +40 -0
  37. package/dist/editor/components/RenderModal/InlineEyeIcon.d.ts +5 -0
  38. package/dist/editor/components/RenderModal/InlineEyeIcon.js +14 -0
  39. package/dist/editor/components/RenderModal/InlineRemoveButton.d.ts +4 -0
  40. package/dist/editor/components/RenderModal/InlineRemoveButton.js +12 -0
  41. package/dist/editor/components/RenderModal/JpegQualitySetting.d.ts +5 -0
  42. package/dist/editor/components/RenderModal/JpegQualitySetting.js +12 -0
  43. package/dist/editor/components/RenderModal/MutedSetting.d.ts +8 -0
  44. package/dist/editor/components/RenderModal/MutedSetting.js +16 -0
  45. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.d.ts +5 -0
  46. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.js +26 -0
  47. package/dist/editor/components/RenderModal/NumberSetting.d.ts +12 -0
  48. package/dist/editor/components/RenderModal/NumberSetting.js +29 -0
  49. package/dist/editor/components/RenderModal/OptionExplainer.d.ts +5 -0
  50. package/dist/editor/components/RenderModal/OptionExplainer.js +45 -0
  51. package/dist/editor/components/RenderModal/RenderModal.d.ts +34 -0
  52. package/dist/editor/components/RenderModal/RenderModal.js +566 -0
  53. package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +26 -0
  54. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +59 -0
  55. package/dist/editor/components/RenderModal/RenderModalAudio.d.ts +17 -0
  56. package/dist/editor/components/RenderModal/RenderModalAudio.js +46 -0
  57. package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +23 -0
  58. package/dist/editor/components/RenderModal/RenderModalBasic.js +79 -0
  59. package/dist/editor/components/RenderModal/RenderModalData.d.ts +9 -0
  60. package/dist/editor/components/RenderModal/RenderModalData.js +63 -0
  61. package/dist/editor/components/RenderModal/RenderModalEnvironmentVariables.d.ts +5 -0
  62. package/dist/editor/components/RenderModal/RenderModalEnvironmentVariables.js +55 -0
  63. package/dist/editor/components/RenderModal/RenderModalGif.d.ts +9 -0
  64. package/dist/editor/components/RenderModal/RenderModalGif.js +19 -0
  65. package/dist/editor/components/RenderModal/RenderModalHr.d.ts +2 -0
  66. package/dist/editor/components/RenderModal/RenderModalHr.js +18 -0
  67. package/dist/editor/components/RenderModal/RenderModalInput.d.ts +10 -0
  68. package/dist/editor/components/RenderModal/RenderModalInput.js +13 -0
  69. package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.d.ts +10 -0
  70. package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.js +98 -0
  71. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +28 -0
  72. package/dist/editor/components/RenderModal/RenderModalPicture.js +56 -0
  73. package/dist/editor/components/RenderModal/RenderStatusModal.d.ts +4 -0
  74. package/dist/editor/components/RenderModal/RenderStatusModal.js +72 -0
  75. package/dist/editor/components/RenderModal/ScaleSetting.d.ts +5 -0
  76. package/dist/editor/components/RenderModal/ScaleSetting.js +17 -0
  77. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.d.ts +12 -0
  78. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.js +70 -0
  79. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEmptyStateGraphic.d.ts +2 -0
  80. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEmptyStateGraphic.js +15 -0
  81. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.d.ts +15 -0
  82. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +41 -0
  83. package/dist/editor/components/RenderModal/SchemaEditor/SchemaResetButton.d.ts +4 -0
  84. package/dist/editor/components/RenderModal/SchemaEditor/SchemaResetButton.js +12 -0
  85. package/dist/editor/components/RenderModal/SchemaEditor/SchemaSaveButton.d.ts +4 -0
  86. package/dist/editor/components/RenderModal/SchemaEditor/SchemaSaveButton.js +12 -0
  87. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.d.ts +14 -0
  88. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +71 -0
  89. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayItemEditor.d.ts +13 -0
  90. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayItemEditor.js +28 -0
  91. package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.d.ts +12 -0
  92. package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.js +27 -0
  93. package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.d.ts +14 -0
  94. package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.js +76 -0
  95. package/dist/editor/components/RenderModal/SchemaEditor/ZodEffectEditor.d.ts +14 -0
  96. package/dist/editor/components/RenderModal/SchemaEditor/ZodEffectEditor.js +51 -0
  97. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.d.ts +14 -0
  98. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.js +69 -0
  99. package/dist/editor/components/RenderModal/SchemaEditor/ZodErrorMessages.d.ts +5 -0
  100. package/dist/editor/components/RenderModal/SchemaEditor/ZodErrorMessages.js +23 -0
  101. package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.d.ts +8 -0
  102. package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +27 -0
  103. package/dist/editor/components/RenderModal/SchemaEditor/ZodNumberEditor.d.ts +14 -0
  104. package/dist/editor/components/RenderModal/SchemaEditor/ZodNumberEditor.js +89 -0
  105. package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.d.ts +14 -0
  106. package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.js +57 -0
  107. package/dist/editor/components/RenderModal/SchemaEditor/ZodStringEditor.d.ts +14 -0
  108. package/dist/editor/components/RenderModal/SchemaEditor/ZodStringEditor.js +43 -0
  109. package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.d.ts +14 -0
  110. package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.js +61 -0
  111. package/dist/editor/components/RenderModal/SchemaEditor/date-serialization.d.ts +2 -0
  112. package/dist/editor/components/RenderModal/SchemaEditor/date-serialization.js +21 -0
  113. package/dist/editor/components/RenderModal/SchemaEditor/get-schema-label.d.ts +2 -0
  114. package/dist/editor/components/RenderModal/SchemaEditor/get-schema-label.js +15 -0
  115. package/dist/editor/components/RenderModal/SchemaEditor/schema-serialization.d.ts +2 -0
  116. package/dist/editor/components/RenderModal/SchemaEditor/schema-serialization.js +21 -0
  117. package/dist/editor/components/RenderModal/SchemaEditor/zod-types.d.ts +1 -0
  118. package/dist/editor/components/RenderModal/SchemaEditor/zod-types.js +2 -0
  119. package/dist/editor/components/RenderModal/human-readable-audio-codecs.d.ts +2 -0
  120. package/dist/editor/components/RenderModal/human-readable-audio-codecs.js +18 -0
  121. package/dist/editor/components/RenderModal/human-readable-codec.d.ts +2 -0
  122. package/dist/editor/components/RenderModal/human-readable-codec.js +36 -0
  123. package/dist/editor/components/RenderModal/layout.d.ts +7 -0
  124. package/dist/editor/components/RenderModal/layout.js +46 -0
  125. package/dist/editor/components/RenderModal/out-name-checker.d.ts +15 -0
  126. package/dist/editor/components/RenderModal/out-name-checker.js +80 -0
  127. package/dist/editor/components/RenderQueue/CircularProgress.d.ts +5 -0
  128. package/dist/editor/components/RenderQueue/CircularProgress.js +18 -0
  129. package/dist/editor/components/RenderQueue/RenderQueueError.d.ts +5 -0
  130. package/dist/editor/components/RenderQueue/RenderQueueError.js +26 -0
  131. package/dist/editor/components/RenderQueue/RenderQueueItem.d.ts +5 -0
  132. package/dist/editor/components/RenderQueue/RenderQueueItem.js +40 -0
  133. package/dist/editor/components/RenderQueue/RenderQueueItemCancelButton.d.ts +5 -0
  134. package/dist/editor/components/RenderQueue/RenderQueueItemCancelButton.js +22 -0
  135. package/dist/editor/components/RenderQueue/RenderQueueItemStatus.d.ts +5 -0
  136. package/dist/editor/components/RenderQueue/RenderQueueItemStatus.js +43 -0
  137. package/dist/editor/components/RenderQueue/RenderQueueOpenInFolder.d.ts +5 -0
  138. package/dist/editor/components/RenderQueue/RenderQueueOpenInFolder.js +22 -0
  139. package/dist/editor/components/RenderQueue/RenderQueueOutputName.d.ts +5 -0
  140. package/dist/editor/components/RenderQueue/RenderQueueOutputName.js +26 -0
  141. package/dist/editor/components/RenderQueue/RenderQueueProgressMessage.d.ts +5 -0
  142. package/dist/editor/components/RenderQueue/RenderQueueProgressMessage.js +26 -0
  143. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.d.ts +5 -0
  144. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +33 -0
  145. package/dist/editor/components/RenderQueue/RenderQueueRepeat.d.ts +5 -0
  146. package/dist/editor/components/RenderQueue/RenderQueueRepeat.js +22 -0
  147. package/dist/editor/components/RenderQueue/SuccessIcon.d.ts +2 -0
  148. package/dist/editor/components/RenderQueue/SuccessIcon.js +14 -0
  149. package/dist/editor/components/RenderQueue/actions.d.ts +59 -0
  150. package/dist/editor/components/RenderQueue/actions.js +114 -0
  151. package/dist/editor/components/RenderQueue/context.d.ts +18 -0
  152. package/dist/editor/components/RenderQueue/context.js +49 -0
  153. package/dist/editor/components/RenderQueue/index.d.ts +2 -0
  154. package/dist/editor/components/RenderQueue/index.js +19 -0
  155. package/dist/editor/components/RenderQueue/item-style.d.ts +2 -0
  156. package/dist/editor/components/RenderQueue/item-style.js +21 -0
  157. package/dist/editor/components/RenderToolbarIcon.d.ts +2 -0
  158. package/dist/editor/components/RenderToolbarIcon.js +84 -0
  159. package/dist/editor/components/RendersTab.d.ts +6 -0
  160. package/dist/editor/components/RendersTab.js +43 -0
  161. package/dist/editor/components/RightPanel.d.ts +8 -0
  162. package/dist/editor/components/RightPanel.js +81 -0
  163. package/dist/editor/components/SegmentedControl.d.ts +16 -0
  164. package/dist/editor/components/SegmentedControl.js +63 -0
  165. package/dist/editor/components/Tabs/index.d.ts +11 -0
  166. package/dist/editor/components/Tabs/index.js +51 -0
  167. package/dist/editor/helpers/client-id.d.ts +17 -0
  168. package/dist/editor/helpers/client-id.js +46 -0
  169. package/dist/editor/helpers/convert-env-variables.d.ts +2 -0
  170. package/dist/editor/helpers/convert-env-variables.js +20 -0
  171. package/dist/editor/helpers/prores-labels.d.ts +2 -0
  172. package/dist/editor/helpers/prores-labels.js +25 -0
  173. package/dist/editor/helpers/render-modal-sections.d.ts +9 -0
  174. package/dist/editor/helpers/render-modal-sections.js +32 -0
  175. package/dist/editor/helpers/use-breakpoint.d.ts +1 -0
  176. package/dist/editor/helpers/use-breakpoint.js +17 -0
  177. package/dist/editor/helpers/use-file-existence.d.ts +1 -0
  178. package/dist/editor/helpers/use-file-existence.js +66 -0
  179. package/dist/editor/icons/RenderStillIcon.d.ts +3 -0
  180. package/dist/editor/icons/RenderStillIcon.js +8 -0
  181. package/dist/editor/icons/audio.d.ts +2 -0
  182. package/dist/editor/icons/audio.js +6 -0
  183. package/dist/editor/icons/data.d.ts +2 -0
  184. package/dist/editor/icons/data.js +8 -0
  185. package/dist/editor/icons/file.d.ts +2 -0
  186. package/dist/editor/icons/file.js +6 -0
  187. package/dist/editor/icons/frame.d.ts +2 -0
  188. package/dist/editor/icons/frame.js +6 -0
  189. package/dist/editor/icons/gear.d.ts +2 -0
  190. package/dist/editor/icons/gear.js +6 -0
  191. package/dist/editor/icons/gif.d.ts +2 -0
  192. package/dist/editor/icons/gif.js +6 -0
  193. package/dist/editor/icons/render.d.ts +8 -0
  194. package/dist/editor/icons/render.js +12 -0
  195. package/dist/editor/icons/video.d.ts +5 -0
  196. package/dist/editor/icons/video.js +8 -0
  197. package/dist/ffmpeg.d.ts +2 -0
  198. package/dist/ffmpeg.js +21 -0
  199. package/dist/file-watcher.d.ts +9 -0
  200. package/dist/file-watcher.js +35 -0
  201. package/dist/get-default-out-name.d.ts +5 -0
  202. package/dist/get-default-out-name.js +10 -0
  203. package/dist/preview-server/api-routes.d.ts +4 -0
  204. package/dist/preview-server/api-routes.js +19 -0
  205. package/dist/preview-server/api-types.d.ts +28 -0
  206. package/dist/preview-server/api-types.js +2 -0
  207. package/dist/preview-server/file-existence-watchers.d.ts +13 -0
  208. package/dist/preview-server/file-existence-watchers.js +62 -0
  209. package/dist/preview-server/handler.d.ts +9 -0
  210. package/dist/preview-server/handler.js +34 -0
  211. package/dist/preview-server/parse-body.d.ts +2 -0
  212. package/dist/preview-server/parse-body.js +16 -0
  213. package/dist/preview-server/render-queue/get-default-video-contexts.d.ts +10 -0
  214. package/dist/preview-server/render-queue/get-default-video-contexts.js +13 -0
  215. package/dist/preview-server/render-queue/job.d.ts +129 -0
  216. package/dist/preview-server/render-queue/job.js +2 -0
  217. package/dist/preview-server/render-queue/make-retry-payload.d.ts +3 -0
  218. package/dist/preview-server/render-queue/make-retry-payload.js +89 -0
  219. package/dist/preview-server/render-queue/open-directory-in-finder.d.ts +1 -0
  220. package/dist/preview-server/render-queue/open-directory-in-finder.js +43 -0
  221. package/dist/preview-server/render-queue/process-still.d.ts +8 -0
  222. package/dist/preview-server/render-queue/process-still.js +46 -0
  223. package/dist/preview-server/render-queue/process-video.d.ts +8 -0
  224. package/dist/preview-server/render-queue/process-video.js +63 -0
  225. package/dist/preview-server/render-queue/queue.d.ts +21 -0
  226. package/dist/preview-server/render-queue/queue.js +208 -0
  227. package/dist/preview-server/routes/add-render.d.ts +3 -0
  228. package/dist/preview-server/routes/add-render.js +76 -0
  229. package/dist/preview-server/routes/cancel-render.d.ts +3 -0
  230. package/dist/preview-server/routes/cancel-render.js +9 -0
  231. package/dist/preview-server/routes/open-in-file-explorer.d.ts +3 -0
  232. package/dist/preview-server/routes/open-in-file-explorer.js +8 -0
  233. package/dist/preview-server/routes/remove-render.d.ts +3 -0
  234. package/dist/preview-server/routes/remove-render.js +9 -0
  235. package/dist/preview-server/routes/subscribe-to-file-existence.d.ts +3 -0
  236. package/dist/preview-server/routes/subscribe-to-file-existence.js +13 -0
  237. package/dist/preview-server/routes/unsubscribe-from-file-existence.d.ts +3 -0
  238. package/dist/preview-server/routes/unsubscribe-from-file-existence.js +13 -0
  239. package/dist/preview-server/routes/update-default-props.d.ts +3 -0
  240. package/dist/preview-server/routes/update-default-props.js +22 -0
  241. package/dist/progress-types.d.ts +32 -0
  242. package/dist/progress-types.js +17 -0
  243. package/dist/render-flows/render.d.ts +47 -0
  244. package/dist/render-flows/render.js +290 -0
  245. package/dist/render-flows/still.d.ts +29 -0
  246. package/dist/render-flows/still.js +168 -0
  247. package/dist/required-chromium-options.d.ts +3 -0
  248. package/dist/required-chromium-options.js +2 -0
  249. package/package.json +6 -6
@@ -0,0 +1,566 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderModal = 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 remotion_1 = require("remotion");
8
+ const Button_1 = require("../../../preview-server/error-overlay/remotion-overlay/Button");
9
+ const ShortcutHint_1 = require("../../../preview-server/error-overlay/remotion-overlay/ShortcutHint");
10
+ const convert_env_variables_1 = require("../../helpers/convert-env-variables");
11
+ const render_modal_sections_1 = require("../../helpers/render-modal-sections");
12
+ const use_keybinding_1 = require("../../helpers/use-keybinding");
13
+ const audio_1 = require("../../icons/audio");
14
+ const data_1 = require("../../icons/data");
15
+ const file_1 = require("../../icons/file");
16
+ const frame_1 = require("../../icons/frame");
17
+ const gear_1 = require("../../icons/gear");
18
+ const gif_1 = require("../../icons/gif");
19
+ const modals_1 = require("../../state/modals");
20
+ const sidebar_1 = require("../../state/sidebar");
21
+ const is_menu_item_1 = require("../Menu/is-menu-item");
22
+ const ModalContainer_1 = require("../ModalContainer");
23
+ const ModalHeader_1 = require("../ModalHeader");
24
+ const actions_1 = require("../RenderQueue/actions");
25
+ const RightPanel_1 = require("../RightPanel");
26
+ const SegmentedControl_1 = require("../SegmentedControl");
27
+ const Tabs_1 = require("../Tabs");
28
+ const CrfSetting_1 = require("./CrfSetting");
29
+ const out_name_checker_1 = require("./out-name-checker");
30
+ const RenderModalAdvanced_1 = require("./RenderModalAdvanced");
31
+ const RenderModalAudio_1 = require("./RenderModalAudio");
32
+ const RenderModalBasic_1 = require("./RenderModalBasic");
33
+ const RenderModalData_1 = require("./RenderModalData");
34
+ const RenderModalGif_1 = require("./RenderModalGif");
35
+ const RenderModalPicture_1 = require("./RenderModalPicture");
36
+ const initialState = { type: 'idle' };
37
+ const reducer = (state, action) => {
38
+ if (action.type === 'start') {
39
+ return {
40
+ type: 'load',
41
+ };
42
+ }
43
+ if (action.type === 'fail') {
44
+ return {
45
+ type: 'error',
46
+ };
47
+ }
48
+ if (action.type === 'succeed') {
49
+ return {
50
+ type: 'success',
51
+ };
52
+ }
53
+ return state;
54
+ };
55
+ const container = {
56
+ display: 'flex',
57
+ flexDirection: 'row',
58
+ alignItems: 'center',
59
+ padding: '12px 16px',
60
+ width: '100%',
61
+ borderBottom: '1px solid black',
62
+ };
63
+ const rightPanel = {
64
+ height: 600,
65
+ width: 650,
66
+ display: 'flex',
67
+ };
68
+ const horizontalLayout = {
69
+ display: 'flex',
70
+ flexDirection: 'row',
71
+ };
72
+ const leftSidebar = {
73
+ padding: 12,
74
+ };
75
+ const horizontalTab = {
76
+ width: 250,
77
+ display: 'flex',
78
+ flexDirection: 'row',
79
+ alignItems: 'center',
80
+ textAlign: 'left',
81
+ fontSize: 16,
82
+ fontWeight: 'bold',
83
+ paddingLeft: 15,
84
+ paddingTop: 12,
85
+ paddingBottom: 12,
86
+ };
87
+ const iconContainer = {
88
+ width: 20,
89
+ height: 20,
90
+ marginRight: 15,
91
+ display: 'inline-flex',
92
+ justifyContent: 'center',
93
+ alignItems: 'center',
94
+ };
95
+ const icon = {
96
+ color: 'currentcolor',
97
+ height: 20,
98
+ };
99
+ const buttonStyle = {
100
+ backgroundColor: 'var(--blue)',
101
+ color: 'white',
102
+ };
103
+ const flexer = {
104
+ flex: 1,
105
+ };
106
+ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, initialStillImageFormat, initialQuality, initialScale, initialVerbose, initialOutName, initialRenderType, initialVideoCodecForAudioTab, initialVideoCodecForVideoTab, initialConcurrency, maxConcurrency, minConcurrency, initialMuted, initialEnforceAudioTrack, initialProResProfile, initialPixelFormat, initialVideoBitrate, initialAudioBitrate, initialEveryNthFrame, initialNumberOfGifLoops, initialDelayRenderTimeout, initialAudioCodec, initialEnvVariables, initialDisableWebSecurity, initialGl, initialHeadless, initialIgnoreCertificateErrors, }) => {
107
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
108
+ const onQuit = (0, react_1.useCallback)(() => {
109
+ setSelectedModal(null);
110
+ }, [setSelectedModal]);
111
+ const isMounted = (0, react_1.useRef)(true);
112
+ const [state, dispatch] = (0, react_1.useReducer)(reducer, initialState);
113
+ const [unclampedFrame, setFrame] = (0, react_1.useState)(() => initialFrame);
114
+ const [stillImageFormat, setStillImageFormat] = (0, react_1.useState)(() => initialStillImageFormat);
115
+ const [videoImageFormat, setVideoImageFormat] = (0, react_1.useState)(() => initialVideoImageFormat);
116
+ const [concurrency, setConcurrency] = (0, react_1.useState)(() => initialConcurrency);
117
+ const [videoCodecForVideoTab, setVideoCodecForVideoTab] = (0, react_1.useState)(() => initialVideoCodecForVideoTab);
118
+ const [userSelectedAudioCodec, setUserSelectedAudioCodec] = (0, react_1.useState)(() => initialAudioCodec);
119
+ const [envVariables, setEnvVariables] = (0, react_1.useState)(() => (0, convert_env_variables_1.envVariablesObjectToArray)(initialEnvVariables).filter(([key]) => key !== 'NODE_ENV'));
120
+ const [videoCodecForAudioTab, setVideoCodecForAudioTab] = (0, react_1.useState)(() => initialVideoCodecForAudioTab);
121
+ const [mutedState, setMuted] = (0, react_1.useState)(() => initialMuted);
122
+ const [enforceAudioTrackState, setEnforceAudioTrackState] = (0, react_1.useState)(() => initialEnforceAudioTrack);
123
+ const [renderMode, setRenderModeState] = (0, react_1.useState)(initialRenderType);
124
+ const [quality, setQuality] = (0, react_1.useState)(() => initialQuality);
125
+ const [scale, setScale] = (0, react_1.useState)(() => initialScale);
126
+ const [verbose, setVerboseLogging] = (0, react_1.useState)(() => initialVerbose);
127
+ const [disallowParallelEncoding, setDisallowParallelEncoding] = (0, react_1.useState)(false);
128
+ const [disableWebSecurity, setDisableWebSecurity] = (0, react_1.useState)(() => initialDisableWebSecurity);
129
+ const [headless, setHeadless] = (0, react_1.useState)(() => initialHeadless);
130
+ const [ignoreCertificateErrors, setIgnoreCertificateErrors] = (0, react_1.useState)(() => initialIgnoreCertificateErrors);
131
+ const [openGlOption, setOpenGlOption] = (0, react_1.useState)(() => initialGl !== null && initialGl !== void 0 ? initialGl : 'default');
132
+ const chromiumOptions = (0, react_1.useMemo)(() => {
133
+ return {
134
+ headless,
135
+ disableWebSecurity,
136
+ ignoreCertificateErrors,
137
+ gl: openGlOption === 'default' ? null : openGlOption,
138
+ };
139
+ }, [headless, disableWebSecurity, ignoreCertificateErrors, openGlOption]);
140
+ const [outName, setOutName] = (0, react_1.useState)(() => initialOutName);
141
+ const [endFrameOrNull, setEndFrame] = (0, react_1.useState)(() => null);
142
+ const [startFrameOrNull, setStartFrame] = (0, react_1.useState)(() => null);
143
+ const [proResProfileSetting, setProResProfile] = (0, react_1.useState)(() => initialProResProfile);
144
+ const [pixelFormat, setPixelFormat] = (0, react_1.useState)(() => initialPixelFormat);
145
+ const [qualityControlType, setQualityControl] = (0, react_1.useState)(() => initialVideoBitrate === null ? 'crf' : 'bitrate');
146
+ const [shouldHaveCustomTargetAudioBitrate, setShouldHaveCustomTargetAudioBitrate,] = (0, react_1.useState)(() => initialAudioBitrate !== null);
147
+ const [customTargetAudioBitrate, setCustomTargetAudioBitrateValue] = (0, react_1.useState)(() => initialAudioBitrate !== null && initialAudioBitrate !== void 0 ? initialAudioBitrate : '320K');
148
+ const [customTargetVideoBitrate, setCustomTargetVideoBitrateValue] = (0, react_1.useState)(() => initialVideoBitrate !== null && initialVideoBitrate !== void 0 ? initialVideoBitrate : '1M');
149
+ const [limitNumberOfGifLoops, setLimitNumberOfGifLoops] = (0, react_1.useState)(() => initialNumberOfGifLoops !== null);
150
+ const [numberOfGifLoopsSetting, setNumberOfGifLoopsSetting] = (0, react_1.useState)(() => initialNumberOfGifLoops !== null && initialNumberOfGifLoops !== void 0 ? initialNumberOfGifLoops : 1);
151
+ const [delayRenderTimeout, setDelayRenderTimeout] = (0, react_1.useState)(() => initialDelayRenderTimeout);
152
+ const codec = (0, react_1.useMemo)(() => {
153
+ if (renderMode === 'audio') {
154
+ return videoCodecForAudioTab;
155
+ }
156
+ return videoCodecForVideoTab;
157
+ }, [videoCodecForAudioTab, renderMode, videoCodecForVideoTab]);
158
+ const numberOfGifLoops = (0, react_1.useMemo)(() => {
159
+ if (codec === 'gif' && limitNumberOfGifLoops) {
160
+ return numberOfGifLoopsSetting;
161
+ }
162
+ return null;
163
+ }, [codec, limitNumberOfGifLoops, numberOfGifLoopsSetting]);
164
+ const audioBitrate = (0, react_1.useMemo)(() => {
165
+ if (shouldHaveCustomTargetAudioBitrate) {
166
+ return customTargetAudioBitrate;
167
+ }
168
+ return null;
169
+ }, [customTargetAudioBitrate, shouldHaveCustomTargetAudioBitrate]);
170
+ const videoBitrate = (0, react_1.useMemo)(() => {
171
+ if (qualityControlType === 'bitrate') {
172
+ return customTargetVideoBitrate;
173
+ }
174
+ return null;
175
+ }, [customTargetVideoBitrate, qualityControlType]);
176
+ const { crf, maxCrf, minCrf, setCrf, shouldDisplayOption: shouldDisplayCrfOption, } = (0, CrfSetting_1.useCrfState)(codec);
177
+ const dispatchIfMounted = (0, react_1.useCallback)((payload) => {
178
+ if (isMounted.current === false)
179
+ return;
180
+ dispatch(payload);
181
+ }, []);
182
+ const muted = (0, react_1.useMemo)(() => {
183
+ if (renderMode === 'video') {
184
+ return mutedState;
185
+ }
186
+ return false;
187
+ }, [mutedState, renderMode]);
188
+ const enforceAudioTrack = (0, react_1.useMemo)(() => {
189
+ if (renderMode === 'video') {
190
+ return enforceAudioTrackState;
191
+ }
192
+ return false;
193
+ }, [enforceAudioTrackState, renderMode]);
194
+ const proResProfile = (0, react_1.useMemo)(() => {
195
+ if (renderMode === 'video' && codec === 'prores') {
196
+ return proResProfileSetting;
197
+ }
198
+ return null;
199
+ }, [codec, proResProfileSetting, renderMode]);
200
+ const { compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
201
+ const currentComposition = (0, react_1.useMemo)(() => {
202
+ for (const composition of compositions) {
203
+ if (composition.id === compositionId) {
204
+ return composition;
205
+ }
206
+ }
207
+ return null;
208
+ }, [compositionId, compositions]);
209
+ if (currentComposition === null) {
210
+ throw new Error('This composition does not exist');
211
+ }
212
+ const [inputProps, setInputProps] = (0, react_1.useState)(() => currentComposition.defaultProps);
213
+ const endFrame = (0, react_1.useMemo)(() => {
214
+ if (endFrameOrNull === null) {
215
+ return currentComposition.durationInFrames - 1;
216
+ }
217
+ return Math.max(0, Math.min(currentComposition.durationInFrames - 1, endFrameOrNull));
218
+ }, [currentComposition.durationInFrames, endFrameOrNull]);
219
+ const startFrame = (0, react_1.useMemo)(() => {
220
+ if (startFrameOrNull === null) {
221
+ return 0;
222
+ }
223
+ return Math.max(0, Math.min(endFrame - 1, startFrameOrNull));
224
+ }, [endFrame, startFrameOrNull]);
225
+ const frame = (0, react_1.useMemo)(() => {
226
+ const parsed = Math.floor(unclampedFrame);
227
+ return Math.max(0, Math.min(currentComposition.durationInFrames - 1, parsed));
228
+ }, [currentComposition.durationInFrames, unclampedFrame]);
229
+ const getStringBeforeSuffix = (0, react_1.useCallback)((fileName) => {
230
+ const dotPos = fileName.lastIndexOf('.');
231
+ const bitBeforeDot = fileName.substring(0, dotPos);
232
+ return bitBeforeDot;
233
+ }, []);
234
+ const deriveFinalAudioCodec = (0, react_1.useCallback)((passedVideoCodec, passedAudioCodec) => {
235
+ if (passedAudioCodec !== null &&
236
+ client_1.BrowserSafeApis.supportedAudioCodecs[passedVideoCodec].includes(passedAudioCodec)) {
237
+ return passedAudioCodec;
238
+ }
239
+ return client_1.BrowserSafeApis.defaultAudioCodecs[passedVideoCodec]
240
+ .compressed;
241
+ }, []);
242
+ const setDefaultOutName = (0, react_1.useCallback)((options) => {
243
+ if (options.type === 'still') {
244
+ setOutName((prev) => {
245
+ const newFileName = getStringBeforeSuffix(prev) + '.' + options.imageFormat;
246
+ return newFileName;
247
+ });
248
+ }
249
+ else {
250
+ setOutName((prev) => {
251
+ const codecSuffix = client_1.BrowserSafeApis.getFileExtensionFromCodec(options.codec, deriveFinalAudioCodec(options.codec, options.audioCodec));
252
+ const newFileName = getStringBeforeSuffix(prev) + '.' + codecSuffix;
253
+ return newFileName;
254
+ });
255
+ }
256
+ }, [deriveFinalAudioCodec, getStringBeforeSuffix]);
257
+ const setAudioCodec = (0, react_1.useCallback)((newAudioCodec) => {
258
+ setUserSelectedAudioCodec(newAudioCodec);
259
+ setDefaultOutName({
260
+ type: 'render',
261
+ codec: videoCodecForVideoTab,
262
+ audioCodec: newAudioCodec,
263
+ });
264
+ }, [setDefaultOutName, videoCodecForVideoTab]);
265
+ const setCodec = (0, react_1.useCallback)((newCodec) => {
266
+ if (renderMode === 'audio') {
267
+ setVideoCodecForAudioTab(newCodec);
268
+ }
269
+ else {
270
+ setVideoCodecForVideoTab(newCodec);
271
+ }
272
+ setDefaultOutName({
273
+ type: 'render',
274
+ codec: newCodec,
275
+ audioCodec: deriveFinalAudioCodec(newCodec, userSelectedAudioCodec),
276
+ });
277
+ }, [
278
+ userSelectedAudioCodec,
279
+ deriveFinalAudioCodec,
280
+ renderMode,
281
+ setDefaultOutName,
282
+ ]);
283
+ const setStillFormat = (0, react_1.useCallback)((format) => {
284
+ setStillImageFormat(format);
285
+ setDefaultOutName({ type: 'still', imageFormat: format });
286
+ }, [setDefaultOutName]);
287
+ const { setSidebarCollapsedStateRight } = (0, react_1.useContext)(sidebar_1.SidebarContext);
288
+ const onClickStill = (0, react_1.useCallback)(() => {
289
+ var _a;
290
+ setSidebarCollapsedStateRight('expanded');
291
+ (0, RightPanel_1.persistSelectedPanel)('renders');
292
+ (_a = RightPanel_1.rightSidebarTabs.current) === null || _a === void 0 ? void 0 : _a.selectRendersPanel();
293
+ dispatchIfMounted({ type: 'start' });
294
+ (0, actions_1.addStillRenderJob)({
295
+ compositionId,
296
+ outName,
297
+ imageFormat: stillImageFormat,
298
+ quality: stillImageFormat === 'jpeg' ? quality : null,
299
+ frame,
300
+ scale,
301
+ verbose,
302
+ chromiumOptions,
303
+ delayRenderTimeout,
304
+ envVariables: (0, convert_env_variables_1.envVariablesArrayToObject)(envVariables),
305
+ inputProps,
306
+ })
307
+ .then(() => {
308
+ dispatchIfMounted({ type: 'succeed' });
309
+ setSelectedModal(null);
310
+ })
311
+ .catch(() => {
312
+ dispatchIfMounted({ type: 'fail' });
313
+ });
314
+ }, [
315
+ setSidebarCollapsedStateRight,
316
+ dispatchIfMounted,
317
+ compositionId,
318
+ outName,
319
+ stillImageFormat,
320
+ quality,
321
+ frame,
322
+ scale,
323
+ verbose,
324
+ chromiumOptions,
325
+ delayRenderTimeout,
326
+ envVariables,
327
+ inputProps,
328
+ setSelectedModal,
329
+ ]);
330
+ const [everyNthFrameSetting, setEveryNthFrameSetting] = (0, react_1.useState)(() => initialEveryNthFrame);
331
+ const everyNthFrame = (0, react_1.useMemo)(() => {
332
+ if (codec === 'gif') {
333
+ return everyNthFrameSetting;
334
+ }
335
+ return 1;
336
+ }, [codec, everyNthFrameSetting]);
337
+ const audioCodec = deriveFinalAudioCodec(codec, userSelectedAudioCodec);
338
+ const onClickVideo = (0, react_1.useCallback)(() => {
339
+ var _a;
340
+ setSidebarCollapsedStateRight('expanded');
341
+ (0, RightPanel_1.persistSelectedPanel)('renders');
342
+ (_a = RightPanel_1.rightSidebarTabs.current) === null || _a === void 0 ? void 0 : _a.selectRendersPanel();
343
+ dispatchIfMounted({ type: 'start' });
344
+ (0, actions_1.addVideoRenderJob)({
345
+ compositionId,
346
+ outName,
347
+ imageFormat: videoImageFormat,
348
+ quality: stillImageFormat === 'jpeg' ? quality : null,
349
+ scale,
350
+ verbose,
351
+ codec,
352
+ concurrency,
353
+ crf: qualityControlType === 'crf' ? crf : null,
354
+ endFrame,
355
+ startFrame,
356
+ muted,
357
+ enforceAudioTrack,
358
+ proResProfile,
359
+ pixelFormat,
360
+ audioBitrate,
361
+ videoBitrate,
362
+ everyNthFrame,
363
+ numberOfGifLoops,
364
+ delayRenderTimeout,
365
+ audioCodec,
366
+ disallowParallelEncoding,
367
+ chromiumOptions,
368
+ envVariables: (0, convert_env_variables_1.envVariablesArrayToObject)(envVariables),
369
+ inputProps,
370
+ })
371
+ .then(() => {
372
+ dispatchIfMounted({ type: 'succeed' });
373
+ setSelectedModal(null);
374
+ })
375
+ .catch(() => {
376
+ dispatchIfMounted({ type: 'fail' });
377
+ });
378
+ }, [
379
+ setSidebarCollapsedStateRight,
380
+ dispatchIfMounted,
381
+ compositionId,
382
+ outName,
383
+ videoImageFormat,
384
+ stillImageFormat,
385
+ quality,
386
+ scale,
387
+ verbose,
388
+ codec,
389
+ concurrency,
390
+ qualityControlType,
391
+ crf,
392
+ endFrame,
393
+ startFrame,
394
+ muted,
395
+ enforceAudioTrack,
396
+ proResProfile,
397
+ pixelFormat,
398
+ audioBitrate,
399
+ videoBitrate,
400
+ everyNthFrame,
401
+ numberOfGifLoops,
402
+ delayRenderTimeout,
403
+ audioCodec,
404
+ disallowParallelEncoding,
405
+ chromiumOptions,
406
+ envVariables,
407
+ inputProps,
408
+ setSelectedModal,
409
+ ]);
410
+ (0, react_1.useEffect)(() => {
411
+ return () => {
412
+ isMounted.current = false;
413
+ };
414
+ }, []);
415
+ const imageFormatOptions = (0, react_1.useMemo)(() => {
416
+ if (renderMode === 'still') {
417
+ return [
418
+ {
419
+ label: 'PNG',
420
+ onClick: () => setStillFormat('png'),
421
+ key: 'png',
422
+ selected: stillImageFormat === 'png',
423
+ },
424
+ {
425
+ label: 'JPEG',
426
+ onClick: () => setStillFormat('jpeg'),
427
+ key: 'jpeg',
428
+ selected: stillImageFormat === 'jpeg',
429
+ },
430
+ {
431
+ label: 'PDF',
432
+ onClick: () => setStillFormat('pdf'),
433
+ key: 'pdf',
434
+ selected: stillImageFormat === 'pdf',
435
+ },
436
+ {
437
+ label: 'WebP',
438
+ onClick: () => setStillFormat('webp'),
439
+ key: 'webp',
440
+ selected: stillImageFormat === 'webp',
441
+ },
442
+ ];
443
+ }
444
+ return [
445
+ {
446
+ label: 'PNG',
447
+ onClick: () => setVideoImageFormat('png'),
448
+ key: 'png',
449
+ selected: videoImageFormat === 'png',
450
+ },
451
+ {
452
+ label: 'JPEG',
453
+ onClick: () => setVideoImageFormat('jpeg'),
454
+ key: 'jpeg',
455
+ selected: videoImageFormat === 'jpeg',
456
+ },
457
+ ];
458
+ }, [stillImageFormat, renderMode, setStillFormat, videoImageFormat]);
459
+ const setRenderMode = (0, react_1.useCallback)((newRenderMode) => {
460
+ setRenderModeState(newRenderMode);
461
+ if (newRenderMode === 'audio') {
462
+ setDefaultOutName({
463
+ type: 'render',
464
+ codec: videoCodecForAudioTab,
465
+ audioCodec: deriveFinalAudioCodec(videoCodecForAudioTab, userSelectedAudioCodec),
466
+ });
467
+ }
468
+ if (newRenderMode === 'video') {
469
+ setDefaultOutName({
470
+ type: 'render',
471
+ codec: videoCodecForVideoTab,
472
+ audioCodec: deriveFinalAudioCodec(videoCodecForVideoTab, userSelectedAudioCodec),
473
+ });
474
+ }
475
+ if (newRenderMode === 'still') {
476
+ setDefaultOutName({ type: 'still', imageFormat: stillImageFormat });
477
+ }
478
+ }, [
479
+ videoCodecForAudioTab,
480
+ userSelectedAudioCodec,
481
+ deriveFinalAudioCodec,
482
+ setDefaultOutName,
483
+ stillImageFormat,
484
+ videoCodecForVideoTab,
485
+ ]);
486
+ const renderTabOptions = (0, react_1.useMemo)(() => {
487
+ if ((currentComposition === null || currentComposition === void 0 ? void 0 : currentComposition.durationInFrames) < 2) {
488
+ return [
489
+ {
490
+ label: 'Still',
491
+ onClick: () => {
492
+ setRenderMode('still');
493
+ },
494
+ key: 'still',
495
+ selected: renderMode === 'still',
496
+ },
497
+ ];
498
+ }
499
+ return [
500
+ {
501
+ label: 'Still',
502
+ onClick: () => {
503
+ setRenderMode('still');
504
+ },
505
+ key: 'still',
506
+ selected: renderMode === 'still',
507
+ },
508
+ {
509
+ label: 'Video',
510
+ onClick: () => {
511
+ setRenderMode('video');
512
+ },
513
+ key: 'video',
514
+ selected: renderMode === 'video',
515
+ },
516
+ {
517
+ label: 'Audio',
518
+ onClick: () => {
519
+ setRenderMode('audio');
520
+ },
521
+ key: 'audio',
522
+ selected: renderMode === 'audio',
523
+ },
524
+ ];
525
+ }, [currentComposition === null || currentComposition === void 0 ? void 0 : currentComposition.durationInFrames, renderMode, setRenderMode]);
526
+ const outnameValidation = (0, out_name_checker_1.validateOutnameGui)({
527
+ outName,
528
+ codec,
529
+ audioCodec,
530
+ renderMode,
531
+ stillImageFormat,
532
+ });
533
+ const { tab, setTab, shownTabs } = (0, render_modal_sections_1.useRenderModalSections)(renderMode, codec);
534
+ const { registerKeybinding } = (0, use_keybinding_1.useKeybinding)();
535
+ const renderDisabled = state.type === 'load' || !outnameValidation.valid;
536
+ const trigger = (0, react_1.useCallback)(() => {
537
+ if (renderDisabled) {
538
+ return;
539
+ }
540
+ if (renderMode === 'still') {
541
+ onClickStill();
542
+ }
543
+ else {
544
+ onClickVideo();
545
+ }
546
+ }, [onClickStill, onClickVideo, renderDisabled, renderMode]);
547
+ (0, react_1.useEffect)(() => {
548
+ registerKeybinding({
549
+ callback() {
550
+ trigger();
551
+ },
552
+ commandCtrlKey: true,
553
+ key: 'Enter',
554
+ event: 'keydown',
555
+ preventDefault: true,
556
+ triggerIfInputFieldFocused: false,
557
+ });
558
+ }, [registerKeybinding, trigger]);
559
+ return ((0, jsx_runtime_1.jsxs)(ModalContainer_1.ModalContainer, { onOutsideClick: onQuit, onEscape: onQuit, children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.NewCompHeader, { title: `Render ${compositionId}` }), (0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)(SegmentedControl_1.SegmentedControl, { items: renderTabOptions, needsWrapping: false }), (0, jsx_runtime_1.jsx)("div", { style: flexer }), (0, jsx_runtime_1.jsxs)(Button_1.Button, { autoFocus: true, onClick: trigger, disabled: renderDisabled, style: {
560
+ ...buttonStyle,
561
+ backgroundColor: outnameValidation.valid
562
+ ? 'var(--blue)'
563
+ : 'var(--blue-disabled)',
564
+ }, children: [state.type === 'idle' ? `Render ${renderMode}` : 'Rendering...', (0, jsx_runtime_1.jsx)(ShortcutHint_1.ShortcutHint, { keyToPress: "\u21B5", cmdOrCtrl: true })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: horizontalLayout, children: [(0, jsx_runtime_1.jsxs)("div", { style: leftSidebar, children: [shownTabs.includes('general') ? ((0, jsx_runtime_1.jsxs)(Tabs_1.Tab, { style: horizontalTab, selected: tab === 'general', onClick: () => setTab('general'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(file_1.FileIcon, { style: icon }) }), "General"] })) : null, shownTabs.includes('data') ? ((0, jsx_runtime_1.jsxs)(Tabs_1.Tab, { style: horizontalTab, selected: tab === 'data', onClick: () => setTab('data'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(data_1.DataIcon, { style: icon }) }), "Input Props"] })) : null, shownTabs.includes('picture') ? ((0, jsx_runtime_1.jsxs)(Tabs_1.Tab, { style: horizontalTab, selected: tab === 'picture', onClick: () => setTab('picture'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(frame_1.PicIcon, { style: icon }) }), "Picture"] })) : null, shownTabs.includes('audio') ? ((0, jsx_runtime_1.jsxs)(Tabs_1.Tab, { style: horizontalTab, selected: tab === 'audio', onClick: () => setTab('audio'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(audio_1.AudioIcon, { style: icon }) }), "Audio"] })) : null, shownTabs.includes('gif') ? ((0, jsx_runtime_1.jsxs)(Tabs_1.Tab, { style: horizontalTab, selected: tab === 'gif', onClick: () => setTab('gif'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(gif_1.GifIcon, { style: icon }) }), "GIF"] })) : null, shownTabs.includes('advanced') ? ((0, jsx_runtime_1.jsxs)(Tabs_1.Tab, { style: horizontalTab, selected: tab === 'advanced', onClick: () => setTab('advanced'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(gear_1.GearIcon, { style: icon }) }), "Other"] })) : null] }), (0, jsx_runtime_1.jsx)("div", { style: rightPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: tab === 'general' ? ((0, jsx_runtime_1.jsx)(RenderModalBasic_1.RenderModalBasic, { codec: codec, currentComposition: currentComposition, frame: frame, imageFormatOptions: imageFormatOptions, outName: outName, proResProfile: proResProfile, renderMode: renderMode, setVideoCodec: setCodec, setFrame: setFrame, setOutName: setOutName, setProResProfile: setProResProfile, endFrame: endFrame, setEndFrame: setEndFrame, setStartFrame: setStartFrame, startFrame: startFrame, validationMessage: outnameValidation.valid ? null : outnameValidation.error.message })) : tab === 'picture' ? ((0, jsx_runtime_1.jsx)(RenderModalPicture_1.RenderModalPicture, { renderMode: renderMode, scale: scale, setScale: setScale, pixelFormat: pixelFormat, setPixelFormat: setPixelFormat, imageFormatOptions: imageFormatOptions, crf: crf, setCrf: setCrf, customTargetVideoBitrate: customTargetVideoBitrate, maxCrf: maxCrf, minCrf: minCrf, quality: quality, qualityControlType: qualityControlType, setQuality: setQuality, setCustomTargetVideoBitrateValue: setCustomTargetVideoBitrateValue, setQualityControl: setQualityControl, shouldDisplayCrfOption: shouldDisplayCrfOption, videoImageFormat: videoImageFormat, stillImageFormat: stillImageFormat })) : tab === 'audio' ? ((0, jsx_runtime_1.jsx)(RenderModalAudio_1.RenderModalAudio, { muted: muted, renderMode: renderMode, setMuted: setMuted, codec: codec, audioCodec: audioCodec, setAudioCodec: setAudioCodec, enforceAudioTrack: enforceAudioTrack, setEnforceAudioTrackState: setEnforceAudioTrackState, customTargetAudioBitrate: customTargetAudioBitrate, setCustomTargetAudioBitrateValue: setCustomTargetAudioBitrateValue, setShouldHaveCustomTargetAudioBitrate: setShouldHaveCustomTargetAudioBitrate, shouldHaveCustomTargetAudioBitrate: shouldHaveCustomTargetAudioBitrate })) : tab === 'gif' ? ((0, jsx_runtime_1.jsx)(RenderModalGif_1.RenderModalGif, { everyNthFrame: everyNthFrame, limitNumberOfGifLoops: limitNumberOfGifLoops, numberOfGifLoopsSetting: numberOfGifLoopsSetting, setEveryNthFrameSetting: setEveryNthFrameSetting, setLimitNumberOfGifLoops: setLimitNumberOfGifLoops, setNumberOfGifLoopsSetting: setNumberOfGifLoopsSetting })) : tab === 'data' ? ((0, jsx_runtime_1.jsx)(RenderModalData_1.RenderModalData, { inputProps: inputProps, setInputProps: setInputProps, composition: currentComposition, compact: false, showSaveButton: false })) : ((0, jsx_runtime_1.jsx)(RenderModalAdvanced_1.RenderModalAdvanced, { concurrency: concurrency, maxConcurrency: maxConcurrency, minConcurrency: minConcurrency, renderMode: renderMode, setConcurrency: setConcurrency, setVerboseLogging: setVerboseLogging, verbose: verbose, delayRenderTimeout: delayRenderTimeout, setDelayRenderTimeout: setDelayRenderTimeout, disallowParallelEncoding: disallowParallelEncoding, setDisallowParallelEncoding: setDisallowParallelEncoding, setDisableWebSecurity: setDisableWebSecurity, setIgnoreCertificateErrors: setIgnoreCertificateErrors, setHeadless: setHeadless, headless: headless, ignoreCertificateErrors: ignoreCertificateErrors, disableWebSecurity: disableWebSecurity, openGlOption: openGlOption, setOpenGlOption: setOpenGlOption, setEnvVariables: setEnvVariables, envVariables: envVariables })) })] })] }));
565
+ };
566
+ exports.RenderModal = RenderModal;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import type { UiOpenGlOptions } from '../../../required-chromium-options';
3
+ export declare type RenderType = 'still' | 'video' | 'audio';
4
+ export declare const RenderModalAdvanced: React.FC<{
5
+ renderMode: RenderType;
6
+ minConcurrency: number;
7
+ maxConcurrency: number;
8
+ setConcurrency: React.Dispatch<React.SetStateAction<number>>;
9
+ concurrency: number;
10
+ setVerboseLogging: React.Dispatch<React.SetStateAction<boolean>>;
11
+ verbose: boolean;
12
+ delayRenderTimeout: number;
13
+ setDelayRenderTimeout: React.Dispatch<React.SetStateAction<number>>;
14
+ disallowParallelEncoding: boolean;
15
+ setDisallowParallelEncoding: React.Dispatch<React.SetStateAction<boolean>>;
16
+ setDisableWebSecurity: React.Dispatch<React.SetStateAction<boolean>>;
17
+ setIgnoreCertificateErrors: React.Dispatch<React.SetStateAction<boolean>>;
18
+ setHeadless: React.Dispatch<React.SetStateAction<boolean>>;
19
+ headless: boolean;
20
+ ignoreCertificateErrors: boolean;
21
+ disableWebSecurity: boolean;
22
+ openGlOption: UiOpenGlOptions;
23
+ setOpenGlOption: React.Dispatch<React.SetStateAction<UiOpenGlOptions>>;
24
+ envVariables: [string, string][];
25
+ setEnvVariables: React.Dispatch<React.SetStateAction<[string, string][]>>;
26
+ }>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderModalAdvanced = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const Checkmark_1 = require("../../icons/Checkmark");
7
+ const Checkbox_1 = require("../Checkbox");
8
+ const is_menu_item_1 = require("../Menu/is-menu-item");
9
+ const ComboBox_1 = require("../NewComposition/ComboBox");
10
+ const layout_1 = require("./layout");
11
+ const NumberSetting_1 = require("./NumberSetting");
12
+ const RenderModalEnvironmentVariables_1 = require("./RenderModalEnvironmentVariables");
13
+ const RenderModalHr_1 = require("./RenderModalHr");
14
+ const container = {
15
+ flex: 1,
16
+ overflowY: 'auto',
17
+ };
18
+ const RenderModalAdvanced = ({ renderMode, maxConcurrency, minConcurrency, setConcurrency, concurrency, setVerboseLogging, verbose, delayRenderTimeout, setDelayRenderTimeout, disallowParallelEncoding, setDisallowParallelEncoding, setDisableWebSecurity, setIgnoreCertificateErrors, setHeadless, headless, ignoreCertificateErrors, disableWebSecurity, openGlOption, setOpenGlOption, setEnvVariables, envVariables, }) => {
19
+ const extendedOpenGlOptions = (0, react_1.useMemo)(() => {
20
+ return ['angle', 'egl', 'swangle', 'swiftshader', 'default'];
21
+ }, []);
22
+ const onVerboseLoggingChanged = (0, react_1.useCallback)((e) => {
23
+ setVerboseLogging(e.target.checked);
24
+ }, [setVerboseLogging]);
25
+ const onDisallowParallelEncodingChanged = (0, react_1.useCallback)((e) => {
26
+ setDisallowParallelEncoding(e.target.checked);
27
+ }, [setDisallowParallelEncoding]);
28
+ const onDisableWebSecurityChanged = (0, react_1.useCallback)((e) => {
29
+ setDisableWebSecurity(e.target.checked);
30
+ }, [setDisableWebSecurity]);
31
+ const onIgnoreCertificatErrors = (0, react_1.useCallback)((e) => {
32
+ setIgnoreCertificateErrors(e.target.checked);
33
+ }, [setIgnoreCertificateErrors]);
34
+ const onHeadless = (0, react_1.useCallback)((e) => {
35
+ setHeadless(e.target.checked);
36
+ }, [setHeadless]);
37
+ const openGlOptions = (0, react_1.useMemo)(() => {
38
+ return extendedOpenGlOptions.map((option) => {
39
+ return {
40
+ label: option === 'default' ? 'Default' : option,
41
+ onClick: () => setOpenGlOption(option),
42
+ key: option,
43
+ leftItem: openGlOption === option ? (0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {}) : null,
44
+ id: option,
45
+ keyHint: null,
46
+ quickSwitcherLabel: null,
47
+ subMenu: null,
48
+ type: 'item',
49
+ value: option,
50
+ };
51
+ });
52
+ }, [extendedOpenGlOptions, openGlOption, setOpenGlOption]);
53
+ return ((0, jsx_runtime_1.jsxs)("div", { style: container, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: [renderMode === 'still' ? null : ((0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting, { min: minConcurrency, max: maxConcurrency, step: 1, name: "Concurrency", formatter: (w) => `${w}x`, onValueChanged: setConcurrency, value: concurrency })), (0, jsx_runtime_1.jsx)(NumberSetting_1.NumberSetting
54
+ // Also appears in packages/renderer/src/validate-puppeteer-timeout.ts
55
+ , {
56
+ // Also appears in packages/renderer/src/validate-puppeteer-timeout.ts
57
+ min: 7000, max: 900000, name: "delayRender() timeout", onValueChanged: setDelayRenderTimeout, formatter: (w) => `${w}ms`, step: 1000, value: delayRenderTimeout }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "No parallel encoding" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: disallowParallelEncoding, onChange: onDisallowParallelEncodingChanged }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Verbose logging" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: verbose, onChange: onVerboseLoggingChanged }) })] }), (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Disable web security" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: disableWebSecurity, onChange: onDisableWebSecurityChanged }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Ignore certificate errors " }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: ignoreCertificateErrors, onChange: onIgnoreCertificatErrors }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "Headless mode" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: headless, onChange: onHeadless }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "OpenGL render backend" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(ComboBox_1.Combobox, { values: openGlOptions, selectedId: openGlOption, title: "OpenGl option" }) })] }), (0, jsx_runtime_1.jsx)(RenderModalHr_1.RenderModalHr, {}), (0, jsx_runtime_1.jsx)(RenderModalEnvironmentVariables_1.RenderModalEnvironmentVariables, { envVariables: envVariables, setEnvVariables: setEnvVariables })] }));
58
+ };
59
+ exports.RenderModalAdvanced = RenderModalAdvanced;