@remotion/studio 4.0.528 → 4.0.529

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 (185) hide show
  1. package/dist/Studio.js +2 -0
  2. package/dist/components/AgentPrompt.js +2 -2
  3. package/dist/components/AppLaunchButton.d.ts +0 -1
  4. package/dist/components/AppLaunchButton.js +2 -5
  5. package/dist/components/AssetAudioVolume.js +2 -2
  6. package/dist/components/AssetSelectorItem.js +5 -5
  7. package/dist/components/Button.d.ts +1 -1
  8. package/dist/components/Button.js +2 -2
  9. package/dist/components/CaptionInspector.js +1 -1
  10. package/dist/components/CaptionTextEditor.js +1 -1
  11. package/dist/components/CheckboardToggle.js +1 -1
  12. package/dist/components/CodingAgentButton.js +1 -1
  13. package/dist/components/ColorPicker/ColorPicker.d.ts +1 -1
  14. package/dist/components/ColorPicker/ColorPicker.js +2 -2
  15. package/dist/components/ColorPicker/ColorPickerPopup.js +1 -1
  16. package/dist/components/CompactExplanation.js +3 -3
  17. package/dist/components/CompositionSelectorItem.js +2 -2
  18. package/dist/components/ConfigSelect.js +1 -1
  19. package/dist/components/ConfigureDefaultEditorModal.js +2 -2
  20. package/dist/components/ControlButton.d.ts +0 -1
  21. package/dist/components/ControlButton.js +2 -2
  22. package/dist/components/CurrentAsset.js +1 -1
  23. package/dist/components/ElementLibrariesSettings.js +1 -1
  24. package/dist/components/ElementLibraryModal.js +1 -1
  25. package/dist/components/FramePersistor.js +3 -3
  26. package/dist/components/FullscreenToggle.js +1 -1
  27. package/dist/components/InitialCompositionLoader.js +3 -3
  28. package/dist/components/InlineAction.d.ts +2 -2
  29. package/dist/components/InlineAction.js +2 -3
  30. package/dist/components/InlineEditableTitle.d.ts +1 -1
  31. package/dist/components/InlineEditableTitle.js +3 -3
  32. package/dist/components/InspectorLocationCopy.js +1 -1
  33. package/dist/components/InspectorOpenInEditor.js +1 -3
  34. package/dist/components/InspectorPanel/AlignmentControls.js +3 -3
  35. package/dist/components/InspectorPanel/CompositionInspector.js +1 -5
  36. package/dist/components/InspectorPanel/CompositionMetadata.js +4 -4
  37. package/dist/components/InspectorPanel/EasingInspector.js +1 -1
  38. package/dist/components/InspectorPanel/ElementLibraryButton.js +3 -14
  39. package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +6 -8
  40. package/dist/components/InspectorPanel/KeyframeInspector.js +1 -1
  41. package/dist/components/InspectorPanel/KeyframeSettings.js +16 -11
  42. package/dist/components/InspectorPanel/MultiSequenceField.js +1 -1
  43. package/dist/components/InspectorPanel/MultiSequenceInspector.js +2 -7
  44. package/dist/components/InspectorPanel/MultiSequenceNumberField.js +2 -2
  45. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +1 -1
  46. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +4 -13
  47. package/dist/components/InspectorPanel/SequenceWrapAction.js +6 -14
  48. package/dist/components/InspectorPanel/common.d.ts +6 -2
  49. package/dist/components/InspectorPanel/common.js +25 -9
  50. package/dist/components/InspectorSequenceSection.js +5 -5
  51. package/dist/components/InspectorSourceLocation.js +2 -2
  52. package/dist/components/KeyboardShortcutsSettings.js +1 -1
  53. package/dist/components/LicenseKeyValidation.js +2 -2
  54. package/dist/components/LoopToggle.js +1 -1
  55. package/dist/components/Menu/MenuSubItem.js +4 -2
  56. package/dist/components/MenuBuildIndicator.js +1 -1
  57. package/dist/components/MenuCompositionName.js +1 -1
  58. package/dist/components/ModelManager.js +1 -1
  59. package/dist/components/MuteToggle.js +1 -1
  60. package/dist/components/NewComposition/ComboBox.d.ts +1 -1
  61. package/dist/components/NewComposition/ComboBox.js +2 -2
  62. package/dist/components/NewComposition/DuplicateComposition.js +1 -1
  63. package/dist/components/NewComposition/InputDragger.d.ts +1 -1
  64. package/dist/components/NewComposition/InputDragger.js +1 -1
  65. package/dist/components/NewComposition/NewComposition.js +1 -1
  66. package/dist/components/OpenIssueButton.js +1 -1
  67. package/dist/components/OutlineToggle.js +1 -1
  68. package/dist/components/PlayPause.js +1 -1
  69. package/dist/components/PlaybackRateSelector.js +1 -1
  70. package/dist/components/Preview.js +2 -3
  71. package/dist/components/PreviewToolbarOverflowButton.js +1 -1
  72. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -1
  73. package/dist/components/RenderButton.js +2 -4
  74. package/dist/components/RenderModal/InfoBubble.d.ts +1 -1
  75. package/dist/components/RenderModal/InfoBubble.js +2 -2
  76. package/dist/components/RenderModal/NumberSetting.js +1 -1
  77. package/dist/components/RenderModal/OptionExplainerBubble.js +2 -2
  78. package/dist/components/RenderModal/RenderModalAdvanced.js +2 -2
  79. package/dist/components/RenderModal/RenderModalAudio.js +2 -2
  80. package/dist/components/RenderModal/RenderModalBasic.js +3 -3
  81. package/dist/components/RenderModal/RenderModalEncoding.js +4 -4
  82. package/dist/components/RenderModal/RenderModalOutputName.js +1 -1
  83. package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -1
  84. package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
  85. package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
  86. package/dist/components/RenderModal/SchemaEditor/ZodFieldValidation.js +1 -1
  87. package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
  88. package/dist/components/RenderModal/WebRenderModalAdvanced.js +2 -2
  89. package/dist/components/RenderModal/WebRenderModalAudio.js +2 -2
  90. package/dist/components/RenderModal/WebRenderModalBasic.js +3 -3
  91. package/dist/components/RenderModal/WebRenderModalPicture.js +1 -1
  92. package/dist/components/RenderQueue/CaptionQueueItem.js +1 -1
  93. package/dist/components/RenderQueue/QueueJobError.js +1 -1
  94. package/dist/components/RenderQueue/RenderQueueError.js +1 -1
  95. package/dist/components/RenderQueue/RenderQueueOutputName.js +1 -1
  96. package/dist/components/RenderQueue/RenderQueueProgressMessage.js +1 -1
  97. package/dist/components/RenderQueue/VideoMattingQueueItem.js +1 -1
  98. package/dist/components/RenderingSettings.js +6 -6
  99. package/dist/components/RulersAndGuidesToggle.js +1 -1
  100. package/dist/components/SegmentedButton.d.ts +0 -2
  101. package/dist/components/SegmentedButton.js +6 -6
  102. package/dist/components/SelectedOutlineOverlay.js +15 -2
  103. package/dist/components/SelectedOutlinePathPoints.js +45 -21
  104. package/dist/components/SelectedOutlineRenderer.js +1 -1
  105. package/dist/components/SettingsButton.js +1 -1
  106. package/dist/components/SettingsModalFooter.js +1 -1
  107. package/dist/components/SizeSelector.js +1 -1
  108. package/dist/components/SkillsSettings.js +2 -2
  109. package/dist/components/SnappingToggle.js +1 -1
  110. package/dist/components/StudioSettings.js +2 -2
  111. package/dist/components/TimeValue.js +1 -3
  112. package/dist/components/Timeline/EasingEditorModal.js +3 -3
  113. package/dist/components/Timeline/TimelineArrayField.js +2 -2
  114. package/dist/components/Timeline/TimelineAssetField.js +3 -3
  115. package/dist/components/Timeline/TimelineColorField.js +2 -2
  116. package/dist/components/Timeline/TimelineDragHandler.js +3 -3
  117. package/dist/components/Timeline/TimelineDuplicateCount.js +1 -1
  118. package/dist/components/Timeline/TimelineEffectItem.js +1 -1
  119. package/dist/components/Timeline/TimelineEnumField.js +1 -1
  120. package/dist/components/Timeline/TimelineFieldLabel.js +1 -1
  121. package/dist/components/Timeline/TimelineFontFamilyField.js +2 -2
  122. package/dist/components/Timeline/TimelineFontWeightField.js +1 -1
  123. package/dist/components/Timeline/TimelineKeyframeControls.js +4 -4
  124. package/dist/components/Timeline/TimelineKeyframeDiamond.js +1 -1
  125. package/dist/components/Timeline/TimelineKeyframeEasingLine.js +1 -1
  126. package/dist/components/Timeline/TimelineLayerChildren.js +1 -1
  127. package/dist/components/Timeline/TimelineList.js +15 -7
  128. package/dist/components/Timeline/TimelineMediaInfo.js +1 -1
  129. package/dist/components/Timeline/TimelineScaleField.js +1 -1
  130. package/dist/components/Timeline/TimelineSchemaField.js +2 -2
  131. package/dist/components/Timeline/TimelineSequence.js +1 -1
  132. package/dist/components/Timeline/TimelineSequenceItem.js +34 -16
  133. package/dist/components/Timeline/TimelineSequenceName.d.ts +1 -0
  134. package/dist/components/Timeline/TimelineSequenceName.js +38 -6
  135. package/dist/components/Timeline/TimelineSequencePropItem.js +6 -4
  136. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +2 -2
  137. package/dist/components/Timeline/TimelineZoomControls.js +2 -2
  138. package/dist/components/Timeline/get-sequence-split-menu-item.js +2 -2
  139. package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +1 -1
  140. package/dist/components/Timeline/use-timeline-expanded-tree.js +3 -0
  141. package/dist/components/TimelineCombobox.d.ts +1 -1
  142. package/dist/components/TimelineCombobox.js +5 -6
  143. package/dist/components/TimelineInOutToggle.js +1 -1
  144. package/dist/components/Transcription/TranscriptionModal.js +6 -6
  145. package/dist/components/UndoRedoButtons.js +1 -1
  146. package/dist/components/UpdatesSettings.js +2 -2
  147. package/dist/components/VideoMatting/VideoMattingModal.js +4 -4
  148. package/dist/components/selected-outline-types.d.ts +2 -0
  149. package/dist/error-overlay/remotion-overlay/CompositionIdListItem.js +1 -1
  150. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +1 -1
  151. package/dist/error-overlay/remotion-overlay/StackFrame.js +1 -1
  152. package/dist/esm/{CaptionQueueProcessor-nr7hjcga.mjs → CaptionQueueProcessor-qj37c6r2.mjs} +2 -2
  153. package/dist/esm/{LazyModels-ajkn7fs3.mjs → LazyModels-rjsrgap5.mjs} +4 -4
  154. package/dist/esm/{LazyModels-g1g7cf4e.mjs → LazyModels-rnbjx98t.mjs} +4 -4
  155. package/dist/esm/{TranscriptionModal-e18bzbkb.mjs → TranscriptionModal-y7zeqj2d.mjs} +15 -15
  156. package/dist/esm/{VideoMattingModal-5bz2s4rs.mjs → VideoMattingModal-jzrkhah1.mjs} +13 -13
  157. package/dist/esm/{index-s6qya2gg.mjs → index-19d05w9e.mjs} +1 -1
  158. package/dist/esm/{index-t7tbt980.mjs → index-24wge6y5.mjs} +2 -3
  159. package/dist/esm/{index-wqc43mw0.mjs → index-3qb54r5j.mjs} +4 -5
  160. package/dist/esm/{index-c2wabcdt.mjs → index-cakcjjy2.mjs} +6 -6
  161. package/dist/esm/{index-9q9w8v9p.mjs → index-f9hxt5yh.mjs} +1 -1
  162. package/dist/esm/{index-8nt6a0mw.mjs → index-jc22b2wb.mjs} +1 -1
  163. package/dist/esm/{index-890dd9b3.mjs → index-m01zjph7.mjs} +3 -5
  164. package/dist/esm/{index-x6r9bn12.mjs → index-m2a95v3p.mjs} +925 -237
  165. package/dist/esm/{index-xac20sv4.mjs → index-r9bj4tta.mjs} +7 -7
  166. package/dist/esm/{index-t7xnxdf8.mjs → index-vnc2wdfd.mjs} +4 -5
  167. package/dist/esm/{index-dh3zk2hv.mjs → index-vtr5qzam.mjs} +1 -1
  168. package/dist/esm/{index-dpyss74p.mjs → index-x7kg7jqv.mjs} +814 -723
  169. package/dist/esm/index.mjs +2 -2
  170. package/dist/esm/internals.mjs +9 -9
  171. package/dist/esm/previewEntry.mjs +9 -9
  172. package/dist/esm/renderEntry.mjs +2 -2
  173. package/dist/helpers/checkerboard-background.d.ts +2 -2
  174. package/dist/helpers/checkerboard-background.js +1 -1
  175. package/dist/helpers/colors.d.ts +1 -2
  176. package/dist/helpers/colors.js +7 -8
  177. package/dist/helpers/studio-css-variables.d.ts +1 -1
  178. package/dist/helpers/studio-css-variables.js +2 -3
  179. package/dist/icons/snowflake.js +1 -3
  180. package/dist/icons/{scissors.d.ts → split.d.ts} +1 -1
  181. package/dist/icons/split.js +8 -0
  182. package/dist/icons/trash.js +2 -2
  183. package/dist/icons/wrap.js +1 -1
  184. package/package.json +20 -20
  185. package/dist/icons/scissors.js +0 -8
