@remotion/studio 4.0.525 → 4.0.527

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 (195) 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/AgentPrompt.d.ts +6 -0
  5. package/dist/components/AgentPrompt.js +107 -0
  6. package/dist/components/AssetFileIcon.js +2 -0
  7. package/dist/components/AssetSelectorItem.d.ts +1 -23
  8. package/dist/components/AssetSelectorItem.js +10 -200
  9. package/dist/components/Canvas.js +109 -44
  10. package/dist/components/CanvasCaptureDropHandler.js +63 -0
  11. package/dist/components/CanvasOrLoading.js +10 -2
  12. package/dist/components/CaptionInspector.js +9 -3
  13. package/dist/{error-overlay/remotion-overlay → components}/CodeFrame.d.ts +2 -0
  14. package/dist/components/CodeFrame.js +77 -0
  15. package/dist/components/CompositionSelectorItem.js +7 -17
  16. package/dist/components/CurrentAsset.js +6 -4
  17. package/dist/components/ElementInstallConfirmation.js +69 -38
  18. package/dist/components/FilePreview.js +4 -0
  19. package/dist/components/FixComputedValueModal.js +64 -96
  20. package/dist/components/GenerateWithAgentModal.d.ts +9 -0
  21. package/dist/components/GenerateWithAgentModal.js +39 -0
  22. package/dist/components/InitialCompositionLoader.js +1 -1
  23. package/dist/components/InlineDropdown.js +26 -2
  24. package/dist/components/InlineEditableTitle.js +3 -0
  25. package/dist/components/InspectorOpenInEditor.js +8 -4
  26. package/dist/components/InspectorPanel/CollapsibleInspectorSection.d.ts +7 -0
  27. package/dist/components/InspectorPanel/CollapsibleInspectorSection.js +14 -0
  28. package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.d.ts +1 -1
  29. package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +20 -8
  30. package/dist/components/InspectorPanel/CompositionInspector.js +32 -15
  31. package/dist/components/InspectorPanel/CompositionMetadata.js +7 -0
  32. package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +6 -12
  33. package/dist/components/InspectorPanel/ElementLibraryButton.js +2 -0
  34. package/dist/components/InspectorPanel/GuideInspector.js +2 -3
  35. package/dist/components/InspectorPanel/KeyframeSettings.js +5 -6
  36. package/dist/components/InspectorPanel/MultiSequenceInspector.js +34 -2
  37. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +45 -4
  38. package/dist/components/InspectorPanel/common.d.ts +4 -0
  39. package/dist/components/InspectorPanel/common.js +15 -2
  40. package/dist/components/InspectorPanel/styles.d.ts +0 -3
  41. package/dist/components/InspectorPanel/styles.js +3 -27
  42. package/dist/components/InspectorPanel/use-composition-actions.d.ts +2 -0
  43. package/dist/components/InspectorPanel/use-composition-actions.js +16 -0
  44. package/dist/components/InspectorPanel/use-inspector-section-expanded.d.ts +1 -0
  45. package/dist/components/InspectorPanel/use-inspector-section-expanded.js +21 -0
  46. package/dist/components/InspectorSequenceSection.js +44 -35
  47. package/dist/components/InspectorSourceLocation.js +4 -0
  48. package/dist/components/KeyboardShortcutsSettings.js +12 -4
  49. package/dist/components/LutPreview.d.ts +4 -0
  50. package/dist/components/LutPreview.js +192 -0
  51. package/dist/components/MenuBuildIndicator.js +1 -0
  52. package/dist/components/MenuCompositionName.js +4 -9
  53. package/dist/components/Modals.js +3 -6
  54. package/dist/components/ModelsSettings.js +15 -4
  55. package/dist/components/NewComposition/CancelButton.js +1 -1
  56. package/dist/components/Notifications/NotificationCenter.d.ts +0 -1
  57. package/dist/components/Notifications/NotificationCenter.js +1 -22
  58. package/dist/components/Preview.js +3 -0
  59. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -0
  60. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -0
  61. package/dist/components/QuickSwitcher/QuickSwitcherResult.js +4 -9
  62. package/dist/components/RadioButton.js +1 -0
  63. package/dist/components/RenderModal/DataEditor.js +4 -1
  64. package/dist/components/RenderModal/SchemaEditor/scroll-to-default-props-path.d.ts +1 -0
  65. package/dist/components/RenderModal/SchemaEditor/scroll-to-default-props-path.js +2 -1
  66. package/dist/components/RenderModal/WebRenderModal.js +10 -2
  67. package/dist/components/RenderQueue/CaptionQueueItem.js +5 -2
  68. package/dist/components/RenderQueue/CaptionQueueProcessor.js +35 -8
  69. package/dist/components/RenderQueue/VideoMattingQueueItem.js +1 -0
  70. package/dist/components/RenderQueue/caption-job-types.d.ts +6 -0
  71. package/dist/components/RenderQueue/index.js +1 -0
  72. package/dist/components/RendersTab.js +4 -0
  73. package/dist/components/SelectedOutlineElement.js +6 -0
  74. package/dist/components/SelectedOutlineSnapIndicators.d.ts +6 -0
  75. package/dist/components/SelectedOutlineSnapIndicators.js +16 -12
  76. package/dist/components/SequencePropsSubscriptionProvider.d.ts +3 -0
  77. package/dist/components/SequencePropsSubscriptionProvider.js +8 -6
  78. package/dist/components/SettingsButton.js +11 -2
  79. package/dist/components/SettingsModal.d.ts +1 -2
  80. package/dist/components/SettingsModal.js +24 -6
  81. package/dist/components/SettingsModalFooter.js +17 -3
  82. package/dist/components/SkillsSettings.d.ts +5 -0
  83. package/dist/components/SkillsSettings.js +29 -26
  84. package/dist/components/Timeline/Timeline.js +10 -11
  85. package/dist/components/Timeline/TimelineAssetField.js +81 -51
  86. package/dist/components/Timeline/TimelineDeleteKeybindings.js +6 -9
  87. package/dist/components/Timeline/TimelineEffectItem.js +1 -0
  88. package/dist/components/Timeline/TimelineExpandArrowButton.js +1 -0
  89. package/dist/components/Timeline/TimelineExpandedRow.js +1 -0
  90. package/dist/components/Timeline/TimelineFieldLabel.js +1 -0
  91. package/dist/components/Timeline/TimelineHeightContainer.js +11 -1
  92. package/dist/components/Timeline/TimelineKeyframeControls.js +16 -1
  93. package/dist/components/Timeline/TimelineLayerChildren.d.ts +3 -3
  94. package/dist/components/Timeline/TimelineLayerChildren.js +11 -9
  95. package/dist/components/Timeline/TimelineLayerEye.d.ts +1 -1
  96. package/dist/components/Timeline/TimelineLayerEye.js +6 -3
  97. package/dist/components/Timeline/TimelineList.js +9 -3
  98. package/dist/components/Timeline/TimelineSchemaField.js +2 -6
  99. package/dist/components/Timeline/TimelineSelection.d.ts +14 -3
  100. package/dist/components/Timeline/TimelineSelection.js +91 -49
  101. package/dist/components/Timeline/TimelineSequence.js +28 -2
  102. package/dist/components/Timeline/TimelineSequenceFrame.js +1 -0
  103. package/dist/components/Timeline/TimelineSequenceItem.d.ts +2 -0
  104. package/dist/components/Timeline/TimelineSequenceItem.js +45 -13
  105. package/dist/components/Timeline/TimelineViewport.d.ts +1 -0
  106. package/dist/components/Timeline/TimelineViewport.js +10 -1
  107. package/dist/components/Timeline/TimelineVirtualization.d.ts +3 -3
  108. package/dist/components/Timeline/delete-selected-timeline-item.js +2 -2
  109. package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +6 -2
  110. package/dist/components/Timeline/get-sequence-context-menu-items.js +143 -46
  111. package/dist/components/Timeline/normalize-font-weight-for-keyframe.d.ts +1 -0
  112. package/dist/components/Timeline/normalize-font-weight-for-keyframe.js +19 -0
  113. package/dist/components/Timeline/split-selected-timeline-item.d.ts +13 -10
  114. package/dist/components/Timeline/split-selected-timeline-item.js +58 -35
  115. package/dist/components/Timeline/timeline-display-groups.d.ts +9 -0
  116. package/dist/components/Timeline/timeline-display-groups.js +66 -0
  117. package/dist/components/Timeline/use-timeline-asset-drop.js +21 -21
  118. package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +2 -1
  119. package/dist/components/Timeline/use-timeline-expanded-tree.js +1 -2
  120. package/dist/components/TimelineCombobox.js +1 -0
  121. package/dist/components/Transcription/TranscriptionModal.js +16 -11
  122. package/dist/components/Transcription/TranscriptionModalWithOptionalWhisper.js +1 -1
  123. package/dist/components/UpdateStatusContext.d.ts +2 -2
  124. package/dist/components/UpdateStatusContext.js +6 -7
  125. package/dist/components/UpdatesSettings.js +6 -6
  126. package/dist/components/WebMcp.js +41 -41
  127. package/dist/components/asset-context-menu.d.ts +32 -0
  128. package/dist/components/asset-context-menu.js +242 -0
  129. package/dist/components/composition-drop-preview.d.ts +9 -2
  130. package/dist/components/composition-drop-preview.js +7 -4
  131. package/dist/components/composition-menu-items.d.ts +4 -6
  132. package/dist/components/composition-menu-items.js +191 -75
  133. package/dist/components/delete-jsx-nodes-api.d.ts +2 -0
  134. package/dist/components/{delete-jsx-node-api.js → delete-jsx-nodes-api.js} +5 -5
  135. package/dist/components/get-open-in-menu-items.d.ts +6 -5
  136. package/dist/components/get-open-in-menu-items.js +22 -16
  137. package/dist/components/keyboard-shortcuts.d.ts +4 -4
  138. package/dist/components/keyboard-shortcuts.js +3 -1
  139. package/dist/components/public-output-name.d.ts +1 -0
  140. package/dist/components/public-output-name.js +7 -3
  141. package/dist/components/selected-outline-order.js +18 -12
  142. package/dist/components/use-open-in-menu-apps.d.ts +14 -0
  143. package/dist/components/use-open-in-menu-apps.js +33 -0
  144. package/dist/error-overlay/remotion-overlay/ErrorDisplay.js +2 -2
  145. package/dist/error-overlay/remotion-overlay/OpenInEditor.d.ts +1 -0
  146. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +3 -3
  147. package/dist/error-overlay/remotion-overlay/StackFrame.d.ts +5 -1
  148. package/dist/error-overlay/remotion-overlay/StackFrame.js +26 -19
  149. package/dist/esm/{CaptionQueueProcessor-k0yrm3dj.mjs → CaptionQueueProcessor-npa6szn1.mjs} +39 -8
  150. package/dist/esm/{LazyModels-gfmpcy4h.mjs → LazyModels-nh3c8h9p.mjs} +4 -3
  151. package/dist/esm/{LazyModels-m1rf06wh.mjs → LazyModels-rr5v8h5y.mjs} +4 -3
  152. package/dist/esm/{TranscriptionModal-8pvrehg4.mjs → TranscriptionModal-79m5wgcj.mjs} +25 -17
  153. package/dist/esm/{VideoMattingModal-fefbzgka.mjs → VideoMattingModal-31pew0xj.mjs} +9 -6
  154. package/dist/esm/index-21hxsfaa.mjs +239 -0
  155. package/dist/esm/{index-s848rffx.mjs → index-4zen9prq.mjs} +5438 -4686
  156. package/dist/esm/index-5t2dwxsk.mjs +530 -0
  157. package/dist/esm/{index-vsxrxfpj.mjs → index-614tdz2q.mjs} +1 -1
  158. package/dist/esm/{index-0x13f28h.mjs → index-9xxg6218.mjs} +20 -541
  159. package/dist/esm/{index-hbezgbbq.mjs → index-ac5550e7.mjs} +1 -1
  160. package/dist/esm/{index-41kqns5c.mjs → index-e855w59j.mjs} +15 -92
  161. package/dist/esm/{index-tzxb8808.mjs → index-n5gmcvhz.mjs} +8 -8
  162. package/dist/esm/{index-ggqpre9v.mjs → index-ppspzgn9.mjs} +4963 -4178
  163. package/dist/esm/{index-jrw61pkj.mjs → index-r0ejh5sy.mjs} +1 -1
  164. package/dist/esm/index-r1gr3j3a.mjs +80 -0
  165. package/dist/esm/{index-mww32xc8.mjs → index-s7qa3xbw.mjs} +6 -4
  166. package/dist/esm/{index-1089795y.mjs → index-vxwg66ar.mjs} +7 -22
  167. package/dist/esm/index.mjs +13 -6
  168. package/dist/esm/internals.mjs +10 -7
  169. package/dist/esm/previewEntry.mjs +10 -7
  170. package/dist/esm/{resolve-composition-component-location-bt2d6qxq.mjs → resolve-composition-component-location-qrp05g62.mjs} +1 -1
  171. package/dist/helpers/client-id.d.ts +1 -0
  172. package/dist/helpers/client-id.js +8 -4
  173. package/dist/helpers/copy-text.js +1 -16
  174. package/dist/helpers/cube-lut.d.ts +12 -0
  175. package/dist/helpers/cube-lut.js +160 -0
  176. package/dist/helpers/get-preview-file-type.d.ts +1 -1
  177. package/dist/helpers/get-preview-file-type.js +3 -0
  178. package/dist/helpers/hoverable.js +2 -1
  179. package/dist/helpers/open-in-editor.d.ts +5 -2
  180. package/dist/helpers/open-in-editor.js +13 -5
  181. package/dist/helpers/settings-tab-availability.d.ts +14 -0
  182. package/dist/helpers/settings-tab-availability.js +35 -0
  183. package/dist/helpers/studio-runtime-config.d.ts +1 -1
  184. package/dist/helpers/use-keybinding.d.ts +1 -1
  185. package/dist/helpers/use-keyboard-shortcut-label.d.ts +2 -2
  186. package/dist/helpers/use-menu-structure.js +31 -21
  187. package/dist/icons/lut.d.ts +4 -0
  188. package/dist/icons/lut.js +6 -0
  189. package/dist/icons/sparkles.d.ts +4 -0
  190. package/dist/icons/sparkles.js +6 -0
  191. package/dist/state/modals.d.ts +17 -2
  192. package/dist/state/timeline-zoom.js +4 -0
  193. package/package.json +19 -19
  194. package/dist/components/delete-jsx-node-api.d.ts +0 -2
  195. package/dist/error-overlay/remotion-overlay/CodeFrame.js +0 -62
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSafeSettingsTab = exports.getAvailableSettingsTabs = exports.canInstallPackagesInStudio = exports.canEditStudioConfig = void 0;
4
+ const canEditStudioConfig = ({ isBrowserStudio, previewServerConnected, readOnlyStudio, }) => {
5
+ return previewServerConnected && !readOnlyStudio && !isBrowserStudio;
6
+ };
7
+ exports.canEditStudioConfig = canEditStudioConfig;
8
+ const canInstallPackagesInStudio = (studioMode) => {
9
+ return studioMode.isBrowserStudio || (0, exports.canEditStudioConfig)(studioMode);
10
+ };
11
+ exports.canInstallPackagesInStudio = canInstallPackagesInStudio;
12
+ const getAvailableSettingsTabs = ({ isBrowserStudio, packageManagerAvailable, previewServerConnected, readOnlyStudio, showUpdates, }) => {
13
+ const studioMode = {
14
+ isBrowserStudio,
15
+ previewServerConnected,
16
+ readOnlyStudio,
17
+ };
18
+ const canEditConfig = (0, exports.canEditStudioConfig)(studioMode);
19
+ const canInstallPackages = (0, exports.canInstallPackagesInStudio)(studioMode) &&
20
+ (isBrowserStudio || packageManagerAvailable);
21
+ return [
22
+ ...(canEditConfig ? ['studio', 'rendering'] : []),
23
+ 'shortcuts',
24
+ ...(canInstallPackages ? ['packages'] : []),
25
+ ...(canEditConfig ? ['skills'] : []),
26
+ ...(isBrowserStudio || !readOnlyStudio ? ['models'] : []),
27
+ ...(canEditConfig ? ['apps', 'license'] : []),
28
+ ...(showUpdates ? ['updates'] : []),
29
+ ];
30
+ };
31
+ exports.getAvailableSettingsTabs = getAvailableSettingsTabs;
32
+ const getSafeSettingsTab = (requestedTab, availableTabs) => {
33
+ return availableTabs.includes(requestedTab) ? requestedTab : 'shortcuts';
34
+ };
35
+ exports.getSafeSettingsTab = getSafeSettingsTab;
@@ -2,6 +2,6 @@ export declare const DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = 300;
2
2
  export declare const getStudioAskAIEnabled: () => boolean;
