@remotion/studio 4.0.485 → 4.0.487

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 (275) hide show
  1. package/dist/ResolveCompositionConfigInStudio.js +42 -0
  2. package/dist/components/AssetSelector.js +1 -1
  3. package/dist/components/AssetSelectorItem.js +9 -9
  4. package/dist/components/AudioWaveform.js +3 -3
  5. package/dist/components/Button.js +2 -2
  6. package/dist/components/Canvas.js +28 -0
  7. package/dist/components/CanvasOrLoading.js +1 -1
  8. package/dist/components/CheckboardToggle.js +1 -1
  9. package/dist/components/Checkbox.js +3 -3
  10. package/dist/components/ColorPicker/AlphaSlider.js +4 -3
  11. package/dist/components/ColorPicker/ColorPicker.js +4 -4
  12. package/dist/components/ColorPicker/ColorPickerPopup.js +10 -10
  13. package/dist/components/ColorPicker/HueSlider.js +4 -3
  14. package/dist/components/ColorPicker/SaturationValueArea.js +5 -4
  15. package/dist/components/ColorPicker/checker.d.ts +1 -1
  16. package/dist/components/ColorPicker/checker.js +3 -3
  17. package/dist/components/CompactExplanation.js +3 -3
  18. package/dist/components/CompositionSelector.js +141 -5
  19. package/dist/components/CompositionSelectorItem.d.ts +1 -0
  20. package/dist/components/CompositionSelectorItem.js +103 -11
  21. package/dist/components/ContextMenu.js +2 -1
  22. package/dist/components/CopyButton.js +3 -2
  23. package/dist/components/CurrentAsset.d.ts +3 -1
  24. package/dist/components/CurrentAsset.js +15 -2
  25. package/dist/components/CurrentComposition.js +43 -2
  26. package/dist/components/EditorContexts.js +2 -1
  27. package/dist/components/EffectPickerModal.js +1 -1
  28. package/dist/components/FilePreview.js +2 -1
  29. package/dist/components/FpsCounter.js +3 -2
  30. package/dist/components/FullscreenToggle.js +2 -1
  31. package/dist/components/GlobalKeybindings.js +19 -12
  32. package/dist/components/InlineAction.js +2 -2
  33. package/dist/components/InlineEditableTitle.d.ts +1 -0
  34. package/dist/components/InlineEditableTitle.js +12 -7
  35. package/dist/components/InspectorInfoHeader.js +2 -2
  36. package/dist/components/InspectorPanel/DefaultInspector.d.ts +1 -0
  37. package/dist/components/InspectorPanel/DefaultInspector.js +2 -2
  38. package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +1 -1
  39. package/dist/components/InspectorPanel/common.js +2 -2
  40. package/dist/components/InspectorPanel/styles.js +3 -3
  41. package/dist/components/InspectorPanel.d.ts +1 -0
  42. package/dist/components/InspectorPanel.js +2 -2
  43. package/dist/components/InspectorSequenceSection.js +1 -1
  44. package/dist/components/InspectorSourceLocation.d.ts +1 -0
  45. package/dist/components/InspectorSourceLocation.js +18 -3
  46. package/dist/components/InstallablePackage.js +1 -1
  47. package/dist/components/KeyboardShortcutsExplainer.js +9 -5
  48. package/dist/components/LoopToggle.js +1 -1
  49. package/dist/components/Menu/MenuDivider.js +1 -1
  50. package/dist/components/Menu/MenuItem.js +1 -1
  51. package/dist/components/Menu/MenuSubItem.js +1 -1
  52. package/dist/components/Menu/styles.js +3 -3
  53. package/dist/components/MenuToolbar.js +2 -2
  54. package/dist/components/ModalButton.js +1 -1
  55. package/dist/components/ModalContainer.js +3 -3
  56. package/dist/components/ModalFooter.js +2 -1
  57. package/dist/components/ModalHeader.js +3 -2
  58. package/dist/components/Modals.js +2 -1
  59. package/dist/components/NewComposition/CancelButton.js +4 -3
  60. package/dist/components/NewComposition/ComboBox.js +3 -3
  61. package/dist/components/NewComposition/InputDragger.js +11 -3
  62. package/dist/components/NewComposition/MenuContent.js +1 -1
  63. package/dist/components/NewComposition/NewComposition.js +4 -1
  64. package/dist/components/NewComposition/NewFolder.d.ts +5 -0
  65. package/dist/components/NewComposition/NewFolder.js +86 -0
  66. package/dist/components/NewComposition/RemInput.js +3 -3
  67. package/dist/components/NewComposition/RemTextarea.js +1 -1
  68. package/dist/components/NewComposition/RenameStaticFile.js +20 -59
  69. package/dist/components/NewComposition/ValidationMessage.js +1 -1
  70. package/dist/components/NewComposition/use-rename-static-file.d.ts +18 -0
  71. package/dist/components/NewComposition/use-rename-static-file.js +90 -0
  72. package/dist/components/NoRegisterRoot.js +3 -2
  73. package/dist/components/Notifications/ColorDot.js +3 -2
  74. package/dist/components/Notifications/Notification.js +4 -4
  75. package/dist/components/Notifications/NotificationCenter.js +2 -1
  76. package/dist/components/Notifications/ServerDisconnected.js +5 -4
  77. package/dist/components/OptionsPanel.js +1 -1
  78. package/dist/components/OutlineToggle.js +1 -1
  79. package/dist/components/PlayPause.js +4 -3
  80. package/dist/components/Preview.js +1 -1
  81. package/dist/components/PreviewToolbar.js +3 -2
  82. package/dist/components/QuickSwitcher/AlgoliaCredit.js +2 -1
  83. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
  84. package/dist/components/QuickSwitcher/QuickSwitcherResult.js +2 -2
  85. package/dist/components/RefreshCompositionOverlay.js +2 -1
  86. package/dist/components/RenderButton.js +10 -9
  87. package/dist/components/RenderModal/CliCopyButton.js +1 -1
  88. package/dist/components/RenderModal/ClientRenderProgress.js +1 -1
  89. package/dist/components/RenderModal/DataEditor.js +1 -1
  90. package/dist/components/RenderModal/GuiRenderStatus.js +1 -1
  91. package/dist/components/RenderModal/InfoBubble.js +2 -2
  92. package/dist/components/RenderModal/InfoTooltip.js +3 -3
  93. package/dist/components/RenderModal/InlineEyeIcon.js +2 -1
  94. package/dist/components/RenderModal/InlineRemoveButton.js +2 -1
  95. package/dist/components/RenderModal/MultiRangeSlider.js +1 -1
  96. package/dist/components/RenderModal/OptionExplainer.d.ts +11 -1
  97. package/dist/components/RenderModal/OptionExplainer.js +33 -13
  98. package/dist/components/RenderModal/OptionExplainerBubble.d.ts +15 -1
  99. package/dist/components/RenderModal/OptionExplainerBubble.js +17 -3
  100. package/dist/components/RenderModal/RenderModalHr.js +2 -1
  101. package/dist/components/RenderModal/RenderStatusModal.js +2 -1
  102. package/dist/components/RenderModal/SchemaEditor/Fieldset.d.ts +1 -0
  103. package/dist/components/RenderModal/SchemaEditor/Fieldset.js +6 -1
  104. package/dist/components/RenderModal/SchemaEditor/SchemaEditor.js +1 -2
  105. package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -5
  106. package/dist/components/RenderModal/SchemaEditor/SchemaResetButton.js +2 -1
  107. package/dist/components/RenderModal/SchemaEditor/SchemaSeparationLine.js +1 -1
  108. package/dist/components/RenderModal/SchemaEditor/SchemaVerticalGuide.js +2 -1
  109. package/dist/components/RenderModal/SchemaEditor/ZodDateEditor.js +1 -1
  110. package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.js +1 -1
  111. package/dist/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +1 -1
  112. package/dist/components/RenderModal/SchemaEditor/create-zod-values.js +2 -1
  113. package/dist/components/RenderModal/ServerRenderModal.js +1 -1
  114. package/dist/components/RenderModal/WarningIndicatorButton.js +4 -6
  115. package/dist/components/RenderModal/WebRenderModal.js +5 -2
  116. package/dist/components/RenderModal/WebRenderModalAdvanced.d.ts +3 -0
  117. package/dist/components/RenderModal/WebRenderModalAdvanced.js +92 -5
  118. package/dist/components/RenderModal/WebRenderModalAudio.js +4 -3
  119. package/dist/components/RenderModal/WebRenderModalBasic.js +2 -2
  120. package/dist/components/RenderModal/WebRenderModalLicense.js +2 -2
  121. package/dist/components/RenderModal/WebRenderModalPicture.js +2 -1
  122. package/dist/components/RenderModal/render-modals.js +3 -3
  123. package/dist/components/RenderPreview.js +1 -1
  124. package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +1 -0
  125. package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +2 -1
  126. package/dist/components/RenderQueue/RenderQueueDownloadItem.js +2 -1
  127. package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +2 -1
  128. package/dist/components/RenderQueue/RenderQueueItemStatus.js +1 -1
  129. package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +2 -1
  130. package/dist/components/RenderQueue/RenderQueueRemoveItem.js +2 -1
  131. package/dist/components/RenderQueue/RenderQueueRepeat.js +2 -1
  132. package/dist/components/RenderQueue/client-side-render-types.d.ts +2 -1
  133. package/dist/components/RenderQueue/index.js +1 -1
  134. package/dist/components/RendersTab.js +2 -2
  135. package/dist/components/SegmentedControl.js +3 -3
  136. package/dist/components/SelectedOutlineElement.d.ts +9 -0
  137. package/dist/components/SelectedOutlineElement.js +63 -18
  138. package/dist/components/SelectedOutlineOverlay.d.ts +2 -0
  139. package/dist/components/SelectedOutlineOverlay.js +53 -2
  140. package/dist/components/SelectedOutlineUvControls.js +18 -11
  141. package/dist/components/SidebarCollapserControls.js +5 -4
  142. package/dist/components/SnappingProvider.d.ts +4 -0
  143. package/dist/components/SnappingProvider.js +24 -0
  144. package/dist/components/SnappingToggle.d.ts +2 -0
  145. package/dist/components/SnappingToggle.js +26 -0
  146. package/dist/components/Splitter/SplitterContext.d.ts +1 -1
  147. package/dist/components/Splitter/SplitterElement.js +2 -1
  148. package/dist/components/StaticFilePreview.js +1 -1
  149. package/dist/components/Tabs/index.js +3 -3
  150. package/dist/components/Tabs/vertical.js +3 -3
  151. package/dist/components/TextViewer.js +2 -1
  152. package/dist/components/TimeValue.js +1 -1
  153. package/dist/components/Timeline/EasingEditorModal.js +8 -8
  154. package/dist/components/Timeline/KeyframeSettingsModal.js +1 -1
  155. package/dist/components/Timeline/LoopedIndicator.js +2 -2
  156. package/dist/components/Timeline/MaxTimelineTracks.js +3 -2
  157. package/dist/components/Timeline/TimelineArrayField.js +6 -5
  158. package/dist/components/Timeline/TimelineColorField.js +2 -1
  159. package/dist/components/Timeline/TimelineEffectItem.js +3 -2
  160. package/dist/components/Timeline/TimelineEffectPropItem.js +2 -2
  161. package/dist/components/Timeline/TimelineExpandArrowButton.js +3 -2
  162. package/dist/components/Timeline/TimelineExpandedRow.js +2 -1
  163. package/dist/components/Timeline/TimelineExpandedSection.js +1 -1
  164. package/dist/components/Timeline/TimelineFieldLabel.js +2 -1
  165. package/dist/components/Timeline/TimelineFontFamilyField.d.ts +11 -0
  166. package/dist/components/Timeline/TimelineFontFamilyField.js +545 -0
  167. package/dist/components/Timeline/TimelineImageInfo.js +2 -1
  168. package/dist/components/Timeline/TimelineInOutPointer.js +2 -1
  169. package/dist/components/Timeline/TimelineInOutPointerHandle.js +2 -4
  170. package/dist/components/Timeline/TimelineKeyframeControls.js +2 -2
  171. package/dist/components/Timeline/TimelineKeyframeDiamondIcon.js +1 -1
  172. package/dist/components/Timeline/TimelineKeyframeEasingLine.js +1 -1
  173. package/dist/components/Timeline/TimelineLayerEye.js +3 -3
  174. package/dist/components/Timeline/TimelineMediaInfo.js +2 -2
  175. package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +4 -0
  176. package/dist/components/Timeline/TimelineRotationField.js +4 -3
  177. package/dist/components/Timeline/TimelineScaleField.js +1 -1
  178. package/dist/components/Timeline/TimelineSchemaField.d.ts +2 -0
  179. package/dist/components/Timeline/TimelineSchemaField.js +47 -7
  180. package/dist/components/Timeline/TimelineScrollable.js +3 -2
  181. package/dist/components/Timeline/TimelineSelection.js +11 -6
  182. package/dist/components/Timeline/TimelineSequence.js +17 -20
  183. package/dist/components/Timeline/TimelineSequenceFrame.js +3 -2
  184. package/dist/components/Timeline/TimelineSequenceItem.js +8 -7
  185. package/dist/components/Timeline/TimelineSequenceName.js +3 -2
  186. package/dist/components/Timeline/TimelineSequencePropItem.js +2 -1
  187. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +20 -1
  188. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +128 -11
  189. package/dist/components/Timeline/TimelineSlider.js +2 -1
  190. package/dist/components/Timeline/TimelineSliderHandle.js +2 -1
  191. package/dist/components/Timeline/TimelineTimeIndicators.js +1 -1
  192. package/dist/components/Timeline/TimelineVideoInfo.js +2 -1
  193. package/dist/components/Timeline/TimelineZoomControls.js +4 -3
  194. package/dist/components/Timeline/call-move-keyframe.d.ts +5 -0
  195. package/dist/components/Timeline/call-move-keyframe.js +14 -3
  196. package/dist/components/Timeline/google-fonts-list.d.ts +6 -0
  197. package/dist/components/Timeline/google-fonts-list.js +1512 -0
  198. package/dist/components/Timeline/save-sequence-prop.d.ts +8 -1
  199. package/dist/components/Timeline/save-sequence-prop.js +63 -19
  200. package/dist/components/Timeline/timeline-rotation-field-utils.d.ts +5 -0
  201. package/dist/components/Timeline/timeline-rotation-field-utils.js +16 -0
  202. package/dist/components/Timeline/timeline-scroll-logic.js +5 -2
  203. package/dist/components/TimelineInOutToggle.js +1 -1
  204. package/dist/components/UpdateCheck.js +2 -2
  205. package/dist/components/UpdateModal/OpenIssueButton.js +1 -1
  206. package/dist/components/VisualControls/ClickableFileName.js +4 -4
  207. package/dist/components/VisualControls/VisualControlsContent.js +9 -1
  208. package/dist/components/effect-drag-and-drop.js +30 -8
  209. package/dist/components/import-assets.d.ts +8 -2
  210. package/dist/components/import-assets.js +55 -1
  211. package/dist/components/options-sidebar-tabs.d.ts +1 -0
  212. package/dist/components/options-sidebar-tabs.js +6 -1
  213. package/dist/components/selected-outline-measurement.js +2 -1
  214. package/dist/components/selected-outline-snap.d.ts +36 -0
  215. package/dist/components/selected-outline-snap.js +158 -0
  216. package/dist/error-overlay/remotion-overlay/CalculateMetadataErrorExplainer.js +2 -2
  217. package/dist/error-overlay/remotion-overlay/CodeFrame.js +7 -5
  218. package/dist/error-overlay/remotion-overlay/CompositionIdListItem.js +2 -2
  219. package/dist/error-overlay/remotion-overlay/DismissButton.js +3 -2
  220. package/dist/error-overlay/remotion-overlay/ErrorLoader.js +3 -2
  221. package/dist/error-overlay/remotion-overlay/ErrorMessage.js +4 -4
  222. package/dist/error-overlay/remotion-overlay/HelpLink.js +1 -1
  223. package/dist/error-overlay/remotion-overlay/MediaPlaybackErrorExplainer.js +4 -4
  224. package/dist/error-overlay/remotion-overlay/Overlay.js +3 -2
  225. package/dist/error-overlay/remotion-overlay/StackFrame.js +4 -3
  226. package/dist/error-overlay/remotion-overlay/Symbolicating.js +2 -1
  227. package/dist/error-overlay/remotion-overlay/carets.js +3 -2
  228. package/dist/esm/chunk-jefhcs5z.js +164 -0
  229. package/dist/esm/{chunk-103pp4n7.js → chunk-y2t24cx0.js} +10754 -6829
  230. package/dist/esm/internals.mjs +10755 -6796
  231. package/dist/esm/previewEntry.mjs +10554 -6591
  232. package/dist/esm/renderEntry.mjs +8 -5
  233. package/dist/helpers/checkerboard-background.js +4 -12
  234. package/dist/helpers/colors.d.ts +99 -7
  235. package/dist/helpers/colors.js +118 -10
  236. package/dist/helpers/inject-css.js +85 -83
  237. package/dist/helpers/retry-payload.js +1 -0
  238. package/dist/helpers/timeline-layout.d.ts +4 -2
  239. package/dist/helpers/use-menu-structure.js +74 -5
  240. package/dist/helpers/validate-folder-rename.js +2 -10
  241. package/dist/helpers/validate-new-folder-name.d.ts +5 -0
  242. package/dist/helpers/validate-new-folder-name.js +16 -0
  243. package/dist/hot-middleware-client/client.js +3 -2
  244. package/dist/icons/Checkmark.js +2 -1
  245. package/dist/icons/audio.js +2 -1
  246. package/dist/icons/caret.js +2 -2
  247. package/dist/icons/certificate.js +2 -1
  248. package/dist/icons/data.js +2 -1
  249. package/dist/icons/eyedropper.js +2 -1
  250. package/dist/icons/file.js +2 -1
  251. package/dist/icons/frame.js +2 -1
  252. package/dist/icons/gear.js +2 -1
  253. package/dist/icons/gif.js +2 -1
  254. package/dist/icons/jump-to-start.js +2 -1
  255. package/dist/icons/keys.js +4 -3
  256. package/dist/icons/magnet.d.ts +3 -0
  257. package/dist/icons/magnet.js +8 -0
  258. package/dist/icons/media-volume.js +1 -1
  259. package/dist/icons/minus.js +2 -1
  260. package/dist/icons/pause.js +2 -1
  261. package/dist/icons/play.js +2 -1
  262. package/dist/icons/react.d.ts +5 -0
  263. package/dist/icons/react.js +8 -0
  264. package/dist/icons/redo.js +2 -1
  265. package/dist/icons/step-back.js +2 -1
  266. package/dist/icons/step-forward.js +2 -1
  267. package/dist/icons/undo.js +2 -1
  268. package/dist/previewEntry.js +2 -1
  269. package/dist/renderEntry.js +4 -3
  270. package/dist/state/editor-guides.d.ts +2 -2
  271. package/dist/state/editor-snapping.d.ts +8 -0
  272. package/dist/state/editor-snapping.js +18 -0
  273. package/dist/state/modals.d.ts +6 -1
  274. package/package.json +12 -12
  275. package/dist/esm/chunk-6jf1natv.js +0 -25