@@ -90,9 +90,9 @@ const InspectorSourceLocation = ({ location, canOpen, onOpen, renderIcon, size =
90
90
  return null;
91
91
  }
92
92
  if (size === 'quick-action') {
93
- return (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canOpen, onClick: onClick, renderIcon: (iconColor) => renderIcon === null || renderIcon === void 0 ? void 0 : renderIcon(iconColor), style: quickActionStyle, title: fileLocation !== null && fileLocation !== void 0 ? fileLocation : undefined, children: label }));
93
+ return (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canOpen, onClick: onClick, renderIcon: (iconColor) => renderIcon === null || renderIcon === void 0 ? void 0 : renderIcon(iconColor), style: quickActionStyle, "aria-label": fileLocation !== null && fileLocation !== void 0 ? fileLocation : undefined, children: label }));
94
94
  }
95
- return (jsx_runtime_1.jsxs("button", { type: "button", style: style, title: fileLocation !== null && fileLocation !== void 0 ? fileLocation : undefined, onClick: onClick, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), children: [renderIcon ? renderIcon(color) : null, jsx_runtime_1.jsx("span", { style: sourceLocationLabelStyle, children: label })
95
+ return (jsx_runtime_1.jsxs("button", { type: "button", style: style, "aria-label": fileLocation !== null && fileLocation !== void 0 ? fileLocation : undefined, onClick: onClick, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), children: [renderIcon ? renderIcon(color) : null, jsx_runtime_1.jsx("span", { style: sourceLocationLabelStyle, children: label })
96
96
  ] }));
97
97
  };
98
98
  exports.InspectorSourceLocation = InspectorSourceLocation;
@@ -354,7 +354,7 @@ const KeyboardShortcutsSettings = () => {
354
354
  });
355
355
  setShortcutsEdited(true);
356
356
  setRecording(null);
357
- }, children: recording === shortcut.actionId ? (jsx_runtime_1.jsx("span", { style: emptyShortcut, children: "Press shortcut\u2026" })) : (jsx_runtime_1.jsx(ShortcutChords, { values: shortcutValues })) }) }), jsx_runtime_1.jsx("span", { style: actionCell, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { renderAction: (color) => jsx_runtime_1.jsx(caret_1.CaretDown, { color: color }), title: `Actions for ${shortcut.action}`, values: shortcutMenuItems, variant: "compact" }) })
357
+ }, children: recording === shortcut.actionId ? (jsx_runtime_1.jsx("span", { style: emptyShortcut, children: "Press shortcut\u2026" })) : (jsx_runtime_1.jsx(ShortcutChords, { values: shortcutValues })) }) }), jsx_runtime_1.jsx("span", { style: actionCell, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { renderAction: (color) => jsx_runtime_1.jsx(caret_1.CaretDown, { color: color }), "aria-label": `Actions for ${shortcut.action}`, values: shortcutMenuItems, variant: "compact" }) })
358
358
  ] }))] }, shortcut.action));
359
359
  }) })
360
360
  ] }, group.name))), (error !== null && error !== void 0 ? error : settingsError) ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
