@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
@@ -44,8 +44,8 @@ const verticalSpacer = {
44
44
  height: 16,
45
45
  margin: '0 8px',
46
46
  };
47
- const AlignmentButton = ({ onClick, title, Icon, disabled }) => {
48
- return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, title: title, onClick: onClick, renderAction: (color) => jsx_runtime_1.jsx(Icon, { style: iconStyle, color: color }), disabled: disabled }));
47
+ const AlignmentButton = ({ onClick, 'aria-label': ariaLabel, Icon, disabled }) => {
48
+ return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, "aria-label": ariaLabel, onClick: onClick, renderAction: (color) => jsx_runtime_1.jsx(Icon, { style: iconStyle, color: color }), disabled: disabled }));
49
49
  };
50
50
  const AlignmentControls = ({ track }) => {
51
51
  var _a;
@@ -236,7 +236,7 @@ const AlignmentControls = ({ track }) => {
236
236
  }
237
237
  const alignmentDisabled = !isPropStatusDraggable(renderPropStatus);
238
238
  return (jsx_runtime_1.jsxs("div", { style: container, children: [
239
- jsx_runtime_1.jsx(AlignmentButton, { title: "Align left", onClick: () => handleAlign('left'), Icon: align_left_1.AlignLeftIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx(AlignmentButton, { title: "Align center horizontally", onClick: () => handleAlign('center-h'), Icon: align_center_horizontal_1.AlignCenterHorizontalIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx(AlignmentButton, { title: "Align right", onClick: () => handleAlign('right'), Icon: align_right_1.AlignRightIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx("div", { style: verticalSpacer }), jsx_runtime_1.jsx(AlignmentButton, { title: "Align top", onClick: () => handleAlign('top'), Icon: align_top_1.AlignTopIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx(AlignmentButton, { title: "Align center vertically", onClick: () => handleAlign('center-v'), Icon: align_center_vertical_1.AlignCenterVerticalIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx(AlignmentButton, { title: "Align bottom", onClick: () => handleAlign('bottom'), Icon: align_bottom_1.AlignBottomIcon, disabled: alignmentDisabled })
239
+ jsx_runtime_1.jsx(AlignmentButton, { "aria-label": "Align left", onClick: () => handleAlign('left'), Icon: align_left_1.AlignLeftIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx(AlignmentButton, { "aria-label": "Align center horizontally", onClick: () => handleAlign('center-h'), Icon: align_center_horizontal_1.AlignCenterHorizontalIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx(AlignmentButton, { "aria-label": "Align right", onClick: () => handleAlign('right'), Icon: align_right_1.AlignRightIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx("div", { style: verticalSpacer }), jsx_runtime_1.jsx(AlignmentButton, { "aria-label": "Align top", onClick: () => handleAlign('top'), Icon: align_top_1.AlignTopIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx(AlignmentButton, { "aria-label": "Align center vertically", onClick: () => handleAlign('center-v'), Icon: align_center_vertical_1.AlignCenterVerticalIcon, disabled: alignmentDisabled }), jsx_runtime_1.jsx(AlignmentButton, { "aria-label": "Align bottom", onClick: () => handleAlign('bottom'), Icon: align_bottom_1.AlignBottomIcon, disabled: alignmentDisabled })
240
240
  ] }));
241
241
  };
242
242
  exports.AlignmentControls = AlignmentControls;
@@ -37,10 +37,6 @@ const ElementLibraryButton_1 = require("./ElementLibraryButton");
37
37
  const styles_1 = require("./styles");
38
38
  const use_composition_actions_1 = require("./use-composition-actions");
39
39
  const use_inspector_section_expanded_1 = require("./use-inspector-section-expanded");
40
- const actionIconStyle = {
41
- height: 18,
42
- width: 18,
43
- };
44
40
  const downloadLicenseAgreement = {
45
41
  color: colors_1.LIGHT_TEXT,
46
42
  fontFamily: 'sans-serif',
@@ -93,7 +89,7 @@ const CompositionActions = () => {
93
89
  downloadProject === null) {
94
90
  return null;
95
91
  }
96
- return (jsx_runtime_1.jsx(CollapsibleInspectorSection_1.CollapsibleInspectorSection, { collapsible: true, label: "Actions", sectionId: "composition-actions", children: jsx_runtime_1.jsxs(common_1.InspectorQuickActionsSection, { children: [canShowInsertSolid ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canInsertSolid, onClick: insertSolid, renderIcon: (color) => (jsx_runtime_1.jsx(solid_1.SolidIcon, { color: color, style: actionIconStyle })), children: "Add Solid" })) : null, canShowInsertAsset ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canInsertAsset, onClick: insertAsset, renderIcon: (color) => (jsx_runtime_1.jsx(frame_1.PicIcon, { color: color, style: actionIconStyle })), children: "Add asset..." })) : null, canShowInsertComposition ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canInsertComposition, onClick: insertComposition, renderIcon: (color) => (jsx_runtime_1.jsx(video_1.FilmIcon, { color: color, style: actionIconStyle })), children: "Add composition..." })) : null, canShowGenerateWithAgent ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, onClick: generateWithAgent, renderIcon: (color) => (jsx_runtime_1.jsx(sparkles_1.SparklesIcon, { color: color, style: actionIconStyle })), children: "Generate with agent..." })) : null, canShowInsertAsset ? jsx_runtime_1.jsx(ElementLibraryButton_1.ElementLibraryButton, {}) : null, downloadProject ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, onClick: onDownloadProject, renderIcon: (color) => (jsx_runtime_1.jsx(cloud_download_1.CloudDownloadIcon, { color: color, style: actionIconStyle })), children: "Download project" })) : null] }) }));
92
+ return (jsx_runtime_1.jsx(CollapsibleInspectorSection_1.CollapsibleInspectorSection, { collapsible: true, label: "Actions", sectionId: "composition-actions", children: jsx_runtime_1.jsxs(common_1.InspectorQuickActionsSection, { children: [canShowInsertSolid ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canInsertSolid, onClick: insertSolid, renderIcon: (color) => (jsx_runtime_1.jsx(solid_1.SolidIcon, { color: color, style: common_1.inspectorActionIconStyle })), children: "Add Solid" })) : null, canShowInsertAsset ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canInsertAsset, onClick: insertAsset, renderIcon: (color) => (jsx_runtime_1.jsx(frame_1.PicIcon, { color: color, style: common_1.inspectorActionIconStyle })), children: "Add asset..." })) : null, canShowInsertComposition ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canInsertComposition, onClick: insertComposition, renderIcon: (color) => (jsx_runtime_1.jsx(video_1.FilmIcon, { color: color, style: common_1.inspectorActionIconStyle })), children: "Add composition..." })) : null, canShowGenerateWithAgent ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: generateWithAgent, renderIcon: (color) => (jsx_runtime_1.jsx(sparkles_1.SparklesIcon, { color: color, style: common_1.largeInspectorActionIconStyle })), children: "Generate with agent..." })) : null, canShowInsertAsset ? jsx_runtime_1.jsx(ElementLibraryButton_1.ElementLibraryButton, {}) : null, downloadProject ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, onClick: onDownloadProject, renderIcon: (color) => (jsx_runtime_1.jsx(cloud_download_1.CloudDownloadIcon, { color: color, style: common_1.inspectorActionIconStyle })), children: "Download project" })) : null] }) }));
97
93
  };
98
94
  const CompositionDefaultPropsSection = ({ composition, currentDefaultProps, readOnlyStudio, setDefaultProps }) => {
99
95
  var _a;
@@ -127,14 +127,14 @@ const dimensionPresets = [
127
127
  { height: 1080, label: 'Square', width: 1080 },
128
128
  ];
129
129
  const frameRatePresets = [23.976, 24, 25, 29.97, 30, 50, 60];
130
- const PresetDropdown = ({ disabled, title, values, visible }) => {
130
+ const PresetDropdown = ({ disabled, 'aria-label': ariaLabel, values, visible }) => {
131
131
  const renderAction = (0, react_1.useCallback)((color) => {
132
132
  return (jsx_runtime_1.jsx("span", { style: presetButtonIcon, children: jsx_runtime_1.jsx(caret_1.CaretDown, { color: color }) }));
133
133
  }, []);
134
134
  return (jsx_runtime_1.jsx("div", { style: {
135
135
  ...presetDropdownContainer,
136
136
  visibility: visible ? 'visible' : 'hidden',
137
- }, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { disabled: disabled, renderAction: renderAction, title: title, values: values, variant: "compact" }) }));
137
+ }, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { disabled: disabled, renderAction: renderAction, "aria-label": ariaLabel, values: values, variant: "compact" }) }));
138
138
  };