@@ -1000,7 +1000,7 @@ const RenderModal = ({ readOnlyStudio, initialFrame, initialVideoImageFormat, in
1000
1000
  "Audio"] })) : null, shownTabs.includes('gif') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'gif', onClick: () => setTab('gif'), children: [
1001
1001
  jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(gif_1.GifIcon, { style: render_modals_1.icon }) }),
1002
1002
  "GIF"] })) : null, shownTabs.includes('encoding') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'encoding', onClick: () => setTab('encoding'), children: [
1003
- jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(video_1.FilmIcon, { style: render_modals_1.icon, color: "currentcolor" }) }),
1003
+ jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(video_1.FilmIcon, { style: render_modals_1.icon, color: colors_1.CURRENT_COLOR_LOWERCASE }) }),
1004
1004
  "Encoding"] })) : null, shownTabs.includes('environment') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'environment', onClick: () => setTab('environment'), children: [
1005
1005
  jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(data_1.DataIcon, { style: render_modals_1.icon }) }),
1006
1006
  "Environment"] })) : null, shownTabs.includes('advanced') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'advanced', onClick: () => setTab('advanced'), children: [
@@ -11,7 +11,7 @@ const style = {
11
11
  display: 'inline-flex',
12
12
  justifyContent: 'center',
13
13
  alignItems: 'center',
14
- backgroundColor: 'transparent',
14
+ backgroundColor: colors_1.TRANSPARENT,
15
15
  color: colors_1.LIGHT_TEXT,
16
16
  borderStyle: 'solid',
17
17
  borderWidth: 1,
@@ -50,11 +50,9 @@ const WarningIndicatorButton = ({ setShowWarning, showWarning, warningCount, siz
50
50
  const buttonStyle = (0, react_1.useMemo)(() => {
51
51
  return {
52
52
  ...(size === 'compact' ? compactStyle : style),
53
- backgroundColor: showWarning ? colors_1.INPUT_BACKGROUND : 'transparent',
54
- borderColor: showWarning
55
- ? colors_1.INPUT_BORDER_COLOR_HOVERED
56
- : colors_1.INPUT_BORDER_COLOR_UNHOVERED,
57
- color: showWarning ? 'white' : colors_1.LIGHT_TEXT,
53
+ backgroundColor: showWarning ? colors_1.INPUT_BACKGROUND : colors_1.TRANSPARENT,
54
+ borderColor: showWarning ? colors_1.WHITE_ALPHA_05 : colors_1.BLACK_ALPHA_60,
55
+ color: showWarning ? colors_1.WHITE : colors_1.LIGHT_TEXT,
58
56
  };
59
57
  }, [showWarning, size]);
60
58
  return (jsx_runtime_1.jsxs("button", { type: "button", style: buttonStyle, onClick: onClick, children: [
@@ -81,7 +81,7 @@ const validateOutnameForStill = ({ outName, stillImageFormat, }) => {
81
81
  // TODO: Shortcut: Shift + R
82
82
  // TODO: Apply defaultCodec
83
83
  // TODO: Apply defaultOutName
84
- const WebRenderModal = ({ initialFrame, defaultProps, inFrameMark, outFrameMark, initialLogLevel, initialLicenseKey, initialStillImageFormat, initialDefaultOutName, initialScale, initialDelayRenderTimeout, initialMediaCacheSizeInBytes, initialContainer, initialVideoCodec, initialAudioCodec, initialAudioBitrate, initialVideoBitrate, initialHardwareAcceleration, initialKeyframeIntervalInSeconds, initialTransparent, initialMuted, initialAllowHtmlInCanvas, }) => {
84
+ const WebRenderModal = ({ initialFrame, defaultProps, inFrameMark, outFrameMark, initialLogLevel, initialLicenseKey, initialStillImageFormat, initialDefaultOutName, initialScale, initialDelayRenderTimeout, initialMediaCacheSizeInBytes, initialContainer, initialVideoCodec, initialAudioCodec, initialAudioBitrate, initialVideoBitrate, initialHardwareAcceleration, initialKeyframeIntervalInSeconds, initialTransparent, initialMuted, initialAllowHtmlInCanvas, initialPageResponsiveness, }) => {
85
85
  var _a;
86
86
  const context = (0, react_1.useContext)(ResolveCompositionBeforeModal_1.ResolvedCompositionContext);
87
87
  const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
@@ -126,6 +126,7 @@ const WebRenderModal = ({ initialFrame, defaultProps, inFrameMark, outFrameMark,
126
126
  const [scale, setScale] = (0, react_1.useState)(initialScale !== null && initialScale !== void 0 ? initialScale : 1);
127
127
  const [licenseKey, setLicenseKey] = (0, react_1.useState)(initialLicenseKey);
128
128
  const [allowHtmlInCanvas, setAllowHtmlInCanvas] = (0, react_1.useState)(initialAllowHtmlInCanvas !== null && initialAllowHtmlInCanvas !== void 0 ? initialAllowHtmlInCanvas : false);
129
+ const [pageResponsiveness, setPageResponsiveness] = (0, react_1.useState)(initialPageResponsiveness !== null && initialPageResponsiveness !== void 0 ? initialPageResponsiveness : 'medium');
129
130
  const encodableAudioCodecs = (0, use_encodable_audio_codecs_1.useEncodableAudioCodecs)(container);
130
131
  const encodableVideoCodecs = (0, use_encodable_video_codecs_1.useEncodableVideoCodecs)(container);
131
132
  const effectiveAudioCodec = (0, react_1.useMemo)(() => {
@@ -366,6 +367,7 @@ const WebRenderModal = ({ initialFrame, defaultProps, inFrameMark, outFrameMark,
366
367
  licenseKey,
367
368
  scale,
368
369
  allowHtmlInCanvas,
370
+ pageResponsiveness,
369
371
  }, compositionRef);
370
372
  }
371
373
  setSidebarCollapsedState({ left: null, right: 'expanded' });
@@ -407,6 +409,7 @@ const WebRenderModal = ({ initialFrame, defaultProps, inFrameMark, outFrameMark,
407
409
  addClientVideoJob,
408
410
  scale,
409
411
  allowHtmlInCanvas,
412
+ pageResponsiveness,
410
413
  ]);
411
414
  return (jsx_runtime_1.jsxs("div", { style: render_modals_1.outerModalStyle, children: [
412
415
  jsx_runtime_1.jsx(ModalHeader_1.ModalHeader, { title: `Render ${resolvedComposition.id}` }), jsx_runtime_1.jsxs("div", { style: render_modals_1.container, children: [
@@ -431,7 +434,7 @@ const WebRenderModal = ({ initialFrame, defaultProps, inFrameMark, outFrameMark,
431
434
  canUpdate: false,
432
435
  reason: 'render dialogue',
433
436
  determined: false,
434
- } })) : tab === 'picture' ? (jsx_runtime_1.jsx(WebRenderModalPicture_1.WebRenderModalPicture, { renderMode: renderMode, videoBitrate: videoBitrate, setVideoBitrate: setVideoBitrate, keyframeIntervalInSeconds: keyframeIntervalInSeconds, setKeyframeIntervalInSeconds: setKeyframeIntervalInSeconds, transparent: transparent, setTransparent: setTransparent, scale: scale, setScale: setScale, compositionWidth: resolvedComposition.width, compositionHeight: resolvedComposition.height })) : tab === 'audio' ? (jsx_runtime_1.jsx(WebRenderModalAudio_1.WebRenderModalAudio, { renderMode: renderMode, muted: muted, setMuted: setMuted, audioCodec: audioCodec, setAudioCodec: setAudioCodec, audioBitrate: audioBitrate, setAudioBitrate: setAudioBitrate, container: container, encodableCodecs: encodableAudioCodecs, effectiveAudioCodec: effectiveAudioCodec })) : tab === 'advanced' ? (jsx_runtime_1.jsx(WebRenderModalAdvanced_1.WebRenderModalAdvanced, { renderMode: renderMode, delayRenderTimeout: delayRenderTimeout, setDelayRenderTimeout: setDelayRenderTimeout, mediaCacheSizeInBytes: mediaCacheSizeInBytes, setMediaCacheSizeInBytes: setMediaCacheSizeInBytes, hardwareAcceleration: hardwareAcceleration, setHardwareAcceleration: setHardwareAcceleration, allowHtmlInCanvas: allowHtmlInCanvas, setAllowHtmlInCanvas: setAllowHtmlInCanvas })) : (jsx_runtime_1.jsx(WebRenderModalLicense_1.WebRenderModalLicense, { licenseKey: licenseKey, setLicenseKey: setLicenseKey, initialPublicLicenseKey: initialLicenseKey })) })
437
+ } })) : tab === 'picture' ? (jsx_runtime_1.jsx(WebRenderModalPicture_1.WebRenderModalPicture, { renderMode: renderMode, videoBitrate: videoBitrate, setVideoBitrate: setVideoBitrate, keyframeIntervalInSeconds: keyframeIntervalInSeconds, setKeyframeIntervalInSeconds: setKeyframeIntervalInSeconds, transparent: transparent, setTransparent: setTransparent, scale: scale, setScale: setScale, compositionWidth: resolvedComposition.width, compositionHeight: resolvedComposition.height })) : tab === 'audio' ? (jsx_runtime_1.jsx(WebRenderModalAudio_1.WebRenderModalAudio, { renderMode: renderMode, muted: muted, setMuted: setMuted, audioCodec: audioCodec, setAudioCodec: setAudioCodec, audioBitrate: audioBitrate, setAudioBitrate: setAudioBitrate, container: container, encodableCodecs: encodableAudioCodecs, effectiveAudioCodec: effectiveAudioCodec })) : tab === 'advanced' ? (jsx_runtime_1.jsx(WebRenderModalAdvanced_1.WebRenderModalAdvanced, { renderMode: renderMode, delayRenderTimeout: delayRenderTimeout, setDelayRenderTimeout: setDelayRenderTimeout, mediaCacheSizeInBytes: mediaCacheSizeInBytes, setMediaCacheSizeInBytes: setMediaCacheSizeInBytes, hardwareAcceleration: hardwareAcceleration, setHardwareAcceleration: setHardwareAcceleration, allowHtmlInCanvas: allowHtmlInCanvas, setAllowHtmlInCanvas: setAllowHtmlInCanvas, pageResponsiveness: pageResponsiveness, setPageResponsiveness: setPageResponsiveness })) : (jsx_runtime_1.jsx(WebRenderModalLicense_1.WebRenderModalLicense, { licenseKey: licenseKey, setLicenseKey: setLicenseKey, initialPublicLicenseKey: initialLicenseKey })) })
435
438
  ] })
436
439
  ] }));
437
440
  };
@@ -1,3 +1,4 @@
1
+ import type { WebRendererPageResponsiveness } from '@remotion/web-renderer';
1
2
  import type React from 'react';
2
3
  import type { RenderType } from './WebRenderModal';
3
4
  type WebRenderModalAdvancedProps = {
@@ -10,6 +11,8 @@ type WebRenderModalAdvancedProps = {
10
11
  readonly setHardwareAcceleration: (value: 'no-preference' | 'prefer-hardware' | 'prefer-software') => void;
11
12
  readonly allowHtmlInCanvas: boolean;
12
13
  readonly setAllowHtmlInCanvas: React.Dispatch<React.SetStateAction<boolean>>;
14
+ readonly pageResponsiveness: WebRendererPageResponsiveness;
15
+ readonly setPageResponsiveness: React.Dispatch<React.SetStateAction<WebRendererPageResponsiveness>>;
13
16
  };
14
17
  export declare const WebRenderModalAdvanced: React.FC<WebRenderModalAdvancedProps>;
15
18
  export {};
@@ -13,7 +13,24 @@ const OptionExplainerBubble_1 = require("./OptionExplainerBubble");
13
13
  const tabContainer = {
14
14
  flex: 1,
15
15
  };
16
- const WebRenderModalAdvanced = ({ renderMode, delayRenderTimeout, setDelayRenderTimeout, mediaCacheSizeInBytes, setMediaCacheSizeInBytes, hardwareAcceleration, setHardwareAcceleration, allowHtmlInCanvas, setAllowHtmlInCanvas, }) => {
16
+ const paragraph = {
17
+ margin: 0,
18
+ marginBottom: 8,
19
+ };
20
+ const lastParagraph = {
21
+ margin: 0,
22
+ };
23
+ const PageResponsivenessDescription = () => {
24
+ return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
25
+ jsx_runtime_1.jsx("p", { style: paragraph, children: "The Web Renderer runs in the same browser tab as the Studio. Rendering can block the tab while Remotion captures frames." }), jsx_runtime_1.jsxs("p", { style: paragraph, children: ["The default is ",
26
+ jsx_runtime_1.jsx("code", { children: "Medium" }),
27
+ ", which tries to free the event loop every 33ms of rendering work so progress updates and UI interactions can stay responsive."] }), jsx_runtime_1.jsxs("p", { style: lastParagraph, children: ["Choose ",
28
+ jsx_runtime_1.jsx("code", { children: "Disabled" }),
29
+ " to prioritize render speed, or", ' ', jsx_runtime_1.jsx("code", { children: "High" }),
30
+ " to give the browser more chances to update."] })
31
+ ] }));
32
+ };
33
+ const WebRenderModalAdvanced = ({ renderMode, delayRenderTimeout, setDelayRenderTimeout, mediaCacheSizeInBytes, setMediaCacheSizeInBytes, hardwareAcceleration, setHardwareAcceleration, allowHtmlInCanvas, setAllowHtmlInCanvas, pageResponsiveness, setPageResponsiveness, }) => {
17
34
  const toggleCustomMediaCacheSizeInBytes = (0, react_1.useCallback)(() => {
18
35
  setMediaCacheSizeInBytes((previous) => {
19
36
  if (previous === null) {
@@ -73,18 +90,88 @@ const WebRenderModalAdvanced = ({ renderMode, delayRenderTimeout, setDelayRender
73
90
  },
74
91
  ];
75
92
  }, [hardwareAcceleration, setHardwareAcceleration]);
93
+ const selectedPageResponsiveness = typeof pageResponsiveness === 'number' ? 'custom' : pageResponsiveness;
94
+ const pageResponsivenessOptions = (0, react_1.useMemo)(() => {
95
+ return [
96
+ {
97
+ label: 'Disabled',
98
+ onClick: () => setPageResponsiveness('disabled'),
99
+ leftItem: selectedPageResponsiveness === 'disabled' ? jsx_runtime_1.jsx(Checkmark_1.Checkmark, {}) : null,
100
+ id: 'disabled',
101
+ keyHint: null,
102
+ quickSwitcherLabel: null,
103
+ subMenu: null,
104
+ type: 'item',
105
+ value: 'disabled',
106
+ },
107
+ {
108
+ label: 'Low (100ms)',
109
+ onClick: () => setPageResponsiveness('low'),
110
+ leftItem: selectedPageResponsiveness === 'low' ? jsx_runtime_1.jsx(Checkmark_1.Checkmark, {}) : null,
111
+ id: 'low',
112
+ keyHint: null,
113
+ quickSwitcherLabel: null,
114
+ subMenu: null,
115
+ type: 'item',
116
+ value: 'low',
117
+ },
118
+ {
119
+ label: 'Medium (33ms)',
120
+ onClick: () => setPageResponsiveness('medium'),
121
+ leftItem: selectedPageResponsiveness === 'medium' ? jsx_runtime_1.jsx(Checkmark_1.Checkmark, {}) : null,
122
+ id: 'medium',
123
+ keyHint: null,
124
+ quickSwitcherLabel: null,
125
+ subMenu: null,
126
+ type: 'item',
127
+ value: 'medium',
128
+ },
129
+ {
130
+ label: 'High (16ms)',
131
+ onClick: () => setPageResponsiveness('high'),
132
+ leftItem: selectedPageResponsiveness === 'high' ? jsx_runtime_1.jsx(Checkmark_1.Checkmark, {}) : null,
133
+ id: 'high',
134
+ keyHint: null,
135
+ quickSwitcherLabel: null,
136
+ subMenu: null,
137
+ type: 'item',
138
+ value: 'high',
139
+ },
140
+ {
141
+ label: 'Custom',
142
+ onClick: () => setPageResponsiveness((previous) => typeof previous === 'number' ? previous : 33),
143
+ leftItem: selectedPageResponsiveness === 'custom' ? jsx_runtime_1.jsx(Checkmark_1.Checkmark, {}) : null,
144
+ id: 'custom',
145
+ keyHint: null,
146
+ quickSwitcherLabel: null,
147
+ subMenu: null,
148
+ type: 'item',
149
+ value: 'custom',
150
+ },
151
+ ];
152
+ }, [selectedPageResponsiveness, setPageResponsiveness]);
153
+ const setCustomPageResponsiveness = (0, react_1.useCallback)((value) => {
154
+ setPageResponsiveness((previous) => {
155
+ const currentValue = typeof previous === 'number' ? previous : 33;
156
+ return typeof value === 'function' ? value(currentValue) : value;
157
+ });
158
+ }, [setPageResponsiveness]);
76
159
  return (jsx_runtime_1.jsxs("div", { style: tabContainer, children: [
77
160
  jsx_runtime_1.jsx(NumberSetting_1.NumberSetting, { name: "Delay Render Timeout", formatter: (v) => `${v}ms`, min: 0, max: 1000000000, step: 1000, value: delayRenderTimeout, onValueChanged: setDelayRenderTimeout, hint: "delayRenderTimeoutInMillisecondsOption" }), jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
78
161
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Custom @remotion/media cache size ",
79
- jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "mediaCacheSizeInBytesOption" })
162
+ jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.WebRendererOptionExplainerBubble, { apiName: "mediaCacheSizeInBytes", id: "mediaCacheSizeInBytesOption" })
80
163
  ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(Checkbox_1.Checkbox, { checked: mediaCacheSizeInBytes !== null, onChange: toggleCustomMediaCacheSizeInBytes, name: "media-cache-size" }) })
81
164
  ] }), mediaCacheSizeInBytes === null ? null : (jsx_runtime_1.jsx(NumberSetting_1.NumberSetting, { name: "@remotion/media cache size", formatter: (w) => `${w} bytes`, min: 0, max: 10000000000, step: 10 * 1024 * 1024, value: mediaCacheSizeInBytes, onValueChanged: changeMediaCacheSizeInBytes })), renderMode === 'video' ? (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
82
165
  jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Hardware Acceleration" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: hardwareAccelerationOptions, selectedId: hardwareAcceleration, title: "Hardware Acceleration" }) })
83
166
  ] })) : null, jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