@@ -102,9 +102,9 @@ const LicenseKeyDetailsDisplay = ({ details }) => {
102
102
  const projectUrl = `${PRO_HOST}/projects/${details.projectSlug}`;
103
103
  const usageUrl = `${projectUrl}/usage#client-renders-usage`;
104
104
  const hasActiveLicense = (0, exports.hasActiveCompanyLicense)(details);
105
- return (jsx_runtime_1.jsxs("div", { children: [jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, onClick: () => window.open(usageUrl, '_blank', 'noopener,noreferrer'), renderIcon: (color) => (jsx_runtime_1.jsx(check_circle_filled_1.CheckCircleFilled, { style: { ...iconStyle, fill: color } })), style: actionStyle, title: "View license usage", children: jsx_runtime_1.jsxs("span", { style: actionContent, children: [
105
+ return (jsx_runtime_1.jsxs("div", { children: [jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, onClick: () => window.open(usageUrl, '_blank', 'noopener,noreferrer'), renderIcon: (color) => (jsx_runtime_1.jsx(check_circle_filled_1.CheckCircleFilled, { style: { ...iconStyle, fill: color } })), style: actionStyle, "aria-label": "View license usage", children: jsx_runtime_1.jsxs("span", { style: actionContent, children: [
106
106
  jsx_runtime_1.jsxs("span", { style: actionText, children: ["Belongs to ", details.projectName] }), jsx_runtime_1.jsx("span", { style: actionLabel, children: "View usage" })
107
- ] }) }), jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, onClick: () => window.open(projectUrl, '_blank', 'noopener,noreferrer'), renderIcon: (color) => hasActiveLicense ? (jsx_runtime_1.jsx(check_circle_filled_1.CheckCircleFilled, { style: { ...iconStyle, fill: color } })) : (jsx_runtime_1.jsx(ErrorIcon, {})), style: actionStyle, title: "Manage Company License", children: jsx_runtime_1.jsxs("span", { style: actionContent, children: [
107
+ ] }) }), jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, onClick: () => window.open(projectUrl, '_blank', 'noopener,noreferrer'), renderIcon: (color) => hasActiveLicense ? (jsx_runtime_1.jsx(check_circle_filled_1.CheckCircleFilled, { style: { ...iconStyle, fill: color } })) : (jsx_runtime_1.jsx(ErrorIcon, {})), style: actionStyle, "aria-label": "Manage Company License", children: jsx_runtime_1.jsxs("span", { style: actionContent, children: [
108
108
  jsx_runtime_1.jsx("span", { style: hasActiveLicense ? actionText : inactiveLicenseText, children: hasActiveLicense
109
109
  ? 'Active Company License'
110
110
  : 'No active Company License' }), jsx_runtime_1.jsx("span", { style: actionLabel, children: "Manage" })
@@ -25,6 +25,6 @@ const LoopToggle = ({ loop, setLoop }) => {
25
25
  const onClick = (0, react_1.useCallback)(() => {
26
26
  (0, exports.toggleLoop)(setLoop);
27
27
  }, [setLoop]);
28
- return (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: accessibilityLabel, shortcut: shortcutsDisabled ? null : shortcut, delay: 800, dismissOnClick: false, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { title: "", "aria-label": accessibilityLabel, "aria-keyshortcuts": shortcutsDisabled ? undefined : ariaShortcut || undefined, "aria-pressed": loop, onClick: onClick, style: buttonStyle, children: (color) => (jsx_runtime_1.jsx("svg", { viewBox: "0 0 512 512", style: { width: 18, height: 18 }, children: jsx_runtime_1.jsx("path", { fill: loop ? colors_1.BLUE : color, d: "M384 150.3V41.6l64 53.3v2l-64 53.3zM352 23.5V80H192C86 80 0 166 0 272c0 8.8 7.2 16 16 16s16-7.2 16-16c0-88.4 71.6-160 160-160h160v56.5c0 13 10.5 23.5 23.5 23.5 5.5 0 10.8-1.9 15-5.4l78-65c7.3-6.1 11.5-15.1 11.5-24.6v-2c0-9.5-4.2-18.5-11.5-24.6l-78-65c-4.2-3.5-9.5-5.4-15-5.4-13 0-23.5 10.5-23.5 23.5zM128 415.9v54.5l-64-53.3v-2l64-53.3v54.1zM160 400v-56.5c0-13-10.5-23.5-23.5-23.5-5.5 0-10.8 1.9-15 5.4l-78 65C36.2 396.5 32 405.5 32 415v2c0 9.5 4.2 18.5 11.5 24.6l78 65c4.2 3.5 9.5 5.4 15 5.4 13 0 23.5-10.5 23.5-23.5V432h160c106 0 192-86 192-192 0-8.8-7.2-16-16-16s-16 7.2-16 16c0 88.4-71.6 160-160 160H160z" }) })) }) }));
28
+ return (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: accessibilityLabel, shortcut: shortcutsDisabled ? null : shortcut, delay: 800, dismissOnClick: false, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": accessibilityLabel, "aria-keyshortcuts": shortcutsDisabled ? undefined : ariaShortcut || undefined, "aria-pressed": loop, onClick: onClick, style: buttonStyle, children: (color) => (jsx_runtime_1.jsx("svg", { viewBox: "0 0 512 512", style: { width: 18, height: 18 }, children: jsx_runtime_1.jsx("path", { fill: loop ? colors_1.BLUE : color, d: "M384 150.3V41.6l64 53.3v2l-64 53.3zM352 23.5V80H192C86 80 0 166 0 272c0 8.8 7.2 16 16 16s16-7.2 16-16c0-88.4 71.6-160 160-160h160v56.5c0 13 10.5 23.5 23.5 23.5 5.5 0 10.8-1.9 15-5.4l78-65c7.3-6.1 11.5-15.1 11.5-24.6v-2c0-9.5-4.2-18.5-11.5-24.6l-78-65c-4.2-3.5-9.5-5.4-15-5.4-13 0-23.5 10.5-23.5 23.5zM128 415.9v54.5l-64-53.3v-2l64-53.3v54.1zM160 400v-56.5c0-13-10.5-23.5-23.5-23.5-5.5 0-10.8 1.9-15 5.4l-78 65C36.2 396.5 32 405.5 32 415v2c0 9.5 4.2 18.5 11.5 24.6l78 65c4.2 3.5 9.5 5.4 15 5.4 13 0 23.5-10.5 23.5-23.5V432h160c106 0 192-86 192-192 0-8.8-7.2-16-16-16s-16 7.2-16 16c0 88.4-71.6 160-160 160H160z" }) })) }) }));
29
29
  };
30
30
  exports.LoopToggle = LoopToggle;
@@ -124,9 +124,11 @@ const MenuSubItem = ({ label, leaveLeftSpace, leftItem, onActionChosen, id, sele
124
124
  });
125
125
  }
126
126
  }, [selected]);
127
- return (jsx_runtime_1.jsx("div", { ref: ref, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, style: style, onPointerUp: onPointerUp, role: "button", className: is_menu_item_1.MENU_ITEM_CLASSNAME, children: jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [leaveLeftSpace ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
127
+ return (jsx_runtime_1.jsx("div", { ref: ref, "aria-label": typeof label === 'string' ? label : undefined, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, style: style, onPointerUp: onPointerUp, role: "button", className: is_menu_item_1.MENU_ITEM_CLASSNAME, children: jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [leaveLeftSpace ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
128
128
  jsx_runtime_1.jsx("div", { style: leftSpace, children: leftItem }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 })
129
- ] })) : null, jsx_runtime_1.jsx("div", { style: labelStyle, title: typeof label === 'string' ? label : undefined, children: label }), ' ', jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 }), subMenu ? jsx_runtime_1.jsx(caret_1.CaretRight, {}) : null, keyHint && !(0, use_keybinding_1.areKeyboardShortcutsDisabled)() ? (jsx_runtime_1.jsx("span", { style: keyHintCss, children: keyHint })) : null, portalStyle && subMenu
129
+ ] })) : null, jsx_runtime_1.jsx("div", { style: labelStyle, children: label }),
130
+ " ",
131
+ jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 }), subMenu ? jsx_runtime_1.jsx(caret_1.CaretRight, {}) : null, keyHint && !(0, use_keybinding_1.areKeyboardShortcutsDisabled)() ? (jsx_runtime_1.jsx("span", { style: keyHintCss, children: keyHint })) : null, portalStyle && subMenu
130
132
  ? react_dom_1.default.createPortal(jsx_runtime_1.jsx(SubMenu_1.SubMenuComponent, { onQuitFullMenu: onQuitMenu, subMenu: subMenu, onQuitSubMenu: onQuitSubmenu, portalStyle: portalStyle, subMenuActivated: subMenuActivated }), (0, portals_1.getPortal)(currentZIndex))
131
133
  : null] }) }));
132
134
  };
@@ -53,7 +53,7 @@ const MenuBuildIndicator = ({ mobileLayout }) => {
53
53
  window.remotion_finishedBuilding = undefined;
54
54
  };
55
55
  }, []);
56
- return (jsx_runtime_1.jsxs("div", { style: cwd, title: window.remotion_cwd, children: [
56
+ return (jsx_runtime_1.jsxs("div", { role: "group", style: cwd, "aria-label": window.remotion_cwd, children: [
57
57
  jsx_runtime_1.jsx(layout_1.Spacing, { x: mobileLayout ? 0.5 : 2 }), window.remotion_projectName, jsx_runtime_1.jsx(MenuCompositionName_1.MenuCompositionName, {}), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("div", { style: openInEditor, children: jsx_runtime_1.jsx(InspectorOpenInEditor_1.InspectorOpenInEditor, { location: folderLocation, locationType: "folder", showTooltips: true }) }), mobileLayout ? null : jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), mobileLayout ? (isBuilding ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
58
58
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx("div", { style: spinner, children: jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: spinnerSize, color: colors_1.WHITE_ALPHA_80 }) })
59
59
  ] })) : null) : isBuilding ? (jsx_runtime_1.jsx("div", { style: spinner, children: jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: spinnerSize, color: colors_1.WHITE_ALPHA_80 }) })) : (jsx_runtime_1.jsx("div", { style: noSpinner }))] }));
@@ -90,6 +90,6 @@ const MenuCompositionName = () => {
90
90
  }
91
91
  const name = (_b = composition === null || composition === void 0 ? void 0 : composition.id) !== null && _b !== void 0 ? _b : asset;
92
92
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
93
- jsx_runtime_1.jsx("span", { style: slashStyle, children: "/" }), composition ? (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { getItems: getContextMenuItems, style: contextMenuStyle, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { "aria-label": "Open composition menu", className: hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME, getItems: getContextMenuItems, hoveredColor: colors_1.WHITE, renderAction: () => composition.id, style: compositionNameStyle, title: "Open composition menu", unhoveredColor: colors_1.WHITE_ALPHA_80, variant: null }) })) : (jsx_runtime_1.jsx("span", { style: assetNameStyle, children: name }))] }));
93
+ jsx_runtime_1.jsx("span", { style: slashStyle, children: "/" }), composition ? (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { getItems: getContextMenuItems, style: contextMenuStyle, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { "aria-label": "Open composition menu", className: hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME, getItems: getContextMenuItems, hoveredColor: colors_1.WHITE, renderAction: () => composition.id, style: compositionNameStyle, unhoveredColor: colors_1.WHITE_ALPHA_80, variant: null }) })) : (jsx_runtime_1.jsx("span", { style: assetNameStyle, children: name }))] }));
94
94
  };
95
95
  exports.MenuCompositionName = MenuCompositionName;
