@remotion/studio 4.0.524 → 4.0.525

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 (135) hide show
  1. package/dist/components/ActionTooltip.d.ts +2 -0
  2. package/dist/components/ActionTooltip.js +14 -4
  3. package/dist/components/AppLaunchButton.js +2 -0
  4. package/dist/components/AssetSelectorModal.d.ts +6 -0
  5. package/dist/components/AssetSelectorModal.js +174 -0
  6. package/dist/components/Canvas.js +15 -1
  7. package/dist/components/CheckboardToggle.js +2 -1
  8. package/dist/components/ColorPicker/AlphaSlider.js +1 -1
  9. package/dist/components/ColorPicker/HueSlider.js +1 -1
  10. package/dist/components/ColorPicker/SaturationValueArea.js +1 -1
  11. package/dist/components/CompositionSelector.js +1 -0
  12. package/dist/components/CompositionSelectorItem.js +1 -0
  13. package/dist/components/EditorGuides/Guide.js +1 -1
  14. package/dist/components/ElementInstallConfirmation.js +31 -23
  15. package/dist/components/FullscreenToggle.js +1 -1
  16. package/dist/components/GlobalKeybindings.js +14 -0
  17. package/dist/components/InspectorLocationCopy.js +1 -1
  18. package/dist/components/InspectorOpenInEditor.d.ts +1 -0
  19. package/dist/components/InspectorOpenInEditor.js +18 -15
  20. package/dist/components/InspectorPanel/CompositionInspectorHeader.js +6 -7
  21. package/dist/components/InspectorPanel/CompositionMetadata.js +1 -0
  22. package/dist/components/InspectorPanel/ElementLibraryButton.js +1 -0
  23. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +4 -12
  24. package/dist/components/InspectorSequenceSection.js +18 -9
  25. package/dist/components/LoopToggle.js +2 -1
  26. package/dist/components/Menu/MenuItem.js +1 -2
  27. package/dist/components/MenuBuildIndicator.js +1 -1
  28. package/dist/components/Modals.js +2 -1
  29. package/dist/components/MuteToggle.js +2 -1
  30. package/dist/components/NewComposition/CodemodFooter.js +1 -0
  31. package/dist/components/NewComposition/DeleteComposition.js +42 -6
  32. package/dist/components/NewComposition/DeleteFolder.js +1 -0
  33. package/dist/components/NewComposition/DuplicateComposition.js +5 -0
  34. package/dist/components/NewComposition/InputDragger.js +2 -2
  35. package/dist/components/NewComposition/NewFolder.js +29 -2
  36. package/dist/components/NewComposition/RenameFolder.js +1 -0
  37. package/dist/components/NewComposition/duplicate-composition-api.d.ts +3 -2
  38. package/dist/components/NewComposition/duplicate-composition-api.js +9 -2
  39. package/dist/components/Notifications/NotificationCenter.d.ts +1 -0
  40. package/dist/components/Notifications/NotificationCenter.js +22 -1
  41. package/dist/components/OutlineToggle.js +2 -1
  42. package/dist/components/PlayPause.js +1 -1
  43. package/dist/components/Preview.js +0 -3
  44. package/dist/components/PreviewToolbar.js +3 -6
  45. package/dist/components/PreviewToolbarOverflowButton.js +2 -1
  46. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
  47. package/dist/components/RenderButton.js +40 -4
  48. package/dist/components/RenderModal/WebRenderModalBasic.js +1 -1
  49. package/dist/components/RenderModal/render-modals.js +3 -0
  50. package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +1 -1
  51. package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +1 -1
  52. package/dist/components/RenderQueue/actions.d.ts +2 -1
  53. package/dist/components/RenderQueue/actions.js +2 -1
  54. package/dist/components/RulersAndGuidesToggle.js +2 -1
  55. package/dist/components/SegmentedButton.d.ts +1 -0
  56. package/dist/components/SegmentedButton.js +9 -3
  57. package/dist/components/SelectedOutlineElement.js +16 -6
  58. package/dist/components/SelectedOutlinePolygon.js +4 -2
  59. package/dist/components/SettingsContext.d.ts +8 -0
  60. package/dist/components/SettingsContext.js +57 -2
  61. package/dist/components/SettingsModal.js +4 -1
  62. package/dist/components/SettingsModalFooter.js +1 -1
  63. package/dist/components/SidebarCollapserControls.js +1 -1
  64. package/dist/components/SkillsSettings.js +35 -4
  65. package/dist/components/SnappingToggle.js +2 -1
  66. package/dist/components/Splitter/SplitterHandle.js +1 -2
  67. package/dist/components/Tabs/vertical.d.ts +1 -1
  68. package/dist/components/Tabs/vertical.js +16 -2
  69. package/dist/components/Timeline/EasingEditorModal.js +2 -2
  70. package/dist/components/Timeline/TimelineAssetField.js +148 -9
  71. package/dist/components/Timeline/TimelineDragHandler.js +1 -2
  72. package/dist/components/Timeline/TimelineEffectItem.d.ts +1 -0
  73. package/dist/components/Timeline/TimelineEffectItem.js +2 -2
  74. package/dist/components/Timeline/TimelineEffectPropItem.d.ts +1 -0
  75. package/dist/components/Timeline/TimelineEffectPropItem.js +2 -2
  76. package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
  77. package/dist/components/Timeline/TimelineInOutDragHandler.js +1 -2
  78. package/dist/components/Timeline/TimelineSchemaField.js +8 -1
  79. package/dist/components/Timeline/TimelineSelection.d.ts +3 -1
  80. package/dist/components/Timeline/TimelineSelection.js +32 -5
  81. package/dist/components/Timeline/TimelineSequence.js +6 -6
  82. package/dist/components/Timeline/TimelineSequenceItem.js +12 -10
  83. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +3 -12
  84. package/dist/components/Timeline/TimelineTranslateField.js +25 -12
  85. package/dist/components/Timeline/TimelineZoomControls.js +1 -1
  86. package/dist/components/Timeline/get-sequence-context-menu-items.js +22 -6
  87. package/dist/components/Timeline/timeline-field-display-utils.js +4 -2
  88. package/dist/components/Timeline/timeline-translate-utils.d.ts +17 -0
  89. package/dist/components/Timeline/timeline-translate-utils.js +53 -12
  90. package/dist/components/Timeline/use-open-sequence-in-apps.d.ts +2 -0
  91. package/dist/components/Timeline/use-open-sequence-in-apps.js +17 -0
  92. package/dist/components/Timeline/use-timeline-asset-drop.js +17 -3
  93. package/dist/components/Timeline/use-timeline-keyframe-drag.js +4 -4
  94. package/dist/components/TimelineCombobox.js +1 -0
  95. package/dist/components/UndoRedoButtons.js +11 -0
  96. package/dist/components/composition-menu-items.js +56 -2
  97. package/dist/components/folder-menu-items.js +44 -0
  98. package/dist/components/get-open-in-menu-items.js +1 -1
  99. package/dist/components/import-assets.d.ts +24 -1
  100. package/dist/components/import-assets.js +3 -1
  101. package/dist/components/keyboard-shortcuts.d.ts +4 -4
  102. package/dist/components/keyboard-shortcuts.js +5 -0
  103. package/dist/esm/{LazyModels-hc33szyn.mjs → LazyModels-gfmpcy4h.mjs} +3 -3
  104. package/dist/esm/{LazyModels-sg40rjw6.mjs → LazyModels-m1rf06wh.mjs} +3 -3
  105. package/dist/esm/{TranscriptionModal-3ctnxpt6.mjs → TranscriptionModal-8pvrehg4.mjs} +6 -6
  106. package/dist/esm/{VideoMattingModal-b0r7e60n.mjs → VideoMattingModal-fefbzgka.mjs} +6 -6
  107. package/dist/esm/{index-yfrysr5f.mjs → index-0x13f28h.mjs} +17 -3
  108. package/dist/esm/{index-q2epbw93.mjs → index-1089795y.mjs} +2 -2
  109. package/dist/esm/{index-9qtvmwtx.mjs → index-41kqns5c.mjs} +4 -2
  110. package/dist/esm/{index-c37kme2v.mjs → index-ggqpre9v.mjs} +2202 -1719
  111. package/dist/esm/{index-wbmp5srk.mjs → index-hbezgbbq.mjs} +1 -1
  112. package/dist/esm/{index-2j3d1g81.mjs → index-jrw61pkj.mjs} +1 -1
  113. package/dist/esm/{index-1b9skrrd.mjs → index-mww32xc8.mjs} +3 -3
  114. package/dist/esm/{index-er3mh6em.mjs → index-s848rffx.mjs} +7123 -6588
  115. package/dist/esm/{index-q5xv20xx.mjs → index-tzxb8808.mjs} +1 -1
  116. package/dist/esm/{index-e3zwf3e7.mjs → index-vsxrxfpj.mjs} +1 -1
  117. package/dist/esm/index.mjs +2 -2
  118. package/dist/esm/internals.mjs +7 -7
  119. package/dist/esm/previewEntry.mjs +7 -7
  120. package/dist/helpers/get-git-menu-item.d.ts +4 -0
  121. package/dist/helpers/get-git-menu-item.js +8 -1
  122. package/dist/helpers/get-sequence-double-click-action.d.ts +3 -3
  123. package/dist/helpers/get-sequence-double-click-action.js +2 -2
  124. package/dist/helpers/pointer-session.d.ts +1 -0
  125. package/dist/helpers/pointer-session.js +10 -1
  126. package/dist/helpers/studio-runtime-config.d.ts +1 -1
  127. package/dist/helpers/use-create-composition.js +5 -0
  128. package/dist/helpers/use-keybinding.d.ts +1 -1
  129. package/dist/helpers/use-keyboard-shortcut-label.d.ts +2 -2
  130. package/dist/helpers/use-media-metadata.js +5 -1
  131. package/dist/helpers/use-menu-structure.js +5 -1
  132. package/dist/helpers/use-rename-composition.js +6 -1
  133. package/dist/state/modals.d.ts +13 -1
  134. package/dist/state/z-index.js +1 -3
  135. package/package.json +19 -19