84
167
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Allow HTML-in-canvas ",
85
- jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "allowHtmlInCanvasOption" })
168
+ jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.WebRendererOptionExplainerBubble, { apiName: "allowHtmlInCanvas", id: "allowHtmlInCanvasOption" })
86
169
  ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(Checkbox_1.Checkbox, { checked: allowHtmlInCanvas, onChange: toggleAllowHtmlInCanvas, name: "allow-html-in-canvas" }) })
87
- ] })
88
- ] }));
170
+ ] }), renderMode === 'still' ? null : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
171
+ jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
172
+ jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Page Responsiveness ",
173
+ jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.WebRendererCustomOptionExplainerBubble, { apiName: "pageResponsiveness", description: jsx_runtime_1.jsx(PageResponsivenessDescription, {}), docLink: "https://www.remotion.dev/docs/client-side-rendering/page-responsiveness", name: "Page responsiveness" })
174
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: pageResponsivenessOptions, selectedId: selectedPageResponsiveness, title: "Page Responsiveness" }) })
175
+ ] }), typeof pageResponsiveness === 'number' ? (jsx_runtime_1.jsx(NumberSetting_1.NumberSetting, { name: "Responsiveness Interval", formatter: (v) => `${v}ms`, min: 1, max: 1000000000, step: 1, value: pageResponsiveness, onValueChanged: setCustomPageResponsiveness })) : null] }))] }));
89
176
  };