@@ -194,7 +194,7 @@ const ModelManager = ({ ariaLabel, availableModels, description, indent, isModel
194
194
  ? actionState.message
195
195
  : (0, studio_shared_1.formatBytes)(model.webGpuDownloadSize);
196
196
  return (jsx_runtime_1.jsxs("div", { role: "listitem", style: modelRow, children: [
197
- jsx_runtime_1.jsx(models_1.ModelsIcon, { "aria-hidden": true, color: colors_1.LIGHT_TEXT, style: modelIcon }), jsx_runtime_1.jsx("span", { style: modelName, children: model.name }), jsx_runtime_1.jsx("span", { style: status, title: modelStatus, children: modelStatus }), cached ? (jsx_runtime_1.jsx(check_circle_filled_1.CheckCircleFilled, { "aria-hidden": true, style: { ...statusIcon, fill: colors_1.BLUE } })) : null, processingThisModel ? (jsx_runtime_1.jsx("span", { style: actionSlot, children: jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: 14 }) })) : cached ? (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Uninstall", shortcut: null, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { "aria-label": `Remove ${model.name}`, title: "", disabled: actionInProgress, onClick: () => remove(model.name), renderAction: renderRemoveIcon, variant: null }) })) : (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Install", shortcut: null, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { "aria-label": `Download ${model.name}`, title: "", disabled: cachedModels === null || actionInProgress, onClick: () => downloadModel(model.name), renderAction: renderDownloadIcon, variant: null }) }))] }, model.name));
197
+ jsx_runtime_1.jsx(models_1.ModelsIcon, { "aria-hidden": true, color: colors_1.LIGHT_TEXT, style: modelIcon }), jsx_runtime_1.jsx("span", { style: modelName, children: model.name }), jsx_runtime_1.jsx("span", { role: "group", style: status, "aria-label": modelStatus, children: modelStatus }), cached ? (jsx_runtime_1.jsx(check_circle_filled_1.CheckCircleFilled, { "aria-hidden": true, style: { ...statusIcon, fill: colors_1.BLUE } })) : null, processingThisModel ? (jsx_runtime_1.jsx("span", { style: actionSlot, children: jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: 14 }) })) : cached ? (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Uninstall", shortcut: null, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { "aria-label": `Remove ${model.name}`, disabled: actionInProgress, onClick: () => remove(model.name), renderAction: renderRemoveIcon, variant: null }) })) : (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Install", shortcut: null, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { "aria-label": `Download ${model.name}`, disabled: cachedModels === null || actionInProgress, onClick: () => downloadModel(model.name), renderAction: renderDownloadIcon, variant: null }) }))] }, model.name));
198
198
  }) })
199
199
  ] }) }));
200
200
  };
@@ -26,6 +26,6 @@ const MuteToggle = ({ muted, setMuted }) => {
26
26
  (0, exports.toggleMute)(setMuted);
27
27
  }, [setMuted]);
28
28
  const accessibilityLabel = muted ? 'Unmute video' : 'Mute video';
29
- return (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Mute", shortcut: shortcutsDisabled ? null : shortcut, delay: 800, dismissOnClick: false, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { title: "", "aria-label": accessibilityLabel, "aria-keyshortcuts": shortcutsDisabled ? undefined : ariaShortcut || undefined, onClick: onClick, style: buttonStyle, children: (color) => muted ? (jsx_runtime_1.jsx(media_volume_1.VolumeOffIcon, { color: colors_1.BLUE })) : (jsx_runtime_1.jsx(media_volume_1.VolumeOnIcon, { color: color })) }) }));
29
+ return (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Mute", shortcut: shortcutsDisabled ? null : shortcut, delay: 800, dismissOnClick: false, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": accessibilityLabel, "aria-keyshortcuts": shortcutsDisabled ? undefined : ariaShortcut || undefined, onClick: onClick, style: buttonStyle, children: (color) => muted ? (jsx_runtime_1.jsx(media_volume_1.VolumeOffIcon, { color: colors_1.BLUE })) : (jsx_runtime_1.jsx(media_volume_1.VolumeOnIcon, { color: color })) }) }));
30
30
  };
31
31
  exports.MuteToggle = MuteToggle;
@@ -31,7 +31,7 @@ export declare const Combobox: React.FC<{
31
31
  readonly values: ComboboxValue[];
32
32
  readonly selectedId: string | number;
33
33
  readonly style?: React.CSSProperties;
34
- readonly title: string;
34
+ readonly 'aria-label': string;
35
35
  readonly size?: ComboboxSize;
36
36
  readonly unhoveredIconColor?: string;
37
37
  }>;
@@ -61,7 +61,7 @@ const smallLabel = {
61
61
  fontSize: 11,
62
62
  lineHeight: '12px',
63
63
  };
64
- const Combobox = ({ values, selectedId, style: customStyle, title, size: controlSize = 'default', unhoveredIconColor = colors_1.LIGHT_TEXT, }) => {
64
+ const Combobox = ({ values, selectedId, style: customStyle, 'aria-label': ariaLabel, size: controlSize = 'default', unhoveredIconColor = colors_1.LIGHT_TEXT, }) => {
65
65
  const [hovered, setIsHovered] = (0, react_1.useState)(false);
66
66
  const [opened, setOpened] = (0, react_1.useState)(false);
67
67
  const ref = (0, react_1.useRef)(null);
@@ -206,7 +206,7 @@ const Combobox = ({ values, selectedId, style: customStyle, title, size: control
206
206
  ? compactLabel
207
207
  : label;
208
208
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
209
- jsx_runtime_1.jsxs("button", { ref: ref, title: title, tabIndex: tabIndex, type: "button", style: style, className: is_menu_item_1.MENU_INITIATOR_CLASSNAME, children: [selected ? (jsx_runtime_1.jsx("div", { title: typeof selected.label === 'string' ? selected.label : undefined, style: selectedLabelStyle, children: selected === null || selected === void 0 ? void 0 : selected.label })) : null, jsx_runtime_1.jsx(layout_1.Spacing, { x: controlSize === 'default' ? 1 : 0.5 }), ' ', jsx_runtime_1.jsx(caret_1.CaretDown, { color: hovered || opened ? colors_1.WHITE : unhoveredIconColor, small: controlSize === 'small' })
209
+ jsx_runtime_1.jsxs("button", { ref: ref, "aria-label": ariaLabel, tabIndex: tabIndex, type: "button", style: style, className: is_menu_item_1.MENU_INITIATOR_CLASSNAME, children: [selected ? (jsx_runtime_1.jsx("div", { role: "group", "aria-label": typeof selected.label === 'string' ? selected.label : undefined, style: selectedLabelStyle, children: selected === null || selected === void 0 ? void 0 : selected.label })) : null, jsx_runtime_1.jsx(layout_1.Spacing, { x: controlSize === 'default' ? 1 : 0.5 }), ' ', jsx_runtime_1.jsx(caret_1.CaretDown, { color: hovered || opened ? colors_1.WHITE : unhoveredIconColor, small: controlSize === 'small' })
210
210
  ] }), portalStyle
211
211
  ? react_dom_1.default.createPortal(jsx_runtime_1.jsx("div", { style: styles_1.fullScreenOverlay, onPointerDown: onOverlayPointerDown, children: jsx_runtime_1.jsx("div", { style: styles_1.outerPortal, className: "css-reset", children: jsx_runtime_1.jsx(z_index_1.HigherZIndex, { onOutsideClick: onHide, onEscape: onHide, children: jsx_runtime_1.jsx("div", { style: portalStyle, children: jsx_runtime_1.jsx(MenuContent_1.MenuContent, { onNextMenu: noop_1.noop, onPreviousMenu: noop_1.noop, values: values, onHide: onHide, leaveLeftSpace: true, preselectIndex: values.findIndex((v) => selected && v.id === selected.id), topItemCanBeUnselected: false, fixedHeight: derivedMaxHeight }) }) }) }) }), (0, portals_1.getPortal)(currentZIndex))
212
212
  : null] }));
@@ -183,7 +183,7 @@ const DuplicateCompositionLoaded = ({ initialType }) => {
183
183
  // We allow converting from a composition to a still, but
184
184
  // not the other way around
185
185
  jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
186
- jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Type" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { title: "Type of composition", style: comboBoxStyle, values: typeValues, selectedId: type }) })
186
+ jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Type" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { "aria-label": "Type of composition", style: comboBoxStyle, values: typeValues, selectedId: type }) })
187
187
  ] })) : null, jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