3
3
  export declare const getStudioInteractivityEnabled: () => boolean;
4
4
  export declare const getStudioKeyboardShortcutsEnabled: () => boolean;
5
- export declare const getStudioKeyboardShortcuts: () => Partial<Record<"askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "pickColor" | "playForward" | "playPause" | "previousComposition" | "quickSwitcher" | "redo" | "render" | "resetZoom" | "reversePlayback" | "selectAllSequenceRows" | "selectOpacityProp" | "selectRotateProp" | "selectScaleProp" | "selectTranslateProp" | "setInPoint" | "setOutPoint" | "showKeyboardShortcuts" | "toggleBothSidebars" | "toggleCheckerboard" | "toggleLeftSidebar" | "toggleLoop" | "toggleMute" | "toggleOutlines" | "toggleRightSidebar" | "toggleRulersAndGuides" | "toggleSnapping" | "undo" | "zoomIn" | "zoomOut", import("@remotion/studio-shared").StudioKeyboardShortcutValue>> | null;
5
+ export declare const getStudioKeyboardShortcuts: () => Partial<Record<"askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "pickColor" | "playForward" | "playPause" | "previousComposition" | "quickSwitcher" | "redo" | "render" | "resetZoom" | "reversePlayback" | "selectAllSequenceRows" | "selectOpacityProp" | "selectRotateProp" | "selectScaleProp" | "selectTranslateProp" | "setInPoint" | "setOutPoint" | "showKeyboardShortcuts" | "splitSequences" | "toggleBothSidebars" | "toggleCheckerboard" | "toggleLeftSidebar" | "toggleLoop" | "toggleMute" | "toggleOutlines" | "toggleRightSidebar" | "toggleRulersAndGuides" | "toggleSnapping" | "undo" | "zoomIn" | "zoomOut", import("@remotion/studio-shared").StudioKeyboardShortcutValue>> | null;
6
6
  export declare const getStudioMaxTimelineTracks: () => number | null;