90
177
  exports.WebRenderModalAdvanced = WebRenderModalAdvanced;
@@ -4,6 +4,7 @@ exports.WebRenderModalAudio = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const web_renderer_1 = require("@remotion/web-renderer");
6
6
  const react_1 = require("react");
7
+ const colors_1 = require("../../helpers/colors");
7
8
  const Checkmark_1 = require("../../icons/Checkmark");
8
9
  const layout_1 = require("../layout");
9
10
  const is_menu_item_1 = require("../Menu/is-menu-item");
@@ -17,8 +18,8 @@ const container = {
17
18
  overflowY: 'auto',
18
19
  };
19
20
  const fallbackNoticeStyle = {
20
- backgroundColor: 'rgba(59, 130, 246, 0.15)',
21
- border: '1px solid rgba(59, 130, 246, 0.4)',
21
+ backgroundColor: colors_1.INFO_BLUE_BACKGROUND,
22
+ border: colors_1.BORDER_INFO_BLUE,
22
23
  borderRadius: 4,
23
24
  padding: '8px 12px',
24
25
  marginLeft: 16,
@@ -26,7 +27,7 @@ const fallbackNoticeStyle = {
26
27
  marginTop: 8,
27
28
  fontSize: 13,
28
29
  lineHeight: 1.4,
29
- color: '#60a5fa',
30
+ color: colors_1.INFO_BLUE,
30
31
  };
31
32
  const humanReadableWebAudioCodec = (audioCodec) => {
32
33
  switch (audioCodec) {
@@ -118,12 +118,12 @@ const WebRenderModalBasic = ({ renderMode, resolvedComposition, imageFormat, set
118
118
  jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Container" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: containerOptions, selectedId: container, title: "Container" }) })
119
119
  ] }), renderMode === 'video' ? (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
120
120
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Codec",
121
- jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "videoCodecOption" })
121
+ jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.WebRendererOptionExplainerBubble, { apiName: "codec", id: "videoCodecOption" })
122
122
  ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: codecOptions, selectedId: effectiveVideoCodec, title: "Codec" }) })
