@remotion/studio 4.0.524 → 4.0.526

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 (230) hide show
  1. package/dist/api/focus-default-props-path.js +7 -1
  2. package/dist/api/restart-studio.d.ts +1 -1
  3. package/dist/api/restart-studio.js +1 -1
  4. package/dist/components/ActionTooltip.d.ts +2 -0
  5. package/dist/components/ActionTooltip.js +14 -4
  6. package/dist/components/AgentPrompt.d.ts +6 -0
  7. package/dist/components/AgentPrompt.js +107 -0
  8. package/dist/components/AppLaunchButton.js +2 -0
  9. package/dist/components/AssetFileIcon.js +2 -0
  10. package/dist/components/AssetSelectorItem.d.ts +1 -23
  11. package/dist/components/AssetSelectorItem.js +10 -200
  12. package/dist/components/AssetSelectorModal.d.ts +6 -0
  13. package/dist/components/AssetSelectorModal.js +174 -0
  14. package/dist/components/Canvas.js +21 -4
  15. package/dist/components/CaptionInspector.js +9 -3
  16. package/dist/components/CheckboardToggle.js +2 -1
  17. package/dist/{error-overlay/remotion-overlay → components}/CodeFrame.d.ts +2 -0
  18. package/dist/components/CodeFrame.js +77 -0
  19. package/dist/components/ColorPicker/AlphaSlider.js +1 -1
  20. package/dist/components/ColorPicker/HueSlider.js +1 -1
  21. package/dist/components/ColorPicker/SaturationValueArea.js +1 -1
  22. package/dist/components/CompositionSelector.js +1 -0
  23. package/dist/components/CompositionSelectorItem.js +7 -17
  24. package/dist/components/CurrentAsset.js +5 -4
  25. package/dist/components/EditorGuides/Guide.js +1 -1
  26. package/dist/components/ElementInstallConfirmation.js +100 -61
  27. package/dist/components/FilePreview.js +4 -0
  28. package/dist/components/FixComputedValueModal.js +64 -96
  29. package/dist/components/FullscreenToggle.js +1 -1
  30. package/dist/components/GenerateWithAgentModal.d.ts +9 -0
  31. package/dist/components/GenerateWithAgentModal.js +39 -0
  32. package/dist/components/GlobalKeybindings.js +14 -0
  33. package/dist/components/InlineEditableTitle.js +2 -0
  34. package/dist/components/InspectorLocationCopy.js +1 -1
  35. package/dist/components/InspectorOpenInEditor.d.ts +1 -0
  36. package/dist/components/InspectorOpenInEditor.js +25 -18
  37. package/dist/components/InspectorPanel/CollapsibleInspectorSection.d.ts +7 -0
  38. package/dist/components/InspectorPanel/CollapsibleInspectorSection.js +14 -0
  39. package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.d.ts +1 -1
  40. package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +19 -8
  41. package/dist/components/InspectorPanel/CompositionInspector.js +30 -13
  42. package/dist/components/InspectorPanel/CompositionInspectorHeader.js +6 -7
  43. package/dist/components/InspectorPanel/CompositionMetadata.js +4 -0
  44. package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +6 -12
  45. package/dist/components/InspectorPanel/ElementLibraryButton.js +2 -0
  46. package/dist/components/InspectorPanel/GuideInspector.js +2 -3
  47. package/dist/components/InspectorPanel/KeyframeSettings.js +5 -6
  48. package/dist/components/InspectorPanel/MultiSequenceInspector.js +2 -1
  49. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +4 -12
  50. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +4 -3
  51. package/dist/components/InspectorPanel/common.d.ts +4 -0
  52. package/dist/components/InspectorPanel/common.js +14 -2
  53. package/dist/components/InspectorPanel/styles.d.ts +0 -3
  54. package/dist/components/InspectorPanel/styles.js +1 -27
  55. package/dist/components/InspectorPanel/use-composition-actions.d.ts +2 -0
  56. package/dist/components/InspectorPanel/use-composition-actions.js +15 -0
  57. package/dist/components/InspectorPanel/use-inspector-section-expanded.d.ts +1 -0
  58. package/dist/components/InspectorPanel/use-inspector-section-expanded.js +21 -0
  59. package/dist/components/InspectorSequenceSection.js +61 -43
  60. package/dist/components/InspectorSourceLocation.js +1 -0
  61. package/dist/components/KeyboardShortcutsSettings.js +12 -4
  62. package/dist/components/LoopToggle.js +2 -1
  63. package/dist/components/LutPreview.d.ts +4 -0
  64. package/dist/components/LutPreview.js +192 -0
  65. package/dist/components/Menu/MenuItem.js +1 -2
  66. package/dist/components/MenuBuildIndicator.js +1 -1
  67. package/dist/components/MenuCompositionName.js +4 -9
  68. package/dist/components/Modals.js +4 -6
  69. package/dist/components/ModelsSettings.js +15 -4
  70. package/dist/components/MuteToggle.js +2 -1
  71. package/dist/components/NewComposition/CodemodFooter.js +1 -0
  72. package/dist/components/NewComposition/DeleteComposition.js +42 -6
  73. package/dist/components/NewComposition/DeleteFolder.js +1 -0
  74. package/dist/components/NewComposition/DuplicateComposition.js +5 -0
  75. package/dist/components/NewComposition/InputDragger.js +2 -2
  76. package/dist/components/NewComposition/NewFolder.js +29 -2
  77. package/dist/components/NewComposition/RenameFolder.js +1 -0
  78. package/dist/components/NewComposition/duplicate-composition-api.d.ts +3 -2
  79. package/dist/components/NewComposition/duplicate-composition-api.js +9 -2
  80. package/dist/components/OutlineToggle.js +2 -1
  81. package/dist/components/PlayPause.js +1 -1
  82. package/dist/components/Preview.js +0 -3
  83. package/dist/components/PreviewToolbar.js +3 -6
  84. package/dist/components/PreviewToolbarOverflowButton.js +2 -1
  85. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
  86. package/dist/components/QuickSwitcher/QuickSwitcherResult.js +4 -9
  87. package/dist/components/RenderButton.js +40 -4
  88. package/dist/components/RenderModal/SchemaEditor/scroll-to-default-props-path.d.ts +1 -0
  89. package/dist/components/RenderModal/SchemaEditor/scroll-to-default-props-path.js +2 -1
  90. package/dist/components/RenderModal/WebRenderModal.js +10 -2
  91. package/dist/components/RenderModal/WebRenderModalBasic.js +1 -1
  92. package/dist/components/RenderModal/render-modals.js +3 -0
  93. package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +1 -1
  94. package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +1 -1
  95. package/dist/components/RenderQueue/actions.d.ts +2 -1
  96. package/dist/components/RenderQueue/actions.js +2 -1
  97. package/dist/components/RendersTab.js +2 -0
  98. package/dist/components/RulersAndGuidesToggle.js +2 -1
  99. package/dist/components/SegmentedButton.d.ts +1 -0
  100. package/dist/components/SegmentedButton.js +9 -3
  101. package/dist/components/SelectedOutlineElement.js +22 -6
  102. package/dist/components/SelectedOutlinePolygon.js +4 -2
  103. package/dist/components/SettingsButton.js +11 -2
  104. package/dist/components/SettingsContext.d.ts +8 -0
  105. package/dist/components/SettingsContext.js +57 -2
  106. package/dist/components/SettingsModal.d.ts +1 -2
  107. package/dist/components/SettingsModal.js +27 -6
  108. package/dist/components/SettingsModalFooter.js +17 -3
  109. package/dist/components/SidebarCollapserControls.js +1 -1
  110. package/dist/components/SkillsSettings.d.ts +5 -0
  111. package/dist/components/SkillsSettings.js +49 -15
  112. package/dist/components/SnappingToggle.js +2 -1
  113. package/dist/components/Splitter/SplitterHandle.js +1 -2
  114. package/dist/components/Tabs/vertical.d.ts +1 -1
  115. package/dist/components/Tabs/vertical.js +16 -2
  116. package/dist/components/Timeline/EasingEditorModal.js +2 -2
  117. package/dist/components/Timeline/Timeline.js +10 -11
  118. package/dist/components/Timeline/TimelineAssetField.js +178 -9
  119. package/dist/components/Timeline/TimelineDragHandler.js +1 -2
  120. package/dist/components/Timeline/TimelineEffectItem.d.ts +1 -0
  121. package/dist/components/Timeline/TimelineEffectItem.js +2 -2
  122. package/dist/components/Timeline/TimelineEffectPropItem.d.ts +1 -0
  123. package/dist/components/Timeline/TimelineEffectPropItem.js +2 -2
  124. package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
  125. package/dist/components/Timeline/TimelineHeightContainer.js +11 -1
  126. package/dist/components/Timeline/TimelineInOutDragHandler.js +1 -2
  127. package/dist/components/Timeline/TimelineKeyframeControls.js +15 -1
  128. package/dist/components/Timeline/TimelineLayerChildren.d.ts +3 -3
  129. package/dist/components/Timeline/TimelineLayerChildren.js +11 -9
  130. package/dist/components/Timeline/TimelineLayerEye.d.ts +1 -1
  131. package/dist/components/Timeline/TimelineLayerEye.js +6 -3
  132. package/dist/components/Timeline/TimelineList.js +9 -3
  133. package/dist/components/Timeline/TimelineSchemaField.js +10 -7
  134. package/dist/components/Timeline/TimelineSelection.d.ts +17 -4
  135. package/dist/components/Timeline/TimelineSelection.js +121 -52
  136. package/dist/components/Timeline/TimelineSequence.js +8 -8
  137. package/dist/components/Timeline/TimelineSequenceItem.d.ts +2 -0
  138. package/dist/components/Timeline/TimelineSequenceItem.js +29 -23
  139. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +3 -12
  140. package/dist/components/Timeline/TimelineTranslateField.js +25 -12
  141. package/dist/components/Timeline/TimelineVirtualization.d.ts +3 -3
  142. package/dist/components/Timeline/TimelineZoomControls.js +1 -1
  143. package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +3 -1
  144. package/dist/components/Timeline/get-sequence-context-menu-items.js +152 -51
  145. package/dist/components/Timeline/normalize-font-weight-for-keyframe.d.ts +1 -0
  146. package/dist/components/Timeline/normalize-font-weight-for-keyframe.js +19 -0
  147. package/dist/components/Timeline/timeline-display-groups.d.ts +9 -0
  148. package/dist/components/Timeline/timeline-display-groups.js +66 -0
  149. package/dist/components/Timeline/timeline-field-display-utils.js +4 -2
  150. package/dist/components/Timeline/timeline-translate-utils.d.ts +17 -0
  151. package/dist/components/Timeline/timeline-translate-utils.js +53 -12
  152. package/dist/components/Timeline/use-open-sequence-in-apps.d.ts +2 -0
  153. package/dist/components/Timeline/use-open-sequence-in-apps.js +17 -0
  154. package/dist/components/Timeline/use-timeline-asset-drop.js +20 -6
  155. package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +2 -1
  156. package/dist/components/Timeline/use-timeline-expanded-tree.js +1 -2
  157. package/dist/components/Timeline/use-timeline-keyframe-drag.js +4 -4
  158. package/dist/components/TimelineCombobox.js +1 -0
  159. package/dist/components/UndoRedoButtons.js +11 -0
  160. package/dist/components/UpdateStatusContext.d.ts +2 -2
  161. package/dist/components/UpdateStatusContext.js +6 -7
  162. package/dist/components/UpdatesSettings.js +6 -6
  163. package/dist/components/WebMcp.js +40 -41
  164. package/dist/components/asset-context-menu.d.ts +32 -0
  165. package/dist/components/asset-context-menu.js +242 -0
  166. package/dist/components/composition-menu-items.d.ts +4 -6
  167. package/dist/components/composition-menu-items.js +212 -42
  168. package/dist/components/folder-menu-items.js +44 -0
  169. package/dist/components/get-open-in-menu-items.d.ts +6 -5
  170. package/dist/components/get-open-in-menu-items.js +16 -10
  171. package/dist/components/import-assets.d.ts +24 -1
  172. package/dist/components/import-assets.js +3 -1
  173. package/dist/components/keyboard-shortcuts.d.ts +4 -4
  174. package/dist/components/keyboard-shortcuts.js +5 -0
  175. package/dist/components/selected-outline-order.js +18 -12
  176. package/dist/components/use-open-in-menu-apps.d.ts +14 -0
  177. package/dist/components/use-open-in-menu-apps.js +33 -0
  178. package/dist/error-overlay/remotion-overlay/ErrorDisplay.js +2 -2
  179. package/dist/error-overlay/remotion-overlay/OpenInEditor.d.ts +1 -0
  180. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +3 -3
  181. package/dist/error-overlay/remotion-overlay/StackFrame.d.ts +5 -1
  182. package/dist/error-overlay/remotion-overlay/StackFrame.js +26 -19
  183. package/dist/esm/{LazyModels-hc33szyn.mjs → LazyModels-mtggyjye.mjs} +3 -3
  184. package/dist/esm/{LazyModels-sg40rjw6.mjs → LazyModels-nk7py0zt.mjs} +3 -3
  185. package/dist/esm/{TranscriptionModal-3ctnxpt6.mjs → TranscriptionModal-ymnx1c7m.mjs} +6 -6
  186. package/dist/esm/{VideoMattingModal-b0r7e60n.mjs → VideoMattingModal-05vpczks.mjs} +6 -6
  187. package/dist/esm/{index-er3mh6em.mjs → index-0gewwxse.mjs} +7031 -5834
  188. package/dist/esm/{index-q5xv20xx.mjs → index-4dsz9035.mjs} +8 -8
  189. package/dist/esm/{index-wbmp5srk.mjs → index-5bfxbpca.mjs} +1 -1
  190. package/dist/esm/{index-e3zwf3e7.mjs → index-5gd8k9yv.mjs} +1 -1
  191. package/dist/esm/{index-c37kme2v.mjs → index-bs39wngg.mjs} +4929 -3801
  192. package/dist/esm/{index-yfrysr5f.mjs → index-cdy8v54v.mjs} +17 -3
  193. package/dist/esm/{index-9qtvmwtx.mjs → index-eb5txqp6.mjs} +12 -9
  194. package/dist/esm/{index-q2epbw93.mjs → index-f97r9e2g.mjs} +4 -21
  195. package/dist/esm/{index-2j3d1g81.mjs → index-g7k2dvar.mjs} +1 -1
  196. package/dist/esm/{index-1b9skrrd.mjs → index-x40wwfmt.mjs} +3 -3
  197. package/dist/esm/index.mjs +12 -6
  198. package/dist/esm/internals.mjs +7 -7
  199. package/dist/esm/previewEntry.mjs +7 -7
  200. package/dist/helpers/client-id.d.ts +1 -0
  201. package/dist/helpers/client-id.js +8 -4
  202. package/dist/helpers/cube-lut.d.ts +12 -0
  203. package/dist/helpers/cube-lut.js +160 -0
  204. package/dist/helpers/get-git-menu-item.d.ts +4 -0
  205. package/dist/helpers/get-git-menu-item.js +8 -1
  206. package/dist/helpers/get-preview-file-type.d.ts +1 -1
  207. package/dist/helpers/get-preview-file-type.js +3 -0
  208. package/dist/helpers/get-sequence-double-click-action.d.ts +3 -3
  209. package/dist/helpers/get-sequence-double-click-action.js +2 -2
  210. package/dist/helpers/open-in-editor.d.ts +5 -2
  211. package/dist/helpers/open-in-editor.js +12 -4
  212. package/dist/helpers/pointer-session.d.ts +1 -0
  213. package/dist/helpers/pointer-session.js +10 -1
  214. package/dist/helpers/settings-tab-availability.d.ts +14 -0
  215. package/dist/helpers/settings-tab-availability.js +35 -0
  216. package/dist/helpers/studio-runtime-config.d.ts +1 -1
  217. package/dist/helpers/use-create-composition.js +5 -0
  218. package/dist/helpers/use-keybinding.d.ts +1 -1
  219. package/dist/helpers/use-keyboard-shortcut-label.d.ts +2 -2
  220. package/dist/helpers/use-media-metadata.js +5 -1
  221. package/dist/helpers/use-menu-structure.js +21 -13
  222. package/dist/helpers/use-rename-composition.js +6 -1
  223. package/dist/icons/lut.d.ts +4 -0
  224. package/dist/icons/lut.js +6 -0
  225. package/dist/icons/sparkles.d.ts +4 -0
  226. package/dist/icons/sparkles.js +6 -0
  227. package/dist/state/modals.d.ts +25 -3
  228. package/dist/state/z-index.js +1 -3
  229. package/package.json +19 -19
  230. package/dist/error-overlay/remotion-overlay/CodeFrame.js +0 -62