139
139
  const CompositionMetadataValue = ({ computed, disabled, field, onSave, pendingValue, value }) => {
140
140
  var _a;
@@ -324,10 +324,10 @@ const CompositionMetadata = ({ compositionId, disabled, stack }) => {
324
324
  }));
325
325
  return (jsx_runtime_1.jsxs("div", { style: compositionMetadataContainer, children: [jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: (hovered) => (jsx_runtime_1.jsxs("div", { style: metadataLabelControls, children: [
326
326
  jsx_runtime_1.jsx("span", { style: metadataLabelText, children: "Dimensions" }), disabled || widthIsComputed || heightIsComputed ? null : (jsx_runtime_1.jsx(PresetDropdown, { disabled: pendingValues.width !== undefined ||
327
- pendingValues.height !== undefined, title: "Choose dimension preset", values: dimensionPresetValues, visible: hovered }))] })), children: jsx_runtime_1.jsxs("div", { style: dimensionsControls, children: [
327
+ pendingValues.height !== undefined, "aria-label": "Choose dimension preset", values: dimensionPresetValues, visible: hovered }))] })), children: jsx_runtime_1.jsxs("div", { style: dimensionsControls, children: [
328
328
  jsx_runtime_1.jsx(CompositionMetadataValue, { computed: widthIsComputed, disabled: disabled, field: "width", onSave: saveMetadata, pendingValue: (_a = pendingValues.width) !== null && _a !== void 0 ? _a : null, value: video.width }), jsx_runtime_1.jsx(CompositionMetadataValue, { computed: heightIsComputed, disabled: disabled, field: "height", onSave: saveMetadata, pendingValue: (_b = pendingValues.height) !== null && _b !== void 0 ? _b : null, value: video.height })
329
329
  ] }) }), isStill ? null : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: (hovered) => (jsx_runtime_1.jsxs("div", { style: metadataLabelControls, children: [
330
- jsx_runtime_1.jsx("span", { style: metadataLabelText, children: "Frame rate" }), disabled || fpsIsComputed ? null : (jsx_runtime_1.jsx(PresetDropdown, { disabled: pendingValues.fps !== undefined, title: "Choose frame rate preset", values: frameRatePresetValues, visible: hovered }))] })), children: jsx_runtime_1.jsx("div", { style: dimensionsControls, children: jsx_runtime_1.jsx(CompositionMetadataValue, { computed: fpsIsComputed, disabled: disabled, field: "fps", onSave: saveMetadata, pendingValue: (_c = pendingValues.fps) !== null && _c !== void 0 ? _c : null, value: video.fps }) }) }), jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Duration", children: jsx_runtime_1.jsx(CompositionMetadataValue, { computed: durationIsComputed, disabled: disabled, field: "durationInFrames", onSave: saveMetadata, pendingValue: (_d = pendingValues.durationInFrames) !== null && _d !== void 0 ? _d : null, value: video.durationInFrames }) })
330
+ jsx_runtime_1.jsx("span", { style: metadataLabelText, children: "Frame rate" }), disabled || fpsIsComputed ? null : (jsx_runtime_1.jsx(PresetDropdown, { disabled: pendingValues.fps !== undefined, "aria-label": "Choose frame rate preset", values: frameRatePresetValues, visible: hovered }))] })), children: jsx_runtime_1.jsx("div", { style: dimensionsControls, children: jsx_runtime_1.jsx(CompositionMetadataValue, { computed: fpsIsComputed, disabled: disabled, field: "fps", onSave: saveMetadata, pendingValue: (_c = pendingValues.fps) !== null && _c !== void 0 ? _c : null, value: video.fps }) }) }), jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Duration", children: jsx_runtime_1.jsx(CompositionMetadataValue, { computed: durationIsComputed, disabled: disabled, field: "durationInFrames", onSave: saveMetadata, pendingValue: (_d = pendingValues.durationInFrames) !== null && _d !== void 0 ? _d : null, value: video.durationInFrames }) })
331
331
  ] }))] }));
332
332
  };
333
333
  exports.CompositionMetadata = CompositionMetadata;
@@ -209,7 +209,7 @@ const EasingInspector = ({ selection }) => {
209
209
  easingKeyframeDisplayOffset,
210
210
  ]);
