@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
@@ -1,11 +1,13 @@
1
1
  import type { EditorPickerId } from '@remotion/studio-shared';
2
2
  import type { TSequence } from 'remotion';
3
3
  export declare const useOpenSequenceInApps: (sequence: TSequence) => {
4
+ canOpenSource: boolean;
4
5
  canOpenInEditor: boolean;
5
6
  canConfigureApps: boolean;
6
7
  codingAgentInfo: import("@remotion/studio-shared").GetDefaultCodingAgentInfoResponse | null;
7
8
  editorInfo: import("@remotion/studio-shared").GetDefaultEditorInfoResponse | null;
8
9
  openInCodingAgent: (codingAgentId: "claude-code" | "codex" | "copilot" | "cursor", codingAgentName: string, contextForAgents: string | null) => Promise<void>;
9
10
  openInEditor: (editorId: EditorPickerId | null) => Promise<void>;
11
+ openSource: () => void;
10
12
  originalLocation: import("remotion").ResolvedStackLocation | null;
11
13
  };
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useOpenSequenceInApps = void 0;
4
4
  const react_1 = require("react");
5
5
  const client_id_1 = require("../../helpers/client-id");
6
+ const get_git_menu_item_1 = require("../../helpers/get-git-menu-item");
6
7
  const open_in_editor_1 = require("../../helpers/open-in-editor");
7
8
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
8
9
  const use_default_editor_info_1 = require("../use-default-editor-info");