188
188
  jsx_runtime_1.jsx("div", { style: layout_2.label, children: "ID" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsxs(InputAndValidationContainer_1.InputAndValidationContainer, { children: [
189
189
  jsx_runtime_1.jsx(RemInput_1.RemotionInput, { value: newId, onChange: onNameChange, type: "text", autoFocus: true, placeholder: "Composition ID", status: "ok", rightAlign: true }), compNameErrMessage ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
@@ -55,7 +55,7 @@ export declare const deriveInputDraggerValueDiff: ({ dragSensitivity, step, xDis
55
55
  readonly step: number;
56
56
  readonly xDistance: number;
57
57
  }) => number;
58
- export declare const InputDragger: React.ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & {
58
+ export declare const InputDragger: React.ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "title"> & {
59
59
  readonly onValueChange: (newVal: number, source: "drag" | "input") => void;
60
60
  readonly onValueChangeEnd?: ((newVal: number, source: "drag" | "input") => void) | undefined;
61
61
  readonly onTextChange: (newVal: string) => void;
@@ -548,7 +548,7 @@ const InputDraggerForwardRefFn = ({ onValueChange, onValueChangeEnd, min: _min,
548
548
  }
549
549
  : inputStyle, type: "text" }) }));
550
550
  }
551
- return (jsx_runtime_1.jsxs("button", { ref: ref, type: "button", "aria-label": props['aria-label'], title: props.title, className: '__remotion_input_dragger', style: buttonStyle
551
+ return (jsx_runtime_1.jsxs("button", { ref: ref, type: "button", "aria-label": props['aria-label'], className: '__remotion_input_dragger', style: buttonStyle
552
552
  ? {
553
553
  ...(small
554
554
  ? compactInputDraggerContainerStyle
@@ -206,7 +206,7 @@ const NewCompositionFields = ({ compositionId, heightValidationMessage, inputRef
206
206
  }, [setValues]);
207
207
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
208
208
  jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
209
- jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Folder" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: folderValues, selectedId: selectedFolderId, style: folderSelectStyle, title: "Folder" }) })
209
+ jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Folder" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: folderValues, selectedId: selectedFolderId, style: folderSelectStyle, "aria-label": "Folder" }) })
210
210
  ] }), jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
211
211
  jsx_runtime_1.jsx("div", { style: layout_2.label, children: "ID" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsxs(InputAndValidationContainer_1.InputAndValidationContainer, { children: [
212
212
  jsx_runtime_1.jsx(RemInput_1.RemotionInput, { ref: inputRef, value: values.id, onChange: onNameChange, type: "text", autoFocus: true, placeholder: "Composition ID", status: "ok", rightAlign: true }), jsx_runtime_1.jsx(SlugPreview_1.SlugPreview, { action: "create", currentName: null, input: values.id, slug: compositionId }), nameValidationMessage ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
@@ -32,6 +32,6 @@ const OpenIssueButton = ({ link }) => {
32
32
  const onPointerLeave = (0, react_1.useCallback)(() => {
33
33
  setHovered(false);
34
34
  }, []);
35
- return (jsx_runtime_1.jsx("button", { title: buttonTooltip, type: "button", onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, style: buttonStyle, onClick: handleClick, children: openInEditorSvg }));
35
+ return (jsx_runtime_1.jsx("button", { "aria-label": buttonTooltip, type: "button", onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, style: buttonStyle, onClick: handleClick, children: openInEditorSvg }));
36
36
  };
37
37
  exports.OpenIssueButton = OpenIssueButton;
@@ -21,7 +21,7 @@ const OutlineToggle = () => {
21
21
  const accessibilityLabel = editorShowOutlines
22
22
  ? 'Hide outlines'
23
23
  : 'Show outlines';
24
- return (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Outlines", shortcut: shortcutsDisabled ? null : shortcut, delay: 800, dismissOnClick: false, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { title: "", "aria-label": accessibilityLabel, "aria-keyshortcuts": shortcutsDisabled ? undefined : ariaShortcut || undefined, "aria-pressed": editorShowOutlines, onClick: onClick, style: buttonStyle, children: (color) => {
24
+ return (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Outlines", shortcut: shortcutsDisabled ? null : shortcut, delay: 800, dismissOnClick: false, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": accessibilityLabel, "aria-keyshortcuts": shortcutsDisabled ? undefined : ariaShortcut || undefined, "aria-pressed": editorShowOutlines, onClick: onClick, style: buttonStyle, children: (color) => {
25
25
  const iconColor = editorShowOutlines ? colors_1.BLUE : color;
26
26
  return (jsx_runtime_1.jsxs("svg", { style: { width: 17, height: 17 }, viewBox: "0 0 512 512", fill: "none", "aria-hidden": "true", focusable: "false", children: [
27
27
  jsx_runtime_1.jsx("path", { d: "M64 64H448V448H64V64Z", stroke: iconColor, strokeWidth: "36" }), [
@@ -235,6 +235,6 @@ const PlayPauseInner = ({ playbackRate, loop, bufferStateDelayInMilliseconds, mu
235
235
  };
236
236
  }, [bufferStateDelayInMilliseconds, emitter]);
237
237
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
238
- jsx_runtime_1.jsx(PlaybackManager, { loop: loop, playbackRate: playbackRate, muted: muted, inFrame: inFrame, outFrame: outFrame, getCurrentFrame: getCurrentFrame }), hideNavigationControls ? null : (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Go to beginning", shortcut: jumpToBeginningShortcut, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": "Go to beginning", "aria-keyshortcuts": jumpToBeginningAriaShortcut || undefined, title: "", disabled: !videoConfig, onClick: jumpToStart, children: (color) => jsx_runtime_1.jsx(jump_to_start_1.JumpToStart, { style: backStyle, color: color }) }) })), hideNavigationControls ? null : (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Previous frame", shortcut: "\u2190", delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": "Go back 1 frame", "aria-keyshortcuts": "ArrowLeft", title: "", disabled: !videoConfig, onClick: oneFrameBack, children: (color) => jsx_runtime_1.jsx(step_back_1.StepBack, { style: forwardBackStyle, color: color }) }) })), jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: playing ? 'Pause' : 'Play', shortcut: playPauseShortcut, delay: 800, dismissOnClick: false, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": playing ? 'Pause' : 'Play', "aria-keyshortcuts": playPauseAriaShortcut || undefined, title: "", onClick: playing ? pause : play, disabled: !videoConfig, children: (color) => playing ? (showBufferIndicator ? (jsx_runtime_1.jsx(player_1.PlayerInternals.BufferingIndicator, { type: "studio", color: color })) : (jsx_runtime_1.jsx(pause_1.Pause, { style: iconButton, color: color }))) : (jsx_runtime_1.jsx(play_1.Play, { style: iconButton, color: color })) }) }), hideNavigationControls ? null : (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Next frame", shortcut: "\u2192", delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": "Go forward 1 frame", "aria-keyshortcuts": "ArrowRight", title: "", disabled: !videoConfig, onClick: oneFrameForward, children: (color) => jsx_runtime_1.jsx(step_forward_1.StepForward, { style: forwardBackStyle, color: color }) }) }))] }));
238
+ jsx_runtime_1.jsx(PlaybackManager, { loop: loop, playbackRate: playbackRate, muted: muted, inFrame: inFrame, outFrame: outFrame, getCurrentFrame: getCurrentFrame }), hideNavigationControls ? null : (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Go to beginning", shortcut: jumpToBeginningShortcut, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": "Go to beginning", "aria-keyshortcuts": jumpToBeginningAriaShortcut || undefined, disabled: !videoConfig, onClick: jumpToStart, children: (color) => jsx_runtime_1.jsx(jump_to_start_1.JumpToStart, { style: backStyle, color: color }) }) })), hideNavigationControls ? null : (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Previous frame", shortcut: "\u2190", delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": "Go back 1 frame", "aria-keyshortcuts": "ArrowLeft", disabled: !videoConfig, onClick: oneFrameBack, children: (color) => jsx_runtime_1.jsx(step_back_1.StepBack, { style: forwardBackStyle, color: color }) }) })), jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: playing ? 'Pause' : 'Play', shortcut: playPauseShortcut, delay: 800, dismissOnClick: false, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": playing ? 'Pause' : 'Play', "aria-keyshortcuts": playPauseAriaShortcut || undefined, onClick: playing ? pause : play, disabled: !videoConfig, children: (color) => playing ? (showBufferIndicator ? (jsx_runtime_1.jsx(player_1.PlayerInternals.BufferingIndicator, { type: "studio", color: color })) : (jsx_runtime_1.jsx(pause_1.Pause, { style: iconButton, color: color }))) : (jsx_runtime_1.jsx(play_1.Play, { style: iconButton, color: color })) }) }), hideNavigationControls ? null : (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Next frame", shortcut: "\u2192", delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(ControlButton_1.ControlButton, { "aria-label": "Go forward 1 frame", "aria-keyshortcuts": "ArrowRight", disabled: !videoConfig, onClick: oneFrameForward, children: (color) => jsx_runtime_1.jsx(step_forward_1.StepForward, { style: forwardBackStyle, color: color }) }) }))] }));
239
239
  };
240
240
  exports.PlayPause = react_1.default.memo(PlayPauseInner);
@@ -57,6 +57,6 @@ const PlaybackRateSelector = ({ playbackRate, setPlaybackRate, }) => {
57
57
  if (isStill || canvasContent === null) {
58
58
  return null;
59
59
  }
60
- return (jsx_runtime_1.jsx(TimelineCombobox_1.TimelineCombobox, { title: accessibilityLabel, tooltipDelay: 800, labelWidth: 30, selectedId: selectedId, values: items, renderLeftItem: (color) => (jsx_runtime_1.jsx(playback_rate_1.PlaybackRateIcon, { color: color, playbackRate: playbackRate })), unhoveredIconColor: colors_1.WHITE_ALPHA_80 }));
60
+ return (jsx_runtime_1.jsx(TimelineCombobox_1.TimelineCombobox, { "aria-label": accessibilityLabel, tooltipDelay: 800, labelWidth: 30, selectedId: selectedId, values: items, renderLeftItem: (color) => (jsx_runtime_1.jsx(playback_rate_1.PlaybackRateIcon, { color: color, playbackRate: playbackRate })), unhoveredIconColor: colors_1.WHITE_ALPHA_80 }));
61
61
  };
62
62
  exports.PlaybackRateSelector = PlaybackRateSelector;
