@remotion/cli 3.3.88 → 3.3.89

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 (285) hide show
  1. package/dist/codemods/update-default-props.d.ts +5 -0
  2. package/dist/codemods/update-default-props.js +143 -0
  3. package/dist/color-math.d.ts +2 -0
  4. package/dist/color-math.js +11 -0
  5. package/dist/config/jpeg-quality.d.ts +2 -0
  6. package/dist/config/jpeg-quality.js +17 -0
  7. package/dist/convert-entry-point-to-serve-url.d.ts +1 -0
  8. package/dist/convert-entry-point-to-serve-url.js +15 -0
  9. package/dist/editor/components/Checkbox.d.ts +6 -0
  10. package/dist/editor/components/Checkbox.js +42 -0
  11. package/dist/editor/components/CheckerboardProvider.d.ts +4 -0
  12. package/dist/editor/components/CheckerboardProvider.js +24 -0
  13. package/dist/editor/components/CurrentCompositionSideEffects.d.ts +3 -0
  14. package/dist/editor/components/CurrentCompositionSideEffects.js +51 -0
  15. package/dist/editor/components/InlineAction.d.ts +7 -0
  16. package/dist/editor/components/InlineAction.js +31 -0
  17. package/dist/editor/components/MediaVolumeProvider.d.ts +4 -0
  18. package/dist/editor/components/MediaVolumeProvider.js +25 -0
  19. package/dist/editor/components/Modals.d.ts +2 -0
  20. package/dist/editor/components/Modals.js +23 -0
  21. package/dist/editor/components/ModalsProvider.d.ts +4 -0
  22. package/dist/editor/components/ModalsProvider.js +17 -0
  23. package/dist/editor/components/NewComposition/RemInputTypeColor.d.ts +7 -0
  24. package/dist/editor/components/NewComposition/RemInputTypeColor.js +53 -0
  25. package/dist/editor/components/NewComposition/RemTextarea.d.ts +7 -0
  26. package/dist/editor/components/NewComposition/RemTextarea.js +92 -0
  27. package/dist/editor/components/PlayerEmitterContext.d.ts +4 -0
  28. package/dist/editor/components/PlayerEmitterContext.js +11 -0
  29. package/dist/editor/components/RenderButton.d.ts +2 -0
  30. package/dist/editor/components/RenderButton.js +103 -0
  31. package/dist/editor/components/RenderModal/CliCopyButton.d.ts +4 -0
  32. package/dist/editor/components/RenderModal/CliCopyButton.js +22 -0
  33. package/dist/editor/components/RenderModal/CrfSetting.d.ts +15 -0
  34. package/dist/editor/components/RenderModal/CrfSetting.js +42 -0
  35. package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.d.ts +8 -0
  36. package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.js +16 -0
  37. package/dist/editor/components/RenderModal/EnvInput.d.ts +11 -0
  38. package/dist/editor/components/RenderModal/EnvInput.js +74 -0
  39. package/dist/editor/components/RenderModal/FrameRangeSetting.d.ts +8 -0
  40. package/dist/editor/components/RenderModal/FrameRangeSetting.js +42 -0
  41. package/dist/editor/components/RenderModal/GuiRenderStatus.d.ts +5 -0
  42. package/dist/editor/components/RenderModal/GuiRenderStatus.js +78 -0
  43. package/dist/editor/components/RenderModal/InfoBubble.d.ts +5 -0
  44. package/dist/editor/components/RenderModal/InfoBubble.js +115 -0
  45. package/dist/editor/components/RenderModal/InfoTooltip.d.ts +5 -0
  46. package/dist/editor/components/RenderModal/InfoTooltip.js +40 -0
  47. package/dist/editor/components/RenderModal/InlineEyeIcon.d.ts +5 -0
  48. package/dist/editor/components/RenderModal/InlineEyeIcon.js +17 -0
  49. package/dist/editor/components/RenderModal/InlineRemoveButton.d.ts +4 -0
  50. package/dist/editor/components/RenderModal/InlineRemoveButton.js +17 -0
  51. package/dist/editor/components/RenderModal/JpegQualitySetting.d.ts +5 -0
  52. package/dist/editor/components/RenderModal/JpegQualitySetting.js +12 -0
  53. package/dist/editor/components/RenderModal/MutedSetting.d.ts +8 -0
  54. package/dist/editor/components/RenderModal/MutedSetting.js +16 -0
  55. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.d.ts +5 -0
  56. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.js +26 -0
  57. package/dist/editor/components/RenderModal/NumberSetting.d.ts +12 -0
  58. package/dist/editor/components/RenderModal/NumberSetting.js +29 -0
  59. package/dist/editor/components/RenderModal/OptionExplainer.d.ts +5 -0
  60. package/dist/editor/components/RenderModal/OptionExplainer.js +45 -0
  61. package/dist/editor/components/RenderModal/RenderModal.d.ts +35 -0
  62. package/dist/editor/components/RenderModal/RenderModal.js +597 -0
  63. package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +26 -0
  64. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +61 -0
  65. package/dist/editor/components/RenderModal/RenderModalAudio.d.ts +17 -0
  66. package/dist/editor/components/RenderModal/RenderModalAudio.js +46 -0
  67. package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +23 -0
  68. package/dist/editor/components/RenderModal/RenderModalBasic.js +79 -0
  69. package/dist/editor/components/RenderModal/RenderModalData.d.ts +20 -0
  70. package/dist/editor/components/RenderModal/RenderModalData.js +249 -0
  71. package/dist/editor/components/RenderModal/RenderModalEnvironmentVariables.d.ts +5 -0
  72. package/dist/editor/components/RenderModal/RenderModalEnvironmentVariables.js +55 -0
  73. package/dist/editor/components/RenderModal/RenderModalGif.d.ts +9 -0
  74. package/dist/editor/components/RenderModal/RenderModalGif.js +19 -0
  75. package/dist/editor/components/RenderModal/RenderModalHr.d.ts +2 -0
  76. package/dist/editor/components/RenderModal/RenderModalHr.js +18 -0
  77. package/dist/editor/components/RenderModal/RenderModalInput.d.ts +10 -0
  78. package/dist/editor/components/RenderModal/RenderModalInput.js +13 -0
  79. package/dist/editor/components/RenderModal/RenderModalJSONPropsEditor.d.ts +15 -0
  80. package/dist/editor/components/RenderModal/RenderModalJSONPropsEditor.js +109 -0
  81. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +28 -0
  82. package/dist/editor/components/RenderModal/RenderModalPicture.js +54 -0
  83. package/dist/editor/components/RenderModal/RenderStatusModal.d.ts +4 -0
  84. package/dist/editor/components/RenderModal/RenderStatusModal.js +72 -0
  85. package/dist/editor/components/RenderModal/ScaleSetting.d.ts +5 -0
  86. package/dist/editor/components/RenderModal/ScaleSetting.js +17 -0
  87. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.d.ts +13 -0
  88. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.js +39 -0
  89. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEmptyStateGraphic.d.ts +2 -0
  90. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEmptyStateGraphic.js +15 -0
  91. package/dist/editor/components/RenderModal/SchemaEditor/SchemaErrorMessages.d.ts +12 -0
  92. package/dist/editor/components/RenderModal/SchemaEditor/SchemaErrorMessages.js +59 -0
  93. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.d.ts +16 -0
  94. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +40 -0
  95. package/dist/editor/components/RenderModal/SchemaEditor/SchemaResetButton.d.ts +4 -0
  96. package/dist/editor/components/RenderModal/SchemaEditor/SchemaResetButton.js +17 -0
  97. package/dist/editor/components/RenderModal/SchemaEditor/SchemaSaveButton.d.ts +5 -0
  98. package/dist/editor/components/RenderModal/SchemaEditor/SchemaSaveButton.js +17 -0
  99. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.d.ts +15 -0
  100. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +84 -0
  101. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayItemEditor.d.ts +14 -0
  102. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayItemEditor.js +28 -0
  103. package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.d.ts +13 -0
  104. package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.js +27 -0
  105. package/dist/editor/components/RenderModal/SchemaEditor/ZodColorEditor.d.ts +15 -0
  106. package/dist/editor/components/RenderModal/SchemaEditor/ZodColorEditor.js +116 -0
  107. package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.d.ts +15 -0
  108. package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.js +76 -0
  109. package/dist/editor/components/RenderModal/SchemaEditor/ZodEffectEditor.d.ts +15 -0
  110. package/dist/editor/components/RenderModal/SchemaEditor/ZodEffectEditor.js +55 -0
  111. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.d.ts +15 -0
  112. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.js +72 -0
  113. package/dist/editor/components/RenderModal/SchemaEditor/ZodErrorMessages.d.ts +5 -0
  114. package/dist/editor/components/RenderModal/SchemaEditor/ZodErrorMessages.js +23 -0
  115. package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.d.ts +9 -0
  116. package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +27 -0
  117. package/dist/editor/components/RenderModal/SchemaEditor/ZodNullableEditor.d.ts +15 -0
  118. package/dist/editor/components/RenderModal/SchemaEditor/ZodNullableEditor.js +10 -0
  119. package/dist/editor/components/RenderModal/SchemaEditor/ZodNumberEditor.d.ts +15 -0
  120. package/dist/editor/components/RenderModal/SchemaEditor/ZodNumberEditor.js +88 -0
  121. package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.d.ts +15 -0
  122. package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.js +64 -0
  123. package/dist/editor/components/RenderModal/SchemaEditor/ZodOptionalEditor.d.ts +15 -0
  124. package/dist/editor/components/RenderModal/SchemaEditor/ZodOptionalEditor.js +10 -0
  125. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.d.ts +16 -0
  126. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +52 -0
  127. package/dist/editor/components/RenderModal/SchemaEditor/ZodStringEditor.d.ts +15 -0
  128. package/dist/editor/components/RenderModal/SchemaEditor/ZodStringEditor.js +48 -0
  129. package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.d.ts +15 -0
  130. package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.js +84 -0
  131. package/dist/editor/components/RenderModal/SchemaEditor/ZodUnionEditor.d.ts +15 -0
  132. package/dist/editor/components/RenderModal/SchemaEditor/ZodUnionEditor.js +49 -0
  133. package/dist/editor/components/RenderModal/SchemaEditor/create-zod-values.d.ts +2 -0
  134. package/dist/editor/components/RenderModal/SchemaEditor/create-zod-values.js +158 -0
  135. package/dist/editor/components/RenderModal/SchemaEditor/date-serialization.d.ts +6 -0
  136. package/dist/editor/components/RenderModal/SchemaEditor/date-serialization.js +24 -0
  137. package/dist/editor/components/RenderModal/SchemaEditor/get-schema-label.d.ts +2 -0
  138. package/dist/editor/components/RenderModal/SchemaEditor/get-schema-label.js +15 -0
  139. package/dist/editor/components/RenderModal/SchemaEditor/zod-types.d.ts +1 -0
  140. package/dist/editor/components/RenderModal/SchemaEditor/zod-types.js +2 -0
  141. package/dist/editor/components/RenderModal/WarningIndicatorButton.d.ts +6 -0
  142. package/dist/editor/components/RenderModal/WarningIndicatorButton.js +49 -0
  143. package/dist/editor/components/RenderModal/get-render-modal-warnings.d.ts +15 -0
  144. package/dist/editor/components/RenderModal/get-render-modal-warnings.js +34 -0
  145. package/dist/editor/components/RenderModal/human-readable-audio-codecs.d.ts +2 -0
  146. package/dist/editor/components/RenderModal/human-readable-audio-codecs.js +18 -0
  147. package/dist/editor/components/RenderModal/human-readable-codec.d.ts +2 -0
  148. package/dist/editor/components/RenderModal/human-readable-codec.js +36 -0
  149. package/dist/editor/components/RenderModal/layout.d.ts +7 -0
  150. package/dist/editor/components/RenderModal/layout.js +45 -0
  151. package/dist/editor/components/RenderModal/out-name-checker.d.ts +14 -0
  152. package/dist/editor/components/RenderModal/out-name-checker.js +80 -0
  153. package/dist/editor/components/RenderQueue/CircularProgress.d.ts +5 -0
  154. package/dist/editor/components/RenderQueue/CircularProgress.js +18 -0
  155. package/dist/editor/components/RenderQueue/RenderQueueError.d.ts +5 -0
  156. package/dist/editor/components/RenderQueue/RenderQueueError.js +26 -0
  157. package/dist/editor/components/RenderQueue/RenderQueueItem.d.ts +5 -0
  158. package/dist/editor/components/RenderQueue/RenderQueueItem.js +40 -0
  159. package/dist/editor/components/RenderQueue/RenderQueueItemCancelButton.d.ts +5 -0
  160. package/dist/editor/components/RenderQueue/RenderQueueItemCancelButton.js +26 -0
  161. package/dist/editor/components/RenderQueue/RenderQueueItemStatus.d.ts +5 -0
  162. package/dist/editor/components/RenderQueue/RenderQueueItemStatus.js +43 -0
  163. package/dist/editor/components/RenderQueue/RenderQueueOpenInFolder.d.ts +5 -0
  164. package/dist/editor/components/RenderQueue/RenderQueueOpenInFolder.js +26 -0
  165. package/dist/editor/components/RenderQueue/RenderQueueOutputName.d.ts +5 -0
  166. package/dist/editor/components/RenderQueue/RenderQueueOutputName.js +26 -0
  167. package/dist/editor/components/RenderQueue/RenderQueueProgressMessage.d.ts +5 -0
  168. package/dist/editor/components/RenderQueue/RenderQueueProgressMessage.js +26 -0
  169. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.d.ts +5 -0
  170. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +37 -0
  171. package/dist/editor/components/RenderQueue/RenderQueueRepeat.d.ts +5 -0
  172. package/dist/editor/components/RenderQueue/RenderQueueRepeat.js +26 -0
  173. package/dist/editor/components/RenderQueue/SuccessIcon.d.ts +2 -0
  174. package/dist/editor/components/RenderQueue/SuccessIcon.js +14 -0
  175. package/dist/editor/components/RenderQueue/actions.d.ts +58 -0
  176. package/dist/editor/components/RenderQueue/actions.js +120 -0
  177. package/dist/editor/components/RenderQueue/context.d.ts +18 -0
  178. package/dist/editor/components/RenderQueue/context.js +49 -0
  179. package/dist/editor/components/RenderQueue/index.d.ts +2 -0
  180. package/dist/editor/components/RenderQueue/index.js +43 -0
  181. package/dist/editor/components/RenderQueue/item-style.d.ts +2 -0
  182. package/dist/editor/components/RenderQueue/item-style.js +21 -0
  183. package/dist/editor/components/RendersTab.d.ts +6 -0
  184. package/dist/editor/components/RendersTab.js +43 -0
  185. package/dist/editor/components/RightPanel.d.ts +8 -0
  186. package/dist/editor/components/RightPanel.js +76 -0
  187. package/dist/editor/components/SegmentedControl.d.ts +11 -0
  188. package/dist/editor/components/SegmentedControl.js +62 -0
  189. package/dist/editor/components/SetTimelineInOutProvider.d.ts +4 -0
  190. package/dist/editor/components/SetTimelineInOutProvider.js +19 -0
  191. package/dist/editor/components/SidebarCollapserControls.d.ts +2 -0
  192. package/dist/editor/components/SidebarCollapserControls.js +135 -0
  193. package/dist/editor/components/SidebarRenderButton.d.ts +6 -0
  194. package/dist/editor/components/SidebarRenderButton.js +85 -0
  195. package/dist/editor/components/Tabs/index.d.ts +11 -0
  196. package/dist/editor/components/Tabs/index.js +58 -0
  197. package/dist/editor/components/Tabs/vertical.d.ts +7 -0
  198. package/dist/editor/components/Tabs/vertical.js +43 -0
  199. package/dist/editor/components/ZoomGesturesProvider.d.ts +4 -0
  200. package/dist/editor/components/ZoomGesturesProvider.js +24 -0
  201. package/dist/editor/components/get-zod-if-possible.d.ts +10 -0
  202. package/dist/editor/components/get-zod-if-possible.js +79 -0
  203. package/dist/editor/helpers/client-id.d.ts +17 -0
  204. package/dist/editor/helpers/client-id.js +46 -0
  205. package/dist/editor/helpers/convert-env-variables.d.ts +2 -0
  206. package/dist/editor/helpers/convert-env-variables.js +20 -0
  207. package/dist/editor/helpers/prores-labels.d.ts +2 -0
  208. package/dist/editor/helpers/prores-labels.js +25 -0
  209. package/dist/editor/helpers/render-modal-sections.d.ts +10 -0
  210. package/dist/editor/helpers/render-modal-sections.js +32 -0
  211. package/dist/editor/helpers/use-breakpoint.d.ts +1 -0
  212. package/dist/editor/helpers/use-breakpoint.js +17 -0
  213. package/dist/editor/helpers/use-file-existence.d.ts +1 -0
  214. package/dist/editor/helpers/use-file-existence.js +66 -0
  215. package/dist/editor/icons/audio.d.ts +2 -0
  216. package/dist/editor/icons/audio.js +6 -0
  217. package/dist/editor/icons/data.d.ts +2 -0
  218. package/dist/editor/icons/data.js +8 -0
  219. package/dist/editor/icons/file.d.ts +2 -0
  220. package/dist/editor/icons/file.js +6 -0
  221. package/dist/editor/icons/frame.d.ts +2 -0
  222. package/dist/editor/icons/frame.js +6 -0
  223. package/dist/editor/icons/gear.d.ts +2 -0
  224. package/dist/editor/icons/gear.js +6 -0
  225. package/dist/editor/icons/gif.d.ts +2 -0
  226. package/dist/editor/icons/gif.js +6 -0
  227. package/dist/editor/icons/render.d.ts +9 -0
  228. package/dist/editor/icons/render.js +12 -0
  229. package/dist/editor/icons/video.d.ts +5 -0
  230. package/dist/editor/icons/video.js +8 -0
  231. package/dist/ffmpeg.d.ts +2 -0
  232. package/dist/ffmpeg.js +21 -0
  233. package/dist/file-watcher.d.ts +9 -0
  234. package/dist/file-watcher.js +35 -0
  235. package/dist/get-default-out-name.d.ts +5 -0
  236. package/dist/get-default-out-name.js +10 -0
  237. package/dist/preview-server/api-routes.d.ts +4 -0
  238. package/dist/preview-server/api-routes.js +21 -0
  239. package/dist/preview-server/api-types.d.ts +25 -0
  240. package/dist/preview-server/api-types.js +2 -0
  241. package/dist/preview-server/file-existence-watchers.d.ts +13 -0
  242. package/dist/preview-server/file-existence-watchers.js +62 -0
  243. package/dist/preview-server/handler.d.ts +9 -0
  244. package/dist/preview-server/handler.js +34 -0
  245. package/dist/preview-server/parse-body.d.ts +2 -0
  246. package/dist/preview-server/parse-body.js +16 -0
  247. package/dist/preview-server/render-queue/get-default-video-contexts.d.ts +10 -0
  248. package/dist/preview-server/render-queue/get-default-video-contexts.js +13 -0
  249. package/dist/preview-server/render-queue/job.d.ts +138 -0
  250. package/dist/preview-server/render-queue/job.js +2 -0
  251. package/dist/preview-server/render-queue/make-retry-payload.d.ts +3 -0
  252. package/dist/preview-server/render-queue/make-retry-payload.js +91 -0
  253. package/dist/preview-server/render-queue/open-directory-in-finder.d.ts +1 -0
  254. package/dist/preview-server/render-queue/open-directory-in-finder.js +43 -0
  255. package/dist/preview-server/render-queue/process-still.d.ts +8 -0
  256. package/dist/preview-server/render-queue/process-still.js +46 -0
  257. package/dist/preview-server/render-queue/process-video.d.ts +8 -0
  258. package/dist/preview-server/render-queue/process-video.js +63 -0
  259. package/dist/preview-server/render-queue/queue.d.ts +9 -0
  260. package/dist/preview-server/render-queue/queue.js +212 -0
  261. package/dist/preview-server/routes/add-render.d.ts +3 -0
  262. package/dist/preview-server/routes/add-render.js +76 -0
  263. package/dist/preview-server/routes/can-update-default-props.d.ts +4 -0
  264. package/dist/preview-server/routes/can-update-default-props.js +39 -0
  265. package/dist/preview-server/routes/cancel-render.d.ts +3 -0
  266. package/dist/preview-server/routes/cancel-render.js +9 -0
  267. package/dist/preview-server/routes/open-in-file-explorer.d.ts +3 -0
  268. package/dist/preview-server/routes/open-in-file-explorer.js +8 -0
  269. package/dist/preview-server/routes/remove-render.d.ts +3 -0
  270. package/dist/preview-server/routes/remove-render.js +9 -0
  271. package/dist/preview-server/routes/subscribe-to-file-existence.d.ts +3 -0
  272. package/dist/preview-server/routes/subscribe-to-file-existence.js +13 -0
  273. package/dist/preview-server/routes/unsubscribe-from-file-existence.d.ts +3 -0
  274. package/dist/preview-server/routes/unsubscribe-from-file-existence.js +13 -0
  275. package/dist/preview-server/routes/update-default-props.d.ts +3 -0
  276. package/dist/preview-server/routes/update-default-props.js +24 -0
  277. package/dist/progress-types.d.ts +32 -0
  278. package/dist/progress-types.js +17 -0
  279. package/dist/render-flows/render.d.ts +47 -0
  280. package/dist/render-flows/render.js +293 -0
  281. package/dist/render-flows/still.d.ts +29 -0
  282. package/dist/render-flows/still.js +174 -0
  283. package/dist/required-chromium-options.d.ts +3 -0
  284. package/dist/required-chromium-options.js +2 -0
  285. package/package.json +6 -6