211
211
  const renderHeader = (0, react_1.useCallback)(() => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
212
- jsx_runtime_1.jsx(common_1.InspectorBackAction, { disabled: parentSelection === null, onClick: onSelectParent, title: "Back to property", children: fieldLabel }), easingUpdate === null || track === null ? null : (jsx_runtime_1.jsx(KeyframeEasingNavigator_1.KeyframeEasingNavigator, { currentSelection: currentEasingSelection !== null && currentEasingSelection !== void 0 ? currentEasingSelection : selection, includeEasings: true, keyframes: easingUpdate.propStatus.keyframes.map((keyframe) => ({
212
+ jsx_runtime_1.jsx(common_1.InspectorBackAction, { disabled: parentSelection === null, onClick: onSelectParent, "aria-label": "Back to property", children: fieldLabel }), easingUpdate === null || track === null ? null : (jsx_runtime_1.jsx(KeyframeEasingNavigator_1.KeyframeEasingNavigator, { currentSelection: currentEasingSelection !== null && currentEasingSelection !== void 0 ? currentEasingSelection : selection, includeEasings: true, keyframes: easingUpdate.propStatus.keyframes.map((keyframe) => ({
213
213
  ...keyframe,
214
214
  frame: keyframe.frame / track.keyframePlaybackRate +
215
215
  easingKeyframeDisplayOffset,
@@ -12,16 +12,6 @@ const SegmentedButton_1 = require("../SegmentedButton");
12
12
  const SettingsContext_1 = require("../SettingsContext");
13
13
  const common_1 = require("./common");
14
14
  const noElementLibraries = [];
15
- const browseElementsIconStyle = {
16
- height: 22,
17
- width: 22,
18
- };
19
- const browseElementsIconContainerStyle = {
20
- height: 22,
21
- marginLeft: -2,
22
- marginRight: -2,
23
- width: 22,
24
- };
25
15
  const elementLibraryDropdownStyle = {
26
16
  borderRadius: 4,
27
17
  height: 28,
@@ -77,12 +67,11 @@ const ElementLibraryButton = () => {
77
67
  leaveLeftSpace: false,
78
68
  onOpenChange: null,
79
69
  renderContent: (color) => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
80
- jsx_runtime_1.jsx("span", { style: browseElementsIconContainerStyle, children: jsx_runtime_1.jsx(browse_elements_1.BrowseElementsIcon, { color: color, style: browseElementsIconStyle }) }), jsx_runtime_1.jsx("span", { style: elementLibraryDropdownLabelStyle, children: "Browse Elements" }), jsx_runtime_1.jsx("span", { style: elementLibraryDropdownCaretStyle, children: jsx_runtime_1.jsx(caret_1.CaretDown, { color: color }) })
70
+ jsx_runtime_1.jsx("span", { style: common_1.largeInspectorActionIconContainerStyle, children: jsx_runtime_1.jsx(browse_elements_1.BrowseElementsIcon, { color: color, style: common_1.largeInspectorActionIconStyle }) }), jsx_runtime_1.jsx("span", { style: elementLibraryDropdownLabelStyle, children: "Browse Elements" }), jsx_runtime_1.jsx("span", { style: elementLibraryDropdownCaretStyle, children: jsx_runtime_1.jsx(caret_1.CaretDown, { color: color }) })
81
71
  ] })),
82
72
  segmentId: 'element-library',
83
73
  selectedId: null,
84
74
  style: elementLibraryDropdownSegmentStyle,
85
- title: 'Choose an Element Library to browse inside Studio.',
86
75
  tooltipLabel: null,
87
76
  type: 'menu',
88
77
  values: [
@@ -120,8 +109,8 @@ const ElementLibraryButton = () => {
120
109
  },
121
110
  ], [elementLibraries, openElementLibrary, openElementsLibrary]);
122
111
  if (elementLibraries.length > 0) {
123
- return (jsx_runtime_1.jsx(SegmentedButton_1.SegmentedButton, { segments: elementLibraryDropdownSegments, style: elementLibraryDropdownStyle, title: null }));
112
+ return (jsx_runtime_1.jsx(SegmentedButton_1.SegmentedButton, { segments: elementLibraryDropdownSegments, style: elementLibraryDropdownStyle }));
124
113
  }
125
- return (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, iconContainerStyle: browseElementsIconContainerStyle, onClick: openElementsLibrary, renderIcon: (color) => (jsx_runtime_1.jsx(browse_elements_1.BrowseElementsIcon, { color: color, style: browseElementsIconStyle })), title: "Browse the Remotion Elements library inside Studio.", children: "Browse Elements" }));
114
+ return (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: openElementsLibrary, renderIcon: (color) => (jsx_runtime_1.jsx(browse_elements_1.BrowseElementsIcon, { color: color, style: common_1.largeInspectorActionIconStyle })), "aria-label": "Browse the Remotion Elements library inside Studio.", children: "Browse Elements" }));
126
115
  };
127
116
  exports.ElementLibraryButton = ElementLibraryButton;
@@ -90,15 +90,13 @@ const TimelineNavigatorItem = ({ extendLineLeft, extendLineRight, item, onSelect
90
90
  extendLeft: extendLineLeft,
91
91
  extendRight: extendLineRight,
92
92
  });
93
- return (jsx_runtime_1.jsx("button", { type: "button", style: buttonStyle, onClick: onClick, title: item.type === 'keyframe'
94
- ? `Keyframe at frame ${item.selection.frame}`
95
- : `Easing from frame ${item.selection.fromFrame} to ${item.selection.toFrame}`, "aria-label": item.type === 'keyframe'
93
+ return (jsx_runtime_1.jsx("button", { type: "button", style: buttonStyle, onClick: onClick, "aria-label": item.type === 'keyframe'
96
94
  ? `Select keyframe at frame ${item.selection.frame}`
97
95
  : `Select easing from frame ${item.selection.fromFrame} to ${item.selection.toFrame}`, children: item.type === 'keyframe' ? (jsx_runtime_1.jsx(TimelineKeyframeDiamondIcon_1.TimelineKeyframeDiamondIcon, { color: colors_1.LIGHT_TEXT, selected: selected, size: 12 })) : (jsx_runtime_1.jsx("div", { style: easingItem, children: jsx_runtime_1.jsx("div", { style: lineUnderlayStyle, children: jsx_runtime_1.jsx(TimelineKeyframeEasingLine_1.TimelineKeyframeEasingLineVisual, { selected: selected }) }) })) }));
98
96
  };
99
97
  const KeyframeEasingNavigator = ({ currentSelection, includeEasings, keyframes, nodePathInfo }) => {
100
98
  const { isSelected, selectItems } = (0, TimelineSelection_1.useTimelineSelection)();
101
- const setFrame = remotion_1.Internals.Timeline.useTimelineSeekFrame();
99
+ const seekFrame = remotion_1.Internals.Timeline.useTimelineSeekFrame();
102
100
  const videoConfig = (0, remotion_1.useVideoConfig)();
103
101
  const items = (0, react_1.useMemo)(() => (0, keyframe_easing_navigator_items_1.getKeyframeEasingNavigatorItems)({
104
102
  includeEasings,
@@ -117,7 +115,7 @@ const KeyframeEasingNavigator = ({ currentSelection, includeEasings, keyframes,
117
115
  }, [selectItems]);
118
116
  const seekToItem = (0, react_1.useCallback)((item, direction) => {
119
117
  const frame = (0, keyframe_easing_navigator_items_1.getNavigatorItemPlayheadFrame)(item);
120
- setFrame((current) => {
118
+ seekFrame((current) => {
121
119
  const next = { ...current, [videoConfig.id]: frame };
122
120
  remotion_1.Internals.persistCurrentFrame(next);
123
121
  return next;
@@ -127,7 +125,7 @@ const KeyframeEasingNavigator = ({ currentSelection, includeEasings, keyframes,
127
125
  durationInFrames: videoConfig.durationInFrames,
128
126
  frame,
129
127
  });
130
- }, [setFrame, videoConfig.durationInFrames, videoConfig.id]);
128
+ }, [seekFrame, videoConfig.durationInFrames, videoConfig.id]);
131
129
  const selectPrevious = (0, react_1.useCallback)(() => {
132
130
  if (previousItem === null) {
133
131
  return;
@@ -145,8 +143,8 @@ const KeyframeEasingNavigator = ({ currentSelection, includeEasings, keyframes,
145
143
  if (currentItem === null) {
146
144
  return null;
147
145
  }
148
- return (jsx_runtime_1.jsxs("div", { style: navigatorContainer, children: [jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: previousItem === null, onClick: selectPrevious, title: "Previous animation item", renderAction: (color) => (jsx_runtime_1.jsx(NavigationChevron, { color: previousItem === null ? disabledChevronColor : color, direction: "left" })) }), jsx_runtime_1.jsxs("div", { style: itemStrip, children: [
146
+ return (jsx_runtime_1.jsxs("div", { style: navigatorContainer, children: [jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: previousItem === null, onClick: selectPrevious, "aria-label": "Previous animation item", renderAction: (color) => (jsx_runtime_1.jsx(NavigationChevron, { color: previousItem === null ? disabledChevronColor : color, direction: "left" })) }), jsx_runtime_1.jsxs("div", { style: itemStrip, children: [
149
147
  jsx_runtime_1.jsx(TimelineNavigatorItem, { extendLineLeft: false, extendLineRight: currentItem.type === 'keyframe', item: previousItem, onSelect: selectItem, selected: previousItem === null ? false : isSelected(previousItem.selection) }), jsx_runtime_1.jsx(TimelineNavigatorItem, { extendLineLeft: (previousItem === null || previousItem === void 0 ? void 0 : previousItem.type) === 'keyframe', extendLineRight: (nextItem === null || nextItem === void 0 ? void 0 : nextItem.type) === 'keyframe', item: currentItem, onSelect: selectItem, selected: isSelected(currentItem.selection) }), jsx_runtime_1.jsx(TimelineNavigatorItem, { extendLineLeft: currentItem.type === 'keyframe', extendLineRight: false, item: nextItem, onSelect: selectItem, selected: nextItem === null ? false : isSelected(nextItem.selection) })
150
- ] }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: nextItem === null, onClick: selectNext, title: "Next animation item", renderAction: (color) => (jsx_runtime_1.jsx(NavigationChevron, { color: nextItem === null ? disabledChevronColor : color, direction: "right" })) })] }));
148
+ ] }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: nextItem === null, onClick: selectNext, "aria-label": "Next animation item", renderAction: (color) => (jsx_runtime_1.jsx(NavigationChevron, { color: nextItem === null ? disabledChevronColor : color, direction: "right" })) })] }));
151
149
  };
152
150
  exports.KeyframeEasingNavigator = KeyframeEasingNavigator;
@@ -341,7 +341,7 @@ const KeyframeInspector = ({ selection }) => {
341
341
  return jsx_runtime_1.jsx(common_1.InspectorMessage, { children: "Keyframe unavailable" });
342
342
  }
343
343
  return (jsx_runtime_1.jsxs("div", { style: styles_1.selectedContainer, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: [
344
- jsx_runtime_1.jsx(SequenceInspectorHeader_1.SequenceInspectorSections, { track: track }), jsx_runtime_1.jsx(common_1.InspectorBackAction, { disabled: parentSelection === null, onClick: onSelectParent, title: "Back to property", children: details.fieldLabel }), jsx_runtime_1.jsx(KeyframeEasingNavigator_1.KeyframeEasingNavigator, { currentSelection: selection, includeEasings: (0, update_selected_easing_1.canEditEasingForInterpolationFunction)(details.propStatus.interpolationFunction), keyframes: details.propStatus.keyframes.map((keyframe) => ({
344
+ jsx_runtime_1.jsx(SequenceInspectorHeader_1.SequenceInspectorSections, { track: track }), jsx_runtime_1.jsx(common_1.InspectorBackAction, { disabled: parentSelection === null, onClick: onSelectParent, "aria-label": "Back to property", children: details.fieldLabel }), jsx_runtime_1.jsx(KeyframeEasingNavigator_1.KeyframeEasingNavigator, { currentSelection: selection, includeEasings: (0, update_selected_easing_1.canEditEasingForInterpolationFunction)(details.propStatus.interpolationFunction), keyframes: details.propStatus.keyframes.map((keyframe) => ({
345
345
  ...keyframe,
346
346
  frame: keyframe.frame / details.keyframePlaybackRate +
347
347
  details.keyframeDisplayOffset,
@@ -25,8 +25,10 @@ const extrapolateOptions = [
25
25
  'wrap',
26
26
  ];
27
27
  const labelForExtrapolate = (value) => value[0].toUpperCase() + value.slice(1);
28
- const getExtrapolateValues = (onSelect, disabled) => {
29
- return extrapolateOptions.map((value) => ({
28
+ const getExtrapolateValues = (onSelect, disabled, allowIdentity) => {
29
+ return extrapolateOptions
30
+ .filter((value) => allowIdentity || value !== 'identity')
31
+ .map((value) => ({
30
32
  type: 'item',
31
33
  id: value,
32
34
  keyHint: null,
@@ -66,7 +68,9 @@ const KeyframeSettings = ({ update }) => {
66
68
  const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
67
69
  const { propStatus } = update;
68
70
  const [posterize, setPosterize] = (0, react_1.useState)((_a = propStatus.posterize) !== null && _a !== void 0 ? _a : 0);
69
- const canEditInterpolationSettings = propStatus.interpolationFunction === 'interpolate';
71
+ const canEditExtrapolation = propStatus.interpolationFunction === 'interpolate' ||
72
+ propStatus.interpolationFunction === 'interpolatePaths';
73
+ const canEditOutput = propStatus.interpolationFunction === 'interpolate';
70
74
  const disabled = previewServerState.type !== 'connected';
71
75
  (0, react_1.useEffect)(() => {
72
76
  var _a;
@@ -104,12 +108,13 @@ const KeyframeSettings = ({ update }) => {
104
108
  var { left = propStatus.clamping.left, output = (_b = propStatus.output) !== null && _b !== void 0 ? _b : 'linear', posterize: nextPosterize = (_c = propStatus.posterize) !== null && _c !== void 0 ? _c : 0, right = propStatus.clamping.right, } = _a;
105
109
  save({
106
110
  type: 'settings',
107
- clamping: canEditInterpolationSettings ? { left, right } : undefined,
108
- output: canEditInterpolationSettings ? output : undefined,
111
+ clamping: canEditExtrapolation ? { left, right } : undefined,
112
+ output: canEditOutput ? output : undefined,
109
113
  posterize: nextPosterize <= 0 ? undefined : nextPosterize,
110
114
  });
111
115
  }, [
112
- canEditInterpolationSettings,
116
+ canEditExtrapolation,
117
+ canEditOutput,
113
118
  propStatus.clamping.left,
114
119
  propStatus.clamping.right,
115
120
  propStatus.output,
@@ -119,8 +124,8 @@ const KeyframeSettings = ({ update }) => {
119
124
  const onSelectLeft = (0, react_1.useCallback)((left) => saveSettings({ left }), [saveSettings]);
120
125
  const onSelectRight = (0, react_1.useCallback)((right) => saveSettings({ right }), [saveSettings]);
121
126
  const onSelectOutput = (0, react_1.useCallback)((output) => saveSettings({ output }), [saveSettings]);
122
- const leftValues = (0, react_1.useMemo)(() => getExtrapolateValues(onSelectLeft, disabled), [disabled, onSelectLeft]);
123
- const rightValues = (0, react_1.useMemo)(() => getExtrapolateValues(onSelectRight, disabled), [disabled, onSelectRight]);
127
+ const leftValues = (0, react_1.useMemo)(() => getExtrapolateValues(onSelectLeft, disabled, canEditOutput), [canEditOutput, disabled, onSelectLeft]);
128
+ const rightValues = (0, react_1.useMemo)(() => getExtrapolateValues(onSelectRight, disabled, canEditOutput), [canEditOutput, disabled, onSelectRight]);
124
129
  const outputValues = (0, react_1.useMemo)(() => getOutputValues(onSelectOutput, disabled), [disabled, onSelectOutput]);
125
130
  const onPosterizeChange = (0, react_1.useCallback)((value) => {
126
131
  setPosterize(Math.max(0, Math.round(value)));
@@ -133,9 +138,9 @@ const KeyframeSettings = ({ update }) => {
133
138
  const posterizeFormatter = (0, react_1.useCallback)((value) => {
134
139
  return String(Math.round(Number(value)));
135
140
  }, []);
136
- return (jsx_runtime_1.jsx(CollapsibleInspectorSection_1.CollapsibleInspectorSection, { collapsible: true, label: "Keyframe settings", sectionId: "keyframe-settings", children: jsx_runtime_1.jsxs("div", { style: keyframeSettingsContainer, children: [canEditInterpolationSettings ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
137
- jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Extrapolate left", children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: leftValues, selectedId: propStatus.clamping.left, title: "Extrapolate left", style: comboStyle, size: "small" }) }), jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Extrapolate right", children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: rightValues, selectedId: propStatus.clamping.right, title: "Extrapolate right", style: comboStyle, size: "small" }) }), jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Output", children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: outputValues, selectedId: (_b = propStatus.output) !== null && _b !== void 0 ? _b : 'linear', title: "Output", style: comboStyle, size: "small" }) })
138
- ] })) : null, jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Posterize", children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: posterize, status: "ok", onValueChange: onPosterizeChange, onValueChangeEnd: onPosterizeChangeEnd, onTextChange: () => undefined, min: 0, step: 1, formatter: posterizeFormatter, rightAlign: true, small: true, disabled: disabled }) })
141
+ return (jsx_runtime_1.jsx(CollapsibleInspectorSection_1.CollapsibleInspectorSection, { collapsible: true, label: "Keyframe settings", sectionId: "keyframe-settings", children: jsx_runtime_1.jsxs("div", { style: keyframeSettingsContainer, children: [canEditExtrapolation ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
142
+ jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Extrapolate left", children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: leftValues, selectedId: propStatus.clamping.left, "aria-label": "Extrapolate left", style: comboStyle, size: "small" }) }), jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Extrapolate right", children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: rightValues, selectedId: propStatus.clamping.right, "aria-label": "Extrapolate right", style: comboStyle, size: "small" }) })
143
+ ] })) : null, canEditOutput ? (jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Output", children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: outputValues, selectedId: (_b = propStatus.output) !== null && _b !== void 0 ? _b : 'linear', "aria-label": "Output", style: comboStyle, size: "small" }) })) : null, jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Posterize", children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: posterize, status: "ok", onValueChange: onPosterizeChange, onValueChangeEnd: onPosterizeChangeEnd, onTextChange: () => undefined, min: 0, step: 1, formatter: posterizeFormatter, rightAlign: true, small: true, disabled: disabled }) })
139
144
  ] }) }));
140
145
  };
141
146
  exports.KeyframeSettings = KeyframeSettings;
@@ -116,7 +116,7 @@ const MultiSequenceField = ({ field, targets, readOnlyStudio }) => {
116
116
  color: colors_1.BLUE,
117
117
  fontSize: 12,
118
118
  padding: 0,
119
- }, title: "Set a value for all selected sequences", onClick: () => setEditingMixed(true), children: "Mixed" }));
119
+ }, "aria-label": "Set a value for all selected sequences", onClick: () => setEditingMixed(true), children: "Mixed" }));
120
120
  }
121
121
  else {
122
122
  content = (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [mixed ? jsx_runtime_1.jsx("span", { style: { fontSize: 12 }, children: "Mixed \u00B7 " }) : null, jsx_runtime_1.jsx(TimelineSchemaField_1.TimelineFieldValue, { field: field, effectiveValue: values[0], propStatus: {
@@ -9,7 +9,7 @@ const calculate_timeline_1 = require("../../helpers/calculate-timeline");
9
9
  const colors_1 = require("../../helpers/colors");
10
10
  const interactivity_enabled_1 = require("../../helpers/interactivity-enabled");
11
11
  const timeline_layout_1 = require("../../helpers/timeline-layout");
12
- const scissors_1 = require("../../icons/scissors");
12
+ const split_1 = require("../../icons/split");
13
13
  const InspectorInfoHeader_1 = require("../InspectorInfoHeader");
14
14
  const InspectorPanelLayout_1 = require("../InspectorPanelLayout");
15
15
  const layout_1 = require("../layout");
@@ -31,11 +31,6 @@ const selectionCountStyle = {
31
31
  textOverflow: 'ellipsis',
32
32
  whiteSpace: 'nowrap',
33
33
  };
34
- const actionIconStyle = {
35
- display: 'block',
36
- height: 16,
37
- width: 16,
38
- };
39
34
  const MultiSequenceInspector = ({ selections, readOnlyStudio }) => {
40
35
  const { sequences } = (0, react_1.useContext)(remotion_1.Internals.SequenceManager);
41
36
  const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
@@ -128,7 +123,7 @@ const MultiSequenceInspector = ({ selections, readOnlyStudio }) => {
128
123
  const groupedFields = fields.filter((field) => field.group === group.id);
129
124
  return groupedFields.length === 0 ? null : (jsx_runtime_1.jsx(CollapsibleInspectorSection_1.CollapsibleInspectorSection, { collapsible: true, label: group.label, sectionId: `multi-sequence-${group.id}`, children: groupedFields.map((field) => (jsx_runtime_1.jsx(MultiSequenceField_1.MultiSequenceField, { field: field, targets: targets, readOnlyStudio: readOnlyStudio }, JSON.stringify(targets.map((target) => target.nodePath)) +
130
125
  field.key))) }, group.id));
131
- }) })), jsx_runtime_1.jsx(CollapsibleInspectorSection_1.CollapsibleInspectorSection, { collapsible: true, label: "Actions", sectionId: "multi-sequence-actions", children: jsx_runtime_1.jsx(common_1.InspectorQuickActionsSection, { children: jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canSplit, onClick: onSplit, title: canSplit ? undefined : 'Studio is read-only', renderIcon: (color) => (jsx_runtime_1.jsx(scissors_1.ScissorsIcon, { style: actionIconStyle, color: color })), children: "Split selected" }) }) })
126
+ }) })), jsx_runtime_1.jsx(CollapsibleInspectorSection_1.CollapsibleInspectorSection, { collapsible: true, label: "Actions", sectionId: "multi-sequence-actions", children: jsx_runtime_1.jsx(common_1.InspectorQuickActionsSection, { children: jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canSplit, iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: onSplit, "aria-label": canSplit ? undefined : 'Studio is read-only', renderIcon: (color) => (jsx_runtime_1.jsx(split_1.SplitIcon, { style: common_1.largeInspectorActionIconStyle, color: color })), children: "Split selected" }) }) })
132
127
  ] }));
133
128
  };
134
129
  exports.MultiSequenceInspector = MultiSequenceInspector;
@@ -61,9 +61,9 @@ const NumericAxis = ({ field, values, axis, onPreview, onSave, onClear }) => {
61
61
  event.target.value.trim() === '') {
62
62
  clear();
63
63
  }
64
- }, children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragValue !== null && dragValue !== void 0 ? dragValue : coordinates[0], "aria-label": axis === null
64
+ }, children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", "aria-description": "Type to set all values; drag to adjust each value", value: dragValue !== null && dragValue !== void 0 ? dragValue : coordinates[0], "aria-label": axis === null
65
65
  ? ((_d = field.description) !== null && _d !== void 0 ? _d : field.key)
66
- : `Offset ${['X', 'Y', 'Z'][axis]}`, title: "Type to set all values; drag to adjust each value", status: "ok", small: true, rightAlign: false, min: min, max: max, step: step, allowStepMismatch: true, integerOnly: schema.type === 'number' && schema.integer === true, snapToStep: axis === null, dragDecimalPlaces: decimalPlaces, dragSensitivity: axis === null ? 1 : 3, buttonStyle: { paddingLeft: 0 }, style: { width: 70 }, formatter: (value) => mixed && dragValue === null
66
+ : `Offset ${['X', 'Y', 'Z'][axis]}`, status: "ok", small: true, rightAlign: false, min: min, max: max, step: step, allowStepMismatch: true, integerOnly: schema.type === 'number' && schema.integer === true, snapToStep: axis === null, dragDecimalPlaces: decimalPlaces, dragSensitivity: axis === null ? 1 : 3, buttonStyle: { paddingLeft: 0 }, style: { width: 70 }, formatter: (value) => mixed && dragValue === null
67
67
  ? 'Mixed'
68
68
  : (0, timeline_field_display_utils_1.formatTimelineFieldValueForDisplay)({ fieldSchema: schema, value }), onTextChange: noop_1.noop, onValueChange: (value, source) => {
69
69
  var _a;
@@ -101,7 +101,7 @@ const SequenceInspectorHeader = ({ sourceLocation, track }) => {
101
101
  saveName(newName).catch(() => undefined);
102
102
  }, [saveName]);
103
103
  return (jsx_runtime_1.jsx(InspectorInfoHeader_1.InspectorInfoHeader, { contentSized: true, padding: "4px 0", children: jsx_runtime_1.jsxs(InspectorLocationCopy_1.InspectorLocationCopy, { location: sourceLocation.validatedLocation, name: componentName !== null && componentName !== void 0 ? componentName : null, openInEditorLocation: sourceLocation.validatedLocation, children: [
104
- jsx_runtime_1.jsx(InlineEditableTitle_1.InlineEditableTitle, { value: sequenceDisplayName, canRename: canRename, onCommit: onRename, size: "inspector" }), documentationLink ? (jsx_runtime_1.jsxs(common_1.InspectorQuickAction, { disabled: false, style: defaultCursor, title: "Open component docs", onClick: openDocumentationLink, children: [componentName, jsx_runtime_1.jsx("svg", { "aria-hidden": "true", viewBox: "0 0 16 16", style: externalTabIndicatorStyle, children: jsx_runtime_1.jsx("path", { d: "M4 12 12 4M6 4h6v6", fill: "none", stroke: colors_1.CURRENT_COLOR, strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5" }) })
104
+ jsx_runtime_1.jsx(InlineEditableTitle_1.InlineEditableTitle, { value: sequenceDisplayName, canRename: canRename, onCommit: onRename, size: "inspector" }), documentationLink ? (jsx_runtime_1.jsxs(common_1.InspectorQuickAction, { disabled: false, style: defaultCursor, "aria-label": "Open component docs", onClick: openDocumentationLink, children: [componentName, jsx_runtime_1.jsx("svg", { "aria-hidden": "true", viewBox: "0 0 16 16", style: externalTabIndicatorStyle, children: jsx_runtime_1.jsx("path", { d: "M4 12 12 4M6 4h6v6", fill: "none", stroke: colors_1.CURRENT_COLOR, strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5" }) })
105
105
  ] })) : (jsx_runtime_1.jsx("div", { style: subtitleStyle, children: componentName })), jsx_runtime_1.jsx(InspectorSourceLocation_1.InspectorSourceLocation, { location: sourceLocation.validatedLocation, canOpen: sourceLocation.canOpen, onOpen: sourceLocation.openFileLocation, renderIcon: renderReactIcon, size: "quick-action" })
106
106
  ] }) }));
107
107
  };
@@ -10,8 +10,8 @@ const use_media_metadata_1 = require("../../helpers/use-media-metadata");
10
10
  const audio_1 = require("../../icons/audio");
11
11
  const background_removal_1 = require("../../icons/background-removal");
12
12
  const duplicate_1 = require("../../icons/duplicate");
13
- const scissors_1 = require("../../icons/scissors");
14
13
  const snowflake_1 = require("../../icons/snowflake");
14
+ const split_1 = require("../../icons/split");
15
15
  const transcription_1 = require("../../icons/transcription");
16
16
  const trash_1 = require("../../icons/trash");
17
17
  const modals_1 = require("../../state/modals");
@@ -34,16 +34,6 @@ const SequenceInspectorHeader_1 = require("./SequenceInspectorHeader");
34
34
  const SequenceWrapAction_1 = require("./SequenceWrapAction");
35
35
  const styles_1 = require("./styles");
36
36
  const use_track_for_selection_1 = require("./use-track-for-selection");
37
- const actionIconStyle = {
38
- display: 'block',
39
- height: 16,
40
- width: 16,
41
- };
42
- const largeActionIconStyle = {
43
- ...actionIconStyle,
44
- height: 20,
45
- width: 20,
46
- };
47
37
  const SplitSequenceQuickAction = ({ selection, track }) => {
48
38
  const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
49
39
  const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
@@ -73,7 +63,7 @@ const SplitSequenceQuickAction = ({ selection, track }) => {
73
63
  : eligibility.canSplit
74
64
  ? undefined
75
65
  : eligibility.reason;
76
- return (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canSplit, onClick: onSplit, title: disabledReason, renderIcon: (color) => (jsx_runtime_1.jsx(scissors_1.ScissorsIcon, { style: actionIconStyle, color: color })), children: "Split clip" }));
66
+ return (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: !canSplit, iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: onSplit, "aria-label": disabledReason, renderIcon: (color) => (jsx_runtime_1.jsx(split_1.SplitIcon, { style: common_1.largeInspectorActionIconStyle, color: color })), children: "Split clip" }));
77
67
  };
78
68
  const SequenceSourceQuickActions = ({ selection, track, validatedSource }) => {
79
69
  var _a;
@@ -193,7 +183,8 @@ const SequenceSourceQuickActions = ({ selection, track, validatedSource }) => {
193
183
  (0, NotificationCenter_1.showNotification)(err.message, 4000);
194
184
  });
195
185
  }, [selection.nodePathInfo, splitVideoFromAudioDisabledReason]);
196
- return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [(freezeFrameMenuItem === null || freezeFrameMenuItem === void 0 ? void 0 : freezeFrameMenuItem.type) === 'item' ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: Boolean(freezeFrameMenuItem.disabled), onClick: () => freezeFrameMenuItem.onClick(freezeFrameMenuItem.id, null), renderIcon: (color) => (jsx_runtime_1.jsx(snowflake_1.SnowflakeIcon, { style: largeActionIconStyle, color: color })), children: freezeFrameMenuItem.label })) : null, track.sequence.type === 'video' ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: videoMattingDisabledReason !== undefined, onClick: onRemoveBackground, title: videoMattingDisabledReason, renderIcon: (color) => (jsx_runtime_1.jsx(background_removal_1.BackgroundRemovalIcon, { style: actionIconStyle, color: color })), children: "Remove background" })) : null, track.sequence.type === 'video' ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: splitVideoFromAudioDisabledReason !== undefined, onClick: onSplitVideoFromAudio, title: splitVideoFromAudioDisabledReason, renderIcon: (color) => (jsx_runtime_1.jsx(audio_1.AudioIcon, { style: actionIconStyle, color: color })), children: "Split video from audio" })) : null, mediaSequence !== null && (mediaMetadata === null || mediaMetadata === void 0 ? void 0 : mediaMetadata.hasAudioTrack) !== false ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: transcriptionDisabledReason !== undefined, onClick: onGenerateCaptions, title: transcriptionDisabledReason, renderIcon: (color) => (jsx_runtime_1.jsx(transcription_1.TranscriptionIcon, { style: actionIconStyle, color: color })), children: "Generate captions" })) : null, jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: sourceActionsDisabled, onClick: onDuplicate, renderIcon: (color) => (jsx_runtime_1.jsx(duplicate_1.DuplicateIcon, { style: largeActionIconStyle, color: color })), children: "Duplicate" }), jsx_runtime_1.jsx(SequenceWrapAction_1.SequenceWrapAction, { nodePathInfo: selection.nodePathInfo, sequence: track.sequence, sourceActionsDisabled: sourceActionsDisabled }), jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: sourceActionsDisabled, onClick: onDelete, renderIcon: (color) => (jsx_runtime_1.jsx(trash_1.TrashIcon, { style: actionIconStyle, color: color })), children: "Delete" })] }));
186
+ // Pad the larger SVG glyphs so they have similar visible bounds at 22px.
187
+ return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [(freezeFrameMenuItem === null || freezeFrameMenuItem === void 0 ? void 0 : freezeFrameMenuItem.type) === 'item' ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: Boolean(freezeFrameMenuItem.disabled), iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: () => freezeFrameMenuItem.onClick(freezeFrameMenuItem.id, null), renderIcon: (color) => (jsx_runtime_1.jsx(snowflake_1.SnowflakeIcon, { style: common_1.largeInspectorActionIconStyle, color: color })), children: freezeFrameMenuItem.label })) : null, track.sequence.type === 'video' ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: videoMattingDisabledReason !== undefined, iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: onRemoveBackground, "aria-label": videoMattingDisabledReason, renderIcon: (color) => (jsx_runtime_1.jsx(background_removal_1.BackgroundRemovalIcon, { style: common_1.largeInspectorActionIconStyle, color: color, viewBox: "-32 -32 704 704" })), children: "Remove background" })) : null, track.sequence.type === 'video' ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: splitVideoFromAudioDisabledReason !== undefined, iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: onSplitVideoFromAudio, "aria-label": splitVideoFromAudioDisabledReason, renderIcon: (color) => (jsx_runtime_1.jsx(audio_1.AudioIcon, { style: common_1.largeInspectorActionIconStyle, color: color, viewBox: "-96 -64 704 640", preserveAspectRatio: "none" })), children: "Split video from audio" })) : null, mediaSequence !== null && (mediaMetadata === null || mediaMetadata === void 0 ? void 0 : mediaMetadata.hasAudioTrack) !== false ? (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: transcriptionDisabledReason !== undefined, iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: onGenerateCaptions, "aria-label": transcriptionDisabledReason, renderIcon: (color) => (jsx_runtime_1.jsx(transcription_1.TranscriptionIcon, { style: common_1.largeInspectorActionIconStyle, color: color, viewBox: "-96 -16 704 544", preserveAspectRatio: "none" })), children: "Generate captions" })) : null, jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: sourceActionsDisabled, iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: onDuplicate, renderIcon: (color) => (jsx_runtime_1.jsx(duplicate_1.DuplicateIcon, { style: common_1.largeInspectorActionIconStyle, color: color, viewBox: "-32 -32 704 704" })), children: "Duplicate" }), jsx_runtime_1.jsx(SequenceWrapAction_1.SequenceWrapAction, { nodePathInfo: selection.nodePathInfo, sequence: track.sequence, sourceActionsDisabled: sourceActionsDisabled }), jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: sourceActionsDisabled, iconContainerStyle: common_1.largeInspectorActionIconContainerStyle, onClick: onDelete, renderIcon: (color) => (jsx_runtime_1.jsx(trash_1.TrashIcon, { style: common_1.largeInspectorActionIconStyle, color: color, viewBox: "-120 -96 688 688" })), children: "Delete" })] }));
197
188
  };