@@ -48,9 +48,8 @@ const containerStyle = (options) => {
48
48
  return {
49
49
  transform: `scale(${options.scale})`,
50
50
  // Keep the scaled composition on its own layer so the checkerboard does
51
- // not bleed through its edges at fractional preview scales. Using
52
- // 'transform' caches the rasterization scale and blurs content after zooming.
53
- willChange: 'opacity',
51
+ // not bleed through its edges at fractional preview scales.
52
+ willChange: 'transform',
54
53
  marginLeft: options.xCorrection,
55
54
  marginTop: options.yCorrection,
56
55
  width: options.width,
@@ -194,6 +194,6 @@ const PreviewToolbarOverflowButton = ({ showFullscreen, showPlaybackRate, showLo
194
194
  if (values.length === 0) {
195
195
  return null;
196
196
  }
197
- return (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "View options", shortcut: null, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { variant: null, renderAction: renderAction, values: values, title: "More actions", unhoveredColor: colors_1.WHITE_ALPHA_80 }) }));
197
+ return (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "View options", shortcut: null, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { variant: null, renderAction: renderAction, values: values, "aria-label": "More actions", unhoveredColor: colors_1.WHITE_ALPHA_80 }) }));
198
198
  };
199
199
  exports.PreviewToolbarOverflowButton = PreviewToolbarOverflowButton;
@@ -65,7 +65,7 @@ const ExplorerQuickSwitcherTrigger = ({ mode, showShortcut, tabIndex, getActions
65
65
  return (jsx_runtime_1.jsxs("div", { style: quickSwitcherArea, children: [
66
66
  jsx_runtime_1.jsxs("button", { type: "button", style: quickSwitcherTrigger, onClick: openQuickSwitcher, tabIndex: tabIndex, className: `${hoverable_1.HOVERABLE_CLASS_NAME} ${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME}`, children: ["Search...", showShortcut &&
67
67
  !(0, use_keybinding_1.areKeyboardShortcutsDisabled)() &&
68
- quickSwitcherShortcut !== '' ? (jsx_runtime_1.jsx("span", { style: shortcutLabel, children: quickSwitcherShortcut })) : null] }), jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { variant: null, title: moreActionsTitle, renderAction: renderMoreActions, getItems: getActions, className: hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME })
68
+ quickSwitcherShortcut !== '' ? (jsx_runtime_1.jsx("span", { style: shortcutLabel, children: quickSwitcherShortcut })) : null] }), jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { variant: null, "aria-label": moreActionsTitle, renderAction: renderMoreActions, getItems: getActions, className: hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME })
69
69
  ] }));
70
70
  };
71
71
  exports.ExplorerQuickSwitcherTrigger = ExplorerQuickSwitcherTrigger;
@@ -379,7 +379,7 @@ const RenderButtonInner = ({ readOnlyStudio, size: controlSize = 'default', narr
379
379
  const segments = (0, react_1.useMemo)(() => {
380
380
  return [
381
381
  {
382
- ariaLabel: renderLabel,
382
+ ariaLabel: showRenderLabel ? tooltip : renderLabel,
383
383
  buttonId: 'render-modal-button',
384
384
  disabled: false,
385
385
  idleColor: colors_1.WHITE_ALPHA_80,
@@ -395,7 +395,6 @@ const RenderButtonInner = ({ readOnlyStudio, size: controlSize = 'default', narr
395
395
  style: controlSize === 'compact'
396
396
  ? compactMainSegmentStyle
397
397
  : defaultMainSegmentStyle,
398
- title: showRenderLabel ? tooltip : null,
399
398
  tooltipLabel: showRenderLabel ? null : renderLabel,
400
399
  type: 'action',
401
400
  },
@@ -412,7 +411,6 @@ const RenderButtonInner = ({ readOnlyStudio, size: controlSize = 'default', narr
412
411
  style: controlSize === 'compact'
413
412
  ? compactDropdownSegmentStyle
414
413
  : defaultDropdownSegmentStyle,
415
- title: 'Select render type',
416
414
  tooltipLabel: null,
417
415
  type: 'menu',
418
416
  values: dropdownValues,
@@ -432,7 +430,7 @@ const RenderButtonInner = ({ readOnlyStudio, size: controlSize = 'default', narr
432
430
  return null;
433
431
  }
434
432
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
435
- jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-server", disabled: !canServerRender, onClick: () => openServerRenderModal(false), type: "button" }), ' ', jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-client", onClick: openClientRenderModal, type: "button" }), jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-command", onClick: () => openServerRenderModal(true), type: "button" }), jsx_runtime_1.jsx(SegmentedButton_1.SegmentedButton, { segments: segments, style: segmentedButtonStyle, title: showRenderLabel ? tooltip : null })
433
+ jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-server", disabled: !canServerRender, onClick: () => openServerRenderModal(false), type: "button" }), ' ', jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-client", onClick: openClientRenderModal, type: "button" }), jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-command", onClick: () => openServerRenderModal(true), type: "button" }), jsx_runtime_1.jsx(SegmentedButton_1.SegmentedButton, { segments: segments, style: segmentedButtonStyle })
436
434
  ] }));
437
435
  };
438
436
  exports.RenderButton = react_1.default.memo(RenderButtonInner);
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  export declare const InfoBubble: React.FC<{
3
- readonly title: string;
3
+ readonly 'aria-label': string;
4
4
  readonly children: React.ReactNode;
5
5
  readonly horizontalAlignment?: 'left' | 'right';
6
6
  }>;
@@ -23,7 +23,7 @@ const container = {
23
23
  fontSize: 14,
24
24
  verticalAlign: 'text-bottom',
25
25
  };
26
- const InfoBubble = ({ title, children, horizontalAlignment = 'left' }) => {
26
+ const InfoBubble = ({ 'aria-label': ariaLabel, children, horizontalAlignment = 'left' }) => {
27
27
  const [hovered, setIsHovered] = (0, react_1.useState)(false);
28
28
  const [opened, setOpened] = (0, react_1.useState)(false);
29
29
  const ref = (0, react_1.useRef)(null);
@@ -113,7 +113,7 @@ const InfoBubble = ({ title, children, horizontalAlignment = 'left' }) => {
113
113
  };
114
114
  }, []);
115
115
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
116
- jsx_runtime_1.jsx("button", { ref: ref, tabIndex: tabIndex, style: style, title: title, type: "button", children: jsx_runtime_1.jsx("svg", { style: icon, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: hovered ? colors_1.WHITE : colors_1.LIGHT_TEXT, d: "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V248c0-13.3-10.7-24-24-24H216c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v64H216zm40-144a32 32 0 1 0 0-64 32 32 0 1 0 0 64z" }) }) }), portalStyle
116
+ jsx_runtime_1.jsx("button", { ref: ref, tabIndex: tabIndex, style: style, "aria-label": ariaLabel, type: "button", children: jsx_runtime_1.jsx("svg", { style: icon, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: hovered ? colors_1.WHITE : colors_1.LIGHT_TEXT, d: "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V248c0-13.3-10.7-24-24-24H216c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v64H216zm40-144a32 32 0 1 0 0-64 32 32 0 1 0 0 64z" }) }) }), portalStyle
117
117
  ? react_dom_1.default.createPortal(jsx_runtime_1.jsx("div", { style: styles_1.outerPortal, className: "css-reset", children: jsx_runtime_1.jsx(z_index_1.HigherZIndex, { onOutsideClick: onHide, onEscape: onHide, children: jsx_runtime_1.jsx("div", { style: portalStyle, children: jsx_runtime_1.jsx(InfoTooltip_1.InfoTooltip, { backgroundColor: colors_1.INPUT_BACKGROUND, arrowDirection: layout, horizontalAlignment: horizontalAlignment, children: children }) }) }) }), (0, portals_1.getPortal)(currentZIndex))
118
118
  : null] }));
119
119
  };
@@ -24,7 +24,7 @@ const NumberSetting = ({ name, value, step, hint, onValueChanged, max, min, form
24
24
  }, [onValueChanged]);
25
25
  return (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
26
26
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: [name, hint ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
27
- jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), typeof hint === 'string' ? (jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: hint })) : (jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { title: hint.title, children: hint.content }))] })) : null] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(RemInput_1.RightAlignInput, { children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { value: value, name: name.toLowerCase(), "aria-label": `${name}: ${formatter ? formatter(value) : value}`, onTextChange: onTextChanged, onValueChange: onValueChange, step: step, placeholder: [min, max]
27
+ jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), typeof hint === 'string' ? (jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: hint })) : (jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { "aria-label": hint.title, children: hint.content }))] })) : null] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(RemInput_1.RightAlignInput, { children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { value: value, name: name.toLowerCase(), "aria-label": `${name}: ${formatter ? formatter(value) : value}`, onTextChange: onTextChanged, onValueChange: onValueChange, step: step, placeholder: [min, max]
28
28
  .map((f) => (f !== null && f !== undefined ? f : ''))
29
29
  .join('-'), min: min, max: max, formatter: formatter, status: "ok", rightAlign: true }) }) })
30
30
  ] }));
@@ -7,7 +7,7 @@ const InfoBubble_1 = require("./InfoBubble");
7
7
  const OptionExplainer_1 = require("./OptionExplainer");