@@ -6,6 +6,10 @@ export declare const InspectorSectionHeader: React.FC<{
6
6
  export declare const InspectorQuickActionsSection: React.FC<{
7
7
  readonly children: React.ReactNode;
8
8
  }>;
9
+ export declare const InspectorSectionBody: React.FC<{
10
+ readonly children: React.ReactNode;
11
+ readonly expanded: boolean;
12
+ }>;
9
13
  export declare const InspectorSection: React.FC<{
10
14
  readonly children: React.ReactNode;
11
15
  readonly header: React.ReactNode;
@@ -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.InspectorQuickActionsSection = exports.InspectorSectionHeader = void 0;
6
+ exports.InspectorDefaultPropsWarnings = exports.InspectorQuickAction = 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");
@@ -16,9 +16,21 @@ const InspectorSectionHeader = ({ children }) => jsx_runtime_1.jsx("div", { styl
16
16
  exports.InspectorSectionHeader = InspectorSectionHeader;
17
17
  const InspectorQuickActionsSection = ({ children }) => jsx_runtime_1.jsx("div", { style: styles_1.inspectorQuickActionsSection, children: children });
18
18
  exports.InspectorQuickActionsSection = InspectorQuickActionsSection;
19
+ const collapsedSectionBody = {
20
+ ...styles_1.inspectorSectionBody,
21
+ display: 'none',
22
+ };
23
+ const InspectorSectionBody = ({ children, expanded }) => {
24
+ if (children === null) {
25
+ return null;
26
+ }
27
+ return (jsx_runtime_1.jsx("div", { hidden: !expanded, style: expanded ? styles_1.inspectorSectionBody : collapsedSectionBody, children: children }));
28
+ };
29
+ exports.InspectorSectionBody = InspectorSectionBody;
19
30
  const InspectorSection = ({ children, header }) => {
20
31
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
21
- jsx_runtime_1.jsx(exports.InspectorSectionHeader, { children: header }), children === null ? null : (jsx_runtime_1.jsx("div", { style: styles_1.inspectorSectionBody, children: children }))] }));
32
+ jsx_runtime_1.jsx(exports.InspectorSectionHeader, { children: header }), jsx_runtime_1.jsx(exports.InspectorSectionBody, { expanded: true, children: children })
33
+ ] }));
22
34
  };