198
189
  const SequenceExpandedInspector = ({ track, readOnlyStudio }) => {
199
190
  const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
@@ -11,6 +11,7 @@ const InspectorPanelLayout_1 = require("../InspectorPanelLayout");
11
11
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
12
12
  const SegmentedButton_1 = require("../SegmentedButton");
13
13
  const wrap_jsx_node_api_1 = require("../wrap-jsx-node-api");
14
+ const common_1 = require("./common");
14
15
  const wrapperNames = ['AbsoluteFill', 'Sequence', 'HtmlInCanvas'];
15
16
  const buttonStyle = {
16
17
  borderRadius: 4,
@@ -25,14 +26,6 @@ const segmentStyle = {
25
26
  padding: `0 ${InspectorPanelLayout_1.INSPECTOR_PANEL_HORIZONTAL_PADDING - 4}px`,
26
27
  width: '100%',
27
28
  };
28
- const iconStyle = { height: 22, width: 22 };
29
- const iconContainerStyle = {
30
- flexShrink: 0,
31
- height: 22,
32
- marginLeft: -2,
33
- marginRight: -2,
34
- width: 22,
35
- };
36
29
  const labelStyle = {
37
30
  flex: 1,
38
31
  fontFamily: 'sans-serif',
@@ -123,21 +116,20 @@ const SequenceWrapAction = ({ nodePathInfo, sequence, sourceActionsDisabled }) =
123
116
  })), [busy, eligibility, onWrap]);