8
8
  const OptionExplainerBubble = ({ id, extraInfoRows, showApiOption, showCliFlag }) => {
9
9
  const option = client_1.BrowserSafeApis.options[id];
10
- return (jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { title: "Learn more about this option", children: jsx_runtime_1.jsx(OptionExplainer_1.OptionExplainer, { extraInfoRows: extraInfoRows, option: option, showApiOption: showApiOption, showCliFlag: showCliFlag }) }));
10
+ return (jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { "aria-label": "Learn more about this option", children: jsx_runtime_1.jsx(OptionExplainer_1.OptionExplainer, { extraInfoRows: extraInfoRows, option: option, showApiOption: showApiOption, showCliFlag: showCliFlag }) }));
11
11
  };
12
12
  exports.OptionExplainerBubble = OptionExplainerBubble;
13
13
  const WebRendererOptionExplainerBubble = ({ id, apiName }) => {
@@ -21,6 +21,6 @@ const WebRendererCustomOptionExplainerBubble = ({ apiName, description, docLink,
21
21
  name,
22
22
  ssrName: null,
23
23
  };
24
- return (jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { title: "Learn more about this option", children: jsx_runtime_1.jsx(OptionExplainer_1.OptionExplainer, { extraInfoRows: [{ label: 'API option', value: apiName }], option: option, showApiOption: false, showCliFlag: false }) }));
24
+ return (jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { "aria-label": "Learn more about this option", children: jsx_runtime_1.jsx(OptionExplainer_1.OptionExplainer, { extraInfoRows: [{ label: 'API option', value: apiName }], option: option, showApiOption: false, showCliFlag: false }) }));
25
25
  };
26
26
  exports.WebRendererCustomOptionExplainerBubble = WebRendererCustomOptionExplainerBubble;
@@ -179,11 +179,11 @@ const RenderModalAdvanced = ({ renderMode, maxConcurrency, minConcurrency, setCo
179
179
  ] }), jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
180
180
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Chrome Mode ",
181
181
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "chromeModeOption" })
182
- ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: chromeModeOptions, selectedId: chromeModeOption, title: "Chrome mode" }) })
182
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: chromeModeOptions, selectedId: chromeModeOption, "aria-label": "Chrome mode" }) })
183
183
  ] }), jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
184
184
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["OpenGL render backend ",
185
185
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "glOption" })
186
- ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: openGlOptions, selectedId: openGlOption, title: "OpenGl option" }) })
186
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: openGlOptions, selectedId: openGlOption, "aria-label": "OpenGl option" }) })
187
187
  ] }), jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
188
188
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Multi-process Chrome on Linux",
189
189
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "enableMultiprocessOnLinuxOption" })
@@ -69,7 +69,7 @@ const RenderModalAudio = ({ muted, setMuted, renderMode, enforceAudioTrack, setE
69
69
  !muted ? (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
70
70
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Audio Codec ",
71
71
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "audioCodecOption" })
72
- ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: audioCodecOptions(codec), selectedId: audioCodec, title: "AudioCodec" }) })
72
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: audioCodecOptions(codec), selectedId: audioCodec, "aria-label": "AudioCodec" }) })
73
73
  ] })) : null, (renderMode === 'video' || renderMode === 'audio') && !muted && (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
74
74
  jsx_runtime_1.jsx(EnforceAudioTrackSetting_1.EnforceAudioTrackSetting, { muted: muted, enforceAudioTrack: enforceAudioTrack, setEnforceAudioTrack: setEnforceAudioTrackState }), jsx_runtime_1.jsx(RenderModalHr_1.RenderModalHr, {})
75
75
  ] })), renderMode === 'video' && !muted ? (jsx_runtime_1.jsx(SeparateAudioOption_1.SeparateAudioOption, { separateAudioTo: separateAudioTo, setSeparateAudioTo: setSeparateAudioTo, audioCodec: audioCodec, outName: outName })) : null, audioCodec === 'aac' && !muted ? (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
@@ -86,7 +86,7 @@ const RenderModalAudio = ({ muted, setMuted, renderMode, enforceAudioTrack, setE
86
86
  ] })) : null, renderMode !== 'still' && !muted ? (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
87
87
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Sample Rate ",
88
88
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "sampleRateOption" })
89
- ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: sampleRateOptions, selectedId: String(sampleRate), title: "Sample Rate" }) })
89
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: sampleRateOptions, selectedId: String(sampleRate), "aria-label": "Sample Rate" }) })
90
90
  ] })) : null] }));
91
91
  };
92
92
  exports.RenderModalAudio = RenderModalAudio;
@@ -96,15 +96,15 @@ const RenderModalBasic = ({ renderMode, imageFormatOptions, outName, codec, setV
96
96
  ] })) : (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
97
97
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Codec",
98
98
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "videoCodecOption" })
99
- ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: videoCodecOptions, selectedId: codec, title: "Codec" }) })
99
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: videoCodecOptions, selectedId: codec, "aria-label": "Codec" }) })
100
100
  ] })), renderMode === 'still' && resolvedComposition.durationInFrames > 1 ? (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
101
101
  jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Frame" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(RemInput_1.RightAlignInput, { children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { value: frame, onTextChange: onFrameChanged, placeholder: `0-${resolvedComposition.durationInFrames - 1}`, onValueChange: onFrameSetDirectly, name: "frame", step: 1, min: 0, status: "ok", max: resolvedComposition.durationInFrames - 1, rightAlign: true }) }) })
102
102
  ] })) : null, renderMode === 'video' && codec === 'prores' ? (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
103
- jsx_runtime_1.jsx("div", { style: layout_2.label, children: "ProRes profile" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { title: 'proResProfile', selectedId: proResProfile, values: proResProfileOptions }) })
103
+ jsx_runtime_1.jsx("div", { style: layout_2.label, children: "ProRes profile" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { "aria-label": 'proResProfile', selectedId: proResProfile, values: proResProfileOptions }) })
104
104
  ] })) : null, renderMode === 'still' ? null : (jsx_runtime_1.jsx(FrameRangeSetting_1.FrameRangeSetting, { durationInFrames: resolvedComposition.durationInFrames, endFrame: endFrame, setEndFrame: setEndFrame, setStartFrame: setStartFrame, startFrame: startFrame })), showOutputName ? (jsx_runtime_1.jsx(RenderModalOutputName_1.RenderModalOutputName, { ariaLabel: null, existingOutputPath: null, existence: existence, inputStyle: layout_2.input, outName: outName, onValueChange: onValueChange, validationMessage: validationMessage, label: renderMode === 'sequence' ? 'Folder name' : 'Output name' })) : null, jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
105
105
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Log Level ",
106
106
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "logLevelOption" })
107
- ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: logLevelOptions, selectedId: logLevel, title: "Log Level" }) })
107
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: logLevelOptions, selectedId: logLevel, "aria-label": "Log Level" }) })
108
108
  ] })
109
109
  ] }));
110
110
  };
@@ -139,15 +139,15 @@ const RenderModalEncoding = ({ renderMode, codec, qualityControlType, setQuality
139
139
  ] }), encodingMaxRate === null ? null : (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
140
140
  jsx_runtime_1.jsx("div", { style: layout_2.label, children: "-maxrate value" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx("div", { children: jsx_runtime_1.jsx(RemInput_1.RemotionInput, { style: layout_2.input, value: encodingMaxRate, onChange: onEncodingMaxRateChanged, status: "ok", rightAlign: true }) }) })
141
141
  ] })), jsx_runtime_1.jsx(RenderModalHr_1.RenderModalHr, {}), jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
142
- jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Pixel format" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: pixelFormatOptions, selectedId: pixelFormat, title: "Pixel Format" }) })
142
+ jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Pixel format" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: pixelFormatOptions, selectedId: pixelFormat, "aria-label": "Pixel Format" }) })
143
143
  ] }), jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
144
144
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Color space",
145
145
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "colorSpaceOption" })
146
- ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: colorSpaceOptions, selectedId: colorSpace, title: "Color Space" }) })
146
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: colorSpaceOptions, selectedId: colorSpace, "aria-label": "Color Space" }) })
147
147
  ] }), jsx_runtime_1.jsx(RenderModalHr_1.RenderModalHr, {}), codec === 'h264' ? (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
148
148
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["x264 Preset",
149
149
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "x264Option" })
150
- ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { title: x264Preset, selectedId: x264Preset, values: x264PresetOptions }) })
150
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { "aria-label": x264Preset, selectedId: x264Preset, values: x264PresetOptions }) })
151
151
  ] })) : null, codec !== 'gif' ? (jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
152
152
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Custom GOP size",
153
153
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "gopSizeOption" })
@@ -155,7 +155,7 @@ const RenderModalEncoding = ({ renderMode, codec, qualityControlType, setQuality
155
155
  ] })) : null, codec !== 'gif' && gopSize !== null ? (jsx_runtime_1.jsx(NumberSetting_1.NumberSetting, { min: 1, max: 10000, step: 1, name: "GOP size", formatter: (value) => `${value} frames`, onValueChanged: changeGopSize, value: gopSize })) : null, jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
156
156
  jsx_runtime_1.jsxs("div", { style: layout_2.label, children: ["Hardware acceleration",
157
157
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(OptionExplainerBubble_1.OptionExplainerBubble, { id: "hardwareAccelerationOption" })
158
- ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { title: hardwareAcceleration, selectedId: hardwareAcceleration, values: hardwareAccelerationValues }) })
158
+ ] }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { "aria-label": hardwareAcceleration, selectedId: hardwareAcceleration, values: hardwareAccelerationValues }) })
159
159
  ] })