7
7
  export declare const getStudioBufferStateDelayInMilliseconds: () => number;
@@ -8,7 +8,7 @@ export declare const useKeybinding: () => {
8
8
  triggerIfInputFieldFocused: boolean;
9
9
  keepRegisteredWhenNotHighestContext: boolean;
10
10
  } & ({
11
- action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "pickColor" | "playForward" | "playPause" | "previousComposition" | "quickSwitcher" | "redo" | "render" | "resetZoom" | "reversePlayback" | "selectAllSequenceRows" | "selectOpacityProp" | "selectRotateProp" | "selectScaleProp" | "selectTranslateProp" | "setInPoint" | "setOutPoint" | "showKeyboardShortcuts" | "toggleBothSidebars" | "toggleCheckerboard" | "toggleLeftSidebar" | "toggleLoop" | "toggleMute" | "toggleOutlines" | "toggleRightSidebar" | "toggleRulersAndGuides" | "toggleSnapping" | "undo" | "zoomIn" | "zoomOut";
11
+ action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "pickColor" | "playForward" | "playPause" | "previousComposition" | "quickSwitcher" | "redo" | "render" | "resetZoom" | "reversePlayback" | "selectAllSequenceRows" | "selectOpacityProp" | "selectRotateProp" | "selectScaleProp" | "selectTranslateProp" | "setInPoint" | "setOutPoint" | "showKeyboardShortcuts" | "splitSequences" | "toggleBothSidebars" | "toggleCheckerboard" | "toggleLeftSidebar" | "toggleLoop" | "toggleMute" | "toggleOutlines" | "toggleRightSidebar" | "toggleRulersAndGuides" | "toggleSnapping" | "undo" | "zoomIn" | "zoomOut";
12
12
  key?: undefined;
13
13
  commandCtrlKey?: undefined;
14
14
  } | {
@@ -1,2 +1,2 @@
1
- export declare const useKeyboardShortcutLabel: (action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "pickColor" | "playForward" | "playPause" | "previousComposition" | "quickSwitcher" | "redo" | "render" | "resetZoom" | "reversePlayback" | "selectAllSequenceRows" | "selectOpacityProp" | "selectRotateProp" | "selectScaleProp" | "selectTranslateProp" | "setInPoint" | "setOutPoint" | "showKeyboardShortcuts" | "toggleBothSidebars" | "toggleCheckerboard" | "toggleLeftSidebar" | "toggleLoop" | "toggleMute" | "toggleOutlines" | "toggleRightSidebar" | "toggleRulersAndGuides" | "toggleSnapping" | "undo" | "zoomIn" | "zoomOut") => string;
2
- export declare const useKeyboardShortcutAriaKeyShortcuts: (action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "pickColor" | "playForward" | "playPause" | "previousComposition" | "quickSwitcher" | "redo" | "render" | "resetZoom" | "reversePlayback" | "selectAllSequenceRows" | "selectOpacityProp" | "selectRotateProp" | "selectScaleProp" | "selectTranslateProp" | "setInPoint" | "setOutPoint" | "showKeyboardShortcuts" | "toggleBothSidebars" | "toggleCheckerboard" | "toggleLeftSidebar" | "toggleLoop" | "toggleMute" | "toggleOutlines" | "toggleRightSidebar" | "toggleRulersAndGuides" | "toggleSnapping" | "undo" | "zoomIn" | "zoomOut") => string;
1
+ export declare const useKeyboardShortcutLabel: (action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "pickColor" | "playForward" | "playPause" | "previousComposition" | "quickSwitcher" | "redo" | "render" | "resetZoom" | "reversePlayback" | "selectAllSequenceRows" | "selectOpacityProp" | "selectRotateProp" | "selectScaleProp" | "selectTranslateProp" | "setInPoint" | "setOutPoint" | "showKeyboardShortcuts" | "splitSequences" | "toggleBothSidebars" | "toggleCheckerboard" | "toggleLeftSidebar" | "toggleLoop" | "toggleMute" | "toggleOutlines" | "toggleRightSidebar" | "toggleRulersAndGuides" | "toggleSnapping" | "undo" | "zoomIn" | "zoomOut") => string;
2
+ export declare const useKeyboardShortcutAriaKeyShortcuts: (action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "pickColor" | "playForward" | "playPause" | "previousComposition" | "quickSwitcher" | "redo" | "render" | "resetZoom" | "reversePlayback" | "selectAllSequenceRows" | "selectOpacityProp" | "selectRotateProp" | "selectScaleProp" | "selectTranslateProp" | "setInPoint" | "setOutPoint" | "showKeyboardShortcuts" | "splitSequences" | "toggleBothSidebars" | "toggleCheckerboard" | "toggleLeftSidebar" | "toggleLoop" | "toggleMute" | "toggleOutlines" | "toggleRightSidebar" | "toggleRulersAndGuides" | "toggleSnapping" | "undo" | "zoomIn" | "zoomOut") => string;
@@ -14,7 +14,7 @@ const actions_1 = require("../components/RenderQueue/actions");
14
14
  const SizeSelector_1 = require("../components/SizeSelector");
15
15
  const use_resolved_stack_1 = require("../components/Timeline/use-resolved-stack");
16
16
  const TimelineInOutToggle_1 = require("../components/TimelineInOutToggle");
17
- const use_default_editor_info_1 = require("../components/use-default-editor-info");
17
+ const use_open_in_menu_apps_1 = require("../components/use-open-in-menu-apps");
18
18
  const Checkmark_1 = require("../icons/Checkmark");
19
19
  const canvas_ref_1 = require("../state/canvas-ref");
20
20
  const checkerboard_1 = require("../state/checkerboard");
@@ -27,13 +27,13 @@ const modals_1 = require("../state/modals");
27
27
  const sidebar_1 = require("../state/sidebar");
28
28
  const browser_studio_operations_1 = require("./browser-studio-operations");
29
29
  const check_fullscreen_support_1 = require("./check-fullscreen-support");
30
- const client_id_1 = require("./client-id");
31
30
  const colors_1 = require("./colors");
32
31
  const get_file_manager_name_1 = require("./get-file-manager-name");
33
32
  const get_git_menu_item_1 = require("./get-git-menu-item");
34
33
  const mobile_layout_1 = require("./mobile-layout");
35
34
  const open_in_editor_1 = require("./open-in-editor");
36
35
  const pick_color_1 = require("./pick-color");
36
+ const settings_tab_availability_1 = require("./settings-tab-availability");
37
37
  const studio_runtime_config_1 = require("./studio-runtime-config");
38
38
  const use_keybinding_1 = require("./use-keybinding");
39
39
  const use_keyboard_shortcut_label_1 = require("./use-keyboard-shortcut-label");
@@ -186,7 +186,7 @@ const getFileMenu = ({ readOnlyStudio, closeMenu, editorName, editorId, previewS
186
186
  quickSwitcherLabel: null,
187
187
  };
188
188
  };
189
- const getRenderMenuItems = ({ closeMenu, previewServerState, readOnlyStudio, renderShortcut, }) => {
189
+ const getRenderMenuItems = ({ closeMenu, previewServerState, readOnlyStudio, renderShortcut, compositionSelected, }) => {
190
190
  return [
191
191
  readOnlyStudio
192
192
  ? null
@@ -210,6 +210,7 @@ const getRenderMenuItems = ({ closeMenu, previewServerState, readOnlyStudio, ren
210
210
  leftItem: null,
211
211
  subMenu: null,
212
212
  quickSwitcherLabel: 'Render...',
213
+ disabled: !compositionSelected,
213
214
  },
214
215
  {
215
216
  id: 'render-on-web',
@@ -225,6 +226,7 @@ const getRenderMenuItems = ({ closeMenu, previewServerState, readOnlyStudio, ren
225
226
  leftItem: null,
226
227
  subMenu: null,
227
228
  quickSwitcherLabel: 'Render in browser...',
229
+ disabled: !compositionSelected,
228
230
  },
229
231
  {
230
232
  type: 'divider',
@@ -243,8 +245,8 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
243
245
  const { editorSnapping, setEditorSnapping } = (0, react_1.useContext)(editor_snapping_1.EditorSnappingContext);
244
246
  const { size, setSize } = (0, react_1.useContext)(remotion_1.Internals.PreviewSizeContext);
245
247
  const { canvasContent, compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
246
- const { type } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx).previewServerState;
247
- const { defaultEditorId, defaultEditorName } = (0, use_default_editor_info_1.useEditorOpening)(type === 'connected');
248
+ const { connectionStatus: type, openInApps } = (0, use_open_in_menu_apps_1.useOpenInMenuApps)();
249
+ const { defaultEditorId, defaultEditorName } = openInApps;
248
250
  const keyboardShortcutsDisabled = (0, use_keybinding_1.areKeyboardShortcutsDisabled)();
249
251
  const resetZoomShortcut = (0, use_keyboard_shortcut_label_1.useKeyboardShortcutLabel)('resetZoom');
250
252
  const toggleSnappingShortcut = (0, use_keyboard_shortcut_label_1.useKeyboardShortcutLabel)('toggleSnapping');
@@ -264,6 +266,11 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
264
266
  const isFullscreenSupported = (0, check_fullscreen_support_1.checkFullscreenSupport)();
265
267
  const { remotion_packageManager } = window;
266
268
  const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
269
+ const studioConfigEditable = (0, settings_tab_availability_1.canEditStudioConfig)({
270
+ isBrowserStudio: browserStudioOperations !== null,
271
+ previewServerConnected: type === 'connected',
272
+ readOnlyStudio,
273
+ });
267
274
  const sizePreselectIndex = sizes.findIndex((s) => String(size.size) === String(s.size));
268
275
  const mobileLayout = (0, mobile_layout_1.useMobileLayout)();
269
276
  const currentComposition = (0, react_1.useMemo)(() => {
@@ -330,7 +337,7 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
330
337
  closeMenu();
331
338
  setSelectedModal({
332
339
  type: 'settings',
333
- initialTab: browserStudioOperations === null ? 'studio' : 'shortcuts',
340
+ initialTab: studioConfigEditable ? 'studio' : 'shortcuts',
334
341
  initialPublicLicenseKey: (_b = (_a = window.remotion_renderDefaults) === null || _a === void 0 ? void 0 : _a.publicLicenseKey) !== null && _b !== void 0 ? _b : null,
335
342
  });
336
343
  },
@@ -339,8 +346,6 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
339
346
  leftItem: null,
340
347
  subMenu: null,
341
348
  quickSwitcherLabel: 'Settings...',
342
- disabled: (browserStudioOperations === null && readOnlyStudio) ||
343
- type !== 'connected',
344
349
  },
345
350
  {
346
351
  id: 'acknowledgements',
@@ -356,13 +361,13 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
356
361
  subMenu: null,
357
362
  quickSwitcherLabel: 'Help: Acknowledgements',
358
363
  },
359
- browserStudioOperations === null
364
+ studioConfigEditable
360
365
  ? {
361
366
  type: 'divider',
362
367
  id: 'timeline-divider-1',
363
368
  }
364
369
  : null,
365
- browserStudioOperations === null
370
+ studioConfigEditable
366
371
  ? {
367
372
  id: 'restart-studio',
368
373
  value: 'restart-studio',
@@ -775,14 +780,14 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
775
780
  previewServerState: type,
776
781
  readOnlyStudio,
777
782
  renderShortcut,
783
+ compositionSelected: currentComposition !== null,
778
784
  }),
779
785
  ...(0, composition_menu_items_1.getCompositionMenuItems)({
780
786
  closeMenu,
781
787
  composition: currentComposition,
782
788
  connectionStatus: type,
783
- editorId: defaultEditorId,
784
- editorName: defaultEditorName,
785
789
  includeCompositionManagementItems: true,
790
+ openInApps,
786
791
  resolvedLocation: resolvedCompositionLocation,
787
792
  setSelectedModal,
788
793
  readOnlyStudio,
@@ -834,7 +839,7 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
834
839
  : null,
835
840
  !(0, browser_studio_operations_1.canInstallPackages)() ||
836
841
  (browserStudioOperations === null &&
837
- remotion_packageManager === 'unknown')
842
+ (remotion_packageManager === 'unknown' || type !== 'connected'))
838
843
  ? null
839
844
  : {
840
845
  id: 'install-packages',
@@ -1057,6 +1062,7 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
1057
1062
  mobileLayout,
1058
1063
  defaultEditorId,
1059
1064
  defaultEditorName,
1065
+ openInApps,
1060
1066
  keyboardShortcutsDisabled,
1061
1067
  studioAskAIEnabled,
1062
1068
  askAIShortcut,
@@ -1072,6 +1078,7 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
1072
1078
  showKeyboardShortcutsShortcut,
1073
1079
  toggleSnappingShortcut,
1074
1080
  browserStudioOperations,
1081
+ studioConfigEditable,
1075
1082
  size.size,
1076
1083
  setSize,
1077
1084
  setEditorZoomGestures,
@@ -1096,7 +1103,7 @@ const getItemLabel = (item) => {
1096
1103
  }
1097
1104
  return (_a = item.label) === null || _a === void 0 ? void 0 : _a.toString();
1098
1105
  };
1099
- const itemToSearchResult = (item, setSelectedModal, prefixes) => {
1106
+ const itemToSearchResult = (item, setSelectedModal, prefixes, path) => {
1100
1107
  if (item.disabled) {
1101
1108
  return [];
1102
1109
  }
@@ -1106,23 +1113,26 @@ const itemToSearchResult = (item, setSelectedModal, prefixes) => {
1106
1113
  if (subItem.type !== 'item') {
1107
1114
  return null;
1108
1115
  }
1109
- return itemToSearchResult(subItem, setSelectedModal, [
1110
- ...prefixes,
1111
- getItemLabel(item),
1112
- ]);
1116
+ return itemToSearchResult(subItem, setSelectedModal, [...prefixes, getItemLabel(item)], [...path, subItem.id]);
1113
1117
  })
1114
1118
  .flat(1)
1115
1119
  .filter(no_react_1.NoReactInternals.truthy);
1116
1120
  }
1121
+ const label = getItemLabel(item);
1122
+ const distinctPrefixes = prefixes.filter((prefix, index) => prefix !== prefixes[index + 1]);
1123
+ if (distinctPrefixes.length > 0 &&
1124
+ label.startsWith(`${distinctPrefixes.at(-1)}: `)) {
1125
+ distinctPrefixes.pop();
1126
+ }
1117
1127
  return [
1118
1128
  {
1119
1129
  type: 'menu-item',
1120
- id: item.id,
1130
+ id: path.join(':'),
1121
1131
  onSelected: () => {
1122
1132
  setSelectedModal(null);
1123
1133
  item.onClick(item.id, null);
1124
1134
  },
1125
- title: [...prefixes, getItemLabel(item)].join(': '),
1135
+ title: [...distinctPrefixes, label].join(': '),
1126
1136
  },
1127
1137
  ];
1128
1138
  };
@@ -1133,7 +1143,7 @@ const makeSearchResults = (actions, setSelectedModal) => {
1133
1143
  if (item.type !== 'item') {
1134
1144
  return null;
1135
1145
  }
1136
- return itemToSearchResult(item, setSelectedModal, []);
1146
+ return itemToSearchResult(item, setSelectedModal, [], [menu.id, item.id]);
1137
1147
  });
1138
1148
  })
1139
1149
  .flat(Infinity)
@@ -0,0 +1,4 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare const LutFileIcon: ({ color, ...props }: SVGProps<SVGSVGElement> & {
3
+ readonly color: string;
4
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LutFileIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const LutFileIcon = ({ color, ...props }) => (jsx_runtime_1.jsx("svg", { ...props, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 640 640", children: jsx_runtime_1.jsx("path", { fill: color, d: "M537.7 64C522.8 64 508.4 68.7 496.3 77.5L286.1 230.3C257.1 251.4 240 285 240 320.9L240 321C234.8 320.3 229.4 320 224 320C153.3 320 96 377.3 96 448C96 463.5 98.8 478.4 103.8 492.2C111.4 513 98 544 75.8 544L48 544C39.2 544 32 551.2 32 560C32 568.8 39.2 576 48 576L224 576C294.7 576 352 518.7 352 448C352 442.6 351.7 437.2 351 432L351.1 432C386.9 432 420.6 414.9 441.7 385.9L594.5 175.7C603.3 163.7 608 149.2 608 134.3C608 95.5 576.5 64 537.7 64zM342.7 400C329.7 367.9 304.1 342.3 272 329.3L272 320.9C272 295.3 284.2 271.3 304.9 256.2L515.1 103.3C521.7 98.5 529.5 96 537.6 96C558.8 96 575.9 113.2 575.9 134.3C575.9 142.4 573.3 150.3 568.6 156.8L415.8 367.1C400.7 387.8 376.7 400 351.1 400L342.7 400zM320 448C320 501 277 544 224 544L127.6 544C128.3 542.7 129 541.4 129.7 540.2C138 523.5 141.4 501.3 133.9 481.2C130.1 470.9 128 459.8 128 448.1C128 395.1 171 352.1 224 352.1C277 352.1 320 395.1 320 448.1z" }) }));
6
+ exports.LutFileIcon = LutFileIcon;
@@ -0,0 +1,4 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare const SparklesIcon: React.FC<SVGProps<SVGSVGElement> & {
3
+ readonly color: string;
4
+ }>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SparklesIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const SparklesIcon = ({ color, ...props }) => (jsx_runtime_1.jsx("svg", { ...props, fill: color, viewBox: "0 0 640 640", children: jsx_runtime_1.jsx("path", { d: "M390.6 268.1 529.2 320 390.6 371.9C381.9 375.1 375.1 382 371.8 390.7L320 529.2 268.1 390.6C264.9 381.9 258 375.1 249.3 371.8L110.8 320 249.4 268.1C258.1 264.9 264.9 258 268.2 249.3L320 110.8 371.9 249.4C375.1 258.1 382 264.9 390.7 268.2ZM401.8 238.1 342.5 79.6C339 70.2 330 64 320 64S301 70.2 297.5 79.6L238.2 238.2 79.6 297.5C70.2 301 64 310 64 320S70.2 339 79.6 342.5L238.2 401.9 297.6 560.5C301 569.8 310 576 320 576S339 569.8 342.5 560.4L401.9 401.8 560.5 342.4C569.8 339 576 330 576 320S569.8 301 560.4 297.5L401.8 238.2Z" }) }));
6
+ exports.SparklesIcon = SparklesIcon;
@@ -127,6 +127,11 @@ export type TranscriptionModalState = {
127
127
  displayName: string;
128
128
  audioStreamIndex: number | null;
129
129
  requestInit: Omit<RequestInit, 'signal'> | null;
130
+ target: {
131
+ fileName: string;
132
+ nodePath: SequencePropsSubscriptionKey;
133
+ durationInFrames: number | null;
134
+ } | null;
130
135
  };
131
136
  export type VideoMattingModalState = {
132
137
  type: 'video-matting';
@@ -143,6 +148,7 @@ export type CanvasCaptureImport = {
143
148
  export type ElementInstallPlan = {
144
149
  readonly compositionFile: string;
145
150
  readonly expectedFileState: ElementInstallExpectedFileState;
151
+ readonly filePath: string;
146
152
  };
147
153
  export type ElementInstallModalState = {
148
154
  readonly type: 'element-install';
@@ -199,8 +205,17 @@ export type ModalState = {
199
205
  } | {
200
206
  type: 'fix-computed-value';
201
207
  prop: string;
202
- context: string;
203
- remotionInteractivitySkillAvailable: boolean;
208
+ location: {
209
+ source: string;
210
+ line: number;
211
+ column: number;
212
+ };
213
+ } | {
214
+ type: 'generate-with-agent';
215
+ location: {
216
+ source: string;
217
+ line: number;
218
+ } | null;
204
219
  } | {
205
220
  type: 'quick-switcher';
206
221
  mode: QuickSwitcherMode;
@@ -7,6 +7,7 @@ const react_dom_1 = require("react-dom");
7
7
  const imperative_state_1 = require("../components/Timeline/imperative-state");
8
8
  const timeline_refs_1 = require("../components/Timeline/timeline-refs");
9
9
  const timeline_scroll_logic_1 = require("../components/Timeline/timeline-scroll-logic");
10
+ const TimelineViewport_1 = require("../components/Timeline/TimelineViewport");
10
11
  const ZoomPersistor_1 = require("../components/ZoomPersistor");
11
12
  const get_timeline_max_zoom_1 = require("../helpers/get-timeline-max-zoom");
12
13
  exports.TimelineZoomCtx = (0, react_1.createContext)({
@@ -48,6 +49,9 @@ const TimelineZoomContext = ({ children }) => {
48
49
  // The new scroll range exists now, so the browser will not clamp the offset
49
50
  // against the previous width.
50
51
  preserveTimelineCursor();
52
+ // A large zoom can move beyond the old horizontal render window. Commit
53
+ // the new window before the browser paints the new scroll position.
54
+ (0, react_dom_1.flushSync)(TimelineViewport_1.syncTimelineViewport);
51
55
  }, []);
52
56
  const value = (0, react_1.useMemo)(() => {
53
57
  return {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/studio"
4
4
  },
5
5
  "name": "@remotion/studio",
6
- "version": "4.0.525",
6
+ "version": "4.0.527",
7
7
  "description": "APIs for interacting with the Remotion Studio",
8
8
  "main": "dist",
9
9
  "scripts": {
@@ -20,8 +20,8 @@
20
20
  "url": "https://github.com/remotion-dev/remotion/issues"
21
21
  },
22
22
  "peerDependencies": {
23
- "@remotion/video-matting": "4.0.525",
24
- "@remotion/whisper-webgpu": "4.0.525",
23
+ "@remotion/video-matting": "4.0.527",
24
+ "@remotion/whisper-webgpu": "4.0.527",
25
25
  "react": ">=16.8.0",
26
26
  "react-dom": ">=16.8.0"
27
27
  },
@@ -35,32 +35,32 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@jridgewell/trace-mapping": "0.3.31",
38
- "@remotion/canvas": "4.0.525",
39
- "@remotion/captions": "4.0.525",
40
- "@remotion/media": "4.0.525",
41
- "@remotion/media-utils": "4.0.525",
42
- "@remotion/player": "4.0.525",
43
- "@remotion/renderer": "4.0.525",
44
- "@remotion/studio-codemods": "4.0.525",
45
- "@remotion/studio-protocol": "4.0.525",
46
- "@remotion/studio-shared": "4.0.525",
47
- "@remotion/timeline-utils": "4.0.525",
48
- "@remotion/web-renderer": "4.0.525",
49
- "@remotion/zod-types": "4.0.525",
38
+ "@remotion/canvas": "4.0.527",
39
+ "@remotion/captions": "4.0.527",
40
+ "@remotion/media": "4.0.527",
41
+ "@remotion/media-utils": "4.0.527",
42
+ "@remotion/player": "4.0.527",
43
+ "@remotion/renderer": "4.0.527",
44
+ "@remotion/codemods": "4.0.527",
45
+ "@remotion/studio-protocol": "4.0.527",
46
+ "@remotion/studio-shared": "4.0.527",
47
+ "@remotion/timeline-utils": "4.0.527",
48
+ "@remotion/web-renderer": "4.0.527",
49
+ "@remotion/zod-types": "4.0.527",
50
50
  "@tanstack/react-virtual": "3.14.9",
51
51
  "mediabunny": "1.56.1",
52
52
  "memfs": "3.4.3",
53
53
  "open": "8.4.2",
54
54
  "prismjs": "1.30.0",
55
- "remotion": "4.0.525",
55
+ "remotion": "4.0.527",
56
56
  "semver": "7.5.3",
57
57
  "zod": "4.5.4"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@happy-dom/global-registrator": "14.5.1",
61
- "@remotion/eslint-config-internal": "4.0.525",
62
- "@remotion/video-matting": "4.0.525",
63
- "@remotion/whisper-webgpu": "4.0.525",
61
+ "@remotion/eslint-config-internal": "4.0.527",
62
+ "@remotion/video-matting": "4.0.527",
63
+ "@remotion/whisper-webgpu": "4.0.527",
64
64
  "@testing-library/react": "16.1.0",
65
65
  "@types/prismjs": "1.26.4",
66
66
  "@types/semver": "7.5.3",
@@ -1,2 +0,0 @@
1
- import type { DeleteJsxNodeRequest, DeleteJsxNodeResponse } from '@remotion/studio-shared';
2
- export declare const deleteJsxNode: (request: DeleteJsxNodeRequest) => Promise<DeleteJsxNodeResponse>;
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CodeFrame = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const LazySyntaxHighlightedSource_1 = require("../../components/LazySyntaxHighlightedSource");
6
- const is_menu_item_1 = require("../../components/Menu/is-menu-item");
7
- const colors_1 = require("../../helpers/colors");
8
- const container = {
9
- display: 'flex',
10
- flexDirection: 'row',
11
- width: '100%',
12
- };
13
- const frame = {
14
- backgroundColor: colors_1.ERROR_CODE_FRAME_BACKGROUND,
15
- borderRadius: 6,
16
- marginBottom: 20,
17
- marginLeft: 14,
18
- marginRight: 14,
19
- overflowY: 'auto',
20
- };
21
- const lineNumber = {
22
- whiteSpace: 'pre',
23
- paddingRight: 12,
24
- color: 'inherit',
25
- fontSize: 14,
26
- lineHeight: 1.7,
27
- width: 60,
28
- flexShrink: 0,
29
- display: 'inline-flex',
30
- alignItems: 'center',
31
- justifyContent: 'flex-end',
32
- fontFamily: 'monospace',
33
- };
34
- const CodeFrame = ({ source, lineNumberWidth }) => {
35
- return (jsx_runtime_1.jsx("div", { style: frame, className: is_menu_item_1.HORIZONTAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx("div", { style: { minWidth: '100%', width: 'max-content' }, children: source.map((s, j) => {
36
- return (jsx_runtime_1.jsxs("div", { style: {
37
- ...container,
38
- backgroundColor: s.highlight
39
- ? colors_1.SELECTED_BACKGROUND
40
- : colors_1.TRANSPARENT,
41
- }, children: [
42
- jsx_runtime_1.jsx("div", { style: {
43
- ...lineNumber,
44
- backgroundColor: s.highlight
45
- ? colors_1.TRANSPARENT
46
- : colors_1.ERROR_CODE_FRAME_LINE_BACKGROUND,
47
- color: s.highlight ? colors_1.WHITE : colors_1.WHITE_ALPHA_40,
48
- }, children: String(s.lineNumber).padStart(lineNumberWidth, ' ') }), jsx_runtime_1.jsx("code", { className: "language-tsx", style: {
49
- fontFamily: 'monospace',
50
- fontSize: 14,
51
- color: '#9cdcfe',
52
- whiteSpace: 'pre',
53
- tabSize: 2,
54
- backgroundColor: colors_1.TRANSPARENT,
55
- lineHeight: 1.7,
56
- paddingRight: 12,
57
- paddingLeft: 12,
58
- }, children: jsx_runtime_1.jsx(LazySyntaxHighlightedSource_1.LazySyntaxHighlightedSource, { source: s.content }) })
59
- ] }, j));
60
- }) }) }));
61
- };
62
- exports.CodeFrame = CodeFrame;