@remotion/studio 4.0.505 → 4.0.507

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 (208) hide show
  1. package/dist/api/copy-render-output-to-asset.d.ts +4 -0
  2. package/dist/api/copy-render-output-to-asset.js +11 -0
  3. package/dist/api/install-package.d.ts +2 -3
  4. package/dist/api/install-package.js +1 -3
  5. package/dist/api/visual-control.d.ts +3 -0
  6. package/dist/api/visual-control.js +3 -0
  7. package/dist/components/AssetSelector.js +19 -4
  8. package/dist/components/AssetSelectorItem.js +3 -3
  9. package/dist/components/Canvas.js +2 -0
  10. package/dist/components/CodingAgentIcon.d.ts +4 -0
  11. package/dist/components/CodingAgentIcon.js +17 -0
  12. package/dist/components/CompositionSelector.js +1 -1
  13. package/dist/components/CompositionSelectorItem.js +1 -1
  14. package/dist/components/ConfigureDefaultEditorModal.d.ts +1 -1
  15. package/dist/components/ConfigureDefaultEditorModal.js +117 -69
  16. package/dist/components/ConfigureLicenseModal.d.ts +1 -3
  17. package/dist/components/ConfigureLicenseModal.js +105 -89
  18. package/dist/components/ConfirmationDialog.js +2 -2
  19. package/dist/components/ContextMenu.js +10 -8
  20. package/dist/components/Editor.js +2 -0
  21. package/dist/components/EditorContexts.js +6 -5
  22. package/dist/components/EffectPickerModal.js +1 -1
  23. package/dist/components/ExpandedTracksProvider.js +10 -53
  24. package/dist/components/GlobalKeybindings.js +3 -2
  25. package/dist/components/InlineCaptionInspector.d.ts +2 -2
  26. package/dist/components/InlineDropdown.d.ts +2 -1
  27. package/dist/components/InlineDropdown.js +10 -4
  28. package/dist/components/InspectorLocationCopy.js +8 -8
  29. package/dist/components/InspectorOpenInEditor.d.ts +2 -0
  30. package/dist/components/InspectorOpenInEditor.js +63 -49
  31. package/dist/components/InspectorPanel/AlignmentControls.js +5 -2
  32. package/dist/components/InspectorPanel/CompositionInspector.js +15 -1
  33. package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +1 -1
  34. package/dist/components/InspectorPanel/EasingInspector.js +7 -4
  35. package/dist/components/InspectorPanel/KeyframeInspector.js +5 -1
  36. package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -0
  37. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +22 -4
  38. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -1
  39. package/dist/components/InspectorPanel/common.d.ts +1 -0
  40. package/dist/components/InspectorPanel/common.js +2 -2
  41. package/dist/components/InspectorPanel/use-composition-actions.js +4 -1
  42. package/dist/components/InspectorSequenceSection.js +4 -4
  43. package/dist/components/InstallPackage.js +1 -1
  44. package/dist/components/Menu/MenuSectionHeader.d.ts +4 -0
  45. package/dist/components/Menu/MenuSectionHeader.js +20 -0
  46. package/dist/components/Menu/SubMenu.js +13 -2
  47. package/dist/components/Menu/menu-tree-context.d.ts +3 -0
  48. package/dist/components/Menu/menu-tree-context.js +13 -0
  49. package/dist/components/MenuBuildIndicator.js +1 -0
  50. package/dist/components/MenuToolbar.js +1 -1
  51. package/dist/components/ModalFooter.d.ts +1 -0
  52. package/dist/components/ModalFooter.js +6 -2
  53. package/dist/components/ModalHeader.js +1 -1
  54. package/dist/components/Modals.js +18 -7
  55. package/dist/components/ModalsProvider.js +5 -6
  56. package/dist/components/NewComposition/CodemodFooter.js +1 -1
  57. package/dist/components/NewComposition/ComboBox.d.ts +6 -1
  58. package/dist/components/NewComposition/DismissableModal.js +1 -1
  59. package/dist/components/NewComposition/MenuContent.js +27 -19
  60. package/dist/components/NewComposition/RenameStaticFile.js +1 -1
  61. package/dist/components/NewComposition/menu-typeahead.js +2 -2
  62. package/dist/components/OverrideInputProps.js +1 -1
  63. package/dist/components/PlayPause.js +2 -1
  64. package/dist/components/PlaybackKeyboardShortcutsManager.js +7 -5
  65. package/dist/components/Preview.js +29 -4
  66. package/dist/components/PreviewToolbarOverflowButton.js +4 -2
  67. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -1
  68. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
  69. package/dist/components/RenderButton.d.ts +3 -3
  70. package/dist/components/RenderButton.js +42 -7
  71. package/dist/components/RenderModal/RenderStatusModal.js +1 -1
  72. package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.d.ts +1 -0
  73. package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +2 -2
  74. package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +3 -3
  75. package/dist/components/RenderModal/SchemaEditor/ZodSwitch.js +1 -1
  76. package/dist/components/RenderModal/ServerRenderModal.js +5 -1
  77. package/dist/components/RenderModal/WebRenderModal.js +3 -2
  78. package/dist/components/RenderQueue/RenderQueueError.js +1 -1
  79. package/dist/components/RenderQueue/RenderQueueItem.js +8 -2
  80. package/dist/components/RenderQueue/RenderQueueItemStatus.js +1 -1
  81. package/dist/components/RenderQueue/RenderQueueProgressMessage.js +1 -1
  82. package/dist/components/RenderQueue/RenderQueueRepeat.js +1 -1
  83. package/dist/components/RenderQueue/actions.d.ts +4 -2
  84. package/dist/components/RenderQueue/actions.js +4 -2
  85. package/dist/components/RenderQueue/index.js +3 -4
  86. package/dist/components/RenderQueue/use-render-output-file-drag.d.ts +8 -0
  87. package/dist/components/RenderQueue/use-render-output-file-drag.js +121 -0
  88. package/dist/components/SegmentedControl.js +0 -1
  89. package/dist/components/SelectedOutlineElement.d.ts +14 -17
  90. package/dist/components/SelectedOutlineElement.js +113 -931
  91. package/dist/components/SelectedOutlineKeyboardControls.d.ts +7 -0
  92. package/dist/components/SelectedOutlineKeyboardControls.js +261 -0
  93. package/dist/components/SelectedOutlineOverlay.d.ts +6 -13
  94. package/dist/components/SelectedOutlineOverlay.js +360 -832
  95. package/dist/components/SelectedOutlinePolygon.d.ts +25 -0
  96. package/dist/components/SelectedOutlinePolygon.js +359 -0
  97. package/dist/components/SelectedOutlineRenderer.d.ts +18 -0
  98. package/dist/components/SelectedOutlineRenderer.js +208 -0
  99. package/dist/components/SelectedOutlineRotationCornerHandle.d.ts +16 -0
  100. package/dist/components/SelectedOutlineRotationCornerHandle.js +269 -0
  101. package/dist/components/SelectedOutlineScaleEdgeLine.d.ts +16 -0
  102. package/dist/components/SelectedOutlineScaleEdgeLine.js +211 -0
  103. package/dist/components/SelectedOutlineSnapIndicators.d.ts +9 -0
  104. package/dist/components/SelectedOutlineSnapIndicators.js +29 -0
  105. package/dist/components/SelectedOutlineTransformOriginHandle.d.ts +9 -0
  106. package/dist/components/SelectedOutlineTransformOriginHandle.js +286 -0
  107. package/dist/components/SelectedOutlineUvControls.d.ts +3 -9
  108. package/dist/components/SelectedOutlineUvControls.js +57 -12
  109. package/dist/components/SettingsContext.d.ts +15 -0
  110. package/dist/components/SettingsContext.js +116 -0
  111. package/dist/components/SettingsModal.d.ts +7 -0
  112. package/dist/components/SettingsModal.js +56 -0
  113. package/dist/components/SettingsModalFooter.d.ts +2 -0
  114. package/dist/components/SettingsModalFooter.js +44 -0
  115. package/dist/components/ShowOutlinesProvider.js +2 -3
  116. package/dist/components/SidebarRenderButton.js +1 -1
  117. package/dist/components/SvgImportDialog.js +2 -2
  118. package/dist/components/TimeValue.js +1 -1
  119. package/dist/components/Timeline/EasingEditorModal.js +66 -22
  120. package/dist/components/Timeline/Timeline.js +23 -5
  121. package/dist/components/Timeline/TimelineAssetField.js +1 -1
  122. package/dist/components/Timeline/TimelineDragHandler.js +3 -3
  123. package/dist/components/Timeline/TimelineDuplicateCount.d.ts +4 -0
  124. package/dist/components/Timeline/TimelineDuplicateCount.js +28 -0
  125. package/dist/components/Timeline/TimelineEffectPropItem.js +5 -3
  126. package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +3 -23
  127. package/dist/components/Timeline/TimelineExpandedRow.d.ts +4 -2
  128. package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
  129. package/dist/components/Timeline/TimelineExpandedTrackKeyframes.d.ts +4 -2
  130. package/dist/components/Timeline/TimelineExpandedTrackKeyframes.js +11 -1
  131. package/dist/components/Timeline/TimelineFontFamilyField.js +3 -1
  132. package/dist/components/Timeline/TimelineKeyframeControls.js +1 -0
  133. package/dist/components/Timeline/TimelineSelection.js +1 -0
  134. package/dist/components/Timeline/TimelineSequence.js +28 -25
  135. package/dist/components/Timeline/TimelineSequenceItem.js +74 -58
  136. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +1 -1
  137. package/dist/components/Timeline/TimelineTrack.js +2 -1
  138. package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +6 -3
  139. package/dist/components/Timeline/get-sequence-context-menu-items.js +58 -53
  140. package/dist/components/Timeline/reset-selected-timeline-props.js +1 -1
  141. package/dist/components/Timeline/should-subscribe-to-sequence-props.d.ts +1 -1
  142. package/dist/components/Timeline/timeline-asset-link.d.ts +2 -2
  143. package/dist/components/Timeline/timeline-asset-link.js +2 -2
  144. package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +38 -2
  145. package/dist/components/Timeline/{use-open-sequence-in-editor.d.ts → use-open-sequence-in-apps.d.ts} +4 -1
  146. package/dist/components/Timeline/{use-open-sequence-in-editor.js → use-open-sequence-in-apps.js} +20 -4
  147. package/dist/components/Timeline/use-timeline-asset-drop.js +1 -0
  148. package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +5 -0
  149. package/dist/components/Timeline/use-timeline-expanded-tree.js +50 -1
  150. package/dist/components/Timeline/use-timeline-height.js +20 -0
  151. package/dist/components/TimelineInOutToggle.js +5 -1
  152. package/dist/components/TopPanel.js +16 -0
  153. package/dist/components/UpdateCheck.js +1 -1
  154. package/dist/components/effect-drag-and-drop.js +1 -1
  155. package/dist/components/get-open-in-menu-items.d.ts +12 -0
  156. package/dist/components/get-open-in-menu-items.js +83 -0
  157. package/dist/components/handle-drop.d.ts +2 -1
  158. package/dist/components/handle-drop.js +12 -2
  159. package/dist/components/import-assets.d.ts +18 -6
  160. package/dist/components/import-assets.js +76 -32
  161. package/dist/components/selected-outline-measurement.d.ts +2 -2
  162. package/dist/components/selected-outline-order.d.ts +12 -0
  163. package/dist/components/selected-outline-order.js +251 -0
  164. package/dist/components/selected-outline-types.d.ts +9 -10
  165. package/dist/components/svg-point-to-client-point.d.ts +2 -0
  166. package/dist/components/svg-point-to-client-point.js +10 -0
  167. package/dist/components/use-auto-save-config.d.ts +8 -0
  168. package/dist/components/use-auto-save-config.js +74 -0
  169. package/dist/components/use-default-editor-info.d.ts +1 -0
  170. package/dist/components/use-default-editor-info.js +10 -30
  171. package/dist/esm/{chunk-jefhcs5z.js → chunk-fgedsvhb.js} +1 -2
  172. package/dist/esm/{chunk-7pgk8h5m.js → chunk-ptnd65a9.js} +14596 -12725
  173. package/dist/esm/internals.mjs +14595 -12724
  174. package/dist/esm/previewEntry.mjs +12726 -10855
  175. package/dist/esm/renderEntry.mjs +2 -2
  176. package/dist/helpers/are-sequence-node-path-infos-equal.d.ts +2 -0
  177. package/dist/helpers/are-sequence-node-path-infos-equal.js +27 -0
  178. package/dist/helpers/calculate-timeline.js +3 -3
  179. package/dist/helpers/client-id.d.ts +3 -1
  180. package/dist/helpers/client-id.js +28 -4
  181. package/dist/helpers/format-file-location.d.ts +1 -1
  182. package/dist/helpers/format-file-location.js +3 -3
  183. package/dist/helpers/install-required-package.d.ts +3 -3
  184. package/dist/helpers/install-required-package.js +1 -6
  185. package/dist/helpers/migrate-expanded-tracks-for-subscription-key.js +3 -3
  186. package/dist/helpers/open-in-editor.d.ts +1 -0
  187. package/dist/helpers/open-in-editor.js +5 -1
  188. package/dist/helpers/studio-fit-padding.d.ts +1 -1
  189. package/dist/helpers/studio-fit-padding.js +1 -1
  190. package/dist/helpers/studio-runtime-config.js +3 -0
  191. package/dist/helpers/timeline-layout.d.ts +2 -1
  192. package/dist/helpers/timeline-layout.js +5 -2
  193. package/dist/helpers/timeline-node-path-key.d.ts +2 -0
  194. package/dist/helpers/timeline-node-path-key.js +3 -1
  195. package/dist/helpers/use-asset-drag-events.d.ts +2 -1
  196. package/dist/helpers/use-asset-drag-events.js +14 -6
  197. package/dist/helpers/use-menu-structure.js +25 -35
  198. package/dist/helpers/use-runtime-values.d.ts +9 -0
  199. package/dist/helpers/use-runtime-values.js +76 -0
  200. package/dist/icons/apps.d.ts +2 -0
  201. package/dist/icons/apps.js +7 -0
  202. package/dist/icons/browse-elements.d.ts +4 -0
  203. package/dist/icons/browse-elements.js +10 -0
  204. package/dist/state/modals.d.ts +5 -6
  205. package/dist/state/modals.js +5 -3
  206. package/dist/state/timeline-sequence-hover.d.ts +9 -3
  207. package/dist/state/timeline-sequence-hover.js +63 -12
  208. package/package.json +12 -12
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSequenceContextMenuItems = void 0;
4
- const react_1 = require("react");
5
4
  const no_react_1 = require("remotion/no-react");