23
35
  exports.InspectorSection = InspectorSection;
24
36
  const backArrowIcon = {
@@ -2,15 +2,12 @@ import type React from 'react';
2
2
  export declare const container: React.CSSProperties;
3
3
  export declare const scrollableContainer: React.CSSProperties;
4
4
  export declare const compositionDefaultPropsSection: React.CSSProperties;
5
- export declare const compositionVisualControlsSection: React.CSSProperties;
6
5
  export declare const inspectorOverviewSection: React.CSSProperties;
7
6
  export declare const sequenceHeaderDivider: React.CSSProperties;
8
7
  export declare const sectionHeader: React.CSSProperties;
9
8
  export declare const inspectorSectionBody: React.CSSProperties;
10
9
  export declare const sequenceHeaderSubtitle: React.CSSProperties;
11
10
  export declare const sectionHeaderRow: React.CSSProperties;
12
- export declare const sectionHeaderTitle: React.CSSProperties;
13
- export declare const sectionHeaderStart: React.CSSProperties;
14
11
  export declare const sectionHeaderEnd: React.CSSProperties;
15
12
  export declare const defaultPropsWarningContainer: React.CSSProperties;
16
13
  export declare const defaultPropsWarningMessages: React.CSSProperties;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.keyframeEditorValue = exports.keyframeEditorRow = exports.detailValue = exports.detailLabel = exports.detailRow = exports.guideDetailsContainer = exports.detailsBeforeInlineAction = exports.inspectorQuickActionsSection = exports.detailsWithInlineAction = exports.detailsContainer = exports.centeredMessage = exports.selectedContainer = exports.resolveLinkStyle = exports.defaultPropsWarningMessages = exports.defaultPropsWarningContainer = exports.sectionHeaderEnd = exports.sectionHeaderStart = exports.sectionHeaderTitle = exports.sectionHeaderRow = exports.sequenceHeaderSubtitle = exports.inspectorSectionBody = exports.sectionHeader = exports.sequenceHeaderDivider = exports.inspectorOverviewSection = exports.compositionVisualControlsSection = exports.compositionDefaultPropsSection = exports.scrollableContainer = exports.container = void 0;
3
+ exports.keyframeEditorValue = exports.keyframeEditorRow = exports.detailValue = exports.detailLabel = exports.detailRow = exports.guideDetailsContainer = exports.detailsBeforeInlineAction = exports.inspectorQuickActionsSection = exports.detailsWithInlineAction = exports.detailsContainer = exports.centeredMessage = exports.selectedContainer = exports.resolveLinkStyle = exports.defaultPropsWarningMessages = exports.defaultPropsWarningContainer = exports.sectionHeaderEnd = exports.sectionHeaderRow = exports.sequenceHeaderSubtitle = exports.inspectorSectionBody = exports.sectionHeader = exports.sequenceHeaderDivider = exports.inspectorOverviewSection = exports.compositionDefaultPropsSection = exports.scrollableContainer = exports.container = void 0;
4
4
  const colors_1 = require("../../helpers/colors");
5
5
  const InspectorPanelLayout_1 = require("../InspectorPanelLayout");
6
6
  const layout_1 = require("../layout");
@@ -22,10 +22,6 @@ exports.compositionDefaultPropsSection = {
22
22
  display: 'flex',
23
23
  flexDirection: 'column',
24
24
  };
25
- exports.compositionVisualControlsSection = {
26
- display: 'flex',
27
- flexDirection: 'column',
28
- };
29
25
  exports.inspectorOverviewSection = {
30
26
  display: 'flex',
31
27
  flexDirection: 'column',
@@ -76,28 +72,6 @@ exports.sectionHeaderRow = {
76
72
  justifyContent: 'space-between',
77
73
  minWidth: 0,
78
74
  };
79
- exports.sectionHeaderTitle = {
80
- alignItems: 'center',
81
- color: colors_1.LIGHT_TEXT,
82
- display: 'flex',
83
- flexShrink: 0,
84
- fontFamily: 'sans-serif',
85
- fontSize: 12,
86
- fontWeight: 'bold',
87
- lineHeight: '16px',
88
- minHeight: 24,
89
- minWidth: 0,
90
- overflow: 'hidden',
91
- textOverflow: 'ellipsis',
92
- userSelect: 'none',
93
- whiteSpace: 'nowrap',
94
- };
95
- exports.sectionHeaderStart = {
96
- alignItems: 'center',
97
- display: 'flex',
98
- gap: 8,
99
- minWidth: 0,
100
- };
101
75
  exports.sectionHeaderEnd = {
102
76
  alignItems: 'center',
103
77
  display: 'flex',
@@ -5,7 +5,9 @@ export declare const useCompositionActions: () => {
5
5
  canShowInsertAsset: boolean;
6
6
  canShowInsertComposition: boolean;
7
7
  canShowInsertSolid: boolean;
8
+ canShowGenerateWithAgent: boolean;
8
9
  insertAsset: () => void;
9
10
  insertComposition: () => void;
10
11
  insertSolid: () => Promise<void>;
12
+ generateWithAgent: () => void;
11
13
  };
@@ -57,6 +57,9 @@ const useCompositionActions = () => {
57
57
  const canInsertAsset = canShowInsertAsset && !isAddingAsset;
58
58
  const canShowInsertComposition = canShowInsertAsset;
59
59
  const canInsertComposition = canShowInsertComposition && !isAddingComposition;
60
+ const canShowGenerateWithAgent = previewInteractive &&
61
+ !window.remotion_isReadOnlyStudio &&
62
+ currentCompositionId !== null;
60
63
  const insertSolid = (0, react_1.useCallback)(async () => {
61
64
  if (!canInsertSolid ||
62
65
  currentCompositionId === null ||
@@ -231,6 +234,16 @@ const useCompositionActions = () => {
231
234
  onCompositionSelected,
232
235
  setSelectedModal,
233
236
  ]);
237
+ const generateWithAgent = (0, react_1.useCallback)(() => {
238
+ var _a;
239
+ if (currentCompositionId === null) {
240
+ return;
241
+ }
242
+ setSelectedModal({
243
+ type: 'generate-with-agent',
244
+ location: (_a = compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.location) !== null && _a !== void 0 ? _a : null,
245
+ });
246
+ }, [compositionComponentInfo, currentCompositionId, setSelectedModal]);
234
247
  return {
235
248
  canInsertAsset,
236
249
  canInsertComposition,
@@ -238,9 +251,11 @@ const useCompositionActions = () => {
238
251
  canShowInsertAsset,
239
252
  canShowInsertComposition,
240
253
  canShowInsertSolid,
254
+ canShowGenerateWithAgent,
241
255
  insertAsset,
242
256
  insertComposition,
243
257
  insertSolid,
258
+ generateWithAgent,
244
259
  };
245
260
  };
246
261
  exports.useCompositionActions = useCompositionActions;
@@ -0,0 +1 @@
1
+ export declare const useInspectorSectionExpanded: (sectionId: string) => readonly [boolean, (expanded: boolean) => void];
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useInspectorSectionExpanded = void 0;
4
+ const react_1 = require("react");
5
+ const persist_boolean_map_1 = require("../../helpers/persist-boolean-map");
6
+ const storageKey = 'remotion.editor.inspectorCollapsedSections';
7
+ const useInspectorSectionExpanded = (sectionId) => {
8
+ const [collapsedSections, setCollapsedSections] = (0, react_1.useState)(() => (0, persist_boolean_map_1.loadPersistedBooleanMap)(storageKey));
9
+ const setExpanded = (0, react_1.useCallback)((expanded) => {
10
+ setCollapsedSections((previous) => ({
11
+ ...previous,
12
+ [sectionId]: !expanded,
13
+ }));
14
+ (0, persist_boolean_map_1.persistBooleanMap)(storageKey, {
15
+ ...(0, persist_boolean_map_1.loadPersistedBooleanMap)(storageKey),
16
+ [sectionId]: !expanded,
17
+ });
18
+ }, [sectionId]);
19
+ return [!collapsedSections[sectionId], setExpanded];
20
+ };
21
+ exports.useInspectorSectionExpanded = useInspectorSectionExpanded;
@@ -21,7 +21,6 @@ const InlineCaptionInspector_1 = require("./InlineCaptionInspector");
21
21
  const CollapsibleInspectorSectionHeader_1 = require("./InspectorPanel/CollapsibleInspectorSectionHeader");
22
22
  const common_1 = require("./InspectorPanel/common");
23
23
  const inspector_section_collapse_1 = require("./InspectorPanel/inspector-section-collapse");
24
- const styles_1 = require("./InspectorPanel/styles");
25
24
  const border_radius_representation_1 = require("./Timeline/border-radius-representation");
26
25
  const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
27
26
  const timeline_asset_link_1 = require("./Timeline/timeline-asset-link");
@@ -51,10 +50,6 @@ const plusIcon = {
51
50
  width: 15,
52
51
  height: 15,
53
52
  };
54
- const effectsHeaderTitle = {
55
- ...styles_1.sectionHeaderTitle,
56
- flexShrink: 1,
57
- };
58
53
  const borderRadiusToggleIcon = {
59
54
  flexShrink: 0,
60
55
  height: 15,
@@ -207,21 +202,30 @@ const hasSequenceControls = (sequence) => {
207
202
  exports.hasSequenceControls = hasSequenceControls;
208
203
  const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation, nodePathInfo, keyframeDisplayOffset, renderTransformControls, }) => {
209
204
  var _a;
205
+ var _b;
210
206
  const { tree, propStatuses, runtimeValues } = (0, use_timeline_expanded_tree_1.useTimelineExpandedTree)({
211
207
  sequence,
212
208
  nodePathInfo,
213
209
  includeTextContent: true,
214
210
  includeSourceControls: true,
215
211
  });
216
- const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
212
+ const { inspectorRevealRequest, selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
217
213
  const selectedEffect = selectedItems.length === 1 &&
218
214
  (selectedItems[0].type === 'sequence-effect' ||
219
215
  selectedItems[0].type === 'sequence-effect-prop')
220
216
  ? selectedItems[0]
221
217
  : null;
222
218
  const selectedEffectKey = selectedEffect === null ? null : (0, TimelineSelection_1.getTimelineSelectionKey)(selectedEffect);
219
+ const inspectorRevealItem = inspectorRevealRequest === null || inspectorRevealRequest === void 0 ? void 0 : inspectorRevealRequest.item;
220
+ const inspectorRevealItemKey = (inspectorRevealItem === null || inspectorRevealItem === void 0 ? void 0 : inspectorRevealItem.type) === 'sequence-effect' ||
221
+ (inspectorRevealItem === null || inspectorRevealItem === void 0 ? void 0 : inspectorRevealItem.type) === 'sequence-effect-prop'
222
+ ? (0, TimelineSelection_1.getTimelineSelectionKey)(inspectorRevealItem)
223
+ : null;
224
+ const inspectorRevealToken = inspectorRevealItemKey === selectedEffectKey
225
+ ? ((_b = inspectorRevealRequest === null || inspectorRevealRequest === void 0 ? void 0 : inspectorRevealRequest.token) !== null && _b !== void 0 ? _b : null)
226
+ : null;
223
227
  const selectedEffectRowRef = (0, react_1.useRef)(null);
224
- const scrolledEffectKey = (0, react_1.useRef)(null);
228
+ const scrolledInspectorRevealToken = (0, react_1.useRef)(null);
225
229
  const [collapsedKeys, setCollapsedKeys] = (0, react_1.useState)(loadInspectorCollapsedKeys);
226
230
  const [sectionExpansionOverrides, setSectionExpansionOverrides] = (0, react_1.useState)(loadInspectorSectionExpansionOverrides);
227
231
  const [automaticSectionExpansion, setAutomaticSectionExpansion] = (0, react_1.useState)({});
@@ -284,33 +288,61 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
284
288
  return next;
285
289
  });
286
290
  }, []);
287
- const { controlRows, effectRows } = (0, react_1.useMemo)(() => {
291
+ const isAdditionalSectionExpanded = (0, react_1.useCallback)((sectionId) => {
292
+ var _a;
293
+ const expansionKey = getInspectorSectionExpansionKey({
294
+ nodePathInfo,
295
+ sectionId,
296
+ });
297
+ return (_a = sectionExpansionOverrides[expansionKey]) !== null && _a !== void 0 ? _a : true;
298
+ }, [nodePathInfo, sectionExpansionOverrides]);
299
+ const setAdditionalSectionExpanded = (0, react_1.useCallback)((sectionId, expanded) => {
300
+ const expansionKey = getInspectorSectionExpansionKey({
301
+ nodePathInfo,
302
+ sectionId,
303
+ });
304
+ setSectionExpansionOverrides((previous) => {
305
+ if (previous[expansionKey] === expanded) {
306
+ return previous;
307
+ }
308
+ const next = { ...previous, [expansionKey]: expanded };
309
+ persistInspectorSectionExpansionOverrides(next);
310
+ return next;
311
+ });
312
+ }, [nodePathInfo]);
313
+ const toggleAdditionalSection = (0, react_1.useCallback)((sectionId) => {
314
+ setAdditionalSectionExpanded(sectionId, !isAdditionalSectionExpanded(sectionId));
315
+ }, [isAdditionalSectionExpanded, setAdditionalSectionExpanded]);
316
+ const effectsExpanded = isAdditionalSectionExpanded('effects');
317
+ const { controlRows, effectRows, hasEffects } = (0, react_1.useMemo)(() => {
288
318
  const controlNodes = [];
289
- let effectsRoot = null;
319
+ let root = null;
290
320
  for (const node of tree) {
291
321
  if (isEffectsRoot(node)) {
292
- effectsRoot = node;
322
+ root = node;
293
323
  }
294
324
  else {
295
325
  controlNodes.push(node);
296
326
  }
297
327
  }
298
328
  return {
329
+ hasEffects: root !== null && root.children.length > 0,
299
330
  controlRows: (0, timeline_layout_1.flattenVisibleTreeNodes)({
300
331
  nodes: controlNodes,
301
332
  getIsExpanded,
302
333
  }),
303
- effectRows: effectsRoot === null
334
+ effectRows: root === null || !effectsExpanded
304
335
  ? []
305
336
  : (0, timeline_layout_1.flattenVisibleTreeNodes)({
306
- nodes: effectsRoot.children,
337
+ nodes: root.children,
307
338
  getIsExpanded,
308
339
  }),
309
340
  };
310
- }, [getIsExpanded, tree]);
341
+ }, [effectsExpanded, getIsExpanded, tree]);
311
342
  (0, react_1.useEffect)(() => {
312
343
  if (selectedEffectKey === null ||
313
- scrolledEffectKey.current === selectedEffectKey) {
344
+ inspectorRevealToken === null ||
345
+ scrolledInspectorRevealToken.current === inspectorRevealToken) {
314
346
  return;
315
347
  }
316
348
  const rows = (0, timeline_layout_1.flattenVisibleTreeNodes)({
@@ -325,6 +357,7 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
325
357
  if (targetIndex === -1) {
326
358
  return;
327
359
  }
360
+ setAdditionalSectionExpanded('effects', true);
328
361
  const parentKeys = [];
329
362
  let { depth } = rows[targetIndex];
330
363
  for (let i = targetIndex - 1; i >= 0 && depth > 0; i--) {
@@ -344,19 +377,23 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
344
377
  persistInspectorCollapsedKeys(next);
345
378
  return next;
346
379
  });
347
- }, [selectedEffectKey, tree]);
380
+ }, [
381
+ inspectorRevealToken,
382
+ selectedEffectKey,
383
+ setAdditionalSectionExpanded,
384
+ tree,
385
+ ]);
348
386
  (0, react_1.useEffect)(() => {
349
- if (selectedEffectKey === null) {
350
- scrolledEffectKey.current = null;
387
+ if (inspectorRevealToken === null) {
351
388
  return;
352
389
  }
353
- if (scrolledEffectKey.current === selectedEffectKey ||
390
+ if (scrolledInspectorRevealToken.current === inspectorRevealToken ||
354
391
  selectedEffectRowRef.current === null) {
355
392
  return;
356
393
  }
357
394
  selectedEffectRowRef.current.scrollIntoView({ block: 'center' });
358
- scrolledEffectKey.current = selectedEffectKey;
359
- }, [effectRows, selectedEffectKey]);
395
+ scrolledInspectorRevealToken.current = inspectorRevealToken;
396
+ }, [effectRows, inspectorRevealToken]);
360
397
  const effectSelectableItems = (0, react_1.useMemo)(() => (0, exports.getInspectorSelectableItems)(effectRows), [effectRows]);
361
398
  const controlGroups = (0, react_1.useMemo)(() => getInspectorControlGroups(controlRows), [controlRows]);
362
399
  const layoutGroup = controlGroups.find((group) => group.id === 'layout');
@@ -450,26 +487,6 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
450
487
  return next;
451
488
  });
452
489
  }, [isControlGroupExpanded, nodePathInfo]);