@@ -0,0 +1,597 @@
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 vertical_1 = require("../Tabs/vertical");
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
+ borderBottom: '1px solid black',
61
+ };
62
+ const rightPanel = {
63
+ display: 'flex',
64
+ width: '100%',
65
+ height: 600,
66
+ };
67
+ const horizontalLayout = {
68
+ display: 'flex',
69
+ flexDirection: 'row',
70
+ overflowY: 'auto',
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 outer = {
107
+ width: (0, ModalContainer_1.getMaxModalWidth)(1000),
108
+ height: (0, ModalContainer_1.getMaxModalHeight)(640),
109
+ overflow: 'hidden',
110
+ };
111
+ const RenderModal = ({ compositionId, initialFrame, initialVideoImageFormat, initialStillImageFormat, initialJpegQuality, initialScale, initialVerbose, initialOutName, initialRenderType, initialVideoCodecForAudioTab, initialVideoCodecForVideoTab, initialConcurrency, maxConcurrency, minConcurrency, initialMuted, initialEnforceAudioTrack, initialProResProfile, initialPixelFormat, initialVideoBitrate, initialAudioBitrate, initialEveryNthFrame, initialNumberOfGifLoops, initialDelayRenderTimeout, initialAudioCodec, initialEnvVariables, initialDisableWebSecurity, initialGl, initialHeadless, initialIgnoreCertificateErrors, defaultProps, }) => {
112
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
113
+ const onQuit = (0, react_1.useCallback)(() => {
114
+ setSelectedModal(null);
115
+ }, [setSelectedModal]);
116
+ const isMounted = (0, react_1.useRef)(true);
117
+ const [state, dispatch] = (0, react_1.useReducer)(reducer, initialState);
118
+ const [unclampedFrame, setFrame] = (0, react_1.useState)(() => initialFrame);
119
+ const [stillImageFormat, setStillImageFormat] = (0, react_1.useState)(() => initialStillImageFormat);
120
+ const [videoImageFormat, setVideoImageFormat] = (0, react_1.useState)(() => initialVideoImageFormat);
121
+ const [concurrency, setConcurrency] = (0, react_1.useState)(() => initialConcurrency);
122
+ const [videoCodecForVideoTab, setVideoCodecForVideoTab] = (0, react_1.useState)(() => initialVideoCodecForVideoTab);
123
+ const [userSelectedAudioCodec, setUserSelectedAudioCodec] = (0, react_1.useState)(() => initialAudioCodec);
124
+ const [envVariables, setEnvVariables] = (0, react_1.useState)(() => (0, convert_env_variables_1.envVariablesObjectToArray)(initialEnvVariables).filter(([key]) => key !== 'NODE_ENV'));
125
+ const [videoCodecForAudioTab, setVideoCodecForAudioTab] = (0, react_1.useState)(() => initialVideoCodecForAudioTab);
126
+ const [mutedState, setMuted] = (0, react_1.useState)(() => initialMuted);
127
+ const [enforceAudioTrackState, setEnforceAudioTrackState] = (0, react_1.useState)(() => initialEnforceAudioTrack);
128
+ const [renderMode, setRenderModeState] = (0, react_1.useState)(initialRenderType);
129
+ const [jpegQuality, setJpegQuality] = (0, react_1.useState)(() => initialJpegQuality);
130
+ const [scale, setScale] = (0, react_1.useState)(() => initialScale);
131
+ const [verbose, setVerboseLogging] = (0, react_1.useState)(() => initialVerbose);
132
+ const [disallowParallelEncoding, setDisallowParallelEncoding] = (0, react_1.useState)(false);
133
+ const [disableWebSecurity, setDisableWebSecurity] = (0, react_1.useState)(() => initialDisableWebSecurity);
134
+ const [headless, setHeadless] = (0, react_1.useState)(() => initialHeadless);
135
+ const [ignoreCertificateErrors, setIgnoreCertificateErrors] = (0, react_1.useState)(() => initialIgnoreCertificateErrors);
136
+ const [openGlOption, setOpenGlOption] = (0, react_1.useState)(() => initialGl !== null && initialGl !== void 0 ? initialGl : 'default');
137
+ const chromiumOptions = (0, react_1.useMemo)(() => {
138
+ return {
139
+ headless,
140
+ disableWebSecurity,
141
+ ignoreCertificateErrors,
142
+ gl: openGlOption === 'default' ? null : openGlOption,
143
+ // TODO: Make this configurable at some point (not necessary for V4)
144
+ userAgent: null,
145
+ };
146
+ }, [headless, disableWebSecurity, ignoreCertificateErrors, openGlOption]);
147
+ const [outName, setOutName] = (0, react_1.useState)(() => initialOutName);
148
+ const [endFrameOrNull, setEndFrame] = (0, react_1.useState)(() => null);
149
+ const [startFrameOrNull, setStartFrame] = (0, react_1.useState)(() => null);
150
+ const [proResProfileSetting, setProResProfile] = (0, react_1.useState)(() => initialProResProfile);
151
+ const [pixelFormat, setPixelFormat] = (0, react_1.useState)(() => initialPixelFormat);
152
+ const [preferredQualityControlType, setQualityControl] = (0, react_1.useState)(() => initialVideoBitrate === null ? 'crf' : 'bitrate');
153
+ const [shouldHaveCustomTargetAudioBitrate, setShouldHaveCustomTargetAudioBitrate,] = (0, react_1.useState)(() => initialAudioBitrate !== null);
154
+ const [customTargetAudioBitrate, setCustomTargetAudioBitrateValue] = (0, react_1.useState)(() => initialAudioBitrate !== null && initialAudioBitrate !== void 0 ? initialAudioBitrate : '320K');
155
+ const [customTargetVideoBitrate, setCustomTargetVideoBitrateValue] = (0, react_1.useState)(() => initialVideoBitrate !== null && initialVideoBitrate !== void 0 ? initialVideoBitrate : '1M');
156
+ const [limitNumberOfGifLoops, setLimitNumberOfGifLoops] = (0, react_1.useState)(() => initialNumberOfGifLoops !== null);
157
+ const [numberOfGifLoopsSetting, setNumberOfGifLoopsSetting] = (0, react_1.useState)(() => initialNumberOfGifLoops !== null && initialNumberOfGifLoops !== void 0 ? initialNumberOfGifLoops : 1);
158
+ const [delayRenderTimeout, setDelayRenderTimeout] = (0, react_1.useState)(() => initialDelayRenderTimeout);
159
+ const codec = (0, react_1.useMemo)(() => {
160
+ if (renderMode === 'audio') {
161
+ return videoCodecForAudioTab;
162
+ }
163
+ return videoCodecForVideoTab;
164
+ }, [videoCodecForAudioTab, renderMode, videoCodecForVideoTab]);
165
+ const numberOfGifLoops = (0, react_1.useMemo)(() => {
166
+ if (codec === 'gif' && limitNumberOfGifLoops) {
167
+ return numberOfGifLoopsSetting;
168
+ }
169
+ return null;
170
+ }, [codec, limitNumberOfGifLoops, numberOfGifLoopsSetting]);
171
+ const audioBitrate = (0, react_1.useMemo)(() => {
172
+ if (shouldHaveCustomTargetAudioBitrate) {
173
+ return customTargetAudioBitrate;
174
+ }
175
+ return null;
176
+ }, [customTargetAudioBitrate, shouldHaveCustomTargetAudioBitrate]);
177
+ const supportsCrf = client_1.BrowserSafeApis.codecSupportsCrf(codec);
178
+ const supportsVideoBitrate = client_1.BrowserSafeApis.codecSupportsVideoBitrate(codec);
179
+ const supportsBothQualityControls = (0, react_1.useMemo)(() => {
180
+ return supportsCrf && supportsVideoBitrate;
181
+ }, [supportsCrf, supportsVideoBitrate]);
182
+ const qualityControlType = (0, react_1.useMemo)(() => {
183
+ if (supportsBothQualityControls) {
184
+ return preferredQualityControlType;
185
+ }
186
+ if (supportsCrf) {
187
+ return 'crf';
188
+ }
189
+ if (supportsVideoBitrate) {
190
+ return 'bitrate';
191
+ }
192
+ return null;
193
+ }, [
194
+ preferredQualityControlType,
195
+ supportsBothQualityControls,
196
+ supportsCrf,
197
+ supportsVideoBitrate,
198
+ ]);
199
+ const videoBitrate = (0, react_1.useMemo)(() => {
200
+ if (qualityControlType === 'bitrate') {
201
+ return customTargetVideoBitrate;
202
+ }
203
+ return null;
204
+ }, [customTargetVideoBitrate, qualityControlType]);
205
+ const { crf, maxCrf, minCrf, setCrf } = (0, CrfSetting_1.useCrfState)(codec);
206
+ const dispatchIfMounted = (0, react_1.useCallback)((payload) => {
207
+ if (isMounted.current === false)
208
+ return;
209
+ dispatch(payload);
210
+ }, []);
211
+ const muted = (0, react_1.useMemo)(() => {
212
+ if (renderMode === 'video') {
213
+ return mutedState;
214
+ }
215
+ return false;
216
+ }, [mutedState, renderMode]);
217
+ const enforceAudioTrack = (0, react_1.useMemo)(() => {
218
+ if (renderMode === 'video') {
219
+ return enforceAudioTrackState;
220
+ }
221
+ return false;
222
+ }, [enforceAudioTrackState, renderMode]);
223
+ const proResProfile = (0, react_1.useMemo)(() => {
224
+ if (renderMode === 'video' && codec === 'prores') {
225
+ return proResProfileSetting;
226
+ }
227
+ return null;
228
+ }, [codec, proResProfileSetting, renderMode]);
229
+ const { compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
230
+ const currentComposition = (0, react_1.useMemo)(() => {
231
+ for (const composition of compositions) {
232
+ if (composition.id === compositionId) {
233
+ return composition;
234
+ }
235
+ }
236
+ return null;
237
+ }, [compositionId, compositions]);
238
+ if (currentComposition === null) {
239
+ throw new Error('This composition does not exist');
240
+ }
241
+ const [inputProps, setInputProps] = (0, react_1.useState)(() => defaultProps);
242
+ const endFrame = (0, react_1.useMemo)(() => {
243
+ if (endFrameOrNull === null) {
244
+ return currentComposition.durationInFrames - 1;
245
+ }
246
+ return Math.max(0, Math.min(currentComposition.durationInFrames - 1, endFrameOrNull));
247
+ }, [currentComposition.durationInFrames, endFrameOrNull]);
248
+ const startFrame = (0, react_1.useMemo)(() => {
249
+ if (startFrameOrNull === null) {
250
+ return 0;
251
+ }
252
+ return Math.max(0, Math.min(endFrame - 1, startFrameOrNull));
253
+ }, [endFrame, startFrameOrNull]);
254
+ const frame = (0, react_1.useMemo)(() => {
255
+ const parsed = Math.floor(unclampedFrame);
256
+ return Math.max(0, Math.min(currentComposition.durationInFrames - 1, parsed));
257
+ }, [currentComposition.durationInFrames, unclampedFrame]);
258
+ const getStringBeforeSuffix = (0, react_1.useCallback)((fileName) => {
259
+ const dotPos = fileName.lastIndexOf('.');
260
+ const bitBeforeDot = fileName.substring(0, dotPos);
261
+ return bitBeforeDot;
262
+ }, []);
263
+ const deriveFinalAudioCodec = (0, react_1.useCallback)((passedVideoCodec, passedAudioCodec) => {
264
+ if (passedAudioCodec !== null &&
265
+ client_1.BrowserSafeApis.supportedAudioCodecs[passedVideoCodec].includes(passedAudioCodec)) {
266
+ return passedAudioCodec;
267
+ }
268
+ return client_1.BrowserSafeApis.defaultAudioCodecs[passedVideoCodec]
269
+ .compressed;
270
+ }, []);
271
+ const setDefaultOutName = (0, react_1.useCallback)((options) => {
272
+ if (options.type === 'still') {
273
+ setOutName((prev) => {
274
+ const newFileName = getStringBeforeSuffix(prev) + '.' + options.imageFormat;
275
+ return newFileName;
276
+ });
277
+ }
278
+ else {
279
+ setOutName((prev) => {
280
+ const codecSuffix = client_1.BrowserSafeApis.getFileExtensionFromCodec(options.codec, deriveFinalAudioCodec(options.codec, options.audioCodec));
281
+ const newFileName = getStringBeforeSuffix(prev) + '.' + codecSuffix;
282
+ return newFileName;
283
+ });
284
+ }
285
+ }, [deriveFinalAudioCodec, getStringBeforeSuffix]);
286
+ const setAudioCodec = (0, react_1.useCallback)((newAudioCodec) => {
287
+ setUserSelectedAudioCodec(newAudioCodec);
288
+ setDefaultOutName({
289
+ type: 'render',
290
+ codec: videoCodecForVideoTab,
291
+ audioCodec: newAudioCodec,
292
+ });
293
+ }, [setDefaultOutName, videoCodecForVideoTab]);
294
+ const setCodec = (0, react_1.useCallback)((newCodec) => {
295
+ if (renderMode === 'audio') {
296
+ setVideoCodecForAudioTab(newCodec);
297
+ }
298
+ else {
299
+ setVideoCodecForVideoTab(newCodec);
300
+ }
301
+ setDefaultOutName({
302
+ type: 'render',
303
+ codec: newCodec,
304
+ audioCodec: deriveFinalAudioCodec(newCodec, userSelectedAudioCodec),
305
+ });
306
+ }, [
307
+ userSelectedAudioCodec,
308
+ deriveFinalAudioCodec,
309
+ renderMode,
310
+ setDefaultOutName,
311
+ ]);
312
+ const setStillFormat = (0, react_1.useCallback)((format) => {
313
+ setStillImageFormat(format);
314
+ setDefaultOutName({ type: 'still', imageFormat: format });
315
+ }, [setDefaultOutName]);
316
+ const { setSidebarCollapsedState } = (0, react_1.useContext)(sidebar_1.SidebarContext);
317
+ const onClickStill = (0, react_1.useCallback)(() => {
318
+ var _a;
319
+ setSidebarCollapsedState({ left: null, right: 'expanded' });
320
+ (0, RightPanel_1.persistSelectedPanel)('renders');
321
+ (_a = RightPanel_1.rightSidebarTabs.current) === null || _a === void 0 ? void 0 : _a.selectRendersPanel();
322
+ dispatchIfMounted({ type: 'start' });
323
+ (0, actions_1.addStillRenderJob)({
324
+ compositionId,
325
+ outName,
326
+ imageFormat: stillImageFormat,
327
+ jpegQuality: stillImageFormat === 'jpeg' ? jpegQuality : null,
328
+ frame,
329
+ scale,
330
+ verbose,
331
+ chromiumOptions,
332
+ delayRenderTimeout,
333
+ envVariables: (0, convert_env_variables_1.envVariablesArrayToObject)(envVariables),
334
+ inputProps,
335
+ })
336
+ .then(() => {
337
+ dispatchIfMounted({ type: 'succeed' });
338
+ setSelectedModal(null);
339
+ })
340
+ .catch(() => {
341
+ dispatchIfMounted({ type: 'fail' });
342
+ });
343
+ }, [
344
+ setSidebarCollapsedState,
345
+ dispatchIfMounted,
346
+ compositionId,
347
+ outName,
348
+ stillImageFormat,
349
+ jpegQuality,
350
+ frame,
351
+ scale,
352
+ verbose,
353
+ chromiumOptions,
354
+ delayRenderTimeout,
355
+ envVariables,
356
+ inputProps,
357
+ setSelectedModal,
358
+ ]);
359
+ const [everyNthFrameSetting, setEveryNthFrameSetting] = (0, react_1.useState)(() => initialEveryNthFrame);
360
+ const everyNthFrame = (0, react_1.useMemo)(() => {
361
+ if (codec === 'gif') {
362
+ return everyNthFrameSetting;
363
+ }
364
+ return 1;
365
+ }, [codec, everyNthFrameSetting]);
366
+ const audioCodec = deriveFinalAudioCodec(codec, userSelectedAudioCodec);
367
+ const onClickVideo = (0, react_1.useCallback)(() => {
368
+ var _a;
369
+ setSidebarCollapsedState({ left: null, right: 'expanded' });
370
+ (0, RightPanel_1.persistSelectedPanel)('renders');
371
+ (_a = RightPanel_1.rightSidebarTabs.current) === null || _a === void 0 ? void 0 : _a.selectRendersPanel();
372
+ dispatchIfMounted({ type: 'start' });
373
+ (0, actions_1.addVideoRenderJob)({
374
+ compositionId,
375
+ outName,
376
+ imageFormat: videoImageFormat,
377
+ jpegQuality: stillImageFormat === 'jpeg' ? jpegQuality : null,
378
+ scale,
379
+ verbose,
380
+ codec,
381
+ concurrency,
382
+ crf: qualityControlType === 'crf' ? crf : null,
383
+ endFrame,
384
+ startFrame,
385
+ muted,
386
+ enforceAudioTrack,
387
+ proResProfile,
388
+ pixelFormat,
389
+ audioBitrate,
390
+ videoBitrate,
391
+ everyNthFrame,
392
+ numberOfGifLoops,
393
+ delayRenderTimeout,
394
+ audioCodec,
395
+ disallowParallelEncoding,
396
+ chromiumOptions,
397
+ envVariables: (0, convert_env_variables_1.envVariablesArrayToObject)(envVariables),
398
+ inputProps,
399
+ })
400
+ .then(() => {
401
+ dispatchIfMounted({ type: 'succeed' });
402
+ setSelectedModal(null);
403
+ })
404
+ .catch(() => {
405
+ dispatchIfMounted({ type: 'fail' });
406
+ });
407
+ }, [
408
+ setSidebarCollapsedState,
409
+ dispatchIfMounted,
410
+ compositionId,
411
+ outName,
412
+ videoImageFormat,
413
+ stillImageFormat,
414
+ jpegQuality,
415
+ scale,
416
+ verbose,
417
+ codec,
418
+ concurrency,
419
+ qualityControlType,
420
+ crf,
421
+ endFrame,
422
+ startFrame,
423
+ muted,
424
+ enforceAudioTrack,
425
+ proResProfile,
426
+ pixelFormat,
427
+ audioBitrate,
428
+ videoBitrate,
429
+ everyNthFrame,
430
+ numberOfGifLoops,
431
+ delayRenderTimeout,
432
+ audioCodec,
433
+ disallowParallelEncoding,
434
+ chromiumOptions,
435
+ envVariables,
436
+ inputProps,
437
+ setSelectedModal,
438
+ ]);
439
+ (0, react_1.useEffect)(() => {
440
+ return () => {
441
+ isMounted.current = false;
442
+ };
443
+ }, []);
444
+ const imageFormatOptions = (0, react_1.useMemo)(() => {
445
+ if (renderMode === 'still') {
446
+ return [
447
+ {
448
+ label: 'PNG',
449
+ onClick: () => setStillFormat('png'),
450
+ key: 'png',
451
+ selected: stillImageFormat === 'png',
452
+ },
453
+ {
454
+ label: 'JPEG',
455
+ onClick: () => setStillFormat('jpeg'),
456
+ key: 'jpeg',
457
+ selected: stillImageFormat === 'jpeg',
458
+ },
459
+ {
460
+ label: 'PDF',
461
+ onClick: () => setStillFormat('pdf'),
462
+ key: 'pdf',
463
+ selected: stillImageFormat === 'pdf',
464
+ },
465
+ {
466
+ label: 'WebP',
467
+ onClick: () => setStillFormat('webp'),
468
+ key: 'webp',
469
+ selected: stillImageFormat === 'webp',
470
+ },
471
+ ];
472
+ }
473
+ return [
474
+ {
475
+ label: 'PNG',
476
+ onClick: () => setVideoImageFormat('png'),
477
+ key: 'png',
478
+ selected: videoImageFormat === 'png',
479
+ },
480
+ {
481
+ label: 'JPEG',
482
+ onClick: () => setVideoImageFormat('jpeg'),
483
+ key: 'jpeg',
484
+ selected: videoImageFormat === 'jpeg',
485
+ },
486
+ ];
487
+ }, [stillImageFormat, renderMode, setStillFormat, videoImageFormat]);
488
+ const setRenderMode = (0, react_1.useCallback)((newRenderMode) => {
489
+ setRenderModeState(newRenderMode);
490
+ if (newRenderMode === 'audio') {
491
+ setDefaultOutName({
492
+ type: 'render',
493
+ codec: videoCodecForAudioTab,
494
+ audioCodec: deriveFinalAudioCodec(videoCodecForAudioTab, userSelectedAudioCodec),
495
+ });
496
+ }
497
+ if (newRenderMode === 'video') {
498
+ setDefaultOutName({
499
+ type: 'render',
500
+ codec: videoCodecForVideoTab,
501
+ audioCodec: deriveFinalAudioCodec(videoCodecForVideoTab, userSelectedAudioCodec),
502
+ });
503
+ }
504
+ if (newRenderMode === 'still') {
505
+ setDefaultOutName({ type: 'still', imageFormat: stillImageFormat });
506
+ }
507
+ }, [
508
+ videoCodecForAudioTab,
509
+ userSelectedAudioCodec,
510
+ deriveFinalAudioCodec,
511
+ setDefaultOutName,
512
+ stillImageFormat,
513
+ videoCodecForVideoTab,
514
+ ]);
515
+ const renderTabOptions = (0, react_1.useMemo)(() => {
516
+ if ((currentComposition === null || currentComposition === void 0 ? void 0 : currentComposition.durationInFrames) < 2) {
517
+ return [
518
+ {
519
+ label: 'Still',
520
+ onClick: () => {
521
+ setRenderMode('still');
522
+ },
523
+ key: 'still',
524
+ selected: renderMode === 'still',
525
+ },
526
+ ];
527
+ }
528
+ return [
529
+ {
530
+ label: 'Still',
531
+ onClick: () => {
532
+ setRenderMode('still');
533
+ },
534
+ key: 'still',
535
+ selected: renderMode === 'still',
536
+ },
537
+ {
538
+ label: 'Video',
539
+ onClick: () => {
540
+ setRenderMode('video');
541
+ },
542
+ key: 'video',
543
+ selected: renderMode === 'video',
544
+ },
545
+ {
546
+ label: 'Audio',
547
+ onClick: () => {
548
+ setRenderMode('audio');
549
+ },
550
+ key: 'audio',
551
+ selected: renderMode === 'audio',
552
+ },
553
+ ];
554
+ }, [currentComposition === null || currentComposition === void 0 ? void 0 : currentComposition.durationInFrames, renderMode, setRenderMode]);
555
+ const outnameValidation = (0, out_name_checker_1.validateOutnameGui)({
556
+ outName,
557
+ codec,
558
+ audioCodec,
559
+ renderMode,
560
+ stillImageFormat,
561
+ });
562
+ const { tab, setTab, shownTabs } = (0, render_modal_sections_1.useRenderModalSections)(renderMode, codec);
563
+ const { registerKeybinding } = (0, use_keybinding_1.useKeybinding)();
564
+ const renderDisabled = state.type === 'load' || !outnameValidation.valid;
565
+ const trigger = (0, react_1.useCallback)(() => {
566
+ if (renderDisabled) {
567
+ return;
568
+ }
569
+ if (renderMode === 'still') {
570
+ onClickStill();
571
+ }
572
+ else {
573
+ onClickVideo();
574
+ }
575
+ }, [onClickStill, onClickVideo, renderDisabled, renderMode]);
576
+ (0, react_1.useEffect)(() => {
577
+ registerKeybinding({
578
+ callback() {
579
+ trigger();
580
+ },
581
+ commandCtrlKey: true,
582
+ key: 'Enter',
583
+ event: 'keydown',
584
+ preventDefault: true,
585
+ triggerIfInputFieldFocused: false,
586
+ });
587
+ }, [registerKeybinding, trigger]);
588
+ return ((0, jsx_runtime_1.jsx)(ModalContainer_1.ModalContainer, { onOutsideClick: onQuit, onEscape: onQuit, children: (0, jsx_runtime_1.jsxs)("div", { style: outer, 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: {
589
+ ...buttonStyle,
590
+ backgroundColor: outnameValidation.valid
591
+ ? 'var(--blue)'
592
+ : 'var(--blue-disabled)',
593
+ }, 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)(vertical_1.VerticalTab, { 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)(vertical_1.VerticalTab, { 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)(vertical_1.VerticalTab, { 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)(vertical_1.VerticalTab, { 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)(vertical_1.VerticalTab, { 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)(vertical_1.VerticalTab, { 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
594
+ ? null
595
+ : 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, jpegQuality: jpegQuality, qualityControlType: qualityControlType, setJpegQuality: setJpegQuality, setCustomTargetVideoBitrateValue: setCustomTargetVideoBitrateValue, setQualityControl: setQualityControl, videoImageFormat: videoImageFormat, stillImageFormat: stillImageFormat, shouldDisplayQualityControlPicker: supportsBothQualityControls })) : 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, mayShowSaveButton: false, propsEditType: "input-props" })) : ((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 })) })] })] }) }));
596
+ };
597
+ 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
+ }>;