@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.
- package/dist/api/copy-render-output-to-asset.d.ts +4 -0
- package/dist/api/copy-render-output-to-asset.js +11 -0
- package/dist/api/install-package.d.ts +2 -3
- package/dist/api/install-package.js +1 -3
- package/dist/api/visual-control.d.ts +3 -0
- package/dist/api/visual-control.js +3 -0
- package/dist/components/AssetSelector.js +19 -4
- package/dist/components/AssetSelectorItem.js +3 -3
- package/dist/components/Canvas.js +2 -0
- package/dist/components/CodingAgentIcon.d.ts +4 -0
- package/dist/components/CodingAgentIcon.js +17 -0
- package/dist/components/CompositionSelector.js +1 -1
- package/dist/components/CompositionSelectorItem.js +1 -1
- package/dist/components/ConfigureDefaultEditorModal.d.ts +1 -1
- package/dist/components/ConfigureDefaultEditorModal.js +117 -69
- package/dist/components/ConfigureLicenseModal.d.ts +1 -3
- package/dist/components/ConfigureLicenseModal.js +105 -89
- package/dist/components/ConfirmationDialog.js +2 -2
- package/dist/components/ContextMenu.js +10 -8
- package/dist/components/Editor.js +2 -0
- package/dist/components/EditorContexts.js +6 -5
- package/dist/components/EffectPickerModal.js +1 -1
- package/dist/components/ExpandedTracksProvider.js +10 -53
- package/dist/components/GlobalKeybindings.js +3 -2
- package/dist/components/InlineCaptionInspector.d.ts +2 -2
- package/dist/components/InlineDropdown.d.ts +2 -1
- package/dist/components/InlineDropdown.js +10 -4
- package/dist/components/InspectorLocationCopy.js +8 -8
- package/dist/components/InspectorOpenInEditor.d.ts +2 -0
- package/dist/components/InspectorOpenInEditor.js +63 -49
- package/dist/components/InspectorPanel/AlignmentControls.js +5 -2
- package/dist/components/InspectorPanel/CompositionInspector.js +15 -1
- package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +1 -1
- package/dist/components/InspectorPanel/EasingInspector.js +7 -4
- package/dist/components/InspectorPanel/KeyframeInspector.js +5 -1
- package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -0
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +22 -4
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -1
- package/dist/components/InspectorPanel/common.d.ts +1 -0
- package/dist/components/InspectorPanel/common.js +2 -2
- package/dist/components/InspectorPanel/use-composition-actions.js +4 -1
- package/dist/components/InspectorSequenceSection.js +4 -4
- package/dist/components/InstallPackage.js +1 -1
- package/dist/components/Menu/MenuSectionHeader.d.ts +4 -0
- package/dist/components/Menu/MenuSectionHeader.js +20 -0
- package/dist/components/Menu/SubMenu.js +13 -2
- package/dist/components/Menu/menu-tree-context.d.ts +3 -0
- package/dist/components/Menu/menu-tree-context.js +13 -0
- package/dist/components/MenuBuildIndicator.js +1 -0
- package/dist/components/MenuToolbar.js +1 -1
- package/dist/components/ModalFooter.d.ts +1 -0
- package/dist/components/ModalFooter.js +6 -2
- package/dist/components/ModalHeader.js +1 -1
- package/dist/components/Modals.js +18 -7
- package/dist/components/ModalsProvider.js +5 -6
- package/dist/components/NewComposition/CodemodFooter.js +1 -1
- package/dist/components/NewComposition/ComboBox.d.ts +6 -1
- package/dist/components/NewComposition/DismissableModal.js +1 -1
- package/dist/components/NewComposition/MenuContent.js +27 -19
- package/dist/components/NewComposition/RenameStaticFile.js +1 -1
- package/dist/components/NewComposition/menu-typeahead.js +2 -2
- package/dist/components/OverrideInputProps.js +1 -1
- package/dist/components/PlayPause.js +2 -1
- package/dist/components/PlaybackKeyboardShortcutsManager.js +7 -5
- package/dist/components/Preview.js +29 -4
- package/dist/components/PreviewToolbarOverflowButton.js +4 -2
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -1
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
- package/dist/components/RenderButton.d.ts +3 -3
- package/dist/components/RenderButton.js +42 -7
- package/dist/components/RenderModal/RenderStatusModal.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.d.ts +1 -0
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +2 -2
- package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +3 -3
- package/dist/components/RenderModal/SchemaEditor/ZodSwitch.js +1 -1
- package/dist/components/RenderModal/ServerRenderModal.js +5 -1
- package/dist/components/RenderModal/WebRenderModal.js +3 -2
- package/dist/components/RenderQueue/RenderQueueError.js +1 -1
- package/dist/components/RenderQueue/RenderQueueItem.js +8 -2
- package/dist/components/RenderQueue/RenderQueueItemStatus.js +1 -1
- package/dist/components/RenderQueue/RenderQueueProgressMessage.js +1 -1
- package/dist/components/RenderQueue/RenderQueueRepeat.js +1 -1
- package/dist/components/RenderQueue/actions.d.ts +4 -2
- package/dist/components/RenderQueue/actions.js +4 -2
- package/dist/components/RenderQueue/index.js +3 -4
- package/dist/components/RenderQueue/use-render-output-file-drag.d.ts +8 -0
- package/dist/components/RenderQueue/use-render-output-file-drag.js +121 -0
- package/dist/components/SegmentedControl.js +0 -1
- package/dist/components/SelectedOutlineElement.d.ts +14 -17
- package/dist/components/SelectedOutlineElement.js +113 -931
- package/dist/components/SelectedOutlineKeyboardControls.d.ts +7 -0
- package/dist/components/SelectedOutlineKeyboardControls.js +261 -0
- package/dist/components/SelectedOutlineOverlay.d.ts +6 -13
- package/dist/components/SelectedOutlineOverlay.js +360 -832
- package/dist/components/SelectedOutlinePolygon.d.ts +25 -0
- package/dist/components/SelectedOutlinePolygon.js +359 -0
- package/dist/components/SelectedOutlineRenderer.d.ts +18 -0
- package/dist/components/SelectedOutlineRenderer.js +208 -0
- package/dist/components/SelectedOutlineRotationCornerHandle.d.ts +16 -0
- package/dist/components/SelectedOutlineRotationCornerHandle.js +269 -0
- package/dist/components/SelectedOutlineScaleEdgeLine.d.ts +16 -0
- package/dist/components/SelectedOutlineScaleEdgeLine.js +211 -0
- package/dist/components/SelectedOutlineSnapIndicators.d.ts +9 -0
- package/dist/components/SelectedOutlineSnapIndicators.js +29 -0
- package/dist/components/SelectedOutlineTransformOriginHandle.d.ts +9 -0
- package/dist/components/SelectedOutlineTransformOriginHandle.js +286 -0
- package/dist/components/SelectedOutlineUvControls.d.ts +3 -9
- package/dist/components/SelectedOutlineUvControls.js +57 -12
- package/dist/components/SettingsContext.d.ts +15 -0
- package/dist/components/SettingsContext.js +116 -0
- package/dist/components/SettingsModal.d.ts +7 -0
- package/dist/components/SettingsModal.js +56 -0
- package/dist/components/SettingsModalFooter.d.ts +2 -0
- package/dist/components/SettingsModalFooter.js +44 -0
- package/dist/components/ShowOutlinesProvider.js +2 -3
- package/dist/components/SidebarRenderButton.js +1 -1
- package/dist/components/SvgImportDialog.js +2 -2
- package/dist/components/TimeValue.js +1 -1
- package/dist/components/Timeline/EasingEditorModal.js +66 -22
- package/dist/components/Timeline/Timeline.js +23 -5
- package/dist/components/Timeline/TimelineAssetField.js +1 -1
- package/dist/components/Timeline/TimelineDragHandler.js +3 -3
- package/dist/components/Timeline/TimelineDuplicateCount.d.ts +4 -0
- package/dist/components/Timeline/TimelineDuplicateCount.js +28 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +5 -3
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +3 -23
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +4 -2
- package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.d.ts +4 -2
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.js +11 -1
- package/dist/components/Timeline/TimelineFontFamilyField.js +3 -1
- package/dist/components/Timeline/TimelineKeyframeControls.js +1 -0
- package/dist/components/Timeline/TimelineSelection.js +1 -0
- package/dist/components/Timeline/TimelineSequence.js +28 -25
- package/dist/components/Timeline/TimelineSequenceItem.js +74 -58
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +1 -1
- package/dist/components/Timeline/TimelineTrack.js +2 -1
- package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +6 -3
- package/dist/components/Timeline/get-sequence-context-menu-items.js +58 -53
- package/dist/components/Timeline/reset-selected-timeline-props.js +1 -1
- package/dist/components/Timeline/should-subscribe-to-sequence-props.d.ts +1 -1
- package/dist/components/Timeline/timeline-asset-link.d.ts +2 -2
- package/dist/components/Timeline/timeline-asset-link.js +2 -2
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +38 -2
- package/dist/components/Timeline/{use-open-sequence-in-editor.d.ts → use-open-sequence-in-apps.d.ts} +4 -1
- package/dist/components/Timeline/{use-open-sequence-in-editor.js → use-open-sequence-in-apps.js} +20 -4
- package/dist/components/Timeline/use-timeline-asset-drop.js +1 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +5 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.js +50 -1
- package/dist/components/Timeline/use-timeline-height.js +20 -0
- package/dist/components/TimelineInOutToggle.js +5 -1
- package/dist/components/TopPanel.js +16 -0
- package/dist/components/UpdateCheck.js +1 -1
- package/dist/components/effect-drag-and-drop.js +1 -1
- package/dist/components/get-open-in-menu-items.d.ts +12 -0
- package/dist/components/get-open-in-menu-items.js +83 -0
- package/dist/components/handle-drop.d.ts +2 -1
- package/dist/components/handle-drop.js +12 -2
- package/dist/components/import-assets.d.ts +18 -6
- package/dist/components/import-assets.js +76 -32
- package/dist/components/selected-outline-measurement.d.ts +2 -2
- package/dist/components/selected-outline-order.d.ts +12 -0
- package/dist/components/selected-outline-order.js +251 -0
- package/dist/components/selected-outline-types.d.ts +9 -10
- package/dist/components/svg-point-to-client-point.d.ts +2 -0
- package/dist/components/svg-point-to-client-point.js +10 -0
- package/dist/components/use-auto-save-config.d.ts +8 -0
- package/dist/components/use-auto-save-config.js +74 -0
- package/dist/components/use-default-editor-info.d.ts +1 -0
- package/dist/components/use-default-editor-info.js +10 -30
- package/dist/esm/{chunk-jefhcs5z.js → chunk-fgedsvhb.js} +1 -2
- package/dist/esm/{chunk-7pgk8h5m.js → chunk-ptnd65a9.js} +14596 -12725
- package/dist/esm/internals.mjs +14595 -12724
- package/dist/esm/previewEntry.mjs +12726 -10855
- package/dist/esm/renderEntry.mjs +2 -2
- package/dist/helpers/are-sequence-node-path-infos-equal.d.ts +2 -0
- package/dist/helpers/are-sequence-node-path-infos-equal.js +27 -0
- package/dist/helpers/calculate-timeline.js +3 -3
- package/dist/helpers/client-id.d.ts +3 -1
- package/dist/helpers/client-id.js +28 -4
- package/dist/helpers/format-file-location.d.ts +1 -1
- package/dist/helpers/format-file-location.js +3 -3
- package/dist/helpers/install-required-package.d.ts +3 -3
- package/dist/helpers/install-required-package.js +1 -6
- package/dist/helpers/migrate-expanded-tracks-for-subscription-key.js +3 -3
- package/dist/helpers/open-in-editor.d.ts +1 -0
- package/dist/helpers/open-in-editor.js +5 -1
- package/dist/helpers/studio-fit-padding.d.ts +1 -1
- package/dist/helpers/studio-fit-padding.js +1 -1
- package/dist/helpers/studio-runtime-config.js +3 -0
- package/dist/helpers/timeline-layout.d.ts +2 -1
- package/dist/helpers/timeline-layout.js +5 -2
- package/dist/helpers/timeline-node-path-key.d.ts +2 -0
- package/dist/helpers/timeline-node-path-key.js +3 -1
- package/dist/helpers/use-asset-drag-events.d.ts +2 -1
- package/dist/helpers/use-asset-drag-events.js +14 -6
- package/dist/helpers/use-menu-structure.js +25 -35
- package/dist/helpers/use-runtime-values.d.ts +9 -0
- package/dist/helpers/use-runtime-values.js +76 -0
- package/dist/icons/apps.d.ts +2 -0
- package/dist/icons/apps.js +7 -0
- package/dist/icons/browse-elements.d.ts +4 -0
- package/dist/icons/browse-elements.js +10 -0
- package/dist/state/modals.d.ts +5 -6
- package/dist/state/modals.js +5 -3
- package/dist/state/timeline-sequence-hover.d.ts +9 -3
- package/dist/state/timeline-sequence-hover.js +63 -12
- 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
|
|
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,
|
|
28
|
-
var _a, _b;
|
|
29
|
-
var
|
|
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 = (
|
|
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
|
-
|
|
70
|
+
defaultCodingAgent
|
|
50
71
|
? {
|
|
51
72
|
type: 'item',
|
|
52
|
-
id: 'open-in-
|
|
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:
|
|
91
|
+
disabled: false,
|
|
57
92
|
onClick: () => undefined,
|
|
58
93
|
quickSwitcherLabel: null,
|
|
59
94
|
subMenu: {
|
|
60
|
-
items:
|
|
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-
|
|
99
|
+
value: 'open-in-another-app',
|
|
79
100
|
}
|
|
80
101
|
: null,
|
|
81
102
|
{
|
|
82
103
|
type: 'item',
|
|
83
|
-
id: 'copy-
|
|
104
|
+
id: 'copy-context-for-agents',
|
|
84
105
|
keyHint: null,
|
|
85
|
-
label: 'Copy
|
|
106
|
+
label: 'Copy context for agents',
|
|
86
107
|
leftItem: null,
|
|
87
|
-
disabled: !
|
|
108
|
+
disabled: !contextForAgents,
|
|
88
109
|
onClick: () => {
|
|
89
|
-
if (!
|
|
110
|
+
if (!contextForAgents) {
|
|
90
111
|
return;
|
|
91
112
|
}
|
|
92
113
|
navigator.clipboard
|
|
93
|
-
.writeText(
|
|
114
|
+
.writeText(contextForAgents)
|
|
94
115
|
.then(() => {
|
|
95
|
-
(0, NotificationCenter_1.showNotification)('Copied
|
|
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-
|
|
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
|
-
|
|
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: !((
|
|
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.
|
|
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").
|
|
3
|
+
readonly controls: import("remotion").SequenceRegistrationControls;
|
|
4
4
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
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:
|
|
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 } =
|
|
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
|
|
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,
|
package/dist/components/Timeline/{use-open-sequence-in-editor.d.ts → use-open-sequence-in-apps.d.ts}
RENAMED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { EditorPickerId } from '@remotion/studio-shared';
|
|
2
2
|
import type { TSequence } from 'remotion';
|
|
3
|
-
export declare const
|
|
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
|
};
|
package/dist/components/Timeline/{use-open-sequence-in-editor.js → use-open-sequence-in-apps.js}
RENAMED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
|
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
|
|
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.
|
|
50
|
+
exports.useOpenSequenceInApps = useOpenSequenceInApps;
|
|
@@ -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
|
|
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.
|
|
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[];
|