453
- const isAdditionalSectionExpanded = (0, react_1.useCallback)((sectionId) => {
454
- var _a;
455
- const expansionKey = getInspectorSectionExpansionKey({
456
- nodePathInfo,
457
- sectionId,
458
- });
459
- return (_a = sectionExpansionOverrides[expansionKey]) !== null && _a !== void 0 ? _a : true;
460
- }, [nodePathInfo, sectionExpansionOverrides]);
461
- const toggleAdditionalSection = (0, react_1.useCallback)((sectionId) => {
462
- const expansionKey = getInspectorSectionExpansionKey({
463
- nodePathInfo,
464
- sectionId,
465
- });
466
- const nextExpanded = !isAdditionalSectionExpanded(sectionId);
467
- setSectionExpansionOverrides((previous) => {
468
- const next = { ...previous, [expansionKey]: nextExpanded };
469
- persistInspectorSectionExpansionOverrides(next);
470
- return next;
471
- });
472
- }, [isAdditionalSectionExpanded, nodePathInfo]);
473
490
  const captionsExpanded = isAdditionalSectionExpanded('captions');
474
491
  const visibleControlRows = controlGroups.flatMap((group) => {
475
492
  return isControlGroupExpanded(group) ? group.rows : [];
@@ -490,7 +507,7 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
490
507
  ? runtimeValues.captions
491
508
  : []
492
509
  : null;
493
- const showEffectsSection = nodePathInfo.supportsEffects || effectRows.length > 0;
510
+ const showEffectsSection = nodePathInfo.supportsEffects || hasEffects;
494
511
  const canAddEffect = nodePathInfo.supportsEffects &&
495
512
  previewServerState.type === 'connected' &&
496
513
  (0, interactivity_enabled_1.isStudioInteractivityEnabled)() &&
@@ -499,6 +516,7 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
499
516
  if (!canAddEffect || previewServerState.type !== 'connected') {
500
517
  return;
501
518
  }
519
+ setAdditionalSectionExpanded('effects', true);
502
520
  setSelectedModal({
503
521
  type: 'add-effect',
504
522
  clientId: previewServerState.clientId,
@@ -509,6 +527,7 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
509
527
  canAddEffect,
510
528
  nodePathInfo.sequenceSubscriptionKey,
511
529
  previewServerState,
530
+ setAdditionalSectionExpanded,
512
531
  setSelectedModal,
513
532
  validatedLocation.source,
514
533
  ]);
@@ -554,8 +573,7 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
554
573
  : show3DTransformControls
555
574
  ? 'Hide 3D transform controls'
556
575
  : '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 })) }));
557
- const effectsHeader = (jsx_runtime_1.jsxs("div", { style: styles_1.sectionHeaderRow, children: [
558
- jsx_runtime_1.jsx("div", { style: effectsHeaderTitle, children: "Effects" }), 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 }) })] }));
576
+ 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 }));
559
577
  const renderRow = ({ node, depth }) => {
560
578
  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, keyframeControlsMode: "inspector" }) }, JSON.stringify(node.nodePathInfo)));