123
123
  ] })) : null, jsx_runtime_1.jsx(FrameRangeSetting_1.FrameRangeSetting, { durationInFrames: resolvedComposition.durationInFrames, startFrame: startFrame !== null && startFrame !== void 0 ? startFrame : 0, endFrame: endFrame !== null && endFrame !== void 0 ? endFrame : resolvedComposition.durationInFrames - 1, setStartFrame: setStartFrame, setEndFrame: setEndFrame })
124
124
  ] })), jsx_runtime_1.jsx(RenderModalOutputName_1.RenderModalOutputName, { existence: false, inputStyle: layout_2.input, outName: outName, onValueChange: onOutNameChange, validationMessage: validationMessage, label: window.remotion_isReadOnlyStudio ? 'Download name' : 'Output name' }), jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
125
125
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Log Level ",
126
- jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "logLevelOption" })
126
+ jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.WebRendererOptionExplainerBubble, { apiName: "logLevel", id: "logLevelOption" })
127
127
  ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: logLevelOptions, selectedId: logLevel, title: "Log Level" }) })
128
128
  ] })
129
129
  ] }));
@@ -33,14 +33,14 @@ const paddedDescriptionStyle = {
33
33
  fontSize: 14,
34
34
  fontFamily: 'sans-serif',
35
35
  padding: 9,
36
- border: '1px solid ' + colors_1.INPUT_BORDER_COLOR_UNHOVERED,
36
+ border: '1px solid ' + colors_1.BLACK_ALPHA_60,
37
37
  borderRadius: 8,
38
38
  lineHeight: 1.5,
39
39
  marginLeft: 16,
40
40
  marginRight: 16,
41
41
  };