6
- const editor_1 = require("../../icons/editor");
5
+ const format_file_location_1 = require("../../helpers/format-file-location");
6
+ const get_open_in_menu_items_1 = require("../get-open-in-menu-items");
7
7
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
8
8
  const timeline_asset_link_1 = require("./timeline-asset-link");
9
9
  const normalizeMenuDividers = (items) => {
@@ -24,13 +24,34 @@ const normalizeMenuDividers = (items) => {
24
24
  return normalized;
25
25
  };
26
26
  const interactiveSvgComponentIdentity = 'dev.remotion.remotion.Interactive.Svg';
27
- const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDisabled, disableInteractivityDisabled, duplicateDisabled, fileLocation, includeSourceEditItems, editorInfo, onDeleteSequenceFromSource, onDisableSequenceInteractivity, onDuplicateSequenceFromSource, openInEditor, originalLocation, selectAsset, sequence, sourceActions = [], }) => {
28
- var _a, _b;
29
- var _c;
27
+ const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDisabled, disableInteractivityDisabled, duplicateDisabled, isProgrammaticallyDuplicated, includeSourceEditItems, codingAgentInfo, editorInfo, onConfigureApps, onDeleteSequenceFromSource, onDisableSequenceInteractivity, onDuplicateSequenceFromSource, openInCodingAgent, openInEditor, originalLocation, selectAsset, sequence, sourceActions = [], }) => {
28
+ var _a, _b, _c, _d;
29
+ var _e, _f, _g;
30
30
  const editorName = window.remotion_editorName;
31
- const { documentationLink } = sequence;
32
31
  const isInteractiveSvg = ((_a = sequence.controls) === null || _a === void 0 ? void 0 : _a.componentIdentity) === interactiveSvgComponentIdentity;
33
- const installedEditors = (_c = editorInfo === null || editorInfo === void 0 ? void 0 : editorInfo.installedEditors) !== null && _c !== void 0 ? _c : [];
32
+ const installedEditors = (_e = editorInfo === null || editorInfo === void 0 ? void 0 : editorInfo.installedEditors) !== null && _e !== void 0 ? _e : [];
33
+ const defaultEditorId = (_f = (_b = installedEditors.find((editor) => editor.nameWithType === editorName)) === null || _b === void 0 ? void 0 : _b.id) !== null && _f !== void 0 ? _f : null;
34
+ const defaultCodingAgent = codingAgentInfo === null || codingAgentInfo === void 0 ? void 0 : codingAgentInfo.installedCodingAgents.find((codingAgent) => codingAgent.id === codingAgentInfo.defaultCodingAgent);
35
+ const contextForAgents = (0, format_file_location_1.formatContextForAgents)({
36
+ location: originalLocation,
37
+ name: sequence.displayName || ((_c = sequence.controls) === null || _c === void 0 ? void 0 : _c.componentName) || null,
38
+ root: window.remotion_cwd,
39
+ });
40
+ const openInCodingAgentWithContext = (codingAgentId, codingAgentName) => {
41
+ openInCodingAgent(codingAgentId, codingAgentName, codingAgentId === 'copilot' ? null : contextForAgents);
42
+ };
43
+ const openInMenuItems = onConfigureApps
44
+ ? (0, get_open_in_menu_items_1.getOpenInMenuItems)({
45
+ codingAgentInfo,
46
+ editorDisabled: !canOpenInEditor || !originalLocation,
47
+ editorInfo,
48
+ excludeCodingAgentId: (_g = defaultCodingAgent === null || defaultCodingAgent === void 0 ? void 0 : defaultCodingAgent.id) !== null && _g !== void 0 ? _g : null,
49
+ excludeEditorId: defaultEditorId,
50
+ onConfigureApps,
51
+ onOpenInCodingAgent: openInCodingAgentWithContext,
52
+ onOpenInEditor: openInEditor,
53
+ })
54
+ : [];
34
55
  const items = [
35
56
  editorName
36
57
  ? {
@@ -46,53 +67,53 @@ const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDis
46
67
  value: 'open-in-editor',
47
68
  }
48
69
  : null,
49
- editorName && installedEditors.length > 0
70
+ defaultCodingAgent
50
71
  ? {
51
72
  type: 'item',
52
- id: 'open-in-another-editor',
73
+ id: 'open-in-default-coding-agent',
74
+ keyHint: null,
75
+ label: `Open in ${defaultCodingAgent.nameWithType}`,
76
+ leftItem: null,
77
+ disabled: false,
78
+ onClick: () => openInCodingAgentWithContext(defaultCodingAgent.id, defaultCodingAgent.nameWithType),
79
+ quickSwitcherLabel: null,
80
+ subMenu: null,
81
+ value: 'open-in-default-coding-agent',
82
+ }
83
+ : null,
84
+ onConfigureApps
85
+ ? {
86
+ type: 'item',
87
+ id: 'open-in-another-app',
53
88
  keyHint: null,
54
89
  label: 'Open in...',
55
90
  leftItem: null,
56
- disabled: !canOpenInEditor || !originalLocation,
91
+ disabled: false,
57
92
  onClick: () => undefined,
58
93
  quickSwitcherLabel: null,
59
94
  subMenu: {
60
- items: installedEditors.map((editor) => ({
61
- type: 'item',
62
- id: `open-in-${editor.id}`,
63
- keyHint: null,
64
- label: editor.name,
65
- leftItem: (0, react_1.createElement)(editor_1.EditorIcon, {
66
- editorId: editor.id,
67
- size: 18,
68
- }),
69
- disabled: false,
70
- onClick: () => openInEditor(editor.id),
71
- quickSwitcherLabel: null,
72
- subMenu: null,
73
- value: editor.id,
74
- })),
95
+ items: openInMenuItems,
75
96
  leaveLeftSpace: true,
76
97
  preselectIndex: false,
77
98
  },
78
- value: 'open-in-another-editor',
99
+ value: 'open-in-another-app',
79
100
  }
80
101
  : null,
81
102
  {
82
103
  type: 'item',
83
- id: 'copy-file-location',
104
+ id: 'copy-context-for-agents',
84
105
  keyHint: null,
85
- label: 'Copy file location',
106
+ label: 'Copy context for agents',
86
107
  leftItem: null,
87
- disabled: !fileLocation,
108
+ disabled: !contextForAgents,
88
109
  onClick: () => {
89
- if (!fileLocation) {
110
+ if (!contextForAgents) {
90
111
  return;
91
112
  }
92
113
  navigator.clipboard
93
- .writeText(fileLocation)
114
+ .writeText(contextForAgents)
94
115
  .then(() => {
95
- (0, NotificationCenter_1.showNotification)('Copied file location to clipboard', 1000);
116
+ (0, NotificationCenter_1.showNotification)('Copied context for agents', 1000);
96
117
  })
97
118
  .catch((err) => {
98
119
  (0, NotificationCenter_1.showNotification)(`Could not copy to clipboard: ${err.message}`, 1000);
@@ -100,24 +121,8 @@ const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDis
100
121
  },
101
122
  quickSwitcherLabel: null,
102
123
  subMenu: null,
103
- value: 'copy-file-location',
124
+ value: 'copy-context-for-agents',
104
125
  },
105
- documentationLink
106
- ? {
107
- type: 'item',
108
- id: 'open-component-docs',
109
- keyHint: null,
110
- label: 'Open component docs',
111
- leftItem: null,
112
- disabled: false,
113
- onClick: () => {
114
- window.open(documentationLink, '_blank', 'noopener,noreferrer');
115
- },
116
- quickSwitcherLabel: null,
117
- subMenu: null,
118
- value: 'open-component-docs',
119
- }
120
- : null,
121
126
  assetLinkInfo
122
127
  ? {
123
128
  type: 'item',
@@ -134,7 +139,7 @@ const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDis
134
139
  value: 'show-asset',
135
140
  }
136
141
  : null,
137
- documentationLink || assetLinkInfo
142
+ assetLinkInfo
138
143
  ? {
139
144
  type: 'divider',
140
145
  id: 'sequence-link-divider',
@@ -147,7 +152,7 @@ const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDis
147
152
  keyHint: null,
148
153
  label: 'Copy SVG',
149
154
  leftItem: null,
150
- disabled: !((_b = sequence.refForOutline) === null || _b === void 0 ? void 0 : _b.current),
155
+ disabled: !((_d = sequence.refForOutline) === null || _d === void 0 ? void 0 : _d.current),
151
156
  onClick: () => {
152
157
  var _a;
153
158
  const svg = (_a = sequence.refForOutline) === null || _a === void 0 ? void 0 : _a.current;
@@ -202,7 +207,7 @@ const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDis
202
207
  keyHint: null,
203
208
  label: 'Duplicate',
204
209
  leftItem: null,
205
- disabled: duplicateDisabled,
210
+ disabled: duplicateDisabled || isProgrammaticallyDuplicated,
206
211
  onClick: onDuplicateSequenceFromSource,
207
212
  quickSwitcherLabel: null,
208
213
  subMenu: null,
@@ -220,7 +225,7 @@ const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDis
220
225
  type: 'item',
221
226
  id: 'delete-sequence',
222
227
  keyHint: null,
223
- label: 'Delete',
228
+ label: isProgrammaticallyDuplicated ? 'Delete all' : 'Delete',
224
229
  leftItem: null,
225
230
  disabled: deleteDisabled,
226
231
  onClick: onDeleteSequenceFromSource,
@@ -71,7 +71,7 @@ const getTimelinePropResetTargets = ({ selections, sequences, overrideIdsToNodeP
71
71
  const sequencePropStatus = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath);
72
72
  const { merged: sequenceValuesDotNotation } = remotion_1.Internals.computeEffectiveSchemaValuesDotNotation({
73
73
  schema: sequence.controls.schema,
74
- currentValue: sequence.controls.currentRuntimeValueDotNotation,
74
+ currentValue: sequence.controls.runtimeValues.getSnapshot(),
75
75
  overrideValues: {},
76
76
  propStatus: sequencePropStatus,
77
77
  frame: null,
@@ -1,4 +1,4 @@
1
1
  import type { TSequence } from 'remotion';
2
2
  export declare const shouldSubscribeToSequenceProps: (sequence: TSequence, previewConnected: boolean) => sequence is TSequence & {
3
- readonly controls: import("remotion").SequenceControls;
3
+ readonly controls: import("remotion").SequenceRegistrationControls;
4
4
  };
@@ -1,4 +1,4 @@
1
- import type { SequenceControls } from 'remotion';
1
+ import type { SequenceRegistrationControls } from 'remotion';
2
2
  type LinkInfo = {
3
3
  kind: 'local';
4
4
  assetPath: string;
@@ -13,7 +13,7 @@ export declare const splitRemoteSourceForMiddleEllipsis: (src: string) => {
13
13
  leading: string;
14
14
  trailing: string;
15
15
  };
16
- export declare const getTimelineAssetSrcFromSchema: (controls: SequenceControls | null) => string | null;
16
+ export declare const getTimelineAssetSrcFromSchema: (controls: SequenceRegistrationControls | null, runtimeValues?: Readonly<Record<string, unknown>> | undefined) => string | null;
17
17
  export declare const getTimelineAssetLinkInfo: (src: string) => LinkInfo;
18
18
  export declare const openTimelineAssetLink: (linkInfo: TimelineAssetLinkInfo, selectAsset: (asset: string) => void) => void;
19
19
  export {};
@@ -21,11 +21,11 @@ const splitRemoteSourceForMiddleEllipsis = (src) => {
21
21
  };
22
22
  };
23
23
  exports.splitRemoteSourceForMiddleEllipsis = splitRemoteSourceForMiddleEllipsis;
24
- const getTimelineAssetSrcFromSchema = (controls) => {
24
+ const getTimelineAssetSrcFromSchema = (controls, runtimeValues = controls === null || controls === void 0 ? void 0 : controls.runtimeValues.getSnapshot()) => {
25
25
  if (!controls || !(0, studio_shared_1.getAssetSchemaKeys)(controls.schema).includes('src')) {
26
26
  return null;
27
27
  }
28
- const { src } = controls.currentRuntimeValueDotNotation;
28
+ const { src } = runtimeValues !== null && runtimeValues !== void 0 ? runtimeValues : {};
29
29
  return typeof src === 'string' ? src : null;
30
30
  };
31
31
  exports.getTimelineAssetSrcFromSchema = getTimelineAssetSrcFromSchema;
@@ -6,11 +6,41 @@ const react_1 = require("react");
6
6
  const remotion_1 = require("remotion");
7
7
  const timeline_layout_1 = require("../../helpers/timeline-layout");
8
8
  const timeline_node_path_key_1 = require("../../helpers/timeline-node-path-key");
9
+ const use_runtime_values_1 = require("../../helpers/use-runtime-values");
9
10
  const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
10
11
  const get_node_keyframes_1 = require("./get-node-keyframes");
11
12
  const imperative_state_1 = require("./imperative-state");
12
13
  const timeline_expanded_filter_1 = require("./timeline-expanded-filter");
13
14
  const TimelineSelection_1 = require("./TimelineSelection");
15
+ const areTimelineTreeLayoutsEqual = (first, second) => {
16
+ if (first.length !== second.length) {
17
+ return false;
18
+ }
19
+ return first.every((firstNode, index) => {
20
+ const secondNode = second[index];
21
+ if (firstNode.kind !== secondNode.kind ||
22
+ (0, timeline_node_path_key_1.timelineNodePathInfoToKey)(firstNode.nodePathInfo) !==
23
+ (0, timeline_node_path_key_1.timelineNodePathInfoToKey)(secondNode.nodePathInfo)) {
24
+ return false;
25
+ }
26
+ if (firstNode.kind === 'group' && secondNode.kind === 'group') {
27
+ return areTimelineTreeLayoutsEqual(firstNode.children, secondNode.children);
28
+ }
29
+ if (firstNode.kind !== 'field' || secondNode.kind !== 'field') {
30
+ return false;
31
+ }
32
+ if (firstNode.field === null || secondNode.field === null) {
33
+ return firstNode.field === secondNode.field;
34
+ }
35
+ return (firstNode.field.kind === secondNode.field.kind &&
36
+ firstNode.field.key === secondNode.field.key &&
37
+ firstNode.field.typeName === secondNode.field.typeName &&
38
+ firstNode.field.rowHeight === secondNode.field.rowHeight &&
39
+ (firstNode.field.kind !== 'effect-field' ||
40
+ (secondNode.field.kind === 'effect-field' &&
41
+ firstNode.field.effectIndex === secondNode.field.effectIndex)));
42
+ });
43
+ };
14
44
  const getNodeCanEditEasing = ({ node, nodePath, propStatuses, }) => {
15
45
  var _a;
16
46
  if (node.kind !== 'field' || node.field === null) {
@@ -37,7 +67,7 @@ const useExpandedTrackKeyframeRows = ({ sequence, nodePathInfo, keyframeDisplayO
37
67
  const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
38
68
  const { getDragOverrides, getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
39
69
  const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
40
- const tree = (0, react_1.useMemo)(() => (0, timeline_layout_1.buildTimelineTree)({
70
+ const selectTree = (0, react_1.useCallback)((runtimeValues) => (0, timeline_layout_1.buildTimelineTree)({
41
71
  sequence,
42
72
  nodePathInfo,
43
73
  getDragOverrides,
@@ -45,13 +75,19 @@ const useExpandedTrackKeyframeRows = ({ sequence, nodePathInfo, keyframeDisplayO
45
75
  propStatuses,
46
76
  includeTextContent: false,
47
77
  includeSourceControls: false,
78
+ runtimeValues,
48
79
  }), [
80
+ sequence,
49
81
  propStatuses,
50
82
  getDragOverrides,
51
83
  getEffectDragOverrides,
52
84
  nodePathInfo,
53
- sequence,
54
85
  ]);
86
+ const tree = (0, use_runtime_values_1.useRuntimeValueSelector)({
87
+ controls: sequence.controls,
88
+ selector: selectTree,
89
+ isEqual: areTimelineTreeLayoutsEqual,
90
+ });
55
91
  const selectedRowKeys = (0, react_1.useMemo)(() => (0, timeline_expanded_filter_1.getSelectedTimelineExpandedRowKeys)(selectedItems), [selectedItems]);
56
92
  const filteredTree = (0, react_1.useMemo)(() => (0, timeline_expanded_filter_1.filterTimelineExpandedTree)({
57
93
  nodes: tree,
@@ -1,8 +1,11 @@
1
1
  import type { EditorPickerId } from '@remotion/studio-shared';
2
2
  import type { TSequence } from 'remotion';
3
- export declare const useOpenSequenceInEditor: (sequence: TSequence) => {
3
+ export declare const useOpenSequenceInApps: (sequence: TSequence) => {
4
4
  canOpenInEditor: boolean;
5
+ canConfigureApps: boolean;
6
+ codingAgentInfo: import("@remotion/studio-shared").GetDefaultCodingAgentInfoResponse | null;
5
7
  editorInfo: import("@remotion/studio-shared").GetDefaultEditorInfoResponse | null;
8
+ openInCodingAgent: (codingAgentId: "claude-code" | "codex" | "copilot" | "cursor", codingAgentName: string, contextForAgents: string | null) => Promise<void>;
6
9
  openInEditor: (editorId: EditorPickerId | null) => Promise<void>;
7
10
  originalLocation: import("remotion").ResolvedStackLocation | null;
8
11
  };
@@ -1,17 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useOpenSequenceInEditor = void 0;
3
+ exports.useOpenSequenceInApps = void 0;
4
4
  const react_1 = require("react");
5
5
  const client_id_1 = require("../../helpers/client-id");
6
6
  const open_in_editor_1 = require("../../helpers/open-in-editor");
7
7
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
8
8
  const use_default_editor_info_1 = require("../use-default-editor-info");
9
9
  const use_resolved_stack_react_to_change_1 = require("./use-resolved-stack-react-to-change");
10
- const useOpenSequenceInEditor = (sequence) => {
10
+ const useOpenSequenceInApps = (sequence) => {
11
11
  const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
12
12
  const previewConnected = previewServerState.type === 'connected';
13
13
  const originalLocation = (0, use_resolved_stack_react_to_change_1.useResolveStackAndReactToChange)(sequence.getStack);
14
- const editorInfo = (0, use_default_editor_info_1.useDefaultEditorInfo)((0, use_default_editor_info_1.canUseEditorPicker)(previewConnected));
14
+ const editorPickerAvailable = (0, use_default_editor_info_1.canUseEditorPicker)(previewConnected);
15
+ const editorInfo = (0, use_default_editor_info_1.useDefaultEditorInfo)(editorPickerAvailable);
16
+ const codingAgentInfo = (0, use_default_editor_info_1.useDefaultCodingAgentInfo)(editorPickerAvailable);
15
17
  const canOpenInEditor = (0, react_1.useMemo)(() => Boolean(window.remotion_editorName && previewConnected && originalLocation), [originalLocation, previewConnected]);
16
18
  const openInEditor = (0, react_1.useCallback)(async (editorId) => {
17
19
  if (!canOpenInEditor || !originalLocation) {
@@ -24,11 +26,25 @@ const useOpenSequenceInEditor = (sequence) => {
24
26
  (0, NotificationCenter_1.showNotification)(err.message, 2000);
25
27
  }
26
28
  }, [canOpenInEditor, originalLocation]);
29
+ const openInCodingAgent = (0, react_1.useCallback)(async (codingAgentId, codingAgentName, contextForAgents) => {
30
+ try {
31
+ const response = await (0, open_in_editor_1.openInCodingAgent)(codingAgentId, contextForAgents);
32
+ if (!response.success) {
33
+ (0, NotificationCenter_1.showNotification)(`Could not open ${codingAgentName}`, 2000);
34
+ }
35
+ }
36
+ catch (err) {
37
+ (0, NotificationCenter_1.showNotification)(err.message, 2000);
38
+ }
39
+ }, []);
27
40
  return {
28
41
  canOpenInEditor,
42
+ canConfigureApps: editorPickerAvailable,
43
+ codingAgentInfo,
29
44
  editorInfo,
45
+ openInCodingAgent,
30
46
  openInEditor,
31
47
  originalLocation,
32
48
  };
33
49
  };
34
- exports.useOpenSequenceInEditor = useOpenSequenceInEditor;
50
+ exports.useOpenSequenceInApps = useOpenSequenceInApps;
@@ -132,6 +132,7 @@ const useTimelineAssetDrop = () => {
132
132
  event,
133
133
  fps: videoConfig.fps,
134
134
  from: frame,
135
+ preferCompositionStart: false,
135
136
  });
136
137
  }
137
138
  finally {
@@ -1,5 +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, }: {
4
+ readonly sequence: TSequence;
5
+ readonly nodePathInfo: SequenceNodePathInfo;
6
+ }) => boolean;
3
7
  export declare const useTimelineExpandedTree: ({ sequence, nodePathInfo, includeTextContent, includeSourceControls, }: {
4
8
  readonly sequence: TSequence;
5
9
  readonly nodePathInfo: SequenceNodePathInfo;
@@ -9,6 +13,7 @@ export declare const useTimelineExpandedTree: ({ sequence, nodePathInfo, include
9
13
  filteredTree: import("../../helpers/timeline-layout").TimelineTreeNode[];
10
14
  getIsExpanded: import("../ExpandedTracksProvider").GetIsExpanded;
11
15
  propStatuses: import("remotion").PropStatuses;
16
+ runtimeValues: Readonly<Record<string, unknown>>;
12
17
  toggleTrack: (nodePathInfo: SequenceNodePathInfo) => void;
13
18
  tree: import("../../helpers/timeline-layout").TimelineTreeNode[];
14
19
  };
@@ -1,19 +1,65 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useTimelineExpandedTree = void 0;
3
+ exports.useTimelineExpandedTree = exports.useTimelineSequenceHasExpandableContent = void 0;
4
4
  const react_1 = require("react");
5
5
  const remotion_1 = require("remotion");
6
6
  const timeline_layout_1 = require("../../helpers/timeline-layout");
7
+ const use_runtime_values_1 = require("../../helpers/use-runtime-values");
7
8
  const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
8
9
  const get_node_keyframes_1 = require("./get-node-keyframes");
9
10
  const timeline_expanded_filter_1 = require("./timeline-expanded-filter");
10
11
  const TimelineSelection_1 = require("./TimelineSelection");
12
+ const useTimelineSequenceHasExpandableContent = ({ sequence, nodePathInfo, }) => {
13
+ const { propStatuses: visualModePropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
14
+ const { getDragOverrides, getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
15
+ const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
16
+ const selectedRowKeys = (0, react_1.useMemo)(() => (0, timeline_expanded_filter_1.getSelectedTimelineExpandedRowKeys)(selectedItems), [selectedItems]);
17
+ const selectHasExpandableContent = (0, react_1.useCallback)((runtimeValues) => {
18
+ const tree = (0, timeline_layout_1.buildTimelineTree)({
19
+ sequence,
20
+ nodePathInfo,
21
+ getDragOverrides,
22
+ getEffectDragOverrides,
23
+ propStatuses: visualModePropStatuses,
24
+ includeTextContent: false,
25
+ includeSourceControls: false,
26
+ runtimeValues,
27
+ });
28
+ return ((0, timeline_expanded_filter_1.filterTimelineExpandedTree)({
29
+ nodes: tree,
30
+ shouldShowNode: (node) => (0, timeline_expanded_filter_1.isTimelineExpandedNodeSelected)({
31
+ nodePathInfo: node.nodePathInfo,
32
+ selectedRowKeys,
33
+ }) ||
34
+ (0, get_node_keyframes_1.getNodeHasKeyframes)({
35
+ node,
36
+ nodePath: nodePathInfo.sequenceSubscriptionKey,
37
+ propStatuses: visualModePropStatuses,
38
+ getDragOverrides,
39
+ getEffectDragOverrides,
40
+ }),
41
+ }).length > 0);
42
+ }, [
43
+ getDragOverrides,
44
+ getEffectDragOverrides,
45
+ nodePathInfo,
46
+ selectedRowKeys,
47
+ sequence,
48
+ visualModePropStatuses,
49
+ ]);
50
+ return (0, use_runtime_values_1.useRuntimeValueSelector)({
51
+ controls: sequence.controls,
52
+ selector: selectHasExpandableContent,
53
+ });
54
+ };
55
+ exports.useTimelineSequenceHasExpandableContent = useTimelineSequenceHasExpandableContent;
11
56
  const useTimelineExpandedTree = ({ sequence, nodePathInfo, includeTextContent, includeSourceControls, }) => {
12
57
  const { getIsExpanded } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksGetterContext);
13
58
  const { toggleTrack } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksSetterContext);
14
59
  const { propStatuses: visualModePropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
15
60
  const { getDragOverrides, getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
16
61
  const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
62
+ const runtimeValues = (0, use_runtime_values_1.useRuntimeValues)(sequence.controls);
17
63
  const tree = (0, react_1.useMemo)(() => (0, timeline_layout_1.buildTimelineTree)({
18
64
  sequence,
19
65
  nodePathInfo,
@@ -22,6 +68,7 @@ const useTimelineExpandedTree = ({ sequence, nodePathInfo, includeTextContent, i
22
68
  propStatuses: visualModePropStatuses,
23
69
  includeTextContent,
24
70
  includeSourceControls,
71
+ runtimeValues,
25
72
  }), [
26
73
  sequence,
27
74
  nodePathInfo,
@@ -30,6 +77,7 @@ const useTimelineExpandedTree = ({ sequence, nodePathInfo, includeTextContent, i
30
77
  visualModePropStatuses,
31
78
  includeTextContent,
32
79
  includeSourceControls,
80
+ runtimeValues,
33
81
  ]);
34
82
  const selectedRowKeys = (0, react_1.useMemo)(() => (0, timeline_expanded_filter_1.getSelectedTimelineExpandedRowKeys)(selectedItems), [selectedItems]);
35
83
  const filteredTree = (0, react_1.useMemo)(() => (0, timeline_expanded_filter_1.filterTimelineExpandedTree)({
@@ -57,6 +105,7 @@ const useTimelineExpandedTree = ({ sequence, nodePathInfo, includeTextContent, i
57
105
  filteredTree,
58
106
  getIsExpanded,
59
107
  propStatuses: visualModePropStatuses,
108
+ runtimeValues,
60
109
  toggleTrack,
61
110
  tree,
62
111
  };
@@ -5,6 +5,7 @@ const react_1 = require("react");
5
5
  const remotion_1 = require("remotion");
6
6
  const client_id_1 = require("../../helpers/client-id");
7
7
  const timeline_layout_1 = require("../../helpers/timeline-layout");
8
+ const use_runtime_values_1 = require("../../helpers/use-runtime-values");
8
9
  const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
9
10
  const get_node_keyframes_1 = require("./get-node-keyframes");
10
11
  const MaxTimelineTracks_1 = require("./MaxTimelineTracks");
@@ -19,6 +20,20 @@ const useTimelineHeight = ({ shown, hasBeenCut, isStill, }) => {
19
20
  const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
20
21
  const previewServerConnected = previewServerState.type === 'connected';
21
22
  const selectedRowKeys = (0, react_1.useMemo)(() => (0, timeline_expanded_filter_1.getSelectedTimelineExpandedRowKeys)(selectedItems), [selectedItems]);
23
+ const expandedControls = (0, react_1.useMemo)(() => shown.flatMap((track) => {
24
+ if (!previewServerConnected ||
25
+ track.nodePathInfo === null ||
26
+ !getIsExpanded(track.nodePathInfo) ||
27
+ track.sequence.controls === null) {
28
+ return [];
29
+ }
30
+ return [track.sequence.controls];
31
+ }), [getIsExpanded, previewServerConnected, shown]);
32
+ const runtimeValueSnapshots = (0, use_runtime_values_1.useRuntimeValueSnapshots)(expandedControls);
33
+ const runtimeValuesByStore = (0, react_1.useMemo)(() => new Map(expandedControls.map((controls, index) => [
34
+ controls.runtimeValues,
35
+ runtimeValueSnapshots[index],
36
+ ])), [expandedControls, runtimeValueSnapshots]);
22
37
  return (0, react_1.useMemo)(() => {
23
38
  const tracksHeight = shown.reduce((acc, track) => {
24
39
  const isExpanded = previewServerConnected &&
@@ -27,6 +42,7 @@ const useTimelineHeight = ({ shown, hasBeenCut, isStill, }) => {
27
42
  const layerHeight = (0, timeline_layout_1.getTimelineLayerHeight)(track.sequence.type) +
28
43
  timeline_layout_1.TIMELINE_ITEM_BORDER_BOTTOM;
29
44
  const expandedHeight = (() => {
45
+ var _a;
30
46
  if (!isExpanded || track.nodePathInfo === null) {
31
47
  return 0;
32
48
  }
@@ -39,6 +55,9 @@ const useTimelineHeight = ({ shown, hasBeenCut, isStill, }) => {
39
55
  propStatuses,
40
56
  includeTextContent: false,
41
57
  includeSourceControls: false,
58
+ runtimeValues: track.sequence.controls
59
+ ? ((_a = runtimeValuesByStore.get(track.sequence.controls.runtimeValues)) !== null && _a !== void 0 ? _a : null)
60
+ : null,
42
61
  });
43
62
  const filteredTree = (0, timeline_expanded_filter_1.filterTimelineExpandedTree)({
44
63
  nodes: tree,
@@ -81,6 +100,7 @@ const useTimelineHeight = ({ shown, hasBeenCut, isStill, }) => {
81
100
  getDragOverrides,
82
101
  getEffectDragOverrides,
83
102
  selectedRowKeys,
103
+ runtimeValuesByStore,
84
104
  ]);
85
105
  };
86
106
  exports.useTimelineHeight = useTimelineHeight;
@@ -25,11 +25,15 @@ const style = {
25
25
  exports.inOutHandles = (0, react_1.createRef)();
26
26
  exports.defaultInOutValue = { inFrame: null, outFrame: null };
27
27
  const TimelineInOutPointToggle = () => {
28
+ var _a;
28
29
  const { inFrame, outFrame } = (0, in_out_1.useTimelineInOutFramePosition)();
29
30
  const { setInAndOutFrames } = (0, in_out_1.useTimelineSetInOutFramePosition)();
30
31
  const videoConfig = remotion_1.Internals.useUnsafeVideoConfig();
31
32
  const keybindings = (0, use_keybinding_1.useKeybinding)();
32
- const { getCurrentFrame, isFirstFrame, isLastFrame } = player_1.PlayerInternals.usePlayer();
33
+ const { getCurrentFrame } = player_1.PlayerInternals.usePlayerMethods();
34
+ const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
35
+ const isFirstFrame = timelinePosition === 0;
36
+ const isLastFrame = timelinePosition === ((_a = videoConfig === null || videoConfig === void 0 ? void 0 : videoConfig.durationInFrames) !== null && _a !== void 0 ? _a : 1) - 1;
33
37
  const onInOutClear = (0, react_1.useCallback)((composition) => {
34
38
  setInAndOutFrames((prev) => {
35
39
  return {
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.TopPanel = exports.useResponsiveSidebarStatus = void 0;
37
37
  const jsx_runtime_1 = require("react/jsx-runtime");
38
+ const player_1 = require("@remotion/player");
38
39
  const react_1 = __importStar(require("react"));
39
40
  const remotion_1 = require("remotion");
40
41
  const mobile_layout_1 = require("../helpers/mobile-layout");
@@ -96,6 +97,21 @@ const TopPanelInner = ({ readOnlyStudio, onMounted, drawRef, bufferStateDelayInM
96
97
  }
97
98
  return 'expanded';
98
99
  }, [sidebarCollapsedStateRight]);
100
+ const previousSidebarState = (0, react_1.useRef)({
101
+ left: actualStateLeft,
102
+ right: actualStateRight,
103
+ });
104
+ (0, react_1.useLayoutEffect)(() => {
105
+ if (previousSidebarState.current.left === actualStateLeft &&
106
+ previousSidebarState.current.right === actualStateRight) {
107
+ return;
108
+ }
109
+ previousSidebarState.current = {
110
+ left: actualStateLeft,
111
+ right: actualStateRight,
112
+ };
113
+ player_1.PlayerInternals.updateAllElementsSizes();
114
+ }, [actualStateLeft, actualStateRight]);
99
115
  (0, react_1.useEffect)(() => {
100
116
  onMounted();
101
117
  }, [onMounted]);
@@ -27,7 +27,7 @@ const updateIconContainer = {
27
27
  };
28
28
  const UpdateCheck = () => {
29
29
  const [info, setInfo] = (0, react_1.useState)(null);
30
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
30
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
31
31
  const { tabIndex } = (0, z_index_1.useZIndex)();
32
32
  const [knownBugs, setKnownBugs] = (0, react_1.useState)(null);
33
33
  const [hovered, setHovered] = (0, react_1.useState)(false);
@@ -33,7 +33,7 @@ exports.addEffectFromDragData = addEffectFromDragData;
33
33
  const addEffectToSequence = async ({ clientId, effect, fileName, nodePath, }) => {
34
34
  try {
35
35
  const requiredPackage = (0, studio_shared_1.getRequiredPackageForEffectImportPath)(effect.importPath);
36
- await (0, install_required_package_1.installRequiredPackages)(requiredPackage ? [requiredPackage] : []);
36
+ await (0, install_required_package_1.installRequiredPackages)(requiredPackage ? [{ name: requiredPackage, version: null }] : []);
37
37
  const result = await (0, call_api_1.callApi)('/api/add-effect', {
38
38
  fileName,
39
39
  sequenceNodePath: nodePath,
@@ -0,0 +1,12 @@
1
+ import type { EditorPickerId, GetDefaultCodingAgentInfoResponse, GetDefaultEditorInfoResponse } from '@remotion/studio-shared';
2
+ import type { ComboboxValue } from './NewComposition/ComboBox';
3
+ export declare const getOpenInMenuItems: ({ codingAgentInfo, editorDisabled, editorInfo, excludeCodingAgentId, excludeEditorId, onConfigureApps, onOpenInCodingAgent, onOpenInEditor, }: {
4
+ readonly codingAgentInfo: GetDefaultCodingAgentInfoResponse | null;
5
+ readonly editorDisabled: boolean;
6
+ readonly editorInfo: GetDefaultEditorInfoResponse | null;
7
+ readonly excludeCodingAgentId: "claude-code" | "codex" | "copilot" | "cursor" | null;
8
+ readonly excludeEditorId: EditorPickerId | null;
9
+ readonly onConfigureApps: () => void;
10
+ readonly onOpenInCodingAgent: (codingAgentId: "claude-code" | "codex" | "copilot" | "cursor", codingAgentName: string) => void;
11
+ readonly onOpenInEditor: (editorId: EditorPickerId) => void;
12
+ }) => ComboboxValue[];