561
579
  };
@@ -43,6 +43,7 @@ const sourceLocationLabelStyle = {
43
43
  minWidth: 0,
44
44
  overflow: 'hidden',
45
45
  textOverflow: 'ellipsis',
46
+ userSelect: 'none',
46
47
  whiteSpace: 'nowrap',
47
48
  };
48
49
  const InspectorSourceLocation = ({ location, canOpen, onOpen, renderIcon, size = 'default' }) => {
@@ -37,7 +37,9 @@ exports.KeyboardShortcutsSettings = void 0;
37
37
  const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const react_1 = __importStar(require("react"));
39
39
  const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
40
+ const client_id_1 = require("../helpers/client-id");
40
41
  const colors_1 = require("../helpers/colors");
42
+ const settings_tab_availability_1 = require("../helpers/settings-tab-availability");
41
43
  const studio_runtime_config_1 = require("../helpers/studio-runtime-config");
42
44
  const caret_1 = require("../icons/caret");
43
45
  const Checkbox_1 = require("./Checkbox");
@@ -158,6 +160,12 @@ const KeyboardShortcutsSettings = () => {
158
160
  var _a;
159
161
  const { error: settingsError, revision, studioRuntimeConfig } = (0, SettingsContext_1.useSettings)();
160
162
  const isBrowserStudio = (0, browser_studio_operations_1.getBrowserStudioOperations)() !== null;
163
+ const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
164
+ const canEdit = (0, settings_tab_availability_1.canEditStudioConfig)({
165
+ isBrowserStudio,
166
+ previewServerConnected: previewServerState.type === 'connected',
167
+ readOnlyStudio: window.remotion_isReadOnlyStudio,
168
+ });
161
169
  const [enabled, setEnabled] = (0, react_1.useState)(true);
162
170
  const [configuredShortcuts, setConfiguredShortcuts] = (0, react_1.useState)({});
163
171
  const [enabledEdited, setEnabledEdited] = (0, react_1.useState)(false);
@@ -212,7 +220,7 @@ const KeyboardShortcutsSettings = () => {
212
220
  }, [configuredShortcuts, enabled, enabledEdited, shortcutsEdited]);
213
221
  const ready = studioRuntimeConfig !== null && syncedRevision === revision;
214
222
  (0, use_auto_save_config_1.useAutoSaveConfig)({
215
- enabled: ready && !isBrowserStudio,
223
+ enabled: ready && canEdit,
216
224
  onError: setError,
217
225
  ready,
218
226
  syncRevision: syncedRevision,
@@ -221,11 +229,11 @@ const KeyboardShortcutsSettings = () => {
221
229
  if (studioRuntimeConfig === null) {
222
230
  return null;
223
231
  }
224
- return (jsx_runtime_1.jsxs("div", { style: container, children: [isBrowserStudio ? null : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
232
+ return (jsx_runtime_1.jsxs("div", { style: container, children: [canEdit ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
225
233
  jsx_runtime_1.jsx("p", { style: dividerLabel, children: "General" }), jsx_runtime_1.jsxs("label", { style: layout_2.optionRow, children: [
226
234
  jsx_runtime_1.jsx("div", { style: layout_2.label, children: "Keyboard shortcuts" }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsx(Checkbox_1.Checkbox, { checked: enabled, name: "keyboard-shortcuts", onChange: onEnabledChange }) })
227
235
  ] })
228
- ] })), visibleShortcutGroups.map((group, groupIndex) => (jsx_runtime_1.jsxs("div", { children: [
236
+ ] })) : null, visibleShortcutGroups.map((group, groupIndex) => (jsx_runtime_1.jsxs("div", { children: [
229
237
  jsx_runtime_1.jsx("p", { style: shortcutSectionTitle, children: group.name }), jsx_runtime_1.jsx("div", { role: "list", "aria-label": group.name, children: group.shortcuts.map((shortcut, shortcutIndex) => {
230
238
  var _a;
231
239
  const configured = shortcut.actionId === null
@@ -306,7 +314,7 @@ const KeyboardShortcutsSettings = () => {
306
314
  shortcutIndex === group.shortcuts.length - 1
307
315
  ? lastShortcutRow
308
316
  : shortcutRow, children: [
309
- jsx_runtime_1.jsx("span", { style: actionName, children: shortcut.action }), shortcut.actionId === null || isBrowserStudio ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
317
+ jsx_runtime_1.jsx("span", { style: actionName, children: shortcut.action }), shortcut.actionId === null || !canEdit ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
310
318
  jsx_runtime_1.jsx("span", { style: shortcutCell, children: jsx_runtime_1.jsx(ShortcutChords, { values: shortcutValues }) }), jsx_runtime_1.jsx("span", {})
311
319
  ] })) : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
312
320
  jsx_runtime_1.jsx("span", { style: shortcutCell, children: jsx_runtime_1.jsx("button", { id: shortcutButtonId, type: "button", style: chordButton, "aria-label": `Change shortcut for ${shortcut.action}`, onClick: () => {
@@ -10,6 +10,7 @@ const loop_1 = require("../state/loop");
10
10
  const ActionTooltip_1 = require("./ActionTooltip");
11
11
  const ControlButton_1 = require("./ControlButton");
12
12
  const accessibilityLabel = 'Loop';
13
+ const buttonStyle = { width: 30 };
13
14
  const toggleLoop = (setLoop) => {
14
15
  setLoop((currentLoop) => {
15
16
  (0, loop_1.persistLoopOption)(!currentLoop);
@@ -24,6 +25,6 @@ const LoopToggle = ({ loop, setLoop }) => {
24
25
  const onClick = (0, react_1.useCallback)(() => {
25
26
  (0, exports.toggleLoop)(setLoop);
26
27
  }, [setLoop]);
27
- 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, 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, { 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
29
  };
29
30
  exports.LoopToggle = LoopToggle;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const LutPreview: React.FC<{
3
+ readonly src: string;
4
+ }>;