42
42
  const descriptionLink = {
43
- color: 'white',
43
+ color: colors_1.WHITE,
44
44
  fontSize: 14,
45
45
  };
46
46
  const checkboxLabel = {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WebRenderModalPicture = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
+ const colors_1 = require("../../helpers/colors");
6
7
  const Checkbox_1 = require("../Checkbox");
7
8
  const ComboBox_1 = require("../NewComposition/ComboBox");
8
9
  const layout_1 = require("./layout");
@@ -22,7 +23,7 @@ const WebRenderModalPicture = ({ renderMode, videoBitrate, setVideoBitrate, keyf
22
23
  jsx_runtime_1.jsxs("div", { style: layout_1.optionRow, children: [
23
24
  jsx_runtime_1.jsx("div", { style: layout_1.label, children: "Quality" }), jsx_runtime_1.jsx("div", { style: layout_1.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: qualityOptions, selectedId: videoBitrate, title: "Quality" }) })
24
25
  ] }), jsx_runtime_1.jsx(NumberSetting_1.NumberSetting, { name: "Keyframe Interval", formatter: (v) => `${v}s`, min: 1, max: 300, step: 1, value: keyframeIntervalInSeconds, onValueChanged: setKeyframeIntervalInSeconds }), jsx_runtime_1.jsxs("div", { style: layout_1.optionRow, children: [
25
- jsx_runtime_1.jsx("div", { style: layout_1.label, children: "Transparent" }), jsx_runtime_1.jsx("div", { style: layout_1.rightRow, children: jsx_runtime_1.jsx(Checkbox_1.Checkbox, { checked: transparent, onChange: onTransparentChanged, name: "transparent" }) })
26
+ jsx_runtime_1.jsx("div", { style: layout_1.label, children: "Transparent" }), jsx_runtime_1.jsx("div", { style: layout_1.rightRow, children: jsx_runtime_1.jsx(Checkbox_1.Checkbox, { checked: transparent, onChange: onTransparentChanged, name: colors_1.TRANSPARENT }) })
26
27
  ] })
27
28
  ] }))] }));