124
117
  const segments = (0, react_1.useMemo)(() => [
125
118
  {
126
- ariaLabel: 'Wrap',
119
+ ariaLabel: nodePathInfo.numberOfSequencesWithThisNodePath > 1
120
+ ? `Wrap all ${nodePathInfo.numberOfSequencesWithThisNodePath} instances of this JSX element`
121
+ : 'Wrap this JSX element',
127
122
  buttonId: null,
128
123
  disabled: busy,
129
124
  idleColor: colors_1.LIGHT_TEXT,
130
125
  leaveLeftSpace: false,
131
126
  onOpenChange: null,
132
127
  renderContent: (color) => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
133
- jsx_runtime_1.jsx("span", { style: iconContainerStyle, children: jsx_runtime_1.jsx(wrap_1.WrapIcon, { color: color, style: iconStyle }) }), jsx_runtime_1.jsx("span", { style: labelStyle, children: "Wrap" }), jsx_runtime_1.jsx("span", { style: caretStyle, children: jsx_runtime_1.jsx(caret_1.CaretDown, { color: color }) })
128
+ jsx_runtime_1.jsx("span", { style: common_1.largeInspectorActionIconContainerStyle, children: jsx_runtime_1.jsx(wrap_1.WrapIcon, { color: color, style: common_1.largeInspectorActionIconStyle }) }), jsx_runtime_1.jsx("span", { style: labelStyle, children: "Wrap" }), jsx_runtime_1.jsx("span", { style: caretStyle, children: jsx_runtime_1.jsx(caret_1.CaretDown, { color: color }) })
134
129
  ] })),