@@ -29,6 +29,7 @@ const useTimelineAssetDrop = () => {
29
29
  const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
30
30
  const [isAddingAsset, setIsAddingAsset] = (0, react_1.useState)(false);
31
31
  const [assetDropFrame, setAssetDropFrame] = (0, react_1.useState)(null);
32
+ const unsupportedDropNotifiedRef = (0, react_1.useRef)(false);
32
33
  const currentCompositionId = (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'composition' ? canvasContent.compositionId : null;
33
34
  const currentComposition = (0, react_1.useMemo)(() => {
34
35
  var _a;
@@ -71,9 +72,18 @@ const useTimelineAssetDrop = () => {
71
72
  dataTransfer === null ||
72
73
  !(0, drop_handler_data_1.isSupportedDropEvent)(event) ||
73
74
  !isEventTargetInsideElement(event, timeline)) {
75
+ unsupportedDropNotifiedRef.current = false;
74
76
  setAssetDropFrame(null);
75
77
  return;
76
78
  }
79
+ const mayBeCanvasCapture = (0, drop_handler_data_1.isFileDragEvent)(event) && !window.remotion_isReadOnlyStudio;
80
+ const shouldNotifyAboutUnsupportedDrop = (compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === false &&
81
+ !mayBeCanvasCapture;
82
+ if (shouldNotifyAboutUnsupportedDrop &&
83
+ !unsupportedDropNotifiedRef.current) {
84
+ (0, NotificationCenter_1.showCannotAddSequenceDropNotification)();
85
+ }
86
+ unsupportedDropNotifiedRef.current = shouldNotifyAboutUnsupportedDrop;
77
87
  event.preventDefault();
78
88
  event.stopPropagation();
79
89
  dataTransfer.dropEffect = canInsertAsset ? 'copy' : 'none';
@@ -82,8 +92,10 @@ const useTimelineAssetDrop = () => {
82
92
  scrollable !== null &&
83
93
  isEventTargetInsideElement(event, scrollable);
84
94
  setAssetDropFrame(shouldShowDropFrame ? getDropFrame(event) : null);
85
- }, [canInsertAsset, getDropFrame]);
95
+ }, [canInsertAsset, compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence, getDropFrame]);
86
96
  const onAssetDrop = (0, react_1.useCallback)(async (event) => {
97
+ const unsupportedDropWasNotified = unsupportedDropNotifiedRef.current;
98
+ unsupportedDropNotifiedRef.current = false;
87
99
  setAssetDropFrame(null);
88
100
  const timeline = timeline_refs_1.timelineVerticalScroll.current;
89
101
  const { dataTransfer } = event;
@@ -122,8 +134,9 @@ const useTimelineAssetDrop = () => {
122
134
  currentCompositionId === null ||
123
135
  compositionFile === null ||
124
136
  videoConfig === null) {
125
- if ((compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === false) {
126
- (0, NotificationCenter_1.showNotification)('Cannot insert items into this composition component', 3000);
137
+ if ((compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === false &&
138
+ !unsupportedDropWasNotified) {
139
+ (0, NotificationCenter_1.showCannotAddSequenceDropNotification)();
127
140
  }
128
141
  return;
129
142
  }
@@ -166,6 +179,7 @@ const useTimelineAssetDrop = () => {
166
179
  videoConfig,
167
180
  ]);
168
181
  const clearAssetDropFrame = (0, react_1.useCallback)(() => {
182
+ unsupportedDropNotifiedRef.current = false;
169
183
  setAssetDropFrame(null);
170
184
  }, []);
171
185
  (0, react_1.useEffect)(() => {
@@ -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
  })
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCompositionContextMenuItems = exports.getCompositionMenuItems = void 0;
4
4
  const no_react_1 = require("remotion/no-react");
5
5
  const format_file_location_1 = require("../helpers/format-file-location");
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 open_in_new_window_1 = require("./open-in-new-window");
@@ -22,6 +23,13 @@ const getCompositionMenuItems = ({ composition, connectionStatus, resolvedLocati
22
23
  connectionStatus !== 'connected' ||
23
24
  !resolvedLocation;
24
25
  const openComponentInEditorDisabled = showInEditorDisabled || !(resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source);
26
+ const gitSourceName = window.remotion_gitSource
27
+ ? (0, get_git_menu_item_1.getGitSourceName)(window.remotion_gitSource)
28
+ : null;
29
+ const openCompositionInGitSourceDisabled = !composition || !resolvedLocation;
30
+ const openComponentInGitSourceDisabled = openCompositionInGitSourceDisabled ||
31
+ !(resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source) ||
32
+ (!readOnlyStudio && connectionStatus !== 'connected');
25
33
  const copyFileLocationDisabled = !composition || !fileLocation;
26
34
  return [
27
35
  editorName
@@ -78,7 +86,53 @@ const getCompositionMenuItems = ({ composition, connectionStatus, resolvedLocati
78
86
  disabled: openComponentInEditorDisabled,
79
87
  }
80
88
  : null,
81
- editorName && includeCompositionManagementItems
89
+ gitSourceName
90
+ ? {
91
+ id: 'open-composition-in-git-source',
92
+ keyHint: null,
93
+ label: `Open composition in ${gitSourceName}`,
94
+ leftItem: null,
95
+ onClick: () => {
96
+ closeMenu();
97
+ (0, get_git_menu_item_1.openGitSource)({ folder: false, location: resolvedLocation });
98
+ },
99
+ quickSwitcherLabel: `Open composition in ${gitSourceName}`,
100
+ subMenu: null,
101
+ type: 'item',
102
+ value: 'open-composition-in-git-source',
103
+ disabled: openCompositionInGitSourceDisabled,
104
+ }
105
+ : null,
106
+ gitSourceName
107
+ ? {
108
+ id: 'open-component-in-git-source',
109
+ keyHint: null,
110
+ label: `Open component in ${gitSourceName}`,
111
+ leftItem: null,
112
+ onClick: async () => {
113
+ closeMenu();
114
+ if (!composition || !(resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source)) {
115
+ return;
116
+ }
117
+ try {
118
+ const info = await (0, open_in_editor_1.loadCompositionComponentInfo)({
119
+ compositionFile: resolvedLocation.source,
120
+ compositionId: composition.id,
121
+ });
122
+ (0, get_git_menu_item_1.openGitSource)({ folder: false, location: info.location });
123
+ }
124
+ catch (err) {
125
+ (0, NotificationCenter_1.showNotification)(err.message, 2000);
126
+ }
127
+ },
128
+ quickSwitcherLabel: `Open composition component in ${gitSourceName}`,
129
+ subMenu: null,
130
+ type: 'item',
131
+ value: 'open-component-in-git-source',
132
+ disabled: openComponentInGitSourceDisabled,
133
+ }
134
+ : null,
135
+ (editorName || gitSourceName) && includeCompositionManagementItems
82
136
  ? {
83
137
  type: 'divider',
84
138
  id: 'show-in-editor-divider',
@@ -154,7 +208,7 @@ const getCompositionMenuItems = ({ composition, connectionStatus, resolvedLocati
154
208
  disabled: !composition || readOnlyStudio,
155
209
  }
156
210
  : null,
157
- editorName || includeCompositionManagementItems
211
+ editorName || gitSourceName || includeCompositionManagementItems
158
212
  ? {
159
213
  type: 'divider',
160
214
  id: 'copy-actions-divider',
@@ -15,6 +15,11 @@ const getFolderMenuItems = ({ closeMenu, connectionStatus, folder, readOnlyStudi
15
15
  location: resolvedLocation,
16
16
  root: window.remotion_cwd,
17
17
  });
18
+ const contextForAgents = (0, format_file_location_1.formatContextForAgents)({
19
+ location: resolvedLocation,
20
+ name: folderId,
21
+ root: window.remotion_cwd,
22
+ });
18
23
  const showInEditorDisabled = !editorId || connectionStatus !== 'connected' || !resolvedLocation;
19
24
  const copyFileLocationDisabled = !fileLocation;
20
25
  const codemodDisabled = readOnlyStudio || !folder.stack;
@@ -44,6 +49,26 @@ const getFolderMenuItems = ({ closeMenu, connectionStatus, folder, readOnlyStudi
44
49
  disabled: showInEditorDisabled,
45
50
  }
46
51
  : null,
52
+ {
53
+ id: 'copy-context-for-agents',
54
+ keyHint: null,
55
+ label: `Copy context for agents`,
56
+ leftItem: null,
57
+ onClick: () => {
58
+ closeMenu();
59
+ if (!contextForAgents) {
60
+ return;
61
+ }
62
+ navigator.clipboard.writeText(contextForAgents).catch((err) => {
63
+ (0, NotificationCenter_1.showNotification)(`Could not copy to clipboard: ${err.message}`, 1000);
64
+ });
65
+ },
66
+ quickSwitcherLabel: null,
67
+ subMenu: null,
68
+ type: 'item',
69
+ value: 'copy-context-for-agents',
70
+ disabled: !contextForAgents,
71
+ },
47
72
  {
48
73
  id: 'copy-folder-file-location',
49
74
  keyHint: null,
@@ -96,6 +121,25 @@ const getFolderMenuItems = ({ closeMenu, connectionStatus, folder, readOnlyStudi
96
121
  value: 'new-composition-in-folder',
97
122
  disabled: codemodDisabled,
98
123
  },
124
+ {
125
+ id: 'new-folder-in-folder',
126
+ keyHint: null,
127
+ label: `New folder...`,
128
+ leftItem: null,
129
+ onClick: () => {
130
+ closeMenu();
131
+ setSelectedModal({
132
+ type: 'new-folder',
133
+ parentName: folderId,
134
+ stack: folder.stack,
135
+ });
136
+ },
137
+ quickSwitcherLabel: 'New folder in folder...',
138
+ subMenu: null,
139
+ type: 'item',
140
+ value: 'new-folder-in-folder',
141
+ disabled: codemodDisabled,
142
+ },
99
143
  {
100
144
  id: 'rename-folder',
101
145
  keyHint: null,
@@ -81,7 +81,7 @@ const getOpenInMenuItems = ({ codingAgentInfo, editorDisabled, editorInfo, exclu
81
81
  id: 'open-in-github',
82
82
  keyHint: null,
83
83
  label: jsx_runtime_1.jsx("span", { style: menuLabel, children: "GitHub.com" }),
84
- leftItem: jsx_runtime_1.jsx(github_1.GitHubIcon, { size: 18 }),
84
+ leftItem: jsx_runtime_1.jsx(github_1.GitHubIcon, { size: 16 }),
85
85
  onClick: () => {
86
86
  (0, get_git_menu_item_1.openGitSource)({ folder, location });
87
87
  },
@@ -156,7 +156,7 @@ export declare const insertComposition: ({ composition, compositionFile, composi
156
156
  from: number | null;
157
157
  preferCompositionStart: boolean | null;
158
158
  }) => Promise<void>;
159
- export declare const insertElement: ({ installationName, compositionFile, compositionId, element, expectedFileState, position, from, overwriteExisting, }: {
159
+ export declare const insertElement: ({ installationName, compositionFile, compositionId, element, expectedFileState, position, from, overwriteExisting, undoRedoNavigation, newComposition, }: {
160
160
  installationName: string | null;
161
161
  compositionFile: string;
162
162
  compositionId: string;
@@ -165,4 +165,27 @@ export declare const insertElement: ({ installationName, compositionFile, compos
165
165
  position: InsertableCompositionElementPosition | null;
166
166
  from: number | null;
167
167
  overwriteExisting: boolean;
168
+ undoRedoNavigation: import("@remotion/studio-shared").UndoRedoNavigation | null;
169
+ newComposition: {
170
+ codemod: {
171
+ type: "new-composition";
172
+ newId: string;
173
+ componentName: string;
174
+ componentImportPath: string;
175
+ folderName: string | null;
176
+ parentName: string | null;
177
+ newHeight: number;
178
+ newWidth: number;
179
+ newFps: number;
180
+ newDurationInFrames: number;
181
+ canvasCapture: {
182
+ readonly videoFileName: string;
183
+ readonly videoHeight: number;
184
+ readonly videoWidth: number;
185
+ readonly keyframeFps: number;
186
+ readonly data: import("@remotion/studio-shared").CanvasCaptureData;
187
+ } | null;
188
+ };
189
+ symbolicatedStack: import("@remotion/studio-shared").SymbolicatedStackFrame | null;
190
+ } | null;
168
191
  }) => Promise<boolean>;
@@ -875,7 +875,7 @@ const insertComposition = async ({ composition, compositionFile, compositionId,
875
875
  }
876
876
  };
877
877
  exports.insertComposition = insertComposition;
878
- const insertElement = async ({ installationName, compositionFile, compositionId, element, expectedFileState, position, from, overwriteExisting, }) => {
878
+ const insertElement = async ({ installationName, compositionFile, compositionId, element, expectedFileState, position, from, overwriteExisting, undoRedoNavigation, newComposition, }) => {
879
879
  try {
880
880
  if ((0, browser_studio_operations_1.getBrowserStudioOperations)() === null) {
881
881
  await (0, install_required_package_1.installRequiredPackages)(element.dependencies);
@@ -889,6 +889,8 @@ const insertElement = async ({ installationName, compositionFile, compositionId,
889
889
  from,
890
890
  overwriteExisting,
891
891
  position,
892
+ undoRedoNavigation,
893
+ newComposition,
892
894
  });
893
895
  if (!response.success) {
894
896
  const reason = response.type === 'error'
@@ -12,15 +12,15 @@ export type KeyboardShortcutGroup = {
12
12
  export declare const defaultKeyboardShortcuts: Record<StudioKeyboardShortcutAction, readonly StudioKeyboardShortcut[]>;
13
13
  export declare const keyboardShortcutGroups: readonly KeyboardShortcutGroup[];
14
14
  export declare const askAIKeyboardShortcutGroup: KeyboardShortcutGroup;
15
- export declare const getKeyboardShortcutsForAction: (action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "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", configured?: Partial<Record<"askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "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", StudioKeyboardShortcutValue>> | null) => readonly StudioKeyboardShortcut[];
15
+ export declare const getKeyboardShortcutsForAction: (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", configured?: 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", StudioKeyboardShortcutValue>> | null) => readonly StudioKeyboardShortcut[];
16
16
  export declare const keyboardEventMatchesShortcut: ({ event, shortcut: value, }: {
17
17
  readonly event: KeyboardEvent;
18
18
  readonly shortcut: StudioKeyboardShortcut;
19
19
  }) => boolean;
20
20
  export declare const keyboardShortcutsOverlap: (first: StudioKeyboardShortcut, second: StudioKeyboardShortcut) => boolean;
21
- export declare const keyboardEventMatchesAction: (event: KeyboardEvent, action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "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") => boolean;
21
+ export declare const keyboardEventMatchesAction: (event: KeyboardEvent, 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") => boolean;
22
22
  export declare const formatKeyboardShortcut: (value: StudioKeyboardShortcut) => readonly string[];
23
23
  export declare const formatKeyboardShortcutForAria: (value: StudioKeyboardShortcut) => string;
24
- export declare const getKeyboardShortcutLabel: (action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "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;
25
- export declare const getKeyboardShortcutAriaKeyShortcuts: (action: "askAI" | "clearInOutPoints" | "copyEffectsAndValues" | "cutEffects" | "deleteSelection" | "duplicateSequences" | "enterFullscreen" | "goToFrame" | "jumpToBeginning" | "jumpToEnd" | "nextComposition" | "pauseAndReturnToPlaybackStart" | "pausePlayback" | "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;
24
+ export declare const getKeyboardShortcutLabel: (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;
25
+ export declare const getKeyboardShortcutAriaKeyShortcuts: (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;
26
26
  export declare const shortcutFromKeyboardEvent: (event: KeyboardEvent) => StudioKeyboardShortcut | null;
@@ -50,6 +50,7 @@ exports.defaultKeyboardShortcuts = {
50
50
  cutEffects: [{ key: 'x', commandOrControl: true }],
51
51
  deleteSelection: [{ key: 'Backspace' }, { key: 'Delete' }],
52
52
  askAI: [{ key: 'i', commandOrControl: true }],
53
+ pickColor: [{ key: 'c', shift: true }],
53
54
  };
54
55
  exports.keyboardShortcutGroups = [
55
56
  {
@@ -116,6 +117,10 @@ exports.keyboardShortcutGroups = [
116
117
  shortcut('Reset zoom', 'resetZoom'),
117
118
  ],
118
119
  },
120
+ {
121
+ name: 'Tools',
122
+ shortcuts: [shortcut('Color Picker', 'pickColor')],
123
+ },
119
124
  {
120
125
  name: 'Props Editor',
121
126
  shortcuts: [shortcut('Undo', 'undo'), shortcut('Redo', 'redo')],
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Models
3
- } from "./index-e3zwf3e7.mjs";
4
- import"./index-2j3d1g81.mjs";
5
- import"./index-yfrysr5f.mjs";
3
+ } from "./index-vsxrxfpj.mjs";
4
+ import"./index-jrw61pkj.mjs";
5
+ import"./index-0x13f28h.mjs";
6
6
  import"./index-5zrb1ft4.mjs";
7
7
  import"./index-k426ye99.mjs";
8
8
  import"./index-rcv7qkt5.mjs";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Models
3
- } from "./index-wbmp5srk.mjs";
4
- import"./index-2j3d1g81.mjs";
5
- import"./index-yfrysr5f.mjs";
3
+ } from "./index-hbezgbbq.mjs";
4
+ import"./index-jrw61pkj.mjs";
5
+ import"./index-0x13f28h.mjs";
6
6
  import"./index-5zrb1ft4.mjs";
7
7
  import"./index-k426ye99.mjs";
8
8
  import"./index-rcv7qkt5.mjs";
@@ -6,7 +6,7 @@ import {
6
6
  NumberSetting,
7
7
  getDefaultCaptionOutputName,
8
8
  validateCaptionOutputName
9
- } from "./index-q2epbw93.mjs";
9
+ } from "./index-1089795y.mjs";
10
10
  import {
11
11
  Button,
12
12
  Checkbox,
@@ -32,20 +32,20 @@ import {
32
32
  rightRow,
33
33
  showNotification,
34
34
  useStaticFiles
35
- } from "./index-c37kme2v.mjs";
35
+ } from "./index-ggqpre9v.mjs";
36
36
  import {
37
37
  RenderQueueContext
38
38
  } from "./index-9x6e1dq0.mjs";
39
39
  import {
40
40
  openInFileExplorer
41
- } from "./index-9qtvmwtx.mjs";
41
+ } from "./index-41kqns5c.mjs";
42
42
  import {
43
43
  getBrowserStudioOperations
44
44
  } from "./index-cw0pnpg5.mjs";
45
45
  import {
46
46
  Models
47
- } from "./index-e3zwf3e7.mjs";
48
- import"./index-2j3d1g81.mjs";
47
+ } from "./index-vsxrxfpj.mjs";
48
+ import"./index-jrw61pkj.mjs";
49
49
  import {
50
50
  InlineAction,
51
51
  Spacing,
@@ -61,7 +61,7 @@ import {
61
61
  leftSidebar,
62
62
  optionsPanel,
63
63
  outerModalStyle
64
- } from "./index-yfrysr5f.mjs";
64
+ } from "./index-0x13f28h.mjs";
65
65
  import"./index-5zrb1ft4.mjs";
66
66
  import {
67
67
  BLUE_DISABLED,
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-7tt71e8n.mjs";
4
4
  import {
5
5
  RenderModalOutputName
6
- } from "./index-1b9skrrd.mjs";
6
+ } from "./index-mww32xc8.mjs";
7
7
  import {
8
8
  Button,
9
9
  Checkmark,
@@ -25,16 +25,16 @@ import {
25
25
  rightRow,
26
26
  useStaticFiles,
27
27
  validatePublicOutputName
28
- } from "./index-c37kme2v.mjs";
28
+ } from "./index-ggqpre9v.mjs";
29
29
  import {
30
30
  RenderQueueContext
31
31
  } from "./index-9x6e1dq0.mjs";
32
- import"./index-9qtvmwtx.mjs";
32
+ import"./index-41kqns5c.mjs";
33
33
  import"./index-cw0pnpg5.mjs";
34
34
  import {
35
35
  Models
36
- } from "./index-wbmp5srk.mjs";
37
- import"./index-2j3d1g81.mjs";
36
+ } from "./index-hbezgbbq.mjs";
37
+ import"./index-jrw61pkj.mjs";
38
38
  import {
39
39
  VERTICAL_SCROLLBAR_CLASSNAME,
40
40
  ValidationMessage,
@@ -48,7 +48,7 @@ import {
48
48
  leftSidebar,
49
49
  optionsPanel,
50
50
  outerModalStyle
51
- } from "./index-yfrysr5f.mjs";
51
+ } from "./index-0x13f28h.mjs";
52
52
  import"./index-5zrb1ft4.mjs";
53
53
  import {
54
54
  BLUE_DISABLED
@@ -163,6 +163,12 @@ import {
163
163
  } from "react";
164
164
 
165
165
  // src/helpers/pointer-session.ts
166
+ var isPointerSessionRelease = (reason, event) => {
167
+ if (event === null) {
168
+ return false;
169
+ }
170
+ return reason === "pointerup" || reason === "buttons-released" || reason === "lostpointercapture" && event.buttons === 0;
171
+ };
166
172
  var getButtonMask = (button) => {
167
173
  if (button === 0) {
168
174
  return 1;
@@ -347,7 +353,8 @@ var defaultKeyboardShortcuts = {
347
353
  copyEffectsAndValues: [{ key: "c", commandOrControl: true }],
348
354
  cutEffects: [{ key: "x", commandOrControl: true }],
349
355
  deleteSelection: [{ key: "Backspace" }, { key: "Delete" }],
350
- askAI: [{ key: "i", commandOrControl: true }]
356
+ askAI: [{ key: "i", commandOrControl: true }],
357
+ pickColor: [{ key: "c", shift: true }]
351
358
  };
352
359
  var keyboardShortcutGroups = [
353
360
  {
@@ -414,6 +421,10 @@ var keyboardShortcutGroups = [
414
421
  shortcut("Reset zoom", "resetZoom")
415
422
  ]
416
423
  },
424
+ {
425
+ name: "Tools",
426
+ shortcuts: [shortcut("Color Picker", "pickColor")]
427
+ },
417
428
  {
418
429
  name: "Props Editor",
419
430
  shortcuts: [shortcut("Undo", "undo"), shortcut("Redo", "redo")]
@@ -733,7 +744,7 @@ var HigherZIndex = ({
733
744
  event: downEvent,
734
745
  onEnd: (reason, upEvent) => {
735
746
  endPointerSession = null;
736
- if ((reason === "pointerup" || reason === "buttons-released") && upEvent && !getClickLock()) {
747
+ if (isPointerSessionRelease(reason, upEvent) && !getClickLock()) {
737
748
  const target = document.elementFromPoint(upEvent.clientX, upEvent.clientY) ?? upEvent.target;
738
749
  if (document.contains(target)) {
739
750
  upEvent.stopPropagation();
@@ -1021,9 +1032,12 @@ var horizontalLayout = {
1021
1032
  };
1022
1033
  var leftSidebar = {
1023
1034
  flexShrink: 0,
1035
+ display: "flex",
1036
+ flexDirection: "column",
1024
1037
  padding: 6
1025
1038
  };
1026
1039
  var horizontalTab = {
1040
+ flex: "none",
1027
1041
  width: 150,
1028
1042
  display: "flex",
1029
1043
  flexDirection: "row",
@@ -1151,4 +1165,4 @@ var CheckCircleFilled = (props) => /* @__PURE__ */ jsx11("svg", {
1151
1165
  })
1152
1166
  });
1153
1167
 
1154
- export { startCapturedPointerSession, startDeferredCapturedPointerSession, isMac, defaultKeyboardShortcuts, keyboardShortcutGroups, askAIKeyboardShortcutGroup, getKeyboardShortcutsForAction, keyboardShortcutsOverlap, formatKeyboardShortcut, getKeyboardShortcutLabel, getKeyboardShortcutAriaKeyShortcuts, shortcutFromKeyboardEvent, KeybindingContextProvider, areKeyboardShortcutsDisabled, useKeybinding, HighestZIndexProvider, getClickLock, setClickLock, HigherZIndex, useZIndex, getMaxModalWidth, getMaxModalHeight, ModalContainer, SPACING_UNIT, COMPACT_CONTROL_ROW_HEIGHT, COMPACT_INLINE_ROW_HEIGHT, Spacing, Flex, Row, Column, HOVERABLE_CLASS_NAME, HOVER_GROUP_CLASS_NAME, HOVER_GROUP_REVEAL_CLASS_NAME, FOCUS_VISIBLE_ONLY_CLASS_NAME, NO_HOVER_BACKGROUND_STYLE, hoverableStyle, makeHoverableCSS, InlineAction, MENU_INITIATOR_CLASSNAME, MENU_ITEM_CLASSNAME, HORIZONTAL_SCROLLBAR_CLASSNAME, VERTICAL_SCROLLBAR_CLASSNAME, isMenuItem, Spinner, TrashIcon, WarningTriangle, ValidationMessage, CloudDownloadIcon, outerModalStyle, container2 as container, optionsPanel, horizontalLayout, leftSidebar, horizontalTab, iconContainer, icon, buttonStyle, flexer, CheckCircleFilled };
1168
+ export { isPointerSessionRelease, startCapturedPointerSession, startDeferredCapturedPointerSession, isMac, defaultKeyboardShortcuts, keyboardShortcutGroups, askAIKeyboardShortcutGroup, getKeyboardShortcutsForAction, keyboardShortcutsOverlap, formatKeyboardShortcut, getKeyboardShortcutLabel, getKeyboardShortcutAriaKeyShortcuts, shortcutFromKeyboardEvent, KeybindingContextProvider, areKeyboardShortcutsDisabled, useKeybinding, HighestZIndexProvider, getClickLock, setClickLock, HigherZIndex, useZIndex, SPACING_UNIT, COMPACT_CONTROL_ROW_HEIGHT, COMPACT_INLINE_ROW_HEIGHT, Spacing, Flex, Row, Column, getMaxModalWidth, getMaxModalHeight, ModalContainer, HOVERABLE_CLASS_NAME, HOVER_GROUP_CLASS_NAME, HOVER_GROUP_REVEAL_CLASS_NAME, FOCUS_VISIBLE_ONLY_CLASS_NAME, NO_HOVER_BACKGROUND_STYLE, hoverableStyle, makeHoverableCSS, InlineAction, MENU_INITIATOR_CLASSNAME, MENU_ITEM_CLASSNAME, HORIZONTAL_SCROLLBAR_CLASSNAME, VERTICAL_SCROLLBAR_CLASSNAME, isMenuItem, Spinner, TrashIcon, WarningTriangle, ValidationMessage, CloudDownloadIcon, outerModalStyle, container2 as container, optionsPanel, horizontalLayout, leftSidebar, horizontalTab, iconContainer, icon, buttonStyle, flexer, CheckCircleFilled };
@@ -11,10 +11,10 @@ import {
11
11
  showNotification,
12
12
  useCopyFeedback,
13
13
  validatePublicOutputName
14
- } from "./index-c37kme2v.mjs";
14
+ } from "./index-ggqpre9v.mjs";
15
15
  import {
16
16
  Spacing
17
- } from "./index-yfrysr5f.mjs";
17
+ } from "./index-0x13f28h.mjs";
18
18
  import {
19
19
  BLUE,
20
20
  CURRENT_COLOR_LOWERCASE,
@@ -652,12 +652,14 @@ var applyCodemod = ({
652
652
  codemod,
653
653
  dryRun,
654
654
  symbolicatedStack,
655
- signal
655
+ signal,
656
+ undoRedoNavigation
656
657
  }) => {
657
658
  const body = {
658
659
  codemod,
659
660
  dryRun,
660
- symbolicatedStack
661
+ symbolicatedStack,
662
+ undoRedoNavigation
661
663
  };
662
664
  const browserStudioOperations = getBrowserStudioOperations();
663
665
  if (browserStudioOperations !== null) {