28
29
  };
@@ -15,7 +15,7 @@ exports.container = {
15
15
  flexDirection: 'row',
16
16
  alignItems: 'center',
17
17
  padding: '12px 16px',
18
- borderBottom: '1px solid black',
18
+ borderBottom: colors_1.BORDER_BLACK,
19
19
  };
20
20
  exports.optionsPanel = {
21
21
  display: 'flex',
@@ -51,12 +51,12 @@ exports.iconContainer = {
51
51
  alignItems: 'center',
52
52
  };
53
53
  exports.icon = {
54
- color: 'currentcolor',
54
+ color: colors_1.CURRENT_COLOR_LOWERCASE,
55
55
  height: 20,
56
56
  };
57
57
  exports.buttonStyle = {
58
58
  backgroundColor: colors_1.BLUE,
59
- color: 'white',
59
+ color: colors_1.WHITE,
60
60
  };
61
61
  exports.flexer = {
62
62
  flex: 1,
@@ -10,7 +10,7 @@ const get_preview_file_type_1 = require("../helpers/get-preview-file-type");
10
10
  const FilePreview_1 = require("./FilePreview");
11
11
  const msgStyle = {
12
12
  fontSize: 13,
13
- color: 'white',
13
+ color: colors_1.WHITE,
14
14
  fontFamily: 'sans-serif',
15
15
  display: 'flex',
16
16
  justifyContent: 'center',
@@ -98,6 +98,7 @@ const ClientRenderQueueProcessor = () => {
98
98
  outputTarget: 'web-fs',
99
99
  licenseKey: (_c = job.licenseKey) !== null && _c !== void 0 ? _c : undefined,
100
100
  allowHtmlInCanvas: job.allowHtmlInCanvas,
101
+ pageResponsiveness: job.pageResponsiveness,
101
102
  });
102
103
  return {
103
104
  getBlob,
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RenderQueueCopyToClipboard = exports.supportsCopyingToClipboard = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
+ const colors_1 = require("../../helpers/colors");
6
7
  const get_asset_metadata_1 = require("../../helpers/get-asset-metadata");
7
8
  const clipboard_1 = require("../../icons/clipboard");
8
9
  const InlineAction_1 = require("../InlineAction");
9
10
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
10
11
  const revealIconStyle = {
11
12
  height: 12,
12
- color: 'currentColor',
13
+ color: colors_1.CURRENT_COLOR,
13
14
  };
14
15
  const supportsCopyingToClipboard = (job) => {
15
16
  if (job.status !== 'done') {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RenderQueueDownloadItem = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
+ const colors_1 = require("../../helpers/colors");
6
7
  const InlineAction_1 = require("../InlineAction");
7
8
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
8
9
  const ClientRenderQueueProcessor_1 = require("./ClientRenderQueueProcessor");
@@ -24,7 +25,7 @@ const RenderQueueDownloadItem = ({ job }) => {
24
25
  const icon = (0, react_1.useMemo)(() => {
25
26
  return {
26
27
  height: 12,
27
- color: 'currentColor',
28
+ color: colors_1.CURRENT_COLOR,
28
29
  };
29
30
  }, []);
30
31
  const renderAction = (0, react_1.useCallback)((color) => {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RenderQueueCancelButton = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
+ const colors_1 = require("../../helpers/colors");
6
7
  const InlineAction_1 = require("../InlineAction");
7
8
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
8
9
  const actions_1 = require("./actions");
@@ -23,7 +24,7 @@ const RenderQueueCancelButton = ({ job }) => {
23
24
  const icon = (0, react_1.useMemo)(() => {
24
25
  return {
25
26
  height: 14,
26
- color: 'currentColor',
27
+ color: colors_1.CURRENT_COLOR,
27
28
  };
28
29
  }, []);
29
30
  const renderAction = (0, react_1.useCallback)((color) => {
@@ -75,7 +75,7 @@ const RenderQueueItemStatus = ({ job }) => {
75
75
  return (jsx_runtime_1.jsx("svg", { style: iconStyle, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: colors_1.LIGHT_TEXT, d: "M256 512C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z" }) }));
76
76
  }
77
77
  if (job.status === 'done') {
78
- return (jsx_runtime_1.jsx("button", { type: "button", style: invisibleStyle, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, onClick: onClick, children: jsx_runtime_1.jsx("svg", { style: iconStyle, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: hovered ? 'white' : colors_1.LIGHT_TEXT, d: "M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM369 209L241 337l-17 17-17-17-64-64-17-17L160 222.1l17 17 47 47L335 175l17-17L385.9 192l-17 17z" }) }) }));
78
+ return (jsx_runtime_1.jsx("button", { type: "button", style: invisibleStyle, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, onClick: onClick, children: jsx_runtime_1.jsx("svg", { style: iconStyle, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: hovered ? colors_1.WHITE : colors_1.LIGHT_TEXT, d: "M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM369 209L241 337l-17 17-17-17-64-64-17-17L160 222.1l17 17 47 47L335 175l17-17L385.9 192l-17 17z" }) }) }));
79
79
  }
80
80
  if (job.status === 'running') {
81
81
  let progressValue;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RenderQueueOpenInFinderItem = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
+ const colors_1 = require("../../helpers/colors");
6
7
  const folder_1 = require("../../icons/folder");
7
8
  const InlineAction_1 = require("../InlineAction");
8
9
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
@@ -17,7 +18,7 @@ const RenderQueueOpenInFinderItem = ({ job }) => {
17
18
  const icon = (0, react_1.useMemo)(() => {
18
19
  return {
19
20
  height: 12,
20
- color: 'currentColor',
21
+ color: colors_1.CURRENT_COLOR,
21
22
  };
22
23
  }, []);
23
24
  const renderAction = (0, react_1.useCallback)((color) => {
@@ -5,6 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const remotion_1 = require("remotion");
7
7
  const save_render_output_1 = require("../../api/save-render-output");
8
+ const colors_1 = require("../../helpers/colors");
8
9
  const InlineAction_1 = require("../InlineAction");
9
10
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
10
11
  const actions_1 = require("./actions");
@@ -39,7 +40,7 @@ const RenderQueueRemoveItem = ({ job }) => {
39
40
  const icon = (0, react_1.useMemo)(() => {
40
41
  return {
41
42
  height: 16,
42
- color: 'currentColor',
43
+ color: colors_1.CURRENT_COLOR,
43
44
  };
44
45
  }, []);
45
46
  const renderAction = (0, react_1.useCallback)((color) => {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RenderQueueRepeatItem = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
+ const colors_1 = require("../../helpers/colors");
6
7
  const mobile_layout_1 = require("../../helpers/mobile-layout");
7
8
  const retry_payload_1 = require("../../helpers/retry-payload");
8
9
  const modals_1 = require("../../state/modals");
@@ -37,7 +38,7 @@ const RenderQueueRepeatItem = ({ job }) => {
37
38
  const icon = (0, react_1.useMemo)(() => {
38
39
  return {
39
40
  height: 12,
40
- color: 'currentColor',
41
+ color: colors_1.CURRENT_COLOR,
41
42
  };
42
43
  }, []);
43
44
  const renderAction = (0, react_1.useCallback)((color) => {
@@ -1,5 +1,5 @@
1
1
  import type { CompletedClientRender } from '@remotion/studio-shared';
2
- import type { RenderStillOnWebImageFormat, WebRendererAudioCodec, WebRendererContainer, WebRendererQuality, WebRendererVideoCodec } from '@remotion/web-renderer';
2
+ import type { RenderStillOnWebImageFormat, WebRendererAudioCodec, WebRendererContainer, WebRendererPageResponsiveness, WebRendererQuality, WebRendererVideoCodec } from '@remotion/web-renderer';
3
3
  import type { LogLevel } from 'remotion';
4
4
  export type ClientRenderJobProgress = {
5
5
  encodedFrames: number;
@@ -60,6 +60,7 @@ export type ClientVideoRenderJob = ClientRenderJobBase & {
60
60
  keyframeIntervalInSeconds: number;
61
61
  transparent: boolean;
62
62
  muted: boolean;
63
+ pageResponsiveness: WebRendererPageResponsiveness;
63
64
  } & ClientRenderJobDynamicStatus;
64
65
  export type RestoredClientRenderJob = CompletedClientRender & {
65
66
  status: 'done';
@@ -45,7 +45,7 @@ const is_menu_item_1 = require("../Menu/is-menu-item");
45
45
  const context_1 = require("./context");
46
46
  const RenderQueueItem_1 = require("./RenderQueueItem");
47
47
  const separatorStyle = {
48
- borderBottom: `1px solid ${colors_1.BORDER_COLOR}`,
48
+ borderBottom: `1px solid ${colors_1.BLACK_HEX}`,
49
49
  };
50
50
  const errorExplanation = {
51
51
  fontSize: 14,
@@ -31,8 +31,8 @@ const RendersTab = ({ selected, onClick }) => {
31
31
  const badgeStyle = (0, react_1.useMemo)(() => {
32
32
  return {
33
33
  ...badge,
34
- backgroundColor: failedJobs > 0 ? colors_1.FAIL_COLOR : 'transparent',
35
- color: failedJobs > 0 ? 'white' : colors_1.LIGHT_TEXT,
34
+ backgroundColor: failedJobs > 0 ? colors_1.FAIL_COLOR : colors_1.TRANSPARENT,
35
+ color: failedJobs > 0 ? colors_1.WHITE : colors_1.LIGHT_TEXT,
36
36
  borderWidth: failedJobs > 0 ? 0 : 1,
37
37
  borderStyle: 'solid',
38
38
  borderColor: colors_1.LIGHT_TEXT,
@@ -9,7 +9,7 @@ const container = {
9
9
  display: 'flex',
10
10
  flexDirection: 'row',
11
11
  overflow: 'hidden',
12
- border: '1px solid ' + colors_1.INPUT_BORDER_COLOR_UNHOVERED,
12
+ border: '1px solid ' + colors_1.BLACK_ALPHA_60,
13
13
  flexWrap: 'wrap',
14
14
  maxWidth: 350,
15
15
  justifyContent: 'flex-end',
@@ -63,8 +63,8 @@ const Item = ({ selected, onClick, children, size }) => {
63
63
  const itemStyle = (0, react_1.useMemo)(() => {
64
64
  return {
65
65
  ...(size === 'compact' ? compactItem : item),
66
- backgroundColor: selected ? colors_1.INPUT_BACKGROUND : 'transparent',
67
- color: selected ? 'white' : hovered ? 'white' : colors_1.LIGHT_TEXT,
66
+ backgroundColor: selected ? colors_1.INPUT_BACKGROUND : colors_1.TRANSPARENT,
67
+ color: selected ? colors_1.WHITE : hovered ? colors_1.WHITE : colors_1.LIGHT_TEXT,
68
68
  };
69
69
  }, [hovered, selected, size]);
70
70
  return (jsx_runtime_1.jsx("button", { type: "button", onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, style: itemStyle, tabIndex: tabIndex, onClick: onClick, children: children }));
@@ -1,9 +1,16 @@
1
1
  import React from 'react';
2
2
  import type { SelectedOutline } from './selected-outline-geometry';
3
+ import { type SelectedOutlineSnapPoint, type SelectedOutlineSnapTarget } from './selected-outline-snap';
3
4
  import { type SelectedOutlineDragTarget, type SelectedOutlineRotationDragTarget, type SelectedOutlineScaleDragTarget, type SelectedOutlineTarget } from './selected-outline-types';
4
5
  import type { TimelineSelection, TimelineSelectionInteraction } from './Timeline/TimelineSelection';
6
+ export declare const SelectedOutlineTransformOriginHandle: React.FC<{
7
+ readonly outline: SelectedOutline;
8
+ readonly onDraggingChange: (dragging: boolean) => void;
9
+ readonly target: SelectedOutlineTarget | undefined;
10
+ }>;
5
11
  export declare const SelectedOutlineElement: React.FC<{
6
12
  readonly allDragTargets: readonly SelectedOutlineDragTarget[];
13
+ readonly allDragOutlines: readonly SelectedOutline[];
7
14
  readonly allRotationDragTargets: readonly SelectedOutlineRotationDragTarget[];
8
15
  readonly allScaleDragTargets: readonly SelectedOutlineScaleDragTarget[];
9
16
  readonly dragging: boolean;
@@ -11,7 +18,9 @@ export declare const SelectedOutlineElement: React.FC<{
11
18
  readonly outline: SelectedOutline;
12
19
  readonly onDraggingChange: (dragging: boolean) => void;
13
20
  readonly onHoverChange: (key: string | null) => void;
21
+ readonly onSnapPointsChange: (snapPoints: readonly SelectedOutlineSnapPoint[]) => void;
14
22
  readonly onSelect: (item: TimelineSelection, interaction: TimelineSelectionInteraction) => void;
15
23
  readonly scale: number;
24
+ readonly snapTargets: readonly SelectedOutlineSnapTarget[];
16
25
  readonly target: SelectedOutlineTarget | undefined;
17
26
  }>;