135
130
  segmentId: 'wrap',
136
131
  selectedId: null,
137
132
  style: segmentStyle,
138
- title: nodePathInfo.numberOfSequencesWithThisNodePath > 1
139
- ? `Wrap all ${nodePathInfo.numberOfSequencesWithThisNodePath} instances of this JSX element`
140
- : 'Wrap this JSX element',
141
133
  tooltipLabel: null,
142
134
  type: 'menu',
143
135
  values,
@@ -146,6 +138,6 @@ const SequenceWrapAction = ({ nodePathInfo, sequence, sourceActionsDisabled }) =
146
138
  if (!(eligibility === null || eligibility === void 0 ? void 0 : eligibility.canWrap) || sourceActionsDisabled) {
147
139
  return null;
148
140
  }
149
- return (jsx_runtime_1.jsx(SegmentedButton_1.SegmentedButton, { segments: segments, style: buttonStyle, title: null }));
141
+ return jsx_runtime_1.jsx(SegmentedButton_1.SegmentedButton, { segments: segments, style: buttonStyle });
150
142
  };
151
143
  exports.SequenceWrapAction = SequenceWrapAction;
@@ -18,7 +18,7 @@ export declare const InspectorBackAction: React.FC<{
18
18
  readonly children: React.ReactNode;
19
19
  readonly disabled: boolean;
20
20
  readonly onClick: React.MouseEventHandler<HTMLButtonElement>;
21
- readonly title: string;
21
+ readonly 'aria-label': string;
22
22
  }>;
