@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
@@ -13,7 +13,13 @@ const focusDefaultPropsPath = ({ path, scrollBehavior, }) => {
13
13
  success: false,
14
14
  };
15
15
  }
16
- query.scrollIntoView({ behavior: scrollBehavior });
16
+ const scrollToField = () => query.scrollIntoView({ behavior: scrollBehavior });
17
+ if (scroll_to_default_props_path_1.expandDefaultPropsEditorRef.current === null) {
18
+ scrollToField();
19
+ }
20
+ else {
21
+ scroll_to_default_props_path_1.expandDefaultPropsEditorRef.current(scrollToField);
22
+ }
17
23
  query.classList.add(scroll_to_default_props_path_1.DEFAULT_PROPS_PATH_ACTIVE_CLASSNAME);
18
24
  return {
19
25
  success: true,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @description Restarts the Remotion Studio.
2
+ * @description Restarts the Remotion Studio process.
3
3
  * @see [Documentation](https://www.remotion.dev/docs/studio/restart-studio)
4
4
  */
5
5
  import type { RestartStudioResponse } from '@remotion/studio-shared';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * @description Restarts the Remotion Studio.
3
+ * @description Restarts the Remotion Studio process.
4
4
  * @see [Documentation](https://www.remotion.dev/docs/studio/restart-studio)
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -5,5 +5,7 @@ export declare const ActionTooltip: React.FC<{
5
5
  /** Hover delay in milliseconds. Pass null to show immediately. */
6
6
  readonly delay: number | null;
7
7
  readonly dismissOnClick: boolean;
8
+ readonly side?: 'top' | 'right';
9
+ readonly triggerStyle?: React.CSSProperties;
8
10
  readonly children: React.ReactNode;
9
11
  }>;
@@ -8,7 +8,7 @@ const colors_1 = require("../helpers/colors");
8
8
  const z_index_1 = require("../state/z-index");
9
9
  const portals_1 = require("./Menu/portals");
10
10
  const styles_1 = require("./Menu/styles");
11
- const triggerStyle = { display: 'inline-flex' };
11
+ const defaultTriggerStyle = { display: 'inline-flex' };
12
12
  const tooltipStyle = {
13
13
  position: 'fixed',
14
14
  display: 'flex',
@@ -44,7 +44,7 @@ const shortcutStyle = {
44
44
  let visibleTooltipCount = 0;
45
45
  let lastTooltipHiddenAt = null;
46
46
  const TOOLTIP_SKIP_DELAY_WINDOW = 300;
47
- const ActionTooltip = ({ label, shortcut, delay, dismissOnClick, children }) => {
47
+ const ActionTooltip = ({ label, shortcut, delay, dismissOnClick, side = 'top', triggerStyle, children, }) => {
48
48
  var _a, _b;
49
49
  const triggerRef = (0, react_1.useRef)(null);
50
50
  const tooltipRef = (0, react_1.useRef)(null);
@@ -119,14 +119,24 @@ const ActionTooltip = ({ label, shortcut, delay, dismissOnClick, children }) =>
119
119
  }
120
120
  const trigger = triggerRef.current.getBoundingClientRect();
121
121
  const tooltip = tooltipRef.current.getBoundingClientRect();
122
+ if (side === 'right') {
123
+ const right = trigger.right + 4;
124
+ setPosition({
125
+ left: right + tooltip.width <= window.innerWidth - 8
126
+ ? right
127
+ : Math.max(8, trigger.left - tooltip.width - 4),
128
+ top: Math.max(8, Math.min(trigger.top + (trigger.height - tooltip.height) / 2, window.innerHeight - tooltip.height - 8)),
129
+ });
130
+ return;
131
+ }
122
132
  const above = trigger.top - tooltip.height - 4;
123
133
  setPosition({
124
134
  left: Math.max(8, Math.min(trigger.left + (trigger.width - tooltip.width) / 2, window.innerWidth - tooltip.width - 8)),
125
135
  top: Math.max(8, Math.min(above >= 8 ? above : trigger.bottom + 4, window.innerHeight - tooltip.height - 8)),
126
136
  });
127
- }, [label, shortcut, visible]);
137
+ }, [label, shortcut, side, visible]);
128
138
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
129
- jsx_runtime_1.jsx("span", { ref: triggerRef, style: triggerStyle, onPointerEnter: onPointerEnter, onPointerLeave: hide, onPointerDownCapture: dismissOnClick ? hide : undefined, onClickCapture: dismissOnClick ? hide : undefined, onFocus: (event) => {
139
+ jsx_runtime_1.jsx("span", { ref: triggerRef, style: { ...defaultTriggerStyle, ...triggerStyle }, onPointerEnter: onPointerEnter, onPointerLeave: hide, onPointerDownCapture: dismissOnClick ? hide : undefined, onClickCapture: dismissOnClick ? hide : undefined, onFocus: (event) => {
130
140
  if (event.currentTarget.contains(event.target)) {
131
141
  show();
132
142
  }
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const AgentPrompt: React.FC<{
3
+ readonly availableText: string;
4
+ readonly promptDetails: string;
5
+ readonly skillId: string;
6
+ }>;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentPrompt = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const client_id_1 = require("../helpers/client-id");
7
+ const colors_1 = require("../helpers/colors");
8
+ const copy_text_1 = require("../helpers/copy-text");
9
+ const use_copy_feedback_1 = require("../helpers/use-copy-feedback");
10
+ const copy_1 = require("../icons/copy");
11
+ const skills_1 = require("../icons/skills");
12
+ const CodingAgentButton_1 = require("./CodingAgentButton");
13
+ const InlineAction_1 = require("./InlineAction");
14
+ const ValidationMessage_1 = require("./NewComposition/ValidationMessage");
15
+ const NotificationCenter_1 = require("./Notifications/NotificationCenter");
16
+ const SettingsContext_1 = require("./SettingsContext");
17
+ const SkillsSettings_1 = require("./SkillsSettings");
18
+ const text = {
19
+ color: colors_1.LIGHT_TEXT,
20
+ fontFamily: 'sans-serif',
21
+ fontSize: 14,
22
+ lineHeight: 1.5,
23
+ };
24
+ const commandField = {
25
+ alignItems: 'flex-start',
26
+ background: colors_1.BLACK_ALPHA_30,
27
+ borderRadius: 6,
28
+ boxSizing: 'border-box',
29
+ display: 'flex',
30
+ gap: 8,
31
+ marginTop: 10,
32
+ padding: '8px 8px 8px 10px',
33
+ width: '100%',
34
+ };
35
+ const code = {
36
+ color: colors_1.WHITE,
37
+ flex: 1,
38
+ fontFamily: 'monospace',
39
+ fontSize: 13,
40
+ fontWeight: 'normal',
41
+ lineHeight: 1.5,
42
+ margin: 0,
43
+ minWidth: 0,
44
+ overflowWrap: 'anywhere',
45
+ whiteSpace: 'pre-wrap',
46
+ };
47
+ const copyAction = { flexShrink: 0 };
48
+ const copyIcon = { flexShrink: 0, height: 12, width: 12 };
49
+ const skillsIcon = {
50
+ display: 'inline-block',
51
+ height: 18,
52
+ marginRight: 6,
53
+ verticalAlign: 'middle',
54
+ width: 18,
55
+ };
56
+ const promptHeader = {
57
+ alignItems: 'center',
58
+ display: 'flex',
59
+ gap: 12,
60
+ justifyContent: 'space-between',
61
+ };
62
+ const skillRowContainer = {
63
+ borderTop: colors_1.BORDER_WHITE_ALPHA_12,
64
+ marginTop: 10,
65
+ };
66
+ const skillError = { marginTop: 10 };
67
+ const AgentPrompt = ({ availableText, promptDetails, skillId }) => {
68
+ var _a;
69
+ const { codingAgentInfo, remotionSkillsInfo, skillActionError } = (0, SettingsContext_1.useSettings)();
70
+ const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
71
+ const skill = remotionSkillsInfo === null || remotionSkillsInfo === void 0 ? void 0 : remotionSkillsInfo.skills.find(({ name }) => name === skillId);
72
+ const skillAvailable = Boolean((skill === null || skill === void 0 ? void 0 : skill.installedInProject) || (skill === null || skill === void 0 ? void 0 : skill.installedGlobally));
73
+ const canInstallSkill = !window.remotion_isReadOnlyStudio &&
74
+ previewServerState.type === 'connected' &&
75
+ remotionSkillsInfo !== null;
76
+ const skillName = `/${skillId}`;
77
+ const prompt = `${skillName}${promptDetails}`;
78
+ const installCommand = 'npx remotion skills add';
79
+ const hasCodingAgent = ((_a = codingAgentInfo === null || codingAgentInfo === void 0 ? void 0 : codingAgentInfo.installedCodingAgents.length) !== null && _a !== void 0 ? _a : 0) > 0;
80
+ const { copied: promptCopied, markCopied: markPromptCopied } = (0, use_copy_feedback_1.useCopyFeedback)();
81
+ const { copied: installCopied, markCopied: markInstallCopied } = (0, use_copy_feedback_1.useCopyFeedback)();
82
+ const copy = (0, react_1.useCallback)((value, markCopied) => {
83
+ (0, copy_text_1.copyText)(value)
84
+ .then(markCopied)
85
+ .catch((err) => (0, NotificationCenter_1.showNotification)(`Could not copy: ${err.message}`, 2000));
86
+ }, []);
87
+ const renderPromptCopy = (0, react_1.useCallback)((color) => (jsx_runtime_1.jsx(copy_1.CopyIcon, { copied: promptCopied, color: color, style: copyIcon })), [promptCopied]);
88
+ const renderInstallCopy = (0, react_1.useCallback)((color) => (jsx_runtime_1.jsx(copy_1.CopyIcon, { copied: installCopied, color: color, style: copyIcon })), [installCopied]);
89
+ return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [skillAvailable ? null : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
90
+ jsx_runtime_1.jsx("div", { style: text, children: "Install the Agent Skill first:" }), canInstallSkill && skill ? (jsx_runtime_1.jsx("div", { "aria-label": "Remotion Agent Skills", role: "list", style: skillRowContainer, children: jsx_runtime_1.jsx(SkillsSettings_1.SkillSettingsRow, { isLast: false, skill: skill }) })) : (jsx_runtime_1.jsxs("div", { style: commandField, children: [
91
+ jsx_runtime_1.jsx("pre", { style: code, children: installCommand }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: () => copy(installCommand, markInstallCopied), renderAction: renderInstallCopy, style: copyAction, title: "Copy command", variant: null })
92
+ ] })), skillActionError ? (jsx_runtime_1.jsx("div", { style: skillError, children: jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: skillActionError, type: "error" }) })) : null] })), jsx_runtime_1.jsxs("div", { style: { ...promptHeader, marginTop: skillAvailable ? 0 : 16 }, children: [
93
+ jsx_runtime_1.jsx("div", { style: text, children: skillAvailable
94
+ ? availableText
95
+ : `Then ${availableText.toLowerCase()}` }), hasCodingAgent ? (jsx_runtime_1.jsx(CodingAgentButton_1.CodingAgentButton, { label: "Open in", prompt: prompt, size: "compact", style: null })) : null] }), jsx_runtime_1.jsxs("div", { style: commandField, children: [
96
+ jsx_runtime_1.jsxs("pre", { style: code, children: [
97
+ jsx_runtime_1.jsx(skills_1.SkillsIcon, { color: colors_1.BLUE, style: skillsIcon, "aria-hidden": true }), jsx_runtime_1.jsx("span", { style: {
98
+ color: colors_1.BLUE,
99
+ fontFamily: 'inherit',
100
+ fontSize: 'inherit',
101
+ fontWeight: 'inherit',
102
+ lineHeight: 'inherit',
103
+ }, children: skillName }), promptDetails] }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: () => copy(prompt, markPromptCopied), renderAction: renderPromptCopy, style: copyAction, title: "Copy prompt", variant: null })
104
+ ] })
105
+ ] }));
106
+ };
107
+ exports.AgentPrompt = AgentPrompt;
@@ -51,6 +51,7 @@ const AppLaunchButton = ({ actionButtonId, ariaLabel, children, disabled, menuAr
51
51
  ? defaultMainSegmentStyle
52
52
  : compactMainSegmentStyle,
53
53
  title,
54
+ tooltipLabel: null,
54
55
  type: 'action',
55
56
  },
56
57
  ...(items.length > 0
@@ -67,6 +68,7 @@ const AppLaunchButton = ({ actionButtonId, ariaLabel, children, disabled, menuAr
67
68
  selectedId: null,
68
69
  style: dropdownSegmentStyle,
69
70
  title: menuAriaLabel,
71
+ tooltipLabel: null,
70
72
  type: 'menu',
71
73
  values: items,
72
74
  },
@@ -7,12 +7,14 @@ const file_1 = require("../icons/file");
7
7
  const font_1 = require("../icons/font");
8
8
  const frame_1 = require("../icons/frame");
9
9
  const json_1 = require("../icons/json");
10
+ const lut_1 = require("../icons/lut");
10
11
  const video_1 = require("../icons/video");
11
12
  const iconByFileType = {
12
13
  audio: audio_1.AudioFileIcon,
13
14
  font: font_1.FontFileIcon,
14
15
  image: frame_1.PicIcon,
15
16
  json: json_1.JsonFileIcon,
17
+ lut: lut_1.LutFileIcon,
16
18
  other: file_1.FileIcon,
17
19
  txt: file_1.FileIcon,
18
20
  video: video_1.VideoFileIcon,
@@ -1,33 +1,11 @@
1
1
  import React from 'react';
2
2
  import type { AssetStructure } from '../helpers/create-folder-tree';
3
3
  import type { ComboboxValue } from './NewComposition/ComboBox';
4
- export declare const getAssetActionAvailability: ({ browserStudioCanMutateAssets, readOnlyStudio, connectionStatus, publicFolderExists, }: {
5
- browserStudioCanMutateAssets: boolean | null;
6
- readOnlyStudio: boolean;
7
- connectionStatus: "connected" | "disconnected" | "init";
8
- publicFolderExists: string | null;
9
- }) => {
10
- mutationsDisabled: boolean;
11
- fileExplorerDisabled: boolean;
12
- };
4
+ export { getAssetActionAvailability, getAssetContextMenuItems, } from './asset-context-menu';
13
5
  export declare const getCanDragAsset: ({ readOnlyStudio, relativePath, }: {
14
6
  readOnlyStudio: boolean;
15
7
  relativePath: string;
16
8
  }) => boolean;
17
- export declare const getAssetContextMenuItems: ({ relativePath, fileManagerName, copyFileName, copyStaticFilePath, copyAbsolutePath, openAssetInConvert, openAssetInExplorer, renameAsset, deleteAsset, fileExplorerAvailable, fileExplorerDisabled, mutationsDisabled, }: {
18
- relativePath: string;
19
- fileManagerName: string;
20
- copyFileName: () => void;
21
- copyStaticFilePath: () => void;
22
- copyAbsolutePath: (() => void) | null;
23
- openAssetInConvert: () => void;
24
- openAssetInExplorer: () => void;
25
- renameAsset: () => void;
26
- deleteAsset: () => void;
27
- fileExplorerAvailable: boolean;
28
- fileExplorerDisabled: boolean;
29
- mutationsDisabled: boolean;
30
- }) => ComboboxValue[];
31
9
  export declare const getAssetFolderContextMenuItems: ({ folderPath, fileManagerName, copyFolderPath, copyAbsolutePath, openFolderInExplorer, uploadAssets, fileExplorerAvailable, fileExplorerDisabled, mutationsDisabled, }: {
32
10
  folderPath: string;
33
11
  fileManagerName: string;
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.AssetFolderTree = exports.getAssetFolderContextMenuItems = exports.getAssetContextMenuItems = exports.getCanDragAsset = exports.getAssetActionAvailability = void 0;
36
+ exports.AssetFolderTree = exports.getAssetFolderContextMenuItems = exports.getCanDragAsset = exports.getAssetContextMenuItems = exports.getAssetActionAvailability = void 0;
37
37
  const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const studio_protocol_1 = require("@remotion/studio-protocol");
39
39
  const react_1 = require("react");
@@ -46,7 +46,6 @@ const copy_text_1 = require("../helpers/copy-text");
46
46
  const get_file_manager_name_1 = require("../helpers/get-file-manager-name");
47
47
  const get_preview_file_type_1 = require("../helpers/get-preview-file-type");
48
48
  const hoverable_1 = require("../helpers/hoverable");
49
- const open_in_remotion_convert_1 = require("../helpers/open-in-remotion-convert");
50
49
  const sidebar_scroll_into_view_1 = require("../helpers/sidebar-scroll-into-view");
51
50
  const url_state_1 = require("../helpers/url-state");
52
51
  const use_asset_drag_events_1 = __importStar(require("../helpers/use-asset-drag-events"));
@@ -54,7 +53,7 @@ const use_image_metadata_1 = require("../helpers/use-image-metadata");
54
53
  const use_media_metadata_1 = require("../helpers/use-media-metadata");
55
54
  const ellipsis_1 = require("../icons/ellipsis");
56
55
  const folder_1 = require("../icons/folder");
57
- const modals_1 = require("../state/modals");
56
+ const asset_context_menu_1 = require("./asset-context-menu");
58
57
  const AssetFileIcon_1 = require("./AssetFileIcon");
59
58
  const ContextMenu_1 = require("./ContextMenu");
60
59
  const import_assets_1 = require("./import-assets");
@@ -62,9 +61,10 @@ const InlineAction_1 = require("./InlineAction");
62
61
  const InlineDropdown_1 = require("./InlineDropdown");
63
62
  const layout_1 = require("./layout");
64
63
  const NotificationCenter_1 = require("./Notifications/NotificationCenter");
65
- const open_in_new_window_1 = require("./open-in-new-window");
66
64
  const actions_1 = require("./RenderQueue/actions");
67
- const use_delete_asset_1 = require("./use-delete-asset");
65
+ const asset_context_menu_2 = require("./asset-context-menu");
66
+ Object.defineProperty(exports, "getAssetActionAvailability", { enumerable: true, get: function () { return asset_context_menu_2.getAssetActionAvailability; } });
67
+ Object.defineProperty(exports, "getAssetContextMenuItems", { enumerable: true, get: function () { return asset_context_menu_2.getAssetContextMenuItems; } });
68
68
  const iconStyle = {
69
69
  width: 18,
70
70
  height: 18,
@@ -114,124 +114,10 @@ const inlineActionsStyle = {
114
114
  const renderContextMenuAction = (color) => {
115
115
  return jsx_runtime_1.jsx(ellipsis_1.EllipsisIcon, { svgProps: ellipsisIconStyle, fill: color });
116
116
  };
117
- const getAssetActionAvailability = ({ browserStudioCanMutateAssets, readOnlyStudio, connectionStatus, publicFolderExists, }) => {
118
- return {
119
- mutationsDisabled: browserStudioCanMutateAssets !== true &&
120
- (readOnlyStudio || connectionStatus !== 'connected'),
121
- fileExplorerDisabled: browserStudioCanMutateAssets !== null ||
122
- publicFolderExists === null ||
123
- readOnlyStudio ||
124
- connectionStatus !== 'connected',
125
- };
126
- };
127
- exports.getAssetActionAvailability = getAssetActionAvailability;
128
117
  const getCanDragAsset = ({ readOnlyStudio, relativePath, }) => {
129
118
  return !readOnlyStudio && (0, import_assets_1.getAssetElementFromPath)(relativePath) !== null;
130
119
  };
131
120
  exports.getCanDragAsset = getCanDragAsset;
132
- const getAssetContextMenuItems = ({ relativePath, fileManagerName, copyFileName, copyStaticFilePath, copyAbsolutePath, openAssetInConvert, openAssetInExplorer, renameAsset, deleteAsset, fileExplorerAvailable, fileExplorerDisabled, mutationsDisabled, }) => {
133
- const previewFileType = (0, get_preview_file_type_1.getPreviewFileType)(relativePath);
134
- const canOpenInConvert = previewFileType === 'audio' || previewFileType === 'video';
135
- const items = [
136
- (0, open_in_new_window_1.getOpenInNewWindowMenuItem)(`/assets/${relativePath}`),
137
- canOpenInConvert
138
- ? {
139
- id: 'open-asset-in-convert',
140
- keyHint: null,
141
- label: 'Open in Remotion Convert',
142
- leftItem: null,
143
- onClick: openAssetInConvert,
144
- quickSwitcherLabel: 'Open asset in Remotion Convert',
145
- subMenu: null,
146
- type: 'item',
147
- value: 'open-asset-in-convert',
148
- }
149
- : null,
150
- {
151
- type: 'divider',
152
- id: 'open-in-new-window-divider',
153
- },
154
- {
155
- id: 'copy-asset-file-name',
156
- keyHint: null,
157
- label: 'Copy file name',
158
- leftItem: null,
159
- onClick: copyFileName,
160
- quickSwitcherLabel: 'Copy asset file name',
161
- subMenu: null,
162
- type: 'item',
163
- value: 'copy-asset-file-name',
164
- },
165
- {
166
- id: 'copy-asset-static-file-path',
167
- keyHint: null,
168
- label: 'Copy staticFile() path',
169
- leftItem: null,
170
- onClick: copyStaticFilePath,
171
- quickSwitcherLabel: 'Copy staticFile() path',
172
- subMenu: null,
173
- type: 'item',
174
- value: 'copy-asset-static-file-path',
175
- },
176
- copyAbsolutePath
177
- ? {
178
- id: 'copy-asset-absolute-path',
179
- keyHint: null,
180
- label: 'Copy absolute path',
181
- leftItem: null,
182
- onClick: copyAbsolutePath,
183
- quickSwitcherLabel: 'Copy asset absolute path',
184
- subMenu: null,
185
- type: 'item',
186
- value: 'copy-asset-absolute-path',
187
- }
188
- : null,
189
- {
190
- type: 'divider',
191
- id: 'asset-file-actions-divider',
192
- },
193
- fileExplorerAvailable
194
- ? {
195
- id: 'open-asset-in-explorer',
196
- keyHint: null,
197
- label: `Show in ${fileManagerName}`,
198
- leftItem: null,
199
- onClick: openAssetInExplorer,
200
- quickSwitcherLabel: `Show asset in ${fileManagerName}`,
201
- subMenu: null,
202
- type: 'item',
203
- value: 'open-asset-in-explorer',
204
- disabled: fileExplorerDisabled,
205
- }
206
- : null,
207
- {
208
- id: 'rename-asset',
209
- keyHint: null,
210
- label: 'Rename...',
211
- leftItem: null,
212
- onClick: renameAsset,
213
- quickSwitcherLabel: 'Rename asset...',
214
- subMenu: null,
215
- type: 'item',
216
- value: 'rename-asset',
217
- disabled: mutationsDisabled,
218
- },
219
- {
220
- id: 'delete-asset',
221
- keyHint: null,
222
- label: 'Delete...',
223
- leftItem: null,
224
- onClick: deleteAsset,
225
- quickSwitcherLabel: 'Delete asset...',
226
- subMenu: null,
227
- type: 'item',
228
- value: 'delete-asset',
229
- disabled: mutationsDisabled,
230
- },
231
- ];
232
- return items.filter(no_react_1.NoReactInternals.truthy);
233
- };
234
- exports.getAssetContextMenuItems = getAssetContextMenuItems;
235
121
  const getAssetFolderContextMenuItems = ({ folderPath, fileManagerName, copyFolderPath, copyAbsolutePath, openFolderInExplorer, uploadAssets, fileExplorerAvailable, fileExplorerDisabled, mutationsDisabled, }) => {
236
122
  const items = [
237
123
  fileExplorerAvailable
@@ -357,7 +243,7 @@ const AssetFolderItem = ({ tabIndex, item, level, parentFolder, toggleFolder, dr
357
243
  const uploadAssetsToFolder = (0, react_1.useCallback)(() => {
358
244
  uploadAssets(folderPath);
359
245
  }, [folderPath, uploadAssets]);
360
- const { mutationsDisabled, fileExplorerDisabled } = (0, exports.getAssetActionAvailability)({
246
+ const { mutationsDisabled, fileExplorerDisabled } = (0, asset_context_menu_1.getAssetActionAvailability)({
361
247
  browserStudioCanMutateAssets: (0, browser_studio_operations_1.getBrowserStudioOperations)() === null ? null : true,
362
248
  readOnlyStudio,
363
249
  connectionStatus,
@@ -423,16 +309,16 @@ const AssetFolderTree = ({ item, level, name, parentFolder, toggleFolder, tabInd
423
309
  };
424
310
  exports.AssetFolderTree = AssetFolderTree;
425
311
  const AssetSelectorItem = ({ item, tabIndex, level, parentFolder, readOnlyStudio }) => {
426
- const fileManagerName = (0, get_file_manager_name_1.getFileManagerName)(window.remotion_fileSystemPlatform);
427
312
  const [isDragging, setIsDragging] = (0, react_1.useState)(false);
428
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
429
- const connectionStatus = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx)
430
- .previewServerState.type;
431
313
  const { setCanvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionSetters);
432
314
  const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
433
315
  const relativePath = (0, react_1.useMemo)(() => {
434
316
  return parentFolder ? parentFolder + '/' + item.name : item.name;
435
317
  }, [parentFolder, item.name]);
318
+ const { fileExplorerDisabled, fileManagerName, getContextMenuItems } = (0, asset_context_menu_1.useAssetContextMenuItems)({
319
+ relativePath,
320
+ readOnlyStudio,
321
+ });
436
322
  const previewFileType = (0, react_1.useMemo)(() => {
437
323
  return (0, get_preview_file_type_1.getPreviewFileType)(relativePath);
438
324
  }, [relativePath]);
@@ -511,41 +397,6 @@ const AssetSelectorItem = ({ item, tabIndex, level, parentFolder, readOnlyStudio
511
397
  const renderFileExplorerAction = (0, react_1.useCallback)((color) => {
512
398
  return jsx_runtime_1.jsx(folder_1.ExpandedFolderIcon, { style: revealIconStyle, color: color });
513
399
  }, []);
514
- const copyFileName = (0, react_1.useCallback)(() => {
515
- (0, copy_text_1.copyText)(item.name)
516
- .then(() => {
517
- (0, NotificationCenter_1.showNotification)(`Copied '${item.name}' to clipboard`, 1000);
518
- })
519
- .catch((err) => {
520
- (0, NotificationCenter_1.showNotification)(`Could not copy: ${err.message}`, 2000);
521
- });
522
- }, [item.name]);
523
- const copyStaticFilePath = (0, react_1.useCallback)(() => {
524
- const content = `staticFile("${relativePath}")`;
525
- (0, copy_text_1.copyText)(content)
526
- .then(() => {
527
- (0, NotificationCenter_1.showNotification)(`Copied '${content}' to clipboard`, 1000);
528
- })
529
- .catch((err) => {
530
- (0, NotificationCenter_1.showNotification)(`Could not copy: ${err.message}`, 2000);
531
- });
532
- }, [relativePath]);
533
- const copyAbsolutePath = (0, react_1.useCallback)(() => {
534
- if (window.remotion_publicFolderExists === null) {
535
- return;
536
- }
537
- const content = `${window.remotion_publicFolderExists}/${relativePath}`;
538
- (0, copy_text_1.copyText)(content)
539
- .then(() => {
540
- (0, NotificationCenter_1.showNotification)(`Copied '${content}' to clipboard`, 1000);
541
- })
542
- .catch((err) => {
543
- (0, NotificationCenter_1.showNotification)(`Could not copy: ${err.message}`, 2000);
544
- });
545
- }, [relativePath]);
546
- const openAssetInConvert = (0, react_1.useCallback)(() => {
547
- (0, open_in_remotion_convert_1.openInRemotionConvert)({ relativePath });
548
- }, [relativePath]);
549
400
  const openAssetInExplorer = (0, react_1.useCallback)(() => {
550
401
  if (!window.remotion_publicFolderExists) {
551
402
  (0, NotificationCenter_1.showNotification)('Could not find the public folder', 2000);
@@ -557,47 +408,6 @@ const AssetSelectorItem = ({ item, tabIndex, level, parentFolder, readOnlyStudio
557
408
  (0, NotificationCenter_1.showNotification)(`Could not open file: ${err.message}`, 2000);
558
409
  });
559
410
  }, [relativePath]);
560
- const { mutationsDisabled, fileExplorerDisabled } = (0, exports.getAssetActionAvailability)({
561
- browserStudioCanMutateAssets: (0, browser_studio_operations_1.getBrowserStudioOperations)() === null ? null : true,
562
- readOnlyStudio,
563
- connectionStatus,
564
- publicFolderExists: window.remotion_publicFolderExists,
565
- });
566
- const deleteAsset = (0, use_delete_asset_1.useDeleteAsset)(relativePath);
567
- const renameAsset = (0, react_1.useCallback)(() => {
568
- setSelectedModal({
569
- type: 'rename-static-file',
570
- relativePath,
571
- });
572
- }, [relativePath, setSelectedModal]);
573
- const getContextMenuItems = (0, react_1.useCallback)(() => {
574
- return (0, exports.getAssetContextMenuItems)({
575
- relativePath,
576
- fileManagerName,
577
- copyFileName,
578
- copyStaticFilePath,
579
- copyAbsolutePath: window.remotion_publicFolderExists === null ? null : copyAbsolutePath,
580
- openAssetInConvert,
581
- openAssetInExplorer,
582
- renameAsset,
583
- deleteAsset,
584
- fileExplorerAvailable: (0, browser_studio_operations_1.getBrowserStudioOperations)() === null,
585
- fileExplorerDisabled,
586
- mutationsDisabled,
587
- });
588
- }, [
589
- copyFileName,
590
- copyStaticFilePath,
591
- copyAbsolutePath,
592
- deleteAsset,
593
- fileExplorerDisabled,
594
- fileManagerName,
595
- mutationsDisabled,
596
- openAssetInConvert,
597
- openAssetInExplorer,
598
- renameAsset,
599
- relativePath,
600
- ]);
601
411
  const revealInExplorer = (0, react_1.useCallback)((e) => {
602
412
  e.stopPropagation();
603
413
  openAssetInExplorer();
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { type AssetSelectionModalState } from '../state/modals';
3
+ export declare const AssetSelectorModal: React.FC<{
4
+ readonly state: AssetSelectionModalState;
5
+ readonly readOnlyStudio: boolean;
6
+ }>;