160
160
  ] })) : null, renderMode === 'still' ? null : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [renderMode === 'video' ? jsx_runtime_1.jsx(RenderModalHr_1.RenderModalHr, {}) : null, jsx_runtime_1.jsxs("div", { style: layout_2.optionRow, children: [
161
161
  jsx_runtime_1.jsx("div", { style: layout_2.label, children: "No parallel encoding" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(Checkbox_1.Checkbox, { checked: disallowParallelEncoding, onChange: onDisallowParallelEncodingChanged, name: "disallow-parallel-encoding" }) })
@@ -54,7 +54,7 @@ const RenderModalOutputName = ({ ariaLabel, existingOutputPath, existence, input
54
54
  jsx_runtime_1.jsx(RemInput_1.RemotionInput, { "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : undefined, status: validationMessage ? 'error' : existence ? 'warning' : 'ok', style: inputStyle, type: "text", value: outName, onChange: onValueChange, rightAlign: true }), validationMessage ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
55
55
  jsx_runtime_1.jsx(layout_1.Spacing, { y: 1, block: true }), jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { align: "flex-end", message: validationMessage, type: 'error' })
56
56
  ] })) : existence ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
57
- jsx_runtime_1.jsx(layout_1.Spacing, { y: 1, block: true }), jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { align: "flex-end", message: jsx_runtime_1.jsxs("span", { style: existsMessageStyle, children: [isBrowserStudio ? null : (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: openExistingOutput, renderAction: renderOpenIcon, title: `Open in ${fileManagerName}` })), "Exists, will be overwritten"] }), type: 'warning' })
57
+ jsx_runtime_1.jsx(layout_1.Spacing, { y: 1, block: true }), jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { align: "flex-end", message: jsx_runtime_1.jsxs("span", { style: existsMessageStyle, children: [isBrowserStudio ? null : (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: openExistingOutput, renderAction: renderOpenIcon, "aria-label": `Open in ${fileManagerName}` })), "Exists, will be overwritten"] }), type: 'warning' })
58
58
  ] })) : null] }) })
59
59
  ] }));
60
60
  };
@@ -49,6 +49,6 @@ const SchemaLabel = ({ jsonPath, onRemove, valid, suffix, handleClick, descripti
49
49
  const labelContent = (jsx_runtime_1.jsxs("span", { style: labelStyle, children: [(0, get_schema_label_1.getSchemaLabel)(jsonPath), " ", suffix ? suffix : null] }));
50
50
  return (jsx_runtime_1.jsxs("div", { style: compactStyles, className: scroll_to_default_props_path_1.DEFAULT_PROPS_PATH_CLASSNAME, "data-json-path": jsonPath.join('.'), children: [handleClick ? (
51
51
  // Minus the padding that a button has (user agent padding-line-start)
52
- jsx_runtime_1.jsx("button", { onPointerEnter: onClickablePointerEnter, onPointerLeave: onClickablePointerLeave, type: "button", onClick: handleClick, style: { border: 'none', padding: 0 }, children: labelContent })) : (labelContent), displayedDescription ? (jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { title: "Field description", horizontalAlignment: "right", children: jsx_runtime_1.jsx("div", { style: descriptionStyle, children: displayedDescription }) })) : null, jsx_runtime_1.jsx(layout_1.Flex, {}), onRemove ? jsx_runtime_1.jsx(InlineRemoveButton_1.InlineRemoveButton, { onClick: onRemove }) : null] }));
52
+ jsx_runtime_1.jsx("button", { onPointerEnter: onClickablePointerEnter, onPointerLeave: onClickablePointerLeave, type: "button", onClick: handleClick, style: { border: 'none', padding: 0 }, children: labelContent })) : (labelContent), displayedDescription ? (jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { "aria-label": "Field description", horizontalAlignment: "right", children: jsx_runtime_1.jsx("div", { style: descriptionStyle, children: displayedDescription }) })) : null, jsx_runtime_1.jsx(layout_1.Flex, {}), onRemove ? jsx_runtime_1.jsx(InlineRemoveButton_1.InlineRemoveButton, { onClick: onRemove }) : null] }));
53
53
  };
54
54
  exports.SchemaLabel = SchemaLabel;
@@ -47,7 +47,7 @@ const ZodDiscriminatedUnionEditor = ({ schema, setValue, value, mayPad, jsonPath
47
47
  return {
48
48
  discriminator,
49
49
  markup: (jsx_runtime_1.jsxs(Fieldset_1.Fieldset, { shouldPad: mayPad, children: [
50
- jsx_runtime_1.jsx(SchemaLabel_1.SchemaLabel, { handleClick: null, jsonPath: [...jsonPath, discriminator], onRemove: onRemove, suffix: null, description: (0, zod_schema_type_1.getUserFacingDescription)(schema), valid: zodValidation.success }), jsx_runtime_1.jsx(ComboBox_1.Combobox, { title: "Select type", values: comboBoxValues, selectedId: value[discriminator], size: "small" })
50
+ jsx_runtime_1.jsx(SchemaLabel_1.SchemaLabel, { handleClick: null, jsonPath: [...jsonPath, discriminator], onRemove: onRemove, suffix: null, description: (0, zod_schema_type_1.getUserFacingDescription)(schema), valid: zodValidation.success }), jsx_runtime_1.jsx(ComboBox_1.Combobox, { "aria-label": "Select type", values: comboBoxValues, selectedId: value[discriminator], size: "small" })
51
51
  ] }, 'replacement')),
52
52
  };
53
53
  }, [
@@ -39,7 +39,7 @@ const ZodEnumEditor = ({ schema, jsonPath, setValue, value, onRemove, mayPad })
39
39
  }, [enumValues, onChange, value]);
40
40
  const zodValidation = (0, react_1.useMemo)(() => (0, zod_schema_type_1.zodSafeParse)(schema, value), [schema, value]);
41
41
  return (jsx_runtime_1.jsxs(Fieldset_1.Fieldset, { shouldPad: mayPad, children: [
42
- jsx_runtime_1.jsx(SchemaLabel_1.SchemaLabel, { handleClick: null, jsonPath: jsonPath, onRemove: onRemove, valid: zodValidation.success, suffix: null, description: (0, zod_schema_type_1.getUserFacingDescription)(schema) }), jsx_runtime_1.jsx("div", { style: isRoot ? undefined : container, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: comboBoxValues, selectedId: value, title: value, size: "small" }) }), jsx_runtime_1.jsx(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, zodValidation: zodValidation })
42
+ jsx_runtime_1.jsx(SchemaLabel_1.SchemaLabel, { handleClick: null, jsonPath: jsonPath, onRemove: onRemove, valid: zodValidation.success, suffix: null, description: (0, zod_schema_type_1.getUserFacingDescription)(schema) }), jsx_runtime_1.jsx("div", { style: isRoot ? undefined : container, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: comboBoxValues, selectedId: value, "aria-label": value, size: "small" }) }), jsx_runtime_1.jsx(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, zodValidation: zodValidation })
43
43
  ] }));
44
44
  };
45
45
  exports.ZodEnumEditor = ZodEnumEditor;
@@ -21,7 +21,7 @@ const ZodFieldValidation = ({ zodValidation, path }) => {
21
21
  return null;
22
22
  }
23
23
  return (jsx_runtime_1.jsxs("div", { style: legend, children: [
24
- jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: zodValidation.error.format()._errors[0], type: "error", size: "compact" }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { title: "Zod validation failure", children: jsx_runtime_1.jsxs("div", { style: stackTrace, children: [
24
+ jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: zodValidation.error.format()._errors[0], type: "error", size: "compact" }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(InfoBubble_1.InfoBubble, { "aria-label": "Zod validation failure", children: jsx_runtime_1.jsxs("div", { style: stackTrace, children: [
25
25
  jsx_runtime_1.jsx("div", { style: stackTraceLabel, children: "Zod Validation has failed:" }), zodValidation.error.issues.map((error, index) => (
26
26
  // eslint-disable-next-line react/no-array-index-key
27
27
  jsx_runtime_1.jsxs("div", { style: stackTraceLabel, children: ["Type: ", error.code, " ",
@@ -38,7 +38,7 @@ const ZodStaticFileEditor = ({ schema, jsonPath, setValue, value, onRemove, mayP
38
38
  });
39
39
  }, [onChange, staticFiles, value]);
40
40
  return (jsx_runtime_1.jsxs(Fieldset_1.Fieldset, { shouldPad: mayPad, children: [
41
- jsx_runtime_1.jsx(SchemaLabel_1.SchemaLabel, { handleClick: null, jsonPath: jsonPath, onRemove: onRemove, valid: zodValidation.success, suffix: null, description: (0, zod_schema_type_1.getUserFacingDescription)(schema) }), jsx_runtime_1.jsx("div", { style: isRoot ? undefined : container, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: comboBoxValues, selectedId: value, title: value, size: "small" }) }), jsx_runtime_1.jsx(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, zodValidation: zodValidation })
41
+ jsx_runtime_1.jsx(SchemaLabel_1.SchemaLabel, { handleClick: null, jsonPath: jsonPath, onRemove: onRemove, valid: zodValidation.success, suffix: null, description: (0, zod_schema_type_1.getUserFacingDescription)(schema) }), jsx_runtime_1.jsx("div", { style: isRoot ? undefined : container, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: comboBoxValues, selectedId: value, "aria-label": value, size: "small" }) }), jsx_runtime_1.jsx(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, zodValidation: zodValidation })
42
42
  ] }));
43
43
  };
44
44
  exports.ZodStaticFileEditor = ZodStaticFileEditor;