23
23
  export declare const InspectorMessage: React.FC<{
24
24
  readonly children: React.ReactNode;
@@ -27,6 +27,10 @@ export declare const InspectorDetailRow: React.FC<{
27
27
  readonly label: React.ReactNode | ((hovered: boolean) => React.ReactNode);
28
28
  readonly children: React.ReactNode;
29
29
  }>;
30
+ export declare const inspectorActionIconStyle: React.CSSProperties;
31
+ export declare const inspectorActionIconContainerStyle: React.CSSProperties;
32
+ export declare const largeInspectorActionIconStyle: React.CSSProperties;
33
+ export declare const largeInspectorActionIconContainerStyle: React.CSSProperties;
30
34
  export type InspectorQuickActionProps = {
31
35
  readonly children: React.ReactNode;
32
36
  readonly disabled: boolean;
@@ -35,7 +39,7 @@ export type InspectorQuickActionProps = {
35
39
  readonly renderIcon?: (color: string) => React.ReactNode;
36
40
  readonly size?: 'default' | 'compact';
37
41
  readonly style?: React.CSSProperties;
38
- readonly title?: string;
42
+ readonly 'aria-label'?: string;
39
43
  };
40
44
  export declare const InspectorQuickAction: React.FC<InspectorQuickActionProps>;
41
45
  export declare const InspectorDefaultPropsWarnings: React.FC<{
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.InspectorDefaultPropsWarnings = exports.InspectorQuickAction = exports.InspectorDetailRow = exports.InspectorMessage = exports.InspectorBackAction = exports.InspectorSection = exports.InspectorSectionBody = exports.InspectorQuickActionsSection = exports.InspectorSectionHeader = void 0;
6
+ exports.InspectorDefaultPropsWarnings = exports.InspectorQuickAction = exports.largeInspectorActionIconContainerStyle = exports.largeInspectorActionIconStyle = exports.inspectorActionIconContainerStyle = exports.inspectorActionIconStyle = exports.InspectorDetailRow = exports.InspectorMessage = exports.InspectorBackAction = exports.InspectorSection = exports.InspectorSectionBody = exports.InspectorQuickActionsSection = exports.InspectorSectionHeader = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const react_1 = __importDefault(require("react"));
9
9
  const colors_1 = require("../../helpers/colors");
@@ -41,8 +41,8 @@ const backArrowIcon = {
41
41
  const BackArrow = ({ color }) => {
42
42
  return (jsx_runtime_1.jsx("svg", { viewBox: "0 0 512 512", style: backArrowIcon, children: jsx_runtime_1.jsx("path", { d: "M7 239c-9.4 9.4-9.4 24.6 0 33.9L175 441c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L81.9 280 488 280c13.3 0 24-10.7 24-24s-10.7-24-24-24L81.9 232 209 105c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 239z", fill: color }) }));
43
43
  };
44
- const InspectorBackAction = ({ children, disabled, onClick, title }) => {
45
- return (jsx_runtime_1.jsx("div", { style: styles_1.inspectorQuickActionsSection, children: jsx_runtime_1.jsx(exports.InspectorQuickAction, { disabled: disabled, onClick: onClick, renderIcon: (color) => jsx_runtime_1.jsx(BackArrow, { color: color }), title: title, children: children }) }));
44
+ const InspectorBackAction = ({ children, disabled, onClick, 'aria-label': ariaLabel }) => {
45
+ return (jsx_runtime_1.jsx("div", { style: styles_1.inspectorQuickActionsSection, children: jsx_runtime_1.jsx(exports.InspectorQuickAction, { disabled: disabled, onClick: onClick, renderIcon: (color) => jsx_runtime_1.jsx(BackArrow, { color: color }), "aria-label": ariaLabel, children: children }) }));
46
46
  };
47
47
  exports.InspectorBackAction = InspectorBackAction;
48
48
  const InspectorMessage = ({ children }) => jsx_runtime_1.jsx("div", { style: styles_1.centeredMessage, children: children });
@@ -92,15 +92,31 @@ const inlineLabelText = {
92
92
  WebkitUserSelect: 'none',
93
93
  whiteSpace: 'nowrap',
94
94
  };
95
- const inlineLabelIcon = {
95
+ const INSPECTOR_ACTION_ICON_SIZE = 18;
96
+ exports.inspectorActionIconStyle = {
97
+ display: 'block',
98
+ height: INSPECTOR_ACTION_ICON_SIZE,
99
+ width: INSPECTOR_ACTION_ICON_SIZE,
100
+ };
101
+ exports.inspectorActionIconContainerStyle = {
96
102
  alignItems: 'center',
97
103
  display: 'flex',
98
104
  flexShrink: 0,
99
- height: 18,
105
+ height: INSPECTOR_ACTION_ICON_SIZE,
100
106
  justifyContent: 'center',
101
- width: 18,
107
+ width: INSPECTOR_ACTION_ICON_SIZE,
108
+ };
109
+ exports.largeInspectorActionIconStyle = {
110
+ height: 22,
111
+ width: 22,
112
+ };
113
+ exports.largeInspectorActionIconContainerStyle = {
114
+ height: 22,
115
+ marginLeft: -2,
116
+ marginRight: -2,
117
+ width: 22,
102
118
  };
103
- const InspectorQuickAction = ({ children, disabled, iconContainerStyle, onClick, renderIcon, size = 'default', style, title, }) => {
119
+ const InspectorQuickAction = ({ children, disabled, iconContainerStyle, onClick, renderIcon, size = 'default', style, 'aria-label': ariaLabel, }) => {
104
120
  const showsHover = !disabled && onClick !== null;
105
121
  const buttonStyle = react_1.default.useMemo(() => ({
106
122
  ...(disabled ? inlineLabelButtonDisabled : inlineLabelButton),
@@ -115,9 +131,9 @@ const InspectorQuickAction = ({ children, disabled, iconContainerStyle, onClick,
115
131
  ...(size === 'compact' ? compactInlineLabelButton : null),
116
132
  ...style,
117
133
  }), [disabled, showsHover, size, style]);
118
- const mainContent = (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [renderIcon ? (jsx_runtime_1.jsx("span", { style: { ...inlineLabelIcon, ...iconContainerStyle }, children: renderIcon(colors_1.CURRENT_COLOR) })) : null, jsx_runtime_1.jsx("span", { style: inlineLabelText, children: children })
134
+ const mainContent = (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [renderIcon ? (jsx_runtime_1.jsx("span", { style: { ...exports.inspectorActionIconContainerStyle, ...iconContainerStyle }, children: renderIcon(colors_1.CURRENT_COLOR) })) : null, jsx_runtime_1.jsx("span", { style: inlineLabelText, children: children })
119
135
  ] }));
120
- const mainAction = onClick ? (jsx_runtime_1.jsx("button", { className: `__remotion-inspector-quick-action ${hoverable_1.HOVERABLE_CLASS_NAME}`, type: "button", disabled: disabled, style: buttonStyle, title: title, onClick: onClick, children: mainContent })) : (jsx_runtime_1.jsx("div", { className: hoverable_1.HOVERABLE_CLASS_NAME, style: buttonStyle, title: title, children: mainContent }));
136
+ const mainAction = onClick ? (jsx_runtime_1.jsx("button", { className: `__remotion-inspector-quick-action ${hoverable_1.HOVERABLE_CLASS_NAME}`, type: "button", disabled: disabled, style: buttonStyle, "aria-label": ariaLabel, onClick: onClick, children: mainContent })) : (jsx_runtime_1.jsx("div", { className: hoverable_1.HOVERABLE_CLASS_NAME, style: buttonStyle, "aria-label": ariaLabel, role: "group", children: mainContent }));
121
137
  return mainAction;
122
138
  };
123
139
  exports.InspectorQuickAction = InspectorQuickAction;
@@ -248,7 +248,7 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
248
248
  disabled: false,
249
249
  onClick: () => (0, timeline_asset_link_1.openTimelineAssetLink)(linkInfo, selectAsset),
250
250
  renderIcon: (color) => (jsx_runtime_1.jsx(AssetFileIcon_1.AssetFileIcon, { color: color, fileType: (0, get_preview_file_type_1.getPreviewFileType)(linkInfo.assetPath), style: assetSelectorIcon })),
251
- title: linkInfo.assetPath,
251
+ 'aria-label': linkInfo.assetPath,
252
252
  };
253
253
  }
254
254
  if ((linkInfo === null || linkInfo === void 0 ? void 0 : linkInfo.kind) === 'remote') {
@@ -259,7 +259,7 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
259
259
  ] })),
260
260
  disabled: false,
261
261
  onClick: () => (0, timeline_asset_link_1.openTimelineAssetLink)(linkInfo, selectAsset),
262
- title: linkInfo.href,
262
+ 'aria-label': linkInfo.href,
263
263
  };
264
264
  }
265
265
  return null;
@@ -563,19 +563,19 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
563
563
  validatedLocation.source,
564
564
  ]);