@@ -16,6 +17,8 @@ const useOpenSequenceInApps = (sequence) => {
16
17
  const { canConfigureApps, canOpenInEditor: editorAvailable, defaultEditorId, editorInfo, } = (0, use_default_editor_info_1.useEditorOpening)(previewConnected);
17
18
  const codingAgentInfo = (0, use_default_editor_info_1.useDefaultCodingAgentInfo)(canConfigureApps);
18
19
  const canOpenInEditor = (0, react_1.useMemo)(() => Boolean(editorAvailable && originalLocation), [editorAvailable, originalLocation]);
20
+ const defaultOpenInTarget = (0, get_git_menu_item_1.getDefaultOpenInTarget)({ canOpenInEditor });
21
+ const canOpenSource = defaultOpenInTarget !== null && originalLocation !== null;
19
22
  const openInEditor = (0, react_1.useCallback)(async (editorId) => {
20
23
  const resolvedEditorId = editorId !== null && editorId !== void 0 ? editorId : defaultEditorId;
21
24
  if (!canOpenInEditor || !originalLocation || !resolvedEditorId) {
@@ -28,6 +31,18 @@ const useOpenSequenceInApps = (sequence) => {
28
31
  (0, NotificationCenter_1.showNotification)(err.message, 2000);
29
32
  }
30
33
  }, [canOpenInEditor, defaultEditorId, originalLocation]);
34
+ const openSource = (0, react_1.useCallback)(() => {
35
+ if (!originalLocation) {
36
+ return;
37
+ }
38
+ if (defaultOpenInTarget === 'editor') {
39
+ openInEditor(null);
40
+ return;
41
+ }
42
+ if (defaultOpenInTarget === 'git-source') {
43
+ (0, get_git_menu_item_1.openGitSource)({ folder: false, location: originalLocation });
44
+ }
45
+ }, [defaultOpenInTarget, openInEditor, originalLocation]);
31
46
  const openInCodingAgent = (0, react_1.useCallback)(async (codingAgentId, codingAgentName, contextForAgents) => {
32
47
  try {
33
48
  const response = await (0, open_in_editor_1.openInCodingAgent)(codingAgentId, contextForAgents);
@@ -40,12 +55,14 @@ const useOpenSequenceInApps = (sequence) => {
40
55
  }
41
56
  }, []);
42
57
  return {
58
+ canOpenSource,
43
59
  canOpenInEditor,
44
60
  canConfigureApps,
45
61
  codingAgentInfo,
46
62
  editorInfo,
47
63
  openInCodingAgent,
48
64
  openInEditor,
65
+ openSource,
49
66
  originalLocation,
50
67
  };
51
68
  };
@@ -10,6 +10,7 @@ const modals_1 = require("../../state/modals");
10
10
  const canvas_capture_drop_1 = require("../canvas-capture-drop");
11
11
  const drop_handler_data_1 = require("../drop-handler-data");
12
12
  const effect_drag_and_drop_1 = require("../effect-drag-and-drop");
13
+ const element_drag_and_drop_1 = require("../element-drag-and-drop");
13
14
  const handle_drop_1 = require("../handle-drop");
14
15
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
15
16
  const SvgImportDialog_1 = require("../SvgImportDialog");
@@ -41,13 +42,13 @@ const useTimelineAssetDrop = () => {
41
42
  compositionId: currentCompositionId,
42
43
  });
43
44
  const previewInteractive = previewServerState.type === 'connected' && (0, interactivity_enabled_1.isStudioInteractivityEnabled)();
44
- const canInsertAsset = previewInteractive &&
45
+ const canReceiveElementDrop = previewInteractive &&
45
46
  !window.remotion_isReadOnlyStudio &&
46
- (compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === true &&
47
47
  currentCompositionId !== null &&
48
48
  compositionFile !== null &&
49
49
  videoConfig !== null &&
50
50
  !isAddingAsset;
51
+ const canInsertAsset = canReceiveElementDrop && (compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === true;
51
52
  const getDropFrame = (0, react_1.useCallback)((event) => {
52
53
  if (videoConfig === null) {
53
54
  return null;
@@ -74,15 +75,24 @@ const useTimelineAssetDrop = () => {
74
75
  setAssetDropFrame(null);
75
76
  return;
76
77
  }
78
+ const canDropElementIntoNewComposition = (compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === false &&
79
+ canReceiveElementDrop &&
80
+ (0, element_drag_and_drop_1.hasElementDragType)(dataTransfer);
77
81
  event.preventDefault();
78
82
  event.stopPropagation();
79
- dataTransfer.dropEffect = canInsertAsset ? 'copy' : 'none';
83
+ dataTransfer.dropEffect =
84
+ canInsertAsset || canDropElementIntoNewComposition ? 'copy' : 'none';
80
85
  const scrollable = timeline_refs_1.scrollableRef.current;
81
86
  const shouldShowDropFrame = canInsertAsset &&
82
87
  scrollable !== null &&
83
88
  isEventTargetInsideElement(event, scrollable);
84
89
  setAssetDropFrame(shouldShowDropFrame ? getDropFrame(event) : null);
85
- }, [canInsertAsset, getDropFrame]);
90
+ }, [
91
+ canInsertAsset,
92
+ canReceiveElementDrop,
93
+ compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence,
94
+ getDropFrame,
95
+ ]);
86
96
  const onAssetDrop = (0, react_1.useCallback)(async (event) => {
87
97
  setAssetDropFrame(null);
88
98
  const timeline = timeline_refs_1.timelineVerticalScroll.current;
@@ -118,12 +128,15 @@ const useTimelineAssetDrop = () => {
118
128
  }
119
129
  event.preventDefault();
120
130
  event.stopPropagation();
121
- if (!canInsertAsset ||
131
+ const canDropElementIntoNewComposition = (compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === false &&
132
+ canReceiveElementDrop &&
133
+ (0, element_drag_and_drop_1.getElementDragData)(dataTransfer) !== null;
134
+ if ((!canInsertAsset && !canDropElementIntoNewComposition) ||
122
135
  currentCompositionId === null ||
123
136
  compositionFile === null ||
124
137
  videoConfig === null) {
125
138
  if ((compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === false) {
126
- (0, NotificationCenter_1.showNotification)('Cannot insert items into this composition component', 3000);
139
+ (0, NotificationCenter_1.showNotification)('Cannot insert this item: This composition component cannot accept a new <Sequence>.', 3000);
127
140
  }
128
141
  return;
129
142
  }
@@ -157,6 +170,7 @@ const useTimelineAssetDrop = () => {
157
170
  }
158
171
  }, [
159
172
  canInsertAsset,
173
+ canReceiveElementDrop,
160
174
  chooseSvgImportMode,
161
175
  compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence,
162
176
  compositionFile,
@@ -1,8 +1,9 @@
1
1
  import { type TSequence } from 'remotion';
2
2
  import type { SequenceNodePathInfo } from '../../helpers/get-timeline-sequence-sort-key';
3
- export declare const useTimelineSequenceHasExpandableContent: ({ sequence, nodePathInfo, }: {
3
+ export declare const useTimelineSequenceHasExpandableContent: ({ sequence, nodePathInfo, selectedItems, }: {
4
4
  readonly sequence: TSequence;
5
5
  readonly nodePathInfo: SequenceNodePathInfo;
6
+ readonly selectedItems: readonly import("@remotion/canvas").CanvasSelectionItem[];
6
7
  }) => boolean;
7
8
  export declare const useTimelineExpandedTree: ({ sequence, nodePathInfo, includeTextContent, includeSourceControls, }: {
8
9
  readonly sequence: TSequence;
@@ -9,10 +9,9 @@ const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
9
9
  const get_node_keyframes_1 = require("./get-node-keyframes");
10
10
  const timeline_expanded_filter_1 = require("./timeline-expanded-filter");
11
11
  const TimelineSelection_1 = require("./TimelineSelection");
12
- const useTimelineSequenceHasExpandableContent = ({ sequence, nodePathInfo, }) => {
12
+ const useTimelineSequenceHasExpandableContent = ({ sequence, nodePathInfo, selectedItems, }) => {
13
13
  const { propStatuses: visualModePropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
14
14
  const { getDragOverrides, getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
15
- const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
16
15
  const selectedRowKeys = (0, react_1.useMemo)(() => (0, timeline_expanded_filter_1.getSelectedTimelineExpandedRowKeys)(selectedItems), [selectedItems]);
17
16
  const selectHasExpandableContent = (0, react_1.useCallback)((runtimeValues) => {
18
17
  const tree = (0, timeline_layout_1.buildTimelineTree)({
@@ -450,8 +450,8 @@ const useTimelineKeyframeDrag = ({ frame, nodePathInfo, onSelect, selectable, se
450
450
  event: e,
451
451
  captureTarget: e.currentTarget,
452
452
  onMove: onPointerMove,
453
- onEnd: (reason) => {
454
- if (reason === 'pointerup' || reason === 'buttons-released') {
453
+ onEnd: (reason, endEvent) => {
454
+ if ((0, pointer_session_1.isPointerSessionRelease)(reason, endEvent)) {
455
455
  onPointerUp();
456
456
  }
457
457
  else {
@@ -657,8 +657,8 @@ const useTimelineEasingKeyframeDrag = ({ onSelect, selectable, selected, selecti
657
657
  event: e,
658
658
  captureTarget: e.currentTarget,
659
659
  onMove: onPointerMove,
660
- onEnd: (reason) => {
661
- if (reason === 'pointerup' || reason === 'buttons-released') {
660
+ onEnd: (reason, endEvent) => {
661
+ if ((0, pointer_session_1.isPointerSessionRelease)(reason, endEvent)) {
662
662
  onPointerUp();
663
663
  }
664
664
  else {
@@ -41,6 +41,7 @@ const TimelineCombobox = ({ values, selectedId, title, tooltipDelay, labelWidth
41
41
  selectedId,
42
42
  style: { fontFamily: 'inherit', padding: '0 4px' },
43
43
  title: tooltipDelay === null ? title : null,
44
+ tooltipLabel: null,
44
45
  type: 'menu',
45
46
  values,
46
47
  },
@@ -6,6 +6,7 @@ const react_1 = require("react");
6
6
  const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
7
7
  const client_id_1 = require("../helpers/client-id");
8
8
  const colors_1 = require("../helpers/colors");
9
+ const url_state_1 = require("../helpers/url-state");
9
10
  const use_keybinding_1 = require("../helpers/use-keybinding");
10
11
  const use_keyboard_shortcut_label_1 = require("../helpers/use-keyboard-shortcut-label");
11
12
  const redo_1 = require("../icons/redo");
@@ -43,6 +44,11 @@ const UndoRedoButtons = () => {
43
44
  ? browserStudioOperations.undo()
44
45
  : (0, call_api_1.callApi)('/api/undo', {});
45
46
  promise
47
+ .then((response) => {
48
+ if (response.success && response.route !== null) {
49
+ (0, url_state_1.pushUrl)(response.route);
50
+ }
51
+ })
46
52
  .catch(() => {
47
53
  // Ignore errors
48
54
  })
@@ -60,6 +66,11 @@ const UndoRedoButtons = () => {
60
66
  ? browserStudioOperations.redo()
61
67
  : (0, call_api_1.callApi)('/api/redo', {});
62
68
  promise
69
+ .then((response) => {
70
+ if (response.success && response.route !== null) {
71
+ (0, url_state_1.pushUrl)(response.route);
72
+ }
73
+ })
63
74
  .catch(() => {
64
75
  // Ignore errors
65
76
  })
@@ -6,12 +6,12 @@ export type Bug = {
6
6
  link: string;
7
7
  versions: string[];
8
8
  };
9
- type UpgradeState = 'idle' | 'upgrading' | 'upgraded' | 'shutting-down' | 'shutdown';
9
+ type UpgradeState = 'idle' | 'upgrading' | 'upgraded' | 'restarting';
10
10
  type UpdateStatusContextValue = {
11
11
  readonly upgradeState: UpgradeState;
12
12
  readonly upgradeError: string | null;
13
13
  readonly upgrade: (version: string) => Promise<void>;
14
- readonly shutdown: () => Promise<void>;
14
+ readonly restart: () => Promise<void>;
15
15
  readonly error: string | null;
16
16
  readonly info: UpdateAvailableResponse | null;
17
17
  readonly knownBugs: Bug[] | null;
@@ -4,7 +4,7 @@ exports.useUpdateStatus = exports.UpdateStatusProvider = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const remotion_1 = require("remotion");
7
- const shut_down_studio_1 = require("../api/shut-down-studio");
7
+ const restart_studio_1 = require("../api/restart-studio");
8
8
  const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
9
9
  const can_show_updates_1 = require("../helpers/can-show-updates");
10
10
  const client_id_1 = require("../helpers/client-id");
@@ -35,16 +35,15 @@ const UpdateStatusProvider = ({ children }) => {
35
35
  busy.current = false;
36
36
  }
37
37
  }, []);
38
- const shutdown = (0, react_1.useCallback)(async () => {
38
+ const restart = (0, react_1.useCallback)(async () => {
39
39
  if (busy.current) {
40
40
  return;
41
41
  }
42
42
  busy.current = true;
43
- setUpgradeState('shutting-down');
43
+ setUpgradeState('restarting');
44
44
  setUpgradeError(null);
45
45
  try {
46
- await (0, shut_down_studio_1.shutDownStudio)();
47
- setUpgradeState('shutdown');
46
+ await (0, restart_studio_1.restartStudio)();
48
47
  }
49
48
  catch (err) {
50
49
  setUpgradeError(err.message);
@@ -109,9 +108,9 @@ const UpdateStatusProvider = ({ children }) => {
109
108
  upgradeState,
110
109
  upgradeError,
111
110
  upgrade,
112
- shutdown,
111
+ restart,
113
112
  };
114
- }, [error, info, knownBugs, upgradeState, upgradeError, upgrade, shutdown]);
113
+ }, [error, info, knownBugs, upgradeState, upgradeError, upgrade, restart]);
115
114
  return (jsx_runtime_1.jsx(UpdateStatusContext.Provider, { value: value, children: children }));
116
115
  };
117
116
  exports.UpdateStatusProvider = UpdateStatusProvider;
@@ -173,7 +173,7 @@ const RenderedReleaseNotes = ({ release }) => {
173
173
  };
174
174
  const UpdatesSettings = () => {
175
175
  const { remotionSkillsInfo } = (0, SettingsContext_1.useSettings)();
176
- const { error, info, knownBugs, upgradeState, upgradeError, upgrade, shutdown, } = (0, UpdateStatusContext_1.useUpdateStatus)();
176
+ const { error, info, knownBugs, upgradeState, upgradeError, upgrade, restart } = (0, UpdateStatusContext_1.useUpdateStatus)();
177
177
  const [releaseNotes, setReleaseNotes] = (0, react_1.useState)(null);
178
178
  (0, react_1.useEffect)(() => {
179
179
  if (!(info === null || info === void 0 ? void 0 : info.updateAvailable)) {
@@ -239,11 +239,11 @@ const UpdatesSettings = () => {
239
239
  ? 'Upgrading Remotion...'
240
240
  : 'Remotion has been upgraded.' }), jsx_runtime_1.jsx("div", { style: text, children: upgradeState === 'upgrading'
241
241
  ? 'This may take a few minutes. You can follow the progress in your terminal.'
242
- : upgradeState === 'shutdown'
243
- ? 'Studio is shutting down. Run your Studio start command again in the terminal to use the new version.'
244
- : 'Restart Studio to use the new version. Shut down the server below, then run your Studio start command again in the terminal.' }), upgradeState === 'upgraded' || upgradeState === 'shutting-down' ? (jsx_runtime_1.jsx("div", { style: { marginTop: 12 }, children: jsx_runtime_1.jsx(ModalButton_1.ModalButton, { onClick: shutdown, disabled: upgradeState === 'shutting-down', children: upgradeState === 'shutting-down'
245
- ? 'Shutting down...'
246
- : 'Shut down Studio' }) })) : null, upgradeError ? (jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { message: upgradeError, type: "error", align: "flex-start" })) : null] }));
242
+ : upgradeState === 'restarting'
243
+ ? 'Studio is restarting with the new version.'
244
+ : 'Restart Studio to use the new version.' }), upgradeState === 'upgraded' || upgradeState === 'restarting' ? (jsx_runtime_1.jsx("div", { style: { marginTop: 12 }, children: jsx_runtime_1.jsx(ModalButton_1.ModalButton, { onClick: restart, disabled: upgradeState === 'restarting', children: upgradeState === 'restarting'
245
+ ? 'Restarting...'
246
+ : 'Restart Studio' }) })) : null, upgradeError ? (jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { message: upgradeError, type: "error", align: "flex-start" })) : null] }));
247
247
  }
248
248
  if (info === null) {
249
249
  return (jsx_runtime_1.jsx("div", { style: container, children: error ? (jsx_runtime_1.jsx("div", { style: { paddingTop: 12 }, children: jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { message: 'Could not check for updates: ' + error, align: "flex-start", type: "error" }) })) : (jsx_runtime_1.jsx("div", { style: title, children: "Checking for updates..." })) }));
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.WebMcp = void 0;
37
+ const jsx_runtime_1 = require("react/jsx-runtime");
37
38
  const studio_shared_1 = require("@remotion/studio-shared");
38
39
  const react_1 = require("react");
39
40
  const remotion_1 = require("remotion");
@@ -128,20 +129,10 @@ const resolveAssetPath = ({ assetPath, currentContent, staticFiles, }) => {
128
129
  }
129
130
  return resolvedAssetPath;
130
131
  };
131
- const WebMcp = () => {
132
+ const WebMcpSelectionSync = ({ currentSelectionRef, selectedSequenceRef }) => {
132
133
  var _a;
133
- var _b, _c, _d, _e, _f;
134
- const { addCaptionJob, addVideoMattingJob } = (0, react_1.useContext)(context_1.RenderQueueContext);
135
- const staticFiles = (0, use_static_files_1.useStaticFiles)();
136
- const { canSelect, clearSelection, selectedItems, selectItems } = (0, TimelineSelection_1.useTimelineSelection)();
137
- const { canvasContent, compositions, currentCompositionMetadata, folders } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
138
- const { playbackRate: currentPlaybackRate, setPlaybackRate } = remotion_1.Internals.usePlaybackRate();
139
- const { isPlaying } = remotion_1.Internals.Timeline.useTimelineContext();
140
- const { mediaVolume, playerMuted } = (0, react_1.useContext)(remotion_1.Internals.MediaVolumeContext);
141
- const { setPlayerMuted } = (0, react_1.useContext)(remotion_1.Internals.SetMediaVolumeContext);
142
- const { setZoom: setTimelineZoom, zoom: timelineZoomMap } = (0, react_1.useContext)(timeline_zoom_1.TimelineZoomCtx);
143
- const selectComposition = (0, InitialCompositionLoader_1.useSelectComposition)();
144
- const { editorShowGuides, guidesList, setEditorShowGuides, setGuidesList } = (0, react_1.useContext)(editor_guides_1.EditorShowGuidesContext);
134
+ var _b, _c, _d, _e;
135
+ const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
145
136
  const { sequences } = (0, react_1.useContext)(remotion_1.Internals.SequenceManager);
146
137
  const { overrideIdToNodePathMappings } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsGettersContext);
147
138
  const selectedItem = selectedItems.length === 1 ? selectedItems[0] : null;
@@ -161,16 +152,10 @@ const WebMcp = () => {
161
152
  const currentResolvedLocation = stack === currentStack ? resolvedLocation : null;
162
153
  const currentSelection = (0, react_1.useMemo)(() => {
163
154
  var _a;
164
- if (selectedItems.length === 0) {
165
- return null;
166
- }
167
- if (selectedItems.length > 1) {
168
- return null;
169
- }
170
- if (selectedItem === null || selectedItem.type === 'guide') {
171
- return null;
172
- }
173
- if (track === null) {
155
+ if (selectedItems.length !== 1 ||
156
+ selectedItem === null ||
157
+ selectedItem.type === 'guide' ||
158
+ track === null) {
174
159
  return null;
175
160
  }
176
161
  let name;
@@ -209,15 +194,28 @@ const WebMcp = () => {
209
194
  root: window.remotion_cwd,
210
195
  });
211
196
  }, [currentResolvedLocation, selectedItem, selectedItems.length, track]);
212
- const currentSelectionRef = (0, react_1.useRef)(currentSelection);
213
197
  currentSelectionRef.current = currentSelection;
214
- const selectedSequence = (0, react_1.useMemo)(() => (track === null ? null : serializeSequence(track)), [track]);
215
- const selectedSequenceRef = (0, react_1.useRef)(selectedSequence);
216
- selectedSequenceRef.current = selectedSequence;
217
- const selectedItemsRef = (0, react_1.useRef)(selectedItems);
218
- selectedItemsRef.current = selectedItems;
219
- const canSelectRef = (0, react_1.useRef)(canSelect);
220
- canSelectRef.current = canSelect;
198
+ selectedSequenceRef.current =
199
+ track === null ? null : serializeSequence(track);
200
+ return null;
201
+ };
202
+ const WebMcp = () => {
203
+ var _a;
204
+ const { addCaptionJob, addVideoMattingJob } = (0, react_1.useContext)(context_1.RenderQueueContext);
205
+ const staticFiles = (0, use_static_files_1.useStaticFiles)();
206
+ const timelineSelectionRef = (0, TimelineSelection_1.useCurrentTimelineSelectionStateAsRef)();
207
+ const currentSelectionRef = (0, react_1.useRef)(null);
208
+ const selectedSequenceRef = (0, react_1.useRef)(null);
209
+ const { canvasContent, compositions, currentCompositionMetadata, folders } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
210
+ const { playbackRate: currentPlaybackRate, setPlaybackRate } = remotion_1.Internals.usePlaybackRate();
211
+ const { isPlaying } = remotion_1.Internals.Timeline.useTimelineContext();
212
+ const { mediaVolume, playerMuted } = (0, react_1.useContext)(remotion_1.Internals.MediaVolumeContext);
213
+ const { setPlayerMuted } = (0, react_1.useContext)(remotion_1.Internals.SetMediaVolumeContext);
214
+ const { setZoom: setTimelineZoom, zoom: timelineZoomMap } = (0, react_1.useContext)(timeline_zoom_1.TimelineZoomCtx);
215
+ const selectComposition = (0, InitialCompositionLoader_1.useSelectComposition)();
216
+ const { editorShowGuides, guidesList, setEditorShowGuides, setGuidesList } = (0, react_1.useContext)(editor_guides_1.EditorShowGuidesContext);
217
+ const { sequences } = (0, react_1.useContext)(remotion_1.Internals.SequenceManager);
218
+ const { overrideIdToNodePathMappings } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsGettersContext);
221
219
  const currentCompositionDefinition = (0, react_1.useMemo)(() => {
222
220
  var _a;
223
221
  if ((canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) !== 'composition') {
@@ -241,7 +239,7 @@ const WebMcp = () => {
241
239
  currentContentRef.current = currentContent;
242
240
  const staticFilesRef = (0, react_1.useRef)(staticFiles);
243
241
  staticFilesRef.current = staticFiles;
244
- const currentComposition = (_f = currentCompositionDefinition === null || currentCompositionDefinition === void 0 ? void 0 : currentCompositionDefinition.id) !== null && _f !== void 0 ? _f : null;
242
+ const currentComposition = (_a = currentCompositionDefinition === null || currentCompositionDefinition === void 0 ? void 0 : currentCompositionDefinition.id) !== null && _a !== void 0 ? _a : null;
245
243
  const currentCompositionRef = (0, react_1.useRef)(currentComposition);
246
244
  currentCompositionRef.current = currentComposition;
247
245
  const currentCompositionDefinitionRef = (0, react_1.useRef)(currentCompositionDefinition);
@@ -766,7 +764,7 @@ const WebMcp = () => {
766
764
  if (compositionId === null) {
767
765
  throw new Error('No composition is currently selected.');
768
766
  }
769
- if (!canSelectRef.current) {
767
+ if (!timelineSelectionRef.current.canSelect) {
770
768
  throw new Error('Studio sequence selection is unavailable.');
771
769
  }
772
770
  const timelineTrack = getCurrentTimeline().find((candidate) => candidate.sequence.id === sequenceId);
@@ -777,7 +775,9 @@ const WebMcp = () => {
777
775
  if (selection === null) {
778
776
  throw new Error(`Sequence ${sequenceId} cannot be selected.`);
779
777
  }
780
- selectItems([selection], { reveal: true });
778
+ timelineSelectionRef.current.selectItems([selection], {
779
+ reveal: true,
780
+ });
781
781
  return Promise.resolve({
782
782
  currentContent: currentContentRef.current,
783
783
  selectedSequence: serializeSequence(timelineTrack),
@@ -1025,8 +1025,8 @@ const WebMcp = () => {
1025
1025
  currentFrame: (0, imperative_state_1.getCurrentFrame)(),
1026
1026
  currentSelection: currentSelectionRef.current,
1027
1027
  currentContent: currentContentRef.current,
1028
- selectionType: selectedItemsRef.current.length === 1
1029
- ? selectedItemsRef.current[0].type
1028
+ selectionType: timelineSelectionRef.current.selectedItems.length === 1
1029
+ ? timelineSelectionRef.current.selectedItems[0].type
1030
1030
  : null,
1031
1031
  selectedSequence: selectedSequenceRef.current,
1032
1032
  }),
@@ -1181,9 +1181,9 @@ const WebMcp = () => {
1181
1181
  guidesListRef.current = nextGuides;
1182
1182
  setGuidesList(() => nextGuides);
1183
1183
  (0, editor_guides_1.persistGuidesList)(nextGuides);
1184
- const removedGuideWasSelected = selectedItemsRef.current.some((item) => item.type === 'guide' && item.guideId === guideId);
1184
+ const removedGuideWasSelected = timelineSelectionRef.current.selectedItems.some((item) => item.type === 'guide' && item.guideId === guideId);
1185
1185
  if (removedGuideWasSelected) {
1186
- clearSelection();
1186
+ timelineSelectionRef.current.clearSelection();
1187
1187
  }
1188
1188
  return Promise.resolve({
1189
1189
  currentContent: currentContentRef.current,
@@ -1426,16 +1426,15 @@ const WebMcp = () => {
1426
1426
  }, [
1427
1427
  addCaptionJob,
1428
1428
  addVideoMattingJob,
1429
- clearSelection,
1430
1429
  isPlaying,
1431
1430
  selectComposition,
1432
- selectItems,
1433
1431
  setEditorShowGuides,
1434
1432
  setGuidesList,
1435
1433
  setPlaybackRate,
1436
1434
  setPlayerMuted,
1437
1435
  setTimelineZoom,
1436
+ timelineSelectionRef,
1438
1437
  ]);
1439
- return null;
1438
+ return (jsx_runtime_1.jsx(WebMcpSelectionSync, { currentSelectionRef: currentSelectionRef, selectedSequenceRef: selectedSequenceRef }));
1440
1439
  };
1441
1440
  exports.WebMcp = WebMcp;
@@ -0,0 +1,32 @@
1
+ import type { ComboboxValue } from './NewComposition/ComboBox';
2
+ export declare const getAssetActionAvailability: ({ browserStudioCanMutateAssets, readOnlyStudio, connectionStatus, publicFolderExists, }: {
3
+ browserStudioCanMutateAssets: boolean | null;
4
+ readOnlyStudio: boolean;
5
+ connectionStatus: "connected" | "disconnected" | "init";
6
+ publicFolderExists: string | null;
7
+ }) => {
8
+ mutationsDisabled: boolean;
9
+ fileExplorerDisabled: boolean;
10
+ };
11
+ export declare const getAssetContextMenuItems: ({ relativePath, fileManagerName, copyFileName, copyStaticFilePath, copyAbsolutePath, openAssetInConvert, openAssetInExplorer, renameAsset, deleteAsset, fileExplorerAvailable, fileExplorerDisabled, mutationsDisabled, }: {
12
+ relativePath: string;
13
+ fileManagerName: string;
14
+ copyFileName: () => void;
15
+ copyStaticFilePath: () => void;
16
+ copyAbsolutePath: (() => void) | null;
17
+ openAssetInConvert: () => void;
18
+ openAssetInExplorer: () => void;
19
+ renameAsset: () => void;
20
+ deleteAsset: () => void;
21
+ fileExplorerAvailable: boolean;
22
+ fileExplorerDisabled: boolean;
23
+ mutationsDisabled: boolean;
24
+ }) => ComboboxValue[];
25
+ export declare const useAssetContextMenuItems: ({ relativePath, readOnlyStudio, }: {
26
+ relativePath: string | null;
27
+ readOnlyStudio: boolean;
28
+ }) => {
29
+ fileExplorerDisabled: boolean;
30
+ fileManagerName: string;
31
+ getContextMenuItems: () => ComboboxValue[];
32
+ };