565
565
  const borderRadiusAction = borderRadiusGroup ? (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: borderRadiusConversion === null ||
566
- previewServerState.type !== 'connected', onClick: onConvertBorderRadius, title: borderRadiusConversion === null
566
+ previewServerState.type !== 'connected', onClick: onConvertBorderRadius, "aria-label": borderRadiusConversion === null
567
567
  ? borderRadiusUsesShorthand
568
568
  ? 'A static border radius is required to use individual corners'
569
569
  : 'All four corners must have the same static value'
570
570
  : borderRadiusUsesShorthand
571
571
  ? 'Use individual corner radii'
572
572
  : 'Use one border radius value', renderAction: (color) => borderRadiusUsesShorthand ? (jsx_runtime_1.jsx(fullscreen_1.FullscreenIcon, { color: color, style: borderRadiusToggleIcon })) : (jsx_runtime_1.jsx(border_radius_1.BorderRadiusIcon, { color: color, style: borderRadiusToggleIcon })) })) : null;
573
- const transform3DAction = (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: automaticallyEnabled3DTransform, onClick: onToggle3DTransform, title: automaticallyEnabled3DTransform
573
+ const transform3DAction = (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: automaticallyEnabled3DTransform, onClick: onToggle3DTransform, "aria-label": automaticallyEnabled3DTransform
574
574
  ? '3D controls are required by the current transform values'
575
575
  : show3DTransformControls
576
576
  ? 'Hide 3D transform controls'
577
577
  : 'Show 3D transform controls', hoveredColor: show3DTransformControls ? colors_1.BLUE : undefined, unhoveredColor: show3DTransformControls ? colors_1.BLUE : colors_1.LIGHT_TEXT, renderAction: (color) => (jsx_runtime_1.jsx(cube_1.CubeIcon, { color: color, style: transform3DToggleIcon })) }));
578
- const effectsHeader = (jsx_runtime_1.jsx(CollapsibleInspectorSectionHeader_1.CollapsibleInspectorSectionHeader, { action: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: !canAddEffect, onClick: onAddEffect, title: canAddEffect ? 'Add effect' : undefined, renderAction: (color) => jsx_runtime_1.jsx(plus_1.Plus, { color: color, style: plusIcon }) }), expanded: effectsExpanded, label: "Effects", onToggle: hasEffects ? () => toggleAdditionalSection('effects') : null }));
578
+ const effectsHeader = (jsx_runtime_1.jsx(CollapsibleInspectorSectionHeader_1.CollapsibleInspectorSectionHeader, { action: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: !canAddEffect, onClick: onAddEffect, "aria-label": canAddEffect ? 'Add effect' : undefined, renderAction: (color) => jsx_runtime_1.jsx(plus_1.Plus, { color: color, style: plusIcon }) }), expanded: effectsExpanded, label: "Effects", onToggle: hasEffects ? () => toggleAdditionalSection('effects') : null }));
579
579
  const renderRow = ({ node, depth }) => {
580
580
  return (jsx_runtime_1.jsx(TimelineRowLayoutContext_1.TimelineRowLayoutContext.Provider, { value: TimelineRowLayoutContext_1.INSPECTOR_TIMELINE_ROW_LAYOUT, children: jsx_runtime_1.jsx(TimelineExpandedRow_1.TimelineExpandedRow, { node: node, depth: depth, nestedDepth: 0, rowDepthBase: 0, getIsExpanded: getIsExpanded, toggleTrack: toggleTrack, validatedLocation: validatedLocation, nodePath: nodePathInfo.sequenceSubscriptionKey, schema: schema, keyframeDisplayOffset: keyframeDisplayOffset, keyframePlaybackRate: keyframePlaybackRate, keyframeControlsMode: "inspector" }) }, JSON.stringify(node.nodePathInfo)));
581
581
  };